@ds-mo/ui 15.5.1 → 15.7.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 +372 -25
- package/dist/angular/ds-data-preferences.d.ts +1 -1
- package/dist/angular/ds-data-preferences.js +3 -3
- package/dist/angular/ds-menu.d.ts +7 -1
- package/dist/angular/ds-menu.js +5 -2
- package/dist/angular/ds-navigation-tab-group.d.ts +15 -0
- package/dist/angular/ds-navigation-tab-group.js +42 -0
- package/dist/angular/ds-select-toggle.d.ts +15 -0
- package/dist/angular/ds-select-toggle.js +42 -0
- package/dist/angular/ds-table.d.ts +1 -1
- package/dist/angular/ds-table.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +2 -0
- package/dist/angular/proxies.d.ts +2 -0
- package/dist/angular/proxies.js +2 -0
- package/dist/components/THIRD-PARTY-NOTICES +1 -1
- package/dist/components/bundled-dependencies.json +1 -1
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-calendar.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-group.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-conversation-list.js +1 -1
- package/dist/components/ds-data-customize.js +1 -1
- package/dist/components/ds-data-filter.js +1 -1
- package/dist/components/ds-data-group.js +1 -1
- package/dist/components/ds-data-preferences.js +1 -1
- package/dist/components/ds-data-preferences.js.map +1 -1
- package/dist/components/ds-data-saved-views.js +1 -1
- package/dist/components/ds-data-search.js +1 -1
- package/dist/components/ds-data-search.js.map +1 -1
- package/dist/components/ds-data-sort.js +1 -1
- package/dist/components/ds-data-toolbar.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-inline-banner-settings.js +1 -1
- package/dist/components/ds-input-date.js +1 -1
- package/dist/components/ds-input-time.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-map-cluster-marker.js +1 -1
- package/dist/components/ds-map-entity-marker.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-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-navigation-tab-group.d.ts +11 -0
- package/dist/components/ds-navigation-tab-group.js +2 -0
- package/dist/components/ds-navigation-tab-group.js.map +1 -0
- 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-tile.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-select-toggle.d.ts +11 -0
- package/dist/components/ds-select-toggle.js +2 -0
- package/dist/components/ds-select-toggle.js.map +1 -0
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-setting-row-checkbox.js +1 -1
- package/dist/components/ds-setting-row-radio.js +1 -1
- package/dist/components/ds-setting-row-radio.js.map +1 -1
- package/dist/components/ds-setting-row-toggle.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.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-time-picker.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-toast.js.map +1 -1
- package/dist/components/ds-tooltip-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--pJyciTI.js → p--_bPiNCd.js} +2 -2
- package/dist/components/{p-UJMEz8_O.js → p-3SCy1PHa.js} +2 -2
- package/dist/components/{p-7MwoWtTJ.js → p-4sBUSsqs.js} +2 -2
- package/dist/components/p-4sBUSsqs.js.map +1 -0
- package/dist/components/{p-kwS-vkau.js → p-5aZVNYQz.js} +2 -2
- package/dist/components/{p-DKGW3gRa.js → p-AGqUGzNZ.js} +2 -2
- package/dist/components/p-BJf49edB.js +2 -0
- package/dist/components/p-BJf49edB.js.map +1 -0
- package/dist/components/{p-BNarCFJZ.js → p-BKyE025p.js} +2 -2
- package/dist/components/{p-S1Ct3FJV.js → p-BNN9KkXe.js} +2 -2
- package/dist/components/p-BPDo1eQV.js +2 -0
- package/dist/components/p-BPDo1eQV.js.map +1 -0
- package/dist/components/{p-CwdRaJER.js → p-BWJb2rih.js} +2 -2
- package/dist/components/{p-D8OWhnID.js → p-BbvAWFJA.js} +2 -2
- package/dist/components/p-Bdp2V6-c.js +2 -0
- package/dist/components/{p-Da3aFRk2.js.map → p-Bdp2V6-c.js.map} +1 -1
- package/dist/components/p-BjBFJ2dd.js +2 -0
- package/dist/components/{p-C5BBIDVm.js.map → p-BjBFJ2dd.js.map} +1 -1
- package/dist/components/{p-BmIllmq2.js → p-BwNW5nqj.js} +2 -2
- package/dist/components/{p-CzdE3M3g.js → p-C0L-VnSr.js} +2 -2
- package/dist/components/p-C2e7BkNn.js +2 -0
- package/dist/components/p-C2e7BkNn.js.map +1 -0
- package/dist/components/{p-BnuNaXR2.js → p-C4t7HnfZ.js} +2 -2
- package/dist/components/{p-C1ZfBbJ_.js → p-C7_awFtr.js} +2 -2
- package/dist/components/p-CCsxoztj.js +2 -0
- package/dist/components/{p-BuGlC5r8.js.map → p-CCsxoztj.js.map} +1 -1
- package/dist/components/{p-C378wwRj.js → p-CHyxUWqL.js} +2 -2
- package/dist/components/{p-d76Ry5nh.js → p-CKSJwSWd.js} +2 -2
- package/dist/components/p-CLqqb0Jp.js +2 -0
- package/dist/components/{p-CcwxySms.js.map → p-CLqqb0Jp.js.map} +1 -1
- package/dist/components/{p-C9H-3JOA.js → p-CRhoeCC8.js} +2 -2
- package/dist/components/p-CWc6Blcp.js +2 -0
- package/dist/components/{p-B95UP66y.js.map → p-CWc6Blcp.js.map} +1 -1
- package/dist/components/p-CXB_T13u.js +2 -0
- package/dist/components/{p-CNeDJTGX.js.map → p-CXB_T13u.js.map} +1 -1
- package/dist/components/{p-DZLtFn-r.js → p-CgC4SM5b.js} +2 -2
- package/dist/components/p-CqAC2IQO.js +2 -0
- package/dist/components/{p-5-gQbIIz.js.map → p-CqAC2IQO.js.map} +1 -1
- package/dist/components/{p--VQc5GDy.js → p-Cs8Gq-PZ.js} +2 -2
- package/dist/components/p-Ct2KQHF4.js +2 -0
- package/dist/components/{p-Df9S0aWi.js.map → p-Ct2KQHF4.js.map} +1 -1
- package/dist/components/{p-DYsRXun3.js → p-CvIHBa8S.js} +2 -2
- package/dist/components/{p-YC7UM4jH.js → p-D1tmszmN.js} +2 -2
- package/dist/components/{p-BlbfbYg6.js → p-D62yUMhr.js} +2 -2
- package/dist/components/{p-CgQB8Ct5.js → p-D9l0QBgN.js} +2 -2
- package/dist/components/{p-Dr5rkAhe.js → p-DGrSro-o.js} +2 -2
- package/dist/components/{p-BVxK8ce0.js → p-DKvHBXwn.js} +2 -2
- package/dist/components/p-D_xZ5SFL.js +2 -0
- package/dist/components/{p-bQE1NZVe.js.map → p-D_xZ5SFL.js.map} +1 -1
- package/dist/components/p-DdNJPBCS.js +2 -0
- package/dist/components/{p-a-cIN_BX.js.map → p-DdNJPBCS.js.map} +1 -1
- package/dist/components/p-DiPqdcD4.js +2 -0
- package/dist/components/{p-DPwptvZl.js.map → p-DiPqdcD4.js.map} +1 -1
- package/dist/components/p-Dkh_40bl.js +2 -0
- package/dist/components/p-Dkh_40bl.js.map +1 -0
- package/dist/components/p-DlCLfwP4.js +2 -0
- package/dist/components/p-DmgDVoDb.js +2 -0
- package/dist/components/{p-CXlklL-0.js.map → p-DmgDVoDb.js.map} +1 -1
- package/dist/components/{p-DXL5D30P.js → p-Du8LT8JS.js} +2 -2
- package/dist/components/p-DuCfCvPs.js +2 -0
- package/dist/components/p-DuCfCvPs.js.map +1 -0
- package/dist/components/{p-BuDxlhnQ.js → p-Dyjs8_Cl.js} +2 -2
- package/dist/components/{p-BYrBU_U9.js → p-HMDczkQf.js} +2 -2
- package/dist/components/p-LJXiEPw1.js +2 -0
- package/dist/components/{p-D9_iDlkT.js.map → p-LJXiEPw1.js.map} +1 -1
- package/dist/components/{p-CbCN9ew9.js → p-QGtBlTMt.js} +2 -2
- package/dist/components/{p-C35Tki38.js → p-UBQ5O7B-.js} +2 -2
- package/dist/components/{p-DVsGfz7J.js → p-dSNHIJz6.js} +2 -2
- package/dist/components/{p-B9y6azEw.js → p-eKnJNQtL.js} +2 -2
- package/dist/components/{p-sDm8BEMy.js → p-g2OUK8Z0.js} +2 -2
- package/dist/components/{p-DSmDyI2o.js → p-n_OBbh94.js} +2 -2
- package/dist/components/{p-BfVMaZZE.js → p-oBpjD9OA.js} +2 -2
- package/dist/components/p-pJ6gbwSa.js +2 -0
- package/dist/components/p-pJ6gbwSa.js.map +1 -0
- package/dist/components/{p-DfMTDFcE.js → p-v9Nhw5yM.js} +2 -2
- package/dist/docs/components.json +1067 -213
- package/dist/lint/index.js +1 -1
- package/dist/mcp-data/registry/agent-activity.json +1 -1
- package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
- package/dist/mcp-data/registry/agent-response.json +1 -1
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-action.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-page-title.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +1 -1
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +1 -1
- package/dist/mcp-data/registry/button-inverted.json +1 -1
- package/dist/mcp-data/registry/button-unfilled.json +1 -1
- package/dist/mcp-data/registry/calendar.json +1 -1
- package/dist/mcp-data/registry/card-action-center.json +1 -1
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-navigation.json +1 -1
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/card-settings-scope.json +1 -1
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart.json +1 -1
- package/dist/mcp-data/registry/checkbox-group.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +1 -1
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +1 -1
- package/dist/mcp-data/registry/data-customize.json +1 -1
- package/dist/mcp-data/registry/data-filter.json +1 -1
- package/dist/mcp-data/registry/data-group.json +1 -1
- package/dist/mcp-data/registry/data-preferences.json +22 -6
- package/dist/mcp-data/registry/data-saved-views.json +1 -1
- package/dist/mcp-data/registry/data-search.json +1 -1
- package/dist/mcp-data/registry/data-sort.json +1 -1
- package/dist/mcp-data/registry/data-toolbar.json +1 -1
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +1 -1
- package/dist/mcp-data/registry/filter-menu.json +1 -1
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/inline-banner-settings.json +1 -1
- package/dist/mcp-data/registry/input-date.json +1 -1
- package/dist/mcp-data/registry/input-time.json +1 -1
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/map-cluster-marker.json +1 -1
- package/dist/mcp-data/registry/map-entity-marker.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +31 -12
- package/dist/mcp-data/registry/message-actions.json +1 -1
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +1 -1
- package/dist/mcp-data/registry/message-scroller.json +1 -1
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
- package/dist/mcp-data/registry/mobile-header.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/navigation-tab-group.json +279 -0
- package/dist/mcp-data/registry/pagination.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +1 -1
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +1 -1
- package/dist/mcp-data/registry/paper-texture.json +1 -1
- package/dist/mcp-data/registry/radio-tile.json +1 -1
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +378 -25
- package/dist/mcp-data/registry/score.json +1 -1
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select-toggle.json +351 -0
- package/dist/mcp-data/registry/select.json +1 -1
- package/dist/mcp-data/registry/setting-row-checkbox.json +1 -1
- package/dist/mcp-data/registry/setting-row-radio.json +1 -1
- package/dist/mcp-data/registry/setting-row-toggle.json +1 -1
- package/dist/mcp-data/registry/shell-app.json +1 -1
- package/dist/mcp-data/registry/shell-page.json +1 -1
- package/dist/mcp-data/registry/shell-tools.json +1 -1
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +7 -6
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +3 -3
- package/dist/mcp-data/registry/tab-group.json +15 -9
- package/dist/mcp-data/registry/table.json +80 -21
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/textarea.json +1 -1
- package/dist/mcp-data/registry/time-picker.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/components.d.ts +2 -0
- package/dist/react/components.js +2 -0
- package/dist/react/ds-menu.d.ts +2 -1
- package/dist/react/ds-menu.js +1 -0
- package/dist/react/ds-navigation-tab-group.d.ts +12 -0
- package/dist/react/ds-navigation-tab-group.js +12 -0
- package/dist/react/ds-select-toggle.d.ts +12 -0
- package/dist/react/ds-select-toggle.js +12 -0
- package/dist/styles/table.css +41 -0
- package/dist/types/components/DataPreferences/DataPreferences.d.ts +3 -0
- package/dist/types/components/Menu/Menu.d.ts +5 -1
- package/dist/types/components/Menu/menu-types.d.ts +36 -0
- package/dist/types/components/NavigationTabGroup/NavigationTabGroup.d.ts +16 -0
- package/dist/types/components/SelectToggle/SelectToggle.d.ts +46 -0
- package/dist/types/components/Slider/Slider.d.ts +1 -1
- package/dist/types/components/TabGroup/TabGroup.d.ts +2 -2
- package/dist/types/components/Table/Table.d.ts +14 -2
- package/dist/types/components/Table/index.d.ts +1 -1
- package/dist/types/components/Table/table-column-customizer.d.ts +23 -4
- package/dist/types/components/Table/table-layout-controller.d.ts +2 -1
- package/dist/types/components/Table/table-types.d.ts +3 -1
- package/dist/types/components.d.ts +279 -21
- package/dist/vue/components.d.ts +2 -0
- package/dist/vue/components.js +2 -0
- package/dist/vue/ds-data-preferences.js +1 -0
- package/dist/vue/ds-menu.js +2 -0
- package/dist/vue/ds-navigation-tab-group.d.ts +3 -0
- package/dist/vue/ds-navigation-tab-group.js +16 -0
- package/dist/vue/ds-select-toggle.d.ts +3 -0
- package/dist/vue/ds-select-toggle.js +19 -0
- package/dist/vue/ds-table.js +3 -0
- package/package.json +3 -3
- package/dist/components/p-5-gQbIIz.js +0 -2
- package/dist/components/p-7MwoWtTJ.js.map +0 -1
- package/dist/components/p-B95UP66y.js +0 -2
- package/dist/components/p-BLeHHoVb.js +0 -2
- package/dist/components/p-BLeHHoVb.js.map +0 -1
- package/dist/components/p-Bf-BphXP.js +0 -2
- package/dist/components/p-Bf-BphXP.js.map +0 -1
- package/dist/components/p-BuGlC5r8.js +0 -2
- package/dist/components/p-C5BBIDVm.js +0 -2
- package/dist/components/p-CE6MaXBg.js +0 -2
- package/dist/components/p-CE6MaXBg.js.map +0 -1
- package/dist/components/p-CNeDJTGX.js +0 -2
- package/dist/components/p-CXlklL-0.js +0 -2
- package/dist/components/p-CcwxySms.js +0 -2
- package/dist/components/p-D9_iDlkT.js +0 -2
- package/dist/components/p-DPwptvZl.js +0 -2
- package/dist/components/p-Da3aFRk2.js +0 -2
- package/dist/components/p-Df9S0aWi.js +0 -2
- package/dist/components/p-DvGrsLgt.js +0 -2
- package/dist/components/p-DvGrsLgt.js.map +0 -1
- package/dist/components/p-a-cIN_BX.js +0 -2
- package/dist/components/p-aD5cw_m2.js +0 -2
- package/dist/components/p-aD5cw_m2.js.map +0 -1
- package/dist/components/p-bQE1NZVe.js +0 -2
- package/dist/components/p-kDZ0sEII.js +0 -2
- package/dist/components/p-t2Ebn8si.js +0 -2
- package/dist/components/p-t2Ebn8si.js.map +0 -1
- /package/dist/components/{p--pJyciTI.js.map → p--_bPiNCd.js.map} +0 -0
- /package/dist/components/{p-UJMEz8_O.js.map → p-3SCy1PHa.js.map} +0 -0
- /package/dist/components/{p-kwS-vkau.js.map → p-5aZVNYQz.js.map} +0 -0
- /package/dist/components/{p-DKGW3gRa.js.map → p-AGqUGzNZ.js.map} +0 -0
- /package/dist/components/{p-BNarCFJZ.js.map → p-BKyE025p.js.map} +0 -0
- /package/dist/components/{p-S1Ct3FJV.js.map → p-BNN9KkXe.js.map} +0 -0
- /package/dist/components/{p-CwdRaJER.js.map → p-BWJb2rih.js.map} +0 -0
- /package/dist/components/{p-D8OWhnID.js.map → p-BbvAWFJA.js.map} +0 -0
- /package/dist/components/{p-BmIllmq2.js.map → p-BwNW5nqj.js.map} +0 -0
- /package/dist/components/{p-CzdE3M3g.js.map → p-C0L-VnSr.js.map} +0 -0
- /package/dist/components/{p-BnuNaXR2.js.map → p-C4t7HnfZ.js.map} +0 -0
- /package/dist/components/{p-C1ZfBbJ_.js.map → p-C7_awFtr.js.map} +0 -0
- /package/dist/components/{p-C378wwRj.js.map → p-CHyxUWqL.js.map} +0 -0
- /package/dist/components/{p-d76Ry5nh.js.map → p-CKSJwSWd.js.map} +0 -0
- /package/dist/components/{p-C9H-3JOA.js.map → p-CRhoeCC8.js.map} +0 -0
- /package/dist/components/{p-DZLtFn-r.js.map → p-CgC4SM5b.js.map} +0 -0
- /package/dist/components/{p--VQc5GDy.js.map → p-Cs8Gq-PZ.js.map} +0 -0
- /package/dist/components/{p-DYsRXun3.js.map → p-CvIHBa8S.js.map} +0 -0
- /package/dist/components/{p-YC7UM4jH.js.map → p-D1tmszmN.js.map} +0 -0
- /package/dist/components/{p-BlbfbYg6.js.map → p-D62yUMhr.js.map} +0 -0
- /package/dist/components/{p-CgQB8Ct5.js.map → p-D9l0QBgN.js.map} +0 -0
- /package/dist/components/{p-Dr5rkAhe.js.map → p-DGrSro-o.js.map} +0 -0
- /package/dist/components/{p-BVxK8ce0.js.map → p-DKvHBXwn.js.map} +0 -0
- /package/dist/components/{p-kDZ0sEII.js.map → p-DlCLfwP4.js.map} +0 -0
- /package/dist/components/{p-DXL5D30P.js.map → p-Du8LT8JS.js.map} +0 -0
- /package/dist/components/{p-BuDxlhnQ.js.map → p-Dyjs8_Cl.js.map} +0 -0
- /package/dist/components/{p-BYrBU_U9.js.map → p-HMDczkQf.js.map} +0 -0
- /package/dist/components/{p-CbCN9ew9.js.map → p-QGtBlTMt.js.map} +0 -0
- /package/dist/components/{p-C35Tki38.js.map → p-UBQ5O7B-.js.map} +0 -0
- /package/dist/components/{p-DVsGfz7J.js.map → p-dSNHIJz6.js.map} +0 -0
- /package/dist/components/{p-B9y6azEw.js.map → p-eKnJNQtL.js.map} +0 -0
- /package/dist/components/{p-sDm8BEMy.js.map → p-g2OUK8Z0.js.map} +0 -0
- /package/dist/components/{p-DSmDyI2o.js.map → p-n_OBbh94.js.map} +0 -0
- /package/dist/components/{p-BfVMaZZE.js.map → p-oBpjD9OA.js.map} +0 -0
- /package/dist/components/{p-DfMTDFcE.js.map → p-v9Nhw5yM.js.map} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as t,t as e,H as i,h as a,a as s}from"./index.js";import{d as n}from"./p-pPtjNRqC.js";import{d as r}from"./p-0XTyQNRG.js";import{d as c}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{p as t,t as e,H as i,h as a,a as s}from"./index.js";import{d as n}from"./p-pPtjNRqC.js";import{d as r}from"./p-0XTyQNRG.js";import{d as c}from"./p-BbvAWFJA.js";const d=()=>`.ds-visually-hidden.sc-ds-agent-activity-h,.ds-visually-hidden.sc-ds-agent-activity{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sc-ds-agent-activity-h{display:block}.agent-activity.sc-ds-agent-activity{margin:0}summary.sc-ds-agent-activity{align-items:center;color:var(--color-foreground-secondary);cursor:default;display:flex;gap:var(--dimension-space-050);list-style:none;padding:var(--dimension-space-025) 0}summary.sc-ds-agent-activity::-webkit-details-marker{display:none}details[open].sc-ds-agent-activity summary.sc-ds-agent-activity ds-icon.sc-ds-agent-activity{transform:rotate(90deg)}ds-text.agent-activity__summary-label.sc-ds-agent-activity{min-width:0}ol.sc-ds-agent-activity{display:grid;gap:var(--dimension-space-075);list-style:none;margin:0;padding:var(--dimension-space-100) 0 0 var(--dimension-space-200)}.agent-activity__item.sc-ds-agent-activity{align-items:start;display:grid;gap:var(--dimension-space-050);grid-template-columns:auto minmax(0, 1fr)}.agent-activity__marker.sc-ds-agent-activity{align-items:center;color:var(--color-foreground-faint-neutral);display:flex;padding-block-start:var(--dimension-space-025)}.agent-activity__item--active.sc-ds-agent-activity .agent-activity__marker.sc-ds-agent-activity{color:var(--color-foreground-faint-brand)}.agent-activity__item--error.sc-ds-agent-activity .agent-activity__marker.sc-ds-agent-activity{color:var(--color-foreground-bold-negative)}.agent-activity__item.sc-ds-agent-activity span.sc-ds-agent-activity:last-child{display:grid;gap:var(--dimension-space-025)}.agent-activity__pending-dot.sc-ds-agent-activity{width:var(--dimension-size-050);height:var(--dimension-size-050);border-radius:var(--dimension-radius-half);background:currentColor}@media (prefers-reduced-motion: no-preference){summary.sc-ds-agent-activity ds-icon.sc-ds-agent-activity{transition:transform var(--effect-motion-short-2)}}`;const o=t(class t extends i{constructor(t){super();if(t!==false){this.__registerHost()}this.items=[];this.heading="Activity";this.open=false;this.expanded=false;this.handleToggle=t=>{this.expanded=t.currentTarget.open}}componentWillLoad(){this.expanded=this.open}handleOpenChange(t){this.expanded=t}get currentItem(){return this.items.find((t=>t.state==="active"))??this.items.find((t=>t.state==="error"))??[...this.items].reverse().find((t=>t.state==="complete"))??this.items.find((t=>t.state==="pending"))}stateLabel(t){if(t.state==="active")return"In progress";if(t.state==="complete")return"Complete";if(t.state==="error")return"Error";return"Pending"}render(){return a(s,{key:"9d7d42690587ac1349329129c6c447f9854df8aa"},a("details",{key:"d9c86e59844a8ffc404d14158171de5254e61949",class:"agent-activity",open:this.open,onToggle:this.handleToggle},a("summary",{key:"d4c1d8a5703228d38d587930c78d3052f8496396"},a("ds-icon",{key:"3770cadf0697db961f8428b721d05d00201165e3",name:"ChevronRight",size:"xs",color:"inherit"}),a("ds-text",{key:"ed259ea33ec35d1deef718c416d52a773f042a3e",class:"agent-activity__summary-label",variant:"text-body-small",shimmer:!this.expanded&&this.currentItem?.state==="active"},this.expanded?this.heading:this.currentItem?.label??this.heading)),a("ol",{key:"1d7319003a70817b7184638a6637cf61d8a26cc2"},this.items.map((t=>a("li",{class:`agent-activity__item agent-activity__item--${t.state}`},a("span",{class:"agent-activity__marker","aria-hidden":"true"},t.state==="active"?a("ds-loader",{size:"xs",color:"inherit"}):t.state==="pending"?a("span",{class:"agent-activity__pending-dot"}):a("ds-icon",{name:t.state==="error"?"ExclamationTriangle":"Check",size:"xs",color:"inherit"})),a("span",null,a("ds-text",{variant:"text-body-small",shimmer:t.state==="active"},t.label),t.detail?a("ds-text",{variant:"text-caption",color:"secondary"},t.detail):null,a("span",{class:"agent-activity__state ds-visually-hidden"},this.stateLabel(t)))))))))}static get watchers(){return{open:[{handleOpenChange:0}]}}static get style(){return d()}},[2,"ds-agent-activity",{items:[16],heading:[1],open:[4],expanded:[32]},undefined,{open:[{handleOpenChange:0}]}]);function l(){if(typeof customElements==="undefined"){return}const t=["ds-agent-activity","ds-icon","ds-loader","ds-text"];t.forEach((t=>{switch(t){case"ds-agent-activity":if(!customElements.get(e(t))){customElements.define(e(t),o)}break;case"ds-icon":if(!customElements.get(e(t))){n()}break;case"ds-loader":if(!customElements.get(e(t))){r()}break;case"ds-text":if(!customElements.get(e(t))){c()}break}}))}l();export{o as A,l as d};
|
|
2
|
+
//# sourceMappingURL=p-DGrSro-o.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e,H as t,c as o,h as s,a as r,t as n}from"./index.js";import{d as a}from"./p-pPtjNRqC.js";import{d as i}from"./p-
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{p as e,H as t,c as o,h as s,a as r,t as n}from"./index.js";import{d as a}from"./p-pPtjNRqC.js";import{d as i}from"./p-BbvAWFJA.js";import{r as d}from"./p-CbrDF2gA.js";const c=()=>`.sc-ds-agent-source-list:where(.ds-text-decoration,.ds-text-action).sc-ds-agent-source-list{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-agent-source-list{--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-agent-source-list{--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-agent-source-list{--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-agent-source-list{--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-agent-source-list:hover{text-decoration-line:underline}}@media (forced-colors: active){.ds-text-action.sc-ds-agent-source-list{text-decoration-line:underline;text-decoration-color:currentcolor}}.sc-ds-agent-source-list-h{display:block}.agent-sources.sc-ds-agent-source-list{border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}summary.sc-ds-agent-source-list{align-items:center;cursor:default;display:flex;gap:var(--dimension-space-050);list-style:none;padding-block:var(--dimension-space-075)}summary.sc-ds-agent-source-list::-webkit-details-marker{display:none}details[open].sc-ds-agent-source-list summary.sc-ds-agent-source-list ds-icon.sc-ds-agent-source-list{transform:rotate(90deg)}ol.sc-ds-agent-source-list{display:grid;gap:var(--dimension-space-075);margin:0;padding:0 0 var(--dimension-space-075) var(--dimension-space-150)}li.sc-ds-agent-source-list{display:grid;gap:var(--dimension-space-025)}a.sc-ds-agent-source-list{--ds-text-decoration-color:var(--color-foreground-tertiary);align-items:center;color:inherit;display:inline-flex;gap:var(--dimension-space-025);width:fit-content}@media (prefers-reduced-motion: no-preference){summary.sc-ds-agent-source-list ds-icon.sc-ds-agent-source-list{transition:transform var(--effect-motion-short-2)}}`;const l=e(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.dsOpenChange=o(this,"dsOpenChange",7);this.items=[];this.heading="Sources";this.open=false}hostname(e){try{return new URL(e).hostname}catch{return""}}render(){if(!this.items.length)return null;return s(r,null,s("details",{class:"agent-sources",open:this.open,onToggle:e=>this.dsOpenChange.emit({open:e.currentTarget.open})},s("summary",null,s("ds-icon",{name:"ChevronRight",size:"xs",color:"inherit"}),s("ds-text",{variant:"text-body-small",emphasis:true},this.heading," · ",this.items.length)),s("ol",null,this.items.map((e=>{const t=d(e.url);const o=t?this.hostname(t):"";return s("li",null,t?s("a",{class:"ds-text-decoration",href:t,target:"_blank",rel:"noopener noreferrer","aria-label":`${e.title} (${o}, opens in a new tab)`},s("ds-text",{variant:"text-body-small",emphasis:true},e.title),s("ds-icon",{name:"ExternalLink",size:"xs",color:"inherit"})):s("ds-text",{variant:"text-body-small",emphasis:true},e.title),o?s("ds-text",{variant:"text-caption",color:"secondary"},o):null,e.description?s("ds-text",{variant:"text-body-small",color:"secondary"},e.description):null)})))))}static get style(){return c()}},[2,"ds-agent-source-list",{items:[16],heading:[1],open:[4]}]);function u(){if(typeof customElements==="undefined"){return}const e=["ds-agent-source-list","ds-icon","ds-text"];e.forEach((e=>{switch(e){case"ds-agent-source-list":if(!customElements.get(n(e))){customElements.define(n(e),l)}break;case"ds-icon":if(!customElements.get(n(e))){a()}break;case"ds-text":if(!customElements.get(n(e))){i()}break}}))}u();export{l as A,u as d};
|
|
2
|
+
//# sourceMappingURL=p-DKvHBXwn.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as o,c as s,h as d,a,t as n}from"./index.js";import{d as r}from"./p-BWJb2rih.js";import{d as i}from"./p-pJ6gbwSa.js";import{d as l}from"./p-pPtjNRqC.js";import{d as t}from"./p-0XTyQNRG.js";import{d as c}from"./p-BbvAWFJA.js";import{d as h}from"./p-BJf49edB.js";const p=()=>`.sc-ds-panel-tool-header-h,.sc-ds-panel-tool-header:where(.ds-table),.sc-ds-panel-tool-header:where(.tooltip-popup),.sc-ds-panel-tool-header: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)}.ds-control--lg.sc-ds-panel-tool-header,.ds-control--lg.sc-ds-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header,.ds-control--sm.sc-ds-panel-tool-header-h,.ds-control--sm.sc-ds-panel-tool-header,.ds-control--xs.sc-ds-panel-tool-header-h,.ds-control--xs.sc-ds-panel-tool-header{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-panel-tool-header-h,.ds-control--lg.sc-ds-panel-tool-header{--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-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header{--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-panel-tool-header-h,.ds-control--sm.sc-ds-panel-tool-header{--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-panel-tool-header-h,.ds-control--xs.sc-ds-panel-tool-header{--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-control--lg.sc-ds-panel-tool-header,.ds-control--lg.sc-ds-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header,.ds-control--sm.sc-ds-panel-tool-header-h,.ds-control--sm.sc-ds-panel-tool-header,.ds-control--xs.sc-ds-panel-tool-header-h,.ds-control--xs.sc-ds-panel-tool-header{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-panel-tool-header-h,.ds-control--lg.sc-ds-panel-tool-header{--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-panel-tool-header-h,.ds-control--md.sc-ds-panel-tool-header{--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-panel-tool-header-h,.ds-control--sm.sc-ds-panel-tool-header{--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-panel-tool-header-h,.ds-control--xs.sc-ds-panel-tool-header{--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-header.sc-ds-panel-tool-header{display:flex;align-items:center;box-sizing:border-box;min-width:0;min-block-size:var(--dimension-size-600);padding:var(--dimension-space-100);gap:var(--dimension-space-100)}.ds-chrome-header--wrapping.sc-ds-panel-tool-header{flex-wrap:wrap}.ds-chrome-header--bounded.sc-ds-panel-tool-header{border-block-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.ds-chrome-header__leading.sc-ds-panel-tool-header,.ds-chrome-header__trailing.sc-ds-panel-tool-header{display:flex;align-items:center;flex:0 0 auto;min-width:0}.ds-chrome-header__trailing.sc-ds-panel-tool-header{margin-inline-start:auto;gap:var(--dimension-space-100)}.ds-chrome-header__copy.sc-ds-panel-tool-header{display:flex;flex:1 1 0;min-width:0;padding:var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box}.ds-chrome-header__copy--wrapping.sc-ds-panel-tool-header{align-items:baseline;flex-wrap:wrap;column-gap:var(--dimension-space-100);row-gap:var(--dimension-space-050)}.ds-chrome-header__copy--stacked.sc-ds-panel-tool-header{align-items:stretch;flex-direction:column;gap:var(--dimension-space-050)}.ds-chrome-header__heading.sc-ds-panel-tool-header,.ds-chrome-header__description.sc-ds-panel-tool-header{width:auto;min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025));box-sizing:border-box}.ds-chrome-header__heading.sc-ds-panel-tool-header{flex:0 1 auto}.ds-chrome-header__copy--wrapping.sc-ds-panel-tool-header .ds-chrome-header__description.sc-ds-panel-tool-header{flex:1 1 var(--dimension-card-width-xs)}.sc-ds-panel-tool-header-h{display:block;flex:0 0 auto;box-sizing:border-box;--_panel-tool-header-fg-primary:var(--_shell-tools-fg-primary, var(--color-foreground-primary));--_panel-tool-header-divider:var(--_shell-tools-divider, var(--color-border-tertiary))}.panel-tool-header.sc-ds-panel-tool-header{height:var(--dimension-size-600);color:var(--_panel-tool-header-fg-primary);border-block-end-color:var(--_panel-tool-header-divider);-webkit-user-select:none;user-select:none}.panel-tool-header__leading.sc-ds-panel-tool-header:empty,.panel-tool-header__trailing.sc-ds-panel-tool-header:empty{display:none}.panel-tool-header__trailing.sc-ds-panel-tool-header{gap:var(--dimension-space-050);justify-content:flex-end}ds-text.panel-tool-header__heading.sc-ds-panel-tool-header{display:inline-flex;flex:1 1 0;align-items:center;width:auto;min-width:0;height:var(--ds-control-height);padding-inline:calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));box-sizing:border-box;text-align:left;-webkit-user-select:none;user-select:none}`;const m=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.dsBack=s(this,"dsBack",7);this.dsMenuToggle=s(this,"dsMenuToggle",7);this.dsAction=s(this,"dsAction",7);this.heading="";this.showBack=false;this.backIcon="ChevronLeft";this.backAriaLabel="Back";this.showMenu=true;this.menuAriaLabel="More options";this.menuTriggerId="";this.menuExpanded=false;this.actions=[]}async focusMenuTrigger(){const e=this.el.querySelector('ds-button-unfilled.panel-tool-header__menu, ds-button-unfilled[data-header-action-id="menu"]');await(e?.setFocus?.())}render(){const e=this.actions.length>0;const o=e?this.actions:this.showMenu?[{id:"menu",icon:"Ellipses",ariaLabel:this.menuAriaLabel,triggerId:this.menuTriggerId,controls:this.menuControls,expanded:this.menuExpanded,surfaceOpen:this.menuSurfaceOpen,haspopup:"menu"}]:[];return d(a,{key:"e31fd4eb2e452514fa93aade0297d3cfe10a7e94"},d("header",{key:"851bae0a6cec187e4ddfbece28b2053a365dfe77",class:"panel-tool-header ds-chrome-header ds-chrome-header--bounded"},d("div",{key:"519cbbd540d18cf7b973cda54c95f1287be50c9e",class:"panel-tool-header__leading ds-chrome-header__leading"},this.showBack?d("ds-tooltip",{label:this.backAriaLabel,side:"bottom",size:"sm"},d("ds-button-unfilled",{class:"panel-tool-header__back",variant:"icon",icon:this.backIcon,size:"md",background:"chrome","aria-label":this.backAriaLabel,activeFill:false,hasBorder:false,onDsClick:e=>this.dsBack.emit(e.detail)})):null),d("ds-text",{key:"2652002d820d60e4d09662f863faccb6c8950b6d",class:"panel-tool-header__heading ds-chrome-header__heading ds-control--md",as:"h2",variant:"text-body-medium",emphasis:true,color:"inherit",lineTruncation:1},this.heading),d("div",{key:"d5a7fa082cbc146fd0c5fbcb5793f0e4b5254986",class:"panel-tool-header__trailing ds-chrome-header__trailing"},o.map((o=>d("ds-tooltip",{key:o.id,label:o.ariaLabel,side:"bottom",size:"sm"},d("ds-button-unfilled",{id:o.triggerId||undefined,"data-header-action-id":o.id,class:{"panel-tool-header__action":true,"panel-tool-header__menu":o.id==="menu"},variant:"icon",icon:o.icon,size:"md",background:"chrome","aria-label":o.ariaLabel,haspopup:o.haspopup,controls:o.controls,expanded:o.expanded,surfaceOpen:o.surfaceOpen,pressed:o.pressed,isInactive:o.isInactive,activeFill:false,hasBorder:false,onDsClick:s=>{if(!e&&o.id==="menu")this.dsMenuToggle.emit(s.detail);this.dsAction.emit({id:o.id,originalEvent:s.detail,anchor:s.currentTarget})}})))))))}get el(){return this}static get style(){return p()}},[2,"ds-panel-tool-header",{heading:[1],showBack:[4,"show-back"],backIcon:[1,"back-icon"],backAriaLabel:[1,"back-aria-label"],showMenu:[4,"show-menu"],menuAriaLabel:[1,"menu-aria-label"],menuTriggerId:[1,"menu-trigger-id"],menuControls:[1,"menu-controls"],menuExpanded:[4,"menu-expanded"],menuSurfaceOpen:[4,"menu-surface-open"],actions:[16],focusMenuTrigger:[64]}]);function g(){if(typeof customElements==="undefined"){return}const e=["ds-panel-tool-header","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-panel-tool-header":if(!customElements.get(n(e))){customElements.define(n(e),m)}break;case"ds-badge":if(!customElements.get(n(e))){r()}break;case"ds-button-unfilled":if(!customElements.get(n(e))){i()}break;case"ds-icon":if(!customElements.get(n(e))){l()}break;case"ds-loader":if(!customElements.get(n(e))){t()}break;case"ds-text":if(!customElements.get(n(e))){c()}break;case"ds-tooltip":if(!customElements.get(n(e))){h()}break}}))}g();export{m as P,g as d};
|
|
2
|
+
//# sourceMappingURL=p-D_xZ5SFL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["panelToolHeaderCss","PanelToolHeader","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","heading","showBack","backIcon","backAriaLabel","showMenu","menuAriaLabel","menuTriggerId","menuExpanded","actions","focusMenuTrigger","trigger","el","querySelector","setFocus","render","authoredActions","length","id","icon","ariaLabel","triggerId","controls","menuControls","expanded","surfaceOpen","menuSurfaceOpen","haspopup","h","Host","key","class","label","side","size","variant","background","activeFill","hasBorder","onDsClick","event","dsBack","emit","detail","as","emphasis","color","lineTruncation","map","action","undefined","pressed","isInactive","dsMenuToggle","dsAction","originalEvent","anchor","currentTarget"],"sources":["src/wc/components/PanelToolHeader/PanelToolHeader.css?tag=ds-panel-tool-header&encapsulation=scoped","src/wc/components/PanelToolHeader/PanelToolHeader.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/chrome-header.css';\n\n:host {\n display: block;\n flex: 0 0 auto;\n box-sizing: border-box;\n --_panel-tool-header-fg-primary: var(--_shell-tools-fg-primary, var(--color-foreground-primary));\n --_panel-tool-header-divider: var(--_shell-tools-divider, var(--color-border-tertiary));\n}\n\n.panel-tool-header {\n height: var(--dimension-size-600);\n color: var(--_panel-tool-header-fg-primary);\n border-block-end-color: var(--_panel-tool-header-divider);\n -webkit-user-select: none;\n user-select: none;\n}\n\n.panel-tool-header__leading:empty,\n.panel-tool-header__trailing:empty {\n display: none;\n}\n\n.panel-tool-header__trailing {\n gap: var(--dimension-space-050);\n justify-content: flex-end;\n}\n\nds-text.panel-tool-header__heading {\n display: inline-flex;\n flex: 1 1 0;\n align-items: center;\n width: auto;\n min-width: 0;\n height: var(--ds-control-height);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n text-align: left;\n -webkit-user-select: none;\n user-select: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport type {\n PanelToolHeaderActionDetail,\n PanelToolsHeaderAction,\n} from '../PanelTools/panel-tools-types';\n\n@Component({\n tag: 'ds-panel-tool-header',\n styleUrl: 'PanelToolHeader.css',\n scoped: true,\n})\nexport class PanelToolHeader {\n @Element() el!: HTMLElement;\n\n /** Visible heading for the active tool view. */\n @Prop() heading: string = '';\n /** Show the leading Back action. */\n @Prop() showBack: boolean = false;\n /** Canonical icon for the leading navigation or dismiss action. */\n @Prop() backIcon: string = 'ChevronLeft';\n /** Accessible name for the leading navigation or dismiss action. */\n @Prop() backAriaLabel: string = 'Back';\n /** Show the trailing options-menu trigger. */\n @Prop() showMenu: boolean = true;\n /** Accessible name for the options-menu trigger. */\n @Prop() menuAriaLabel: string = 'More options';\n /** Stable id placed on the menu trigger host for ds-menu anchoring. */\n @Prop() menuTriggerId: string = '';\n /** Id of the menu controlled by the trigger. */\n @Prop() menuControls: string | undefined;\n /** Whether the controlled menu is open. */\n @Prop() menuExpanded: boolean = false;\n /** Associated menu surface is visible, including exit motion. */\n @Prop() menuSurfaceOpen: boolean | undefined;\n /** Trailing application-owned icon actions. When present, these replace the legacy menu action. */\n @Prop() actions: PanelToolsHeaderAction[] = [];\n\n @Event() dsBack!: EventEmitter<MouseEvent>;\n @Event() dsMenuToggle!: EventEmitter<MouseEvent>;\n @Event() dsAction!: EventEmitter<PanelToolHeaderActionDetail>;\n\n @Method()\n async focusMenuTrigger() {\n const trigger = this.el.querySelector(\n 'ds-button-unfilled.panel-tool-header__menu, ds-button-unfilled[data-header-action-id=\"menu\"]'\n ) as (HTMLElement & { setFocus?: () => Promise<void> }) | null;\n await trigger?.setFocus?.();\n }\n\n render() {\n const authoredActions = this.actions.length > 0;\n const actions: PanelToolsHeaderAction[] = authoredActions\n ? this.actions\n : this.showMenu\n ? [\n {\n id: 'menu',\n icon: 'Ellipses',\n ariaLabel: this.menuAriaLabel,\n triggerId: this.menuTriggerId,\n controls: this.menuControls,\n expanded: this.menuExpanded,\n surfaceOpen: this.menuSurfaceOpen,\n haspopup: 'menu',\n },\n ]\n : [];\n\n return (\n <Host>\n <header class=\"panel-tool-header ds-chrome-header ds-chrome-header--bounded\">\n <div class=\"panel-tool-header__leading ds-chrome-header__leading\">\n {this.showBack ? (\n <ds-tooltip label={this.backAriaLabel} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class=\"panel-tool-header__back\"\n variant=\"icon\"\n icon={this.backIcon}\n size=\"md\"\n background=\"chrome\"\n aria-label={this.backAriaLabel}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.dsBack.emit(event.detail)}\n />\n </ds-tooltip>\n ) : null}\n </div>\n <ds-text\n class=\"panel-tool-header__heading ds-chrome-header__heading ds-control--md\"\n as=\"h2\"\n variant=\"text-body-medium\"\n emphasis\n color=\"inherit\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n <div class=\"panel-tool-header__trailing ds-chrome-header__trailing\">\n {actions.map(action => (\n <ds-tooltip key={action.id} label={action.ariaLabel} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n id={action.triggerId || undefined}\n data-header-action-id={action.id}\n class={{\n 'panel-tool-header__action': true,\n 'panel-tool-header__menu': action.id === 'menu',\n }}\n variant=\"icon\"\n icon={action.icon}\n size=\"md\"\n background=\"chrome\"\n aria-label={action.ariaLabel}\n haspopup={action.haspopup}\n controls={action.controls}\n expanded={action.expanded}\n surfaceOpen={action.surfaceOpen}\n pressed={action.pressed}\n isInactive={action.isInactive}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n if (!authoredActions && action.id === 'menu')\n this.dsMenuToggle.emit(event.detail);\n this.dsAction.emit({\n id: action.id,\n originalEvent: event.detail,\n anchor: event.currentTarget as HTMLElement,\n });\n }}\n />\n </ds-tooltip>\n ))}\n </div>\n </header>\n </Host>\n );\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["panelToolHeaderCss","PanelToolHeader","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","heading","showBack","backIcon","backAriaLabel","showMenu","menuAriaLabel","menuTriggerId","menuExpanded","actions","focusMenuTrigger","trigger","el","querySelector","setFocus","render","authoredActions","length","id","icon","ariaLabel","triggerId","controls","menuControls","expanded","surfaceOpen","menuSurfaceOpen","haspopup","h","Host","key","class","label","side","size","variant","background","activeFill","hasBorder","onDsClick","event","dsBack","emit","detail","as","emphasis","color","lineTruncation","map","action","undefined","pressed","isInactive","dsMenuToggle","dsAction","originalEvent","anchor","currentTarget"],"sources":["src/wc/components/PanelToolHeader/PanelToolHeader.css?tag=ds-panel-tool-header&encapsulation=scoped","src/wc/components/PanelToolHeader/PanelToolHeader.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/chrome-header.css';\n\n:host {\n display: block;\n flex: 0 0 auto;\n box-sizing: border-box;\n --_panel-tool-header-fg-primary: var(--_shell-tools-fg-primary, var(--color-foreground-primary));\n --_panel-tool-header-divider: var(--_shell-tools-divider, var(--color-border-tertiary));\n}\n\n.panel-tool-header {\n height: var(--dimension-size-600);\n color: var(--_panel-tool-header-fg-primary);\n border-block-end-color: var(--_panel-tool-header-divider);\n -webkit-user-select: none;\n user-select: none;\n}\n\n.panel-tool-header__leading:empty,\n.panel-tool-header__trailing:empty {\n display: none;\n}\n\n.panel-tool-header__trailing {\n gap: var(--dimension-space-050);\n justify-content: flex-end;\n}\n\nds-text.panel-tool-header__heading {\n display: inline-flex;\n flex: 1 1 0;\n align-items: center;\n width: auto;\n min-width: 0;\n height: var(--ds-control-height);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n text-align: left;\n -webkit-user-select: none;\n user-select: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport type {\n PanelToolHeaderActionDetail,\n PanelToolsHeaderAction,\n} from '../PanelTools/panel-tools-types';\n\n@Component({\n tag: 'ds-panel-tool-header',\n styleUrl: 'PanelToolHeader.css',\n scoped: true,\n})\nexport class PanelToolHeader {\n @Element() el!: HTMLElement;\n\n /** Visible heading for the active tool view. */\n @Prop() heading: string = '';\n /** Show the leading Back action. */\n @Prop() showBack: boolean = false;\n /** Canonical icon for the leading navigation or dismiss action. */\n @Prop() backIcon: string = 'ChevronLeft';\n /** Accessible name for the leading navigation or dismiss action. */\n @Prop() backAriaLabel: string = 'Back';\n /** Show the trailing options-menu trigger. */\n @Prop() showMenu: boolean = true;\n /** Accessible name for the options-menu trigger. */\n @Prop() menuAriaLabel: string = 'More options';\n /** Stable id placed on the menu trigger host for ds-menu anchoring. */\n @Prop() menuTriggerId: string = '';\n /** Id of the menu controlled by the trigger. */\n @Prop() menuControls: string | undefined;\n /** Whether the controlled menu is open. */\n @Prop() menuExpanded: boolean = false;\n /** Associated menu surface is visible, including exit motion. */\n @Prop() menuSurfaceOpen: boolean | undefined;\n /** Trailing application-owned icon actions. When present, these replace the legacy menu action. */\n @Prop() actions: PanelToolsHeaderAction[] = [];\n\n @Event() dsBack!: EventEmitter<MouseEvent>;\n @Event() dsMenuToggle!: EventEmitter<MouseEvent>;\n @Event() dsAction!: EventEmitter<PanelToolHeaderActionDetail>;\n\n @Method()\n async focusMenuTrigger() {\n const trigger = this.el.querySelector(\n 'ds-button-unfilled.panel-tool-header__menu, ds-button-unfilled[data-header-action-id=\"menu\"]'\n ) as (HTMLElement & { setFocus?: () => Promise<void> }) | null;\n await trigger?.setFocus?.();\n }\n\n render() {\n const authoredActions = this.actions.length > 0;\n const actions: PanelToolsHeaderAction[] = authoredActions\n ? this.actions\n : this.showMenu\n ? [\n {\n id: 'menu',\n icon: 'Ellipses',\n ariaLabel: this.menuAriaLabel,\n triggerId: this.menuTriggerId,\n controls: this.menuControls,\n expanded: this.menuExpanded,\n surfaceOpen: this.menuSurfaceOpen,\n haspopup: 'menu',\n },\n ]\n : [];\n\n return (\n <Host>\n <header class=\"panel-tool-header ds-chrome-header ds-chrome-header--bounded\">\n <div class=\"panel-tool-header__leading ds-chrome-header__leading\">\n {this.showBack ? (\n <ds-tooltip label={this.backAriaLabel} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class=\"panel-tool-header__back\"\n variant=\"icon\"\n icon={this.backIcon}\n size=\"md\"\n background=\"chrome\"\n aria-label={this.backAriaLabel}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.dsBack.emit(event.detail)}\n />\n </ds-tooltip>\n ) : null}\n </div>\n <ds-text\n class=\"panel-tool-header__heading ds-chrome-header__heading ds-control--md\"\n as=\"h2\"\n variant=\"text-body-medium\"\n emphasis\n color=\"inherit\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n <div class=\"panel-tool-header__trailing ds-chrome-header__trailing\">\n {actions.map(action => (\n <ds-tooltip key={action.id} label={action.ariaLabel} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n id={action.triggerId || undefined}\n data-header-action-id={action.id}\n class={{\n 'panel-tool-header__action': true,\n 'panel-tool-header__menu': action.id === 'menu',\n }}\n variant=\"icon\"\n icon={action.icon}\n size=\"md\"\n background=\"chrome\"\n aria-label={action.ariaLabel}\n haspopup={action.haspopup}\n controls={action.controls}\n expanded={action.expanded}\n surfaceOpen={action.surfaceOpen}\n pressed={action.pressed}\n isInactive={action.isInactive}\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n if (!authoredActions && action.id === 'menu')\n this.dsMenuToggle.emit(event.detail);\n this.dsAction.emit({\n id: action.id,\n originalEvent: event.detail,\n anchor: event.currentTarget as HTMLElement,\n });\n }}\n />\n </ds-tooltip>\n ))}\n </div>\n </header>\n </Host>\n );\n }\n}\n"],"mappings":"qRAAA,MAAMA,EAAqB,IAAM,80M,MCWpBC,EAAeC,EAAA,MAAAD,UAAAE,EAL5B,WAAAC,CAAAC,G,yJASUC,KAAAC,QAAkB,GAElBD,KAAAE,SAAoB,MAEpBF,KAAAG,SAAmB,cAEnBH,KAAAI,cAAwB,OAExBJ,KAAAK,SAAoB,KAEpBL,KAAAM,cAAwB,eAExBN,KAAAO,cAAwB,GAIxBP,KAAAQ,aAAwB,MAIxBR,KAAAS,QAAoC,EAuG7C,CAhGC,sBAAMC,GACJ,MAAMC,EAAUX,KAAKY,GAAGC,cACtB,sGAEIF,GAASG,a,CAGjB,MAAAC,GACE,MAAMC,EAAkBhB,KAAKS,QAAQQ,OAAS,EAC9C,MAAMR,EAAoCO,EACtChB,KAAKS,QACLT,KAAKK,SACH,CACE,CACEa,GAAI,OACJC,KAAM,WACNC,UAAWpB,KAAKM,cAChBe,UAAWrB,KAAKO,cAChBe,SAAUtB,KAAKuB,aACfC,SAAUxB,KAAKQ,aACfiB,YAAazB,KAAK0B,gBAClBC,SAAU,SAGd,GAEN,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,UAAAE,IAAA,2CAAQC,MAAM,gEACZH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,wDACR/B,KAAKE,SACJ0B,EAAA,cAAYI,MAAOhC,KAAKI,cAAe6B,KAAK,SAASC,KAAK,MACxDN,EAAA,sBACEG,MAAM,0BACNI,QAAQ,OACRhB,KAAMnB,KAAKG,SACX+B,KAAK,KACLE,WAAW,SAAQ,aACPpC,KAAKI,cACjBiC,WAAY,MACZC,UAAW,MACXC,UAAYC,GAAmCxC,KAAKyC,OAAOC,KAAKF,EAAMG,WAGxE,MAENf,EAAA,WAAAE,IAAA,2CACEC,MAAM,sEACNa,GAAG,KACHT,QAAQ,mBACRU,SAAQ,KACRC,MAAM,UACNC,eAAgB,GAEf/C,KAAKC,SAER2B,EAAA,OAAAE,IAAA,2CAAKC,MAAM,0DACRtB,EAAQuC,KAAIC,GACXrB,EAAA,cAAYE,IAAKmB,EAAO/B,GAAIc,MAAOiB,EAAO7B,UAAWa,KAAK,SAASC,KAAK,MACtEN,EAAA,sBACEV,GAAI+B,EAAO5B,WAAa6B,UAAS,wBACVD,EAAO/B,GAC9Ba,MAAO,CACL,4BAA6B,KAC7B,0BAA2BkB,EAAO/B,KAAO,QAE3CiB,QAAQ,OACRhB,KAAM8B,EAAO9B,KACbe,KAAK,KACLE,WAAW,SAAQ,aACPa,EAAO7B,UACnBO,SAAUsB,EAAOtB,SACjBL,SAAU2B,EAAO3B,SACjBE,SAAUyB,EAAOzB,SACjBC,YAAawB,EAAOxB,YACpB0B,QAASF,EAAOE,QAChBC,WAAYH,EAAOG,WACnBf,WAAY,MACZC,UAAW,MACXC,UAAYC,IACV,IAAKxB,GAAmBiC,EAAO/B,KAAO,OACpClB,KAAKqD,aAAaX,KAAKF,EAAMG,QAC/B3C,KAAKsD,SAASZ,KAAK,CACjBxB,GAAI+B,EAAO/B,GACXqC,cAAef,EAAMG,OACrBa,OAAQhB,EAAMiB,eACd,S","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as o,H as i,c as e,h as s,a as t,t as r}from"./index.js";import{A as a,r as d,d as n}from"./p-BJf49edB.js";import{C as c}from"./p-DlsjHRU3.js";import{A as l}from"./p-CwUXroLs.js";import{b as u,d as p,C as h}from"./p-CXB_T13u.js";import{d as g}from"./p-BWJb2rih.js";import{d as f}from"./p-pJ6gbwSa.js";import{d as v}from"./p-v9Nhw5yM.js";import{d as m}from"./p-D_iZPukF.js";import{d as b}from"./p-CqAC2IQO.js";import{d as x}from"./p-pPtjNRqC.js";import{d as w}from"./p-0XTyQNRG.js";import{d as y}from"./p-BbvAWFJA.js";import{r as _}from"./p-ioGH5SoA.js";import{r as k}from"./p-DhKvqh5G.js";import{b as z,T as C,a as j}from"./p-CeXf9-X3.js";const T=()=>`.sc-ds-data-group-h,.sc-ds-data-group:where(.ds-table),.sc-ds-data-group:where(.tooltip-popup),.sc-ds-data-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-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-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-data-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-data-group-h,.ds-focus-ring.sc-ds-data-group,.ds-focus-ring-inset.sc-ds-data-group-h,.ds-focus-ring-inset.sc-ds-data-group{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-data-group-h:focus-visible,.ds-focus-ring.sc-ds-data-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-data-group-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-data-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-data-group-h:focus-visible,.ds-focus-ring-inset.sc-ds-data-group:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-data-group-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-data-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-data-group-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-data-group{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-data-group-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-data-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-data-group-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-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-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-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-data-group-h,.ds-interaction-fill.sc-ds-data-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-data-group-h::before,.ds-interaction-fill.sc-ds-data-group::before,.ds-interaction-fill.sc-ds-data-group-h::after,.ds-interaction-fill.sc-ds-data-group::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-data-group-h::before,.ds-interaction-fill.sc-ds-data-group::before{z-index:1}.ds-interaction-fill.sc-ds-data-group-h::after,.ds-interaction-fill.sc-ds-data-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-data-group-h,.ds-interaction-fill--bordered.sc-ds-data-group{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-data-group-h::before,.ds-interaction-fill--selected.sc-ds-data-group::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-data-group-h,.ds-interaction-fill--selected.sc-ds-data-group{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-data-group-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-data-group:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-data-group-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-data-group:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-data-group-h::after,.ds-interaction-fill--grouped.sc-ds-data-group::after,.ds-interaction-fill--grouped.sc-ds-data-group-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-data-group:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-data-group-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-data-group:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-data-group-h,.ds-interaction-fill--grouped.sc-ds-data-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-data-group-h>.ds-interaction-fill__content.sc-ds-data-group,.ds-interaction-fill.sc-ds-data-group>.ds-interaction-fill__content.sc-ds-data-group,.ds-interaction-fill__content.sc-ds-data-group{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-data-group-h,.ds-interaction-fill--on-faint.sc-ds-data-group{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-data-group-h,.ds-interaction-fill--on-medium.sc-ds-data-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-data-group-h,.ds-interaction-fill--on-bold.sc-ds-data-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-data-group-h,.ds-interaction-fill--on-strong.sc-ds-data-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-data-group-h,.ds-interaction-fill--on-translucent.sc-ds-data-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-data-group-h,.ds-interaction-fill--on-inverted.sc-ds-data-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-data-group-h,.ds-interaction-fill--on-media.sc-ds-data-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-data-group-h,.ds-interaction-fill--on-always-dark.sc-ds-data-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-chrome.sc-ds-data-group-h,.ds-interaction-fill--on-chrome.sc-ds-data-group{--ds-interaction-hover:var(--color-chrome-interaction-hover);--ds-interaction-pressed:var(--color-chrome-interaction-pressed);--ds-interaction-active:var(--color-chrome-interaction-active);--ds-focus-ring-color:var(--color-chrome-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-data-group-h,.ds-interaction-fill--on-navigation.sc-ds-data-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-data-group-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-data-group:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-data-group-h::after,.ds-interaction-fill.sc-ds-data-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-data-group-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-data-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-data-group-h::before,.ds-interaction-fill--selected.sc-ds-data-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-data-group-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-data-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-data-group:root,.sc-ds-data-group-h,.ds-forced-colors-scope.sc-ds-data-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-data-group-h,.ds-control-inactive.sc-ds-data-group{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-data-group-h,.ds-control-inactive.sc-ds-data-group{color:var(--ds-forced-color-disabled);opacity:1}}.ds-control--lg.sc-ds-data-group,.ds-control--lg.sc-ds-data-group-h,.ds-control--md.sc-ds-data-group-h,.ds-control--md.sc-ds-data-group,.ds-control--sm.sc-ds-data-group-h,.ds-control--sm.sc-ds-data-group,.ds-control--xs.sc-ds-data-group-h,.ds-control--xs.sc-ds-data-group{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-data-group-h,.ds-control--lg.sc-ds-data-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-data-group-h,.ds-control--md.sc-ds-data-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-data-group-h,.ds-control--sm.sc-ds-data-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-data-group-h,.ds-control--xs.sc-ds-data-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-data-group-h,.ds-chrome-space--sm.sc-ds-data-group{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-data-group-h,.ds-chrome-space--md.sc-ds-data-group{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-data-group-h,.ds-chrome-space--lg.sc-ds-data-group{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-data-group-h,.ds-chrome-row.sc-ds-data-group,.ds-chrome-column.sc-ds-data-group-h,.ds-chrome-column.sc-ds-data-group,.ds-chrome-grid.sc-ds-data-group-h,.ds-chrome-grid.sc-ds-data-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-data-group-h,.ds-chrome-row.sc-ds-data-group{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-data-group-h,.ds-chrome-column.sc-ds-data-group{flex-direction:column}.ds-chrome-grid.sc-ds-data-group-h,.ds-chrome-grid.sc-ds-data-group{display:grid;align-items:center}.ds-control-frame.sc-ds-data-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-data-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-data-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-data-group{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-data-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-data-group{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-empty-region.sc-ds-data-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-data-group{padding:var(--dimension-space-200)}.sc-ds-data-group:where(.ds-text-decoration,.ds-text-action).sc-ds-data-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-data-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-data-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-data-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-data-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-data-group:hover{text-decoration-line:underline}}@media (forced-colors: active){.ds-text-action.sc-ds-data-group{text-decoration-line:underline;text-decoration-color:currentcolor}}.ds-choice-popup.sc-ds-data-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-data-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-data-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-data-group{animation:none;opacity:1}.ds-choice-popup--closing.sc-ds-data-group{opacity:0}}@media (forced-colors: active){.ds-choice-popup.sc-ds-data-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-data-group::after{box-shadow:none}}.ds-choice-list.sc-ds-data-group{display:flex;flex-direction:column;min-height:0;overflow-y:auto;overscroll-behavior:contain}.ds-choice-section--divided.sc-ds-data-group{border-bottom:var(--dimension-stroke-width-015) solid var(--color-border-tertiary)}ds-text.ds-choice-section__header.sc-ds-data-group{text-align:start;-webkit-user-select:none;user-select:none}.ds-choice-section--headed-after-first.sc-ds-data-group{margin-block-start:var(--dimension-space-050)}.select-option-row.sc-ds-data-group{display:flex;flex-direction:column;min-width:0}.ds-choice-item.sc-ds-data-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-data-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.ds-control--xs.sc-ds-data-group:has(.ds-choice-item__subtext){padding-block:0}.ds-choice-item__content.sc-ds-data-group{display:flex;flex:1;flex-direction:column;gap:var(--dimension-space-025);min-width:0}ds-text.ds-choice-item__label.sc-ds-data-group{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ds-text.ds-choice-item__subtext.sc-ds-data-group{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.ds-choice-item__icon.sc-ds-data-group,.ds-choice-item__suffix.sc-ds-data-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-data-group .ds-choice-item__icon.sc-ds-data-group{color:var(--color-foreground-primary)}.ds-choice-item__tag.sc-ds-data-group{flex-shrink:0;pointer-events:none}.ds-choice-empty.sc-ds-data-group,.ds-choice-loading.sc-ds-data-group{min-height:var(--dimension-size-600);padding:var(--dimension-space-100)}.ds-choice-footer.sc-ds-data-group{position:relative;box-sizing:border-box;padding-block:var(--dimension-space-050)}.ds-choice-footer.sc-ds-data-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-data-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-data-group,.ds-choice-footer__summary-measure.sc-ds-data-group,.ds-choice-footer__clear.sc-ds-data-group ds-text.sc-ds-data-group,.ds-choice-footer__action.sc-ds-data-group ds-text.sc-ds-data-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-data-group,.ds-choice-footer__summary-measure.sc-ds-data-group,.ds-choice-footer__clear.sc-ds-data-group,.ds-choice-footer__action.sc-ds-data-group{white-space:nowrap}.ds-choice-footer__summary-measure.sc-ds-data-group{position:absolute;visibility:hidden;pointer-events:none}.ds-choice-footer__clear.sc-ds-data-group,.ds-choice-footer__action.sc-ds-data-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-section--divided.sc-ds-data-group{border-bottom-color:var(--ds-forced-color-content)}.ds-choice-footer.sc-ds-data-group::before{background-color:var(--ds-forced-color-content)}}.ds-control-frame.sc-ds-data-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-data-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-data-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-data-group{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-label-dot.sc-ds-data-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-data-group{position:absolute;inset-block-start:0;inset-inline-end:0;pointer-events:none}.ds-table-caption-control.sc-ds-data-group-h{--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs)}.ds-table-caption-control.ds-table-caption-control--compact.sc-ds-data-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-data-group-h .trigger.sc-ds-data-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-data-group-h .trigger--has-value.sc-ds-data-group:not(.trigger--label-placeholder){--ds-select-prefix-fg:var(--ds-select-fg-active)}.sc-ds-data-group-h{display:inline-flex;min-inline-size:0;max-inline-size:var(--dimension-menu-width-xs)}[hidden].sc-ds-data-group-h{display:none}.data-group__body.sc-ds-data-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))}.data-group__data-pane.sc-ds-data-group,.data-group__order-pane.sc-ds-data-group{display:flex;min-width:0;min-height:0;flex-direction:column}.data-group__data-pane.sc-ds-data-group{border-inline-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.data-group__list.sc-ds-data-group{flex:1 1 auto}.data-group__empty.sc-ds-data-group{flex:1 1 auto}.data-group__footer.sc-ds-data-group{flex:0 0 auto}.data-group__footer.sc-ds-data-group .ds-choice-footer__content.sc-ds-data-group{justify-content:flex-start}.data-group__footer[aria-hidden='true'].sc-ds-data-group::before{visibility:hidden}.data-group__footer[aria-hidden='true'].sc-ds-data-group .ds-choice-footer__content.sc-ds-data-group{visibility:hidden}@media (forced-colors: active){.data-group__data-pane.sc-ds-data-group{border-inline-end-color:var(--ds-forced-color-content)}}.data-preferences-embedded.sc-ds-data-group{display:flex;flex-direction:column;min-width:0;min-height:0;color:var(--color-foreground-secondary)}.sc-ds-data-group-h:has(.data-preferences-embedded){display:block;max-inline-size:none}.data-preferences-embedded.sc-ds-data-group .data-group__body.sc-ds-data-group{grid-template-columns:min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr)}.data-group-vertical.sc-ds-data-group-h .data-group__body.sc-ds-data-group{grid-template-columns:minmax(0, 1fr)}.data-group-vertical.sc-ds-data-group-h .data-group__data-pane.sc-ds-data-group{border-inline-end:0}.data-group-vertical.sc-ds-data-group-h .data-group__footer.sc-ds-data-group{display:none}`;const O=[{label:"Ascending",direction:"asc"},{label:"Descending",direction:"desc"}];let E=0;const D=o(class o extends i{constructor(o){super();if(o!==false){this.__registerHost()}this.dsGroupChange=e(this,"dsGroupChange",7);this.dsClear=e(this,"dsClear",7);this.dsOpenChange=e(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-data-group-${++E}`;this.triggerId=`${this.componentId}-trigger`;this.popupId=`${this.componentId}-popup`;this.triggerElement=null;this.pendingInitialFocusVisible=false;this.closeTimer=null;this.loaded=false;this.tasks=new c((()=>this.el.isConnected));this.position=new a({getAnchor:()=>this.triggerElement,getPopup:()=>this.el.querySelector(".data-group-popup"),getOwnerDocument:()=>this.el.ownerDocument,measure:(o,i)=>{if(!this.open)return null;const e=_(C.space050,C.space050);return{anchorRect:o.getBoundingClientRect(),popupWidth:i.offsetWidth||this.popupFallbackWidth,popupHeight:i.offsetHeight||this.popupFallbackHeight,side:"bottom",align:"end",sideOffsetPx:_(j.space050,C.space050),alignOffsetPx:k({align:"end",alignOffsetPx:0,sectionInsetPx:e}),viewportPadPx:_(C.space050,C.space050),viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:d(o)}},apply:({x:o,y:i})=>{this.pos={x:o,y:i}},onReady:()=>{this.positionReady=true},liveUpdate:"double-frame",observeResize:true,topLayer:true});this.interaction=new l({getAnchor:()=>this.triggerElement,getPopup:()=>this.el.querySelector(".data-group-popup"),getOwnerDocument:()=>this.el.ownerDocument,onOutsideActivation:()=>this.close()})}componentDidLoad(){this.loaded=true;if(this.open)this.onOpenChange(true)}connectedCallback(){if(this.loaded&&this.open)this.onOpenChange(true)}disconnectedCallback(){this.teardown();this.shouldRender=false;this.closing=false;this.positionReady=false;this.pendingInitialFocusVisible=false}onOpenChange(o){if(this.embedded||!this.loaded||!this.el.isConnected)return;if(o){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||this.closing)return;this.tasks.cancel();this.position.cancel();this.closing=true;this.interaction.disconnect();this.position.unobserve();const i=z(C.motionShort2,C.animationDurationShort3);if(i<=0)this.finishClose();else this.closeTimer=setTimeout((()=>this.finishClose()),i)}handleKeyDown(o){if(this.embedded&&(o.key==="Escape"||o.key==="Tab"))return;if(!this.shouldRender&&!this.embedded||this.closing)return;if(o.key==="Escape"){o.preventDefault();this.close();return}if(o.key!=="Tab"||!this.interaction.tabLeavesPopup(o))return;o.preventDefault();this.close(false);this.interaction.moveFocusAfterTab(o.shiftKey)}get popupFallbackWidth(){return _(C.menuWidthLg,C.menuWidthLg)}get popupFallbackHeight(){return _(C.menuFallbackHeight,C.menuFallbackHeight)}teardown(){this.tasks.cancel();this.position.unobserve();this.interaction.disconnect();if(this.closeTimer){clearTimeout(this.closeTimer);this.closeTimer=null}}toggle(o=false){if(this.open){this.close();return}this.pendingInitialFocusVisible=o;this.open=true;this.dsOpenChange.emit(true);this.onOpenChange(true)}close(o=true){if(o)this.interaction.focusAnchor();this.open=false;this.dsOpenChange.emit(false);this.onOpenChange(false)}finishClose(){if(this.open||!this.closing||!this.el.isConnected)return;const o=this.el.querySelector(".data-group-popup");if(o?.matches(":popover-open"))o.hidePopover();this.shouldRender=false;this.closing=false;this.closeTimer=null}focusInitialDataPoint(){this.tasks.frame((()=>{if(!this.open||this.closing)return;const o=this.grouping?this.el.querySelector(`[data-group-value="${CSS.escape(this.grouping.fieldId)}"] [role="option"]`):null;const i=o??this.el.querySelector('[data-group-value] [role="option"]:not([aria-disabled="true"])');i?.focus();this.pendingInitialFocusVisible=false}))}selectData(o){if(o.value==="__none__"){this.dsClear.emit();return}if(o.isInactive)return;if(this.grouping?.fieldId===o.value){this.dsGroupChange.emit({...this.grouping});return}const i=o.orderOptions?.[0];this.dsGroupChange.emit({fieldId:o.value,direction:i?.direction??"asc",...i?.orderBy?{orderBy:i.orderBy}:{}})}get activeOrderOptions(){const o=this.options.find((o=>o.value===this.grouping?.fieldId))?.orderOptions;return o?.length?o:O}get selectedOrderIndex(){if(!this.grouping)return-1;const o=this.activeOrderOptions.findIndex((o=>o.direction===this.grouping?.direction&&o.orderBy===this.grouping?.orderBy));if(o>=0)return o;if(this.grouping.orderBy===undefined){return this.activeOrderOptions.findIndex((o=>o.direction===this.grouping?.direction))}return-1}selectOrder(o,i){if(!this.grouping||this.selectedOrderIndex===i)return;const e={fieldId:this.grouping.fieldId,direction:o.direction};if(o.orderBy)e.orderBy=o.orderBy;this.dsGroupChange.emit(e)}moveFocus(o,i,e,s){if(s&&(o.key==="ArrowLeft"||o.key==="ArrowRight")){o.preventDefault();this.focusRingVisible=true;this.el.querySelector(s)?.focus();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(o.key))return;o.preventDefault();const t=Array.from(this.el.querySelectorAll(i)).filter((o=>o.getAttribute("aria-disabled")!=="true"));if(!t.length)return;let r;if(o.key==="Home")r=0;else if(o.key==="End")r=t.length-1;else r=(e+(o.key==="ArrowDown"?1:-1)+t.length)%t.length;this.focusRingVisible=true;t[r]?.focus()}renderDataOption(o,i){const e=o.value==="__none__"?!this.grouping:o.value===this.grouping?.fieldId;return s(h,{id:`${this.componentId}-data-${i}`,option:{...o},selected:e,active:e,focusRingVisible:this.focusRingVisible,usesSubtext:Boolean(o.description),tabIndex:e||!this.grouping&&i===0?0:-1,onHover:()=>{this.focusRingVisible=false},onSelect:()=>this.selectData(o),onKeyDown:i=>{if(i.key==="Enter"||i.key===" "){i.preventDefault();this.selectData(o);return}this.moveFocus(i,'[data-group-value] [role="option"]',this.options.filter((o=>!o.isInactive)).findIndex((i=>i.value===o.value)),this.grouping?`[data-group-order-index="${this.selectedOrderIndex}"] [role="option"]`:undefined)}})}renderOrder(o,i){const e=i===this.selectedOrderIndex;return s(h,{id:`${this.componentId}-order-${i}`,option:{label:o.label,value:String(i)},selected:e,active:e,focusRingVisible:this.focusRingVisible,usesSubtext:false,tabIndex:e?0:-1,onHover:()=>{this.focusRingVisible=false},onSelect:()=>this.selectOrder(o,i),onKeyDown:e=>{if(e.key==="Enter"||e.key===" "){e.preventDefault();this.selectOrder(o,i);return}this.moveFocus(e,'[data-group-order-index] [role="option"]',i,`[data-group-value="${CSS.escape(this.grouping?.fieldId??"")}"] [role="option"]`)}})}render(){const o=this.ariaLabel?.trim()||"Group table";const i={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:"aef6b3065e081df1e049281537538372ca849a77",class:{"data-group-vertical":this.vertical},hidden:this.options.length===0?true:undefined},this.options.length&&!this.embedded?s("ds-button-unfilled",{hasBorder:this.hasBorder,ref:o=>{this.triggerElement=o??null},id:this.triggerId,variant:"icon-label",size:"md",icon:"SectionList",label:"Group",labelEmphasis:false,pressScale:false,"aria-label":o,haspopup:"dialog",collapseLabel:true,expanded:this.open,surfaceOpen:this.open||this.closing,controls:this.popupId,onDsClick:o=>this.toggle(o.detail.detail===0)}):null,this.shouldRender||this.embedded?s("div",{id:this.popupId,popover:this.embedded?undefined:"manual",class:{"data-group-popup":true,"ds-choice-popup":!this.embedded,"data-preferences-embedded":this.embedded,"ds-choice-popup--closing":this.closing},style:this.embedded?undefined:i,role:"dialog","aria-label":o},s("div",{class:"data-group__body"},s("div",{class:"data-group__data-pane"},s(u,{heading:"Data",ariaLabel:"Group data",className:"data-group__list"},this.vertical&&this.renderDataOption({label:"No grouping",value:"__none__"},-1),this.options.map(((o,i)=>s("div",{"data-group-value":o.value},this.renderDataOption(o,i))))),s("div",{hidden:this.vertical,class:"data-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:"data-group__order-pane"},this.grouping?s(u,{heading:"Order",ariaLabel:"Group order",className:"data-group__list"},this.activeOrderOptions.map(((o,i)=>s("div",{"data-group-order-index":i},this.renderOrder(o,i))))):s("div",{class:"data-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 T()}},[2,"ds-data-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 H(){if(typeof customElements==="undefined"){return}const o=["ds-data-group","ds-badge","ds-button-unfilled","ds-chip","ds-divider","ds-empty-state","ds-icon","ds-input","ds-loader","ds-text","ds-tooltip"];o.forEach((o=>{switch(o){case"ds-data-group":if(!customElements.get(r(o))){customElements.define(r(o),D)}break;case"ds-badge":if(!customElements.get(r(o))){g()}break;case"ds-button-unfilled":if(!customElements.get(r(o))){f()}break;case"ds-chip":if(!customElements.get(r(o))){v()}break;case"ds-divider":if(!customElements.get(r(o))){m()}break;case"ds-empty-state":if(!customElements.get(r(o))){b()}break;case"ds-icon":if(!customElements.get(r(o))){x()}break;case"ds-input":if(!customElements.get(r(o))){p()}break;case"ds-loader":if(!customElements.get(r(o))){w()}break;case"ds-text":if(!customElements.get(r(o))){y()}break;case"ds-tooltip":if(!customElements.get(r(o))){n()}break}}))}H();export{D,H as d};
|
|
2
|
+
//# sourceMappingURL=p-DdNJPBCS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["dataGroupCss","DEFAULT_ORDER_OPTIONS","label","direction","tableGroupSeq","DataGroup","__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","loaded","tasks","ConnectionTasks","el","isConnected","position","AnchoredPositionController","getAnchor","getPopup","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","connectedCallback","disconnectedCallback","teardown","isOpen","connect","observe","schedule","focusInitialDataPoint","cancel","disconnect","unobserve","duration","resolveMotionTimeMs","motionShort2","animationDurationShort3","finishClose","setTimeout","handleKeyDown","event","key","preventDefault","tabLeavesPopup","moveFocusAfterTab","shiftKey","menuWidthLg","menuFallbackHeight","clearTimeout","toggle","fromKeyboard","dsOpenChange","emit","restoreFocus","focusAnchor","matches","hidePopover","frame","selected","CSS","escape","fieldId","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/DataGroup/DataGroup.css?tag=ds-data-group&encapsulation=scoped","src/wc/components/DataGroup/DataGroup.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.data-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.data-group__data-pane,\n.data-group__order-pane {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n}\n\n.data-group__data-pane {\n border-inline-end: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.data-group__list {\n flex: 1 1 auto;\n}\n\n.data-group__empty {\n flex: 1 1 auto;\n}\n\n.data-group__footer {\n flex: 0 0 auto;\n}\n\n.data-group__footer .ds-choice-footer__content {\n justify-content: flex-start;\n}\n\n.data-group__footer[aria-hidden='true']::before {\n visibility: hidden;\n}\n\n.data-group__footer[aria-hidden='true'] .ds-choice-footer__content {\n visibility: hidden;\n}\n\n@media (forced-colors: active) {\n .data-group__data-pane {\n border-inline-end-color: var(--ds-forced-color-content);\n }\n}\n\n.data-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(.data-preferences-embedded) {\n display: block;\n max-inline-size: none;\n}\n.data-preferences-embedded .data-group__body {\n grid-template-columns: min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr);\n}\n\n:host(.data-group-vertical) .data-group__body {\n grid-template-columns: minmax(0, 1fr);\n}\n:host(.data-group-vertical) .data-group__data-pane {\n border-inline-end: 0;\n}\n\n:host(.data-group-vertical) .data-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 { ConnectionTasks } from '../../utils/connection-tasks';\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 { DataGroupingState, DataSortDirection } from '../Table/table-types';\n\nexport interface TableGroupOrderOption {\n label: string;\n direction: DataSortDirection;\n /** Optional application-owned data point used to order the group sections. */\n orderBy?: string;\n}\n\nexport interface DataGroupOption {\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-data-group',\n styleUrl: 'DataGroup.css',\n scoped: true,\n})\nexport class DataGroup {\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: DataGroupOption[] = [];\n /** Controlled grouping field and the order of its group sections. */\n @Prop() grouping: DataGroupingState | 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<DataGroupingState>;\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-data-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 private loaded = false;\n private readonly tasks = new ConnectionTasks(() => this.el.isConnected);\n\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.data-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>('.data-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n\n componentDidLoad() {\n this.loaded = true;\n if (this.open) this.onOpenChange(true);\n }\n\n connectedCallback() {\n if (this.loaded && this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.teardown();\n this.shouldRender = false;\n this.closing = false;\n this.positionReady = false;\n this.pendingInitialFocusVisible = false;\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (this.embedded || !this.loaded || !this.el.isConnected) 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 || this.closing) return;\n this.tasks.cancel();\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.tasks.cancel();\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 if (this.open || !this.closing || !this.el.isConnected) return;\n const popup = this.el.querySelector<HTMLElement>('.data-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 this.tasks.frame(() => {\n if (!this.open || this.closing) return;\n const selected = this.grouping\n ? this.el.querySelector<HTMLElement>(\n `[data-group-value=\"${CSS.escape(this.grouping.fieldId)}\"] [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: DataGroupOption) {\n if (option.value === '__none__') {\n this.dsClear.emit();\n return;\n }\n if (option.isInactive) return;\n if (this.grouping?.fieldId === option.value) {\n this.dsGroupChange.emit({ ...this.grouping });\n return;\n }\n const initialOrder = option.orderOptions?.[0];\n this.dsGroupChange.emit({\n fieldId: 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?.fieldId\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: DataGroupingState = {\n fieldId: this.grouping.fieldId,\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: DataGroupOption, index: number) {\n const selected =\n option.value === '__none__' ? !this.grouping : option.value === this.grouping?.fieldId;\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?.fieldId ?? '')}\"] [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={{ 'data-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 'data-group-popup': true,\n 'ds-choice-popup': !this.embedded,\n 'data-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=\"data-group__body\">\n <div class=\"data-group__data-pane\">\n <ChoiceListSection\n heading=\"Data\"\n ariaLabel=\"Group data\"\n className=\"data-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=\"data-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=\"data-group__order-pane\">\n {this.grouping ? (\n <ChoiceListSection\n heading=\"Order\"\n ariaLabel=\"Group order\"\n className=\"data-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=\"data-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":[]}
|
|
1
|
+
{"version":3,"names":["dataGroupCss","DEFAULT_ORDER_OPTIONS","label","direction","tableGroupSeq","DataGroup","__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","loaded","tasks","ConnectionTasks","el","isConnected","position","AnchoredPositionController","getAnchor","getPopup","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","connectedCallback","disconnectedCallback","teardown","isOpen","connect","observe","schedule","focusInitialDataPoint","cancel","disconnect","unobserve","duration","resolveMotionTimeMs","motionShort2","animationDurationShort3","finishClose","setTimeout","handleKeyDown","event","key","preventDefault","tabLeavesPopup","moveFocusAfterTab","shiftKey","menuWidthLg","menuFallbackHeight","clearTimeout","toggle","fromKeyboard","dsOpenChange","emit","restoreFocus","focusAnchor","matches","hidePopover","frame","selected","CSS","escape","fieldId","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/DataGroup/DataGroup.css?tag=ds-data-group&encapsulation=scoped","src/wc/components/DataGroup/DataGroup.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.data-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.data-group__data-pane,\n.data-group__order-pane {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n}\n\n.data-group__data-pane {\n border-inline-end: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.data-group__list {\n flex: 1 1 auto;\n}\n\n.data-group__empty {\n flex: 1 1 auto;\n}\n\n.data-group__footer {\n flex: 0 0 auto;\n}\n\n.data-group__footer .ds-choice-footer__content {\n justify-content: flex-start;\n}\n\n.data-group__footer[aria-hidden='true']::before {\n visibility: hidden;\n}\n\n.data-group__footer[aria-hidden='true'] .ds-choice-footer__content {\n visibility: hidden;\n}\n\n@media (forced-colors: active) {\n .data-group__data-pane {\n border-inline-end-color: var(--ds-forced-color-content);\n }\n}\n\n.data-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(.data-preferences-embedded) {\n display: block;\n max-inline-size: none;\n}\n.data-preferences-embedded .data-group__body {\n grid-template-columns: min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr);\n}\n\n:host(.data-group-vertical) .data-group__body {\n grid-template-columns: minmax(0, 1fr);\n}\n:host(.data-group-vertical) .data-group__data-pane {\n border-inline-end: 0;\n}\n\n:host(.data-group-vertical) .data-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 { ConnectionTasks } from '../../utils/connection-tasks';\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 { DataGroupingState, DataSortDirection } from '../Table/table-types';\n\nexport interface TableGroupOrderOption {\n label: string;\n direction: DataSortDirection;\n /** Optional application-owned data point used to order the group sections. */\n orderBy?: string;\n}\n\nexport interface DataGroupOption {\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-data-group',\n styleUrl: 'DataGroup.css',\n scoped: true,\n})\nexport class DataGroup {\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: DataGroupOption[] = [];\n /** Controlled grouping field and the order of its group sections. */\n @Prop() grouping: DataGroupingState | 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<DataGroupingState>;\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-data-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 private loaded = false;\n private readonly tasks = new ConnectionTasks(() => this.el.isConnected);\n\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.data-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>('.data-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n\n componentDidLoad() {\n this.loaded = true;\n if (this.open) this.onOpenChange(true);\n }\n\n connectedCallback() {\n if (this.loaded && this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.teardown();\n this.shouldRender = false;\n this.closing = false;\n this.positionReady = false;\n this.pendingInitialFocusVisible = false;\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (this.embedded || !this.loaded || !this.el.isConnected) 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 || this.closing) return;\n this.tasks.cancel();\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.tasks.cancel();\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 if (this.open || !this.closing || !this.el.isConnected) return;\n const popup = this.el.querySelector<HTMLElement>('.data-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 this.tasks.frame(() => {\n if (!this.open || this.closing) return;\n const selected = this.grouping\n ? this.el.querySelector<HTMLElement>(\n `[data-group-value=\"${CSS.escape(this.grouping.fieldId)}\"] [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: DataGroupOption) {\n if (option.value === '__none__') {\n this.dsClear.emit();\n return;\n }\n if (option.isInactive) return;\n if (this.grouping?.fieldId === option.value) {\n this.dsGroupChange.emit({ ...this.grouping });\n return;\n }\n const initialOrder = option.orderOptions?.[0];\n this.dsGroupChange.emit({\n fieldId: 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?.fieldId\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: DataGroupingState = {\n fieldId: this.grouping.fieldId,\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: DataGroupOption, index: number) {\n const selected =\n option.value === '__none__' ? !this.grouping : option.value === this.grouping?.fieldId;\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?.fieldId ?? '')}\"] [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={{ 'data-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 'data-group-popup': true,\n 'ds-choice-popup': !this.embedded,\n 'data-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=\"data-group__body\">\n <div class=\"data-group__data-pane\">\n <ChoiceListSection\n heading=\"Data\"\n ariaLabel=\"Group data\"\n className=\"data-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=\"data-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=\"data-group__order-pane\">\n {this.grouping ? (\n <ChoiceListSection\n heading=\"Order\"\n ariaLabel=\"Group order\"\n className=\"data-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=\"data-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":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as i,c as t,h as a,a as s,t as n}from"./index.js";import{o}from"./p-Dkh_40bl.js";import{d}from"./p-BWJb2rih.js";import{d as r}from"./p-pJ6gbwSa.js";import{d as c}from"./p--_bPiNCd.js";import{d as l}from"./p-v9Nhw5yM.js";import{d as p}from"./p-D_iZPukF.js";import{d as g}from"./p-CqAC2IQO.js";import{d as f}from"./p-pPtjNRqC.js";import{d as h}from"./p-CXB_T13u.js";import{d as b}from"./p-0XTyQNRG.js";import{d as u}from"./p-C0L-VnSr.js";import{d as m}from"./p-BbvAWFJA.js";import{d as v}from"./p-BJf49edB.js";const z=[25,50,100,200];function S(e){return Number.isFinite(e)?Math.max(0,Math.trunc(e)):0}function y(e,i){return Number.isFinite(e)&&e>0?Math.trunc(e):i}function _(e){const i=y(e.pageSize,z[0]);const t=e.pageSizeMode==="fit"?"fit":"fixed";const a=S(e.totalItems);const s=Math.max(1,Math.ceil(a/i));const n=Math.min(S(e.pageIndex),s-1);const o=(e.pageSizeOptions?.length?e.pageSizeOptions:z).map((e=>y(e,0))).filter((e=>e>0));const d=[...new Set(t==="fixed"?[...o,i]:o)].sort(((e,i)=>e-i));const r=a===0?0:n*i+1;const c=a===0?0:Math.min(a,r+i-1);return{pageIndex:n,pageSize:i,pageSizeMode:t,totalItems:a,totalPages:s,firstItem:r,lastItem:c,pageSizeOptions:d}}const x=()=>`.ds-visually-hidden.sc-ds-pagination-h,.ds-visually-hidden.sc-ds-pagination{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sc-ds-pagination-h{display:block;box-sizing:border-box;min-width:0;max-width:100%;overflow-x:auto;scrollbar-width:none}.sc-ds-pagination-h::-webkit-scrollbar{display:none}.pagination.sc-ds-pagination,.pagination__page-size.sc-ds-pagination,.pagination__navigation.sc-ds-pagination{display:flex;align-items:center;box-sizing:border-box}.pagination.sc-ds-pagination{width:max-content;min-width:100%;gap:var(--dimension-space-100)}.pagination__page-size.sc-ds-pagination,.pagination__navigation.sc-ds-pagination{flex:0 0 auto}.pagination__page-size.sc-ds-pagination{gap:0}.pagination__navigation.sc-ds-pagination{gap:var(--dimension-space-050)}.pagination__page.sc-ds-pagination,.pagination__label.sc-ds-pagination{display:inline-flex;align-items:center;flex:0 0 auto;white-space:nowrap}.pagination.sc-ds-pagination .pagination__page-size-select.sc-ds-pagination{--ds-select-fg-active:var(--color-foreground-secondary)}.pagination__page.sc-ds-pagination{justify-content:center;min-inline-size:0;padding-inline:var(--dimension-space-100)}.pagination--table-compact.sc-ds-pagination .pagination__boundary.sc-ds-pagination{display:none}`;let k=0;const L=e(class e extends i{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=t(this,"dsChange",7);this.pageIndex=0;this.pageSize=25;this.pageSizeMode="fixed";this.totalItems=0;this.pageSizeOptions=[25,50,100,200];this.fitToPage=false;this.fitToPageInactive=false;this.fitPageSizeLabel="Fit to page";this.fitPageSizeTriggerLabel="Fit";this.itemLabel="items";this.pageSizeLabel="Items";this.label="Pagination";this.showFirstLastButtons=false;this.loading=false;this.tableCompact=false;this.pageSizeControlId=`ds-pagination-${++k}-page-size`;this.hasLoaded=false}componentDidLoad(){this.hasLoaded=true;this.syncTableCompactObserver()}connectedCallback(){if(this.hasLoaded)this.syncTableCompactObserver()}disconnectedCallback(){this.tableCompactDisconnect?.();this.tableCompactDisconnect=undefined}syncTableCompactObserver(){this.tableCompactDisconnect?.();this.tableCompactDisconnect=o(this.el,(e=>{if(this.tableCompact!==e)this.tableCompact=e}))}requestPage(e){const i=this.resolvedState;if(this.loading||e===i.pageIndex||e<0||e>=i.totalPages){return}this.dsChange.emit({pageIndex:e,pageSize:i.pageSize,pageSizeMode:i.pageSizeMode,totalItems:i.totalItems,pageSizeOptions:i.pageSizeOptions,fitToPage:this.fitToPage,fitToPageInactive:this.fitToPageInactive,fitPageSize:this.resolvedFitPageSize,fitPageSizeLabel:this.fitPageSizeLabel,fitPageSizeTriggerLabel:this.fitPageSizeTriggerLabel,itemLabel:this.itemLabel,pageSizeLabel:this.pageSizeLabel,ariaLabel:this.label,showFirstLastButtons:this.showFirstLastButtons,previousPageIndex:i.pageIndex,previousPageSize:i.pageSize,previousPageSizeMode:i.pageSizeMode,reason:"page"})}requestPageSize(e){if(this.loading||typeof e!=="string"||e==="fit"&&this.fitToPageInactive)return;const i=this.resolvedState;const t=e==="fit"?"fit":"fixed";const a=t==="fit"?this.resolvedFitPageSize:Number(e);if(!a||a===i.pageSize&&t===i.pageSizeMode)return;this.dsChange.emit({pageIndex:0,pageSize:Math.trunc(a),pageSizeMode:t,totalItems:i.totalItems,pageSizeOptions:i.pageSizeOptions,fitToPage:this.fitToPage,fitToPageInactive:this.fitToPageInactive,fitPageSize:this.resolvedFitPageSize,fitPageSizeLabel:this.fitPageSizeLabel,fitPageSizeTriggerLabel:this.fitPageSizeTriggerLabel,itemLabel:this.itemLabel,pageSizeLabel:this.pageSizeLabel,ariaLabel:this.label,showFirstLastButtons:this.showFirstLastButtons,previousPageIndex:i.pageIndex,previousPageSize:i.pageSize,previousPageSizeMode:i.pageSizeMode,reason:"page-size"})}handleKeyDown(e){if(e.defaultPrevented||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey){return}const t=e.composedPath().some((e=>e instanceof i&&(e.tagName==="DS-SELECT"||["INPUT","SELECT","TEXTAREA"].includes(e.tagName))));if(t||e.key!=="ArrowLeft"&&e.key!=="ArrowRight")return;const a=this.resolvedState;const s=e.key==="ArrowLeft"?a.pageIndex-1:a.pageIndex+1;if(this.loading||s<0||s>=a.totalPages)return;e.preventDefault();this.requestPage(s)}get resolvedFitPageSize(){return Number.isFinite(this.fitPageSize)&&Number(this.fitPageSize)>0?Math.trunc(Number(this.fitPageSize)):undefined}get resolvedState(){return _({pageIndex:this.pageIndex,pageSize:this.pageSize,pageSizeMode:this.pageSizeMode,totalItems:this.totalItems,pageSizeOptions:this.pageSizeOptions})}render(){const e=this.resolvedState;const i=e.pageIndex===0;const t=e.pageIndex===e.totalPages-1;const n=`${e.pageIndex+1} of ${e.totalPages}`;const o=`${e.firstItem}–${e.lastItem} of ${e.totalItems}`;const d=`Page ${e.pageIndex+1} of ${e.totalPages}`;const r=this.pageSizeAriaLabel??`${this.pageSizeLabel} per page`;const c=e.pageSizeOptions.map((e=>({label:String(e),value:String(e)})));if(this.fitToPage){c.push({label:this.fitPageSizeLabel,value:"fit",isInactive:this.fitToPageInactive||this.resolvedFitPageSize===undefined})}return a(s,{key:"9dba6fd877bfb9ff2e200e6e36afe5ad40538f14"},a("nav",{key:"8ae0a269ea5ae0a6792f8162874ff8a08c8ff053",class:{pagination:true,"pagination--table-compact":this.tableCompact},"aria-label":this.label,"aria-busy":this.loading?"true":undefined,onKeyDown:e=>this.handleKeyDown(e)},a("div",{key:"fefda5fb98adc3edc12bc4ee0c66a860ff6476e4",class:"pagination__page-size"},a("ds-text",{key:"52e0e8ad960a0b26b3eca57887e973970334140d",class:"pagination__label",as:"span",variant:"text-body-medium",color:"secondary","aria-hidden":"true"},this.pageSizeLabel,":"),a("span",{key:"b60134d54790df42550fac8cfdb31ec1e8fd11a8",id:`${this.pageSizeControlId}-label`,class:"ds-visually-hidden"},r),a("ds-select",{key:"c90fc833461c13c095e30d648de0e92e85f7d30a",class:"pagination__page-size-select",size:"md",inputId:this.pageSizeControlId,ariaLabelledby:`${this.pageSizeControlId}-label`,options:c,value:e.pageSizeMode==="fit"?"fit":String(e.pageSize),triggerLabel:e.pageSizeMode==="fit"?this.fitPageSizeTriggerLabel:undefined,indicator:"up-down",allowClear:false,activeFill:false,hasBorder:false,isInactive:this.loading,onDsChange:e=>{e.stopPropagation();this.requestPageSize(e.detail)}})),a("ds-divider",{key:"615cb9732033ddd96d4453d3b744e4e62e81d78d",class:"pagination__divider",orientation:"vertical",length:"var(--dimension-size-250)"}),a("div",{key:"b7a2760591e96a6383ebdc5731b78a379f74e6f7",class:"pagination__navigation"},this.showFirstLastButtons?a("ds-button-unfilled",{class:"pagination__boundary",variant:"icon",size:"md",icon:"ChevronLeftDouble",ariaLabel:"First page",hasBorder:false,isInactive:this.loading||i,onDsClick:()=>this.requestPage(0)}):null,a("ds-button-unfilled",{key:"d361012bb363490e04e8e7dfd50cb775260478e5",variant:"icon",size:"md",icon:"ChevronLeft",ariaLabel:"Previous page",hasBorder:false,isInactive:this.loading||i,onDsClick:()=>this.requestPage(e.pageIndex-1)}),a("ds-text",{key:"027679be8edb694d0006fd0f1d6d9c8ba278d2b6",class:"pagination__page",as:"span",variant:"text-body-medium",color:"secondary",fontFeature:"tabular-nums"},n),a("ds-button-unfilled",{key:"cafa3f8366bf8dc49c801f2390f470663f128953",variant:"icon",size:"md",icon:"ChevronRight",ariaLabel:"Next page",hasBorder:false,isInactive:this.loading||t,onDsClick:()=>this.requestPage(e.pageIndex+1)}),this.showFirstLastButtons?a("ds-button-unfilled",{class:"pagination__boundary",variant:"icon",size:"md",icon:"ChevronRightDouble",ariaLabel:"Last page",hasBorder:false,isInactive:this.loading||t,onDsClick:()=>this.requestPage(e.totalPages-1)}):null),a("span",{key:"a0c2de0d4fde0e820b8a01bf9617a7ccd6d78482",class:"ds-visually-hidden",role:"status","aria-live":"polite","aria-atomic":"true"},o," ",this.itemLabel,". ",d,".")))}get el(){return this}static get style(){return x()}},[2,"ds-pagination",{pageIndex:[2,"page-index"],pageSize:[2,"page-size"],pageSizeMode:[1,"page-size-mode"],totalItems:[2,"total-items"],pageSizeOptions:[16],fitToPage:[4,"fit-to-page"],fitToPageInactive:[4,"fit-to-page-inactive"],fitPageSize:[2,"fit-page-size"],fitPageSizeLabel:[1,"fit-page-size-label"],fitPageSizeTriggerLabel:[1,"fit-page-size-trigger-label"],itemLabel:[1,"item-label"],pageSizeLabel:[1,"page-size-label"],pageSizeAriaLabel:[1,"page-size-aria-label"],label:[1],showFirstLastButtons:[4,"show-first-last-buttons"],loading:[4],tableCompact:[32]}]);function P(){if(typeof customElements==="undefined"){return}const e=["ds-pagination","ds-badge","ds-button-unfilled","ds-checkbox","ds-chip","ds-divider","ds-empty-state","ds-icon","ds-input","ds-loader","ds-select","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-pagination":if(!customElements.get(n(e))){customElements.define(n(e),L)}break;case"ds-badge":if(!customElements.get(n(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(n(e))){r()}break;case"ds-checkbox":if(!customElements.get(n(e))){c()}break;case"ds-chip":if(!customElements.get(n(e))){l()}break;case"ds-divider":if(!customElements.get(n(e))){p()}break;case"ds-empty-state":if(!customElements.get(n(e))){g()}break;case"ds-icon":if(!customElements.get(n(e))){f()}break;case"ds-input":if(!customElements.get(n(e))){h()}break;case"ds-loader":if(!customElements.get(n(e))){b()}break;case"ds-select":if(!customElements.get(n(e))){u()}break;case"ds-text":if(!customElements.get(n(e))){m()}break;case"ds-tooltip":if(!customElements.get(n(e))){v()}break}}))}P();export{L as P,P as d,_ as r};
|
|
2
|
+
//# sourceMappingURL=p-DiPqdcD4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_PAGE_SIZE_OPTIONS","nonNegativeInteger","value","Number","isFinite","Math","max","trunc","positiveInteger","fallback","resolvePaginationState","state","pageSize","pageSizeMode","totalItems","totalPages","ceil","pageIndex","min","options","pageSizeOptions","length","map","filter","Set","sort","left","right","firstItem","lastItem","paginationCss","paginationId","Pagination","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","fitToPage","fitToPageInactive","fitPageSizeLabel","fitPageSizeTriggerLabel","itemLabel","pageSizeLabel","label","showFirstLastButtons","loading","tableCompact","pageSizeControlId","hasLoaded","componentDidLoad","syncTableCompactObserver","connectedCallback","disconnectedCallback","tableCompactDisconnect","undefined","observeTableCaptionCompact","el","compact","requestPage","resolvedState","dsChange","emit","fitPageSize","resolvedFitPageSize","ariaLabel","previousPageIndex","previousPageSize","previousPageSizeMode","reason","requestPageSize","nextMode","handleKeyDown","event","defaultPrevented","altKey","ctrlKey","metaKey","shiftKey","fromChoiceControl","composedPath","some","node","tagName","includes","key","preventDefault","render","atStart","atEnd","page","announcedRange","announcedPage","pageSizeAriaLabel","String","push","isInactive","h","Host","class","pagination","onKeyDown","as","variant","color","id","size","inputId","ariaLabelledby","triggerLabel","indicator","allowClear","activeFill","hasBorder","onDsChange","stopPropagation","detail","orientation","icon","onDsClick","fontFeature","role"],"sources":["src/wc/components/Pagination/pagination-model.ts","src/wc/components/Pagination/Pagination.css?tag=ds-pagination&encapsulation=scoped","src/wc/components/Pagination/Pagination.tsx"],"sourcesContent":["import type { PaginationPageSizeMode, PaginationState } from './pagination-types';\n\nexport const DEFAULT_PAGE_SIZE_OPTIONS = [25, 50, 100, 200] as const;\n\nexport interface ResolvedPaginationState {\n pageIndex: number;\n pageSize: number;\n pageSizeMode: PaginationPageSizeMode;\n totalItems: number;\n totalPages: number;\n firstItem: number;\n lastItem: number;\n pageSizeOptions: number[];\n}\n\nfunction nonNegativeInteger(value: number): number {\n return Number.isFinite(value) ? Math.max(0, Math.trunc(value)) : 0;\n}\n\nfunction positiveInteger(value: number, fallback: number): number {\n return Number.isFinite(value) && value > 0 ? Math.trunc(value) : fallback;\n}\n\nexport function resolvePaginationState(\n state: Pick<\n PaginationState,\n 'pageIndex' | 'pageSize' | 'pageSizeMode' | 'totalItems' | 'pageSizeOptions'\n >\n): ResolvedPaginationState {\n const pageSize = positiveInteger(state.pageSize, DEFAULT_PAGE_SIZE_OPTIONS[0]);\n const pageSizeMode = state.pageSizeMode === 'fit' ? 'fit' : 'fixed';\n const totalItems = nonNegativeInteger(state.totalItems);\n const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));\n const pageIndex = Math.min(nonNegativeInteger(state.pageIndex), totalPages - 1);\n const options = (\n state.pageSizeOptions?.length ? state.pageSizeOptions : DEFAULT_PAGE_SIZE_OPTIONS\n )\n .map(value => positiveInteger(value, 0))\n .filter(value => value > 0);\n const pageSizeOptions = [\n ...new Set(pageSizeMode === 'fixed' ? [...options, pageSize] : options),\n ].sort((left, right) => left - right);\n const firstItem = totalItems === 0 ? 0 : pageIndex * pageSize + 1;\n const lastItem = totalItems === 0 ? 0 : Math.min(totalItems, firstItem + pageSize - 1);\n\n return {\n pageIndex,\n pageSize,\n pageSizeMode,\n totalItems,\n totalPages,\n firstItem,\n lastItem,\n pageSizeOptions,\n };\n}\n","@import '../../utils/visually-hidden.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n:host::-webkit-scrollbar {\n display: none;\n}\n\n.pagination,\n.pagination__page-size,\n.pagination__navigation {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n.pagination {\n width: max-content;\n min-width: 100%;\n gap: var(--dimension-space-100);\n}\n\n.pagination__page-size,\n.pagination__navigation {\n flex: 0 0 auto;\n}\n\n.pagination__page-size {\n gap: 0;\n}\n\n.pagination__navigation {\n gap: var(--dimension-space-050);\n}\n\n.pagination__page,\n.pagination__label {\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n white-space: nowrap;\n}\n\n.pagination .pagination__page-size-select {\n --ds-select-fg-active: var(--color-foreground-secondary);\n}\n\n.pagination__page {\n justify-content: center;\n min-inline-size: 0;\n padding-inline: var(--dimension-space-100);\n}\n\n.pagination--table-compact .pagination__boundary {\n display: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\nimport { resolvePaginationState } from './pagination-model';\nimport type { PaginationChangeDetail, PaginationPageSizeMode } from './pagination-types';\n\nlet paginationId = 0;\n\n@Component({\n tag: 'ds-pagination',\n styleUrl: 'Pagination.css',\n scoped: true,\n})\nexport class Pagination {\n @Element() el!: HTMLElement;\n\n /** Controlled zero-based page index. */\n @Prop() pageIndex: number = 0;\n /** Controlled number of top-level items on a full page. */\n @Prop() pageSize: number = 25;\n /** Whether pageSize is a fixed choice or a measured Fit snapshot. */\n @Prop() pageSizeMode: PaginationPageSizeMode = 'fixed';\n /** Controlled total number of top-level items across every page. */\n @Prop() totalItems: number = 0;\n /** Available page sizes. Assign arrays through JavaScript. */\n @Prop() pageSizeOptions: number[] = [25, 50, 100, 200];\n /** Include the Fit to page choice. */\n @Prop() fitToPage: boolean = false;\n /** Keep the Fit to page choice visible but unavailable. */\n @Prop() fitToPageInactive: boolean = false;\n /** Effective whole-item capacity to request when Fit is selected. */\n @Prop() fitPageSize: number | undefined;\n /** Full choice-list label for Fit. */\n @Prop() fitPageSizeLabel: string = 'Fit to page';\n /** Compact closed-trigger label while Fit is selected. */\n @Prop() fitPageSizeTriggerLabel: string = 'Fit';\n /** Localized plural noun used by assistive range announcements. */\n @Prop() itemLabel: string = 'items';\n /** Visible page-size control label. */\n @Prop() pageSizeLabel: string = 'Items';\n /** Accessible page-size control label. Defaults to “{pageSizeLabel} per page”. */\n @Prop() pageSizeAriaLabel: string | undefined;\n /** Accessible name for the pagination navigation region. */\n @Prop() label: string = 'Pagination';\n /** Include direct first-page and last-page controls. */\n @Prop() showFirstLastButtons: boolean = false;\n /** Prevent interaction while the owner replaces the current data page. */\n @Prop() loading: boolean = false;\n\n /** Emits the complete next controlled state after a page or page-size request. */\n @Event() dsChange!: EventEmitter<PaginationChangeDetail>;\n\n @State() private tableCompact = false;\n\n private readonly pageSizeControlId = `ds-pagination-${++paginationId}-page-size`;\n private tableCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n\n componentDidLoad(): void {\n this.hasLoaded = true;\n this.syncTableCompactObserver();\n }\n\n connectedCallback(): void {\n if (this.hasLoaded) this.syncTableCompactObserver();\n }\n\n disconnectedCallback(): void {\n this.tableCompactDisconnect?.();\n this.tableCompactDisconnect = undefined;\n }\n\n private syncTableCompactObserver(): void {\n this.tableCompactDisconnect?.();\n this.tableCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.tableCompact !== compact) this.tableCompact = compact;\n });\n }\n\n private requestPage(pageIndex: number): void {\n const state = this.resolvedState;\n if (\n this.loading ||\n pageIndex === state.pageIndex ||\n pageIndex < 0 ||\n pageIndex >= state.totalPages\n ) {\n return;\n }\n this.dsChange.emit({\n pageIndex,\n pageSize: state.pageSize,\n pageSizeMode: state.pageSizeMode,\n totalItems: state.totalItems,\n pageSizeOptions: state.pageSizeOptions,\n fitToPage: this.fitToPage,\n fitToPageInactive: this.fitToPageInactive,\n fitPageSize: this.resolvedFitPageSize,\n fitPageSizeLabel: this.fitPageSizeLabel,\n fitPageSizeTriggerLabel: this.fitPageSizeTriggerLabel,\n itemLabel: this.itemLabel,\n pageSizeLabel: this.pageSizeLabel,\n ariaLabel: this.label,\n showFirstLastButtons: this.showFirstLastButtons,\n previousPageIndex: state.pageIndex,\n previousPageSize: state.pageSize,\n previousPageSizeMode: state.pageSizeMode,\n reason: 'page',\n });\n }\n\n private requestPageSize(value: string | string[]): void {\n if (this.loading || typeof value !== 'string' || (value === 'fit' && this.fitToPageInactive))\n return;\n const state = this.resolvedState;\n const nextMode: PaginationPageSizeMode = value === 'fit' ? 'fit' : 'fixed';\n const pageSize = nextMode === 'fit' ? this.resolvedFitPageSize : Number(value);\n if (!pageSize || (pageSize === state.pageSize && nextMode === state.pageSizeMode)) return;\n this.dsChange.emit({\n pageIndex: 0,\n pageSize: Math.trunc(pageSize),\n pageSizeMode: nextMode,\n totalItems: state.totalItems,\n pageSizeOptions: state.pageSizeOptions,\n fitToPage: this.fitToPage,\n fitToPageInactive: this.fitToPageInactive,\n fitPageSize: this.resolvedFitPageSize,\n fitPageSizeLabel: this.fitPageSizeLabel,\n fitPageSizeTriggerLabel: this.fitPageSizeTriggerLabel,\n itemLabel: this.itemLabel,\n pageSizeLabel: this.pageSizeLabel,\n ariaLabel: this.label,\n showFirstLastButtons: this.showFirstLastButtons,\n previousPageIndex: state.pageIndex,\n previousPageSize: state.pageSize,\n previousPageSizeMode: state.pageSizeMode,\n reason: 'page-size',\n });\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (\n event.defaultPrevented ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n ) {\n return;\n }\n const fromChoiceControl = event\n .composedPath()\n .some(\n node =>\n node instanceof HTMLElement &&\n (node.tagName === 'DS-SELECT' || ['INPUT', 'SELECT', 'TEXTAREA'].includes(node.tagName))\n );\n if (fromChoiceControl || (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight')) return;\n const state = this.resolvedState;\n const pageIndex = event.key === 'ArrowLeft' ? state.pageIndex - 1 : state.pageIndex + 1;\n if (this.loading || pageIndex < 0 || pageIndex >= state.totalPages) return;\n event.preventDefault();\n this.requestPage(pageIndex);\n }\n\n private get resolvedFitPageSize(): number | undefined {\n return Number.isFinite(this.fitPageSize) && Number(this.fitPageSize) > 0\n ? Math.trunc(Number(this.fitPageSize))\n : undefined;\n }\n\n private get resolvedState() {\n return resolvePaginationState({\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n pageSizeMode: this.pageSizeMode,\n totalItems: this.totalItems,\n pageSizeOptions: this.pageSizeOptions,\n });\n }\n\n render() {\n const state = this.resolvedState;\n const atStart = state.pageIndex === 0;\n const atEnd = state.pageIndex === state.totalPages - 1;\n const page = `${state.pageIndex + 1} of ${state.totalPages}`;\n const announcedRange = `${state.firstItem}–${state.lastItem} of ${state.totalItems}`;\n const announcedPage = `Page ${state.pageIndex + 1} of ${state.totalPages}`;\n const pageSizeAriaLabel = this.pageSizeAriaLabel ?? `${this.pageSizeLabel} per page`;\n const options: Array<{ label: string; value: string; isInactive?: boolean }> =\n state.pageSizeOptions.map(value => ({ label: String(value), value: String(value) }));\n if (this.fitToPage) {\n options.push({\n label: this.fitPageSizeLabel,\n value: 'fit',\n isInactive: this.fitToPageInactive || this.resolvedFitPageSize === undefined,\n });\n }\n\n return (\n <Host>\n <nav\n class={{\n pagination: true,\n 'pagination--table-compact': this.tableCompact,\n }}\n aria-label={this.label}\n aria-busy={this.loading ? 'true' : undefined}\n onKeyDown={event => this.handleKeyDown(event)}\n >\n <div class=\"pagination__page-size\">\n <ds-text\n class=\"pagination__label\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n aria-hidden=\"true\"\n >\n {this.pageSizeLabel}:\n </ds-text>\n <span id={`${this.pageSizeControlId}-label`} class=\"ds-visually-hidden\">\n {pageSizeAriaLabel}\n </span>\n <ds-select\n class=\"pagination__page-size-select\"\n size=\"md\"\n inputId={this.pageSizeControlId}\n ariaLabelledby={`${this.pageSizeControlId}-label`}\n options={options}\n value={state.pageSizeMode === 'fit' ? 'fit' : String(state.pageSize)}\n triggerLabel={state.pageSizeMode === 'fit' ? this.fitPageSizeTriggerLabel : undefined}\n indicator=\"up-down\"\n allowClear={false}\n activeFill={false}\n hasBorder={false}\n isInactive={this.loading}\n onDsChange={event => {\n event.stopPropagation();\n this.requestPageSize(event.detail);\n }}\n />\n </div>\n <ds-divider\n class=\"pagination__divider\"\n orientation=\"vertical\"\n length=\"var(--dimension-size-250)\"\n />\n <div class=\"pagination__navigation\">\n {this.showFirstLastButtons ? (\n <ds-button-unfilled\n class=\"pagination__boundary\"\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronLeftDouble\"\n ariaLabel=\"First page\"\n hasBorder={false}\n isInactive={this.loading || atStart}\n onDsClick={() => this.requestPage(0)}\n />\n ) : null}\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronLeft\"\n ariaLabel=\"Previous page\"\n hasBorder={false}\n isInactive={this.loading || atStart}\n onDsClick={() => this.requestPage(state.pageIndex - 1)}\n />\n <ds-text\n class=\"pagination__page\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n fontFeature=\"tabular-nums\"\n >\n {page}\n </ds-text>\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronRight\"\n ariaLabel=\"Next page\"\n hasBorder={false}\n isInactive={this.loading || atEnd}\n onDsClick={() => this.requestPage(state.pageIndex + 1)}\n />\n {this.showFirstLastButtons ? (\n <ds-button-unfilled\n class=\"pagination__boundary\"\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronRightDouble\"\n ariaLabel=\"Last page\"\n hasBorder={false}\n isInactive={this.loading || atEnd}\n onDsClick={() => this.requestPage(state.totalPages - 1)}\n />\n ) : null}\n </div>\n <span class=\"ds-visually-hidden\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcedRange} {this.itemLabel}. {announcedPage}.\n </span>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DEFAULT_PAGE_SIZE_OPTIONS","nonNegativeInteger","value","Number","isFinite","Math","max","trunc","positiveInteger","fallback","resolvePaginationState","state","pageSize","pageSizeMode","totalItems","totalPages","ceil","pageIndex","min","options","pageSizeOptions","length","map","filter","Set","sort","left","right","firstItem","lastItem","paginationCss","paginationId","Pagination","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","fitToPage","fitToPageInactive","fitPageSizeLabel","fitPageSizeTriggerLabel","itemLabel","pageSizeLabel","label","showFirstLastButtons","loading","tableCompact","pageSizeControlId","hasLoaded","componentDidLoad","syncTableCompactObserver","connectedCallback","disconnectedCallback","tableCompactDisconnect","undefined","observeTableCaptionCompact","el","compact","requestPage","resolvedState","dsChange","emit","fitPageSize","resolvedFitPageSize","ariaLabel","previousPageIndex","previousPageSize","previousPageSizeMode","reason","requestPageSize","nextMode","handleKeyDown","event","defaultPrevented","altKey","ctrlKey","metaKey","shiftKey","fromChoiceControl","composedPath","some","node","tagName","includes","key","preventDefault","render","atStart","atEnd","page","announcedRange","announcedPage","pageSizeAriaLabel","String","push","isInactive","h","Host","class","pagination","onKeyDown","as","variant","color","id","size","inputId","ariaLabelledby","triggerLabel","indicator","allowClear","activeFill","hasBorder","onDsChange","stopPropagation","detail","orientation","icon","onDsClick","fontFeature","role"],"sources":["src/wc/components/Pagination/pagination-model.ts","src/wc/components/Pagination/Pagination.css?tag=ds-pagination&encapsulation=scoped","src/wc/components/Pagination/Pagination.tsx"],"sourcesContent":["import type { PaginationPageSizeMode, PaginationState } from './pagination-types';\n\nexport const DEFAULT_PAGE_SIZE_OPTIONS = [25, 50, 100, 200] as const;\n\nexport interface ResolvedPaginationState {\n pageIndex: number;\n pageSize: number;\n pageSizeMode: PaginationPageSizeMode;\n totalItems: number;\n totalPages: number;\n firstItem: number;\n lastItem: number;\n pageSizeOptions: number[];\n}\n\nfunction nonNegativeInteger(value: number): number {\n return Number.isFinite(value) ? Math.max(0, Math.trunc(value)) : 0;\n}\n\nfunction positiveInteger(value: number, fallback: number): number {\n return Number.isFinite(value) && value > 0 ? Math.trunc(value) : fallback;\n}\n\nexport function resolvePaginationState(\n state: Pick<\n PaginationState,\n 'pageIndex' | 'pageSize' | 'pageSizeMode' | 'totalItems' | 'pageSizeOptions'\n >\n): ResolvedPaginationState {\n const pageSize = positiveInteger(state.pageSize, DEFAULT_PAGE_SIZE_OPTIONS[0]);\n const pageSizeMode = state.pageSizeMode === 'fit' ? 'fit' : 'fixed';\n const totalItems = nonNegativeInteger(state.totalItems);\n const totalPages = Math.max(1, Math.ceil(totalItems / pageSize));\n const pageIndex = Math.min(nonNegativeInteger(state.pageIndex), totalPages - 1);\n const options = (\n state.pageSizeOptions?.length ? state.pageSizeOptions : DEFAULT_PAGE_SIZE_OPTIONS\n )\n .map(value => positiveInteger(value, 0))\n .filter(value => value > 0);\n const pageSizeOptions = [\n ...new Set(pageSizeMode === 'fixed' ? [...options, pageSize] : options),\n ].sort((left, right) => left - right);\n const firstItem = totalItems === 0 ? 0 : pageIndex * pageSize + 1;\n const lastItem = totalItems === 0 ? 0 : Math.min(totalItems, firstItem + pageSize - 1);\n\n return {\n pageIndex,\n pageSize,\n pageSizeMode,\n totalItems,\n totalPages,\n firstItem,\n lastItem,\n pageSizeOptions,\n };\n}\n","@import '../../utils/visually-hidden.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n:host::-webkit-scrollbar {\n display: none;\n}\n\n.pagination,\n.pagination__page-size,\n.pagination__navigation {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n.pagination {\n width: max-content;\n min-width: 100%;\n gap: var(--dimension-space-100);\n}\n\n.pagination__page-size,\n.pagination__navigation {\n flex: 0 0 auto;\n}\n\n.pagination__page-size {\n gap: 0;\n}\n\n.pagination__navigation {\n gap: var(--dimension-space-050);\n}\n\n.pagination__page,\n.pagination__label {\n display: inline-flex;\n align-items: center;\n flex: 0 0 auto;\n white-space: nowrap;\n}\n\n.pagination .pagination__page-size-select {\n --ds-select-fg-active: var(--color-foreground-secondary);\n}\n\n.pagination__page {\n justify-content: center;\n min-inline-size: 0;\n padding-inline: var(--dimension-space-100);\n}\n\n.pagination--table-compact .pagination__boundary {\n display: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\nimport { resolvePaginationState } from './pagination-model';\nimport type { PaginationChangeDetail, PaginationPageSizeMode } from './pagination-types';\n\nlet paginationId = 0;\n\n@Component({\n tag: 'ds-pagination',\n styleUrl: 'Pagination.css',\n scoped: true,\n})\nexport class Pagination {\n @Element() el!: HTMLElement;\n\n /** Controlled zero-based page index. */\n @Prop() pageIndex: number = 0;\n /** Controlled number of top-level items on a full page. */\n @Prop() pageSize: number = 25;\n /** Whether pageSize is a fixed choice or a measured Fit snapshot. */\n @Prop() pageSizeMode: PaginationPageSizeMode = 'fixed';\n /** Controlled total number of top-level items across every page. */\n @Prop() totalItems: number = 0;\n /** Available page sizes. Assign arrays through JavaScript. */\n @Prop() pageSizeOptions: number[] = [25, 50, 100, 200];\n /** Include the Fit to page choice. */\n @Prop() fitToPage: boolean = false;\n /** Keep the Fit to page choice visible but unavailable. */\n @Prop() fitToPageInactive: boolean = false;\n /** Effective whole-item capacity to request when Fit is selected. */\n @Prop() fitPageSize: number | undefined;\n /** Full choice-list label for Fit. */\n @Prop() fitPageSizeLabel: string = 'Fit to page';\n /** Compact closed-trigger label while Fit is selected. */\n @Prop() fitPageSizeTriggerLabel: string = 'Fit';\n /** Localized plural noun used by assistive range announcements. */\n @Prop() itemLabel: string = 'items';\n /** Visible page-size control label. */\n @Prop() pageSizeLabel: string = 'Items';\n /** Accessible page-size control label. Defaults to “{pageSizeLabel} per page”. */\n @Prop() pageSizeAriaLabel: string | undefined;\n /** Accessible name for the pagination navigation region. */\n @Prop() label: string = 'Pagination';\n /** Include direct first-page and last-page controls. */\n @Prop() showFirstLastButtons: boolean = false;\n /** Prevent interaction while the owner replaces the current data page. */\n @Prop() loading: boolean = false;\n\n /** Emits the complete next controlled state after a page or page-size request. */\n @Event() dsChange!: EventEmitter<PaginationChangeDetail>;\n\n @State() private tableCompact = false;\n\n private readonly pageSizeControlId = `ds-pagination-${++paginationId}-page-size`;\n private tableCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n\n componentDidLoad(): void {\n this.hasLoaded = true;\n this.syncTableCompactObserver();\n }\n\n connectedCallback(): void {\n if (this.hasLoaded) this.syncTableCompactObserver();\n }\n\n disconnectedCallback(): void {\n this.tableCompactDisconnect?.();\n this.tableCompactDisconnect = undefined;\n }\n\n private syncTableCompactObserver(): void {\n this.tableCompactDisconnect?.();\n this.tableCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.tableCompact !== compact) this.tableCompact = compact;\n });\n }\n\n private requestPage(pageIndex: number): void {\n const state = this.resolvedState;\n if (\n this.loading ||\n pageIndex === state.pageIndex ||\n pageIndex < 0 ||\n pageIndex >= state.totalPages\n ) {\n return;\n }\n this.dsChange.emit({\n pageIndex,\n pageSize: state.pageSize,\n pageSizeMode: state.pageSizeMode,\n totalItems: state.totalItems,\n pageSizeOptions: state.pageSizeOptions,\n fitToPage: this.fitToPage,\n fitToPageInactive: this.fitToPageInactive,\n fitPageSize: this.resolvedFitPageSize,\n fitPageSizeLabel: this.fitPageSizeLabel,\n fitPageSizeTriggerLabel: this.fitPageSizeTriggerLabel,\n itemLabel: this.itemLabel,\n pageSizeLabel: this.pageSizeLabel,\n ariaLabel: this.label,\n showFirstLastButtons: this.showFirstLastButtons,\n previousPageIndex: state.pageIndex,\n previousPageSize: state.pageSize,\n previousPageSizeMode: state.pageSizeMode,\n reason: 'page',\n });\n }\n\n private requestPageSize(value: string | string[]): void {\n if (this.loading || typeof value !== 'string' || (value === 'fit' && this.fitToPageInactive))\n return;\n const state = this.resolvedState;\n const nextMode: PaginationPageSizeMode = value === 'fit' ? 'fit' : 'fixed';\n const pageSize = nextMode === 'fit' ? this.resolvedFitPageSize : Number(value);\n if (!pageSize || (pageSize === state.pageSize && nextMode === state.pageSizeMode)) return;\n this.dsChange.emit({\n pageIndex: 0,\n pageSize: Math.trunc(pageSize),\n pageSizeMode: nextMode,\n totalItems: state.totalItems,\n pageSizeOptions: state.pageSizeOptions,\n fitToPage: this.fitToPage,\n fitToPageInactive: this.fitToPageInactive,\n fitPageSize: this.resolvedFitPageSize,\n fitPageSizeLabel: this.fitPageSizeLabel,\n fitPageSizeTriggerLabel: this.fitPageSizeTriggerLabel,\n itemLabel: this.itemLabel,\n pageSizeLabel: this.pageSizeLabel,\n ariaLabel: this.label,\n showFirstLastButtons: this.showFirstLastButtons,\n previousPageIndex: state.pageIndex,\n previousPageSize: state.pageSize,\n previousPageSizeMode: state.pageSizeMode,\n reason: 'page-size',\n });\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (\n event.defaultPrevented ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n ) {\n return;\n }\n const fromChoiceControl = event\n .composedPath()\n .some(\n node =>\n node instanceof HTMLElement &&\n (node.tagName === 'DS-SELECT' || ['INPUT', 'SELECT', 'TEXTAREA'].includes(node.tagName))\n );\n if (fromChoiceControl || (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight')) return;\n const state = this.resolvedState;\n const pageIndex = event.key === 'ArrowLeft' ? state.pageIndex - 1 : state.pageIndex + 1;\n if (this.loading || pageIndex < 0 || pageIndex >= state.totalPages) return;\n event.preventDefault();\n this.requestPage(pageIndex);\n }\n\n private get resolvedFitPageSize(): number | undefined {\n return Number.isFinite(this.fitPageSize) && Number(this.fitPageSize) > 0\n ? Math.trunc(Number(this.fitPageSize))\n : undefined;\n }\n\n private get resolvedState() {\n return resolvePaginationState({\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n pageSizeMode: this.pageSizeMode,\n totalItems: this.totalItems,\n pageSizeOptions: this.pageSizeOptions,\n });\n }\n\n render() {\n const state = this.resolvedState;\n const atStart = state.pageIndex === 0;\n const atEnd = state.pageIndex === state.totalPages - 1;\n const page = `${state.pageIndex + 1} of ${state.totalPages}`;\n const announcedRange = `${state.firstItem}–${state.lastItem} of ${state.totalItems}`;\n const announcedPage = `Page ${state.pageIndex + 1} of ${state.totalPages}`;\n const pageSizeAriaLabel = this.pageSizeAriaLabel ?? `${this.pageSizeLabel} per page`;\n const options: Array<{ label: string; value: string; isInactive?: boolean }> =\n state.pageSizeOptions.map(value => ({ label: String(value), value: String(value) }));\n if (this.fitToPage) {\n options.push({\n label: this.fitPageSizeLabel,\n value: 'fit',\n isInactive: this.fitToPageInactive || this.resolvedFitPageSize === undefined,\n });\n }\n\n return (\n <Host>\n <nav\n class={{\n pagination: true,\n 'pagination--table-compact': this.tableCompact,\n }}\n aria-label={this.label}\n aria-busy={this.loading ? 'true' : undefined}\n onKeyDown={event => this.handleKeyDown(event)}\n >\n <div class=\"pagination__page-size\">\n <ds-text\n class=\"pagination__label\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n aria-hidden=\"true\"\n >\n {this.pageSizeLabel}:\n </ds-text>\n <span id={`${this.pageSizeControlId}-label`} class=\"ds-visually-hidden\">\n {pageSizeAriaLabel}\n </span>\n <ds-select\n class=\"pagination__page-size-select\"\n size=\"md\"\n inputId={this.pageSizeControlId}\n ariaLabelledby={`${this.pageSizeControlId}-label`}\n options={options}\n value={state.pageSizeMode === 'fit' ? 'fit' : String(state.pageSize)}\n triggerLabel={state.pageSizeMode === 'fit' ? this.fitPageSizeTriggerLabel : undefined}\n indicator=\"up-down\"\n allowClear={false}\n activeFill={false}\n hasBorder={false}\n isInactive={this.loading}\n onDsChange={event => {\n event.stopPropagation();\n this.requestPageSize(event.detail);\n }}\n />\n </div>\n <ds-divider\n class=\"pagination__divider\"\n orientation=\"vertical\"\n length=\"var(--dimension-size-250)\"\n />\n <div class=\"pagination__navigation\">\n {this.showFirstLastButtons ? (\n <ds-button-unfilled\n class=\"pagination__boundary\"\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronLeftDouble\"\n ariaLabel=\"First page\"\n hasBorder={false}\n isInactive={this.loading || atStart}\n onDsClick={() => this.requestPage(0)}\n />\n ) : null}\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronLeft\"\n ariaLabel=\"Previous page\"\n hasBorder={false}\n isInactive={this.loading || atStart}\n onDsClick={() => this.requestPage(state.pageIndex - 1)}\n />\n <ds-text\n class=\"pagination__page\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n fontFeature=\"tabular-nums\"\n >\n {page}\n </ds-text>\n <ds-button-unfilled\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronRight\"\n ariaLabel=\"Next page\"\n hasBorder={false}\n isInactive={this.loading || atEnd}\n onDsClick={() => this.requestPage(state.pageIndex + 1)}\n />\n {this.showFirstLastButtons ? (\n <ds-button-unfilled\n class=\"pagination__boundary\"\n variant=\"icon\"\n size=\"md\"\n icon=\"ChevronRightDouble\"\n ariaLabel=\"Last page\"\n hasBorder={false}\n isInactive={this.loading || atEnd}\n onDsClick={() => this.requestPage(state.totalPages - 1)}\n />\n ) : null}\n </div>\n <span class=\"ds-visually-hidden\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcedRange} {this.itemLabel}. {announcedPage}.\n </span>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=899;function n(n){return n>0&&n<=e}function r(e){return e.contentBoxSize[0]?.inlineSize??e.contentRect.width}function t(e,t){if(typeof ResizeObserver==="undefined"){t(false);return()=>undefined}const s=e.closest("ds-table")??e.closest("ds-data-toolbar");if(!s){t(false);return()=>undefined}const f=e=>{if(e<=0)return;t(n(e))};const o=new ResizeObserver((e=>{f(e[0]?r(e[0]):0)}));o.observe(s);f(s.clientWidth);return()=>o.disconnect()}export{t as o};
|
|
2
|
+
//# sourceMappingURL=p-Dkh_40bl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TABLE_CAPTION_COMPACT_MAX_PX","isTableCaptionCompact","width","tableCaptionInlineSize","entry","contentBoxSize","inlineSize","contentRect","observeTableCaptionCompact","host","onChange","ResizeObserver","undefined","owner","closest","sync","observer","entries","observe","clientWidth","disconnect"],"sources":["src/wc/utils/table-caption-compact.ts"],"sourcesContent":["/** Shared compact breakpoint for table captions and standalone data toolbars. */\nexport const TABLE_CAPTION_COMPACT_MAX_PX = 899;\n\nexport function isTableCaptionCompact(width: number): boolean {\n return width > 0 && width <= TABLE_CAPTION_COMPACT_MAX_PX;\n}\n\nexport function tableCaptionInlineSize(entry: ResizeObserverEntry): number {\n return entry.contentBoxSize[0]?.inlineSize ?? entry.contentRect.width;\n}\n\nexport function observeTableCaptionCompact(\n host: HTMLElement,\n onChange: (compact: boolean) => void\n): () => void {\n if (typeof ResizeObserver === 'undefined') {\n onChange(false);\n return () => undefined;\n }\n\n // Table captions own the complete control row; their slotted toolbar uses\n // display: contents and has no measurable box. Standalone toolbars own theirs.\n const owner = host.closest('ds-table') ?? host.closest('ds-data-toolbar');\n if (!owner) {\n onChange(false);\n return () => undefined;\n }\n\n const sync = (width: number) => {\n if (width <= 0) return;\n onChange(isTableCaptionCompact(width));\n };\n\n const observer = new ResizeObserver(entries => {\n sync(entries[0] ? tableCaptionInlineSize(entries[0]) : 0);\n });\n observer.observe(owner);\n sync(owner.clientWidth);\n return () => observer.disconnect();\n}\n"],"mappings":"AACO,MAAMA,EAA+B,IAEtC,SAAUC,EAAsBC,GACpC,OAAOA,EAAQ,GAAKA,GAASF,CAC/B,CAEM,SAAUG,EAAuBC,GACrC,OAAOA,EAAMC,eAAe,IAAIC,YAAcF,EAAMG,YAAYL,KAClE,CAEM,SAAUM,EACdC,EACAC,GAEA,UAAWC,iBAAmB,YAAa,CACzCD,EAAS,OACT,MAAO,IAAME,S,CAKf,MAAMC,EAAQJ,EAAKK,QAAQ,aAAeL,EAAKK,QAAQ,mBACvD,IAAKD,EAAO,CACVH,EAAS,OACT,MAAO,IAAME,S,CAGf,MAAMG,EAAQb,IACZ,GAAIA,GAAS,EAAG,OAChBQ,EAAST,EAAsBC,GAAO,EAGxC,MAAMc,EAAW,IAAIL,gBAAeM,IAClCF,EAAKE,EAAQ,GAAKd,EAAuBc,EAAQ,IAAM,EAAE,IAE3DD,EAASE,QAAQL,GACjBE,EAAKF,EAAMM,aACX,MAAO,IAAMH,EAASI,YACxB,Q","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{i as e}from"./p-DuCfCvPs.js";const n="direction:asc";const t="direction:desc";const i="field:";function r(n){const t=[];const i=new Set;for(const r of n){if(e(r)||!r.sortable)continue;const n=r.segments?.filter((e=>e.sortKey.trim()))??[];if(n.length>0){for(const e of n){if(i.has(e.sortKey))continue;i.add(e.sortKey);t.push({id:e.sortKey,label:e.dataLabel?.trim()||e.label.trim()||e.sortKey})}continue}if(i.has(r.id))continue;i.add(r.id);t.push({id:r.id,label:r.dataLabel?.trim()||r.label.trim()||r.accessibleLabel?.trim()||r.id})}return t}function c(e,c){const o=r(e);return[{header:"Data",items:o.map((e=>({label:e.label,value:`${i}${encodeURIComponent(e.id)}`,isSelected:c?.fieldId===e.id})))},{header:"Order",items:[{label:"Ascending",value:n,icon:"ArrowUp",isSelected:c?.direction==="asc"},{label:"Descending",value:t,icon:"ArrowDown",isSelected:c?.direction==="desc"}]}]}function o(e,n){if(e===n)return true;if(!e||!n)return false;return e.fieldId===n.fieldId&&e.direction===n.direction}function s(e,c,o){const s=r(e);if(s.length===0)return c??null;if(o.value===n||o.value===t){const e=o.value===n?"asc":"desc";const t=s.some((e=>e.id===c?.fieldId))?c.fieldId:s[0].id;return{fieldId:t,direction:e}}if(!o.value?.startsWith(i))return c??null;let l;try{l=decodeURIComponent(o.value.slice(i.length))}catch{return c??null}if(!s.some((e=>e.id===l)))return c??null;if(c?.fieldId===l)return c??null;return{fieldId:l,direction:c?.direction??"asc"}}export{r as a,o as b,c as d,s as n};
|
|
2
|
+
//# sourceMappingURL=p-DlCLfwP4.js.map
|