@ds-mo/ui 14.31.2 → 14.32.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 +15 -5
- package/dist/agent.json +229 -23
- package/dist/angular/ds-bar-page-title.d.ts +28 -0
- package/dist/angular/ds-bar-page-title.js +48 -0
- package/dist/angular/ds-card-settings-scope.d.ts +1 -1
- package/dist/angular/ds-card-settings-scope.js +3 -3
- 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-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-avatar.js +1 -1
- package/dist/components/ds-avatar.js.map +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-page-title.d.ts +11 -0
- package/dist/components/ds-bar-page-title.js +2 -0
- package/dist/components/ds-bar-page-title.js.map +1 -0
- 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-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-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-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-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-legend.js.map +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-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-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-score.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-table-filter.js +1 -1
- package/dist/components/ds-table-group.js +1 -1
- package/dist/components/ds-table-group.js.map +1 -1
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-search.js.map +1 -1
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table-toolbar.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-textarea.js +1 -1
- package/dist/components/ds-textarea.js.map +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-toast.js.map +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/p--VKxPUoV.js +2 -0
- package/dist/components/p--VKxPUoV.js.map +1 -0
- package/dist/components/p-14sMoeTr.js +2 -0
- package/dist/components/p-14sMoeTr.js.map +1 -0
- package/dist/components/p-9rzbZP-F.js +2 -0
- package/dist/components/p-9rzbZP-F.js.map +1 -0
- package/dist/components/p-B5W_r4vV.js +2 -0
- package/dist/components/p-B5W_r4vV.js.map +1 -0
- package/dist/components/{p-DjF2m7bf.js → p-B8ZonS3S.js} +2 -2
- package/dist/components/{p-BrW77sNB.js → p-B9WwU5vu.js} +2 -2
- package/dist/components/p-BCRPg1Xs.js +2 -0
- package/dist/components/p-BCRPg1Xs.js.map +1 -0
- package/dist/components/{p-KV3_5Cgo.js → p-BFd18avA.js} +2 -2
- package/dist/components/{p-DLDFPn9F.js → p-BGGIEmQj.js} +2 -2
- package/dist/components/p-BG_n-zQT.js +2 -0
- package/dist/components/p-BG_n-zQT.js.map +1 -0
- package/dist/components/p-BINlT3xz.js +2 -0
- package/dist/components/p-BINlT3xz.js.map +1 -0
- package/dist/components/p-BPTqn5zL.js +2 -0
- package/dist/components/p-BPTqn5zL.js.map +1 -0
- package/dist/components/p-BnWxbhFP.js +2 -0
- package/dist/components/p-BnWxbhFP.js.map +1 -0
- package/dist/components/{p-DhibZEq-.js → p-BonnrRtE.js} +2 -2
- package/dist/components/p-BxduVc5g.js +2 -0
- package/dist/components/p-BxduVc5g.js.map +1 -0
- package/dist/components/p-CD9AbaHQ.js +2 -0
- package/dist/components/p-CD9AbaHQ.js.map +1 -0
- package/dist/components/p-CN3roaMg.js +2 -0
- package/dist/components/p-CN3roaMg.js.map +1 -0
- package/dist/components/p-CR7G2BI6.js +2 -0
- package/dist/components/p-CR7G2BI6.js.map +1 -0
- package/dist/components/p-CakRq92x.js +2 -0
- package/dist/components/p-CakRq92x.js.map +1 -0
- package/dist/components/p-CumGY3uN.js +2 -0
- package/dist/components/p-CumGY3uN.js.map +1 -0
- package/dist/components/p-D59xX7JN.js +2 -0
- package/dist/components/p-D59xX7JN.js.map +1 -0
- package/dist/components/p-DFWJmuaR.js +2 -0
- package/dist/components/p-DFWJmuaR.js.map +1 -0
- package/dist/components/p-DGQUm3WL.js +2 -0
- package/dist/components/p-DGQUm3WL.js.map +1 -0
- package/dist/components/{p-DmTnBu5r.js → p-DJHshyyC.js} +2 -2
- package/dist/components/{p-BtUYEMwA.js → p-DPPM5T7q.js} +2 -2
- package/dist/components/p-DVRL3oem.js +2 -0
- package/dist/components/p-DVRL3oem.js.map +1 -0
- package/dist/components/p-DceM6xWR.js +2 -0
- package/dist/components/p-DceM6xWR.js.map +1 -0
- package/dist/components/p-Dhw_W8nk.js +2 -0
- package/dist/components/p-Dhw_W8nk.js.map +1 -0
- package/dist/components/{p-pkGqqLm-.js → p-DwxKwC5i.js} +2 -2
- package/dist/components/{p-DnhDgPJv.js → p-DzHXk0IG.js} +2 -2
- package/dist/components/p-OHT7lQVt.js +2 -0
- package/dist/components/p-OHT7lQVt.js.map +1 -0
- package/dist/components/{p-BQko6Yz3.js → p-P60MGUqZ.js} +2 -2
- package/dist/components/{p-BQko6Yz3.js.map → p-P60MGUqZ.js.map} +1 -1
- package/dist/components/{p-Bu-gu0mN.js → p-UxIgD24y.js} +2 -2
- package/dist/components/{p-BiIDQ5RW.js → p-YFrD62Ml.js} +2 -2
- package/dist/components/p-gR6G5azA.js +2 -0
- package/dist/components/p-gR6G5azA.js.map +1 -0
- package/dist/components/{p-ehZFKett.js → p-oFbI_M5B.js} +2 -2
- package/dist/components/p-r5td84fg.js +2 -0
- package/dist/components/p-r5td84fg.js.map +1 -0
- package/dist/components/p-skVhQk9d.js +2 -0
- package/dist/components/p-skVhQk9d.js.map +1 -0
- package/dist/components/p-z7Zj26BA.js +2 -0
- package/dist/components/p-z7Zj26BA.js.map +1 -0
- package/dist/components/{p-YDUM8xDg.js → p-zunBF381.js} +2 -2
- package/dist/docs/components.json +586 -40
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-action.json +5 -5
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-page-title.json +433 -0
- package/dist/mcp-data/registry/bar-title.json +21 -5
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +1 -1
- package/dist/mcp-data/registry/button-unfilled.json +1 -1
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-navigation.json +1 -1
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/card-settings-scope.json +23 -5
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +1 -1
- package/dist/mcp-data/registry/chip.json +3 -2
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/filter-menu.json +1 -1
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/menu.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/pagination.json +10 -10
- 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 +4 -2
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +231 -22
- package/dist/mcp-data/registry/select.json +5 -4
- package/dist/mcp-data/registry/shell-app.json +9 -7
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table-group.json +1 -1
- package/dist/mcp-data/registry/table-search.json +1 -1
- package/dist/mcp-data/registry/table.json +2 -2
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/textarea.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-bar-page-title.d.ts +14 -0
- package/dist/react/ds-bar-page-title.js +16 -0
- package/dist/styles/prose.css +20 -0
- package/dist/styles/table.css +1 -1
- package/dist/types/components/BarPageTitle/BarPageTitle.d.ts +124 -0
- package/dist/types/components/BarPageTitle/index.d.ts +2 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +1 -7
- package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +76 -0
- package/dist/types/components/BarTitle/bar-title-actions.d.ts +1 -0
- package/dist/types/components/BarTitle/bar-title-sections.d.ts +11 -0
- package/dist/types/components/CardSettingsScope/CardSettingsScope.d.ts +3 -1
- package/dist/types/components/ShellApp/ShellApp.d.ts +1 -0
- package/dist/types/components.d.ts +183 -6
- package/dist/vue/components.d.ts +1 -0
- package/dist/vue/components.js +1 -0
- package/dist/vue/ds-bar-page-title.d.ts +3 -0
- package/dist/vue/ds-bar-page-title.js +26 -0
- package/dist/vue/ds-card-settings-scope.js +1 -0
- package/package.json +1 -1
- package/dist/components/p-BTsFFzfR.js +0 -2
- package/dist/components/p-BTsFFzfR.js.map +0 -1
- package/dist/components/p-BpSPAlOx.js +0 -2
- package/dist/components/p-BpSPAlOx.js.map +0 -1
- package/dist/components/p-Bwszi9p7.js +0 -2
- package/dist/components/p-Bwszi9p7.js.map +0 -1
- package/dist/components/p-C-MaZPyA.js +0 -2
- package/dist/components/p-C-MaZPyA.js.map +0 -1
- package/dist/components/p-CB5-uIY2.js +0 -2
- package/dist/components/p-CB5-uIY2.js.map +0 -1
- package/dist/components/p-CG4Fp3SY.js +0 -2
- package/dist/components/p-CG4Fp3SY.js.map +0 -1
- package/dist/components/p-CHCsDvJK.js +0 -2
- package/dist/components/p-CHCsDvJK.js.map +0 -1
- package/dist/components/p-CImwNex7.js +0 -2
- package/dist/components/p-CImwNex7.js.map +0 -1
- package/dist/components/p-CNZwk176.js +0 -2
- package/dist/components/p-CNZwk176.js.map +0 -1
- package/dist/components/p-CSZlbQ8_.js +0 -2
- package/dist/components/p-CSZlbQ8_.js.map +0 -1
- package/dist/components/p-CVNYRTEH.js +0 -2
- package/dist/components/p-CVNYRTEH.js.map +0 -1
- package/dist/components/p-D3sJXjcg.js +0 -2
- package/dist/components/p-D3sJXjcg.js.map +0 -1
- package/dist/components/p-D7Jc72Lw.js +0 -2
- package/dist/components/p-D7Jc72Lw.js.map +0 -1
- package/dist/components/p-DFOhxUQP.js +0 -2
- package/dist/components/p-DFOhxUQP.js.map +0 -1
- package/dist/components/p-DI7qbahC.js +0 -2
- package/dist/components/p-DI7qbahC.js.map +0 -1
- package/dist/components/p-DP75OhfU.js +0 -2
- package/dist/components/p-DP75OhfU.js.map +0 -1
- package/dist/components/p-DR1jV6Q5.js +0 -2
- package/dist/components/p-DR1jV6Q5.js.map +0 -1
- package/dist/components/p-DuJuqbcg.js +0 -2
- package/dist/components/p-DuJuqbcg.js.map +0 -1
- package/dist/components/p-E3RCUE7a.js +0 -2
- package/dist/components/p-E3RCUE7a.js.map +0 -1
- package/dist/components/p-JuKGR7Ay.js +0 -2
- package/dist/components/p-JuKGR7Ay.js.map +0 -1
- package/dist/components/p-Ui0Ir5li.js +0 -2
- package/dist/components/p-Ui0Ir5li.js.map +0 -1
- package/dist/components/p-eAX_M_QY.js +0 -2
- package/dist/components/p-eAX_M_QY.js.map +0 -1
- package/dist/components/p-eaCtnww1.js +0 -2
- package/dist/components/p-eaCtnww1.js.map +0 -1
- /package/dist/components/{p-DjF2m7bf.js.map → p-B8ZonS3S.js.map} +0 -0
- /package/dist/components/{p-BrW77sNB.js.map → p-B9WwU5vu.js.map} +0 -0
- /package/dist/components/{p-KV3_5Cgo.js.map → p-BFd18avA.js.map} +0 -0
- /package/dist/components/{p-DLDFPn9F.js.map → p-BGGIEmQj.js.map} +0 -0
- /package/dist/components/{p-DhibZEq-.js.map → p-BonnrRtE.js.map} +0 -0
- /package/dist/components/{p-DmTnBu5r.js.map → p-DJHshyyC.js.map} +0 -0
- /package/dist/components/{p-BtUYEMwA.js.map → p-DPPM5T7q.js.map} +0 -0
- /package/dist/components/{p-pkGqqLm-.js.map → p-DwxKwC5i.js.map} +0 -0
- /package/dist/components/{p-DnhDgPJv.js.map → p-DzHXk0IG.js.map} +0 -0
- /package/dist/components/{p-Bu-gu0mN.js.map → p-UxIgD24y.js.map} +0 -0
- /package/dist/components/{p-BiIDQ5RW.js.map → p-YFrD62Ml.js.map} +0 -0
- /package/dist/components/{p-ehZFKett.js.map → p-oFbI_M5B.js.map} +0 -0
- /package/dist/components/{p-YDUM8xDg.js.map → p-zunBF381.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.32.0","components":82,"digest":"58e31ee23b650672de15d639483dde08e58a7ce6b88a5adaef9d0ce0d1317e14","completedAt":"2026-09-08T23:31:48.445Z"}
|
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.32.0",
|
|
5
5
|
"kind": "patterns",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -170,6 +170,11 @@
|
|
|
170
170
|
"role": "Default managed desktop and tablet route-section presentation; omitted when nested PanelNav owns sections.",
|
|
171
171
|
"required": false
|
|
172
172
|
},
|
|
173
|
+
{
|
|
174
|
+
"component": "component:ds-bar-page-title",
|
|
175
|
+
"role": "Managed panel-mode shell-bar page chrome with all-or-nothing page-section tabs.",
|
|
176
|
+
"required": false
|
|
177
|
+
},
|
|
173
178
|
{
|
|
174
179
|
"component": "component:ds-shell-tools",
|
|
175
180
|
"role": "Managed responsive adapter that presents persistent product-owned tool views through PanelTools or the mobile stage.",
|
|
@@ -222,7 +227,7 @@
|
|
|
222
227
|
],
|
|
223
228
|
"responsiveBehavior": [
|
|
224
229
|
"ShellApp automatically resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
|
|
225
|
-
"Desktop and tablet use PanelNav, PanelTools through ShellTools, and ShellPage chrome. sectionNavigation chooses either BarNav or nested PanelNav plus
|
|
230
|
+
"Desktop and tablet use PanelNav, PanelTools through ShellTools, and ShellPage chrome. sectionNavigation chooses either BarNav or nested PanelNav plus BarPageTitle in the shell bar.",
|
|
226
231
|
"Panel section navigation removes page-local desktop title geometry: standard inset pages begin 32px below the shell bar on desktop and 16px below it on tablet, while full-bleed pages remain full bleed.",
|
|
227
232
|
"Mobile uses MobileSheetNav, MobileBarNav, MobileHeader, ShellTools mobile presentation, and the same routed content owner. MobileBarNav paints its primary surface through the bottom safe-area inset so light browser chrome and application chrome meet without a secondary-surface seam.",
|
|
228
233
|
"Below 768px the application root owns a 100dvh fixed stage with a 100vh fallback while ShellApp continues to fill its owner with height 100%; JavaScript viewport measurement synchronizes only the chrome wash and does not own layout height.",
|
|
@@ -653,7 +658,12 @@
|
|
|
653
658
|
},
|
|
654
659
|
{
|
|
655
660
|
"component": "component:ds-bar-title",
|
|
656
|
-
"role": "Managed desktop/tablet page-header presentation; remains public for advanced slotted composition.",
|
|
661
|
+
"role": "Managed desktop/tablet page-header presentation in bar mode; remains public for advanced slotted composition.",
|
|
662
|
+
"required": false
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
"component": "component:ds-bar-page-title",
|
|
666
|
+
"role": "Managed panel-mode shell-bar page chrome, including all-or-nothing page-section tabs.",
|
|
657
667
|
"required": false
|
|
658
668
|
},
|
|
659
669
|
{
|
|
@@ -665,7 +675,7 @@
|
|
|
665
675
|
"stateOwnership": [
|
|
666
676
|
"The router owns heading copy, selected section, depth, ordered available actions, content inset, divider visibility, scroll-compaction policy, content surface, route data, and product outcomes.",
|
|
667
677
|
"The application replaces pageChrome from completed route state and handles ShellApp page intent events.",
|
|
668
|
-
"ShellApp owns ShellPage, BarTitle, MobileHeader, the content scroller, sticky presentation, and responsive switching.",
|
|
678
|
+
"ShellApp owns ShellPage, BarTitle, BarPageTitle, MobileHeader, the content scroller, sticky presentation, and responsive switching.",
|
|
669
679
|
"The default slot contains application-owned routed content and is not recreated for header compaction or breakpoint changes.",
|
|
670
680
|
"Use a directly slotted ShellPage only inside composition=\"slotted\".",
|
|
671
681
|
"Keep external surface ownership separate from selected routes, toggled modes, and inline expansion. Forward surfaceOpen on header actions while their associated menu or panel remains rendered, including exit motion; clear it after closing. Internal popup controls manage this relationship themselves."
|
|
@@ -677,7 +687,7 @@
|
|
|
677
687
|
"Handle section and Back intent through the router without replacing focused tool or page owners unnecessarily."
|
|
678
688
|
],
|
|
679
689
|
"responsiveBehavior": [
|
|
680
|
-
"ShellApp derives the desktop BarTitle and mobile MobileHeader from the same pageChrome object.",
|
|
690
|
+
"ShellApp derives the desktop BarTitle or BarPageTitle and mobile MobileHeader from the same pageChrome object.",
|
|
681
691
|
"Ordered page actions keep icon commands visible on mobile by default and flatten labeled, menu, split, and explicit overflow commands into one ShellApp-owned mobile menu.",
|
|
682
692
|
"Route-level sections remain pageChrome tabs; subordinate local views use subsections.",
|
|
683
693
|
"Use contentInset none only for deliberately full-bleed products such as maps and canvases.",
|
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.32.0",
|
|
5
5
|
"kind": "components",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -983,9 +983,9 @@
|
|
|
983
983
|
"The application updates the selected identities after dsClear, then moves focus to a stable collection control before the empty bar disappears; the bar never mutates selection or guesses a focus target."
|
|
984
984
|
],
|
|
985
985
|
"states": [
|
|
986
|
-
"The bar is hidden while the selected count is below one and appears as the compact bold-brand elevated surface once at least one item is selected.",
|
|
986
|
+
"The bar is hidden while the selected count is below one and appears as the compact pill bold-brand elevated surface once at least one item is selected.",
|
|
987
987
|
"Clear reports intent only. The application replaces the controlled selected identities.",
|
|
988
|
-
"Slotted actions stay application-owned.
|
|
988
|
+
"Slotted actions stay application-owned. Use the rounded ButtonFilled or ButtonUnfilled variant on a background matching the bold parent surface so those controls remain readable.",
|
|
989
989
|
"The component-owned visible surface owns medium control-elevation and removes the empty actions lane. Overlay inset, footer clearance, and stacking remain application layout."
|
|
990
990
|
],
|
|
991
991
|
"responsiveBehavior": [
|
|
@@ -995,7 +995,7 @@
|
|
|
995
995
|
"frameworkCaveats": {
|
|
996
996
|
"customElements": [
|
|
997
997
|
"Bind count from the current selected set, replace that set after dsClear, and return focus to a stable collection control.",
|
|
998
|
-
"Project command controls through slot=actions with background matching the bold parent surface."
|
|
998
|
+
"Project rounded command controls through slot=actions with background matching the bold parent surface."
|
|
999
999
|
],
|
|
1000
1000
|
"react": [
|
|
1001
1001
|
"Pass count from selected row or item state, clear that state from onDsClear, and return focus to a stable collection control.",
|
|
@@ -1003,7 +1003,7 @@
|
|
|
1003
1003
|
],
|
|
1004
1004
|
"angular": [
|
|
1005
1005
|
"Bind count from the controlled selected identities, handle dsClear in the collection owner, and return focus to a stable collection control.",
|
|
1006
|
-
"Project ds-button-unfilled or ds-button-filled into slot=actions with background matching the bold parent surface."
|
|
1006
|
+
"Project the rounded ds-button-unfilled or ds-button-filled variant into slot=actions with background matching the bold parent surface."
|
|
1007
1007
|
]
|
|
1008
1008
|
},
|
|
1009
1009
|
"references": [
|
|
@@ -1219,6 +1219,196 @@
|
|
|
1219
1219
|
"text"
|
|
1220
1220
|
]
|
|
1221
1221
|
},
|
|
1222
|
+
{
|
|
1223
|
+
"id": "component:ds-bar-page-title",
|
|
1224
|
+
"tag": "ds-bar-page-title",
|
|
1225
|
+
"name": "bar-page-title",
|
|
1226
|
+
"title": "BarPageTitle",
|
|
1227
|
+
"summary": "Compact shell-bar page chrome that shows every page-level section as a tab row after the title divider, and replaces that row with the compact section button when the complete set cannot fit.",
|
|
1228
|
+
"intentStatus": "complete",
|
|
1229
|
+
"intent": {
|
|
1230
|
+
"audience": "specialized",
|
|
1231
|
+
"status": "experimental",
|
|
1232
|
+
"summary": "Compact shell-bar page chrome that shows every page-level section as a tab row after the title divider, and replaces that row with the compact section button when the complete set cannot fit.",
|
|
1233
|
+
"useWhen": [
|
|
1234
|
+
"Managed ShellApp is in panel section navigation and the routed page has page-level subsections such as People or driver detail.",
|
|
1235
|
+
"The shell bar must keep page identity, Back, and page actions while presenting every page section together or not at all."
|
|
1236
|
+
],
|
|
1237
|
+
"avoidWhen": [
|
|
1238
|
+
"The chrome is a page-placed header; use BarTitle through ShellPage instead.",
|
|
1239
|
+
"The choices are peer area routes in bar-mode ShellApp; use BarNav instead.",
|
|
1240
|
+
"The choices are nested PanelNav child routes; keep those on PanelNav.",
|
|
1241
|
+
"Local in-page views should remain selectable as tabs inside content; use TabGroup instead."
|
|
1242
|
+
],
|
|
1243
|
+
"alternatives": [
|
|
1244
|
+
{
|
|
1245
|
+
"when": "The header sits in page content rather than the shell bar.",
|
|
1246
|
+
"component": "component:ds-bar-title",
|
|
1247
|
+
"reason": "BarTitle owns expanded, compact, and constrained page headers, including the compact section button without a tab row."
|
|
1248
|
+
},
|
|
1249
|
+
{
|
|
1250
|
+
"when": "The choices are peer routes of the active PanelNav destination.",
|
|
1251
|
+
"component": "component:ds-bar-nav",
|
|
1252
|
+
"reason": "BarNav owns area-level route sections and partial overflow rather than page subsections."
|
|
1253
|
+
},
|
|
1254
|
+
{
|
|
1255
|
+
"when": "The choices switch local content without changing page sections.",
|
|
1256
|
+
"component": "component:ds-tab-group",
|
|
1257
|
+
"reason": "TabGroup is the local content-view control rather than shell-bar page chrome."
|
|
1258
|
+
}
|
|
1259
|
+
],
|
|
1260
|
+
"commonlyComposedWith": [
|
|
1261
|
+
"component:ds-shell-app",
|
|
1262
|
+
"component:ds-bar-title",
|
|
1263
|
+
"component:ds-panel-nav",
|
|
1264
|
+
"component:ds-menu",
|
|
1265
|
+
"component:ds-text"
|
|
1266
|
+
],
|
|
1267
|
+
"patterns": [
|
|
1268
|
+
"pattern:application-shell",
|
|
1269
|
+
"pattern:shell-page"
|
|
1270
|
+
],
|
|
1271
|
+
"accessibility": [
|
|
1272
|
+
"Provide one concise heading; BarPageTitle renders exactly one h1.",
|
|
1273
|
+
"Give compact Back a destination-specific accessible name and handle dsBack in the route owner.",
|
|
1274
|
+
"Keep value synchronized with the current page section; dsSectionChange returns the selected section id.",
|
|
1275
|
+
"The tab row is a tablist with horizontal roving tabindex. The collapsed control exposes the current section, menu relationship, and expanded state, then restores focus after selection or dismissal.",
|
|
1276
|
+
"Use one filled primary action in the page decision area and keep every top-level action and nested menu-choice id non-empty and unique."
|
|
1277
|
+
],
|
|
1278
|
+
"states": [
|
|
1279
|
+
"Fewer than two selectable sections render title chrome only: no divider, tabs, or section button.",
|
|
1280
|
+
"Two or more selectable sections default to every tab after the compact title divider.",
|
|
1281
|
+
"When the unconstrained title, divider, and complete tab row cannot sit beside trailing actions, every tab is replaced by the compact section button and menu. BarPageTitle never keeps some tabs visible while overflowing the rest.",
|
|
1282
|
+
"Dividers in sections or actions create separate Menu groups without becoming selectable rows.",
|
|
1283
|
+
"Ordered actions preserve authored order with the same compact visible-action and overflow rules as compact BarTitle.",
|
|
1284
|
+
"showDivider=false removes the bottom seam; showCompactDivider can independently restore or remove that boundary.",
|
|
1285
|
+
"Section, action, split-menu, and overflow triggers retain the shared surface-open wash through exit."
|
|
1286
|
+
],
|
|
1287
|
+
"responsiveBehavior": [
|
|
1288
|
+
"BarPageTitle is compact-only shell-bar chrome. It does not offer expanded or constrained variants.",
|
|
1289
|
+
"ShellApp owns the managed panel-mode path and feeds pageChrome.subsections through the same section contract as BarTitle.",
|
|
1290
|
+
"Measurement uses a hidden unconstrained probe of Back, heading, divider, and every tab, compared with the width left after trailing actions, plus hysteresis so the control does not flicker at the boundary.",
|
|
1291
|
+
"Mobile continues to use MobileHeader; BarPageTitle is desktop and tablet shell-bar chrome.",
|
|
1292
|
+
"Long headings truncate while Back, tabs or the section button, and action controls retain complete hit targets and accessible names."
|
|
1293
|
+
],
|
|
1294
|
+
"frameworkCaveats": {
|
|
1295
|
+
"customElements": [
|
|
1296
|
+
"Assign sections, actionItems, primaryAction, and actions as JavaScript properties and replace array or object identities when controlled state changes.",
|
|
1297
|
+
"Handle dsBack, update value after dsSectionChange, and execute product commands from dsAction."
|
|
1298
|
+
],
|
|
1299
|
+
"react": [
|
|
1300
|
+
"Pass section and ordered action arrays directly to DsBarPageTitle and keep value controlled from route state."
|
|
1301
|
+
],
|
|
1302
|
+
"angular": [
|
|
1303
|
+
"Bind complex values on the standalone DsBarPageTitle adapter and handle Back, section, and action intent events in the route shell."
|
|
1304
|
+
]
|
|
1305
|
+
},
|
|
1306
|
+
"references": [
|
|
1307
|
+
{
|
|
1308
|
+
"label": "Storybook",
|
|
1309
|
+
"path": "src/wc/components/BarPageTitle/BarPageTitle.stories.ts"
|
|
1310
|
+
},
|
|
1311
|
+
{
|
|
1312
|
+
"label": "Managed panel-mode shell bar",
|
|
1313
|
+
"path": "src/wc/components/ShellApp/ShellApp.mdx"
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"label": "All-or-nothing resize coverage",
|
|
1317
|
+
"path": "tests/e2e/bar-page-title.spec.ts"
|
|
1318
|
+
},
|
|
1319
|
+
{
|
|
1320
|
+
"label": "Surface ownership and trigger state",
|
|
1321
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
1322
|
+
}
|
|
1323
|
+
]
|
|
1324
|
+
},
|
|
1325
|
+
"api": {
|
|
1326
|
+
"props": {
|
|
1327
|
+
"actionItems": {
|
|
1328
|
+
"type": "BarTitleActionConfigItem[]",
|
|
1329
|
+
"required": false
|
|
1330
|
+
},
|
|
1331
|
+
"actions": {
|
|
1332
|
+
"type": "BarTitleActionItem[]",
|
|
1333
|
+
"required": false
|
|
1334
|
+
},
|
|
1335
|
+
"actionsAriaLabel": {
|
|
1336
|
+
"type": "string",
|
|
1337
|
+
"required": false
|
|
1338
|
+
},
|
|
1339
|
+
"backAriaLabel": {
|
|
1340
|
+
"type": "string",
|
|
1341
|
+
"required": false
|
|
1342
|
+
},
|
|
1343
|
+
"heading": {
|
|
1344
|
+
"type": "string",
|
|
1345
|
+
"required": true
|
|
1346
|
+
},
|
|
1347
|
+
"primaryAction": {
|
|
1348
|
+
"type": "BarTitlePrimaryAction | null",
|
|
1349
|
+
"required": false
|
|
1350
|
+
},
|
|
1351
|
+
"sections": {
|
|
1352
|
+
"type": "BarTitleSectionItem[]",
|
|
1353
|
+
"required": false
|
|
1354
|
+
},
|
|
1355
|
+
"sectionsAriaLabel": {
|
|
1356
|
+
"type": "string",
|
|
1357
|
+
"required": false
|
|
1358
|
+
},
|
|
1359
|
+
"showBack": {
|
|
1360
|
+
"type": "boolean",
|
|
1361
|
+
"required": false
|
|
1362
|
+
},
|
|
1363
|
+
"showCompactDivider": {
|
|
1364
|
+
"type": "boolean",
|
|
1365
|
+
"required": false
|
|
1366
|
+
},
|
|
1367
|
+
"showDivider": {
|
|
1368
|
+
"type": "boolean",
|
|
1369
|
+
"required": false
|
|
1370
|
+
},
|
|
1371
|
+
"value": {
|
|
1372
|
+
"type": "string",
|
|
1373
|
+
"required": false
|
|
1374
|
+
}
|
|
1375
|
+
},
|
|
1376
|
+
"events": [
|
|
1377
|
+
{
|
|
1378
|
+
"name": "dsAction",
|
|
1379
|
+
"detail": "string"
|
|
1380
|
+
},
|
|
1381
|
+
{
|
|
1382
|
+
"name": "dsBack",
|
|
1383
|
+
"detail": "MouseEvent"
|
|
1384
|
+
},
|
|
1385
|
+
{
|
|
1386
|
+
"name": "dsSectionChange",
|
|
1387
|
+
"detail": "string"
|
|
1388
|
+
}
|
|
1389
|
+
],
|
|
1390
|
+
"slots": []
|
|
1391
|
+
},
|
|
1392
|
+
"exports": {
|
|
1393
|
+
"customElement": "ds-bar-page-title",
|
|
1394
|
+
"react": "DsBarPageTitle",
|
|
1395
|
+
"vue": "DsBarPageTitle",
|
|
1396
|
+
"angular": "DsBarPageTitle"
|
|
1397
|
+
},
|
|
1398
|
+
"dependencies": [
|
|
1399
|
+
"@ds-mo/ui",
|
|
1400
|
+
"@ds-mo/tokens",
|
|
1401
|
+
"@ds-mo/icons"
|
|
1402
|
+
],
|
|
1403
|
+
"componentDependencies": [
|
|
1404
|
+
"button-filled",
|
|
1405
|
+
"button-unfilled",
|
|
1406
|
+
"icon",
|
|
1407
|
+
"menu",
|
|
1408
|
+
"text",
|
|
1409
|
+
"tooltip"
|
|
1410
|
+
]
|
|
1411
|
+
},
|
|
1222
1412
|
{
|
|
1223
1413
|
"id": "component:ds-bar-title",
|
|
1224
1414
|
"tag": "ds-bar-title",
|
|
@@ -1238,12 +1428,18 @@
|
|
|
1238
1428
|
],
|
|
1239
1429
|
"avoidWhen": [
|
|
1240
1430
|
"The title belongs to a PanelTools drawer or fullscreen pane; use PanelToolHeader through PanelTools instead.",
|
|
1431
|
+
"The chrome is the managed panel-mode shell bar; use BarPageTitle.",
|
|
1241
1432
|
"The choices are primary application destinations or BarNav destinations rather than sections within the current page.",
|
|
1242
1433
|
"The heading belongs to a card, modal, or other bounded region rather than the page.",
|
|
1243
1434
|
"Local panels inside page content should remain directly selectable; use TabGroup instead.",
|
|
1244
1435
|
"Automatic sticky or responsive page orchestration is required; compose BarTitle in ShellPage rather than implementing it in the header."
|
|
1245
1436
|
],
|
|
1246
1437
|
"alternatives": [
|
|
1438
|
+
{
|
|
1439
|
+
"when": "The chrome is the managed panel-mode shell bar with page-level sections.",
|
|
1440
|
+
"component": "component:ds-bar-page-title",
|
|
1441
|
+
"reason": "BarPageTitle owns compact shell-bar identity and all-or-nothing page-section tabs."
|
|
1442
|
+
},
|
|
1247
1443
|
{
|
|
1248
1444
|
"when": "A create or edit workflow needs Exit, persistent step navigation, and a final Save or Submit action.",
|
|
1249
1445
|
"component": "component:ds-bar-workflow",
|
|
@@ -1290,13 +1486,13 @@
|
|
|
1290
1486
|
"expanded renders the larger heading, optional description, inset divider, and a full-width caption breadcrumb row above the title. The breadcrumb begins after 32px top padding; the following title and right-side actions share one top alignment. Compact renders 48px chrome with the existing icon Back action; constrained uses compact chrome and moves an auto-collapse primary action into overflow.",
|
|
1291
1487
|
"The one visible ordered action collapses by default in constrained presentation. Use never for an exceptional action whose hierarchy must remain visible; explicit overflow actions never leave the shared menu.",
|
|
1292
1488
|
"showDivider=false removes the bottom divider when the surrounding page composition supplies the boundary; showCompactDivider can independently restore or remove that boundary in compact and constrained variants.",
|
|
1293
|
-
"placement=shell-bar
|
|
1489
|
+
"placement=shell-bar remains compact slotted chrome for advanced ShellApp composition. Managed panel-mode ShellApp uses BarPageTitle instead. It omits description and breadcrumb presentation and preserves applicable Back, section, primary, and overflow controls.",
|
|
1294
1490
|
"Section, action, split-menu, and overflow triggers automatically retain the shared surface-open wash through exit. The expanded header presentation is layout, not surface ownership, and does not itself acquire a pressed wash."
|
|
1295
1491
|
],
|
|
1296
1492
|
"responsiveBehavior": [
|
|
1297
1493
|
"BarTitle does not observe viewport, shell, scroll, or container state. Its owner selects an explicit variant.",
|
|
1298
1494
|
"ShellPage is the standard owner for automatic expanded, compact, and constrained selection.",
|
|
1299
|
-
"ShellApp owns shell-bar placement and always selects compact presentation there;
|
|
1495
|
+
"ShellApp owns shell-bar placement for slotted composition and always selects compact presentation there; managed panel mode uses BarPageTitle. Mobile continues to use MobileHeader.",
|
|
1300
1496
|
"When ShellPage owns BarTitle on a secondary desktop or tablet page, its expanded, compact, and constrained presentations all match that canvas; the separate MobileHeader component remains primary.",
|
|
1301
1497
|
"Compact titles use the shared compact-header geometry and md control inset so top-level headings align with BarNav and inline Back geometry aligns with PanelToolHeader. Long headings and section labels truncate independently while Back and action controls retain complete hit targets and accessible names.",
|
|
1302
1498
|
"A never-collapse action remains visible in constrained mode; the title and section label yield space first.",
|
|
@@ -2820,7 +3016,7 @@
|
|
|
2820
3016
|
"The shared text-action recipe supplies brand foreground, hover underline, and keyboard focus indication."
|
|
2821
3017
|
],
|
|
2822
3018
|
"states": [
|
|
2823
|
-
"The application owns the selected area, profile, available choices, permissions, and empty-state copy.",
|
|
3019
|
+
"The application owns the selected area, profile, available choices, permissions, and empty-state copy. Existing complete area-trigger labels remain compatible. Applications that separate the localizable settings noun from the control supply the area-only trigger label and noun together.",
|
|
2824
3020
|
"The card reports popup requests without changing selection or expanded state.",
|
|
2825
3021
|
"The surface follows the active theme rather than imposing always-dark colors."
|
|
2826
3022
|
],
|
|
@@ -2881,6 +3077,10 @@
|
|
|
2881
3077
|
"scopeLabel": {
|
|
2882
3078
|
"type": "string",
|
|
2883
3079
|
"required": false
|
|
3080
|
+
},
|
|
3081
|
+
"settingsLabel": {
|
|
3082
|
+
"type": "string",
|
|
3083
|
+
"required": false
|
|
2884
3084
|
}
|
|
2885
3085
|
},
|
|
2886
3086
|
"events": [
|
|
@@ -3368,8 +3568,9 @@
|
|
|
3368
3568
|
"Semantic state describes the represented value; active does not mean selected or pressed.",
|
|
3369
3569
|
"The dismiss action is the chip's only interaction, and the parent owns data mutation after dsRemove.",
|
|
3370
3570
|
"Long labels remain on one line and truncate only when the consuming layout supplies a maximum width; otherwise the chip sizes to its content.",
|
|
3571
|
+
"When the chip is wider than its label, the dismiss control stays on the trailing edge.",
|
|
3371
3572
|
"Rounded shape is a visual choice and does not change semantics or interaction.",
|
|
3372
|
-
"
|
|
3573
|
+
"The dismiss orb is 4px smaller than the chip on every recipe, including single and double inset, with 2px on top, bottom, and the trailing edge. isInset opts into reduced outer geometry only when Chip is nested inside a control of the same density. The default single inset removes 4px overall; insetDepth double removes 8px overall and falls back to single at xs.",
|
|
3373
3574
|
"Chip is designed only for primary surfaces and has no surface-context API."
|
|
3374
3575
|
],
|
|
3375
3576
|
"responsiveBehavior": [
|
|
@@ -6344,15 +6545,15 @@
|
|
|
6344
6545
|
"tag": "ds-pagination",
|
|
6345
6546
|
"name": "pagination",
|
|
6346
6547
|
"title": "Pagination",
|
|
6347
|
-
"summary": "Controlled fixed or fitted page-size,
|
|
6548
|
+
"summary": "Controlled fixed or fitted page-size, page position, adjacent-page navigation, and optional first/last controls for application-owned data windows.",
|
|
6348
6549
|
"intentStatus": "complete",
|
|
6349
6550
|
"intent": {
|
|
6350
6551
|
"audience": "general",
|
|
6351
6552
|
"status": "stable",
|
|
6352
|
-
"summary": "Controlled fixed or fitted page-size,
|
|
6553
|
+
"summary": "Controlled fixed or fitted page-size, page position, adjacent-page navigation, and optional first/last controls for application-owned data windows.",
|
|
6353
6554
|
"useWhen": [
|
|
6354
6555
|
"A result set is divided into discrete pages and the application owns fetching or slicing each page.",
|
|
6355
|
-
"A table or list needs a compact page-size selector,
|
|
6556
|
+
"A table or list needs a compact page-size selector, page position, and boundary-aware navigation.",
|
|
6356
6557
|
"Direct first-page and last-page navigation is useful enough to opt into alongside the default Previous and Next controls."
|
|
6357
6558
|
],
|
|
6358
6559
|
"avoidWhen": [
|
|
@@ -6366,7 +6567,7 @@
|
|
|
6366
6567
|
],
|
|
6367
6568
|
"accessibility": [
|
|
6368
6569
|
"The component renders a named navigation region, gives its compact page-size noun a complete accessible label, and gives every icon-only boundary control an explicit page action name.",
|
|
6369
|
-
"The visible page-size cluster states the localized noun
|
|
6570
|
+
"The visible page-size cluster states the localized noun and selected size, then a vertical divider, then page position, for example Rows: [25] | 1 of 20. A polite atomic status update retains the complete current range and ‘Page’ phrasing with the localized item noun.",
|
|
6370
6571
|
"Left and Right Arrow request the adjacent page while focus is within pagination navigation controls. The page-size combobox retains its own arrow-key behavior.",
|
|
6371
6572
|
"Inactive boundary controls and every control during loading remain non-interactive while retaining their accessible names.",
|
|
6372
6573
|
"showFirstLastButtons adds explicitly named First page and Last page controls; Previous and Next remain present in either mode."
|
|
@@ -6374,14 +6575,14 @@
|
|
|
6374
6575
|
"states": [
|
|
6375
6576
|
"pageIndex, numeric effective pageSize, pageSizeMode, totalItems, and pageSizeOptions are controlled inputs. dsChange reports the complete next pagination state, previous index, size, and mode, and whether the request changed the page, page size, or fitted capacity; it never mutates controlled inputs.",
|
|
6376
6577
|
"Page-size changes request the first page. Out-of-range page indexes and invalid numeric inputs normalize only for presentation; the owner remains authoritative.",
|
|
6377
|
-
"Zero results display
|
|
6578
|
+
"Zero results display Page 1 of 1. A partial final page still derives from totalItems. Assistive status keeps the complete item range.",
|
|
6378
6579
|
"loading preserves the full pagination surface, applies aria-busy to the navigation region, and prevents page or page-size requests.",
|
|
6379
|
-
"fitToPage appends a Fit to page choice. fitPageSize supplies its effective whole-item capacity; the closed trigger says Fit while
|
|
6580
|
+
"fitToPage appends a Fit to page choice. fitPageSize supplies its effective whole-item capacity; the closed trigger says Fit while page position reflects the resulting window. fitToPageInactive keeps that choice visible but unavailable when fitting is not meaningful for the current data shape. Pagination does not measure layouts itself.",
|
|
6380
6581
|
"showFirstLastButtons defaults to false. Enable it when direct jumps to both result boundaries materially help the workflow."
|
|
6381
6582
|
],
|
|
6382
6583
|
"responsiveBehavior": [
|
|
6383
|
-
"The full-width controls remain on one line with noun, selected size,
|
|
6384
|
-
"Inside a ds-table container narrower than 900px, pagination hides
|
|
6584
|
+
"The full-width controls remain on one line with noun, selected size, a vertical divider, page position, Previous and Next, plus optional First and Last navigation.",
|
|
6585
|
+
"Inside a ds-table container narrower than 900px, pagination hides any opted-in first/last controls while retaining the page-size noun and selector plus Previous, page position, and Next. The complete current range remains available to assistive technology."
|
|
6385
6586
|
],
|
|
6386
6587
|
"frameworkCaveats": {
|
|
6387
6588
|
"customElements": [
|
|
@@ -7251,6 +7452,8 @@
|
|
|
7251
7452
|
"Use isInactive only for a temporarily unavailable visible tool; omit tools the user is not authorized to access.",
|
|
7252
7453
|
"Rail actions disable physical press scaling so notification-dot halos remain aligned to the shell gradient; hover and pressed washes continue to paint above the dot and halo.",
|
|
7253
7454
|
"Rail tooltips are shell-owned and position against the viewport so the narrow tools-lane collision boundary cannot clamp them beyond the viewport edge.",
|
|
7455
|
+
"The PanelTools host is the composed-tree overlay collision owner for menus and filter popups inside tool views. Drawer presentation keeps that rectangle on the rail-and-drawer column. Fullscreen presentation uses the fixed fullscreen surface, not the leftover ShellApp tools-lane box, so history-pane and header menus stay next to their triggers.",
|
|
7456
|
+
"ds-menu and ds-filter-menu remain on the native popover top layer. Applications must not set boundary=viewport or position those popups to work around fullscreen collision.",
|
|
7254
7457
|
"The application owns slotted tool products and data while PanelTools owns rail ordering, drawer selection, open state, motion, and shell events.",
|
|
7255
7458
|
"Opening and closing clip an already-rendered fixed-width surface. Header and tool content remain fully opaque and retained during width motion; transition completion is accepted only at the measured terminal clip width, after which the closed surface becomes inert and paint-skipped.",
|
|
7256
7459
|
"Entering and exiting fullscreen snaps without borrowing the drawer open or close animation.",
|
|
@@ -7882,6 +8085,7 @@
|
|
|
7882
8085
|
"Use errorMessage with error so the trigger is described by the rendered alert."
|
|
7883
8086
|
],
|
|
7884
8087
|
"states": [
|
|
8088
|
+
"Selected trigger foreground communicates the current value independently of fill. Opt into activeFill when the trigger needs additional selected emphasis; popup option selection keeps its own treatment.",
|
|
7885
8089
|
"The multiple property changes cardinality without changing the component family: scalar mode selects and closes, while multiple mode toggles array values and keeps the popup open.",
|
|
7886
8090
|
"Every size applies one complete control-density recipe across trigger height, inline padding, icon zones, text-container inset, gap, and radius; error content follows the shared 4px field flow.",
|
|
7887
8091
|
"Value is controlled through the mutable value property as a string in scalar mode or a string array in multiple mode; dsChange reports the matching shape.",
|
|
@@ -8183,6 +8387,7 @@
|
|
|
8183
8387
|
"commonlyComposedWith": [
|
|
8184
8388
|
"component:ds-panel-nav",
|
|
8185
8389
|
"component:ds-bar-nav",
|
|
8390
|
+
"component:ds-bar-page-title",
|
|
8186
8391
|
"component:ds-bar-title",
|
|
8187
8392
|
"component:ds-panel-tools",
|
|
8188
8393
|
"component:ds-shell-tools",
|
|
@@ -8214,7 +8419,7 @@
|
|
|
8214
8419
|
"ShellApp renders the lower-level desktop, tablet, and mobile chrome, coordinates layout, gradient alignment, transitions, shortcuts, global surfaces, optional Inbox state, focus restoration, and mobile-stage visibility.",
|
|
8215
8420
|
"Desktop and tablet PanelNav and PanelTools width motion is one continuous layout transition: the shell bar or title and routed page must follow the same intermediate lane widths without terminal-state snapping, overlapping chrome, transform scaling, or temporary replacement backgrounds.",
|
|
8216
8421
|
"The application router owns authorization, current URLs, history, and route execution; ShellApp forwards navigation and page intent events without routing.",
|
|
8217
|
-
"sectionNavigation is an application-controlled preference: bar keeps route sections in BarNav, while panel renders them as nested PanelNav children and places
|
|
8422
|
+
"sectionNavigation is an application-controlled preference: bar keeps route sections in BarNav, while panel renders them as nested PanelNav children and places BarPageTitle in the shell bar.",
|
|
8218
8423
|
"Managed ShellApp derives ShellPage desktop header placement from sectionNavigation. Panel mode removes page-local title geometry, restores the standard responsive top gutter, and preserves full-bleed page content without requiring route-specific navigation branches.",
|
|
8219
8424
|
"Switch sectionNavigation at runtime without replacing routed content or tool owners; the application owns preference storage and defaults new users to bar unless product policy says otherwise.",
|
|
8220
8425
|
"In panel mode, supply the same route sections as children on their PanelNav parent and handle dsNavChildSelect as structured parent, child, and href navigation intent.",
|
|
@@ -8229,7 +8434,7 @@
|
|
|
8229
8434
|
"Dashboard represents day-to-day operational work while Settings represents administrative and configuration work; route state selects the context.",
|
|
8230
8435
|
"Replace navigation and pageChrome together from one completed route state.",
|
|
8231
8436
|
"When pageChrome.showBack marks a detail depth, mobile chrome combines the page heading and active local subsection in one sheet trigger; peer route tabs remain in desktop BarNav rather than replacing the detail identity.",
|
|
8232
|
-
"Route-owned ordered page actions drive
|
|
8437
|
+
"Route-owned ordered page actions drive BarTitle, BarPageTitle, and MobileHeader. ShellApp forwards one flat page-action id and owns the derived mobile overflow menu so routes do not duplicate menu state or choices.",
|
|
8233
8438
|
"Managed mobile Back and page-action controls use the same large touch density as the mobile navigation header without increasing the shared header height.",
|
|
8234
8439
|
"Managed ShellApp keeps the selected desktop section-navigation presentation and ShellPage present and owns page header stickiness and the content scroller.",
|
|
8235
8440
|
"Route-owned pageChrome independently selects ShellPage contentInset, page-header seams, scroll compaction, expanded and compact header-divider visibility, and contentSurface. ShellApp forwards them while resolving whether desktop title geometry is page-local or shell-bar-owned.",
|
|
@@ -8240,8 +8445,8 @@
|
|
|
8240
8445
|
"ShellApp owns the fixed system breakpoints and resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
|
|
8241
8446
|
"On desktop, PanelNav defaults expanded, permits user collapse or expansion, and respects the locally persisted desktop preference.",
|
|
8242
8447
|
"On tablet, ShellApp keeps PanelNav permanently collapsed and prevents user expansion without overwriting the desktop preference.",
|
|
8243
|
-
"On desktop and tablet, panel section navigation replaces BarNav with
|
|
8244
|
-
"When panel section navigation moves
|
|
8448
|
+
"On desktop and tablet, panel section navigation replaces BarNav with BarPageTitle; collapsed PanelNav exposes child sections through its anchored flyout.",
|
|
8449
|
+
"When panel section navigation moves BarPageTitle into the shell bar, routed content starts at the standard 32px desktop or 16px tablet gutter and ShellPage reports no page-local sticky-header height.",
|
|
8245
8450
|
"On mobile, ShellApp hides and inerts desktop chrome, uses a solid primary stage, and composes MobileHeader, MobileSheetNav, ShellTools, and the persistent MobileBarNav around the same application-owned content.",
|
|
8246
8451
|
"The section-navigation preference also selects mobile navigation: bar preserves flat area selection and the header section picker; panel expands child routes inline in MobileSheetNav and combines the page title with any local subsection in one sheet trigger.",
|
|
8247
8452
|
"Opening MobileSheetNav temporarily overlays the active routed page or global tool; closing it without selecting an area restores that same destination and its nested state. The sheet exposes the router-derived current area only while the routed area owns the mobile stage, so a global tool never leaves an underlying route highlighted.",
|
|
@@ -8253,7 +8458,7 @@
|
|
|
8253
8458
|
"Mobile global surfaces conceal and inert the routed workspace without unmounting it, preserving nested routes and scroll state.",
|
|
8254
8459
|
"Managed rail accessories are intentionally omitted below 768px. Applications that need equivalent persistent mobile status provide it through the top banner or status region; ShellApp does not convert rail accessories into mobile tool views.",
|
|
8255
8460
|
"Keep PanelNav width, BarNav height, PanelTools chrome, and main-content origin stable except during intentional responsive or collapse transitions.",
|
|
8256
|
-
"The routed content cell and tools cell expose separate anchored-overlay collision boundaries, so top-layer menus and tooltips remain above local clipping without crossing into neighboring shell lanes. Full-screen modal overlays remain viewport-owned.",
|
|
8461
|
+
"The routed content cell and tools cell expose separate anchored-overlay collision boundaries, so top-layer menus and tooltips remain above local clipping without crossing into neighboring shell lanes. Full-screen modal overlays remain viewport-owned. While PanelTools is fullscreen, the tools-lane marker is omitted so collision follows the fullscreen PanelTools surface (or the viewport fallback) instead of the in-flow drawer-width tools column.",
|
|
8257
8462
|
"Paper texture chrome is desktop/tablet-only and follows the fixed viewport phase of the shell chrome; mobile remains a solid primary stage.",
|
|
8258
8463
|
"Managed page-header capacity follows only the fixed shell breakpoint: roomy on desktop and compact on tablet. Opening PanelTools does not compact or constrain BarTitle.",
|
|
8259
8464
|
"Mobile keeps at most the first eligible ordered icon command visible and moves labeled buttons, menu choices, split actions, and explicit overflow commands into one shell-owned text-only page-actions menu.",
|
|
@@ -8428,6 +8633,7 @@
|
|
|
8428
8633
|
],
|
|
8429
8634
|
"componentDependencies": [
|
|
8430
8635
|
"bar-nav",
|
|
8636
|
+
"bar-page-title",
|
|
8431
8637
|
"bar-title",
|
|
8432
8638
|
"button-filled",
|
|
8433
8639
|
"button-unfilled",
|
|
@@ -9628,7 +9834,7 @@
|
|
|
9628
9834
|
"Scrollable table regions become keyboard focusable and named only when overflow exists.",
|
|
9629
9835
|
"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.",
|
|
9630
9836
|
"Applications may pass their controlled literal search terms through highlightTerms after applying their own filtering. When TableSearch scopes the query, pass the same selected field identities through highlightFieldIds. A compound column maps its ordered headerSegments to primary, secondary-run, and tertiary-run data points; simple columns map their column ID to every owned text track. With no highlightFieldIds every text track remains eligible. Matching text is rendered with semantic mark elements, so the emphasis is identifiable independently of its faint-brand background and bold-brand foreground. Highlight markup preserves source order, the cell's complete accessible text, and does not create extra announcements.",
|
|
9631
|
-
"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
|
|
9837
|
+
"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 page-size picker, 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."
|
|
9632
9838
|
],
|
|
9633
9839
|
"states": [
|
|
9634
9840
|
"Columns, rows, groups, grouping, sorting, selected row IDs, collapsed group IDs, highlightTerms, highlightFieldIds, 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. highlightTerms only marks matching table-owned text and never filters rows, changes query semantics, or highlights Tag labels. highlightFieldIds optionally narrows that marking to matching column IDs or compound header-segment sort keys. 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 trigger keeps one stable label and neutral resting foreground whether or not hiddenColumnIds or columnOrder differ from the catalog default; the configured state remains visible inside the Menu. 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.",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ChangeDetectorRef, ElementRef, NgZone, EventEmitter } from '@angular/core';
|
|
2
|
+
import type { Components } from '@ds-mo/ui/components';
|
|
3
|
+
import type { DsBarPageTitleCustomEvent } from '@ds-mo/ui/components';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class DsBarPageTitle {
|
|
6
|
+
protected z: NgZone;
|
|
7
|
+
protected el: HTMLDsBarPageTitleElement;
|
|
8
|
+
dsBack: EventEmitter<DsBarPageTitleCustomEvent<MouseEvent>>;
|
|
9
|
+
dsSectionChange: EventEmitter<DsBarPageTitleCustomEvent<string>>;
|
|
10
|
+
dsAction: EventEmitter<DsBarPageTitleCustomEvent<string>>;
|
|
11
|
+
constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DsBarPageTitle, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DsBarPageTitle, "ds-bar-page-title", never, { "actionItems": { "alias": "actionItems"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "actionsAriaLabel": { "alias": "actionsAriaLabel"; "required": false; }; "backAriaLabel": { "alias": "backAriaLabel"; "required": false; }; "heading": { "alias": "heading"; "required": true; }; "primaryAction": { "alias": "primaryAction"; "required": false; }; "sections": { "alias": "sections"; "required": false; }; "sectionsAriaLabel": { "alias": "sectionsAriaLabel"; "required": false; }; "showBack": { "alias": "showBack"; "required": false; }; "showCompactDivider": { "alias": "showCompactDivider"; "required": false; }; "showDivider": { "alias": "showDivider"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "dsBack": "dsBack"; "dsSectionChange": "dsSectionChange"; "dsAction": "dsAction"; }, never, ["*"], true, never>;
|
|
14
|
+
}
|
|
15
|
+
export declare interface DsBarPageTitle extends Components.DsBarPageTitle {
|
|
16
|
+
/**
|
|
17
|
+
* Emitted when the leading Back action is activated.
|
|
18
|
+
*/
|
|
19
|
+
dsBack: EventEmitter<DsBarPageTitleCustomEvent<MouseEvent>>;
|
|
20
|
+
/**
|
|
21
|
+
* Emitted with the newly selected page-section id.
|
|
22
|
+
*/
|
|
23
|
+
dsSectionChange: EventEmitter<DsBarPageTitleCustomEvent<string>>;
|
|
24
|
+
/**
|
|
25
|
+
* Emitted with the activated primary or overflow action id.
|
|
26
|
+
*/
|
|
27
|
+
dsAction: EventEmitter<DsBarPageTitleCustomEvent<string>>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
/* tslint:disable */
|
|
8
|
+
/* auto-generated angular directive proxies */
|
|
9
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';
|
|
10
|
+
import { ProxyCmp } from './angular-component-lib/utils.js';
|
|
11
|
+
import { defineCustomElement as defineDsBarPageTitle } from '@ds-mo/ui/components/ds-bar-page-title.js';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
let DsBarPageTitle = class DsBarPageTitle {
|
|
14
|
+
constructor(c, r, z) {
|
|
15
|
+
this.z = z;
|
|
16
|
+
this.dsBack = new EventEmitter();
|
|
17
|
+
this.dsSectionChange = new EventEmitter();
|
|
18
|
+
this.dsAction = new EventEmitter();
|
|
19
|
+
c.detach();
|
|
20
|
+
this.el = r.nativeElement;
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsBarPageTitle, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsBarPageTitle, isStandalone: true, selector: "ds-bar-page-title", inputs: { actionItems: "actionItems", actions: "actions", actionsAriaLabel: "actionsAriaLabel", backAriaLabel: "backAriaLabel", heading: "heading", primaryAction: "primaryAction", sections: "sections", sectionsAriaLabel: "sectionsAriaLabel", showBack: "showBack", showCompactDivider: "showCompactDivider", showDivider: "showDivider", value: "value" }, outputs: { dsBack: "dsBack", dsSectionChange: "dsSectionChange", dsAction: "dsAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
|
+
};
|
|
25
|
+
DsBarPageTitle = __decorate([
|
|
26
|
+
ProxyCmp({
|
|
27
|
+
defineCustomElementFn: defineDsBarPageTitle,
|
|
28
|
+
inputs: ['actionItems', 'actions', 'actionsAriaLabel', 'backAriaLabel', 'heading', 'primaryAction', 'sections', 'sectionsAriaLabel', 'showBack', 'showCompactDivider', 'showDivider', 'value']
|
|
29
|
+
})
|
|
30
|
+
], DsBarPageTitle);
|
|
31
|
+
export { DsBarPageTitle };
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsBarPageTitle, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{
|
|
35
|
+
selector: 'ds-bar-page-title',
|
|
36
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
37
|
+
template: '<ng-content></ng-content>',
|
|
38
|
+
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
|
|
39
|
+
inputs: ['actionItems', 'actions', 'actionsAriaLabel', 'backAriaLabel', { name: 'heading', required: true }, 'primaryAction', 'sections', 'sectionsAriaLabel', 'showBack', 'showCompactDivider', 'showDivider', 'value'],
|
|
40
|
+
outputs: ['dsBack', 'dsSectionChange', 'dsAction'],
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsBack: [{
|
|
43
|
+
type: Output
|
|
44
|
+
}], dsSectionChange: [{
|
|
45
|
+
type: Output
|
|
46
|
+
}], dsAction: [{
|
|
47
|
+
type: Output
|
|
48
|
+
}] } });
|
|
@@ -9,7 +9,7 @@ export declare class DsCardSettingsScope {
|
|
|
9
9
|
dsScopeRequest: EventEmitter<DsCardSettingsScopeCustomEvent<IDsCardSettingsScopeSettingsScopeRequest>>;
|
|
10
10
|
constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<DsCardSettingsScope, never>;
|
|
12
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DsCardSettingsScope, "ds-card-settings-scope", never, { "areaControls": { "alias": "areaControls"; "required": false; }; "areaExpanded": { "alias": "areaExpanded"; "required": false; }; "areaLabel": { "alias": "areaLabel"; "required": false; }; "forLabel": { "alias": "forLabel"; "required": false; }; "managingLabel": { "alias": "managingLabel"; "required": false; }; "profileControls": { "alias": "profileControls"; "required": false; }; "profileExpanded": { "alias": "profileExpanded"; "required": false; }; "profileLabel": { "alias": "profileLabel"; "required": false; }; "profilePopup": { "alias": "profilePopup"; "required": false; }; "scopeLabel": { "alias": "scopeLabel"; "required": false; }; }, { "dsScopeRequest": "dsScopeRequest"; }, never, ["*"], true, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DsCardSettingsScope, "ds-card-settings-scope", never, { "areaControls": { "alias": "areaControls"; "required": false; }; "areaExpanded": { "alias": "areaExpanded"; "required": false; }; "areaLabel": { "alias": "areaLabel"; "required": false; }; "forLabel": { "alias": "forLabel"; "required": false; }; "managingLabel": { "alias": "managingLabel"; "required": false; }; "profileControls": { "alias": "profileControls"; "required": false; }; "profileExpanded": { "alias": "profileExpanded"; "required": false; }; "profileLabel": { "alias": "profileLabel"; "required": false; }; "profilePopup": { "alias": "profilePopup"; "required": false; }; "scopeLabel": { "alias": "scopeLabel"; "required": false; }; "settingsLabel": { "alias": "settingsLabel"; "required": false; }; }, { "dsScopeRequest": "dsScopeRequest"; }, never, ["*"], true, never>;
|
|
13
13
|
}
|
|
14
14
|
export declare interface DsCardSettingsScope extends Components.DsCardSettingsScope {
|
|
15
15
|
/**
|