@ds-mo/ui 14.35.0 → 15.0.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 +5733 -4656
- package/dist/angular/ds-button-inverted.d.ts +17 -0
- package/dist/angular/ds-button-inverted.js +46 -0
- package/dist/angular/ds-calendar.d.ts +15 -0
- package/dist/angular/ds-calendar.js +43 -0
- package/dist/angular/ds-conversation-list.d.ts +1 -1
- package/dist/angular/ds-conversation-list.js +3 -4
- package/dist/angular/ds-data-customize.d.ts +18 -0
- package/dist/angular/ds-data-customize.js +46 -0
- package/dist/angular/ds-data-filter.d.ts +50 -0
- package/dist/angular/{ds-table-filter.js → ds-data-filter.js} +10 -10
- package/dist/angular/ds-data-group.d.ts +29 -0
- package/dist/angular/{ds-table-group.js → ds-data-group.js} +10 -10
- package/dist/angular/ds-data-preferences.d.ts +39 -0
- package/dist/angular/{ds-table-preferences.js → ds-data-preferences.js} +15 -15
- package/dist/angular/ds-data-saved-views.d.ts +49 -0
- package/dist/angular/{ds-table-saved-views.js → ds-data-saved-views.js} +10 -10
- package/dist/angular/ds-data-search.d.ts +20 -0
- package/dist/angular/{ds-table-search.js → ds-data-search.js} +12 -12
- package/dist/angular/ds-data-sort.d.ts +16 -0
- package/dist/angular/{ds-table-sort.js → ds-data-sort.js} +12 -12
- package/dist/angular/ds-data-toolbar.d.ts +12 -0
- package/dist/angular/{ds-table-toolbar.js → ds-data-toolbar.js} +10 -10
- package/dist/angular/ds-field.d.ts +1 -1
- package/dist/angular/ds-field.js +1 -1
- package/dist/angular/ds-input-date.d.ts +15 -0
- package/dist/angular/ds-input-date.js +43 -0
- package/dist/angular/ds-input-time.d.ts +15 -0
- package/dist/angular/ds-input-time.js +43 -0
- package/dist/angular/ds-input.d.ts +1 -1
- package/dist/angular/ds-input.js +3 -3
- package/dist/angular/ds-select.d.ts +1 -1
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-table.d.ts +7 -7
- package/dist/angular/ds-table.js +6 -6
- package/dist/angular/ds-time-picker.d.ts +15 -0
- package/dist/angular/ds-time-picker.js +43 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +13 -7
- package/dist/angular/proxies.d.ts +13 -7
- package/dist/angular/proxies.js +13 -7
- package/dist/angular/text-value-accessor.d.ts +1 -1
- package/dist/angular/text-value-accessor.js +2 -2
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-avatar.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.d.ts +11 -0
- package/dist/components/ds-button-inverted.js +2 -0
- package/dist/components/ds-button-inverted.js.map +1 -0
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/{ds-table-search.d.ts → ds-calendar.d.ts} +4 -4
- package/dist/components/ds-calendar.js +2 -0
- package/dist/components/ds-card-action-center.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-navigation.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-card-settings-scope.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-conversation-list.js.map +1 -1
- package/dist/components/ds-data-customize.d.ts +11 -0
- package/dist/components/ds-data-customize.js +2 -0
- package/dist/components/ds-data-customize.js.map +1 -0
- package/dist/components/{ds-table-group.d.ts → ds-data-filter.d.ts} +4 -4
- package/dist/components/ds-data-filter.js +2 -0
- package/dist/components/ds-data-filter.js.map +1 -0
- package/dist/components/{ds-table-sort.d.ts → ds-data-group.d.ts} +4 -4
- package/dist/components/ds-data-group.js +2 -0
- package/dist/components/ds-data-group.js.map +1 -0
- package/dist/components/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +4 -4
- package/dist/components/ds-data-preferences.js +2 -0
- package/dist/components/ds-data-preferences.js.map +1 -0
- package/dist/components/ds-data-saved-views.d.ts +11 -0
- package/dist/components/ds-data-saved-views.js +2 -0
- package/dist/components/ds-data-saved-views.js.map +1 -0
- package/dist/components/ds-data-search.d.ts +11 -0
- package/dist/components/ds-data-search.js +2 -0
- package/dist/components/ds-data-search.js.map +1 -0
- package/dist/components/ds-data-sort.d.ts +11 -0
- package/dist/components/ds-data-sort.js +2 -0
- package/dist/components/ds-data-sort.js.map +1 -0
- package/dist/components/{ds-table-filter.d.ts → ds-data-toolbar.d.ts} +4 -4
- package/dist/components/ds-data-toolbar.js +2 -0
- package/dist/components/ds-data-toolbar.js.map +1 -0
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-icon.js +1 -1
- package/dist/components/ds-input-date.d.ts +11 -0
- package/dist/components/ds-input-date.js +2 -0
- package/dist/components/ds-input-date.js.map +1 -0
- package/dist/components/ds-input-time.d.ts +11 -0
- package/dist/components/ds-input-time.js +2 -0
- package/dist/components/ds-input-time.js.map +1 -0
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-bubble.js.map +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-composer.js.map +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table.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-textarea.js.map +1 -1
- package/dist/components/ds-time-picker.d.ts +11 -0
- package/dist/components/ds-time-picker.js +2 -0
- package/dist/components/ds-time-picker.js.map +1 -0
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/p-0FYD2bev.js +2 -0
- package/dist/components/p-0FYD2bev.js.map +1 -0
- package/dist/components/p-0qY_HDId.js +2 -0
- package/dist/components/{p-D_u8WhlU.js.map → p-0qY_HDId.js.map} +1 -1
- package/dist/components/{p-BQsVI_vO.js → p-5URekSny.js} +2 -2
- package/dist/components/{p-eo_pmPqp.js → p-7V1AhetH.js} +2 -2
- package/dist/components/{p-yZRXPHDe.js → p-8yBdCXCn.js} +2 -2
- package/dist/components/p-BKZdqJQB.js +2 -0
- package/dist/components/p-BKZdqJQB.js.map +1 -0
- package/dist/components/p-BYrBU_U9.js +2 -0
- package/dist/components/p-BYrBU_U9.js.map +1 -0
- package/dist/components/{p-D44g2Kw1.js → p-BciTtTwx.js} +2 -2
- package/dist/components/p-BciTtTwx.js.map +1 -0
- package/dist/components/{p-CZOiTaNa.js → p-BeNa6tw5.js} +2 -2
- package/dist/components/{p-CZOiTaNa.js.map → p-BeNa6tw5.js.map} +1 -1
- package/dist/components/p-BgQMEHRa.js +2 -0
- package/dist/components/{p-CwqFJMvP.js.map → p-BgQMEHRa.js.map} +1 -1
- package/dist/components/{p-BQaO7cg_.js → p-BhJXmuRA.js} +2 -2
- package/dist/components/{p-n68x-ZKp.js → p-Bm7rqs3C.js} +2 -2
- package/dist/components/{p-DdspY23v.js → p-Bn8I7iw6.js} +2 -2
- package/dist/components/{p-BnWxbhFP.js → p-Bpd6YCo4.js} +2 -2
- package/dist/components/{p-B-9fdIWv.js → p-C-3YqeTb.js} +2 -2
- package/dist/components/{p-umAf0fBn.js → p-CD4DZPy_.js} +2 -2
- package/dist/components/p-CElUM-xU.js +2 -0
- package/dist/components/p-CElUM-xU.js.map +1 -0
- package/dist/components/{p-CuwopElg.js → p-CGidq1iC.js} +2 -2
- package/dist/components/p-CNxvnQ6A.js +2 -0
- package/dist/components/p-CNxvnQ6A.js.map +1 -0
- package/dist/components/{p-CI7VfYC3.js → p-CUcUHwI3.js} +2 -2
- package/dist/components/p-CYzFfFcH.js +2 -0
- package/dist/components/{p-BINSI_KF.js.map → p-CYzFfFcH.js.map} +1 -1
- package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
- package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
- package/dist/components/p-CdgOLWX9.js +2 -0
- package/dist/components/p-CdgOLWX9.js.map +1 -0
- package/dist/components/{p-BcdHgPi5.js → p-CeXf9-X3.js} +2 -2
- package/dist/components/{p-CSnsz3Eb.js → p-CiH4GG6r.js} +2 -2
- package/dist/components/{p-y06IxxoN.js → p-CiJ1WR11.js} +2 -2
- package/dist/components/p-CmexIVnE.js +2 -0
- package/dist/components/{p-N5SHSVo2.js.map → p-CmexIVnE.js.map} +1 -1
- package/dist/components/{p-BmFeeR4q.js → p-CqW2eyiF.js} +2 -2
- package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
- package/dist/components/{p-CqlBlv55.js → p-CzIpquvw.js} +2 -2
- package/dist/components/{p-DC69DgAR.js → p-D0y7Sja6.js} +2 -2
- package/dist/components/{p-Cwz9TPVS.js → p-D1vQGJzc.js} +2 -2
- package/dist/components/{p-Cwz9TPVS.js.map → p-D1vQGJzc.js.map} +1 -1
- package/dist/components/{p-C7CZ9pnP.js → p-D6Wl3dRO.js} +2 -2
- package/dist/components/{p-BPhbwXOv.js → p-D922f6Tb.js} +2 -2
- package/dist/components/{p-beRFLHbB.js → p-DHICPS4n.js} +2 -2
- package/dist/components/{p-omPm8_vx.js → p-DOAybCp0.js} +2 -2
- package/dist/components/{p-DEGNrPLe.js → p-DVINzOoK.js} +2 -2
- package/dist/components/{p-DEGNrPLe.js.map → p-DVINzOoK.js.map} +1 -1
- package/dist/components/p-DVOjjuXc.js +2 -0
- package/dist/components/p-DVOjjuXc.js.map +1 -0
- package/dist/components/p-Di5FH7eh.js +2 -0
- package/dist/components/p-Di5FH7eh.js.map +1 -0
- package/dist/components/p-DjkUFlDW.js +2 -0
- package/dist/components/p-DjkUFlDW.js.map +1 -0
- package/dist/components/{p-BnzsBNUY.js → p-Dn9QHL4O.js} +2 -2
- package/dist/components/{p-DGzn4k4h.js → p-Do2FJd1y.js} +2 -2
- package/dist/components/{p-DTDLlinw.js → p-DpoTwJAR.js} +2 -2
- package/dist/components/{p-Dk-8Ju0Q.js → p-Dpr2y6_S.js} +2 -2
- package/dist/components/{p-Dk-8Ju0Q.js.map → p-Dpr2y6_S.js.map} +1 -1
- package/dist/components/p-Dw9sE6Iw.js +2 -0
- package/dist/components/p-Dw9sE6Iw.js.map +1 -0
- package/dist/components/{p-CLGtPE0K.js → p-DwbcNDJF.js} +2 -2
- package/dist/components/p-Dzndkdx5.js +2 -0
- package/dist/components/{p-xHGqrz_p.js.map → p-Dzndkdx5.js.map} +1 -1
- package/dist/components/{p-C8ek-1SP.js → p-E5W27Fu_.js} +2 -2
- package/dist/components/{p-mpk_Mm8_.js → p-FIBCluwV.js} +2 -2
- package/dist/components/{p-DQQFN2sw.js → p-IEq_06J0.js} +2 -2
- package/dist/components/{p-DQQFN2sw.js.map → p-IEq_06J0.js.map} +1 -1
- package/dist/components/{p-CE540WZ7.js → p-MG4lcN0D.js} +2 -2
- package/dist/components/p-Nc76seSq.js +2 -0
- package/dist/components/p-Nc76seSq.js.map +1 -0
- package/dist/components/{p-DtLQIMsa.js → p-ZhP2tVmM.js} +2 -2
- package/dist/components/p-aD5cw_m2.js +2 -0
- package/dist/components/p-aD5cw_m2.js.map +1 -0
- package/dist/components/p-etifxiDc.js +2 -0
- package/dist/components/{p-beCz9OnD.js.map → p-etifxiDc.js.map} +1 -1
- package/dist/components/p-kDZ0sEII.js +2 -0
- package/dist/components/p-kDZ0sEII.js.map +1 -0
- package/dist/components/{p-BPlWEidl.js → p-ljbw3UMZ.js} +2 -2
- package/dist/components/{p-DZ58Sg5a.js → p-vfCu7XSc.js} +2 -2
- package/dist/components/p-vfCu7XSc.js.map +1 -0
- package/dist/components/{p-DFjIBS5B.js → p-xdmJCPCg.js} +2 -2
- package/dist/components/{p-CAxDdYjh.js → p-xtGGIZmU.js} +2 -2
- package/dist/docs/components.json +18102 -14568
- package/dist/lib/components/Icon/flag-icon-catalog.d.ts +2 -0
- package/dist/lib/components/Icon/icon-cache.d.ts +36 -4
- package/dist/lib/components/Icon/map-icon-catalog.d.ts +2 -0
- package/dist/lib/shell/index.js +2 -2
- package/dist/lib/shell/index.js.map +1 -1
- package/dist/lib/utils/button-render.d.ts +1 -1
- package/dist/lib/utils/clock-time.d.ts +22 -0
- package/dist/lib/utils/date-filter-value.d.ts +4 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.js +201 -5
- package/dist/lib/utils/index.js.map +4 -4
- package/dist/mcp-data/registry/agent-activity.json +2 -2
- package/dist/mcp-data/registry/agent-questionnaire.json +2 -2
- 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 +2 -2
- 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 +3 -3
- 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 +580 -0
- package/dist/mcp-data/registry/button-unfilled.json +1 -1
- package/dist/mcp-data/registry/calendar.json +273 -0
- 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 +5 -3
- 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.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 +10 -32
- package/dist/mcp-data/registry/data-customize.json +374 -0
- package/dist/mcp-data/registry/{table-filter.json → data-filter.json} +33 -33
- package/dist/mcp-data/registry/data-group.json +358 -0
- package/dist/mcp-data/registry/data-preferences.json +566 -0
- package/dist/mcp-data/registry/data-saved-views.json +433 -0
- package/dist/mcp-data/registry/data-search.json +367 -0
- package/dist/mcp-data/registry/data-sort.json +254 -0
- package/dist/mcp-data/registry/data-toolbar.json +181 -0
- 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 +20 -15
- package/dist/mcp-data/registry/filter-menu.json +7 -11
- package/dist/mcp-data/registry/icon.json +13 -7
- package/dist/mcp-data/registry/input-date.json +516 -0
- package/dist/mcp-data/registry/input-time.json +535 -0
- package/dist/mcp-data/registry/input.json +57 -9
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/dist/mcp-data/registry/modal.json +1 -1
- 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 +3 -3
- package/dist/mcp-data/registry/paper-texture.json +1 -1
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +5911 -4816
- 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.json +64 -8
- 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 +1 -1
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +1 -1
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table.json +71 -71
- 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 +3 -3
- package/dist/mcp-data/registry/time-picker.json +259 -0
- 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 +13 -7
- package/dist/react/components.js +13 -7
- package/dist/react/ds-button-inverted.d.ts +13 -0
- package/dist/react/ds-button-inverted.js +15 -0
- package/dist/react/ds-calendar.d.ts +12 -0
- package/dist/react/ds-calendar.js +12 -0
- package/dist/react/ds-data-customize.d.ts +13 -0
- package/dist/react/ds-data-customize.js +15 -0
- package/dist/react/ds-data-filter.d.ts +18 -0
- package/dist/react/{ds-table-filter.js → ds-data-filter.js} +5 -5
- package/dist/react/ds-data-group.d.ts +14 -0
- package/dist/react/{ds-table-group.js → ds-data-group.js} +5 -5
- package/dist/react/ds-data-preferences.d.ts +21 -0
- package/dist/react/{ds-table-preferences.js → ds-data-preferences.js} +6 -6
- package/dist/react/ds-data-saved-views.d.ts +17 -0
- package/dist/react/{ds-table-saved-views.js → ds-data-saved-views.js} +5 -5
- package/dist/react/ds-data-search.d.ts +14 -0
- package/dist/react/{ds-table-search.js → ds-data-search.js} +5 -5
- package/dist/react/ds-data-sort.d.ts +12 -0
- package/dist/react/ds-data-sort.js +12 -0
- package/dist/react/{ds-table-toolbar.d.ts → ds-data-toolbar.d.ts} +3 -3
- package/dist/react/ds-data-toolbar.js +12 -0
- package/dist/react/ds-field.d.ts +1 -1
- package/dist/react/ds-input-date.d.ts +12 -0
- package/dist/react/ds-input-date.js +12 -0
- package/dist/react/ds-input-time.d.ts +12 -0
- package/dist/react/ds-input-time.js +12 -0
- package/dist/react/ds-table.d.ts +3 -3
- package/dist/react/ds-table.js +1 -1
- package/dist/react/ds-time-picker.d.ts +12 -0
- package/dist/react/ds-time-picker.js +12 -0
- package/dist/styles/table.css +11 -11
- package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
- package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
- package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
- package/dist/types/components/ButtonInverted/index.d.ts +2 -0
- package/dist/types/components/Calendar/Calendar.d.ts +32 -0
- package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
- package/dist/types/components/ConversationList/ConversationList.d.ts +0 -7
- package/dist/types/components/DataCustomize/DataCustomize.d.ts +67 -0
- package/dist/types/components/{TableFilter/TableFilter.d.ts → DataFilter/DataFilter.d.ts} +2 -2
- package/dist/types/components/{TableGroup/TableGroup.d.ts → DataGroup/DataGroup.d.ts} +8 -8
- package/dist/types/components/{TablePreferences/TablePreferences.d.ts → DataPreferences/DataPreferences.d.ts} +29 -13
- package/dist/types/components/{TableSavedViews/TableSavedViews.d.ts → DataSavedViews/DataSavedViews.d.ts} +10 -10
- package/dist/types/components/DataSavedViews/data-saved-views-types.d.ts +24 -0
- package/dist/types/components/DataSavedViews/index.d.ts +2 -0
- package/dist/types/components/{TableSearch/TableSearch.d.ts → DataSearch/DataSearch.d.ts} +6 -6
- package/dist/types/components/{TableSearch/table-search-model.d.ts → DataSearch/data-search-model.d.ts} +6 -6
- package/dist/types/components/{TableSearch/table-search-types.d.ts → DataSearch/data-search-types.d.ts} +3 -3
- package/dist/types/components/{TableSort/TableSort.d.ts → DataSort/DataSort.d.ts} +7 -6
- package/dist/types/components/DataSort/data-sort-menu.d.ts +15 -0
- package/dist/types/components/{TableToolbar/TableToolbar.d.ts → DataToolbar/DataToolbar.d.ts} +3 -3
- package/dist/types/components/Field/Field.d.ts +7 -2
- package/dist/types/components/FilterMenu/FilterMenu.d.ts +0 -10
- package/dist/types/components/Icon/icon-cache.d.ts +36 -4
- package/dist/types/components/Icon/map-icon-catalog.d.ts +3 -0
- package/dist/types/components/Input/Input.d.ts +10 -0
- package/dist/types/components/InputDate/InputDate.d.ts +78 -0
- package/dist/types/components/InputTime/InputTime.d.ts +80 -0
- package/dist/types/components/PanelTools/PanelTools.d.ts +1 -1
- package/dist/types/components/Select/Select.d.ts +8 -1
- package/dist/types/components/Table/Table.d.ts +9 -9
- package/dist/types/components/Table/index.d.ts +1 -1
- package/dist/types/components/Table/table-action-menu.d.ts +1 -1
- package/dist/types/components/Table/table-body-renderer.d.ts +2 -2
- package/dist/types/components/Table/table-column-customizer.d.ts +9 -9
- package/dist/types/components/Table/table-group-load-controller.d.ts +2 -2
- package/dist/types/components/Table/table-model.d.ts +7 -7
- package/dist/types/components/Table/table-render-model.d.ts +3 -3
- package/dist/types/components/Table/table-types.d.ts +17 -36
- package/dist/types/components/Table/table-virtual-model.d.ts +2 -2
- package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
- package/dist/types/components.d.ts +5461 -4433
- package/dist/types/utils/button-render.d.ts +1 -1
- package/dist/types/utils/clock-time.d.ts +23 -0
- package/dist/types/utils/data-field.d.ts +38 -0
- package/dist/types/utils/date-filter-value.d.ts +4 -0
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/types/utils/list-customizer.d.ts +38 -0
- package/dist/types/utils/table-caption-compact.d.ts +1 -1
- package/dist/vue/components.d.ts +13 -7
- package/dist/vue/components.js +13 -7
- package/dist/vue/ds-button-inverted.d.ts +3 -0
- package/dist/vue/ds-button-inverted.js +33 -0
- package/dist/vue/{ds-table-sort.d.ts → ds-calendar.d.ts} +1 -1
- package/dist/vue/ds-calendar.js +16 -0
- package/dist/vue/ds-conversation-list.js +1 -3
- package/dist/vue/ds-data-customize.d.ts +3 -0
- package/dist/vue/ds-data-customize.js +23 -0
- package/dist/vue/{ds-table-group.d.ts → ds-data-filter.d.ts} +1 -1
- package/dist/vue/{ds-table-filter.js → ds-data-filter.js} +2 -2
- package/dist/vue/{ds-table-filter.d.ts → ds-data-group.d.ts} +1 -1
- package/dist/vue/{ds-table-group.js → ds-data-group.js} +2 -2
- package/dist/vue/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +1 -1
- package/dist/vue/{ds-table-preferences.js → ds-data-preferences.js} +10 -7
- package/dist/vue/ds-data-saved-views.d.ts +3 -0
- package/dist/vue/{ds-table-saved-views.js → ds-data-saved-views.js} +2 -2
- package/dist/vue/{ds-table-search.d.ts → ds-data-search.d.ts} +1 -1
- package/dist/vue/{ds-table-search.js → ds-data-search.js} +3 -3
- package/dist/vue/ds-data-sort.d.ts +3 -0
- package/dist/vue/{ds-table-sort.js → ds-data-sort.js} +3 -3
- package/dist/vue/ds-data-toolbar.d.ts +3 -0
- package/dist/vue/ds-data-toolbar.js +9 -0
- package/dist/vue/{ds-table-preferences.d.ts → ds-input-date.d.ts} +1 -1
- package/dist/vue/ds-input-date.js +31 -0
- package/dist/vue/ds-input-time.d.ts +3 -0
- package/dist/vue/ds-input-time.js +32 -0
- package/dist/vue/ds-input.js +2 -0
- package/dist/vue/ds-select.js +3 -0
- package/dist/vue/ds-table.js +4 -4
- package/dist/vue/ds-time-picker.d.ts +3 -0
- package/dist/vue/ds-time-picker.js +16 -0
- package/package.json +3 -3
- package/dist/angular/ds-table-filter.d.ts +0 -50
- package/dist/angular/ds-table-group.d.ts +0 -29
- package/dist/angular/ds-table-preferences.d.ts +0 -39
- package/dist/angular/ds-table-saved-views.d.ts +0 -49
- package/dist/angular/ds-table-search.d.ts +0 -20
- package/dist/angular/ds-table-sort.d.ts +0 -16
- package/dist/angular/ds-table-toolbar.d.ts +0 -12
- package/dist/components/ds-table-filter.js +0 -2
- package/dist/components/ds-table-filter.js.map +0 -1
- package/dist/components/ds-table-group.js +0 -2
- package/dist/components/ds-table-preferences.d.ts +0 -11
- package/dist/components/ds-table-preferences.js +0 -2
- package/dist/components/ds-table-preferences.js.map +0 -1
- package/dist/components/ds-table-saved-views.js +0 -2
- package/dist/components/ds-table-saved-views.js.map +0 -1
- package/dist/components/ds-table-search.js +0 -2
- package/dist/components/ds-table-search.js.map +0 -1
- package/dist/components/ds-table-sort.js +0 -2
- package/dist/components/ds-table-sort.js.map +0 -1
- package/dist/components/ds-table-toolbar.d.ts +0 -11
- package/dist/components/ds-table-toolbar.js +0 -2
- package/dist/components/ds-table-toolbar.js.map +0 -1
- package/dist/components/p-BINSI_KF.js +0 -2
- package/dist/components/p-BbfBvMRR.js +0 -2
- package/dist/components/p-BbfBvMRR.js.map +0 -1
- package/dist/components/p-C1_3CVma.js +0 -2
- package/dist/components/p-C1_3CVma.js.map +0 -1
- package/dist/components/p-CKarsuR2.js +0 -2
- package/dist/components/p-CKarsuR2.js.map +0 -1
- package/dist/components/p-Cea7rROU.js +0 -2
- package/dist/components/p-Cea7rROU.js.map +0 -1
- package/dist/components/p-Cmj04E5Q.js +0 -2
- package/dist/components/p-Cmj04E5Q.js.map +0 -1
- package/dist/components/p-Cq_Qpe_C.js +0 -2
- package/dist/components/p-Cq_Qpe_C.js.map +0 -1
- package/dist/components/p-CwqFJMvP.js +0 -2
- package/dist/components/p-D44g2Kw1.js.map +0 -1
- package/dist/components/p-DZ58Sg5a.js.map +0 -1
- package/dist/components/p-D_u8WhlU.js +0 -2
- package/dist/components/p-Dhw_W8nk.js.map +0 -1
- package/dist/components/p-FPZbS19l.js +0 -2
- package/dist/components/p-FPZbS19l.js.map +0 -1
- package/dist/components/p-KBrC9IG4.js +0 -2
- package/dist/components/p-KBrC9IG4.js.map +0 -1
- package/dist/components/p-N5SHSVo2.js +0 -2
- package/dist/components/p-QjkufCcn.js +0 -2
- package/dist/components/p-QjkufCcn.js.map +0 -1
- package/dist/components/p-UAIxh67Q.js +0 -2
- package/dist/components/p-UAIxh67Q.js.map +0 -1
- package/dist/components/p-beCz9OnD.js +0 -2
- package/dist/components/p-xHGqrz_p.js +0 -2
- package/dist/mcp-data/registry/table-group.json +0 -358
- package/dist/mcp-data/registry/table-preferences.json +0 -511
- package/dist/mcp-data/registry/table-saved-views.json +0 -431
- package/dist/mcp-data/registry/table-search.json +0 -366
- package/dist/mcp-data/registry/table-sort.json +0 -253
- package/dist/mcp-data/registry/table-toolbar.json +0 -180
- package/dist/react/ds-table-filter.d.ts +0 -18
- package/dist/react/ds-table-group.d.ts +0 -14
- package/dist/react/ds-table-preferences.d.ts +0 -21
- package/dist/react/ds-table-saved-views.d.ts +0 -17
- package/dist/react/ds-table-search.d.ts +0 -14
- package/dist/react/ds-table-sort.d.ts +0 -12
- package/dist/react/ds-table-sort.js +0 -12
- package/dist/react/ds-table-toolbar.js +0 -12
- package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
- package/dist/types/components/TableSavedViews/index.d.ts +0 -2
- package/dist/types/components/TableSavedViews/table-saved-views-types.d.ts +0 -24
- package/dist/types/components/TableSort/table-sort-menu.d.ts +0 -15
- package/dist/vue/ds-table-toolbar.d.ts +0 -3
- package/dist/vue/ds-table-toolbar.js +0 -9
- /package/dist/components/{ds-table-group.js.map → ds-calendar.js.map} +0 -0
- /package/dist/components/{p-BQsVI_vO.js.map → p-5URekSny.js.map} +0 -0
- /package/dist/components/{p-eo_pmPqp.js.map → p-7V1AhetH.js.map} +0 -0
- /package/dist/components/{p-yZRXPHDe.js.map → p-8yBdCXCn.js.map} +0 -0
- /package/dist/components/{p-BQaO7cg_.js.map → p-BhJXmuRA.js.map} +0 -0
- /package/dist/components/{p-n68x-ZKp.js.map → p-Bm7rqs3C.js.map} +0 -0
- /package/dist/components/{p-DdspY23v.js.map → p-Bn8I7iw6.js.map} +0 -0
- /package/dist/components/{p-BnWxbhFP.js.map → p-Bpd6YCo4.js.map} +0 -0
- /package/dist/components/{p-B-9fdIWv.js.map → p-C-3YqeTb.js.map} +0 -0
- /package/dist/components/{p-umAf0fBn.js.map → p-CD4DZPy_.js.map} +0 -0
- /package/dist/components/{p-CuwopElg.js.map → p-CGidq1iC.js.map} +0 -0
- /package/dist/components/{p-CI7VfYC3.js.map → p-CUcUHwI3.js.map} +0 -0
- /package/dist/components/{p-BcdHgPi5.js.map → p-CeXf9-X3.js.map} +0 -0
- /package/dist/components/{p-CSnsz3Eb.js.map → p-CiH4GG6r.js.map} +0 -0
- /package/dist/components/{p-y06IxxoN.js.map → p-CiJ1WR11.js.map} +0 -0
- /package/dist/components/{p-BmFeeR4q.js.map → p-CqW2eyiF.js.map} +0 -0
- /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
- /package/dist/components/{p-CqlBlv55.js.map → p-CzIpquvw.js.map} +0 -0
- /package/dist/components/{p-DC69DgAR.js.map → p-D0y7Sja6.js.map} +0 -0
- /package/dist/components/{p-C7CZ9pnP.js.map → p-D6Wl3dRO.js.map} +0 -0
- /package/dist/components/{p-BPhbwXOv.js.map → p-D922f6Tb.js.map} +0 -0
- /package/dist/components/{p-beRFLHbB.js.map → p-DHICPS4n.js.map} +0 -0
- /package/dist/components/{p-omPm8_vx.js.map → p-DOAybCp0.js.map} +0 -0
- /package/dist/components/{p-BnzsBNUY.js.map → p-Dn9QHL4O.js.map} +0 -0
- /package/dist/components/{p-DGzn4k4h.js.map → p-Do2FJd1y.js.map} +0 -0
- /package/dist/components/{p-DTDLlinw.js.map → p-DpoTwJAR.js.map} +0 -0
- /package/dist/components/{p-CLGtPE0K.js.map → p-DwbcNDJF.js.map} +0 -0
- /package/dist/components/{p-C8ek-1SP.js.map → p-E5W27Fu_.js.map} +0 -0
- /package/dist/components/{p-mpk_Mm8_.js.map → p-FIBCluwV.js.map} +0 -0
- /package/dist/components/{p-CE540WZ7.js.map → p-MG4lcN0D.js.map} +0 -0
- /package/dist/components/{p-DtLQIMsa.js.map → p-ZhP2tVmM.js.map} +0 -0
- /package/dist/components/{p-BPlWEidl.js.map → p-ljbw3UMZ.js.map} +0 -0
- /package/dist/components/{p-DFjIBS5B.js.map → p-xdmJCPCg.js.map} +0 -0
- /package/dist/components/{p-CAxDdYjh.js.map → p-xtGGIZmU.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["conversationListItemCss","ConversationListItem","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","conversationId","conversationTitle","preview","updatedAt","selected","state","statusLabel","unreadCount","actionsOpen","handleClick","dsSelect","emit","id","handleActionsSlotChange","event","slot","target","el","classList","toggle","assignedElements","length","render","busy","subtext","accessibleName","filter","Boolean","join","h","Host","key","role","class","type","undefined","onClick","name","as","variant","emphasis","color","lineTruncation","surface","hasRing","size","dateTime","onSlotchange"],"sources":["src/wc/components/ConversationListItem/ConversationListItem.css?tag=ds-conversation-list-item&encapsulation=scoped","src/wc/components/ConversationListItem/ConversationListItem.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/visually-hidden.css';\n@import '../../styles/control-elevation.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n}\n\n:host(:focus-within),\n:host(.conversation-list-item--actions-open) {\n position: relative;\n z-index: var(--dimension-z-index-floating);\n}\n\n.conversation-list-item__row {\n position: relative;\n isolation: isolate;\n}\n\n.conversation-list-item {\n color: var(--color-foreground-primary);\n}\n\n.conversation-list-item--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.conversation-list-item__leading:empty,\n.conversation-list-item__trailing:empty {\n display: none;\n}\n\n.conversation-list-item__leading,\n.conversation-list-item__trailing,\n.conversation-list-item__preview-row {\n display: flex;\n align-items: center;\n}\n\n.conversation-list-item__leading {\n align-self: center;\n width: auto;\n height: auto;\n margin-inline-start: var(--ds-control-label-inset, var(--dimension-space-025));\n margin-inline-end: var(--dimension-space-050);\n}\n\n.conversation-list-item__content {\n min-width: 0;\n}\n\n.conversation-list-item__title-row {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.conversation-list-item__preview-row {\n min-width: 0;\n gap: var(--dimension-space-050);\n}\n\nds-text.conversation-list-item__title,\nds-text.conversation-list-item__preview {\n display: block;\n min-width: 0;\n}\n\nds-text.conversation-list-item__title {\n flex: 1;\n}\n\n.conversation-list-item__unread {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--dimension-size-200);\n margin-inline-end: var(--dimension-space-025);\n}\n\nds-text.conversation-list-item__preview.ds-choice-item__subtext {\n -webkit-line-clamp: 1;\n}\n\n.conversation-list-item__actions {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-100);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.conversation-list-item__row:has(:focus-visible) .conversation-list-item__actions,\n:host(.conversation-list-item--actions-open) .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n}\n\n:host(.conversation-list-item--actions-open) .conversation-list-item::after {\n background: var(--ds-interaction-hover);\n}\n\n.conversation-list-item__row:active .conversation-list-item::after {\n background: var(--ds-interaction-pressed);\n}\n\n@media (hover: hover) and (pointer: fine) {\n :host(:hover) {\n position: relative;\n z-index: var(--dimension-z-index-floating);\n }\n\n .conversation-list-item__row:hover .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n }\n\n /* Keep the row wash continuous while the pointer moves onto its sibling action. */\n .conversation-list-item__row:hover .conversation-list-item::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n@media (hover: none) {\n .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n }\n\n :host(.conversation-list-item--has-actions) .conversation-list-item__title-row {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n","/* eslint-disable local/no-selected-fill-emphasis-change -- Unread emphasis is message state, independent of the selected-row fill state. */\nimport { Component, Element, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport type { ConversationItemState } from '../conversation-types';\n\n@Component({\n tag: 'ds-conversation-list-item',\n styleUrl: 'ConversationListItem.css',\n scoped: true,\n})\nexport class ConversationListItem {\n @Element() el!: HTMLElement;\n\n @Prop() conversationId: string = '';\n /** Visible conversation title. Named to avoid the native HTMLElement.title contract. */\n @Prop() conversationTitle: string = '';\n @Prop() preview: string = '';\n /** ISO timestamp for semantic activity metadata. */\n @Prop() updatedAt: string = '';\n @Prop() selected: boolean = false;\n @Prop() state: ConversationItemState = 'default';\n @Prop() statusLabel: string = '';\n @Prop() unreadCount: number = 0;\n /** Keep the contextual-actions surface visible while its popup is open or closing. */\n @Prop({ reflect: true }) actionsOpen: boolean = false;\n\n @Event() dsSelect!: EventEmitter<{ id: string }>;\n\n private handleClick = () => this.dsSelect.emit({ id: this.conversationId });\n\n private handleActionsSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n this.el.classList.toggle(\n 'conversation-list-item--has-actions',\n slot.assignedElements().length > 0\n );\n };\n\n render() {\n const busy = this.state === 'busy';\n const subtext = busy && this.statusLabel ? this.statusLabel : this.preview;\n const accessibleName = [\n this.conversationTitle,\n subtext,\n this.unreadCount > 0 ? `${this.unreadCount} unread` : '',\n ]\n .filter(Boolean)\n .join('. ');\n\n return (\n <Host role=\"listitem\" class={{ 'conversation-list-item--actions-open': this.actionsOpen }}>\n <div class=\"conversation-list-item__row\">\n <button\n type=\"button\"\n class={{\n 'conversation-list-item': true,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': this.selected,\n 'conversation-list-item--error': this.state === 'error',\n }}\n aria-label={accessibleName}\n aria-current={this.selected ? 'true' : undefined}\n aria-busy={busy ? 'true' : undefined}\n onClick={this.handleClick}\n >\n <span class=\"conversation-list-item__leading ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\">\n <slot name=\"leading\" />\n </span>\n <span class=\"conversation-list-item__content ds-choice-item__content ds-interaction-fill__content\">\n <span class=\"conversation-list-item__title-row\">\n <ds-text\n class=\"conversation-list-item__title ds-choice-item__label ds-control-label-box\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis={this.unreadCount > 0}\n color={this.unreadCount > 0 ? 'primary' : 'secondary'}\n lineTruncation={1}\n >\n {this.conversationTitle}\n </ds-text>\n {this.unreadCount > 0 ? (\n <span class=\"conversation-list-item__unread\">\n <ds-badge variant=\"dot\" surface=\"secondary\" hasRing={false} />\n </span>\n ) : null}\n </span>\n <span class=\"conversation-list-item__preview-row\">\n {busy ? <ds-loader size=\"sm\" color=\"secondary\" /> : null}\n <ds-text\n class=\"conversation-list-item__preview ds-choice-item__subtext ds-control-label-box\"\n as=\"span\"\n variant=\"text-body-small\"\n color={this.state === 'error' ? 'negative' : 'secondary'}\n lineTruncation={1}\n >\n {subtext}\n </ds-text>\n </span>\n {this.updatedAt ? (\n <time\n class=\"conversation-list-item__time ds-visually-hidden\"\n dateTime={this.updatedAt}\n >\n {this.updatedAt}\n </time>\n ) : null}\n </span>\n <span class=\"conversation-list-item__trailing ds-interaction-fill__content\">\n <slot name=\"trailing\" />\n </span>\n </button>\n <div class=\"conversation-list-item__actions ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\">\n <slot name=\"actions\" onSlotchange={this.handleActionsSlotChange} />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"8KAAA,MAAMA,EAA0B,IAAM,g2+B,MCSzBC,EAAoBC,EAAA,MAAAD,UAAAE,EALjC,WAAAC,CAAAC,G,+EAQUC,KAAAC,eAAyB,GAEzBD,KAAAE,kBAA4B,GAC5BF,KAAAG,QAAkB,GAElBH,KAAAI,UAAoB,GACpBJ,KAAAK,SAAoB,MACpBL,KAAAM,MAA+B,UAC/BN,KAAAO,YAAsB,GACtBP,KAAAQ,YAAsB,EAELR,KAAAS,YAAuB,MAIxCT,KAAAU,YAAc,IAAMV,KAAKW,SAASC,KAAK,CAAEC,GAAIb,KAAKC,iBAElDD,KAAAc,wBAA2BC,IACjC,MAAMC,EAAOD,EAAME,OACnBjB,KAAKkB,GAAGC,UAAUC,OAChB,sCACAJ,EAAKK,mBAAmBC,OAAS,EAClC,CAuFJ,CApFC,MAAAC,GACE,MAAMC,EAAOxB,KAAKM,QAAU,OAC5B,MAAMmB,EAAUD,GAAQxB,KAAKO,YAAcP,KAAKO,YAAcP,KAAKG,QACnE,MAAMuB,EAAiB,CACrB1B,KAAKE,kBACLuB,EACAzB,KAAKQ,YAAc,EAAI,GAAGR,KAAKQ,qBAAuB,IAErDmB,OAAOC,SACPC,KAAK,MAER,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,KAAK,WAAWC,MAAO,CAAE,uCAAwClC,KAAKS,cAC1EqB,EAAA,OAAAE,IAAA,2CAAKE,MAAM,+BACTJ,EAAA,UAAAE,IAAA,2CACEG,KAAK,SACLD,MAAO,CACL,yBAA0B,KAC1B,iBAAkB,KAClB,mBAAoB,KACpB,iBAAkB,KAClB,sBAAuB,KACvB,sBAAuB,KACvB,gCAAiClC,KAAKK,SACtC,gCAAiCL,KAAKM,QAAU,SACjD,aACWoB,EAAc,eACZ1B,KAAKK,SAAW,OAAS+B,UAAS,YACrCZ,EAAO,OAASY,UAC3BC,QAASrC,KAAKU,aAEdoB,EAAA,QAAAE,IAAA,2CAAME,MAAM,yGACVJ,EAAA,QAAAE,IAAA,2CAAMM,KAAK,aAEbR,EAAA,QAAAE,IAAA,2CAAME,MAAM,wFACVJ,EAAA,QAAAE,IAAA,2CAAME,MAAM,qCACVJ,EAAA,WAAAE,IAAA,2CACEE,MAAM,2EACNK,GAAG,OACHC,QAAQ,mBACRC,SAAUzC,KAAKQ,YAAc,EAC7BkC,MAAO1C,KAAKQ,YAAc,EAAI,UAAY,YAC1CmC,eAAgB,GAEf3C,KAAKE,mBAEPF,KAAKQ,YAAc,EAClBsB,EAAA,QAAMI,MAAM,kCACVJ,EAAA,YAAUU,QAAQ,MAAMI,QAAQ,YAAYC,QAAS,SAErD,MAENf,EAAA,QAAAE,IAAA,2CAAME,MAAM,uCACTV,EAAOM,EAAA,aAAWgB,KAAK,KAAKJ,MAAM,cAAiB,KACpDZ,EAAA,WAAAE,IAAA,2CACEE,MAAM,+EACNK,GAAG,OACHC,QAAQ,kBACRE,MAAO1C,KAAKM,QAAU,QAAU,WAAa,YAC7CqC,eAAgB,GAEflB,IAGJzB,KAAKI,UACJ0B,EAAA,QACEI,MAAM,kDACNa,SAAU/C,KAAKI,WAEdJ,KAAKI,WAEN,MAEN0B,EAAA,QAAAE,IAAA,2CAAME,MAAM,iEACVJ,EAAA,QAAAE,IAAA,2CAAMM,KAAK,eAGfR,EAAA,OAAAE,IAAA,2CAAKE,MAAM,mHACTJ,EAAA,QAAAE,IAAA,2CAAMM,KAAK,UAAUU,aAAchD,KAAKc,4B","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["conversationListItemCss","ConversationListItem","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","conversationId","conversationTitle","preview","updatedAt","selected","state","statusLabel","unreadCount","actionsOpen","handleClick","dsSelect","emit","id","handleActionsSlotChange","event","slot","target","el","classList","toggle","assignedElements","length","render","busy","subtext","accessibleName","filter","Boolean","join","h","Host","key","role","class","type","undefined","onClick","name","as","variant","emphasis","color","lineTruncation","surface","hasRing","size","dateTime","onSlotchange"],"sources":["src/wc/components/ConversationListItem/ConversationListItem.css?tag=ds-conversation-list-item&encapsulation=scoped","src/wc/components/ConversationListItem/ConversationListItem.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/visually-hidden.css';\n@import '../../styles/control-elevation.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n}\n\n:host(:focus-within),\n:host(.conversation-list-item--actions-open) {\n position: relative;\n z-index: var(--dimension-z-index-floating);\n}\n\n.conversation-list-item__row {\n position: relative;\n isolation: isolate;\n}\n\n.conversation-list-item {\n color: var(--color-foreground-primary);\n}\n\n.conversation-list-item--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.conversation-list-item__leading:empty,\n.conversation-list-item__trailing:empty {\n display: none;\n}\n\n.conversation-list-item__leading,\n.conversation-list-item__trailing,\n.conversation-list-item__preview-row {\n display: flex;\n align-items: center;\n}\n\n.conversation-list-item__leading {\n align-self: center;\n width: auto;\n height: auto;\n margin-inline-start: var(--ds-control-label-inset, var(--dimension-space-025));\n margin-inline-end: var(--dimension-space-050);\n}\n\n.conversation-list-item__content {\n min-width: 0;\n}\n\n.conversation-list-item__title-row {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.conversation-list-item__preview-row {\n min-width: 0;\n gap: var(--dimension-space-050);\n}\n\nds-text.conversation-list-item__title,\nds-text.conversation-list-item__preview {\n display: block;\n min-width: 0;\n}\n\nds-text.conversation-list-item__title {\n flex: 1;\n}\n\n.conversation-list-item__unread {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--dimension-size-200);\n margin-inline-end: var(--dimension-space-025);\n}\n\nds-text.conversation-list-item__preview.ds-choice-item__subtext {\n -webkit-line-clamp: 1;\n}\n\n.conversation-list-item__actions {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-100);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.conversation-list-item__row:has(:focus-visible) .conversation-list-item__actions,\n:host(.conversation-list-item--actions-open) .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n}\n\n:host(.conversation-list-item--actions-open) .conversation-list-item::after {\n background: var(--ds-interaction-hover);\n}\n\n.conversation-list-item__row:active .conversation-list-item::after {\n background: var(--ds-interaction-pressed);\n}\n\n@media (hover: hover) and (pointer: fine) {\n :host(:hover) {\n position: relative;\n z-index: var(--dimension-z-index-floating);\n }\n\n .conversation-list-item__row:hover .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n }\n\n /* Keep the row wash continuous while the pointer moves onto its sibling action. */\n .conversation-list-item__row:hover .conversation-list-item::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n@media (hover: none) {\n .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n }\n\n :host(.conversation-list-item--has-actions) .conversation-list-item__title-row {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n","/* eslint-disable local/no-selected-fill-emphasis-change -- Unread emphasis is message state, independent of the selected-row fill state. */\nimport { Component, Element, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport type { ConversationItemState } from '../conversation-types';\n\n@Component({\n tag: 'ds-conversation-list-item',\n styleUrl: 'ConversationListItem.css',\n scoped: true,\n})\nexport class ConversationListItem {\n @Element() el!: HTMLElement;\n\n @Prop() conversationId: string = '';\n /** Visible conversation title. Named to avoid the native HTMLElement.title contract. */\n @Prop() conversationTitle: string = '';\n @Prop() preview: string = '';\n /** ISO timestamp for semantic activity metadata. */\n @Prop() updatedAt: string = '';\n @Prop() selected: boolean = false;\n @Prop() state: ConversationItemState = 'default';\n @Prop() statusLabel: string = '';\n @Prop() unreadCount: number = 0;\n /** Keep the contextual-actions surface visible while its popup is open or closing. */\n @Prop({ reflect: true }) actionsOpen: boolean = false;\n\n @Event() dsSelect!: EventEmitter<{ id: string }>;\n\n private handleClick = () => this.dsSelect.emit({ id: this.conversationId });\n\n private handleActionsSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n this.el.classList.toggle(\n 'conversation-list-item--has-actions',\n slot.assignedElements().length > 0\n );\n };\n\n render() {\n const busy = this.state === 'busy';\n const subtext = busy && this.statusLabel ? this.statusLabel : this.preview;\n const accessibleName = [\n this.conversationTitle,\n subtext,\n this.unreadCount > 0 ? `${this.unreadCount} unread` : '',\n ]\n .filter(Boolean)\n .join('. ');\n\n return (\n <Host role=\"listitem\" class={{ 'conversation-list-item--actions-open': this.actionsOpen }}>\n <div class=\"conversation-list-item__row\">\n <button\n type=\"button\"\n class={{\n 'conversation-list-item': true,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': this.selected,\n 'conversation-list-item--error': this.state === 'error',\n }}\n aria-label={accessibleName}\n aria-current={this.selected ? 'true' : undefined}\n aria-busy={busy ? 'true' : undefined}\n onClick={this.handleClick}\n >\n <span class=\"conversation-list-item__leading ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\">\n <slot name=\"leading\" />\n </span>\n <span class=\"conversation-list-item__content ds-choice-item__content ds-interaction-fill__content\">\n <span class=\"conversation-list-item__title-row\">\n <ds-text\n class=\"conversation-list-item__title ds-choice-item__label ds-control-label-box\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis={this.unreadCount > 0}\n color={this.unreadCount > 0 ? 'primary' : 'secondary'}\n lineTruncation={1}\n >\n {this.conversationTitle}\n </ds-text>\n {this.unreadCount > 0 ? (\n <span class=\"conversation-list-item__unread\">\n <ds-badge variant=\"dot\" surface=\"secondary\" hasRing={false} />\n </span>\n ) : null}\n </span>\n <span class=\"conversation-list-item__preview-row\">\n {busy ? <ds-loader size=\"sm\" color=\"secondary\" /> : null}\n <ds-text\n class=\"conversation-list-item__preview ds-choice-item__subtext ds-control-label-box\"\n as=\"span\"\n variant=\"text-body-small\"\n color={this.state === 'error' ? 'negative' : 'secondary'}\n lineTruncation={1}\n >\n {subtext}\n </ds-text>\n </span>\n {this.updatedAt ? (\n <time\n class=\"conversation-list-item__time ds-visually-hidden\"\n dateTime={this.updatedAt}\n >\n {this.updatedAt}\n </time>\n ) : null}\n </span>\n <span class=\"conversation-list-item__trailing ds-interaction-fill__content\">\n <slot name=\"trailing\" />\n </span>\n </button>\n <div class=\"conversation-list-item__actions ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\">\n <slot name=\"actions\" onSlotchange={this.handleActionsSlotChange} />\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"8KAAA,MAAMA,EAA0B,IAAM,yk/B,MCSzBC,EAAoBC,EAAA,MAAAD,UAAAE,EALjC,WAAAC,CAAAC,G,+EAQUC,KAAAC,eAAyB,GAEzBD,KAAAE,kBAA4B,GAC5BF,KAAAG,QAAkB,GAElBH,KAAAI,UAAoB,GACpBJ,KAAAK,SAAoB,MACpBL,KAAAM,MAA+B,UAC/BN,KAAAO,YAAsB,GACtBP,KAAAQ,YAAsB,EAELR,KAAAS,YAAuB,MAIxCT,KAAAU,YAAc,IAAMV,KAAKW,SAASC,KAAK,CAAEC,GAAIb,KAAKC,iBAElDD,KAAAc,wBAA2BC,IACjC,MAAMC,EAAOD,EAAME,OACnBjB,KAAKkB,GAAGC,UAAUC,OAChB,sCACAJ,EAAKK,mBAAmBC,OAAS,EAClC,CAuFJ,CApFC,MAAAC,GACE,MAAMC,EAAOxB,KAAKM,QAAU,OAC5B,MAAMmB,EAAUD,GAAQxB,KAAKO,YAAcP,KAAKO,YAAcP,KAAKG,QACnE,MAAMuB,EAAiB,CACrB1B,KAAKE,kBACLuB,EACAzB,KAAKQ,YAAc,EAAI,GAAGR,KAAKQ,qBAAuB,IAErDmB,OAAOC,SACPC,KAAK,MAER,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,KAAK,WAAWC,MAAO,CAAE,uCAAwClC,KAAKS,cAC1EqB,EAAA,OAAAE,IAAA,2CAAKE,MAAM,+BACTJ,EAAA,UAAAE,IAAA,2CACEG,KAAK,SACLD,MAAO,CACL,yBAA0B,KAC1B,iBAAkB,KAClB,mBAAoB,KACpB,iBAAkB,KAClB,sBAAuB,KACvB,sBAAuB,KACvB,gCAAiClC,KAAKK,SACtC,gCAAiCL,KAAKM,QAAU,SACjD,aACWoB,EAAc,eACZ1B,KAAKK,SAAW,OAAS+B,UAAS,YACrCZ,EAAO,OAASY,UAC3BC,QAASrC,KAAKU,aAEdoB,EAAA,QAAAE,IAAA,2CAAME,MAAM,yGACVJ,EAAA,QAAAE,IAAA,2CAAMM,KAAK,aAEbR,EAAA,QAAAE,IAAA,2CAAME,MAAM,wFACVJ,EAAA,QAAAE,IAAA,2CAAME,MAAM,qCACVJ,EAAA,WAAAE,IAAA,2CACEE,MAAM,2EACNK,GAAG,OACHC,QAAQ,mBACRC,SAAUzC,KAAKQ,YAAc,EAC7BkC,MAAO1C,KAAKQ,YAAc,EAAI,UAAY,YAC1CmC,eAAgB,GAEf3C,KAAKE,mBAEPF,KAAKQ,YAAc,EAClBsB,EAAA,QAAMI,MAAM,kCACVJ,EAAA,YAAUU,QAAQ,MAAMI,QAAQ,YAAYC,QAAS,SAErD,MAENf,EAAA,QAAAE,IAAA,2CAAME,MAAM,uCACTV,EAAOM,EAAA,aAAWgB,KAAK,KAAKJ,MAAM,cAAiB,KACpDZ,EAAA,WAAAE,IAAA,2CACEE,MAAM,+EACNK,GAAG,OACHC,QAAQ,kBACRE,MAAO1C,KAAKM,QAAU,QAAU,WAAa,YAC7CqC,eAAgB,GAEflB,IAGJzB,KAAKI,UACJ0B,EAAA,QACEI,MAAM,kDACNa,SAAU/C,KAAKI,WAEdJ,KAAKI,WAEN,MAEN0B,EAAA,QAAAE,IAAA,2CAAME,MAAM,iEACVJ,EAAA,QAAAE,IAAA,2CAAMM,KAAK,eAGfR,EAAA,OAAAE,IAAA,2CAAKE,MAAM,mHACTJ,EAAA,QAAAE,IAAA,2CAAMM,KAAK,UAAUU,aAAchD,KAAKc,4B","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as s,H as e,h as t,a as i,t as n}from"./index.js";import{d as
|
|
1
|
+
import{p as s,H as e,h as t,a as i,t as n}from"./index.js";import{d as c}from"./p-DwbcNDJF.js";const o=()=>`.sc-ds-conversation-list-section-h{display:block;box-sizing:border-box;-webkit-user-select:none;user-select:none}.sc-ds-conversation-list-section-h:not(:first-child){margin-top:var(--dimension-space-200)}.conversation-list-section.sc-ds-conversation-list-section{display:flex;flex-direction:column;gap:var(--dimension-space-050)}ds-text.conversation-list-section__heading.sc-ds-conversation-list-section{display:block;padding:var(--dimension-space-050) var(--dimension-space-100)}.conversation-list-section__items.sc-ds-conversation-list-section{display:flex;flex-direction:column;gap:var(--dimension-space-050)}`;let a=0;const d=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.heading="";this.sectionId="";this.generatedId=`ds-conversation-section-${++a}`}render(){const s=this.sectionId||this.generatedId;return t(i,{key:"f5dca41b782d180b8056313e09b2a9413d8d7007"},t("section",{key:"69c1dece427c6ba354bde9e9e5dc2c316a33914b",class:"conversation-list-section","aria-labelledby":s},t("ds-text",{key:"622915201fb129c4ca3a98d734ec31daf2dfd4a1",class:"conversation-list-section__heading",textId:s,as:"h3",variant:"text-caption",emphasis:true,color:"secondary"},this.heading),t("div",{key:"75737490a1697152806db2c43f095ce3a22c11fe",class:"conversation-list-section__items",role:"list"},t("slot",{key:"a6eb8d1afdbd02f8d5ce8af3786cef632a212dc0"}))))}static get style(){return o()}},[262,"ds-conversation-list-section",{heading:[1],sectionId:[1,"section-id"]}]);function r(){if(typeof customElements==="undefined"){return}const s=["ds-conversation-list-section","ds-text"];s.forEach((s=>{switch(s){case"ds-conversation-list-section":if(!customElements.get(n(s))){customElements.define(n(s),d)}break;case"ds-text":if(!customElements.get(n(s))){c()}break}}))}r();const l=d;const f=r;export{l as DsConversationListSection,f as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-conversation-list-section.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as e,H as s,h as t,a as o,t as a}from"./index.js";import{S as i}from"./p-Ck1hgD6g.js";const l=()=>`@property --ds-scroll-edge-fade-top{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-bottom{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-left{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-right{syntax:'<length-percentage>';inherits:false;initial-value:0px}@keyframes ds-scroll-edge-fade-reveal-top{from{--ds-scroll-edge-fade-top:0px}to{--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top)}}@keyframes ds-scroll-edge-fade-reveal-bottom{from{--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom)}to{--ds-scroll-edge-fade-bottom:0px}}@keyframes ds-scroll-edge-fade-reveal-left{from{--ds-scroll-edge-fade-left:0px}to{--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left)}}@keyframes ds-scroll-edge-fade-reveal-right{from{--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right)}to{--ds-scroll-edge-fade-right:0px}}.scroll-edge-fade.sc-ds-conversation-list{--ds-scroll-edge-fade-size:var(--dimension-size-600);--ds-scroll-edge-fade-reveal-distance:var(--dimension-size-800);--ds-scroll-edge-fade-target-top:0px;--ds-scroll-edge-fade-target-bottom:0px;--ds-scroll-edge-fade-target-left:0px;--ds-scroll-edge-fade-target-right:0px;--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top);--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom);--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left);--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right);--ds-scroll-edge-fade-block-mask:linear-gradient( to bottom, transparent 0, #000 var(--ds-scroll-edge-fade-top), #000 calc(100% - var(--ds-scroll-edge-fade-bottom)), transparent 100% );--ds-scroll-edge-fade-inline-mask:linear-gradient( to right, transparent 0, #000 var(--ds-scroll-edge-fade-left), #000 calc(100% - var(--ds-scroll-edge-fade-right)), transparent 100% );-webkit-mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);-webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--top.sc-ds-conversation-list{--ds-scroll-edge-fade-target-top:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--bottom.sc-ds-conversation-list{--ds-scroll-edge-fade-target-bottom:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--left.sc-ds-conversation-list{--ds-scroll-edge-fade-target-left:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--right.sc-ds-conversation-list{--ds-scroll-edge-fade-target-right:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--top-at-edge.sc-ds-conversation-list{--ds-scroll-edge-fade-target-top:0px}.scroll-edge-fade--bottom-at-edge.sc-ds-conversation-list{--ds-scroll-edge-fade-target-bottom:0px}.scroll-edge-fade--left-at-edge.sc-ds-conversation-list{--ds-scroll-edge-fade-target-left:0px}.scroll-edge-fade--right-at-edge.sc-ds-conversation-list{--ds-scroll-edge-fade-target-right:0px}@supports (animation-timeline: scroll()){.scroll-edge-fade--scroll-aware.sc-ds-conversation-list{animation-name:ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom, ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;animation-duration:1ms;animation-timing-function:ease-in-out;animation-fill-mode:both;animation-timeline:scroll(self y), scroll(self y), scroll(self x), scroll(self x);animation-range:0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%, 0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%}@media (prefers-reduced-motion: reduce){.scroll-edge-fade--scroll-aware.sc-ds-conversation-list{animation:none}}}.scroll-edge-fade--at-end.sc-ds-conversation-list,.scroll-edge-fade--hidden.sc-ds-conversation-list{-webkit-mask-image:none;mask-image:none}.scroll-edge-fade--block-window.sc-ds-conversation-list{--ds-scroll-edge-fade-window-start:100%;--ds-scroll-edge-fade-window-end:100%;-webkit-mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}`;const r=()=>`.ds-control-elevation.sc-ds-conversation-list-h,.ds-control-elevation.sc-ds-conversation-list{position:relative;overflow:visible;box-shadow:var(--ds-control-elevation-shadow, none)}.ds-control-elevation.sc-ds-conversation-list-h::after,.ds-control-elevation.sc-ds-conversation-list::after{content:'';position:absolute;inset:0;z-index:4;border-radius:inherit;box-shadow:var(--ds-control-elevation-highlight, none);pointer-events:none}.ds-control-elevation--sm.sc-ds-conversation-list-h,.ds-control-elevation--sm.sc-ds-conversation-list{--ds-control-elevation-shadow:var(--effect-shadow-elevated-sm);--ds-control-elevation-highlight:var(--effect-highlight-elevated-sm)}.ds-control-elevation--md.sc-ds-conversation-list-h,.ds-control-elevation--md.sc-ds-conversation-list{--ds-control-elevation-shadow:var(--effect-shadow-elevated-md);--ds-control-elevation-highlight:var(--effect-highlight-elevated-md)}.ds-control-elevation--floating.sc-ds-conversation-list-h,.ds-control-elevation--floating.sc-ds-conversation-list{--ds-control-elevation-shadow:var(--effect-shadow-elevated-floating);--ds-control-elevation-highlight:var(--effect-highlight-elevated-floating)}.ds-control-elevation--press-scale.sc-ds-conversation-list{--ds-control-press-active-scale:var(--dimension-scale-default);transition:scale var(--effect-motion-short-2)}.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-conversation-list{scale:var(--dimension-scale-subtle)}@media (prefers-reduced-motion: reduce){.ds-control-elevation--press-scale.sc-ds-conversation-list,.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-conversation-list{scale:none;transition:none}}.sc-ds-conversation-list-h{display:block;position:relative;width:100%;height:100%;min-height:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.conversation-list.sc-ds-conversation-list{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.conversation-list__viewport.sc-ds-conversation-list{position:relative;flex:1 1 auto;min-height:0;overflow:auto;box-sizing:border-box}.conversation-list__content.sc-ds-conversation-list{position:relative;min-height:100%;padding:var(--dimension-space-100);padding-bottom:calc(var(--dimension-space-100) + var(--ds-scroll-overlay-block-size, 0px));box-sizing:border-box}.conversation-list__fade.sc-ds-conversation-list{position:absolute;right:0;bottom:0;left:0;z-index:1;height:var(--ds-scroll-overlay-fade-block-size, 0);pointer-events:none;background-color:var( --ds-scroll-overlay-surface-color, var(--_shell-chrome-bg, var(--color-background-primary)) );--ds-scroll-edge-fade-size:100%}.conversation-list__fade.sc-ds-conversation-list::before{content:'';position:absolute;inset:0;background-image:var(--ds-scroll-overlay-surface-image, var(--ds-shell-gradient-image, none));background-position:var(--ds-scroll-overlay-surface-position, 0 0);background-attachment:fixed;background-size:var(--ds-scroll-overlay-surface-size, var(--ds-shell-gradient-size, auto));background-repeat:no-repeat;opacity:var(--ds-scroll-overlay-surface-image-opacity, var(--ds-shell-gradient-opacity, 1))}.conversation-list__empty.sc-ds-conversation-list{position:absolute;inset-block:0 var(--ds-scroll-overlay-block-size, 0);inset-inline:0;box-sizing:border-box}.conversation-list__empty.sc-ds-conversation-list:not(:has([slot='empty'])){display:none}.conversation-list__actions.sc-ds-conversation-list{position:absolute;right:0;bottom:0;z-index:var(--dimension-z-index-floating);padding:0 var(--dimension-space-200) var(--dimension-space-200) 0}.conversation-list__actions--footer.sc-ds-conversation-list{left:0;padding:0 var(--dimension-space-100) var(--dimension-space-100)}.conversation-list__actions-surface.sc-ds-conversation-list{display:flex;border-radius:var(--dimension-radius-half)}.conversation-list__actions--footer.sc-ds-conversation-list .conversation-list__actions-surface.sc-ds-conversation-list{width:100%}.conversation-list__actions-surface.sc-ds-conversation-list:empty{display:none}`;const d=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.actionLayout="floating";this.syncEmptyStateLayout=()=>{const e=this.el.querySelector('[slot="empty"]');if(e&&!this.empty?.contains(e)){e.style.setProperty("position","absolute");e.style.setProperty("inset-block-start","0");e.style.setProperty("inset-inline","0");e.style.setProperty("inset-block-end","var(--ds-scroll-overlay-block-size, 0)");e.style.setProperty("height","auto");e.style.setProperty("box-sizing","border-box")}this.scrollOverlayController?.sync()}}componentDidLoad(){if(!this.viewport||!this.content||!this.overlay)return;this.scrollOverlayController=new i({host:this.el,viewport:this.viewport,content:this.content,overlay:this.overlay,overlayContentSelector:'[slot="actions"]'});this.scrollOverlayController.connect();this.syncEmptyStateLayout();this.emptySlotObserver=new MutationObserver(this.syncEmptyStateLayout);this.emptySlotObserver.observe(this.el,{childList:true,subtree:true})}disconnectedCallback(){this.scrollOverlayController?.disconnect();this.emptySlotObserver?.disconnect()}render(){return t(o,{key:"65a940030e019699106b5a8a90396d16ad72c3de"},t("div",{key:"31f710de2f0143d7913ba802967ce12ba4bea7ff",class:"conversation-list"},t("div",{key:"901217fcb6b9e3b78dc3a4edb35316a9af11be64",class:"conversation-list__viewport",ref:e=>{this.viewport=e},onScroll:()=>this.scrollOverlayController?.sync()},t("div",{key:"48a579675448645fca32f653c9d93b7019a6ab7f",class:"conversation-list__content",ref:e=>{this.content=e}},t("slot",{key:"0ee42e5e36547508da94ede68ef3b7f8a4eaf49f"}),t("div",{key:"90844491585c90821d1e33c152cb5fea35efeddb",class:"conversation-list__empty",ref:e=>{this.empty=e}},t("slot",{key:"ddca72965bd250ba5d657385a9db1a0ed68cfd15",name:"empty"})))),t("div",{key:"f402a30471f81a93def7b0b5a6ec208fb0d23db1",class:"conversation-list__fade scroll-edge-fade scroll-edge-fade--top","aria-hidden":"true"}),t("div",{key:"a32b51932a1fe8e65f9bf30bd38d9335fc86e381",class:{"conversation-list__actions":true,"conversation-list__actions--footer":this.actionLayout==="footer"},ref:e=>{this.overlay=e}},t("div",{key:"33f139fd8f5b7c9487d4649647e48c0523acff19",class:"conversation-list__actions-surface ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale"},t("slot",{key:"77129f4f13edbbd6068cfcb64803aa5f737e706c",name:"actions"})))))}get el(){return this}static get style(){return l()+r()}},[262,"ds-conversation-list",{actionLayout:[1,"action-layout"]}]);function n(){if(typeof customElements==="undefined"){return}const e=["ds-conversation-list"];e.forEach((e=>{switch(e){case"ds-conversation-list":if(!customElements.get(a(e))){customElements.define(a(e),d)}break}}))}n();const c=d;const f=n;export{c as DsConversationList,f as defineCustomElement};
|
|
1
|
+
import{p as s,H as e,h as t,a as o,t as i}from"./index.js";const n=()=>`.ds-control-elevation.sc-ds-conversation-list-h,.ds-control-elevation.sc-ds-conversation-list{position:relative;overflow:visible;box-shadow:var(--ds-control-elevation-shadow, none)}.ds-control-elevation.sc-ds-conversation-list-h::after,.ds-control-elevation.sc-ds-conversation-list::after{content:'';position:absolute;inset:0;z-index:4;border-radius:inherit;box-shadow:var(--ds-control-elevation-highlight, none);pointer-events:none}.ds-control-elevation--sm.sc-ds-conversation-list-h,.ds-control-elevation--sm.sc-ds-conversation-list{--ds-control-elevation-shadow:var(--effect-shadow-elevated-sm);--ds-control-elevation-highlight:var(--effect-highlight-elevated-sm)}.ds-control-elevation--md.sc-ds-conversation-list-h,.ds-control-elevation--md.sc-ds-conversation-list{--ds-control-elevation-shadow:var(--effect-shadow-elevated-md);--ds-control-elevation-highlight:var(--effect-highlight-elevated-md)}.ds-control-elevation--floating.sc-ds-conversation-list-h,.ds-control-elevation--floating.sc-ds-conversation-list{--ds-control-elevation-shadow:var(--effect-shadow-elevated-floating);--ds-control-elevation-highlight:var(--effect-highlight-elevated-floating)}.ds-control-elevation--press-scale.sc-ds-conversation-list{--ds-control-press-active-scale:var(--dimension-scale-default);transition:scale var(--effect-motion-short-2)}.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-conversation-list{scale:var(--dimension-scale-subtle)}@media (prefers-reduced-motion: reduce){.ds-control-elevation--press-scale.sc-ds-conversation-list,.ds-control-elevation--press-scale[data-ds-press-active].sc-ds-conversation-list{scale:none;transition:none}}.sc-ds-conversation-list-h{display:block;position:relative;width:100%;height:100%;min-height:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.conversation-list.sc-ds-conversation-list{position:relative;display:flex;flex-direction:column;width:100%;height:100%;min-height:0;box-sizing:border-box}.conversation-list__viewport.sc-ds-conversation-list{position:relative;flex:1 1 auto;min-height:0;overflow:auto;box-sizing:border-box}.conversation-list__content.sc-ds-conversation-list{position:relative;min-height:100%;padding:var(--dimension-space-100);box-sizing:border-box}.conversation-list__empty.sc-ds-conversation-list{position:absolute;inset:0;box-sizing:border-box}.conversation-list__empty.sc-ds-conversation-list:not(:has([slot='empty'])){display:none}.conversation-list__actions.sc-ds-conversation-list{position:absolute;right:0;bottom:0;z-index:var(--dimension-z-index-floating);padding:0 var(--dimension-space-200) var(--dimension-space-200) 0}.conversation-list__actions-surface.sc-ds-conversation-list{display:flex;border-radius:var(--dimension-radius-half)}.conversation-list__actions-surface.sc-ds-conversation-list:empty{display:none}`;const a=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.syncEmptyStateLayout=()=>{const s=this.el.querySelector('[slot="empty"]');if(s&&!this.empty?.contains(s)){s.style.setProperty("position","absolute");s.style.setProperty("inset-block-start","0");s.style.setProperty("inset-inline","0");s.style.setProperty("inset-block-end","0");s.style.setProperty("height","auto");s.style.setProperty("box-sizing","border-box")}}}componentDidLoad(){this.syncEmptyStateLayout();this.emptySlotObserver=new MutationObserver(this.syncEmptyStateLayout);this.emptySlotObserver.observe(this.el,{childList:true,subtree:true})}disconnectedCallback(){this.emptySlotObserver?.disconnect()}render(){return t(o,{key:"2010190cb35b0b6abdf6f8ac16b092ac698ffc88"},t("div",{key:"186318da4a03420e86dfb9da59c30c1d08029c89",class:"conversation-list"},t("div",{key:"9fb7e022fee5359675abbadc61632cf2a3e8428f",class:"conversation-list__viewport"},t("div",{key:"589dda199f65dbd2283a95f52ccfe3a105d6b589",class:"conversation-list__content"},t("slot",{key:"8ae3bc7869666fc8a3fec1034ff3075094de7633"}),t("div",{key:"32284009919ac055becd1a4b90891a8f45432b61",class:"conversation-list__empty",ref:s=>{this.empty=s}},t("slot",{key:"710406378c517a34378b9dd2562a4ba0fafd564a",name:"empty"})))),t("div",{key:"1a1d09a8c828ff923646c524b5639d959a429569",class:"conversation-list__actions"},t("div",{key:"5299e84ec5f1d9b8495314eb44f021943ba1cd2f",class:"conversation-list__actions-surface ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale"},t("slot",{key:"ee9d888d36d342bec3b0bd1fc7440773174fe3aa",name:"actions"})))))}get el(){return this}static get style(){return n()}},[262,"ds-conversation-list"]);function c(){if(typeof customElements==="undefined"){return}const s=["ds-conversation-list"];s.forEach((s=>{switch(s){case"ds-conversation-list":if(!customElements.get(i(s))){customElements.define(i(s),a)}break}}))}c();const l=a;const r=c;export{l as DsConversationList,r as defineCustomElement};
|
|
2
2
|
//# sourceMappingURL=ds-conversation-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["scrollEdgeFadeCss","conversationListCss","ConversationList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","actionLayout","syncEmptyStateLayout","emptyState","el","querySelector","empty","contains","style","setProperty","scrollOverlayController","sync","componentDidLoad","viewport","content","overlay","ScrollOverlayController","host","overlayContentSelector","connect","emptySlotObserver","MutationObserver","observe","childList","subtree","disconnectedCallback","disconnect","render","h","Host","key","class","ref","element","onScroll","name"],"sources":["src/wc/utils/scroll-edge-fade.css?tag=ds-conversation-list&encapsulation=scoped","src/wc/components/ConversationList/ConversationList.css?tag=ds-conversation-list&encapsulation=scoped","src/wc/components/ConversationList/ConversationList.tsx"],"sourcesContent":["/**\n * Scroll-edge alpha fade — the single edge-fade utility for overflow containers.\n * Masks scrolling content to transparent so flat surfaces, shell gradients, and\n * images show through.\n *\n * Static fades are the default (PanelNav intentionally keeps its bottom fade).\n * Add `.scroll-edge-fade--scroll-aware` to reveal/hide each configured edge from\n * the container's own scroll position without JavaScript. Browsers without CSS\n * scroll-driven animations retain the configured static fades.\n *\n * @see scroll-edge-fade.ts — `scrollEdgeFadeClassMap`, `isScrollAtEdge`, size helpers.\n */\n\n@property --ds-scroll-edge-fade-top {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-bottom {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-left {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@property --ds-scroll-edge-fade-right {\n syntax: '<length-percentage>';\n inherits: false;\n /* stylelint-disable-next-line length-zero-no-unit -- @property requires a unit-compatible initial value. */\n initial-value: 0px;\n}\n\n@keyframes ds-scroll-edge-fade-reveal-top {\n from {\n --ds-scroll-edge-fade-top: 0px;\n }\n to {\n --ds-scroll-edge-fade-top: var(--ds-scroll-edge-fade-target-top);\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-bottom {\n from {\n --ds-scroll-edge-fade-bottom: var(--ds-scroll-edge-fade-target-bottom);\n }\n to {\n --ds-scroll-edge-fade-bottom: 0px;\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-left {\n from {\n --ds-scroll-edge-fade-left: 0px;\n }\n to {\n --ds-scroll-edge-fade-left: var(--ds-scroll-edge-fade-target-left);\n }\n}\n\n@keyframes ds-scroll-edge-fade-reveal-right {\n from {\n --ds-scroll-edge-fade-right: var(--ds-scroll-edge-fade-target-right);\n }\n to {\n --ds-scroll-edge-fade-right: 0px;\n }\n}\n\n/* Mask gradients use #000 / transparent as alpha stops — not theme colors. */\n/* stylelint-disable color-no-hex */\n\n.scroll-edge-fade {\n --ds-scroll-edge-fade-size: var(--dimension-size-600);\n --ds-scroll-edge-fade-reveal-distance: var(--dimension-size-800);\n --ds-scroll-edge-fade-target-top: 0px;\n --ds-scroll-edge-fade-target-bottom: 0px;\n --ds-scroll-edge-fade-target-left: 0px;\n --ds-scroll-edge-fade-target-right: 0px;\n --ds-scroll-edge-fade-top: var(--ds-scroll-edge-fade-target-top);\n --ds-scroll-edge-fade-bottom: var(--ds-scroll-edge-fade-target-bottom);\n --ds-scroll-edge-fade-left: var(--ds-scroll-edge-fade-target-left);\n --ds-scroll-edge-fade-right: var(--ds-scroll-edge-fade-target-right);\n --ds-scroll-edge-fade-block-mask: linear-gradient(\n to bottom,\n transparent 0,\n #000 var(--ds-scroll-edge-fade-top),\n #000 calc(100% - var(--ds-scroll-edge-fade-bottom)),\n transparent 100%\n );\n --ds-scroll-edge-fade-inline-mask: linear-gradient(\n to right,\n transparent 0,\n #000 var(--ds-scroll-edge-fade-left),\n #000 calc(100% - var(--ds-scroll-edge-fade-right)),\n transparent 100%\n );\n\n /* Intersecting the block and inline masks lets every edge compose correctly. */\n -webkit-mask-image: var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);\n mask-image: var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);\n -webkit-mask-composite: source-in;\n mask-composite: intersect;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: 100% 100%;\n mask-size: 100% 100%;\n}\n\n.scroll-edge-fade--top {\n --ds-scroll-edge-fade-target-top: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--bottom {\n --ds-scroll-edge-fade-target-bottom: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--left {\n --ds-scroll-edge-fade-target-left: var(--ds-scroll-edge-fade-size);\n}\n\n.scroll-edge-fade--right {\n --ds-scroll-edge-fade-target-right: var(--ds-scroll-edge-fade-size);\n}\n\n/* Manual per-edge state remains available when scroll state already lives in JS. */\n.scroll-edge-fade--top-at-edge {\n --ds-scroll-edge-fade-target-top: 0px;\n}\n\n.scroll-edge-fade--bottom-at-edge {\n --ds-scroll-edge-fade-target-bottom: 0px;\n}\n\n.scroll-edge-fade--left-at-edge {\n --ds-scroll-edge-fade-target-left: 0px;\n}\n\n.scroll-edge-fade--right-at-edge {\n --ds-scroll-edge-fade-target-right: 0px;\n}\n\n@supports (animation-timeline: scroll()) {\n .scroll-edge-fade--scroll-aware {\n animation-name:\n ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom,\n ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;\n /* stylelint-disable-next-line declaration-property-value-disallowed-list -- scroll timelines require a nonzero sentinel duration; elapsed time is ignored. */\n animation-duration: 1ms;\n animation-timing-function: ease-in-out;\n animation-fill-mode: both;\n animation-timeline: scroll(self y), scroll(self y), scroll(self x), scroll(self x);\n animation-range:\n 0 var(--ds-scroll-edge-fade-reveal-distance),\n calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%,\n 0 var(--ds-scroll-edge-fade-reveal-distance),\n calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .scroll-edge-fade--scroll-aware {\n animation: none;\n }\n }\n}\n\n.scroll-edge-fade--at-end,\n.scroll-edge-fade--hidden {\n -webkit-mask-image: none;\n mask-image: none;\n}\n\n/**\n * Masks a long content element against a scrollport-relative block window.\n * The owner updates the start/end offsets as the scrollport moves. Keeping the\n * mask on the content instead of the overflow element leaves native scrollbars\n * outside the fade.\n */\n.scroll-edge-fade--block-window {\n --ds-scroll-edge-fade-window-start: 100%;\n --ds-scroll-edge-fade-window-end: 100%;\n\n -webkit-mask-image: linear-gradient(\n to bottom,\n #000 0,\n #000 var(--ds-scroll-edge-fade-window-start),\n transparent var(--ds-scroll-edge-fade-window-end)\n );\n mask-image: linear-gradient(\n to bottom,\n #000 0,\n #000 var(--ds-scroll-edge-fade-window-start),\n transparent var(--ds-scroll-edge-fade-window-end)\n );\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n}\n\n/* stylelint-enable color-no-hex */\n","@import '../../styles/control-elevation.css';\n\n:host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n}\n\n.conversation-list {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n.conversation-list__viewport {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n box-sizing: border-box;\n}\n\n.conversation-list__content {\n position: relative;\n min-height: 100%;\n padding: var(--dimension-space-100);\n padding-bottom: calc(var(--dimension-space-100) + var(--ds-scroll-overlay-block-size, 0px));\n box-sizing: border-box;\n}\n\n.conversation-list__fade {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n height: var(--ds-scroll-overlay-fade-block-size, 0);\n pointer-events: none;\n background-color: var(\n --ds-scroll-overlay-surface-color,\n var(--_shell-chrome-bg, var(--color-background-primary))\n );\n --ds-scroll-edge-fade-size: 100%;\n}\n\n.conversation-list__fade::before {\n content: '';\n position: absolute;\n inset: 0;\n background-image: var(--ds-scroll-overlay-surface-image, var(--ds-shell-gradient-image, none));\n background-position: var(--ds-scroll-overlay-surface-position, 0 0);\n background-attachment: fixed;\n background-size: var(--ds-scroll-overlay-surface-size, var(--ds-shell-gradient-size, auto));\n background-repeat: no-repeat;\n opacity: var(--ds-scroll-overlay-surface-image-opacity, var(--ds-shell-gradient-opacity, 1));\n}\n\n.conversation-list__empty {\n position: absolute;\n inset-block: 0 var(--ds-scroll-overlay-block-size, 0);\n inset-inline: 0;\n box-sizing: border-box;\n}\n\n/* The named slot itself keeps this wrapper from matching :empty. Only create\n its full-size hit area when assigned empty-state content is actually here. */\n.conversation-list__empty:not(:has([slot='empty'])) {\n display: none;\n}\n\n.conversation-list__actions {\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: var(--dimension-z-index-floating);\n padding: 0 var(--dimension-space-200) var(--dimension-space-200) 0;\n}\n\n.conversation-list__actions--footer {\n left: 0;\n padding: 0 var(--dimension-space-100) var(--dimension-space-100);\n}\n\n.conversation-list__actions-surface {\n display: flex;\n border-radius: var(--dimension-radius-half);\n}\n\n.conversation-list__actions--footer .conversation-list__actions-surface {\n width: 100%;\n}\n\n.conversation-list__actions-surface:empty {\n display: none;\n}\n","import { Component, Element, h, Host, Prop } from '@stencil/core';\nimport { ScrollOverlayController } from '../../utils/scroll-overlay-controller';\n\nexport type ConversationListActionLayout = 'floating' | 'footer';\n\n@Component({\n tag: 'ds-conversation-list',\n styleUrl: 'ConversationList.css',\n styleUrls: ['../../utils/scroll-edge-fade.css'],\n scoped: true,\n})\nexport class ConversationList {\n @Element() el!: HTMLElement;\n\n /** Corner icon action or full-width persistent footer action. */\n @Prop() actionLayout: ConversationListActionLayout = 'floating';\n\n private viewport?: HTMLElement;\n private content?: HTMLElement;\n private empty?: HTMLElement;\n private overlay?: HTMLElement;\n private scrollOverlayController?: ScrollOverlayController;\n private emptySlotObserver?: MutationObserver;\n\n componentDidLoad(): void {\n if (!this.viewport || !this.content || !this.overlay) return;\n this.scrollOverlayController = new ScrollOverlayController({\n host: this.el,\n viewport: this.viewport,\n content: this.content,\n overlay: this.overlay,\n overlayContentSelector: '[slot=\"actions\"]',\n });\n this.scrollOverlayController.connect();\n this.syncEmptyStateLayout();\n this.emptySlotObserver = new MutationObserver(this.syncEmptyStateLayout);\n this.emptySlotObserver.observe(this.el, { childList: true, subtree: true });\n }\n\n disconnectedCallback(): void {\n this.scrollOverlayController?.disconnect();\n this.emptySlotObserver?.disconnect();\n }\n\n private syncEmptyStateLayout = (): void => {\n const emptyState = this.el.querySelector<HTMLElement>('[slot=\"empty\"]');\n if (emptyState && !this.empty?.contains(emptyState)) {\n // Stencil's scoped-slot runtime does not relocate nodes appended after\n // hydration. Keep that dynamic fallback aligned with the CSS-owned\n // wrapper used by declarative slot content.\n emptyState.style.setProperty('position', 'absolute');\n emptyState.style.setProperty('inset-block-start', '0');\n emptyState.style.setProperty('inset-inline', '0');\n emptyState.style.setProperty('inset-block-end', 'var(--ds-scroll-overlay-block-size, 0)');\n emptyState.style.setProperty('height', 'auto');\n emptyState.style.setProperty('box-sizing', 'border-box');\n }\n this.scrollOverlayController?.sync();\n };\n\n render() {\n return (\n <Host>\n <div class=\"conversation-list\">\n <div\n class=\"conversation-list__viewport\"\n ref={element => {\n this.viewport = element;\n }}\n onScroll={() => this.scrollOverlayController?.sync()}\n >\n <div\n class=\"conversation-list__content\"\n ref={element => {\n this.content = element;\n }}\n >\n <slot />\n <div\n class=\"conversation-list__empty\"\n ref={element => {\n this.empty = element;\n }}\n >\n <slot name=\"empty\" />\n </div>\n </div>\n </div>\n <div\n class=\"conversation-list__fade scroll-edge-fade scroll-edge-fade--top\"\n aria-hidden=\"true\"\n />\n <div\n class={{\n 'conversation-list__actions': true,\n 'conversation-list__actions--footer': this.actionLayout === 'footer',\n }}\n ref={element => {\n this.overlay = element;\n }}\n >\n <div class=\"conversation-list__actions-surface ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\">\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"+FAAA,MAAMA,EAAoB,IAAM,ihJCAhC,MAAMC,EAAsB,IAAM,29H,MCWrBC,EAAgBC,EAAA,MAAAD,UAAAE,EAN7B,WAAAC,CAAAC,G,4CAUUC,KAAAC,aAA6C,WA6B7CD,KAAAE,qBAAuB,KAC7B,MAAMC,EAAaH,KAAKI,GAAGC,cAA2B,kBACtD,GAAIF,IAAeH,KAAKM,OAAOC,SAASJ,GAAa,CAInDA,EAAWK,MAAMC,YAAY,WAAY,YACzCN,EAAWK,MAAMC,YAAY,oBAAqB,KAClDN,EAAWK,MAAMC,YAAY,eAAgB,KAC7CN,EAAWK,MAAMC,YAAY,kBAAmB,0CAChDN,EAAWK,MAAMC,YAAY,SAAU,QACvCN,EAAWK,MAAMC,YAAY,aAAc,a,CAE7CT,KAAKU,yBAAyBC,MAAM,CAoDvC,CArFC,gBAAAC,GACE,IAAKZ,KAAKa,WAAab,KAAKc,UAAYd,KAAKe,QAAS,OACtDf,KAAKU,wBAA0B,IAAIM,EAAwB,CACzDC,KAAMjB,KAAKI,GACXS,SAAUb,KAAKa,SACfC,QAASd,KAAKc,QACdC,QAASf,KAAKe,QACdG,uBAAwB,qBAE1BlB,KAAKU,wBAAwBS,UAC7BnB,KAAKE,uBACLF,KAAKoB,kBAAoB,IAAIC,iBAAiBrB,KAAKE,sBACnDF,KAAKoB,kBAAkBE,QAAQtB,KAAKI,GAAI,CAAEmB,UAAW,KAAMC,QAAS,M,CAGtE,oBAAAC,GACEzB,KAAKU,yBAAyBgB,aAC9B1B,KAAKoB,mBAAmBM,Y,CAmB1B,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACTH,EAAA,OAAAE,IAAA,2CACEC,MAAM,8BACNC,IAAKC,IACHjC,KAAKa,SAAWoB,CAAO,EAEzBC,SAAU,IAAMlC,KAAKU,yBAAyBC,QAE9CiB,EAAA,OAAAE,IAAA,2CACEC,MAAM,6BACNC,IAAKC,IACHjC,KAAKc,QAAUmB,CAAO,GAGxBL,EAAA,QAAAE,IAAA,6CACAF,EAAA,OAAAE,IAAA,2CACEC,MAAM,2BACNC,IAAKC,IACHjC,KAAKM,MAAQ2B,CAAO,GAGtBL,EAAA,QAAAE,IAAA,2CAAMK,KAAK,aAIjBP,EAAA,OAAAE,IAAA,2CACEC,MAAM,iEAAgE,cAC1D,SAEdH,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,6BAA8B,KAC9B,qCAAsC/B,KAAKC,eAAiB,UAE9D+B,IAAKC,IACHjC,KAAKe,QAAUkB,CAAO,GAGxBL,EAAA,OAAAE,IAAA,2CAAKC,MAAM,sHACTH,EAAA,QAAAE,IAAA,2CAAMK,KAAK,e","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["conversationListCss","ConversationList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","syncEmptyStateLayout","emptyState","el","querySelector","empty","contains","style","setProperty","componentDidLoad","emptySlotObserver","MutationObserver","observe","childList","subtree","disconnectedCallback","disconnect","render","h","Host","key","class","ref","element","name"],"sources":["src/wc/components/ConversationList/ConversationList.css?tag=ds-conversation-list&encapsulation=scoped","src/wc/components/ConversationList/ConversationList.tsx"],"sourcesContent":["@import '../../styles/control-elevation.css';\n\n:host {\n display: block;\n position: relative;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n}\n\n.conversation-list {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n.conversation-list__viewport {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n box-sizing: border-box;\n}\n\n.conversation-list__content {\n position: relative;\n min-height: 100%;\n padding: var(--dimension-space-100);\n box-sizing: border-box;\n}\n\n.conversation-list__empty {\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n}\n\n/* The named slot itself keeps this wrapper from matching :empty. Only create\n its full-size hit area when assigned empty-state content is actually here. */\n.conversation-list__empty:not(:has([slot='empty'])) {\n display: none;\n}\n\n/* Corner action. Rows scroll beneath it — there is no reserved clearance and no\n fade, so the list keeps its full height whether or not an action is slotted. */\n.conversation-list__actions {\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: var(--dimension-z-index-floating);\n padding: 0 var(--dimension-space-200) var(--dimension-space-200) 0;\n}\n\n.conversation-list__actions-surface {\n display: flex;\n border-radius: var(--dimension-radius-half);\n}\n\n.conversation-list__actions-surface:empty {\n display: none;\n}\n","import { Component, Element, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'ds-conversation-list',\n styleUrl: 'ConversationList.css',\n scoped: true,\n})\nexport class ConversationList {\n @Element() el!: HTMLElement;\n\n private empty?: HTMLElement;\n private emptySlotObserver?: MutationObserver;\n\n componentDidLoad(): void {\n this.syncEmptyStateLayout();\n this.emptySlotObserver = new MutationObserver(this.syncEmptyStateLayout);\n this.emptySlotObserver.observe(this.el, { childList: true, subtree: true });\n }\n\n disconnectedCallback(): void {\n this.emptySlotObserver?.disconnect();\n }\n\n private syncEmptyStateLayout = (): void => {\n const emptyState = this.el.querySelector<HTMLElement>('[slot=\"empty\"]');\n if (emptyState && !this.empty?.contains(emptyState)) {\n // Stencil's scoped-slot runtime does not relocate nodes appended after\n // hydration. Keep that dynamic fallback aligned with the CSS-owned\n // wrapper used by declarative slot content.\n emptyState.style.setProperty('position', 'absolute');\n emptyState.style.setProperty('inset-block-start', '0');\n emptyState.style.setProperty('inset-inline', '0');\n emptyState.style.setProperty('inset-block-end', '0');\n emptyState.style.setProperty('height', 'auto');\n emptyState.style.setProperty('box-sizing', 'border-box');\n }\n };\n\n render() {\n return (\n <Host>\n <div class=\"conversation-list\">\n <div class=\"conversation-list__viewport\">\n <div class=\"conversation-list__content\">\n <slot />\n <div\n class=\"conversation-list__empty\"\n ref={element => {\n this.empty = element;\n }}\n >\n <slot name=\"empty\" />\n </div>\n </div>\n </div>\n <div class=\"conversation-list__actions\">\n <div class=\"conversation-list__actions-surface ds-control-elevation ds-control-elevation--md ds-control-elevation--press-scale\">\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAsB,IAAM,swF,MCOrBC,EAAgBC,EAAA,MAAAD,UAAAE,EAL7B,WAAAC,CAAAC,G,4CAqBUC,KAAAC,qBAAuB,KAC7B,MAAMC,EAAaF,KAAKG,GAAGC,cAA2B,kBACtD,GAAIF,IAAeF,KAAKK,OAAOC,SAASJ,GAAa,CAInDA,EAAWK,MAAMC,YAAY,WAAY,YACzCN,EAAWK,MAAMC,YAAY,oBAAqB,KAClDN,EAAWK,MAAMC,YAAY,eAAgB,KAC7CN,EAAWK,MAAMC,YAAY,kBAAmB,KAChDN,EAAWK,MAAMC,YAAY,SAAU,QACvCN,EAAWK,MAAMC,YAAY,aAAc,a,EA8BhD,CAnDC,gBAAAC,GACET,KAAKC,uBACLD,KAAKU,kBAAoB,IAAIC,iBAAiBX,KAAKC,sBACnDD,KAAKU,kBAAkBE,QAAQZ,KAAKG,GAAI,CAAEU,UAAW,KAAMC,QAAS,M,CAGtE,oBAAAC,GACEf,KAAKU,mBAAmBM,Y,CAkB1B,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,+BACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,8BACTH,EAAA,QAAAE,IAAA,6CACAF,EAAA,OAAAE,IAAA,2CACEC,MAAM,2BACNC,IAAKC,IACHvB,KAAKK,MAAQkB,CAAO,GAGtBL,EAAA,QAAAE,IAAA,2CAAMI,KAAK,aAIjBN,EAAA,OAAAE,IAAA,2CAAKC,MAAM,8BACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,sHACTH,EAAA,QAAAE,IAAA,2CAAMI,KAAK,e","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface DsDataCustomize extends Components.DsDataCustomize, HTMLElement {}
|
|
4
|
+
export const DsDataCustomize: {
|
|
5
|
+
prototype: DsDataCustomize;
|
|
6
|
+
new (): DsDataCustomize;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as s,H as e,c as t,h as i,a,t as n}from"./index.js";import{l as o,r,t as d}from"./p-BYrBU_U9.js";import{d as h}from"./p-ZhP2tVmM.js";import{d as l}from"./p-Dzndkdx5.js";import{d as c}from"./p-DjkUFlDW.js";import{d as m}from"./p-0XTyQNRG.js";import{d as u}from"./p-BKZdqJQB.js";import{d as f}from"./p-Bn8I7iw6.js";import{d as p}from"./p-D0y7Sja6.js";import{d as b}from"./p-D922f6Tb.js";import{d as g}from"./p-DwbcNDJF.js";import{d as k}from"./p-CYzFfFcH.js";const j=()=>`.sc-ds-data-customize-h{display:inline-flex;min-inline-size:0;max-inline-size:var(--dimension-menu-width-xs)}[hidden].sc-ds-data-customize-h{display:none}`;let z=0;const E=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.dsFieldsConfigChange=t(this,"dsFieldsConfigChange",3);this.dsOptionChange=t(this,"dsOptionChange",3);this.hasBorder=true;this.fields=[];this.hiddenFieldIds=[];this.fieldOrder=[];this.reorderable=false;this.minVisible=0;this.options=[];this.optionsHeader="Options";this.ariaLabel=null;this.label="Customize";this.menuOpen=false;this.menuSurfaceOpen=false;this.initialFocusVisible=false;this.componentId=`ds-data-customize-${++z}`;this.triggerId=`${this.componentId}-trigger`;this.menuId=`${this.componentId}-menu`}async setFocus(){const s=this.el.querySelector(`#${CSS.escape(this.triggerId)}`);await(s?.setFocus?.())}get customizerOptions(){return{minVisible:this.minVisible,reorderable:this.reorderable}}get catalog(){return this.fields.map((s=>({id:s.id,label:s.label.trim()||s.accessibleLabel?.trim()||s.id})))}get sections(){const s=o(this.catalog,this.hiddenFieldIds,this.fieldOrder,this.customizerOptions);return[...s.length?[{header:this.catalogHeader??(this.options.length?"Data":undefined),items:s}]:[],...this.options.length?[{header:this.optionsHeader,items:this.options}]:[]]}render(){const s=this.ariaLabel?.trim()||this.label?.trim()||"Customize";const e=this.fields.length===0&&this.options.length===0;return i(a,{key:"7cc457256a1bfc795b0aca45b8c84e2312e07792",hidden:e?true:undefined},e?null:i("ds-button-unfilled",{hasBorder:this.hasBorder,id:this.triggerId,variant:"icon-label",size:"md",icon:"ViewMenu",label:this.label,labelEmphasis:false,pressScale:false,"aria-label":s,haspopup:"menu",collapseLabel:true,expanded:this.menuOpen,surfaceOpen:this.menuSurfaceOpen,controls:this.menuId,onDsClick:s=>{this.toggle(s.detail.detail===0)}}),e?null:i("ds-menu",{id:this.menuId,open:this.menuOpen,anchorId:this.triggerId,align:"start",side:"bottom",menuLabel:s,selectionMode:"none",initialFocusVisible:this.initialFocusVisible,sections:this.sections,onDsClose:()=>this.close(),onDsAfterClose:()=>{if(!this.menuOpen)this.menuSurfaceOpen=false},onDsSelect:s=>this.handleSelect(s.detail),onDsReorder:s=>this.handleReorder(s.detail.items)}))}toggle(s=false){if(this.menuOpen)this.close();else this.open(s)}open(s=false){if(this.menuOpen)return;this.initialFocusVisible=s;this.menuOpen=true;this.menuSurfaceOpen=true}close(){this.menuOpen=false}handleSelect(s){const e=s.value;if(!e||s.isInactive)return;if(this.options.some((s=>s.value===e))){this.dsOptionChange.emit(e);return}const t=this.catalog.map((s=>s.id));this.dsFieldsConfigChange.emit({hiddenFieldIds:d(t,this.hiddenFieldIds,e,this.customizerOptions),fieldOrder:r(t,this.fieldOrder)})}handleReorder(s){if(!this.reorderable)return;const e=s.filter((s=>s.reorderable&&s.value)).map((s=>s.value));if(e.length===0)return;this.dsFieldsConfigChange.emit({hiddenFieldIds:this.hiddenFieldIds,fieldOrder:r(this.catalog.map((s=>s.id)),e)})}get el(){return this}static get style(){return j()}},[2,"ds-data-customize",{hasBorder:[4,"has-border"],fields:[16],hiddenFieldIds:[16],fieldOrder:[16],reorderable:[4],minVisible:[2,"min-visible"],catalogHeader:[1,"catalog-header"],options:[16],optionsHeader:[1,"options-header"],ariaLabel:[1,"aria-label"],label:[1],menuOpen:[32],menuSurfaceOpen:[32],initialFocusVisible:[32],setFocus:[64]}]);function D(){if(typeof customElements==="undefined"){return}const s=["ds-data-customize","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-data-customize":if(!customElements.get(n(s))){customElements.define(n(s),E)}break;case"ds-badge":if(!customElements.get(n(s))){h()}break;case"ds-button-unfilled":if(!customElements.get(n(s))){l()}break;case"ds-icon":if(!customElements.get(n(s))){c()}break;case"ds-loader":if(!customElements.get(n(s))){m()}break;case"ds-menu":if(!customElements.get(n(s))){u()}break;case"ds-swatch-picker":if(!customElements.get(n(s))){f()}break;case"ds-switch":if(!customElements.get(n(s))){p()}break;case"ds-tag":if(!customElements.get(n(s))){b()}break;case"ds-text":if(!customElements.get(n(s))){g()}break;case"ds-tooltip":if(!customElements.get(n(s))){k()}break}}))}D();const F=E;const w=D;export{F as DsDataCustomize,w as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ds-data-customize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dataCustomizeCss","dataCustomizeSeq","DataCustomize","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","hasBorder","fields","hiddenFieldIds","fieldOrder","reorderable","minVisible","options","optionsHeader","ariaLabel","label","menuOpen","menuSurfaceOpen","initialFocusVisible","componentId","triggerId","menuId","setFocus","trigger","el","querySelector","CSS","escape","customizerOptions","catalog","map","field","id","trim","accessibleLabel","sections","rows","listCustomizerMenuItems","length","header","catalogHeader","undefined","items","render","name","empty","h","Host","key","hidden","variant","size","icon","labelEmphasis","pressScale","haspopup","collapseLabel","expanded","surfaceOpen","controls","onDsClick","event","toggle","detail","open","anchorId","align","side","menuLabel","selectionMode","onDsClose","close","onDsAfterClose","onDsSelect","handleSelect","onDsReorder","handleReorder","fromKeyboard","item","value","isInactive","some","option","dsOptionChange","emit","ids","entry","dsFieldsConfigChange","toggleListHidden","resolveListOrder","next","filter"],"sources":["src/wc/components/DataCustomize/DataCustomize.css?tag=ds-data-customize&encapsulation=scoped","src/wc/components/DataCustomize/DataCustomize.tsx"],"sourcesContent":[":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","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n} from '@stencil/core';\nimport type { DataField } from '../../utils/data-field';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n listCustomizerMenuItems,\n resolveListOrder,\n toggleListHidden,\n type ListCustomizerOptions,\n} from '../../utils/list-customizer';\n\nexport interface DataCustomizeChangeDetail {\n /** Fields the viewer has hidden, in the order they were hidden. */\n hiddenFieldIds: string[];\n /** Field ids in display order. Unchanged unless the catalog reorders. */\n fieldOrder: string[];\n}\n\nlet dataCustomizeSeq = 0;\n\n/**\n * Show, hide and optionally reorder the data points a view renders.\n *\n * The table owns its own column customizer inside the caption, because a table\n * locks its last visible column and reorders columns. This control is the same\n * catalog for every other surface — a card list, a map overlay — where the\n * fields are independent and usually only show and hide.\n */\n@Component({\n tag: 'ds-data-customize',\n styleUrl: 'DataCustomize.css',\n scoped: true,\n})\nexport class DataCustomize {\n @Element() private el!: HTMLElement;\n\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n /** Catalog of data points the view can render. */\n @Prop() fields: DataField[] = [];\n /** Controlled hidden field ids. */\n @Prop() hiddenFieldIds: string[] = [];\n /** Controlled display order. Ids missing from it keep catalog order. */\n @Prop() fieldOrder: string[] = [];\n /**\n * Drag-reorder the catalog rows. Off by default: most surfaces only show and\n * hide, and a card layout has no column order to express.\n */\n @Prop() reorderable: boolean = false;\n /**\n * Fields that must stay visible. Zero by default, so a view whose identity\n * lives outside this catalog can hide every entry in it.\n */\n @Prop() minVisible: number = 0;\n /** Section header above the catalog rows. Omitted when there is no second section. */\n @Prop() catalogHeader?: string;\n /** Extra switch rows rendered in their own Options section. */\n @Prop() options: MenuItemData[] = [];\n /** Header for the options section. */\n @Prop() optionsHeader: string = 'Options';\n /** Accessible name for the trigger and menu. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Visible trigger label. Collapses to the icon when space is tight. */\n @Prop() label: string = 'Customize';\n\n @Event({ bubbles: false }) dsFieldsConfigChange!: EventEmitter<DataCustomizeChangeDetail>;\n @Event({ bubbles: false }) dsOptionChange!: EventEmitter<string>;\n\n @State() private menuOpen = false;\n @State() private menuSurfaceOpen = false;\n @State() private initialFocusVisible = false;\n\n private readonly componentId = `ds-data-customize-${++dataCustomizeSeq}`;\n private readonly triggerId = `${this.componentId}-trigger`;\n private readonly menuId = `${this.componentId}-menu`;\n\n @Method()\n async setFocus() {\n const trigger = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${CSS.escape(this.triggerId)}`\n );\n await trigger?.setFocus?.();\n }\n\n private get customizerOptions(): ListCustomizerOptions {\n return { minVisible: this.minVisible, reorderable: this.reorderable };\n }\n\n private get catalog(): { id: string; label: string }[] {\n return this.fields.map(field => ({\n id: field.id,\n label: field.label.trim() || field.accessibleLabel?.trim() || field.id,\n }));\n }\n\n private get sections(): MenuSection[] {\n const rows = listCustomizerMenuItems(\n this.catalog,\n this.hiddenFieldIds,\n this.fieldOrder,\n this.customizerOptions\n );\n\n return [\n ...(rows.length\n ? [\n {\n header: this.catalogHeader ?? (this.options.length ? 'Data' : undefined),\n items: rows,\n },\n ]\n : []),\n ...(this.options.length ? [{ header: this.optionsHeader, items: this.options }] : []),\n ];\n }\n\n render() {\n const name = this.ariaLabel?.trim() || this.label?.trim() || 'Customize';\n const empty = this.fields.length === 0 && this.options.length === 0;\n\n return (\n <Host hidden={empty ? true : undefined}>\n {empty ? null : (\n <ds-button-unfilled\n hasBorder={this.hasBorder}\n id={this.triggerId}\n variant=\"icon-label\"\n size=\"md\"\n icon=\"ViewMenu\"\n label={this.label}\n labelEmphasis={false}\n pressScale={false}\n aria-label={name}\n haspopup=\"menu\"\n collapseLabel={true}\n expanded={this.menuOpen}\n surfaceOpen={this.menuSurfaceOpen}\n controls={this.menuId}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n this.toggle(event.detail.detail === 0);\n }}\n />\n )}\n {empty ? null : (\n <ds-menu\n id={this.menuId}\n open={this.menuOpen}\n anchorId={this.triggerId}\n align=\"start\"\n side=\"bottom\"\n menuLabel={name}\n selectionMode=\"none\"\n initialFocusVisible={this.initialFocusVisible}\n sections={this.sections}\n onDsClose={() => this.close()}\n onDsAfterClose={() => {\n if (!this.menuOpen) this.menuSurfaceOpen = false;\n }}\n onDsSelect={event => this.handleSelect(event.detail)}\n onDsReorder={event => this.handleReorder(event.detail.items)}\n />\n )}\n </Host>\n );\n }\n\n private toggle(fromKeyboard = false): void {\n if (this.menuOpen) this.close();\n else this.open(fromKeyboard);\n }\n\n private open(fromKeyboard = false): void {\n if (this.menuOpen) return;\n this.initialFocusVisible = fromKeyboard;\n this.menuOpen = true;\n this.menuSurfaceOpen = true;\n }\n\n private close(): void {\n this.menuOpen = false;\n }\n\n private handleSelect(item: MenuItemData): void {\n const value = item.value;\n if (!value || item.isInactive) return;\n\n if (this.options.some(option => option.value === value)) {\n this.dsOptionChange.emit(value);\n return;\n }\n\n const ids = this.catalog.map(entry => entry.id);\n this.dsFieldsConfigChange.emit({\n hiddenFieldIds: toggleListHidden(ids, this.hiddenFieldIds, value, this.customizerOptions),\n fieldOrder: resolveListOrder(ids, this.fieldOrder),\n });\n }\n\n private handleReorder(items: MenuItemData[]): void {\n if (!this.reorderable) return;\n\n // Menu reports the new order of the reorderable run. resolveListOrder\n // rebuilds the full order from it, appending anything the run omitted.\n const next = items\n .filter(item => item.reorderable && item.value)\n .map(item => item.value as string);\n if (next.length === 0) return;\n\n this.dsFieldsConfigChange.emit({\n hiddenFieldIds: this.hiddenFieldIds,\n fieldOrder: resolveListOrder(\n this.catalog.map(entry => entry.id),\n next\n ),\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Components, JSX } from "../types/components";
|
|
2
2
|
|
|
3
|
-
interface
|
|
4
|
-
export const
|
|
5
|
-
prototype:
|
|
6
|
-
new ():
|
|
3
|
+
interface DsDataFilter extends Components.DsDataFilter, HTMLElement {}
|
|
4
|
+
export const DsDataFilter: {
|
|
5
|
+
prototype: DsDataFilter;
|
|
6
|
+
new (): DsDataFilter;
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
9
|
* Used to define this component and all nested components recursively.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as s,c as t,h as i,a,t as r}from"./index.js";import{d as l}from"./p-ZhP2tVmM.js";import{d as o}from"./p-Dzndkdx5.js";import{d}from"./p-0FYD2bev.js";import{d as n}from"./p-D6Wl3dRO.js";import{d as c}from"./p-7V1AhetH.js";import{d as h}from"./p-0qY_HDId.js";import{d as m}from"./p-Nc76seSq.js";import{d as f}from"./p-DjkUFlDW.js";import{d as u}from"./p-Di5FH7eh.js";import{d as p}from"./p-0XTyQNRG.js";import{d as b}from"./p-DHICPS4n.js";import{d as g}from"./p-D922f6Tb.js";import{d as k}from"./p-DwbcNDJF.js";import{d as C}from"./p-CYzFfFcH.js";const D=()=>`.sc-ds-data-filter-h{display:inline-flex;min-inline-size:0;max-inline-size:var(--dimension-menu-width-xs)}ds-filter-menu.sc-ds-data-filter{min-inline-size:0;max-inline-size:100%;--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs)}`;const E=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsChange=t(this,"dsChange",7);this.dsClear=t(this,"dsClear",7);this.dsMatchModeChange=t(this,"dsMatchModeChange",7);this.dsActiveFilterChange=t(this,"dsActiveFilterChange",7);this.dsClose=t(this,"dsClose",7);this.dsOpenChange=t(this,"dsOpenChange",7);this.dsAfterClose=t(this,"dsAfterClose",7);this.open=false;this.hasBorder=true;this.filters=[];this.values={};this.matchModes={};this.label="Filter";this.ariaLabel=null;this.menuLabel=null;this.categoriesLabel="Filter categories";this.clearLabel="Clear";this.searchPlaceholder="Search";this.noResultsText="No results"}render(){const e=this.ariaLabel?.trim()||"Filter table";const s=this.menuLabel?.trim()||e;return i(a,{key:"c80d73e5d8f67100f379d02052e612e33115f323"},i("ds-filter-menu",{key:"d7bbe86661706fe81994c6a374cbca470be7205e",neutralTrigger:true,applyRequired:true,open:this.open,triggerLabel:this.label,showSelectedCount:false,showIndicator:false,icon:"Filters",size:"md",width:"hug",hasBorder:this.hasBorder,activeFill:false,collapseLabel:true,align:"start","aria-label":e,filters:this.filters,values:this.values,matchModes:this.matchModes,activeFilterId:this.activeFilterId,menuLabel:s,categoriesLabel:this.categoriesLabel,clearLabel:this.clearLabel,searchPlaceholder:this.searchPlaceholder,noResultsText:this.noResultsText,footerLayout:"categories-clear",onDsChange:e=>this.forward(e,this.dsChange),onDsClear:e=>this.forward(e,this.dsClear),onDsMatchModeChange:e=>this.forward(e,this.dsMatchModeChange),onDsActiveFilterChange:e=>this.forward(e,this.dsActiveFilterChange),onDsClose:e=>this.forward(e,this.dsClose),onDsOpenChange:e=>{e.stopPropagation();this.open=e.detail;this.dsOpenChange.emit(e.detail)},onDsAfterClose:e=>this.forward(e,this.dsAfterClose)}))}forward(e,s){e.stopPropagation();s.emit(e.detail)}static get style(){return D()}},[2,"ds-data-filter",{open:[1028],hasBorder:[4,"has-border"],filters:[16],values:[16],matchModes:[16],activeFilterId:[1,"active-filter-id"],label:[1],ariaLabel:[1,"aria-label"],menuLabel:[1,"menu-label"],categoriesLabel:[1,"categories-label"],clearLabel:[1,"clear-label"],searchPlaceholder:[1,"search-placeholder"],noResultsText:[1,"no-results-text"]}]);function j(){if(typeof customElements==="undefined"){return}const e=["ds-data-filter","ds-badge","ds-button-unfilled","ds-calendar","ds-checkbox","ds-divider","ds-empty-state","ds-filter-menu","ds-icon","ds-input","ds-loader","ds-tab-group","ds-tag","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-data-filter":if(!customElements.get(r(e))){customElements.define(r(e),E)}break;case"ds-badge":if(!customElements.get(r(e))){l()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){o()}break;case"ds-calendar":if(!customElements.get(r(e))){d()}break;case"ds-checkbox":if(!customElements.get(r(e))){n()}break;case"ds-divider":if(!customElements.get(r(e))){c()}break;case"ds-empty-state":if(!customElements.get(r(e))){h()}break;case"ds-filter-menu":if(!customElements.get(r(e))){m()}break;case"ds-icon":if(!customElements.get(r(e))){f()}break;case"ds-input":if(!customElements.get(r(e))){u()}break;case"ds-loader":if(!customElements.get(r(e))){p()}break;case"ds-tab-group":if(!customElements.get(r(e))){b()}break;case"ds-tag":if(!customElements.get(r(e))){g()}break;case"ds-text":if(!customElements.get(r(e))){k()}break;case"ds-tooltip":if(!customElements.get(r(e))){C()}break}}))}j();const x=E;const F=j;export{x as DsDataFilter,F as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ds-data-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dataFilterCss","DataFilter","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","open","hasBorder","filters","values","matchModes","label","ariaLabel","menuLabel","categoriesLabel","clearLabel","searchPlaceholder","noResultsText","render","name","trim","menuName","h","Host","key","neutralTrigger","applyRequired","triggerLabel","showSelectedCount","showIndicator","icon","size","width","activeFill","collapseLabel","align","activeFilterId","footerLayout","onDsChange","event","forward","dsChange","onDsClear","dsClear","onDsMatchModeChange","dsMatchModeChange","onDsActiveFilterChange","dsActiveFilterChange","onDsClose","dsClose","onDsOpenChange","stopPropagation","detail","dsOpenChange","emit","onDsAfterClose","dsAfterClose","emitter"],"sources":["src/wc/components/DataFilter/DataFilter.css?tag=ds-data-filter&encapsulation=scoped","src/wc/components/DataFilter/DataFilter.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n min-inline-size: 0;\n max-inline-size: var(--dimension-menu-width-xs);\n}\n\nds-filter-menu {\n min-inline-size: 0;\n max-inline-size: 100%;\n --ds-choice-popup-min-inline-size: var(--dimension-menu-width-xs);\n}\n","import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport type {\n FilterMenuChangeDetail,\n FilterMenuFilter,\n FilterMenuMatchModeChangeDetail,\n FilterMenuMatchModes,\n FilterMenuValues,\n} from '../FilterMenu/FilterMenu';\n\n@Component({\n tag: 'ds-data-filter',\n styleUrl: 'DataFilter.css',\n scoped: true,\n})\nexport class DataFilter {\n /** Controlled popup visibility. */\n @Prop({ mutable: true }) open: boolean = false;\n /** Product-owned filter categories and option definitions. */\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() filters: FilterMenuFilter[] = [];\n /** Controlled values keyed by filter id. */\n @Prop() values: FilterMenuValues = {};\n /** Controlled any/all match mode keyed by multiple-choice filter id. Defaults to any. */\n @Prop() matchModes: FilterMenuMatchModes = {};\n /** Controlled category shown in the option pane. */\n @Prop() activeFilterId: string | undefined;\n /** Visible trigger label. */\n @Prop() label: string = 'Filter';\n /** Accessible name for the trigger. Defaults to Filter table. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Accessible name for the non-modal filter dialog. Defaults to the trigger name. */\n @Prop() menuLabel: string | null = null;\n /** Accessible name for the category tab list. */\n @Prop() categoriesLabel: string = 'Filter categories';\n /** Footer action and date-clear accessible label. */\n @Prop() clearLabel: string = 'Clear';\n /** Placeholder shown in each non-date option search header. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Empty-state text shown when an option search has no matches. */\n @Prop() noResultsText: string = 'No results';\n\n /** Requests a controlled value replacement without closing the popup. */\n @Event() dsChange!: EventEmitter<FilterMenuChangeDetail>;\n /** Requests that the consumer clear every filter value. */\n @Event() dsClear!: EventEmitter<void>;\n /** Requests a controlled any/all mode replacement for a multiple-choice filter. */\n @Event() dsMatchModeChange!: EventEmitter<FilterMenuMatchModeChangeDetail>;\n /** Requests a controlled active-category replacement. */\n @Event() dsActiveFilterChange!: EventEmitter<string>;\n /** Requests that the controlled popup close. */\n @Event() dsClose!: EventEmitter<void>;\n /** Emitted whenever trigger activation changes popup visibility. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted after exit motion and rendered popup removal complete. */\n @Event() dsAfterClose!: EventEmitter<void>;\n\n render() {\n const name = this.ariaLabel?.trim() || 'Filter table';\n const menuName = this.menuLabel?.trim() || name;\n\n return (\n <Host>\n <ds-filter-menu\n neutralTrigger\n applyRequired\n open={this.open}\n triggerLabel={this.label}\n showSelectedCount={false}\n showIndicator={false}\n icon=\"Filters\"\n size=\"md\"\n width=\"hug\"\n hasBorder={this.hasBorder}\n activeFill={false}\n collapseLabel={true}\n align=\"start\"\n aria-label={name}\n filters={this.filters}\n values={this.values}\n matchModes={this.matchModes}\n activeFilterId={this.activeFilterId}\n menuLabel={menuName}\n categoriesLabel={this.categoriesLabel}\n clearLabel={this.clearLabel}\n searchPlaceholder={this.searchPlaceholder}\n noResultsText={this.noResultsText}\n footerLayout=\"categories-clear\"\n onDsChange={event => this.forward(event, this.dsChange)}\n onDsClear={event => this.forward(event, this.dsClear)}\n onDsMatchModeChange={event => this.forward(event, this.dsMatchModeChange)}\n onDsActiveFilterChange={event => this.forward(event, this.dsActiveFilterChange)}\n onDsClose={event => this.forward(event, this.dsClose)}\n onDsOpenChange={event => {\n event.stopPropagation();\n this.open = event.detail;\n this.dsOpenChange.emit(event.detail);\n }}\n onDsAfterClose={event => this.forward(event, this.dsAfterClose)}\n />\n </Host>\n );\n }\n\n private forward<T>(event: CustomEvent<T>, emitter: EventEmitter<T>): void {\n event.stopPropagation();\n emitter.emit(event.detail);\n }\n}\n"],"mappings":"gjBAAA,MAAMA,EAAgB,IAAM,sP,MCcfC,EAAUC,EAAA,MAAAD,UAAAE,EALvB,WAAAC,CAAAC,G,uVAO2BC,KAAAC,KAAgB,MAGjCD,KAAAE,UAAqB,KACrBF,KAAAG,QAA8B,GAE9BH,KAAAI,OAA2B,GAE3BJ,KAAAK,WAAmC,GAInCL,KAAAM,MAAgB,SAEWN,KAAAO,UAA2B,KAEtDP,KAAAQ,UAA2B,KAE3BR,KAAAS,gBAA0B,oBAE1BT,KAAAU,WAAqB,QAErBV,KAAAW,kBAA4B,SAE5BX,KAAAY,cAAwB,YAoEjC,CAnDC,MAAAC,GACE,MAAMC,EAAOd,KAAKO,WAAWQ,QAAU,eACvC,MAAMC,EAAWhB,KAAKQ,WAAWO,QAAUD,EAE3C,OACEG,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,kBAAAE,IAAA,2CACEC,eAAc,KACdC,cAAa,KACbpB,KAAMD,KAAKC,KACXqB,aAActB,KAAKM,MACnBiB,kBAAmB,MACnBC,cAAe,MACfC,KAAK,UACLC,KAAK,KACLC,MAAM,MACNzB,UAAWF,KAAKE,UAChB0B,WAAY,MACZC,cAAe,KACfC,MAAM,QAAO,aACDhB,EACZX,QAASH,KAAKG,QACdC,OAAQJ,KAAKI,OACbC,WAAYL,KAAKK,WACjB0B,eAAgB/B,KAAK+B,eACrBvB,UAAWQ,EACXP,gBAAiBT,KAAKS,gBACtBC,WAAYV,KAAKU,WACjBC,kBAAmBX,KAAKW,kBACxBC,cAAeZ,KAAKY,cACpBoB,aAAa,mBACbC,WAAYC,GAASlC,KAAKmC,QAAQD,EAAOlC,KAAKoC,UAC9CC,UAAWH,GAASlC,KAAKmC,QAAQD,EAAOlC,KAAKsC,SAC7CC,oBAAqBL,GAASlC,KAAKmC,QAAQD,EAAOlC,KAAKwC,mBACvDC,uBAAwBP,GAASlC,KAAKmC,QAAQD,EAAOlC,KAAK0C,sBAC1DC,UAAWT,GAASlC,KAAKmC,QAAQD,EAAOlC,KAAK4C,SAC7CC,eAAgBX,IACdA,EAAMY,kBACN9C,KAAKC,KAAOiC,EAAMa,OAClB/C,KAAKgD,aAAaC,KAAKf,EAAMa,OAAO,EAEtCG,eAAgBhB,GAASlC,KAAKmC,QAAQD,EAAOlC,KAAKmD,gB,CAMlD,OAAAhB,CAAWD,EAAuBkB,GACxClB,EAAMY,kBACNM,EAAQH,KAAKf,EAAMa,O","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Components, JSX } from "../types/components";
|
|
2
2
|
|
|
3
|
-
interface
|
|
4
|
-
export const
|
|
5
|
-
prototype:
|
|
6
|
-
new ():
|
|
3
|
+
interface DsDataGroup extends Components.DsDataGroup, HTMLElement {}
|
|
4
|
+
export const DsDataGroup: {
|
|
5
|
+
prototype: DsDataGroup;
|
|
6
|
+
new (): DsDataGroup;
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
9
|
* Used to define this component and all nested components recursively.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"mappings":"","ignoreList":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Components, JSX } from "../types/components";
|
|
2
2
|
|
|
3
|
-
interface
|
|
4
|
-
export const
|
|
5
|
-
prototype:
|
|
6
|
-
new ():
|
|
3
|
+
interface DsDataPreferences extends Components.DsDataPreferences, HTMLElement {}
|
|
4
|
+
export const DsDataPreferences: {
|
|
5
|
+
prototype: DsDataPreferences;
|
|
6
|
+
new (): DsDataPreferences;
|
|
7
7
|
};
|
|
8
8
|
/**
|
|
9
9
|
* Used to define this component and all nested components recursively.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as s,c as t,h as i,a,t as r}from"./index.js";import{A as d,r as o}from"./p-B8ZonS3S.js";import{d as n,n as h}from"./p-kDZ0sEII.js";import{t as c,a as l,b as f,r as p,c as m}from"./p-aD5cw_m2.js";import{l as u,r as b,t as g}from"./p-BYrBU_U9.js";import{A as v}from"./p-etg-Uk1u.js";import{r as w}from"./p-CochmPyg.js";import{T as k}from"./p-CeXf9-X3.js";import{d as y}from"./p-ZhP2tVmM.js";import{d as x}from"./p-Dzndkdx5.js";import{d as j}from"./p-0FYD2bev.js";import{d as C}from"./p-D6Wl3dRO.js";import{d as D}from"./p-Dw9sE6Iw.js";import{d as E}from"./p-7V1AhetH.js";import{d as F}from"./p-0qY_HDId.js";import{d as z}from"./p-Nc76seSq.js";import{d as O}from"./p-DjkUFlDW.js";import{d as I}from"./p-Di5FH7eh.js";import{d as _}from"./p-0XTyQNRG.js";import{d as M}from"./p-BKZdqJQB.js";import{d as P}from"./p-Bn8I7iw6.js";import{d as A}from"./p-D0y7Sja6.js";import{d as S}from"./p-DHICPS4n.js";import{d as B}from"./p-D922f6Tb.js";import{d as R}from"./p-DwbcNDJF.js";import{d as $}from"./p-CYzFfFcH.js";const H=()=>`.sc-ds-data-preferences-h,.sc-ds-data-preferences:where(.ds-table),.sc-ds-data-preferences:where(.tooltip-popup),.sc-ds-data-preferences: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)}.sc-ds-data-preferences-h{display:inline-flex}.data-preferences.sc-ds-data-preferences{position:fixed;margin:0;padding:0;border:0;border-radius:var(--ds-radius-menu);width:min(var(--dimension-menu-width-lg), calc(100vw - var(--dimension-space-200)));max-height:calc(100dvh - var(--dimension-space-400));display:flex;flex-direction:column;overflow:hidden;background:var(--color-background-primary);color:var(--color-foreground-secondary);box-shadow:var(--effect-shadow-elevated-floating)}.data-preferences.sc-ds-data-preferences::after{content:'';position:absolute;inset:0;border-radius:inherit;box-shadow:var(--effect-highlight-elevated-floating);pointer-events:none;z-index:4}.data-preferences__tabs.sc-ds-data-preferences{display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;flex:0 0 var(--dimension-size-500);min-block-size:var(--dimension-size-500);padding:var(--dimension-space-050);background:var(--color-background-primary);border-bottom:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.data-preferences__body.sc-ds-data-preferences{min-height:0;overflow:auto;overscroll-behavior:contain}.sc-ds-data-preferences-h:has(.data-preferences-panel){display:flex;flex:1;min-height:0}.data-preferences-panel.sc-ds-data-preferences{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}.data-preferences-panel.sc-ds-data-preferences .data-preferences__tabs.sc-ds-data-preferences{flex:0 0 auto;padding:var(--dimension-space-200)}`;const L={minVisible:0,reorderable:false};let T=0;const q=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsCustomizeOptionChange=t(this,"dsCustomizeOptionChange",7);this.dsPreferencesTabChange=t(this,"dsPreferencesTabChange",7);this.dsFilterChange=t(this,"dsFilterChange",7);this.dsFilterMatchModeChange=t(this,"dsFilterMatchModeChange",7);this.dsActiveFilterChange=t(this,"dsActiveFilterChange",7);this.dsFiltersClear=t(this,"dsFiltersClear",7);this.dsSortChange=t(this,"dsSortChange",7);this.dsGroupChange=t(this,"dsGroupChange",7);this.dsGroupClear=t(this,"dsGroupClear",7);this.dsFieldsConfigChange=t(this,"dsFieldsConfigChange",7);this.hasBorder=true;this.filters=[];this.values={};this.matchModes={};this.fields=[];this.customizeOptions=[];this.customizeSections=[];this.customizeLabel="Customize table";this.catalogReorderable=true;this.sort=null;this.groupingOptions=[];this.grouping=null;this.hiddenFieldIds=[];this.fieldOrder=[];this.embedded=false;this.activeTab="filters";this.label="Configure view";this.open=false;this.tab="filters";this.pos={x:0,y:0};this.ready=false;this.popupId=`ds-data-preferences-${++T}`;this.position=new d({getAnchor:()=>this.trigger??null,getPopup:()=>this.popup??null,getOwnerDocument:()=>this.el.ownerDocument,measure:(e,s)=>{const t=o(e);const i=w(k.space100,8);s.style.maxWidth=`${Math.max(0,Math.min(window.innerWidth,t?.width??window.innerWidth)-i*2)}px`;s.style.maxHeight=`${Math.max(0,Math.min(window.innerHeight,t?.height??window.innerHeight)-i*2)}px`;return{anchorRect:e.getBoundingClientRect(),popupWidth:s.offsetWidth,popupHeight:s.offsetHeight,side:"bottom",align:"end",sideOffsetPx:w(k.space050,4),alignOffsetPx:0,viewportPadPx:w(k.space100,8),viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:t}},apply:({x:e,y:s})=>{this.pos={x:e,y:s}},onReady:()=>{this.ready=true},topLayer:true,observeResize:true,observeAnchorMotion:true,liveUpdate:"double-frame"});this.interaction=new v({getAnchor:()=>this.trigger??null,getPopup:()=>this.popup??null,getOwnerDocument:()=>this.el.ownerDocument,onOutsideActivation:()=>this.close()})}catalogItems(){return c(this.fields).map((e=>({id:e.id,label:l(e)})))}disconnectedCallback(){this.position.unobserve();this.interaction.disconnect()}close(){this.position.unobserve();this.interaction.disconnect();if(this.popup?.matches(":popover-open"))this.popup.hidePopover();this.open=false;void this.trigger?.setFocus()}toggle(){if(this.open){this.close();return}this.open=true;this.ready=false;this.position.observe();this.interaction.connect();this.position.schedule((async()=>{await(this.popup?.querySelector("ds-tab-group")?.componentOnReady?.());requestAnimationFrame((()=>{if(this.open)this.popup?.querySelector('[role="tab"][aria-selected="true"]')?.focus()}))}))}onKeydown(e){if(this.embedded||!this.open||e.defaultPrevented)return;if(e.key==="Escape"){e.preventDefault();e.stopPropagation();this.close()}else if(e.key==="Tab"&&this.interaction.tabLeavesPopup(e)){e.preventDefault();this.close();this.interaction.moveFocusAfterTab(e.shiftKey)}}forward(e,s){e.stopPropagation();s.emit(e.detail)}render(){const e=this.embedded?this.activeTab:this.tab;const s=["filters","sort","group","customize"].map((e=>({id:e,label:e==="filters"?"Filters":e[0].toUpperCase()+e.slice(1),panelId:`${this.popupId}-${e}`})));return i(a,{key:"d360b57fdc14a8375b595fd8d239f9402cd08fd4"},!this.embedded&&i("ds-tooltip",{key:"df5de339af5ea7a30cd88edea841dcd9c4174a0f",label:this.label,side:"bottom",size:"sm"},i("ds-button-unfilled",{key:"7a54d4dc589b28830dc4ade139051ac8b8812c79",hasBorder:this.hasBorder,ref:e=>{this.trigger=e},variant:"icon",icon:"Preferences",size:"md",ariaLabel:this.label,haspopup:"dialog",expanded:this.open,surfaceOpen:this.open,controls:this.popupId,onDsClick:()=>this.toggle()})),(this.open||this.embedded)&&i("div",{key:"5675768a721d7b25e70526abecc6271a304b846b",ref:e=>{this.popup=e},id:this.popupId,popover:this.embedded?undefined:"manual",role:this.embedded?undefined:"dialog","aria-label":this.label,class:{"data-preferences":!this.embedded,"data-preferences-panel":this.embedded},style:this.embedded?undefined:{left:`${this.pos.x}px`,top:`${this.pos.y}px`,visibility:this.ready?"visible":"hidden"}},i("div",{key:"f752bced728b4592e4e0f275f60934f1cf6ab07a",class:"data-preferences__tabs"},i("ds-tab-group",{key:"e6b3852c7c922096c04cd81b6917a677f51d0f4d",ariaLabel:"Table preference sections",size:"md",presentation:this.embedded?"segmented":"tabs",width:this.embedded?"fill":"hug",tabs:s,value:e,onDsChange:e=>{e.stopPropagation();this.tab=e.detail;this.dsPreferencesTabChange.emit(this.tab)}})),i("div",{key:"f00eb1d6a7994fa6071396cd51e090fb436f43b3",class:"data-preferences__body",id:`${this.popupId}-${e}`,role:"tabpanel","aria-label":s.find((s=>s.id===e))?.label},i("div",{key:"df3ac1fd6231ddd071b6176f278858b13c5a0d8a",hidden:e!=="filters"},i("ds-filter-menu",{key:"575b2bf9c46e9dfd2e076afb0139bf3c9ecfaa04",embedded:true,vertical:this.embedded,applyRequired:!this.embedded,filters:this.filters,values:this.values,matchModes:this.matchModes,activeFilterId:this.activeFilterId,footerLayout:"categories-clear",onDsChange:e=>this.forward(e,this.dsFilterChange),onDsMatchModeChange:e=>this.forward(e,this.dsFilterMatchModeChange),onDsActiveFilterChange:e=>this.forward(e,this.dsActiveFilterChange),onDsClear:e=>this.forward(e,this.dsFiltersClear)})),e==="sort"&&i("ds-menu",{key:"a579fc14269d130bb79b57ab8c9d5901d98ad801",embedded:true,menuLabel:"Sort table",sections:n(this.sortColumns??this.fields,this.sort),onDsSelect:e=>{e.stopPropagation();this.dsSortChange.emit({sort:h(this.sortColumns??this.fields,this.sort,e.detail)})}}),e==="group"&&i("ds-data-group",{key:"9c89c07e1c9ed087478863e29fabb4ab569c4907",embedded:true,vertical:this.embedded,options:this.groupingOptions,grouping:this.grouping,onDsGroupChange:e=>this.forward(e,this.dsGroupChange),onDsClear:e=>this.forward(e,this.dsGroupClear)}),e==="customize"&&i("ds-menu",{key:"f1db3c6b682a6cb49662c0ae39ac2e2ad17eaacf",embedded:true,menuLabel:this.customizeLabel,sections:[...this.fields.length?[{header:this.catalogHeader??(this.customizeOptions.length?"Columns":undefined),items:this.catalogReorderable?f(this.fields,this.hiddenFieldIds,this.fieldOrder):u(this.catalogItems(),this.hiddenFieldIds,this.fieldOrder,L)}]:[],...this.customizeSections,...this.customizeOptions.length?[{header:"Options",items:this.customizeOptions}]:[]],onDsSelect:e=>{e.stopPropagation();if(!e.detail.value||e.detail.isInactive)return;if([...this.customizeOptions,...this.customizeSections.flatMap((e=>"items"in e?e.items:[]))].some((s=>s.value===e.detail.value))){this.dsCustomizeOptionChange.emit(e.detail.value);return}if(!this.catalogReorderable){const s=this.catalogItems().map((e=>e.id));this.dsFieldsConfigChange.emit({hiddenFieldIds:g(s,this.hiddenFieldIds,e.detail.value,L),fieldOrder:b(s,this.fieldOrder)});return}this.dsFieldsConfigChange.emit({hiddenFieldIds:m(this.fields,this.hiddenFieldIds,e.detail.value),fieldOrder:p(this.fields,this.fieldOrder)})},onDsReorder:e=>{e.stopPropagation();if(!this.catalogReorderable)return;this.dsFieldsConfigChange.emit({hiddenFieldIds:this.hiddenFieldIds,fieldOrder:e.detail.items.filter((e=>e.reorderable)).map((e=>e.value)).filter(Boolean)})}}))))}get el(){return this}static get style(){return H()}},[2,"ds-data-preferences",{hasBorder:[4,"has-border"],filters:[16],values:[16],matchModes:[16],activeFilterId:[1,"active-filter-id"],fields:[16],customizeOptions:[16],customizeSections:[16],customizeLabel:[1,"customize-label"],catalogHeader:[1,"catalog-header"],catalogReorderable:[4,"catalog-reorderable"],sortColumns:[16],sort:[16],groupingOptions:[16],grouping:[16],hiddenFieldIds:[16],fieldOrder:[16],embedded:[4],activeTab:[1,"active-tab"],label:[1],open:[32],tab:[32],pos:[32],ready:[32]},[[0,"keydown","onKeydown"]]]);function U(){if(typeof customElements==="undefined"){return}const e=["ds-data-preferences","ds-badge","ds-button-unfilled","ds-calendar","ds-checkbox","ds-data-group","ds-divider","ds-empty-state","ds-filter-menu","ds-icon","ds-input","ds-loader","ds-menu","ds-swatch-picker","ds-switch","ds-tab-group","ds-tag","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-data-preferences":if(!customElements.get(r(e))){customElements.define(r(e),q)}break;case"ds-badge":if(!customElements.get(r(e))){y()}break;case"ds-button-unfilled":if(!customElements.get(r(e))){x()}break;case"ds-calendar":if(!customElements.get(r(e))){j()}break;case"ds-checkbox":if(!customElements.get(r(e))){C()}break;case"ds-data-group":if(!customElements.get(r(e))){D()}break;case"ds-divider":if(!customElements.get(r(e))){E()}break;case"ds-empty-state":if(!customElements.get(r(e))){F()}break;case"ds-filter-menu":if(!customElements.get(r(e))){z()}break;case"ds-icon":if(!customElements.get(r(e))){O()}break;case"ds-input":if(!customElements.get(r(e))){I()}break;case"ds-loader":if(!customElements.get(r(e))){_()}break;case"ds-menu":if(!customElements.get(r(e))){M()}break;case"ds-swatch-picker":if(!customElements.get(r(e))){P()}break;case"ds-switch":if(!customElements.get(r(e))){A()}break;case"ds-tab-group":if(!customElements.get(r(e))){S()}break;case"ds-tag":if(!customElements.get(r(e))){B()}break;case"ds-text":if(!customElements.get(r(e))){R()}break;case"ds-tooltip":if(!customElements.get(r(e))){$()}break}}))}U();const G=q;const W=U;export{G as DsDataPreferences,W as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ds-data-preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dataPreferencesCss","TOGGLE_ONLY_CATALOG","minVisible","reorderable","preferencesSequence","DataPreferences","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","hasBorder","filters","values","matchModes","fields","customizeOptions","customizeSections","customizeLabel","catalogReorderable","sort","groupingOptions","grouping","hiddenFieldIds","fieldOrder","embedded","activeTab","label","open","tab","pos","x","y","ready","popupId","position","AnchoredPositionController","getAnchor","trigger","getPopup","popup","getOwnerDocument","el","ownerDocument","measure","anchor","collisionRect","resolveAnchoredOverlayBoundaryRect","pad","resolveCssLengthPx","TOKEN_DEFAULTS","space100","style","maxWidth","Math","max","min","window","innerWidth","width","maxHeight","innerHeight","height","anchorRect","getBoundingClientRect","popupWidth","offsetWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","space050","alignOffsetPx","viewportPadPx","viewportWidth","viewportHeight","apply","onReady","topLayer","observeResize","observeAnchorMotion","liveUpdate","interaction","AnchoredOverlayInteractionController","onOutsideActivation","close","catalogItems","tableDataColumns","map","column","id","tableColumnCustomizerLabel","disconnectedCallback","unobserve","disconnect","matches","hidePopover","setFocus","toggle","observe","connect","schedule","async","querySelector","componentOnReady","requestAnimationFrame","focus","onKeydown","event","defaultPrevented","key","preventDefault","stopPropagation","tabLeavesPopup","moveFocusAfterTab","shiftKey","forward","emitter","emit","detail","render","currentTab","tabs","toUpperCase","slice","panelId","h","Host","size","ref","variant","icon","ariaLabel","haspopup","expanded","surfaceOpen","controls","onDsClick","popover","undefined","role","class","left","top","visibility","presentation","value","onDsChange","dsPreferencesTabChange","find","hidden","vertical","applyRequired","activeFilterId","footerLayout","e","dsFilterChange","onDsMatchModeChange","dsFilterMatchModeChange","onDsActiveFilterChange","dsActiveFilterChange","onDsClear","dsFiltersClear","menuLabel","sections","dataSortMenuSections","sortColumns","onDsSelect","dsSortChange","nextDataSortStateFromMenuItem","options","onDsGroupChange","dsGroupChange","dsGroupClear","length","header","catalogHeader","items","tableColumnCustomizerMenuItems","listCustomizerMenuItems","isInactive","flatMap","section","some","option","dsCustomizeOptionChange","ids","item","dsFieldsConfigChange","toggleListHidden","resolveListOrder","toggleTableColumnHidden","resolveTableColumnOrder","onDsReorder","filter","Boolean"],"sources":["src/wc/components/DataPreferences/DataPreferences.css?tag=ds-data-preferences&encapsulation=scoped","src/wc/components/DataPreferences/DataPreferences.tsx"],"sourcesContent":["@import '../../utils/radius.css';\n\n:host {\n display: inline-flex;\n}\n\n.data-preferences {\n position: fixed;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: var(--ds-radius-menu);\n width: min(var(--dimension-menu-width-lg), calc(100vw - var(--dimension-space-200)));\n max-height: calc(100dvh - var(--dimension-space-400));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--color-background-primary);\n color: var(--color-foreground-secondary);\n box-shadow: var(--effect-shadow-elevated-floating);\n}\n\n.data-preferences::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n box-shadow: var(--effect-highlight-elevated-floating);\n pointer-events: none;\n z-index: 4;\n}\n\n.data-preferences__tabs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n box-sizing: border-box;\n flex: 0 0 var(--dimension-size-500);\n min-block-size: var(--dimension-size-500);\n padding: var(--dimension-space-050);\n background: var(--color-background-primary);\n border-bottom: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.data-preferences__body {\n min-height: 0;\n overflow: auto;\n overscroll-behavior: contain;\n}\n\n:host:has(.data-preferences-panel) {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.data-preferences-panel {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n min-width: 0;\n}\n.data-preferences-panel .data-preferences__tabs {\n flex: 0 0 auto;\n padding: var(--dimension-space-200);\n}\n","import type { DataField } from '../../utils/data-field';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n} from '@stencil/core';\nimport type {\n FilterMenuFilter,\n FilterMenuValues,\n FilterMenuMatchModes,\n FilterMenuChangeDetail,\n FilterMenuMatchModeChangeDetail,\n} from '../FilterMenu/FilterMenu';\nimport type {\n TableColumn,\n DataSortState,\n DataSortChangeDetail,\n DataGroupingState,\n DataFieldsConfigChangeDetail,\n} from '../Table/table-types';\nimport type { DataGroupOption } from '../DataGroup/DataGroup';\nimport { dataSortMenuSections, nextDataSortStateFromMenuItem } from '../DataSort/data-sort-menu';\nimport {\n tableColumnCustomizerLabel,\n tableColumnCustomizerMenuItems,\n tableDataColumns,\n toggleTableColumnHidden,\n resolveTableColumnOrder,\n} from '../Table/table-column-customizer';\nimport {\n listCustomizerMenuItems,\n resolveListOrder,\n toggleListHidden,\n type ListCustomizerOptions,\n} from '../../utils/list-customizer';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveCssLengthPx } from '../../utils/resolve-css-length-px';\nimport { TOKEN_DEFAULTS } from '../../utils/token-defaults';\n\n/** Toggle-only catalog: every entry may hide and no row carries a drag handle. */\nconst TOGGLE_ONLY_CATALOG: ListCustomizerOptions = { minVisible: 0, reorderable: false };\n\nexport type PreferencesTab = 'filters' | 'sort' | 'group' | 'customize';\nlet preferencesSequence = 0;\n\n@Component({ tag: 'ds-data-preferences', styleUrl: 'DataPreferences.css', scoped: true })\nexport class DataPreferences {\n @Element() el!: HTMLElement;\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() filters: FilterMenuFilter[] = [];\n @Prop() values: FilterMenuValues = {};\n @Prop() matchModes: FilterMenuMatchModes = {};\n @Prop() activeFilterId: string | undefined;\n @Prop() fields: DataField[] = [];\n /** Additional toggle options in the column customizer. */\n @Prop() customizeOptions: MenuItemData[] = [];\n @Prop() customizeSections: MenuSection[] = [];\n /** Accessible name for the Customize menu. */\n @Prop() customizeLabel: string = 'Customize table';\n /**\n * Section header above the catalog rows. Defaults to Columns when\n * customizeOptions supply a second section, matching the table.\n */\n @Prop() catalogHeader?: string;\n /**\n * Drag-reorder the catalog rows and keep the last visible entry locked, as a\n * table requires. Pass false for a catalog that only shows and hides, where\n * every entry may be hidden and rows carry no drag handle.\n */\n @Prop() catalogReorderable: boolean = true;\n @Event() dsCustomizeOptionChange!: EventEmitter<string>;\n /** Optional sort fields when they differ from customizable content. */\n @Prop() sortColumns?: TableColumn[];\n @Prop() sort: DataSortState | null = null;\n @Prop() groupingOptions: DataGroupOption[] = [];\n @Prop() grouping: DataGroupingState | null = null;\n @Prop() hiddenFieldIds: string[] = [];\n @Prop() fieldOrder: string[] = [];\n /** Render shared content without its popup or trigger. */\n @Prop() embedded = false;\n @Prop() activeTab: PreferencesTab = 'filters';\n @Event() dsPreferencesTabChange!: EventEmitter<PreferencesTab>;\n @Prop() label = 'Configure view';\n @Event() dsFilterChange!: EventEmitter<FilterMenuChangeDetail>;\n @Event() dsFilterMatchModeChange!: EventEmitter<FilterMenuMatchModeChangeDetail>;\n @Event() dsActiveFilterChange!: EventEmitter<string>;\n @Event() dsFiltersClear!: EventEmitter<void>;\n @Event() dsSortChange!: EventEmitter<DataSortChangeDetail>;\n @Event() dsGroupChange!: EventEmitter<DataGroupingState>;\n @Event() dsGroupClear!: EventEmitter<void>;\n @Event() dsFieldsConfigChange!: EventEmitter<DataFieldsConfigChangeDetail>;\n\n /** Catalog rows as domain-neutral items, so a non-table catalog needs no column shape. */\n private catalogItems(): { id: string; label: string }[] {\n return tableDataColumns(this.fields).map(column => ({\n id: column.id,\n label: tableColumnCustomizerLabel(column),\n }));\n }\n @State() private open = false;\n @State() private tab: PreferencesTab = 'filters';\n @State() private pos = { x: 0, y: 0 };\n @State() private ready = false;\n private readonly popupId = `ds-data-preferences-${++preferencesSequence}`;\n private trigger?: HTMLDsButtonUnfilledElement;\n private popup?: HTMLElement;\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.trigger ?? null,\n getPopup: () => this.popup ?? null,\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n const collisionRect = resolveAnchoredOverlayBoundaryRect(anchor);\n const pad = resolveCssLengthPx(TOKEN_DEFAULTS.space100, 8);\n popup.style.maxWidth = `${Math.max(0, Math.min(window.innerWidth, collisionRect?.width ?? window.innerWidth) - pad * 2)}px`;\n popup.style.maxHeight = `${Math.max(0, Math.min(window.innerHeight, collisionRect?.height ?? window.innerHeight) - pad * 2)}px`;\n return {\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align: 'end',\n sideOffsetPx: resolveCssLengthPx(TOKEN_DEFAULTS.space050, 4),\n alignOffsetPx: 0,\n viewportPadPx: resolveCssLengthPx(TOKEN_DEFAULTS.space100, 8),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect,\n };\n },\n apply: ({ x, y }) => {\n this.pos = { x, y };\n },\n onReady: () => {\n this.ready = true;\n },\n topLayer: true,\n observeResize: true,\n observeAnchorMotion: true,\n liveUpdate: 'double-frame',\n });\n private readonly interaction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.trigger ?? null,\n getPopup: () => this.popup ?? null,\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n disconnectedCallback() {\n this.position.unobserve();\n this.interaction.disconnect();\n }\n private close() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.popup?.matches(':popover-open')) this.popup.hidePopover();\n this.open = false;\n void this.trigger?.setFocus();\n }\n private toggle() {\n if (this.open) {\n this.close();\n return;\n }\n this.open = true;\n this.ready = false;\n this.position.observe();\n this.interaction.connect();\n this.position.schedule(async () => {\n await this.popup?.querySelector('ds-tab-group')?.componentOnReady?.();\n requestAnimationFrame(() => {\n if (this.open)\n this.popup?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')?.focus();\n });\n });\n }\n @Listen('keydown')\n onKeydown(event: KeyboardEvent) {\n if (this.embedded || !this.open || event.defaultPrevented) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n this.close();\n } else if (event.key === 'Tab' && this.interaction.tabLeavesPopup(event)) {\n event.preventDefault();\n this.close();\n this.interaction.moveFocusAfterTab(event.shiftKey);\n }\n }\n private forward<T>(event: CustomEvent<T>, emitter: EventEmitter<T>) {\n event.stopPropagation();\n emitter.emit(event.detail);\n }\n render() {\n const currentTab = this.embedded ? this.activeTab : this.tab;\n const tabs = ['filters', 'sort', 'group', 'customize'].map(id => ({\n id,\n label: id === 'filters' ? 'Filters' : id[0].toUpperCase() + id.slice(1),\n panelId: `${this.popupId}-${id}`,\n }));\n return (\n <Host>\n {!this.embedded && (\n <ds-tooltip label={this.label} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n hasBorder={this.hasBorder}\n ref={el => {\n this.trigger = el;\n }}\n variant=\"icon\"\n icon=\"Preferences\"\n size=\"md\"\n ariaLabel={this.label}\n haspopup=\"dialog\"\n expanded={this.open}\n surfaceOpen={this.open}\n controls={this.popupId}\n onDsClick={() => this.toggle()}\n />\n </ds-tooltip>\n )}\n {(this.open || this.embedded) && (\n <div\n ref={el => {\n this.popup = el;\n }}\n id={this.popupId}\n popover={this.embedded ? undefined : 'manual'}\n role={this.embedded ? undefined : 'dialog'}\n aria-label={this.label}\n class={{\n 'data-preferences': !this.embedded,\n 'data-preferences-panel': this.embedded,\n }}\n style={\n this.embedded\n ? undefined\n : {\n left: `${this.pos.x}px`,\n top: `${this.pos.y}px`,\n visibility: this.ready ? 'visible' : 'hidden',\n }\n }\n >\n <div class=\"data-preferences__tabs\">\n <ds-tab-group\n ariaLabel=\"Table preference sections\"\n size=\"md\"\n presentation={this.embedded ? 'segmented' : 'tabs'}\n width={this.embedded ? 'fill' : 'hug'}\n tabs={tabs}\n value={currentTab}\n onDsChange={event => {\n event.stopPropagation();\n this.tab = event.detail as PreferencesTab;\n this.dsPreferencesTabChange.emit(this.tab);\n }}\n />\n </div>\n <div\n class=\"data-preferences__body\"\n id={`${this.popupId}-${currentTab}`}\n role=\"tabpanel\"\n aria-label={tabs.find(tab => tab.id === currentTab)?.label}\n >\n <div hidden={currentTab !== 'filters'}>\n <ds-filter-menu\n embedded\n vertical={this.embedded}\n applyRequired={!this.embedded}\n filters={this.filters}\n values={this.values}\n matchModes={this.matchModes}\n activeFilterId={this.activeFilterId}\n footerLayout=\"categories-clear\"\n onDsChange={e => this.forward(e, this.dsFilterChange)}\n onDsMatchModeChange={e => this.forward(e, this.dsFilterMatchModeChange)}\n onDsActiveFilterChange={e => this.forward(e, this.dsActiveFilterChange)}\n onDsClear={e => this.forward(e, this.dsFiltersClear)}\n />\n </div>\n {currentTab === 'sort' && (\n <ds-menu\n embedded\n menuLabel=\"Sort table\"\n sections={dataSortMenuSections(this.sortColumns ?? this.fields, this.sort)}\n onDsSelect={e => {\n e.stopPropagation();\n this.dsSortChange.emit({\n sort: nextDataSortStateFromMenuItem(\n this.sortColumns ?? this.fields,\n this.sort,\n e.detail\n ),\n });\n }}\n />\n )}\n {currentTab === 'group' && (\n <ds-data-group\n embedded\n vertical={this.embedded}\n options={this.groupingOptions}\n grouping={this.grouping}\n onDsGroupChange={e => this.forward(e, this.dsGroupChange)}\n onDsClear={e => this.forward(e, this.dsGroupClear)}\n />\n )}\n {currentTab === 'customize' && (\n <ds-menu\n embedded\n menuLabel={this.customizeLabel}\n sections={[\n ...(this.fields.length\n ? [\n {\n header:\n this.catalogHeader ??\n (this.customizeOptions.length ? 'Columns' : undefined),\n items: this.catalogReorderable\n ? tableColumnCustomizerMenuItems(\n this.fields,\n this.hiddenFieldIds,\n this.fieldOrder\n )\n : listCustomizerMenuItems(\n this.catalogItems(),\n this.hiddenFieldIds,\n this.fieldOrder,\n TOGGLE_ONLY_CATALOG\n ),\n },\n ]\n : []),\n ...this.customizeSections,\n ...(this.customizeOptions.length\n ? [{ header: 'Options', items: this.customizeOptions }]\n : []),\n ]}\n onDsSelect={e => {\n e.stopPropagation();\n if (!e.detail.value || e.detail.isInactive) return;\n if (\n [\n ...this.customizeOptions,\n ...this.customizeSections.flatMap(section =>\n 'items' in section ? section.items : []\n ),\n ].some(option => option.value === e.detail.value)\n ) {\n this.dsCustomizeOptionChange.emit(e.detail.value);\n return;\n }\n if (!this.catalogReorderable) {\n const ids = this.catalogItems().map(item => item.id);\n this.dsFieldsConfigChange.emit({\n hiddenFieldIds: toggleListHidden(\n ids,\n this.hiddenFieldIds,\n e.detail.value,\n TOGGLE_ONLY_CATALOG\n ),\n fieldOrder: resolveListOrder(ids, this.fieldOrder),\n });\n return;\n }\n this.dsFieldsConfigChange.emit({\n hiddenFieldIds: toggleTableColumnHidden(\n this.fields,\n this.hiddenFieldIds,\n e.detail.value\n ),\n fieldOrder: resolveTableColumnOrder(this.fields, this.fieldOrder),\n });\n }}\n onDsReorder={e => {\n e.stopPropagation();\n if (!this.catalogReorderable) return;\n this.dsFieldsConfigChange.emit({\n hiddenFieldIds: this.hiddenFieldIds,\n fieldOrder: e.detail.items\n .filter(item => item.reorderable)\n .map(item => item.value!)\n .filter(Boolean),\n });\n }}\n />\n )}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface DsDataSavedViews extends Components.DsDataSavedViews, HTMLElement {}
|
|
4
|
+
export const DsDataSavedViews: {
|
|
5
|
+
prototype: DsDataSavedViews;
|
|
6
|
+
new (): DsDataSavedViews;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{p as e,H as s,c as t,h as i,a,t as d}from"./index.js";import{d as n}from"./p-ZhP2tVmM.js";import{d as o}from"./p-CiH4GG6r.js";import{d as l}from"./p-Dzndkdx5.js";import{d as r}from"./p-D6Wl3dRO.js";import{d as h}from"./p-7V1AhetH.js";import{d as c}from"./p-0qY_HDId.js";import{d as m}from"./p-DVOjjuXc.js";import{d as f}from"./p-DjkUFlDW.js";import{d as u}from"./p-Di5FH7eh.js";import{d as b}from"./p-0XTyQNRG.js";import{d as p}from"./p-BKZdqJQB.js";import{d as v}from"./p-5URekSny.js";import{d as w}from"./p-CElUM-xU.js";import{d as k}from"./p-Bn8I7iw6.js";import{d as g}from"./p-D0y7Sja6.js";import{d as D}from"./p-D922f6Tb.js";import{d as E}from"./p-DwbcNDJF.js";import{d as j}from"./p-CYzFfFcH.js";const y=()=>`.sc-ds-data-saved-views-h{--ds-choice-popup-min-inline-size:var(--dimension-menu-width-xs);display:inline-block;min-inline-size:0;max-inline-size:var(--dimension-menu-width-xs)}ds-select.sc-ds-data-saved-views{display:block;min-inline-size:0;max-inline-size:100%}`;let V=0;const x=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsViewChange=t(this,"dsViewChange",7);this.dsViewCreate=t(this,"dsViewCreate",7);this.dsViewRename=t(this,"dsViewRename",7);this.dsViewRemove=t(this,"dsViewRemove",7);this.dsViewSave=t(this,"dsViewSave",7);this.dsViewDiscard=t(this,"dsViewDiscard",7);this.hasBorder=true;this.views=[];this.value="__default__";this.dirty=false;this.defaultViewId="__default__";this.defaultViewLabel="Default";this.label="Saved views";this.triggerLabel="Views";this.compact=false;this.createLabel="New view";this.actionViewId=null;this.actionMenuOpen=false;this.actionMenuInitialFocusVisible=false;this.dialogOpen=false;this.dialogMode="create";this.dialogViewId=null;this.nameDraft="";this.nameError="";this.componentId=`ds-data-saved-views-${++V}`;this.selectId=`${this.componentId}-select`;this.actionMenuId=`${this.componentId}-actions`;this.fieldId=`${this.componentId}-name-field`;this.inputId=`${this.componentId}-name-input`;this.actionItems=[{label:"Rename",value:"rename"},{label:"Remove",value:"remove",isDestructive:true}]}get selectedCustomView(){return this.views.find((e=>e.id===this.value))}get dialogView(){return this.views.find((e=>e.id===this.dialogViewId))}get sections(){const e=this.views.map((e=>({label:e.label,value:e.id,subtextActions:this.dirty&&e.id===this.selectedCustomView?.id?[{label:"Save",value:"save"},{label:"Discard",value:"discard",tone:"negative"}]:undefined,action:{label:`Options for ${e.label}`,controls:this.actionMenuId,expanded:this.actionViewId===e.id&&this.actionMenuOpen,surfaceOpen:this.actionViewId===e.id}})));const s={header:"Templates",options:[{label:this.defaultViewLabel,value:this.defaultViewId}],divider:e.length>0};return e.length>0?[s,{header:"Custom",options:e}]:[s]}handleViewChange(e){if(typeof e==="string")this.dsViewChange.emit({viewId:e})}handleSubtextAction(e){const s=this.selectedCustomView;if(!s||!this.dirty||e.value!==s.id)return;if(e.actionValue==="save")this.dsViewSave.emit({viewId:s.id});if(e.actionValue==="discard")this.dsViewDiscard.emit({viewId:s.id})}handleOptionAction(e){if(!this.views.some((s=>s.id===e.value)))return;this.actionMenuInitialFocusVisible=e.originalEvent.detail===0;if(this.actionViewId===e.value&&this.actionMenuOpen){this.actionMenuOpen=false;return}this.actionViewId=e.value;this.actionAnchorId=e.anchorId;this.actionMenuOpen=true}handleActionSelect(e){const s=this.actionViewId;this.actionMenuOpen=false;if(!s)return;if(e.detail.value==="rename")this.openDialog("rename",s);if(e.detail.value==="remove")this.dsViewRemove.emit({viewId:s})}openDialog(e,s=null){const t=e==="rename"?this.views.find((e=>e.id===s)):undefined;if(e==="rename"&&!t)return;this.dialogMode=e;this.dialogViewId=t?.id??null;this.nameDraft=t?.label??"";this.nameError="";this.dialogOpen=true;requestAnimationFrame((()=>{requestAnimationFrame((()=>{const e=this.el.querySelector(`#${this.inputId}`);void e?.setFocus?.()}))}))}validateName(){const e=this.nameDraft.trim();if(!e)return"View name is required.";const s=this.views.some((s=>s.id!==this.dialogViewId&&s.label.trim().toLocaleLowerCase()===e.toLocaleLowerCase()));if(s||this.defaultViewLabel.trim().toLocaleLowerCase()===e.toLocaleLowerCase()){return"A view with this name already exists."}return""}submitDialog(){const e=this.validateName();if(e){this.nameError=e;return}const s=this.nameDraft.trim();if(this.dialogMode==="rename"&&this.dialogView){this.dsViewRename.emit({viewId:this.dialogView.id,name:s})}else{this.dsViewCreate.emit({name:s})}this.dialogOpen=false}finishDialogClose(){if(this.dialogOpen)return;this.dialogViewId=null;this.nameDraft="";this.nameError="";const e=this.el.querySelector(`#${this.selectId}`);void e?.setFocus?.()}render(){return i(a,{key:"dc1e663e31022bf6db5038d06b5aeedef6ddbcd2"},i("ds-select",{key:"7b75ba471e11d812cf6bcfdc1e70d0992db141a2",neutralTrigger:true,hasBorder:this.hasBorder,id:this.selectId,size:"md",icon:"ViewMenu",indicator:"none",collapseLabel:true,iconOnly:this.compact,width:"fill",placeholder:this.label,"aria-label":this.label,sections:this.sections,value:this.value,triggerLabel:this.selectedCustomView?undefined:this.triggerLabel,triggerLabelPlaceholder:!this.selectedCustomView,dot:this.dirty&&Boolean(this.selectedCustomView),footerActionLabel:this.createLabel,activeFill:false,allowClear:false,onDsChange:e=>this.handleViewChange(e.detail),onDsFooterAction:()=>this.openDialog("create"),onDsOptionSubtextAction:e=>this.handleSubtextAction(e.detail),onDsOptionAction:e=>this.handleOptionAction(e.detail)}),i("ds-menu",{key:"2881a8fdd1c4cc61c39918c77d4ab721d4e39f2a",id:this.actionMenuId,anchorId:this.actionAnchorId,menuLabel:"Saved view options",side:"bottom",align:"end",menuWidth:"max-content",minWidth:"0",items:this.actionItems,open:this.actionMenuOpen,initialFocusVisible:this.actionMenuInitialFocusVisible,onDsClose:()=>this.actionMenuOpen=false,onDsAfterClose:()=>{if(this.actionMenuOpen)return;this.actionViewId=null;this.actionAnchorId=undefined},onDsSelect:e=>this.handleActionSelect(e)}),i("ds-modal",{key:"efb14c95181f9d3df6cc00dd1d4f2b9f3b34f95b",open:this.dialogOpen,heading:this.dialogMode==="rename"?"Rename view":"Save as new view",modalWidth:"sm",onDsClose:()=>this.dialogOpen=false,onDsAfterClose:()=>this.finishDialogClose()},i("ds-field",{key:"e48930056fa465bc7f29f8689ea8676c47df5d65",fieldId:this.fieldId,error:this.nameError.length>0,errorMessage:this.nameError},i("ds-input",{key:"ff3a0af3fa406f01f0dfa30a4701582fbbee2989",id:this.inputId,size:"md","aria-label":"Name",placeholder:"Enter a unique name",value:this.nameDraft,autoFocus:true,onDsChange:e=>{this.nameDraft=e.detail;if(this.nameError)this.nameError=""},onKeyDown:e=>{if(e.key==="Enter")this.submitDialog()}})),i("ds-button-filled",{key:"cb04dba393d9f1cb49b22dc34bfea7b607429451",slot:"footer",label:this.dialogMode==="rename"?"Rename":"Save",size:"md",onDsClick:()=>this.submitDialog()}),i("ds-button-unfilled",{key:"48e8f2d8e96b9b80bd1c543809e80606f54e7ca6",slot:"footer",label:"Cancel",size:"md",onDsClick:()=>this.dialogOpen=false})))}get el(){return this}static get style(){return y()}},[2,"ds-data-saved-views",{hasBorder:[4,"has-border"],views:[16],value:[1],dirty:[4],defaultViewId:[1,"default-view-id"],defaultViewLabel:[1,"default-view-label"],label:[1],triggerLabel:[1,"trigger-label"],compact:[4],createLabel:[1,"create-label"],actionViewId:[32],actionAnchorId:[32],actionMenuOpen:[32],actionMenuInitialFocusVisible:[32],dialogOpen:[32],dialogMode:[32],dialogViewId:[32],nameDraft:[32],nameError:[32]}]);function C(){if(typeof customElements==="undefined"){return}const e=["ds-data-saved-views","ds-badge","ds-button-filled","ds-button-unfilled","ds-checkbox","ds-divider","ds-empty-state","ds-field","ds-icon","ds-input","ds-loader","ds-menu","ds-modal","ds-select","ds-swatch-picker","ds-switch","ds-tag","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-data-saved-views":if(!customElements.get(d(e))){customElements.define(d(e),x)}break;case"ds-badge":if(!customElements.get(d(e))){n()}break;case"ds-button-filled":if(!customElements.get(d(e))){o()}break;case"ds-button-unfilled":if(!customElements.get(d(e))){l()}break;case"ds-checkbox":if(!customElements.get(d(e))){r()}break;case"ds-divider":if(!customElements.get(d(e))){h()}break;case"ds-empty-state":if(!customElements.get(d(e))){c()}break;case"ds-field":if(!customElements.get(d(e))){m()}break;case"ds-icon":if(!customElements.get(d(e))){f()}break;case"ds-input":if(!customElements.get(d(e))){u()}break;case"ds-loader":if(!customElements.get(d(e))){b()}break;case"ds-menu":if(!customElements.get(d(e))){p()}break;case"ds-modal":if(!customElements.get(d(e))){v()}break;case"ds-select":if(!customElements.get(d(e))){w()}break;case"ds-swatch-picker":if(!customElements.get(d(e))){k()}break;case"ds-switch":if(!customElements.get(d(e))){g()}break;case"ds-tag":if(!customElements.get(d(e))){D()}break;case"ds-text":if(!customElements.get(d(e))){E()}break;case"ds-tooltip":if(!customElements.get(d(e))){j()}break}}))}C();const A=x;const I=C;export{A as DsDataSavedViews,I as defineCustomElement};
|
|
2
|
+
//# sourceMappingURL=ds-data-saved-views.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["dataSavedViewsCss","tableSavedViewsId","DataSavedViews","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","hasBorder","views","value","dirty","defaultViewId","defaultViewLabel","label","triggerLabel","compact","createLabel","actionViewId","actionMenuOpen","actionMenuInitialFocusVisible","dialogOpen","dialogMode","dialogViewId","nameDraft","nameError","componentId","selectId","actionMenuId","fieldId","inputId","actionItems","isDestructive","selectedCustomView","find","view","id","dialogView","sections","custom","map","subtextActions","tone","undefined","action","controls","expanded","surfaceOpen","templates","header","options","divider","length","handleViewChange","dsViewChange","emit","viewId","handleSubtextAction","detail","actionValue","dsViewSave","dsViewDiscard","handleOptionAction","some","originalEvent","actionAnchorId","anchorId","handleActionSelect","event","openDialog","dsViewRemove","mode","item","requestAnimationFrame","input","el","querySelector","setFocus","validateName","name","trim","duplicate","toLocaleLowerCase","submitDialog","error","dsViewRename","dsViewCreate","finishDialogClose","select","render","h","Host","key","neutralTrigger","size","icon","indicator","collapseLabel","iconOnly","width","placeholder","triggerLabelPlaceholder","dot","Boolean","footerActionLabel","activeFill","allowClear","onDsChange","onDsFooterAction","onDsOptionSubtextAction","onDsOptionAction","menuLabel","side","align","menuWidth","minWidth","items","open","initialFocusVisible","onDsClose","onDsAfterClose","onDsSelect","heading","modalWidth","errorMessage","autoFocus","onKeyDown","slot","onDsClick"],"sources":["src/wc/components/DataSavedViews/DataSavedViews.css?tag=ds-data-saved-views&encapsulation=scoped","src/wc/components/DataSavedViews/DataSavedViews.tsx"],"sourcesContent":[":host {\n --ds-choice-popup-min-inline-size: var(--dimension-menu-width-xs);\n\n display: inline-block;\n min-inline-size: 0;\n max-inline-size: var(--dimension-menu-width-xs);\n}\n\nds-select {\n display: block;\n min-inline-size: 0;\n max-inline-size: 100%;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core';\nimport type { MenuItemData } from '../Menu/menu-types';\nimport type {\n SelectOptionActionDetail,\n SelectOptionSubtextActionDetail,\n SelectValue,\n} from '../Select/Select';\nimport type {\n DataSavedView,\n DataSavedViewChangeDetail,\n DataSavedViewCreateDetail,\n DataSavedViewDiscardDetail,\n DataSavedViewRemoveDetail,\n DataSavedViewRenameDetail,\n DataSavedViewSaveDetail,\n} from './data-saved-views-types';\n\ntype SavedViewDialogMode = 'create' | 'rename';\n\nlet tableSavedViewsId = 0;\n\n@Component({\n tag: 'ds-data-saved-views',\n styleUrl: 'DataSavedViews.css',\n scoped: true,\n})\nexport class DataSavedViews {\n @Element() el!: HTMLElement;\n\n /** Application-owned custom saved views. Assign arrays through the JavaScript property. */\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() views: DataSavedView[] = [];\n /** ID of the controlled active view, including the default view ID. */\n @Prop() value: string = '__default__';\n /** Whether the current table state differs from the selected custom view. Ignored for the default view. */\n @Prop() dirty: boolean = false;\n /** ID used for the built-in default view. */\n @Prop() defaultViewId: string = '__default__';\n /** Label used for the built-in default view. */\n @Prop() defaultViewLabel: string = 'Default';\n /** Accessible name for the saved-views select. */\n @Prop() label: string = 'Saved views';\n /** Trigger label shown while the default view is selected. */\n @Prop() triggerLabel: string = 'Views';\n /** Use an icon-only trigger in an explicitly compact toolbar. */\n @Prop() compact: boolean = false;\n /** Footer action label that opens the create-view dialog. */\n @Prop() createLabel: string = 'New view';\n\n /** Emitted when a view selection is requested. */\n @Event() dsViewChange!: EventEmitter<DataSavedViewChangeDetail>;\n /** Emitted after a valid create-view name is submitted. */\n @Event() dsViewCreate!: EventEmitter<DataSavedViewCreateDetail>;\n /** Emitted after a valid renamed view name is submitted. */\n @Event() dsViewRename!: EventEmitter<DataSavedViewRenameDetail>;\n /** Emitted when a custom view removal is requested. */\n @Event() dsViewRemove!: EventEmitter<DataSavedViewRemoveDetail>;\n /** Emitted when changes to the active custom view should replace its stored payload. */\n @Event() dsViewSave!: EventEmitter<DataSavedViewSaveDetail>;\n /** Emitted when the active custom view's stored payload should be restored. */\n @Event() dsViewDiscard!: EventEmitter<DataSavedViewDiscardDetail>;\n\n @State() private actionViewId: string | null = null;\n @State() private actionAnchorId: string | undefined;\n @State() private actionMenuOpen = false;\n @State() private actionMenuInitialFocusVisible = false;\n @State() private dialogOpen = false;\n @State() private dialogMode: SavedViewDialogMode = 'create';\n @State() private dialogViewId: string | null = null;\n @State() private nameDraft = '';\n @State() private nameError = '';\n\n private readonly componentId = `ds-data-saved-views-${++tableSavedViewsId}`;\n private readonly selectId = `${this.componentId}-select`;\n private readonly actionMenuId = `${this.componentId}-actions`;\n private readonly fieldId = `${this.componentId}-name-field`;\n private readonly inputId = `${this.componentId}-name-input`;\n private readonly actionItems: MenuItemData[] = [\n { label: 'Rename', value: 'rename' },\n { label: 'Remove', value: 'remove', isDestructive: true },\n ];\n\n private get selectedCustomView(): DataSavedView | undefined {\n return this.views.find(view => view.id === this.value);\n }\n\n private get dialogView(): DataSavedView | undefined {\n return this.views.find(view => view.id === this.dialogViewId);\n }\n\n private get sections() {\n const custom = this.views.map(view => ({\n label: view.label,\n value: view.id,\n subtextActions:\n this.dirty && view.id === this.selectedCustomView?.id\n ? [\n { label: 'Save', value: 'save' },\n { label: 'Discard', value: 'discard', tone: 'negative' as const },\n ]\n : undefined,\n action: {\n label: `Options for ${view.label}`,\n controls: this.actionMenuId,\n expanded: this.actionViewId === view.id && this.actionMenuOpen,\n surfaceOpen: this.actionViewId === view.id,\n },\n }));\n const templates = {\n header: 'Templates',\n options: [{ label: this.defaultViewLabel, value: this.defaultViewId }],\n divider: custom.length > 0,\n };\n return custom.length > 0 ? [templates, { header: 'Custom', options: custom }] : [templates];\n }\n\n private handleViewChange(value: SelectValue) {\n if (typeof value === 'string') this.dsViewChange.emit({ viewId: value });\n }\n\n private handleSubtextAction(detail: SelectOptionSubtextActionDetail) {\n const view = this.selectedCustomView;\n if (!view || !this.dirty || detail.value !== view.id) return;\n if (detail.actionValue === 'save') this.dsViewSave.emit({ viewId: view.id });\n if (detail.actionValue === 'discard') this.dsViewDiscard.emit({ viewId: view.id });\n }\n\n private handleOptionAction(detail: SelectOptionActionDetail) {\n if (!this.views.some(view => view.id === detail.value)) return;\n this.actionMenuInitialFocusVisible = detail.originalEvent.detail === 0;\n if (this.actionViewId === detail.value && this.actionMenuOpen) {\n this.actionMenuOpen = false;\n return;\n }\n this.actionViewId = detail.value;\n this.actionAnchorId = detail.anchorId;\n this.actionMenuOpen = true;\n }\n\n private handleActionSelect(event: CustomEvent<MenuItemData>) {\n const viewId = this.actionViewId;\n this.actionMenuOpen = false;\n if (!viewId) return;\n if (event.detail.value === 'rename') this.openDialog('rename', viewId);\n if (event.detail.value === 'remove') this.dsViewRemove.emit({ viewId });\n }\n\n private openDialog(mode: SavedViewDialogMode, viewId: string | null = null) {\n const view = mode === 'rename' ? this.views.find(item => item.id === viewId) : undefined;\n if (mode === 'rename' && !view) return;\n this.dialogMode = mode;\n this.dialogViewId = view?.id ?? null;\n this.nameDraft = view?.label ?? '';\n this.nameError = '';\n this.dialogOpen = true;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const input = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${this.inputId}`\n );\n void input?.setFocus?.();\n });\n });\n }\n\n private validateName(): string {\n const name = this.nameDraft.trim();\n if (!name) return 'View name is required.';\n const duplicate = this.views.some(\n view =>\n view.id !== this.dialogViewId &&\n view.label.trim().toLocaleLowerCase() === name.toLocaleLowerCase()\n );\n if (\n duplicate ||\n this.defaultViewLabel.trim().toLocaleLowerCase() === name.toLocaleLowerCase()\n ) {\n return 'A view with this name already exists.';\n }\n return '';\n }\n\n private submitDialog() {\n const error = this.validateName();\n if (error) {\n this.nameError = error;\n return;\n }\n const name = this.nameDraft.trim();\n if (this.dialogMode === 'rename' && this.dialogView) {\n this.dsViewRename.emit({ viewId: this.dialogView.id, name });\n } else {\n this.dsViewCreate.emit({ name });\n }\n this.dialogOpen = false;\n }\n\n private finishDialogClose() {\n if (this.dialogOpen) return;\n this.dialogViewId = null;\n this.nameDraft = '';\n this.nameError = '';\n const select = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${this.selectId}`\n );\n void select?.setFocus?.();\n }\n\n render() {\n return (\n <Host>\n <ds-select\n neutralTrigger\n hasBorder={this.hasBorder}\n id={this.selectId}\n size=\"md\"\n icon=\"ViewMenu\"\n indicator=\"none\"\n collapseLabel\n iconOnly={this.compact}\n width=\"fill\"\n placeholder={this.label}\n aria-label={this.label}\n sections={this.sections}\n value={this.value}\n triggerLabel={this.selectedCustomView ? undefined : this.triggerLabel}\n triggerLabelPlaceholder={!this.selectedCustomView}\n dot={this.dirty && Boolean(this.selectedCustomView)}\n footerActionLabel={this.createLabel}\n activeFill={false}\n allowClear={false}\n onDsChange={(event: CustomEvent<SelectValue>) => this.handleViewChange(event.detail)}\n onDsFooterAction={() => this.openDialog('create')}\n onDsOptionSubtextAction={(event: CustomEvent<SelectOptionSubtextActionDetail>) =>\n this.handleSubtextAction(event.detail)\n }\n onDsOptionAction={(event: CustomEvent<SelectOptionActionDetail>) =>\n this.handleOptionAction(event.detail)\n }\n />\n\n <ds-menu\n id={this.actionMenuId}\n anchorId={this.actionAnchorId}\n menuLabel=\"Saved view options\"\n side=\"bottom\"\n align=\"end\"\n menuWidth=\"max-content\"\n minWidth=\"0\"\n items={this.actionItems}\n open={this.actionMenuOpen}\n initialFocusVisible={this.actionMenuInitialFocusVisible}\n onDsClose={() => (this.actionMenuOpen = false)}\n onDsAfterClose={() => {\n if (this.actionMenuOpen) return;\n this.actionViewId = null;\n this.actionAnchorId = undefined;\n }}\n onDsSelect={(event: CustomEvent<MenuItemData>) => this.handleActionSelect(event)}\n />\n\n <ds-modal\n open={this.dialogOpen}\n heading={this.dialogMode === 'rename' ? 'Rename view' : 'Save as new view'}\n modalWidth=\"sm\"\n onDsClose={() => (this.dialogOpen = false)}\n onDsAfterClose={() => this.finishDialogClose()}\n >\n <ds-field\n fieldId={this.fieldId}\n error={this.nameError.length > 0}\n errorMessage={this.nameError}\n >\n <ds-input\n id={this.inputId}\n size=\"md\"\n aria-label=\"Name\"\n placeholder=\"Enter a unique name\"\n value={this.nameDraft}\n autoFocus={true}\n onDsChange={(event: CustomEvent<string>) => {\n this.nameDraft = event.detail;\n if (this.nameError) this.nameError = '';\n }}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter') this.submitDialog();\n }}\n />\n </ds-field>\n\n <ds-button-filled\n slot=\"footer\"\n label={this.dialogMode === 'rename' ? 'Rename' : 'Save'}\n size=\"md\"\n onDsClick={() => this.submitDialog()}\n />\n <ds-button-unfilled\n slot=\"footer\"\n label=\"Cancel\"\n size=\"md\"\n onDsClick={() => (this.dialogOpen = false)}\n />\n </ds-modal>\n </Host>\n );\n }\n}\n"],"mappings":"qsBAAA,MAAMA,EAAoB,IAAM,0QCmBhC,IAAIC,EAAoB,E,MAOXC,EAAcC,EAAA,MAAAD,UAAAE,EAL3B,WAAAC,CAAAC,G,4SAUUC,KAAAC,UAAqB,KACrBD,KAAAE,MAAyB,GAEzBF,KAAAG,MAAgB,cAEhBH,KAAAI,MAAiB,MAEjBJ,KAAAK,cAAwB,cAExBL,KAAAM,iBAA2B,UAE3BN,KAAAO,MAAgB,cAEhBP,KAAAQ,aAAuB,QAEvBR,KAAAS,QAAmB,MAEnBT,KAAAU,YAAsB,WAebV,KAAAW,aAA8B,KAE9BX,KAAAY,eAAiB,MACjBZ,KAAAa,8BAAgC,MAChCb,KAAAc,WAAa,MACbd,KAAAe,WAAkC,SAClCf,KAAAgB,aAA8B,KAC9BhB,KAAAiB,UAAY,GACZjB,KAAAkB,UAAY,GAEZlB,KAAAmB,YAAc,yBAAyBzB,IACvCM,KAAAoB,SAAW,GAAGpB,KAAKmB,qBACnBnB,KAAAqB,aAAe,GAAGrB,KAAKmB,sBACvBnB,KAAAsB,QAAU,GAAGtB,KAAKmB,yBAClBnB,KAAAuB,QAAU,GAAGvB,KAAKmB,yBAClBnB,KAAAwB,YAA8B,CAC7C,CAAEjB,MAAO,SAAUJ,MAAO,UAC1B,CAAEI,MAAO,SAAUJ,MAAO,SAAUsB,cAAe,MAmOtD,CAhOC,sBAAYC,GACV,OAAO1B,KAAKE,MAAMyB,MAAKC,GAAQA,EAAKC,KAAO7B,KAAKG,O,CAGlD,cAAY2B,GACV,OAAO9B,KAAKE,MAAMyB,MAAKC,GAAQA,EAAKC,KAAO7B,KAAKgB,c,CAGlD,YAAYe,GACV,MAAMC,EAAShC,KAAKE,MAAM+B,KAAIL,IAAI,CAChCrB,MAAOqB,EAAKrB,MACZJ,MAAOyB,EAAKC,GACZK,eACElC,KAAKI,OAASwB,EAAKC,KAAO7B,KAAK0B,oBAAoBG,GAC/C,CACE,CAAEtB,MAAO,OAAQJ,MAAO,QACxB,CAAEI,MAAO,UAAWJ,MAAO,UAAWgC,KAAM,aAE9CC,UACNC,OAAQ,CACN9B,MAAO,eAAeqB,EAAKrB,QAC3B+B,SAAUtC,KAAKqB,aACfkB,SAAUvC,KAAKW,eAAiBiB,EAAKC,IAAM7B,KAAKY,eAChD4B,YAAaxC,KAAKW,eAAiBiB,EAAKC,QAG5C,MAAMY,EAAY,CAChBC,OAAQ,YACRC,QAAS,CAAC,CAAEpC,MAAOP,KAAKM,iBAAkBH,MAAOH,KAAKK,gBACtDuC,QAASZ,EAAOa,OAAS,GAE3B,OAAOb,EAAOa,OAAS,EAAI,CAACJ,EAAW,CAAEC,OAAQ,SAAUC,QAASX,IAAY,CAACS,E,CAG3E,gBAAAK,CAAiB3C,GACvB,UAAWA,IAAU,SAAUH,KAAK+C,aAAaC,KAAK,CAAEC,OAAQ9C,G,CAG1D,mBAAA+C,CAAoBC,GAC1B,MAAMvB,EAAO5B,KAAK0B,mBAClB,IAAKE,IAAS5B,KAAKI,OAAS+C,EAAOhD,QAAUyB,EAAKC,GAAI,OACtD,GAAIsB,EAAOC,cAAgB,OAAQpD,KAAKqD,WAAWL,KAAK,CAAEC,OAAQrB,EAAKC,KACvE,GAAIsB,EAAOC,cAAgB,UAAWpD,KAAKsD,cAAcN,KAAK,CAAEC,OAAQrB,EAAKC,I,CAGvE,kBAAA0B,CAAmBJ,GACzB,IAAKnD,KAAKE,MAAMsD,MAAK5B,GAAQA,EAAKC,KAAOsB,EAAOhD,QAAQ,OACxDH,KAAKa,8BAAgCsC,EAAOM,cAAcN,SAAW,EACrE,GAAInD,KAAKW,eAAiBwC,EAAOhD,OAASH,KAAKY,eAAgB,CAC7DZ,KAAKY,eAAiB,MACtB,M,CAEFZ,KAAKW,aAAewC,EAAOhD,MAC3BH,KAAK0D,eAAiBP,EAAOQ,SAC7B3D,KAAKY,eAAiB,I,CAGhB,kBAAAgD,CAAmBC,GACzB,MAAMZ,EAASjD,KAAKW,aACpBX,KAAKY,eAAiB,MACtB,IAAKqC,EAAQ,OACb,GAAIY,EAAMV,OAAOhD,QAAU,SAAUH,KAAK8D,WAAW,SAAUb,GAC/D,GAAIY,EAAMV,OAAOhD,QAAU,SAAUH,KAAK+D,aAAaf,KAAK,CAAEC,U,CAGxD,UAAAa,CAAWE,EAA2Bf,EAAwB,MACpE,MAAMrB,EAAOoC,IAAS,SAAWhE,KAAKE,MAAMyB,MAAKsC,GAAQA,EAAKpC,KAAOoB,IAAUb,UAC/E,GAAI4B,IAAS,WAAapC,EAAM,OAChC5B,KAAKe,WAAaiD,EAClBhE,KAAKgB,aAAeY,GAAMC,IAAM,KAChC7B,KAAKiB,UAAYW,GAAMrB,OAAS,GAChCP,KAAKkB,UAAY,GACjBlB,KAAKc,WAAa,KAClBoD,uBAAsB,KACpBA,uBAAsB,KACpB,MAAMC,EAAQnE,KAAKoE,GAAGC,cACpB,IAAIrE,KAAKuB,gBAEN4C,GAAOG,YAAY,GACxB,G,CAIE,YAAAC,GACN,MAAMC,EAAOxE,KAAKiB,UAAUwD,OAC5B,IAAKD,EAAM,MAAO,yBAClB,MAAME,EAAY1E,KAAKE,MAAMsD,MAC3B5B,GACEA,EAAKC,KAAO7B,KAAKgB,cACjBY,EAAKrB,MAAMkE,OAAOE,sBAAwBH,EAAKG,sBAEnD,GACED,GACA1E,KAAKM,iBAAiBmE,OAAOE,sBAAwBH,EAAKG,oBAC1D,CACA,MAAO,uC,CAET,MAAO,E,CAGD,YAAAC,GACN,MAAMC,EAAQ7E,KAAKuE,eACnB,GAAIM,EAAO,CACT7E,KAAKkB,UAAY2D,EACjB,M,CAEF,MAAML,EAAOxE,KAAKiB,UAAUwD,OAC5B,GAAIzE,KAAKe,aAAe,UAAYf,KAAK8B,WAAY,CACnD9B,KAAK8E,aAAa9B,KAAK,CAAEC,OAAQjD,KAAK8B,WAAWD,GAAI2C,Q,KAChD,CACLxE,KAAK+E,aAAa/B,KAAK,CAAEwB,Q,CAE3BxE,KAAKc,WAAa,K,CAGZ,iBAAAkE,GACN,GAAIhF,KAAKc,WAAY,OACrBd,KAAKgB,aAAe,KACpBhB,KAAKiB,UAAY,GACjBjB,KAAKkB,UAAY,GACjB,MAAM+D,EAASjF,KAAKoE,GAAGC,cACrB,IAAIrE,KAAKoB,iBAEN6D,GAAQX,Y,CAGf,MAAAY,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,aAAAE,IAAA,2CACEC,eAAc,KACdrF,UAAWD,KAAKC,UAChB4B,GAAI7B,KAAKoB,SACTmE,KAAK,KACLC,KAAK,WACLC,UAAU,OACVC,cAAa,KACbC,SAAU3F,KAAKS,QACfmF,MAAM,OACNC,YAAa7F,KAAKO,MAAK,aACXP,KAAKO,MACjBwB,SAAU/B,KAAK+B,SACf5B,MAAOH,KAAKG,MACZK,aAAcR,KAAK0B,mBAAqBU,UAAYpC,KAAKQ,aACzDsF,yBAA0B9F,KAAK0B,mBAC/BqE,IAAK/F,KAAKI,OAAS4F,QAAQhG,KAAK0B,oBAChCuE,kBAAmBjG,KAAKU,YACxBwF,WAAY,MACZC,WAAY,MACZC,WAAavC,GAAoC7D,KAAK8C,iBAAiBe,EAAMV,QAC7EkD,iBAAkB,IAAMrG,KAAK8D,WAAW,UACxCwC,wBAA0BzC,GACxB7D,KAAKkD,oBAAoBW,EAAMV,QAEjCoD,iBAAmB1C,GACjB7D,KAAKuD,mBAAmBM,EAAMV,UAIlCgC,EAAA,WAAAE,IAAA,2CACExD,GAAI7B,KAAKqB,aACTsC,SAAU3D,KAAK0D,eACf8C,UAAU,qBACVC,KAAK,SACLC,MAAM,MACNC,UAAU,cACVC,SAAS,IACTC,MAAO7G,KAAKwB,YACZsF,KAAM9G,KAAKY,eACXmG,oBAAqB/G,KAAKa,8BAC1BmG,UAAW,IAAOhH,KAAKY,eAAiB,MACxCqG,eAAgB,KACd,GAAIjH,KAAKY,eAAgB,OACzBZ,KAAKW,aAAe,KACpBX,KAAK0D,eAAiBtB,SAAS,EAEjC8E,WAAarD,GAAqC7D,KAAK4D,mBAAmBC,KAG5EsB,EAAA,YAAAE,IAAA,2CACEyB,KAAM9G,KAAKc,WACXqG,QAASnH,KAAKe,aAAe,SAAW,cAAgB,mBACxDqG,WAAW,KACXJ,UAAW,IAAOhH,KAAKc,WAAa,MACpCmG,eAAgB,IAAMjH,KAAKgF,qBAE3BG,EAAA,YAAAE,IAAA,2CACE/D,QAAStB,KAAKsB,QACduD,MAAO7E,KAAKkB,UAAU2B,OAAS,EAC/BwE,aAAcrH,KAAKkB,WAEnBiE,EAAA,YAAAE,IAAA,2CACExD,GAAI7B,KAAKuB,QACTgE,KAAK,KAAI,aACE,OACXM,YAAY,sBACZ1F,MAAOH,KAAKiB,UACZqG,UAAW,KACXlB,WAAavC,IACX7D,KAAKiB,UAAY4C,EAAMV,OACvB,GAAInD,KAAKkB,UAAWlB,KAAKkB,UAAY,EAAE,EAEzCqG,UAAY1D,IACV,GAAIA,EAAMwB,MAAQ,QAASrF,KAAK4E,cAAc,KAKpDO,EAAA,oBAAAE,IAAA,2CACEmC,KAAK,SACLjH,MAAOP,KAAKe,aAAe,SAAW,SAAW,OACjDwE,KAAK,KACLkC,UAAW,IAAMzH,KAAK4E,iBAExBO,EAAA,sBAAAE,IAAA,2CACEmC,KAAK,SACLjH,MAAM,SACNgF,KAAK,KACLkC,UAAW,IAAOzH,KAAKc,WAAa,S","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface DsDataSearch extends Components.DsDataSearch, HTMLElement {}
|
|
4
|
+
export const DsDataSearch: {
|
|
5
|
+
prototype: DsDataSearch;
|
|
6
|
+
new (): DsDataSearch;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|