@ds-mo/ui 14.15.0 → 14.16.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 +3 -3
- package/dist/agent.json +161 -24
- package/dist/angular/ds-button-unfilled.d.ts +1 -1
- package/dist/angular/ds-button-unfilled.js +3 -3
- package/dist/angular/ds-filter-menu.d.ts +1 -1
- package/dist/angular/ds-filter-menu.js +3 -3
- package/dist/angular/ds-select.d.ts +1 -1
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-table-sort.d.ts +16 -0
- package/dist/angular/ds-table-sort.js +43 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-banner.js.map +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-action.js.map +1 -1
- package/dist/components/ds-bar-nav.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-bar-workflow.js.map +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-chart.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-overview.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-chart.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +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-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-filter-menu.js.map +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-loader.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-actions.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-scroller.js.map +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-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-sub-nav.js.map +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tool-search.js.map +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-scroll-overlay.js.map +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-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-saved-views.js +1 -1
- package/dist/components/ds-table-saved-views.js.map +1 -1
- package/dist/components/ds-table-sort.d.ts +11 -0
- package/dist/components/ds-table-sort.js +2 -0
- package/dist/components/ds-table-sort.js.map +1 -0
- package/dist/components/ds-table-toolbar.js +1 -1
- package/dist/components/ds-table-toolbar.js.map +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-toast.js.map +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-CjgnFGd6.js → p-0IbKxhqM.js} +2 -2
- package/dist/components/{p-CjgnFGd6.js.map → p-0IbKxhqM.js.map} +1 -1
- package/dist/components/p-23u3lIr1.js +2 -0
- package/dist/components/{p-DLkNcCY0.js.map → p-23u3lIr1.js.map} +1 -1
- package/dist/components/{p-DfyfrfHL.js → p-3dYwA4i_.js} +2 -2
- package/dist/components/{p-DfyfrfHL.js.map → p-3dYwA4i_.js.map} +1 -1
- package/dist/components/{p-C1q-tq3U.js → p-7tZx4ukz.js} +2 -2
- package/dist/components/{p-C5TrNd31.js → p-B0PEg5RF.js} +2 -2
- package/dist/components/{p-C5TrNd31.js.map → p-B0PEg5RF.js.map} +1 -1
- package/dist/components/{p-DZFilC--.js → p-BGXqFq2C.js} +2 -2
- package/dist/components/{p-Rfpd5mWO.js → p-BHDkJmrC.js} +2 -2
- package/dist/components/{p-Rfpd5mWO.js.map → p-BHDkJmrC.js.map} +1 -1
- package/dist/components/{p-BXPQmp7q.js → p-BK-JjdoN.js} +2 -2
- package/dist/components/p-BUhShHfb.js +2 -0
- package/dist/components/{p-URdgCwEs.js.map → p-BUhShHfb.js.map} +1 -1
- package/dist/components/{p-CKY989vF.js → p-BUrbVZJU.js} +2 -2
- package/dist/components/{p-CKY989vF.js.map → p-BUrbVZJU.js.map} +1 -1
- package/dist/components/{p-V2ywPfsR.js → p-BVlfQ8xZ.js} +2 -2
- package/dist/components/{p-V2ywPfsR.js.map → p-BVlfQ8xZ.js.map} +1 -1
- package/dist/components/p-BdnQv7Zl.js +2 -0
- package/dist/components/p-BdnQv7Zl.js.map +1 -0
- package/dist/components/{p-Btxwp4lJ.js → p-BhYWdbEp.js} +2 -2
- package/dist/components/{p-Btxwp4lJ.js.map → p-BhYWdbEp.js.map} +1 -1
- package/dist/components/{p-B80NfEqc.js → p-C0X2zKbB.js} +2 -2
- package/dist/components/{p-Cyw9odJX.js → p-C4p2i59V.js} +2 -2
- package/dist/components/{p-Cyw9odJX.js.map → p-C4p2i59V.js.map} +1 -1
- package/dist/components/p-C91izpHV.js +2 -0
- package/dist/components/{p-CnWC0QvG.js.map → p-C91izpHV.js.map} +1 -1
- package/dist/components/p-COVcyUAA.js +2 -0
- package/dist/components/p-COVcyUAA.js.map +1 -0
- package/dist/components/{p-D1Nqlrrl.js → p-C_TOgX82.js} +2 -2
- package/dist/components/{p-D1Nqlrrl.js.map → p-C_TOgX82.js.map} +1 -1
- package/dist/components/{p-Ct-m0I6U.js → p-CaAZ-D08.js} +2 -2
- package/dist/components/p-Cr2VT5zv.js +2 -0
- package/dist/components/{p-M9DPfXbP.js.map → p-Cr2VT5zv.js.map} +1 -1
- package/dist/components/{p-Dsn1RCS5.js → p-Ct2GVdSI.js} +2 -2
- package/dist/components/{p-Dsn1RCS5.js.map → p-Ct2GVdSI.js.map} +1 -1
- package/dist/components/p-CwkcFMMe.js +2 -0
- package/dist/components/{p-CWDmHPJC.js.map → p-CwkcFMMe.js.map} +1 -1
- package/dist/components/p-CxBE3l74.js +2 -0
- package/dist/components/{p-CKJzHclc.js.map → p-CxBE3l74.js.map} +1 -1
- package/dist/components/{p-PzI11fs8.js → p-CzcWZiH-.js} +2 -2
- package/dist/components/{p-PzI11fs8.js.map → p-CzcWZiH-.js.map} +1 -1
- package/dist/components/{p-BagXfn1G.js → p-D1YhYulL.js} +2 -2
- package/dist/components/{p-BzObtSlo.js → p-D2z2DgtX.js} +2 -2
- package/dist/components/{p-BzObtSlo.js.map → p-D2z2DgtX.js.map} +1 -1
- package/dist/components/{p-DcPVSNDr.js → p-D8Qd6gkf.js} +2 -2
- package/dist/components/{p-DcPVSNDr.js.map → p-D8Qd6gkf.js.map} +1 -1
- package/dist/components/p-DAV32g35.js +2 -0
- package/dist/components/p-DAV32g35.js.map +1 -0
- package/dist/components/{p-BHjw0x3L.js → p-DAqSoyd4.js} +2 -2
- package/dist/components/{p-BHjw0x3L.js.map → p-DAqSoyd4.js.map} +1 -1
- package/dist/components/{p-Bf_D3crn.js → p-DNJTN_s0.js} +2 -2
- package/dist/components/{p-DL_5VENG.js → p-DQqOzDEq.js} +2 -2
- package/dist/components/{p-C5eosu67.js → p-DRBTr6TS.js} +2 -2
- package/dist/components/{p-C5eosu67.js.map → p-DRBTr6TS.js.map} +1 -1
- package/dist/components/{p-D-kWb8cF.js → p-DSIOINBK.js} +2 -2
- package/dist/components/{p-QdI17bl-.js → p-Dg9qiMDa.js} +2 -2
- package/dist/components/{p-DTMxwYQj.js → p-EWI6ccs-.js} +2 -2
- package/dist/components/p-JPTkZ3Ji.js +2 -0
- package/dist/components/p-JPTkZ3Ji.js.map +1 -0
- package/dist/components/p-MxptXwlW.js +2 -0
- package/dist/components/{p-C2n8A8NA.js.map → p-MxptXwlW.js.map} +1 -1
- package/dist/components/{p-B7Hf86NF.js → p-PD1Vfg0t.js} +2 -2
- package/dist/components/{p-B7Hf86NF.js.map → p-PD1Vfg0t.js.map} +1 -1
- package/dist/components/{p-BxqBiVbH.js → p-U8JIZzI2.js} +2 -2
- package/dist/components/{p-BxqBiVbH.js.map → p-U8JIZzI2.js.map} +1 -1
- package/dist/components/{p-Ck_VRQYi.js → p-WGZWqh-B.js} +2 -2
- package/dist/components/{p-Ck_VRQYi.js.map → p-WGZWqh-B.js.map} +1 -1
- package/dist/components/{p-vWK5faWZ.js → p-a6qP60zb.js} +2 -2
- package/dist/components/p-vzxD117T.js +2 -0
- package/dist/components/{p-BzLnSwG9.js.map → p-vzxD117T.js.map} +1 -1
- package/dist/components/{p-jMCRaxQW.js → p-y4jhIkRc.js} +2 -2
- package/dist/components/{p-jMCRaxQW.js.map → p-y4jhIkRc.js.map} +1 -1
- package/dist/docs/components.json +326 -11
- package/dist/mcp-data/registry/button-unfilled.json +26 -7
- package/dist/mcp-data/registry/filter-menu.json +25 -6
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/registry.json +163 -23
- package/dist/mcp-data/registry/select.json +22 -3
- package/dist/mcp-data/registry/shell-app.json +3 -3
- package/dist/mcp-data/registry/table-saved-views.json +4 -4
- package/dist/mcp-data/registry/table-sort.json +229 -0
- package/dist/mcp-data/registry/table-toolbar.json +19 -12
- package/dist/mcp-data/registry/table.json +16 -9
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-table-sort.d.ts +12 -0
- package/dist/react/ds-table-sort.js +12 -0
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +16 -1
- package/dist/types/components/FilterMenu/FilterMenu.d.ts +11 -0
- package/dist/types/components/Select/Select.d.ts +11 -0
- package/dist/types/components/Table/Table.d.ts +5 -0
- package/dist/types/components/Table/table-column-customizer.d.ts +2 -0
- package/dist/types/components/Table/table-pagination-shortcut.d.ts +16 -0
- package/dist/types/components/TableSort/TableSort.d.ts +24 -0
- package/dist/types/components/TableSort/table-sort-menu.d.ts +15 -0
- package/dist/types/components/TableToolbar/TableToolbar.d.ts +6 -0
- package/dist/types/components.d.ts +102 -6
- package/dist/types/utils/table-caption-compact.d.ts +6 -0
- package/dist/vue/components.d.ts +1 -0
- package/dist/vue/components.js +1 -0
- package/dist/vue/ds-button-unfilled.js +1 -0
- package/dist/vue/ds-filter-menu.js +1 -0
- package/dist/vue/ds-select.js +1 -0
- package/dist/vue/ds-table-sort.d.ts +3 -0
- package/dist/vue/ds-table-sort.js +13 -0
- package/package.json +1 -1
- package/dist/components/p-BzLnSwG9.js +0 -2
- package/dist/components/p-C2n8A8NA.js +0 -2
- package/dist/components/p-C7rzVotG.js +0 -2
- package/dist/components/p-C7rzVotG.js.map +0 -1
- package/dist/components/p-CKJzHclc.js +0 -2
- package/dist/components/p-CWDmHPJC.js +0 -2
- package/dist/components/p-Ca-I2UnB.js +0 -2
- package/dist/components/p-Ca-I2UnB.js.map +0 -1
- package/dist/components/p-CnWC0QvG.js +0 -2
- package/dist/components/p-CooNucm0.js +0 -2
- package/dist/components/p-CooNucm0.js.map +0 -1
- package/dist/components/p-DLkNcCY0.js +0 -2
- package/dist/components/p-M9DPfXbP.js +0 -2
- package/dist/components/p-URdgCwEs.js +0 -2
- /package/dist/components/{p-C1q-tq3U.js.map → p-7tZx4ukz.js.map} +0 -0
- /package/dist/components/{p-DZFilC--.js.map → p-BGXqFq2C.js.map} +0 -0
- /package/dist/components/{p-BXPQmp7q.js.map → p-BK-JjdoN.js.map} +0 -0
- /package/dist/components/{p-B80NfEqc.js.map → p-C0X2zKbB.js.map} +0 -0
- /package/dist/components/{p-Ct-m0I6U.js.map → p-CaAZ-D08.js.map} +0 -0
- /package/dist/components/{p-BagXfn1G.js.map → p-D1YhYulL.js.map} +0 -0
- /package/dist/components/{p-Bf_D3crn.js.map → p-DNJTN_s0.js.map} +0 -0
- /package/dist/components/{p-DL_5VENG.js.map → p-DQqOzDEq.js.map} +0 -0
- /package/dist/components/{p-D-kWb8cF.js.map → p-DSIOINBK.js.map} +0 -0
- /package/dist/components/{p-QdI17bl-.js.map → p-Dg9qiMDa.js.map} +0 -0
- /package/dist/components/{p-DTMxwYQj.js.map → p-EWI6ccs-.js.map} +0 -0
- /package/dist/components/{p-vWK5faWZ.js.map → p-a6qP60zb.js.map} +0 -0
package/dist/.package-ready.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"schemaVersion":1,"package":"@ds-mo/ui","version":"14.
|
|
1
|
+
{"schemaVersion":1,"package":"@ds-mo/ui","version":"14.16.0","components":74,"digest":"252b33dcea1f528f84e85ca174186555aa1b6b160b394a753198193999411b08","completedAt":"2026-08-25T04:03:07.181Z"}
|
package/dist/agent-patterns.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@ds-mo/ui",
|
|
4
|
-
"packageVersion": "14.
|
|
4
|
+
"packageVersion": "14.16.0",
|
|
5
5
|
"kind": "patterns",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -476,7 +476,7 @@
|
|
|
476
476
|
"accessibility": [
|
|
477
477
|
"A button either has a menu or is a menu, and the trigger's variant selects between the two shapes.",
|
|
478
478
|
"Has a menu: a label or icon-label action that opens a menu. Set hasMenu, which implies aria-haspopup of menu and renders the trailing chevron that communicates the popup. Both button primitives support this shape.",
|
|
479
|
-
"Is a menu: an icon-only control. Set hasMenu, which adds no chevron, so the glyph must convey the menu alone. Use Ellipses for generic more-options or overflow. Use a specific icon when the menu has a named purpose, such as
|
|
479
|
+
"Is a menu: an icon-only control. Set hasMenu, which adds no chevron, so the glyph must convey the menu alone. Use Ellipses for generic more-options or overflow. Use a specific icon when the menu has a named purpose, such as Table for Customize table. Only ButtonUnfilled carries this shape, because the role is chrome rather than a primary action.",
|
|
480
480
|
"Set controls to the Menu id and expanded from the same open state passed to Menu.",
|
|
481
481
|
"Give an icon-only trigger an accessible name that states the role, such as More options or Customize table, because no visible label or chevron carries it.",
|
|
482
482
|
"Use haspopup directly instead of hasMenu for a non-menu popup such as a listbox or dialog; those cases get no chevron.",
|
|
@@ -502,7 +502,7 @@
|
|
|
502
502
|
{
|
|
503
503
|
"path": "view-menu.html",
|
|
504
504
|
"language": "html",
|
|
505
|
-
"content": "<ds-button-unfilled\n id=\"view-menu-trigger\"\n label=\"View · Overview\"\n has-menu\n controls=\"view-menu\"\n></ds-button-unfilled>\n<ds-menu\n id=\"view-menu\"\n anchor-id=\"view-menu-trigger\"\n menu-label=\"Choose view\"\n></ds-menu>\n\n<!-- Overflow shape: Ellipses means more options, so no chevron is added. -->\n<ds-button-unfilled\n id=\"row-menu-trigger\"\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label=\"More options\"\n has-menu\n controls=\"row-menu\"\n></ds-button-unfilled>\n<ds-menu\n id=\"row-menu\"\n anchor-id=\"row-menu-trigger\"\n menu-label=\"More options\"\n align=\"end\"\n></ds-menu>\n\n<!-- Named menu:
|
|
505
|
+
"content": "<ds-button-unfilled\n id=\"view-menu-trigger\"\n label=\"View · Overview\"\n has-menu\n controls=\"view-menu\"\n></ds-button-unfilled>\n<ds-menu\n id=\"view-menu\"\n anchor-id=\"view-menu-trigger\"\n menu-label=\"Choose view\"\n></ds-menu>\n\n<!-- Overflow shape: Ellipses means more options, so no chevron is added. -->\n<ds-button-unfilled\n id=\"row-menu-trigger\"\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label=\"More options\"\n has-menu\n controls=\"row-menu\"\n></ds-button-unfilled>\n<ds-menu\n id=\"row-menu\"\n anchor-id=\"row-menu-trigger\"\n menu-label=\"More options\"\n align=\"end\"\n></ds-menu>\n\n<!-- Named menu: icon-label carries the visible name. -->\n<ds-button-unfilled\n id=\"customize-menu-trigger\"\n variant=\"icon-label\"\n icon=\"Table\"\n label=\"Customize\"\n aria-label=\"Customize table\"\n has-menu\n controls=\"customize-menu\"\n></ds-button-unfilled>\n<ds-menu\n id=\"customize-menu\"\n anchor-id=\"customize-menu-trigger\"\n menu-label=\"Customize table\"\n align=\"end\"\n></ds-menu>"
|
|
506
506
|
},
|
|
507
507
|
{
|
|
508
508
|
"path": "view-menu.ts",
|
package/dist/agent.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@ds-mo/ui",
|
|
4
|
-
"packageVersion": "14.
|
|
4
|
+
"packageVersion": "14.16.0",
|
|
5
5
|
"kind": "components",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -1978,7 +1978,7 @@
|
|
|
1978
1978
|
"Set isInset only when the button is nested inside a same-size control. The default single inset removes 4px overall; insetDepth double removes 8px overall so the parent can add 4px per edge while preserving its outer alignment box. Double inset falls back to single at xs to protect minimum icon geometry.",
|
|
1979
1979
|
"A true pressed toggle and owner-controlled isActive emphasis share the selected visual treatment, but only pressed supplies toggle semantics and dsChange.",
|
|
1980
1980
|
"General content UI keeps the selected interaction fill and border for pressed or active emphasis.",
|
|
1981
|
-
"Shell, navigation, and tool-rail composites use isActive with foreground-only emphasis and no selected fill or border.",
|
|
1981
|
+
"Shell, navigation, and tool-rail composites use isActive with foreground-only emphasis and no selected fill or border. On icon-label that emphasis is the label; the leading icon and menu chevron keep the resting foreground. On icon, the glyph is the only content and takes the primary foreground.",
|
|
1982
1982
|
"The omitted default surface treatment is for primary and secondary parent surfaces and uses the brand-active selected fill; pass faint explicitly on faint surfaces to use the neutral active fill.",
|
|
1983
1983
|
"Surface context must match the actual parent surface; translucent, inverted, media, and always-dark treatments are reserved for those surfaces.",
|
|
1984
1984
|
"Loading prevents duplicate activation without applying inactive opacity or removing the current keyboard focus.",
|
|
@@ -1986,11 +1986,12 @@
|
|
|
1986
1986
|
"Physical press scaling is on by default. Disable it only when an owning composite must keep child or background geometry fixed; hover and pressed interaction washes remain available.",
|
|
1987
1987
|
"Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width.",
|
|
1988
1988
|
"hasMenu covers two distinct menu-button shapes and the variant selects between them. With label or icon-label the action has a menu, and a trailing chevron carries the affordance. With icon the button is a menu and no chevron is added.",
|
|
1989
|
-
"Because the icon-only shape has no chevron, its glyph must convey the menu on its own. Use Ellipses for a generic more-options or overflow control. Use a specific icon when the menu has a named purpose, such as
|
|
1989
|
+
"Because the icon-only shape has no chevron, its glyph must convey the menu on its own. Use Ellipses for a generic more-options or overflow control. Use a specific icon when the menu has a named purpose, such as Table for Customize table.",
|
|
1990
1990
|
"An open popup is a transient pressed state rather than a selected one. While expanded is true and haspopup or hasMenu identifies a popup, the pressed wash is held for the popup's complete rendered lifecycle and survives hover without promoting foreground or selected fill, including when chrome opts out of selected fills with activeFill set to false. Expanded disclosure buttons without popup semantics remain visually neutral."
|
|
1991
1991
|
],
|
|
1992
1992
|
"responsiveBehavior": [
|
|
1993
|
-
"The consuming layout decides when an icon-label action becomes icon-only and must provide an explicit accessible name after changing variants.",
|
|
1993
|
+
"The consuming layout decides when an icon-label action becomes icon-only and must provide an explicit accessible name after changing variants. Table caption Customize is one such layout: below 900px it uses the icon shape, and a customized catalog promotes the Table icon to primary.",
|
|
1994
|
+
"When collapseLabel is set inside a named ds-table container narrower than 900px, an icon-label caption action omits its label and chevron and becomes icon-only while keeping its accessible name. An active control then promotes the icon to primary.",
|
|
1994
1995
|
"Use fill width only when the parent layout requires a full-width secondary action."
|
|
1995
1996
|
],
|
|
1996
1997
|
"frameworkCaveats": {
|
|
@@ -2026,6 +2027,10 @@
|
|
|
2026
2027
|
"type": "ButtonUnfilledBackground | undefined",
|
|
2027
2028
|
"required": false
|
|
2028
2029
|
},
|
|
2030
|
+
"collapseLabel": {
|
|
2031
|
+
"type": "boolean",
|
|
2032
|
+
"required": false
|
|
2033
|
+
},
|
|
2029
2034
|
"controls": {
|
|
2030
2035
|
"type": "string | undefined",
|
|
2031
2036
|
"required": false
|
|
@@ -3831,6 +3836,7 @@
|
|
|
3831
3836
|
],
|
|
3832
3837
|
"responsiveBehavior": [
|
|
3833
3838
|
"The popup defaults to the large menu-width token and clamps to the viewport.",
|
|
3839
|
+
"When collapseLabel is set inside a named ds-table container narrower than 900px, the trigger omits its label and chevron and becomes icon-only. Active criteria promote the prefix icon to primary.",
|
|
3834
3840
|
"Both panes remain visible at narrow widths, with a smaller category minimum and reduced option-pane padding.",
|
|
3835
3841
|
"Treat side as preferred placement; the popup flips and clamps when viewport collision requires it."
|
|
3836
3842
|
],
|
|
@@ -3890,6 +3896,10 @@
|
|
|
3890
3896
|
"type": "string",
|
|
3891
3897
|
"required": false
|
|
3892
3898
|
},
|
|
3899
|
+
"collapseLabel": {
|
|
3900
|
+
"type": "boolean",
|
|
3901
|
+
"required": false
|
|
3902
|
+
},
|
|
3893
3903
|
"filters": {
|
|
3894
3904
|
"type": "FilterMenuFilter[]",
|
|
3895
3905
|
"required": false
|
|
@@ -7210,7 +7220,7 @@
|
|
|
7210
7220
|
"Option labels and the selected trigger label stay on one line and truncate when constrained. Option subtext may wrap to at most two lines.",
|
|
7211
7221
|
"Use an option action only for a contextual menu about that user-managed option. The fixed ellipsis action appears on hover, keyboard activity, focus, and touch; expanded keeps it visible while its controlled menu is open. Activating it emits dsOptionAction without selecting the option or closing the Select popup.",
|
|
7212
7222
|
"Use option subtextActions for a compact set of immediate actions that belong to one option. They render beneath only that option's label using the standard supporting-text inset and rhythm, use action or negative semantic color, and emit dsOptionSubtextAction without selecting the option or closing the popup. Unlike descriptive subtext, they do not reserve a blank supporting line on neighboring options.",
|
|
7213
|
-
"The optional prefix icon and trailing indicator always use the parent surface's secondary foreground color, including when a selected value promotes the label to primary. The default down indicator communicates disclosure; up-down is reserved for compact value steppers such as pagination page size.",
|
|
7223
|
+
"The optional prefix icon and trailing indicator always use the parent surface's secondary foreground color, including when a selected value promotes the label to primary. When collapseLabel compact icon-only chrome is active, a selected value promotes the prefix icon to primary instead. The default down indicator communicates disclosure; up-down is reserved for compact value steppers such as pagination page size.",
|
|
7214
7224
|
"While the popup is open, the trigger holds the pressed interaction wash without changing its resting foreground or selected-value treatment.",
|
|
7215
7225
|
"The shared popup search control follows the Select density, using the same text, icon, and internal spacing as a borderless trigger. Its container uses menu-item padding on every side and owns a 1px bottom divider that becomes a 1.5px bold-brand stroke while search has focus. Search placeholder text is secondary at rest and quaternary while focused because it becomes decorative once the editable field is active.",
|
|
7216
7226
|
"When search contains text, the shared control shows a rounded icon-only ButtonUnfilled with the CrossCircle icon and no border, sized to remain inset within the current row density. It clears the local term, stays hidden for an empty term, and returns focus to search.",
|
|
@@ -7226,6 +7236,7 @@
|
|
|
7226
7236
|
],
|
|
7227
7237
|
"responsiveBehavior": [
|
|
7228
7238
|
"Use width fill for form fields and width hug for compact filter bars. Override those defaults only when the owning layout has a clear constraint.",
|
|
7239
|
+
"When collapseLabel is set inside a named ds-table container narrower than 900px, the trigger omits its label and chevron and becomes icon-only. A selected value promotes the prefix icon to primary.",
|
|
7229
7240
|
"The popup matches the trigger minimum width, may grow for content, and clamps to the viewport.",
|
|
7230
7241
|
"Keep popupAlign at start for ordinary fields and filters. Use end when a control sits against a right layout edge and the popup should grow inward.",
|
|
7231
7242
|
"Long option collections scroll inside the popup; virtualization and remote search are not part of this component."
|
|
@@ -7285,6 +7296,10 @@
|
|
|
7285
7296
|
"type": "string",
|
|
7286
7297
|
"required": false
|
|
7287
7298
|
},
|
|
7299
|
+
"collapseLabel": {
|
|
7300
|
+
"type": "boolean",
|
|
7301
|
+
"required": false
|
|
7302
|
+
},
|
|
7288
7303
|
"disabled": {
|
|
7289
7304
|
"type": "boolean",
|
|
7290
7305
|
"required": false
|
|
@@ -7497,7 +7512,7 @@
|
|
|
7497
7512
|
"accessibility": [
|
|
7498
7513
|
"Supply primary destinations through navigation and secondary route sections through pageChrome so managed ShellApp preserves their correct semantics.",
|
|
7499
7514
|
"Ensure the default content region contains the page's single main landmark.",
|
|
7500
|
-
"Keep the shell-owned routed-content scroller keyboard-focusable while its page landmark retains content semantics.",
|
|
7515
|
+
"Keep the shell-owned routed-content scroller keyboard-focusable while its page landmark retains content semantics. Do not paint a control focus ring around that scroller; it is a layout region, and a page-column outline looks like a selected card.",
|
|
7501
7516
|
"Keep the managed desktop/tablet and mobile presentations available without conditionally recreating routed or tool content.",
|
|
7502
7517
|
"Do not override browser keyboard chords when enabling shell shortcuts.",
|
|
7503
7518
|
"Require Search and Help as the minimum PanelTools actions and provide accessible labels for every tool.",
|
|
@@ -8838,6 +8853,7 @@
|
|
|
8838
8853
|
"component:ds-pagination",
|
|
8839
8854
|
"component:ds-table-toolbar",
|
|
8840
8855
|
"component:ds-table-saved-views",
|
|
8856
|
+
"component:ds-table-sort",
|
|
8841
8857
|
"component:ds-bar-action",
|
|
8842
8858
|
"component:ds-button-unfilled",
|
|
8843
8859
|
"component:ds-menu",
|
|
@@ -8849,18 +8865,18 @@
|
|
|
8849
8865
|
"pattern:menu-trigger"
|
|
8850
8866
|
],
|
|
8851
8867
|
"accessibility": [
|
|
8852
|
-
"The rendered structure uses a native table, caption, column headers, row groups, and data cells; keep the caption non-empty. The native caption remains visually hidden as the table's accessible name. When caption visibility is enabled, a 48px header bar renders as component chrome outside the horizontal scrollport. It defaults to a presentational caption title that does not duplicate the accessible name. Application-owned labeled controls supplied through the single named header slot replace that fallback and occupy the leading content width inside the component-owned 8px inset. When columnCustomizer is enabled, the table adds a trailing
|
|
8853
|
-
"The data-mode switcher is the shared Menu of the table's supported infinite, pagination, and virtual modes. The switcher is the final caption-bar action; when the column customizer is also present, a decorative vertical divider separates the two controls. dataMode remains controlled, and the application responds to change intent by supplying the matching records, pagination state, loading behavior, and query consequences. Escape, dismissal, and selection return focus to the trigger.",
|
|
8868
|
+
"The rendered structure uses a native table, caption, column headers, row groups, and data cells; keep the caption non-empty. The native caption remains visually hidden as the table's accessible name. When caption visibility is enabled, a 48px header bar renders as component chrome outside the horizontal scrollport. It defaults to a presentational caption title that does not duplicate the accessible name. Application-owned labeled controls supplied through the single named header slot replace that fallback and occupy the leading content width inside the component-owned 8px inset. When columnCustomizer is enabled, the table adds a trailing Customize control named Customize table; the label becomes Customized table when hidden or reordered columns differ from the catalog default. The control is icon-label at typical widths and the icon-only Table menu button below 900px. Otherwise the header slot receives the complete content width.",
|
|
8869
|
+
"The data-mode switcher is the shared Menu of the table's supported infinite, pagination, and virtual modes. It uses an Ellipses trigger. The switcher is the final caption-bar action; when the column customizer is also present, a decorative vertical divider separates the two controls. dataMode remains controlled, and the application responds to change intent by supplying the matching records, pagination state, loading behavior, and query consequences. Escape, dismissal, and selection return focus to the trigger.",
|
|
8854
8870
|
"The column customizer is the shared Menu of switch rows, not a table-owned dialog. Data columns can be shown, hidden, and reordered. Action columns and the selection checkbox never appear in the menu. The last remaining visible data column cannot be hidden, but it stays focusable so it can still be reordered. Escape and outside click restore focus to the trigger. Persistence stays in the application.",
|
|
8855
|
-
"Sorting controls remain buttons inside column headers and expose the table's one controlled member-row sort through aria-sort. Grouping never adds a second sort indicator or header control; the application supplies groups in its fixed product order. Optional column help underlines the header label with the shared dotted decoration and shows ds-tooltip from that label; it does not add a second header control or replace the column name.",
|
|
8871
|
+
"Sorting controls remain buttons inside column headers and expose the table's one controlled member-row sort through aria-sort. ds-table-sort in the toolbar trailing cluster is the matching menu of Data and Direction sections; it emits the same dsSortChange shape so header clicks and menu choices stay in sync. Grouping never adds a second sort indicator or header control; the application supplies groups in its fixed product order. Optional column help underlines the header label with the shared dotted decoration and shows ds-tooltip from that label; it does not add a second header control or replace the column name.",
|
|
8856
8872
|
"Selection controls expose checkbox semantics and explicit row names; select-all affects selectable loaded rows only and preserves selected identities outside the loaded window. In virtual mode the supplied in-memory rows are that loaded set, including rows whose DOM is recycled. When grouping is active with multi-selection, each group section header also exposes a checkbox that selects or clears that group's selectable loaded rows.",
|
|
8857
8873
|
"Interactive rows are focusable as native rows, activate with Enter or Space, and do not steal activation from their nested selection, action, overflow-menu, or primary-text link controls.",
|
|
8858
8874
|
"Scrollable table regions become keyboard focusable and named only when overflow exists.",
|
|
8859
8875
|
"Incremental loading, newly appended row counts, failures, and end-of-results transitions are announced through a polite status region without replacing visible state. In grouped tables, announcements name the independently loading group.",
|
|
8860
|
-
"Static and infinite tables may show an optional result summary footer when displayedCount and totalCount are finite. Virtual mode shows a total-only summary and ignores displayedCount. Pagination mode instead renders a named Pagination control with a compact selected-size total, vertical divider, and page position; range changes are announced independently with complete phrasing.
|
|
8876
|
+
"Static and infinite tables may show an optional result summary footer when displayedCount and totalCount are finite. Virtual mode shows a total-only summary and ignores displayedCount. Pagination mode instead renders a named Pagination control with a compact selected-size total, vertical divider, and page position; range changes are announced independently with complete phrasing. Unmodified Left and Right Arrow request the adjacent page while focus is inside a paginated table or on a containing page scroller that owns it; editable fields, choice controls, sliders, open menus, and modified key combinations retain their own keyboard behavior. A table-owned footer slot can replace summary copy, while footer-leading and footer-trailing remain available in the same compact-bar anatomy. Nested dialog footers are ignored."
|
|
8861
8877
|
],
|
|
8862
8878
|
"states": [
|
|
8863
|
-
"Columns, rows, groups, grouping, sorting, selected row IDs, collapsed group IDs, hiddenColumnIds, columnOrder, dataMode, pagination, displayedCount, totalCount, and incremental-loading state are controlled inputs. Events communicate intent and never mutate those inputs. The optional header is one composable table-local surface: the component owns its 48px chrome, 8px inset on every side, and sticky placement while the application owns the leading slot's internal layout, controls, labels, filtering behavior, and action handling. Opting into dataModeSwitcher and columnCustomizer adds their trailing Menu triggers and requires caption visibility. When both are present, Customize
|
|
8879
|
+
"Columns, rows, groups, grouping, sorting, selected row IDs, collapsed group IDs, hiddenColumnIds, columnOrder, dataMode, pagination, displayedCount, totalCount, and incremental-loading state are controlled inputs. Events communicate intent and never mutate those inputs. The optional header is one composable table-local surface: the component owns its 48px chrome, 8px inset on every side, and sticky placement while the application owns the leading slot's internal layout, controls, labels, filtering behavior, and action handling. Opting into dataModeSwitcher and columnCustomizer adds their trailing Menu triggers and requires caption visibility. When both are present, Customize precedes a decorative divider and the data-mode trigger remains the final action. The Customize label becomes Customized when hidden or reordered columns differ from the catalog default. That state is foreground-only: the label goes primary on the icon-label shape, and the Table icon goes primary on the compact icon shape. The table closes one trailing Menu before opening the other. The footer retains its compact-bar composition: application-owned leading status sits left while a controlled result summary or Pagination aligns right, before any trailing action. Content-sized tables remain natural for sparse or fixed-count results. height bounds the complete header, frame, and footer composition. fitViewport reserves the compact-state composition height in the nearest vertical scrollport while growing the visible table into that reservation as surrounding page chrome collapses.",
|
|
8864
8880
|
"Grouping supports one level. The application supplies groups in a fixed product-defined order and supplies ordered member rows independently. Group section headers show an emphasized text-body-medium label followed by a middle dot and plain secondary loaded progress, for example Critical · 50 of 166. The loaded value comes from the supplied member rows and the total comes from totalCount. A localized countLabel total phrase remains available for the complete assistive progress announcement. Virtual mode shows totals only, for example Critical · 166, because there is no loaded window. Groups may declare an optional intent (brand, neutral, negative, warning, caution, positive) that paints an LTR gradient from the faint intent surface at the label edge into faint neutral at the trailing edge, plus a bold intent title color. Neutral groups remain solid faint neutral. Section separators are painted inside that viewport-width surface so translucent border tokens composite with each intent background. Internal sections keep their separators; a collapsed or empty section header yields its separator only when it is the table's final rendered item. A trailing visually neutral icon-only ButtonUnfilled uses the 24px md double-inset action recipe and toggles controlled collapsedGroupIds, showing ChevronUp while expanded and ChevronDown while collapsed. While any group is expanded, a ChevronDownUp action uses the xs sort-control recipe widened to a table-owned 24px lane and collapses every group. It appears at the inline-end edge of the trailing column declared with kind action when one exists; otherwise a button-hugging 24px by 16px medium-elevation surface floats at the visible scrollport's header edge so the action remains reachable while member columns scroll beneath it. With stickyHeader enabled, each contained section uses its one real section row as a native sticky header inside its real row-group boundary. The browser therefore owns pinning, push-off, scrolling, and resize layout in one pass without a duplicated lane, active-section state, transforms, or scroll-time geometry. Shared grid tracks retain exact header and member-cell alignment. The section surface also stays pinned to the visible horizontal scrollport and spans the smaller of the visible viewport or table width. Virtual grouped tables flatten headers and members into that same scrollport; expanding a section never introduces an inner scroller.",
|
|
8865
8881
|
"When columnCustomizer is false, columns render in catalog order. When it is true, columns remains the catalog: hiddenColumnIds and columnOrder control visibility and data-column sequence, action columns stay last, cannot be hidden, and remain absent from the customizer Menu, and dsColumnsConfigChange reports the next hidden ids and data-column order without mutating those inputs. The customizer Menu live-applies show/hide and data-column reorder. The table does not persist preferences.",
|
|
8866
8882
|
"An active member sort toggles only between ascending and descending; activating a different sortable label moves the one sorting state to that key. Applications may still clear the controlled sort state explicitly. Grouping does not introduce another interactive direction.",
|
|
@@ -8875,6 +8891,7 @@
|
|
|
8875
8891
|
],
|
|
8876
8892
|
"responsiveBehavior": [
|
|
8877
8893
|
"The table keeps native semantics at narrow widths and scrolls horizontally instead of transforming into cards.",
|
|
8894
|
+
"Inside the named ds-table container, caption Filter, Group, and Sort controls that opt into collapseLabel become icon-only below 900px by omitting their labels and chevrons. Active filtering or grouping promotes the visible icon to primary. Sort keeps resting secondary chrome because its selection lives in the menu and headers. Customize switches to the icon-only Table menu button below 900px; a customized catalog then promotes that icon to primary.",
|
|
8878
8895
|
"stickyHeader follows the active vertical scroll owner: a maxHeight, height, or fitViewport table keeps its native header and group sections inside one bounded table scrollport, while a document-flow table retains a semantic native header and renders a sticky control header whose columns follow the body's native inline scroll timeline. Consumers set --ds-table-sticky-header-offset when page chrome occupies an unbounded document scrollport edge. When the 48px table header bar is visible, it sticks at that external offset and the column header stacks immediately below it.",
|
|
8879
8896
|
"fitViewport uses viewportInsetBlockStart and viewportInsetBlockEnd to describe compact surrounding chrome and page gutters relative to the nearest vertical scroll owner. Before the table reaches that compact position, its host reserves the eventual height while the visible composition grows and vertical input remains owned by the outer page. Once settled, the internal table viewport becomes the vertical scroll owner. Bounded grouped tables use browser-native sticky section rows inside real block row-group boundaries, so scroll and resize do not run component JavaScript or trigger reactive section swaps. Document-flow tables retain the synchronized visual lane required by their separate horizontal scrollport.",
|
|
8880
8897
|
"Without maxHeight the table grows the document and automatic lazy loading observes the browser viewport. Horizontal scrolling chains vertical wheel and trackpad movement to the page instead of trapping it.",
|
|
@@ -8888,7 +8905,7 @@
|
|
|
8888
8905
|
"Assign columns, rows, groups, grouping, sort, selectedRowIds, collapsedGroupIds, hiddenColumnIds, columnOrder, pagination, displayedCount, and totalCount through JavaScript properties rather than HTML attribute strings.",
|
|
8889
8906
|
"dataMode=virtual recycles row DOM over the supplied in-memory rows or groups and requires height, maxHeight, or fitViewport. It does not fetch or paginate.",
|
|
8890
8907
|
"When an action cell supplies items, the table opens one shared ds-menu from the Ellipses trigger; dsCellAction fires for the selected command, not for opening or closing the menu.",
|
|
8891
|
-
"When columnCustomizer is enabled, the
|
|
8908
|
+
"When columnCustomizer is enabled, the Table trigger opens the same shared ds-menu of reorderable switch rows; toggling a switch or reordering a row emits dsColumnsConfigChange and does not close the menu.",
|
|
8892
8909
|
"Overflowing text tracks present one shared ds-tooltip with the omitted value. Unlimited wrapping tracks and disabled rows never show it. The tooltip is not linked with aria-describedby because the full string remains in the cell.",
|
|
8893
8910
|
"Replace controlled property values in response to dsSortChange, dsGroupCollapseChange, dsSelectionChange, dsLoadMore, dsGroupLoadMore, dsPaginationChange, and dsColumnsConfigChange; route dsRowActivate in the application owner. When columnCustomizer is enabled, keep columns as the full catalog and replace hiddenColumnIds and columnOrder from that event."
|
|
8894
8911
|
],
|
|
@@ -9261,8 +9278,8 @@
|
|
|
9261
9278
|
"The default view is a non-editable template. Application-owned custom views appear in a separate section with Rename and Remove actions. New view opens the naming dialog. When an editable selected view is dirty, that view row shows Save and negative Discard supporting actions while the footer remains dedicated to New view. The application decides which table state to capture, restore, and persist."
|
|
9262
9279
|
],
|
|
9263
9280
|
"responsiveBehavior": [
|
|
9264
|
-
"The control remains a single toolbar item and relies on Select, Menu, and Modal collision and viewport behavior. Its choice popup keeps
|
|
9265
|
-
"Place it in the
|
|
9281
|
+
"The control remains a single toolbar item and relies on Select, Menu, and Modal collision and viewport behavior. Its trigger is capped at the compact menu-width token so long view names truncate while the dirty dot stays visible. Its choice popup keeps that same token as the minimum width.",
|
|
9282
|
+
"Place it in the start region of ds-table-toolbar so the middle region can keep left-side and right-side controls on one spanning cluster."
|
|
9266
9283
|
],
|
|
9267
9284
|
"frameworkCaveats": {
|
|
9268
9285
|
"customElements": [
|
|
@@ -9369,19 +9386,132 @@
|
|
|
9369
9386
|
"select"
|
|
9370
9387
|
]
|
|
9371
9388
|
},
|
|
9389
|
+
{
|
|
9390
|
+
"id": "component:ds-table-sort",
|
|
9391
|
+
"tag": "ds-table-sort",
|
|
9392
|
+
"name": "table-sort",
|
|
9393
|
+
"title": "TableSort",
|
|
9394
|
+
"summary": "Toolbar companion for the table's one controlled member-row sort, with a two-section menu for the sort field and direction that mirrors header sorting.",
|
|
9395
|
+
"intentStatus": "complete",
|
|
9396
|
+
"intent": {
|
|
9397
|
+
"audience": "general",
|
|
9398
|
+
"status": "stable",
|
|
9399
|
+
"summary": "Toolbar companion for the table's one controlled member-row sort, with a two-section menu for the sort field and direction that mirrors header sorting.",
|
|
9400
|
+
"useWhen": [
|
|
9401
|
+
"A table toolbar needs an explicit Sort control alongside Filter and Group.",
|
|
9402
|
+
"Sortable columns or compound header segments should be choosable without relying only on column-header clicks."
|
|
9403
|
+
],
|
|
9404
|
+
"avoidWhen": [
|
|
9405
|
+
"The table has no sortable columns; the control hides itself.",
|
|
9406
|
+
"The application expects the control to sort rows internally or persist preferences.",
|
|
9407
|
+
"The popup should submit a form value; use Select."
|
|
9408
|
+
],
|
|
9409
|
+
"alternatives": [
|
|
9410
|
+
{
|
|
9411
|
+
"when": "The choice is one submitted form value.",
|
|
9412
|
+
"component": "component:ds-select",
|
|
9413
|
+
"reason": "Select owns form-value and listbox semantics, not table sort state."
|
|
9414
|
+
}
|
|
9415
|
+
],
|
|
9416
|
+
"commonlyComposedWith": [
|
|
9417
|
+
"component:ds-table",
|
|
9418
|
+
"component:ds-table-toolbar",
|
|
9419
|
+
"component:ds-filter-menu",
|
|
9420
|
+
"component:ds-select",
|
|
9421
|
+
"component:ds-button-unfilled",
|
|
9422
|
+
"component:ds-menu"
|
|
9423
|
+
],
|
|
9424
|
+
"patterns": [
|
|
9425
|
+
"pattern:menu-trigger"
|
|
9426
|
+
],
|
|
9427
|
+
"accessibility": [
|
|
9428
|
+
"The trigger is an icon-label menu button named Sort table unless a product aria-label is supplied. Compact caption widths keep that accessible name after the visible label is omitted.",
|
|
9429
|
+
"The menu has two sections, Data and Direction. Each section presents one selected row through isSelected; the menu is not a single radio group because field and direction are independent.",
|
|
9430
|
+
"Choosing a row applies immediately and keeps the menu open so the other section can be changed. Escape and outside activation close the menu and restore trigger focus."
|
|
9431
|
+
],
|
|
9432
|
+
"states": [
|
|
9433
|
+
"columns and sort are controlled. dsSortChange reports the next TableSortState and never mutates those inputs. The same sort object is what column headers emit through the table.",
|
|
9434
|
+
"Selecting a different data field keeps the current direction, or starts ascending when no sort exists. Selecting a direction applies it to the current field, or to the first sortable field when no sort exists. Selecting the already-active field or direction is a no-op and does not toggle the way a header click does.",
|
|
9435
|
+
"The trigger stays Sort in resting secondary chrome. Field and direction selection live in the menu and on column headers, so the trigger never uses active primary emphasis.",
|
|
9436
|
+
"Compound sortable headers contribute one Data row per segment. Action columns never appear."
|
|
9437
|
+
],
|
|
9438
|
+
"responsiveBehavior": [
|
|
9439
|
+
"Place the control in the trailing region of ds-table-toolbar with Filter and Group.",
|
|
9440
|
+
"Inside a named ds-table container narrower than 900px, the trigger omits its label and chevron and becomes icon-only. The icon keeps the resting secondary foreground."
|
|
9441
|
+
],
|
|
9442
|
+
"frameworkCaveats": {
|
|
9443
|
+
"customElements": [
|
|
9444
|
+
"Assign columns and sort as JavaScript properties. Replace sort from both dsSortChange on this control and dsSortChange on the table."
|
|
9445
|
+
],
|
|
9446
|
+
"react": [
|
|
9447
|
+
"Keep one sort state and pass it to both ds-table and ds-table-sort; update it from either event."
|
|
9448
|
+
],
|
|
9449
|
+
"angular": [
|
|
9450
|
+
"Import the generated DsTableSort adapter, bind columns and sort, and handle dsSortChange with the same owner that handles table header sorting."
|
|
9451
|
+
]
|
|
9452
|
+
},
|
|
9453
|
+
"references": [
|
|
9454
|
+
{
|
|
9455
|
+
"label": "Storybook review states",
|
|
9456
|
+
"path": "src/wc/components/TableSort/TableSort.stories.ts"
|
|
9457
|
+
},
|
|
9458
|
+
{
|
|
9459
|
+
"label": "Toolbar composition owner",
|
|
9460
|
+
"path": "src/wc/components/TableToolbar/TableToolbar.agent.json"
|
|
9461
|
+
}
|
|
9462
|
+
]
|
|
9463
|
+
},
|
|
9464
|
+
"api": {
|
|
9465
|
+
"props": {
|
|
9466
|
+
"ariaLabel": {
|
|
9467
|
+
"type": "string | null",
|
|
9468
|
+
"required": false
|
|
9469
|
+
},
|
|
9470
|
+
"columns": {
|
|
9471
|
+
"type": "TableColumn[]",
|
|
9472
|
+
"required": false
|
|
9473
|
+
},
|
|
9474
|
+
"sort": {
|
|
9475
|
+
"type": "TableSortState | null",
|
|
9476
|
+
"required": false
|
|
9477
|
+
}
|
|
9478
|
+
},
|
|
9479
|
+
"events": [
|
|
9480
|
+
{
|
|
9481
|
+
"name": "dsSortChange",
|
|
9482
|
+
"detail": "TableSortChangeDetail"
|
|
9483
|
+
}
|
|
9484
|
+
],
|
|
9485
|
+
"slots": []
|
|
9486
|
+
},
|
|
9487
|
+
"exports": {
|
|
9488
|
+
"customElement": "ds-table-sort",
|
|
9489
|
+
"react": "DsTableSort",
|
|
9490
|
+
"vue": "DsTableSort",
|
|
9491
|
+
"angular": "DsTableSort"
|
|
9492
|
+
},
|
|
9493
|
+
"dependencies": [
|
|
9494
|
+
"@ds-mo/ui",
|
|
9495
|
+
"@ds-mo/tokens"
|
|
9496
|
+
],
|
|
9497
|
+
"componentDependencies": [
|
|
9498
|
+
"button-unfilled",
|
|
9499
|
+
"menu"
|
|
9500
|
+
]
|
|
9501
|
+
},
|
|
9372
9502
|
{
|
|
9373
9503
|
"id": "component:ds-table-toolbar",
|
|
9374
9504
|
"tag": "ds-table-toolbar",
|
|
9375
9505
|
"name": "table-toolbar",
|
|
9376
9506
|
"title": "TableToolbar",
|
|
9377
|
-
"summary": "Data-agnostic companion layout for application-owned controls
|
|
9507
|
+
"summary": "Data-agnostic companion layout for application-owned table caption controls, with a start cluster, optional search, trailing Filter/Group/Sort, and narrow-width horizontal overflow.",
|
|
9378
9508
|
"intentStatus": "complete",
|
|
9379
9509
|
"intent": {
|
|
9380
9510
|
"audience": "general",
|
|
9381
9511
|
"status": "stable",
|
|
9382
|
-
"summary": "Data-agnostic companion layout for application-owned controls
|
|
9512
|
+
"summary": "Data-agnostic companion layout for application-owned table caption controls, with a start cluster, optional search, trailing Filter/Group/Sort, and narrow-width horizontal overflow.",
|
|
9383
9513
|
"useWhen": [
|
|
9384
|
-
"Several table pages repeat the same
|
|
9514
|
+
"Several table pages repeat the same saved-view cluster, middle discovery and result-shaping controls, and table-owned caption actions.",
|
|
9385
9515
|
"A ds-table header slot needs consistent control spacing, alignment, grouping, and narrow-width overflow without moving product behavior into the table."
|
|
9386
9516
|
],
|
|
9387
9517
|
"avoidWhen": [
|
|
@@ -9392,34 +9522,39 @@
|
|
|
9392
9522
|
"commonlyComposedWith": [
|
|
9393
9523
|
"component:ds-table",
|
|
9394
9524
|
"component:ds-table-saved-views",
|
|
9525
|
+
"component:ds-divider",
|
|
9395
9526
|
"component:ds-input",
|
|
9396
9527
|
"component:ds-filter-menu",
|
|
9528
|
+
"component:ds-select",
|
|
9529
|
+
"component:ds-table-sort",
|
|
9397
9530
|
"component:ds-button-unfilled"
|
|
9398
9531
|
],
|
|
9399
9532
|
"patterns": [],
|
|
9400
9533
|
"accessibility": [
|
|
9401
9534
|
"The component exposes a named toolbar while each slotted control retains its own accessible name and native keyboard behavior.",
|
|
9402
|
-
"Use the
|
|
9535
|
+
"Use the start slot for saved views. Use search for the optional discovery field, leading for any additional left-side middle controls, and trailing for Filter, Group, and Sort. Table-owned column customizer and data-mode actions remain in the table caption trailing cluster.",
|
|
9403
9536
|
"Tab order follows authored DOM order. The toolbar does not add roving focus because it may contain heterogeneous form and popup controls."
|
|
9404
9537
|
],
|
|
9405
9538
|
"states": [
|
|
9406
9539
|
"The component owns layout only. Slotted controls, values, menus, loading, persistence, and consequences remain controlled by the application. Use ds-table-saved-views when saved-view interaction needs the shared CompoMo behavior while application storage remains external.",
|
|
9407
|
-
"
|
|
9540
|
+
"The start cluster is followed by a decorative vertical divider, then the spanning middle region. The start cluster and divider hide when nothing is projected. Search is a dedicated slot that hides when nothing is projected. Empty leading or trailing clusters add no placeholder chrome. The middle region occupies remaining width so trailing controls stay at its inline end.",
|
|
9541
|
+
"Column customizer and data-mode switching stay table-owned caption actions. Do not recreate those menus in the toolbar."
|
|
9408
9542
|
],
|
|
9409
9543
|
"responsiveBehavior": [
|
|
9410
|
-
"The
|
|
9544
|
+
"The start cluster, search, trailing Filter/Group/Sort, and table caption trailing actions stay on one line. Saved views, Filter, Group, and Sort triggers cap at the compact menu-width token and truncate their labels, keeping a saved-view dirty dot visible. Group and Sort popups keep that same compact menu-width floor. The toolbar horizontally scrolls when its complete controls no longer fit.",
|
|
9545
|
+
"Inside a named ds-table container narrower than 900px, Filter, Group, and Sort omit their labels and chevrons and become icon-only. Active filtering or grouping promotes the prefix icon to primary. Sort keeps resting secondary chrome. Table-owned Customize also becomes the icon-only Table menu button at that width.",
|
|
9411
9546
|
"The scrollbar is visually suppressed without removing touch, trackpad, mouse-wheel, or keyboard scrolling from the overflow container.",
|
|
9412
9547
|
"Trailing controls remain grouped after leading controls; the toolbar does not collapse controls into an application-specific overflow menu."
|
|
9413
9548
|
],
|
|
9414
9549
|
"frameworkCaveats": {
|
|
9415
9550
|
"customElements": [
|
|
9416
|
-
"Project controls through slot=leading
|
|
9551
|
+
"Project saved views through slot=start, search through slot=search, additional left-side middle controls through slot=leading, and Filter, Group, and Sort through slot=trailing. Provide a label that names their table context when Table controls is insufficient."
|
|
9417
9552
|
],
|
|
9418
9553
|
"react": [
|
|
9419
|
-
"Set slot=leading or slot=trailing on each child control; keep values and event handlers in the application."
|
|
9554
|
+
"Set slot=start, slot=search, slot=leading, or slot=trailing on each child control; keep values and event handlers in the application."
|
|
9420
9555
|
],
|
|
9421
9556
|
"angular": [
|
|
9422
|
-
"Set slot=leading or slot=trailing on each child control and import the generated DsTableToolbar adapter alongside those controls."
|
|
9557
|
+
"Set slot=start, slot=search, slot=leading, or slot=trailing on each child control and import the generated DsTableToolbar adapter alongside those controls."
|
|
9423
9558
|
]
|
|
9424
9559
|
},
|
|
9425
9560
|
"references": [
|
|
@@ -9453,7 +9588,9 @@
|
|
|
9453
9588
|
"@ds-mo/ui",
|
|
9454
9589
|
"@ds-mo/tokens"
|
|
9455
9590
|
],
|
|
9456
|
-
"componentDependencies": [
|
|
9591
|
+
"componentDependencies": [
|
|
9592
|
+
"divider"
|
|
9593
|
+
]
|
|
9457
9594
|
},
|
|
9458
9595
|
{
|
|
9459
9596
|
"id": "component:ds-tag",
|
|
@@ -9,7 +9,7 @@ export declare class DsButtonUnfilled {
|
|
|
9
9
|
dsChange: EventEmitter<DsButtonUnfilledCustomEvent<boolean>>;
|
|
10
10
|
constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<DsButtonUnfilled, never>;
|
|
12
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DsButtonUnfilled, "ds-button-unfilled", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "background": { "alias": "background"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "dot": { "alias": "dot"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "focusTabIndex": { "alias": "focusTabIndex"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "hasMenu": { "alias": "hasMenu"; "required": false; }; "haspopup": { "alias": "haspopup"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "insetDepth": { "alias": "insetDepth"; "required": false; }; "isActive": { "alias": "isActive"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isInset": { "alias": "isInset"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "pressScale": { "alias": "pressScale"; "required": false; }; "pressed": { "alias": "pressed"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsClick": "dsClick"; "dsChange": "dsChange"; }, never, ["*"], true, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DsButtonUnfilled, "ds-button-unfilled", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "background": { "alias": "background"; "required": false; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "dot": { "alias": "dot"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "focusTabIndex": { "alias": "focusTabIndex"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "hasMenu": { "alias": "hasMenu"; "required": false; }; "haspopup": { "alias": "haspopup"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "insetDepth": { "alias": "insetDepth"; "required": false; }; "isActive": { "alias": "isActive"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isInset": { "alias": "isInset"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "pressScale": { "alias": "pressScale"; "required": false; }; "pressed": { "alias": "pressed"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsClick": "dsClick"; "dsChange": "dsChange"; }, never, ["*"], true, never>;
|
|
13
13
|
}
|
|
14
14
|
export declare interface DsButtonUnfilled extends Components.DsButtonUnfilled {
|
|
15
15
|
dsClick: EventEmitter<DsButtonUnfilledCustomEvent<MouseEvent>>;
|
|
@@ -19,12 +19,12 @@ let DsButtonUnfilled = class DsButtonUnfilled {
|
|
|
19
19
|
this.el = r.nativeElement;
|
|
20
20
|
}
|
|
21
21
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsButtonUnfilled, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsButtonUnfilled, isStandalone: true, selector: "ds-button-unfilled", inputs: { activeFill: "activeFill", ariaLabel: "ariaLabel", background: "background", controls: "controls", dot: "dot", expanded: "expanded", focusTabIndex: "focusTabIndex", hasBorder: "hasBorder", hasMenu: "hasMenu", haspopup: "haspopup", icon: "icon", insetDepth: "insetDepth", isActive: "isActive", isInactive: "isInactive", isInset: "isInset", isLoading: "isLoading", label: "label", pressScale: "pressScale", pressed: "pressed", rounded: "rounded", size: "size", type: "type", variant: "variant", width: "width" }, outputs: { dsClick: "dsClick", dsChange: "dsChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsButtonUnfilled, isStandalone: true, selector: "ds-button-unfilled", inputs: { activeFill: "activeFill", ariaLabel: "ariaLabel", background: "background", collapseLabel: "collapseLabel", controls: "controls", dot: "dot", expanded: "expanded", focusTabIndex: "focusTabIndex", hasBorder: "hasBorder", hasMenu: "hasMenu", haspopup: "haspopup", icon: "icon", insetDepth: "insetDepth", isActive: "isActive", isInactive: "isInactive", isInset: "isInset", isLoading: "isLoading", label: "label", pressScale: "pressScale", pressed: "pressed", rounded: "rounded", size: "size", type: "type", variant: "variant", width: "width" }, outputs: { dsClick: "dsClick", dsChange: "dsChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23
23
|
};
|
|
24
24
|
DsButtonUnfilled = __decorate([
|
|
25
25
|
ProxyCmp({
|
|
26
26
|
defineCustomElementFn: defineDsButtonUnfilled,
|
|
27
|
-
inputs: ['activeFill', 'ariaLabel', 'background', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'pressScale', 'pressed', 'rounded', 'size', 'type', 'variant', 'width'],
|
|
27
|
+
inputs: ['activeFill', 'ariaLabel', 'background', 'collapseLabel', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'pressScale', 'pressed', 'rounded', 'size', 'type', 'variant', 'width'],
|
|
28
28
|
methods: ['setFocus']
|
|
29
29
|
})
|
|
30
30
|
], DsButtonUnfilled);
|
|
@@ -36,7 +36,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
36
36
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
37
37
|
template: '<ng-content></ng-content>',
|
|
38
38
|
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
39
|
-
inputs: ['activeFill', 'ariaLabel', 'background', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'pressScale', 'pressed', 'rounded', 'size', 'type', 'variant', 'width'],
|
|
39
|
+
inputs: ['activeFill', 'ariaLabel', 'background', 'collapseLabel', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'pressScale', 'pressed', 'rounded', 'size', 'type', 'variant', 'width'],
|
|
40
40
|
outputs: ['dsClick', 'dsChange'],
|
|
41
41
|
}]
|
|
42
42
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsClick: [{
|
|
@@ -14,7 +14,7 @@ export declare class DsFilterMenu {
|
|
|
14
14
|
dsAfterClose: EventEmitter<DsFilterMenuCustomEvent<void>>;
|
|
15
15
|
constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
|
|
16
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<DsFilterMenu, never>;
|
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DsFilterMenu, "ds-filter-menu", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "activeFilterId": { "alias": "activeFilterId"; "required": false; }; "align": { "alias": "align"; "required": false; }; "alignOffset": { "alias": "alignOffset"; "required": false; }; "anchor": { "alias": "anchor"; "required": false; }; "anchorId": { "alias": "anchorId"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "categoriesLabel": { "alias": "categoriesLabel"; "required": false; }; "clearLabel": { "alias": "clearLabel"; "required": false; }; "filters": { "alias": "filters"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "initialFocusVisible": { "alias": "initialFocusVisible"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "menuLabel": { "alias": "menuLabel"; "required": false; }; "menuWidth": { "alias": "menuWidth"; "required": false; }; "open": { "alias": "open"; "required": false; }; "side": { "alias": "side"; "required": false; }; "sideOffset": { "alias": "sideOffset"; "required": false; }; "size": { "alias": "size"; "required": false; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; }; "values": { "alias": "values"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsChange": "dsChange"; "dsClear": "dsClear"; "dsActiveFilterChange": "dsActiveFilterChange"; "dsClose": "dsClose"; "dsOpenChange": "dsOpenChange"; "dsAfterClose": "dsAfterClose"; }, never, ["*"], true, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DsFilterMenu, "ds-filter-menu", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "activeFilterId": { "alias": "activeFilterId"; "required": false; }; "align": { "alias": "align"; "required": false; }; "alignOffset": { "alias": "alignOffset"; "required": false; }; "anchor": { "alias": "anchor"; "required": false; }; "anchorId": { "alias": "anchorId"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "categoriesLabel": { "alias": "categoriesLabel"; "required": false; }; "clearLabel": { "alias": "clearLabel"; "required": false; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; }; "filters": { "alias": "filters"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "initialFocusVisible": { "alias": "initialFocusVisible"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "menuLabel": { "alias": "menuLabel"; "required": false; }; "menuWidth": { "alias": "menuWidth"; "required": false; }; "open": { "alias": "open"; "required": false; }; "side": { "alias": "side"; "required": false; }; "sideOffset": { "alias": "sideOffset"; "required": false; }; "size": { "alias": "size"; "required": false; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; }; "values": { "alias": "values"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsChange": "dsChange"; "dsClear": "dsClear"; "dsActiveFilterChange": "dsActiveFilterChange"; "dsClose": "dsClose"; "dsOpenChange": "dsOpenChange"; "dsAfterClose": "dsAfterClose"; }, never, ["*"], true, never>;
|
|
18
18
|
}
|
|
19
19
|
export declare interface DsFilterMenu extends Components.DsFilterMenu {
|
|
20
20
|
/**
|
|
@@ -23,12 +23,12 @@ let DsFilterMenu = class DsFilterMenu {
|
|
|
23
23
|
this.el = r.nativeElement;
|
|
24
24
|
}
|
|
25
25
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsFilterMenu, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsFilterMenu, isStandalone: true, selector: "ds-filter-menu", inputs: { activeFill: "activeFill", activeFilterId: "activeFilterId", align: "align", alignOffset: "alignOffset", anchor: "anchor", anchorId: "anchorId", ariaLabel: "ariaLabel", categoriesLabel: "categoriesLabel", clearLabel: "clearLabel", filters: "filters", hasBorder: "hasBorder", icon: "icon", initialFocusVisible: "initialFocusVisible", inputId: "inputId", menuLabel: "menuLabel", menuWidth: "menuWidth", open: "open", side: "side", sideOffset: "sideOffset", size: "size", triggerLabel: "triggerLabel", values: "values", width: "width" }, outputs: { dsChange: "dsChange", dsClear: "dsClear", dsActiveFilterChange: "dsActiveFilterChange", dsClose: "dsClose", dsOpenChange: "dsOpenChange", dsAfterClose: "dsAfterClose" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsFilterMenu, isStandalone: true, selector: "ds-filter-menu", inputs: { activeFill: "activeFill", activeFilterId: "activeFilterId", align: "align", alignOffset: "alignOffset", anchor: "anchor", anchorId: "anchorId", ariaLabel: "ariaLabel", categoriesLabel: "categoriesLabel", clearLabel: "clearLabel", collapseLabel: "collapseLabel", filters: "filters", hasBorder: "hasBorder", icon: "icon", initialFocusVisible: "initialFocusVisible", inputId: "inputId", menuLabel: "menuLabel", menuWidth: "menuWidth", open: "open", side: "side", sideOffset: "sideOffset", size: "size", triggerLabel: "triggerLabel", values: "values", width: "width" }, outputs: { dsChange: "dsChange", dsClear: "dsClear", dsActiveFilterChange: "dsActiveFilterChange", dsClose: "dsClose", dsOpenChange: "dsOpenChange", dsAfterClose: "dsAfterClose" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
27
|
};
|
|
28
28
|
DsFilterMenu = __decorate([
|
|
29
29
|
ProxyCmp({
|
|
30
30
|
defineCustomElementFn: defineDsFilterMenu,
|
|
31
|
-
inputs: ['activeFill', 'activeFilterId', 'align', 'alignOffset', 'anchor', 'anchorId', 'ariaLabel', 'categoriesLabel', 'clearLabel', 'filters', 'hasBorder', 'icon', 'initialFocusVisible', 'inputId', 'menuLabel', 'menuWidth', 'open', 'side', 'sideOffset', 'size', 'triggerLabel', 'values', 'width']
|
|
31
|
+
inputs: ['activeFill', 'activeFilterId', 'align', 'alignOffset', 'anchor', 'anchorId', 'ariaLabel', 'categoriesLabel', 'clearLabel', 'collapseLabel', 'filters', 'hasBorder', 'icon', 'initialFocusVisible', 'inputId', 'menuLabel', 'menuWidth', 'open', 'side', 'sideOffset', 'size', 'triggerLabel', 'values', 'width']
|
|
32
32
|
})
|
|
33
33
|
], DsFilterMenu);
|
|
34
34
|
export { DsFilterMenu };
|
|
@@ -39,7 +39,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
39
39
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
40
40
|
template: '<ng-content></ng-content>',
|
|
41
41
|
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
42
|
-
inputs: ['activeFill', 'activeFilterId', 'align', 'alignOffset', 'anchor', 'anchorId', 'ariaLabel', 'categoriesLabel', 'clearLabel', 'filters', 'hasBorder', 'icon', 'initialFocusVisible', 'inputId', 'menuLabel', 'menuWidth', 'open', 'side', 'sideOffset', 'size', 'triggerLabel', 'values', 'width'],
|
|
42
|
+
inputs: ['activeFill', 'activeFilterId', 'align', 'alignOffset', 'anchor', 'anchorId', 'ariaLabel', 'categoriesLabel', 'clearLabel', 'collapseLabel', 'filters', 'hasBorder', 'icon', 'initialFocusVisible', 'inputId', 'menuLabel', 'menuWidth', 'open', 'side', 'sideOffset', 'size', 'triggerLabel', 'values', 'width'],
|
|
43
43
|
outputs: ['dsChange', 'dsClear', 'dsActiveFilterChange', 'dsClose', 'dsOpenChange', 'dsAfterClose'],
|
|
44
44
|
}]
|
|
45
45
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsChange: [{
|
|
@@ -16,7 +16,7 @@ export declare class DsSelect {
|
|
|
16
16
|
dsOptionSubtextAction: EventEmitter<DsSelectCustomEvent<IDsSelectSelectOptionSubtextActionDetail>>;
|
|
17
17
|
constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
|
|
18
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<DsSelect, never>;
|
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DsSelect, "ds-select", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "background": { "alias": "background"; "required": false; }; "clearLabel": { "alias": "clearLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "dot": { "alias": "dot"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "footerActionLabel": { "alias": "footerActionLabel"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "indicator": { "alias": "indicator"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "name": { "alias": "name"; "required": false; }; "noResultsText": { "alias": "noResultsText"; "required": false; }; "open": { "alias": "open"; "required": false; }; "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "popupAlign": { "alias": "popupAlign"; "required": false; }; "required": { "alias": "required"; "required": false; }; "requiredMessage": { "alias": "requiredMessage"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "sections": { "alias": "sections"; "required": false; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; }; "triggerLabelPlaceholder": { "alias": "triggerLabelPlaceholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsChange": "dsChange"; "dsClear": "dsClear"; "dsOpenChange": "dsOpenChange"; "dsFooterAction": "dsFooterAction"; "dsOptionAction": "dsOptionAction"; "dsOptionSubtextAction": "dsOptionSubtextAction"; }, never, ["*"], true, never>;
|
|
19
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DsSelect, "ds-select", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "allowClear": { "alias": "allowClear"; "required": false; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "background": { "alias": "background"; "required": false; }; "clearLabel": { "alias": "clearLabel"; "required": false; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "dot": { "alias": "dot"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "footerActionLabel": { "alias": "footerActionLabel"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "indicator": { "alias": "indicator"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "loadingLabel": { "alias": "loadingLabel"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "name": { "alias": "name"; "required": false; }; "noResultsText": { "alias": "noResultsText"; "required": false; }; "open": { "alias": "open"; "required": false; }; "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "popupAlign": { "alias": "popupAlign"; "required": false; }; "required": { "alias": "required"; "required": false; }; "requiredMessage": { "alias": "requiredMessage"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "sections": { "alias": "sections"; "required": false; }; "selectedLabel": { "alias": "selectedLabel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; }; "triggerLabelPlaceholder": { "alias": "triggerLabelPlaceholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsChange": "dsChange"; "dsClear": "dsClear"; "dsOpenChange": "dsOpenChange"; "dsFooterAction": "dsFooterAction"; "dsOptionAction": "dsOptionAction"; "dsOptionSubtextAction": "dsOptionSubtextAction"; }, never, ["*"], true, never>;
|
|
20
20
|
}
|
|
21
21
|
export declare interface DsSelect extends Components.DsSelect {
|
|
22
22
|
/**
|
|
@@ -23,12 +23,12 @@ let DsSelect = class DsSelect {
|
|
|
23
23
|
this.el = r.nativeElement;
|
|
24
24
|
}
|
|
25
25
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsSelect, isStandalone: true, selector: "ds-select", inputs: { activeFill: "activeFill", allowClear: "allowClear", ariaDescribedby: "ariaDescribedby", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", background: "background", clearLabel: "clearLabel", disabled: "disabled", dot: "dot", error: "error", errorMessage: "errorMessage", footerActionLabel: "footerActionLabel", hasBorder: "hasBorder", icon: "icon", indicator: "indicator", inputId: "inputId", isInactive: "isInactive", isLoading: "isLoading", loadingLabel: "loadingLabel", multiple: "multiple", name: "name", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", popupAlign: "popupAlign", required: "required", requiredMessage: "requiredMessage", searchPlaceholder: "searchPlaceholder", searchable: "searchable", sections: "sections", selectedLabel: "selectedLabel", size: "size", triggerLabel: "triggerLabel", triggerLabelPlaceholder: "triggerLabelPlaceholder", value: "value", width: "width" }, outputs: { dsChange: "dsChange", dsClear: "dsClear", dsOpenChange: "dsOpenChange", dsFooterAction: "dsFooterAction", dsOptionAction: "dsOptionAction", dsOptionSubtextAction: "dsOptionSubtextAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsSelect, isStandalone: true, selector: "ds-select", inputs: { activeFill: "activeFill", allowClear: "allowClear", ariaDescribedby: "ariaDescribedby", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", background: "background", clearLabel: "clearLabel", collapseLabel: "collapseLabel", disabled: "disabled", dot: "dot", error: "error", errorMessage: "errorMessage", footerActionLabel: "footerActionLabel", hasBorder: "hasBorder", icon: "icon", indicator: "indicator", inputId: "inputId", isInactive: "isInactive", isLoading: "isLoading", loadingLabel: "loadingLabel", multiple: "multiple", name: "name", noResultsText: "noResultsText", open: "open", options: "options", placeholder: "placeholder", popupAlign: "popupAlign", required: "required", requiredMessage: "requiredMessage", searchPlaceholder: "searchPlaceholder", searchable: "searchable", sections: "sections", selectedLabel: "selectedLabel", size: "size", triggerLabel: "triggerLabel", triggerLabelPlaceholder: "triggerLabelPlaceholder", value: "value", width: "width" }, outputs: { dsChange: "dsChange", dsClear: "dsClear", dsOpenChange: "dsOpenChange", dsFooterAction: "dsFooterAction", dsOptionAction: "dsOptionAction", dsOptionSubtextAction: "dsOptionSubtextAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
27
|
};
|
|
28
28
|
DsSelect = __decorate([
|
|
29
29
|
ProxyCmp({
|
|
30
30
|
defineCustomElementFn: defineDsSelect,
|
|
31
|
-
inputs: ['activeFill', 'allowClear', 'ariaDescribedby', 'ariaLabel', 'ariaLabelledby', 'background', 'clearLabel', 'disabled', 'dot', 'error', 'errorMessage', 'footerActionLabel', 'hasBorder', 'icon', 'indicator', 'inputId', 'isInactive', 'isLoading', 'loadingLabel', 'multiple', 'name', 'noResultsText', 'open', 'options', 'placeholder', 'popupAlign', 'required', 'requiredMessage', 'searchPlaceholder', 'searchable', 'sections', 'selectedLabel', 'size', 'triggerLabel', 'triggerLabelPlaceholder', 'value', 'width'],
|
|
31
|
+
inputs: ['activeFill', 'allowClear', 'ariaDescribedby', 'ariaLabel', 'ariaLabelledby', 'background', 'clearLabel', 'collapseLabel', 'disabled', 'dot', 'error', 'errorMessage', 'footerActionLabel', 'hasBorder', 'icon', 'indicator', 'inputId', 'isInactive', 'isLoading', 'loadingLabel', 'multiple', 'name', 'noResultsText', 'open', 'options', 'placeholder', 'popupAlign', 'required', 'requiredMessage', 'searchPlaceholder', 'searchable', 'sections', 'selectedLabel', 'size', 'triggerLabel', 'triggerLabelPlaceholder', 'value', 'width'],
|
|
32
32
|
methods: ['setFocus']
|
|
33
33
|
})
|
|
34
34
|
], DsSelect);
|
|
@@ -40,7 +40,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
40
40
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
41
41
|
template: '<ng-content></ng-content>',
|
|
42
42
|
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
43
|
-
inputs: ['activeFill', 'allowClear', 'ariaDescribedby', 'ariaLabel', 'ariaLabelledby', 'background', 'clearLabel', 'disabled', 'dot', 'error', 'errorMessage', 'footerActionLabel', 'hasBorder', 'icon', 'indicator', 'inputId', 'isInactive', 'isLoading', 'loadingLabel', 'multiple', 'name', 'noResultsText', 'open', 'options', 'placeholder', 'popupAlign', 'required', 'requiredMessage', 'searchPlaceholder', 'searchable', 'sections', 'selectedLabel', 'size', 'triggerLabel', 'triggerLabelPlaceholder', 'value', 'width'],
|
|
43
|
+
inputs: ['activeFill', 'allowClear', 'ariaDescribedby', 'ariaLabel', 'ariaLabelledby', 'background', 'clearLabel', 'collapseLabel', 'disabled', 'dot', 'error', 'errorMessage', 'footerActionLabel', 'hasBorder', 'icon', 'indicator', 'inputId', 'isInactive', 'isLoading', 'loadingLabel', 'multiple', 'name', 'noResultsText', 'open', 'options', 'placeholder', 'popupAlign', 'required', 'requiredMessage', 'searchPlaceholder', 'searchable', 'sections', 'selectedLabel', 'size', 'triggerLabel', 'triggerLabelPlaceholder', 'value', 'width'],
|
|
44
44
|
outputs: ['dsChange', 'dsClear', 'dsOpenChange', 'dsFooterAction', 'dsOptionAction', 'dsOptionSubtextAction'],
|
|
45
45
|
}]
|
|
46
46
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsChange: [{
|