@ds-mo/ui 14.34.0 → 14.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +1 -1
- package/dist/agent.json +1423 -218
- package/dist/angular/ds-button-inverted.d.ts +17 -0
- package/dist/angular/ds-button-inverted.js +46 -0
- package/dist/angular/ds-calendar.d.ts +15 -0
- package/dist/angular/ds-calendar.js +43 -0
- package/dist/angular/ds-field.d.ts +1 -1
- package/dist/angular/ds-field.js +1 -1
- package/dist/angular/ds-filter-menu.d.ts +1 -1
- package/dist/angular/ds-filter-menu.js +3 -3
- package/dist/angular/ds-input-date.d.ts +15 -0
- package/dist/angular/ds-input-date.js +43 -0
- package/dist/angular/ds-input-time.d.ts +15 -0
- package/dist/angular/ds-input-time.js +43 -0
- package/dist/angular/ds-input.d.ts +1 -1
- package/dist/angular/ds-input.js +3 -3
- package/dist/angular/ds-menu.d.ts +1 -1
- package/dist/angular/ds-menu.js +3 -3
- package/dist/angular/ds-select.d.ts +1 -1
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-tab-group.d.ts +1 -1
- package/dist/angular/ds-tab-group.js +3 -3
- package/dist/angular/ds-table-filter.d.ts +1 -1
- package/dist/angular/ds-table-filter.js +3 -3
- package/dist/angular/ds-table-group.d.ts +1 -1
- package/dist/angular/ds-table-group.js +3 -3
- package/dist/angular/ds-table-preferences.d.ts +39 -0
- package/dist/angular/ds-table-preferences.js +69 -0
- package/dist/angular/ds-table-saved-views.d.ts +1 -1
- package/dist/angular/ds-table-saved-views.js +3 -3
- package/dist/angular/ds-table-search.d.ts +1 -1
- package/dist/angular/ds-table-search.js +3 -3
- package/dist/angular/ds-table-sort.d.ts +1 -1
- package/dist/angular/ds-table-sort.js +3 -3
- package/dist/angular/ds-table-toolbar.d.ts +1 -1
- package/dist/angular/ds-table-toolbar.js +3 -3
- package/dist/angular/ds-table.d.ts +3 -1
- package/dist/angular/ds-table.js +8 -5
- package/dist/angular/ds-time-picker.d.ts +15 -0
- package/dist/angular/ds-time-picker.js +43 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +6 -0
- package/dist/angular/proxies.d.ts +6 -0
- package/dist/angular/proxies.js +6 -0
- package/dist/angular/text-value-accessor.d.ts +1 -1
- package/dist/angular/text-value-accessor.js +2 -2
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-action.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-page-title.js +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-inverted.d.ts +11 -0
- package/dist/components/ds-button-inverted.js +2 -0
- package/dist/components/ds-button-inverted.js.map +1 -0
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-calendar.d.ts +11 -0
- package/dist/components/ds-calendar.js +2 -0
- package/dist/components/ds-calendar.js.map +1 -0
- package/dist/components/ds-card-action-center.js +1 -1
- package/dist/components/ds-card-chart.js +1 -1
- package/dist/components/ds-card-navigation.js +1 -1
- package/dist/components/ds-card-navigation.js.map +1 -1
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-settings-scope.js +1 -1
- package/dist/components/ds-card-settings-scope.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-input-date.d.ts +11 -0
- package/dist/components/ds-input-date.js +2 -0
- package/dist/components/ds-input-date.js.map +1 -0
- package/dist/components/ds-input-time.d.ts +11 -0
- package/dist/components/ds-input-time.js +2 -0
- package/dist/components/ds-input-time.js.map +1 -0
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-paper-texture.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-score.js +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-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-filter.js +1 -1
- package/dist/components/ds-table-filter.js.map +1 -1
- package/dist/components/ds-table-group.js +1 -1
- package/dist/components/ds-table-group.js.map +1 -1
- package/dist/components/ds-table-preferences.d.ts +11 -0
- package/dist/components/ds-table-preferences.js +2 -0
- package/dist/components/ds-table-preferences.js.map +1 -0
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-saved-views.js.map +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-search.js.map +1 -1
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table-sort.js.map +1 -1
- package/dist/components/ds-table-toolbar.js +1 -1
- package/dist/components/ds-table-toolbar.js.map +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-table.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-textarea.js +1 -1
- package/dist/components/ds-textarea.js.map +1 -1
- package/dist/components/ds-time-picker.d.ts +11 -0
- package/dist/components/ds-time-picker.js +2 -0
- package/dist/components/ds-time-picker.js.map +1 -0
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-chart.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/{p-B5QVra1K.js → p-2GVGhrh0.js} +2 -2
- package/dist/components/p-7O-2D29W.js +2 -0
- package/dist/components/p-7O-2D29W.js.map +1 -0
- package/dist/components/{p-BqGdNrVl.js → p-8oRkhvjy.js} +2 -2
- package/dist/components/p-B27_chI7.js +2 -0
- package/dist/components/p-B27_chI7.js.map +1 -0
- package/dist/components/{p-ya8A_SMw.js → p-BOhpMUwO.js} +2 -2
- package/dist/components/{p-ya8A_SMw.js.map → p-BOhpMUwO.js.map} +1 -1
- package/dist/components/{p-CqeMumqy.js → p-BV5T1hzN.js} +2 -2
- package/dist/components/{p-CIoeHcCk.js → p-BWfzaSc3.js} +2 -2
- package/dist/components/{p-AkSwrAKR.js → p-BgLI9JoT.js} +2 -2
- package/dist/components/{p-BwsS_Hyr.js → p-C-dHtQMi.js} +2 -2
- package/dist/components/p-C0CE2v5D.js +2 -0
- package/dist/components/{p-CHBuzAYH.js.map → p-C0CE2v5D.js.map} +1 -1
- package/dist/components/{p-CoE7yza3.js → p-C2JnoaWI.js} +2 -2
- package/dist/components/{p-lv4YQEsa.js → p-C4m8y9ki.js} +2 -2
- package/dist/components/{p-BEttT0UB.js → p-CDJ2Ntcq.js} +2 -2
- package/dist/components/p-CKarsuR2.js +2 -0
- package/dist/components/p-CKarsuR2.js.map +1 -0
- package/dist/components/{p-Dj296RmE.js → p-CMQUuGvl.js} +2 -2
- package/dist/components/{p-DyyfWSLB.js → p-CQ5RwY2C.js} +2 -2
- package/dist/components/p-CQIh2yRP.js +2 -0
- package/dist/components/p-CQIh2yRP.js.map +1 -0
- package/dist/components/{p-CQqZgTYk.js → p-CWPT3aOB.js} +2 -2
- package/dist/components/p-CWog26I_.js +2 -0
- package/dist/components/p-CWog26I_.js.map +1 -0
- package/dist/components/{p-LZ8F08Fj.js → p-CaNCGKEJ.js} +2 -2
- package/dist/components/p-CaNCGKEJ.js.map +1 -0
- package/dist/components/p-CbSUyv5B.js +2 -0
- package/dist/components/{p-CnK36Be0.js.map → p-CbSUyv5B.js.map} +1 -1
- package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
- package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
- package/dist/components/{p-OxdAzO4v.js → p-Ce4zy8q1.js} +2 -2
- package/dist/components/p-CeXf9-X3.js +2 -0
- package/dist/components/p-CeXf9-X3.js.map +1 -0
- package/dist/components/{p-CNDTHTf6.js → p-Cga6Ex0E.js} +2 -2
- package/dist/components/{p-CBQzTgvI.js → p-Cl9phSf0.js} +2 -2
- package/dist/components/{p-DzbEJN1A.js → p-ClJhuG5Y.js} +2 -2
- package/dist/components/{p-D_QtZZR8.js → p-CqW2eyiF.js} +2 -2
- package/dist/components/{p-CHUdAW1Q.js → p-Cus1Sigh.js} +2 -2
- package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
- package/dist/components/p-D7yBIPB6.js +2 -0
- package/dist/components/{p-DEyvEIYL.js.map → p-D7yBIPB6.js.map} +1 -1
- package/dist/components/p-D8rpKod8.js +2 -0
- package/dist/components/p-D8rpKod8.js.map +1 -0
- package/dist/components/{p-Da9VpZX2.js → p-DBwa1OXP.js} +2 -2
- package/dist/components/{p-Br0dx2uP.js → p-DK9Ex3aY.js} +2 -2
- package/dist/components/{p-CweS0FfJ.js → p-DLXXGgmf.js} +2 -2
- package/dist/components/{p-CvplapTD.js → p-DVd1TIxi.js} +2 -2
- package/dist/components/p-DZ58Sg5a.js.map +1 -1
- package/dist/components/{p-Dx7WcWW1.js → p-DgG9W9N4.js} +2 -2
- package/dist/components/{p-4DNyCYKM.js → p-DkfM55x8.js} +2 -2
- package/dist/components/p-DkikNSSO.js +2 -0
- package/dist/components/p-DkikNSSO.js.map +1 -0
- package/dist/components/{p-DjCnGxSd.js → p-Dryt3COt.js} +2 -2
- package/dist/components/{p-eo_pmPqp.js → p-Ds51RgCi.js} +2 -2
- package/dist/components/p-DtkLtKY0.js +2 -0
- package/dist/components/p-DtkLtKY0.js.map +1 -0
- package/dist/components/{p-DBZwI7HY.js → p-DvzI2A_M.js} +2 -2
- package/dist/components/p-J5x-QtlD.js +2 -0
- package/dist/components/{p-CIYJhyKt.js.map → p-J5x-QtlD.js.map} +1 -1
- package/dist/components/{p-C51ytXM6.js → p-Jaqdfw4E.js} +2 -2
- package/dist/components/{p-BMERUCe1.js → p-KBrC9IG4.js} +2 -2
- package/dist/components/p-MQ36mEgn.js +2 -0
- package/dist/components/p-MQ36mEgn.js.map +1 -0
- package/dist/components/{p-CXAa9TUM.js → p-PmcUwTQ_.js} +2 -2
- package/dist/components/p-TjXGRPik.js +2 -0
- package/dist/components/{p-ByoywoBH.js.map → p-TjXGRPik.js.map} +1 -1
- package/dist/components/{p-zZuAAiiI.js → p-bM3LH3kc.js} +2 -2
- package/dist/components/{p-CK2S28gU.js → p-ji09W9el.js} +2 -2
- package/dist/components/{p-DrjY8Mpy.js → p-neWTRxmf.js} +2 -2
- package/dist/components/{p-CMq-jKEI.js → p-rYePOPbJ.js} +2 -2
- package/dist/components/{p-C1QHxVvP.js → p-su6y4hLK.js} +2 -2
- package/dist/components/p-su6y4hLK.js.map +1 -0
- package/dist/components/{p-CKo2nySr.js → p-tNQ0YulU.js} +2 -2
- package/dist/components/{p-C8XJgV1n.js → p-x1wf38q3.js} +2 -2
- package/dist/docs/components.json +17368 -12812
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +3 -1
- package/dist/lib/utils/button-render.d.ts +1 -1
- package/dist/lib/utils/clock-time.d.ts +22 -0
- package/dist/lib/utils/date-filter-value.d.ts +4 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.js +133 -0
- package/dist/lib/utils/index.js.map +4 -4
- package/dist/mcp-data/registry/bar-title.json +2 -2
- package/dist/mcp-data/registry/button-inverted.json +580 -0
- package/dist/mcp-data/registry/calendar.json +273 -0
- package/dist/mcp-data/registry/card-navigation.json +4 -2
- package/dist/mcp-data/registry/field.json +19 -14
- package/dist/mcp-data/registry/filter-menu.json +106 -23
- package/dist/mcp-data/registry/input-date.json +516 -0
- package/dist/mcp-data/registry/input-time.json +535 -0
- package/dist/mcp-data/registry/input.json +56 -8
- package/dist/mcp-data/registry/menu.json +22 -3
- package/dist/mcp-data/registry/registry.json +1434 -211
- package/dist/mcp-data/registry/select.json +105 -14
- package/dist/mcp-data/registry/shell-app.json +4 -3
- package/dist/mcp-data/registry/tab-group.json +20 -3
- package/dist/mcp-data/registry/table-filter.json +26 -6
- package/dist/mcp-data/registry/table-group.json +59 -7
- package/dist/mcp-data/registry/table-preferences.json +511 -0
- package/dist/mcp-data/registry/table-saved-views.json +50 -10
- package/dist/mcp-data/registry/table-search.json +24 -6
- package/dist/mcp-data/registry/table-sort.json +22 -4
- package/dist/mcp-data/registry/table-toolbar.json +26 -6
- package/dist/mcp-data/registry/table.json +70 -4
- package/dist/mcp-data/registry/textarea.json +2 -2
- package/dist/mcp-data/registry/time-picker.json +259 -0
- package/dist/react/components.d.ts +6 -0
- package/dist/react/components.js +6 -0
- package/dist/react/ds-button-inverted.d.ts +13 -0
- package/dist/react/ds-button-inverted.js +15 -0
- package/dist/react/ds-calendar.d.ts +12 -0
- package/dist/react/ds-calendar.js +12 -0
- package/dist/react/ds-field.d.ts +1 -1
- package/dist/react/ds-input-date.d.ts +12 -0
- package/dist/react/ds-input-date.js +12 -0
- package/dist/react/ds-input-time.d.ts +12 -0
- package/dist/react/ds-input-time.js +12 -0
- package/dist/react/ds-table-preferences.d.ts +21 -0
- package/dist/react/ds-table-preferences.js +23 -0
- package/dist/react/ds-table.d.ts +1 -0
- package/dist/react/ds-table.js +1 -0
- package/dist/react/ds-time-picker.d.ts +12 -0
- package/dist/react/ds-time-picker.js +12 -0
- package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
- package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
- package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
- package/dist/types/components/ButtonInverted/index.d.ts +2 -0
- package/dist/types/components/Calendar/Calendar.d.ts +32 -0
- package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
- package/dist/types/components/Field/Field.d.ts +7 -2
- package/dist/types/components/FilterMenu/FilterMenu.d.ts +16 -10
- package/dist/types/components/Input/Input.d.ts +10 -0
- package/dist/types/components/InputDate/InputDate.d.ts +78 -0
- package/dist/types/components/InputTime/InputTime.d.ts +80 -0
- package/dist/types/components/Menu/Menu.d.ts +2 -0
- package/dist/types/components/Select/Select.d.ts +13 -2
- package/dist/types/components/ShellApp/shell-app-types.d.ts +3 -1
- package/dist/types/components/TabGroup/TabGroup.d.ts +1 -0
- package/dist/types/components/Table/Table.d.ts +8 -0
- package/dist/types/components/TableFilter/TableFilter.d.ts +2 -0
- package/dist/types/components/TableGroup/TableGroup.d.ts +5 -0
- package/dist/types/components/TablePreferences/TablePreferences.d.ts +56 -0
- package/dist/types/components/TableSavedViews/TableSavedViews.d.ts +4 -0
- package/dist/types/components/TableSearch/TableSearch.d.ts +2 -0
- package/dist/types/components/TableSort/TableSort.d.ts +2 -0
- package/dist/types/components/TableToolbar/TableToolbar.d.ts +2 -0
- package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
- package/dist/types/components.d.ts +1299 -66
- package/dist/types/utils/button-render.d.ts +1 -1
- package/dist/types/utils/clock-time.d.ts +23 -0
- package/dist/types/utils/date-filter-value.d.ts +4 -0
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/vue/components.d.ts +6 -0
- package/dist/vue/components.js +6 -0
- package/dist/vue/ds-button-inverted.d.ts +3 -0
- package/dist/vue/ds-button-inverted.js +33 -0
- package/dist/vue/ds-calendar.d.ts +3 -0
- package/dist/vue/ds-calendar.js +16 -0
- package/dist/vue/ds-filter-menu.js +5 -0
- package/dist/vue/ds-input-date.d.ts +3 -0
- package/dist/vue/ds-input-date.js +31 -0
- package/dist/vue/ds-input-time.d.ts +3 -0
- package/dist/vue/ds-input-time.js +32 -0
- package/dist/vue/ds-input.js +2 -0
- package/dist/vue/ds-menu.js +1 -0
- package/dist/vue/ds-select.js +5 -0
- package/dist/vue/ds-tab-group.js +1 -0
- package/dist/vue/ds-table-filter.js +1 -0
- package/dist/vue/ds-table-group.js +3 -0
- package/dist/vue/ds-table-preferences.d.ts +3 -0
- package/dist/vue/ds-table-preferences.js +45 -0
- package/dist/vue/ds-table-saved-views.js +2 -0
- package/dist/vue/ds-table-search.js +1 -0
- package/dist/vue/ds-table-sort.js +1 -0
- package/dist/vue/ds-table-toolbar.js +2 -1
- package/dist/vue/ds-table.js +5 -0
- package/dist/vue/ds-time-picker.d.ts +3 -0
- package/dist/vue/ds-time-picker.js +16 -0
- package/package.json +1 -1
- package/dist/components/p-B_nPct4G.js +0 -2
- package/dist/components/p-B_nPct4G.js.map +0 -1
- package/dist/components/p-BlWNMytv.js +0 -2
- package/dist/components/p-BlWNMytv.js.map +0 -1
- package/dist/components/p-ByoywoBH.js +0 -2
- package/dist/components/p-C1QHxVvP.js.map +0 -1
- package/dist/components/p-CHBuzAYH.js +0 -2
- package/dist/components/p-CIYJhyKt.js +0 -2
- package/dist/components/p-CUL5_8JM.js +0 -2
- package/dist/components/p-CUL5_8JM.js.map +0 -1
- package/dist/components/p-CnK36Be0.js +0 -2
- package/dist/components/p-Cw_npFwN.js +0 -2
- package/dist/components/p-Cw_npFwN.js.map +0 -1
- package/dist/components/p-DEyvEIYL.js +0 -2
- package/dist/components/p-DVWOUQfT.js +0 -2
- package/dist/components/p-DVWOUQfT.js.map +0 -1
- package/dist/components/p-Dhw_W8nk.js.map +0 -1
- package/dist/components/p-LZ8F08Fj.js.map +0 -1
- package/dist/components/p-xxuHxP3u.js +0 -2
- package/dist/components/p-xxuHxP3u.js.map +0 -1
- package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
- /package/dist/components/{p-B5QVra1K.js.map → p-2GVGhrh0.js.map} +0 -0
- /package/dist/components/{p-BqGdNrVl.js.map → p-8oRkhvjy.js.map} +0 -0
- /package/dist/components/{p-CqeMumqy.js.map → p-BV5T1hzN.js.map} +0 -0
- /package/dist/components/{p-CIoeHcCk.js.map → p-BWfzaSc3.js.map} +0 -0
- /package/dist/components/{p-AkSwrAKR.js.map → p-BgLI9JoT.js.map} +0 -0
- /package/dist/components/{p-BwsS_Hyr.js.map → p-C-dHtQMi.js.map} +0 -0
- /package/dist/components/{p-CoE7yza3.js.map → p-C2JnoaWI.js.map} +0 -0
- /package/dist/components/{p-lv4YQEsa.js.map → p-C4m8y9ki.js.map} +0 -0
- /package/dist/components/{p-BEttT0UB.js.map → p-CDJ2Ntcq.js.map} +0 -0
- /package/dist/components/{p-Dj296RmE.js.map → p-CMQUuGvl.js.map} +0 -0
- /package/dist/components/{p-DyyfWSLB.js.map → p-CQ5RwY2C.js.map} +0 -0
- /package/dist/components/{p-CQqZgTYk.js.map → p-CWPT3aOB.js.map} +0 -0
- /package/dist/components/{p-OxdAzO4v.js.map → p-Ce4zy8q1.js.map} +0 -0
- /package/dist/components/{p-CNDTHTf6.js.map → p-Cga6Ex0E.js.map} +0 -0
- /package/dist/components/{p-CBQzTgvI.js.map → p-Cl9phSf0.js.map} +0 -0
- /package/dist/components/{p-DzbEJN1A.js.map → p-ClJhuG5Y.js.map} +0 -0
- /package/dist/components/{p-D_QtZZR8.js.map → p-CqW2eyiF.js.map} +0 -0
- /package/dist/components/{p-CHUdAW1Q.js.map → p-Cus1Sigh.js.map} +0 -0
- /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
- /package/dist/components/{p-Da9VpZX2.js.map → p-DBwa1OXP.js.map} +0 -0
- /package/dist/components/{p-Br0dx2uP.js.map → p-DK9Ex3aY.js.map} +0 -0
- /package/dist/components/{p-CweS0FfJ.js.map → p-DLXXGgmf.js.map} +0 -0
- /package/dist/components/{p-CvplapTD.js.map → p-DVd1TIxi.js.map} +0 -0
- /package/dist/components/{p-Dx7WcWW1.js.map → p-DgG9W9N4.js.map} +0 -0
- /package/dist/components/{p-4DNyCYKM.js.map → p-DkfM55x8.js.map} +0 -0
- /package/dist/components/{p-DjCnGxSd.js.map → p-Dryt3COt.js.map} +0 -0
- /package/dist/components/{p-eo_pmPqp.js.map → p-Ds51RgCi.js.map} +0 -0
- /package/dist/components/{p-DBZwI7HY.js.map → p-DvzI2A_M.js.map} +0 -0
- /package/dist/components/{p-C51ytXM6.js.map → p-Jaqdfw4E.js.map} +0 -0
- /package/dist/components/{p-BMERUCe1.js.map → p-KBrC9IG4.js.map} +0 -0
- /package/dist/components/{p-CXAa9TUM.js.map → p-PmcUwTQ_.js.map} +0 -0
- /package/dist/components/{p-zZuAAiiI.js.map → p-bM3LH3kc.js.map} +0 -0
- /package/dist/components/{p-CK2S28gU.js.map → p-ji09W9el.js.map} +0 -0
- /package/dist/components/{p-DrjY8Mpy.js.map → p-neWTRxmf.js.map} +0 -0
- /package/dist/components/{p-CMq-jKEI.js.map → p-rYePOPbJ.js.map} +0 -0
- /package/dist/components/{p-CKo2nySr.js.map → p-tNQ0YulU.js.map} +0 -0
- /package/dist/components/{p-C8XJgV1n.js.map → p-x1wf38q3.js.map} +0 -0
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.36.0",
|
|
5
5
|
"kind": "components",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -2166,6 +2166,218 @@
|
|
|
2166
2166
|
"text"
|
|
2167
2167
|
]
|
|
2168
2168
|
},
|
|
2169
|
+
{
|
|
2170
|
+
"id": "component:ds-button-inverted",
|
|
2171
|
+
"tag": "ds-button-inverted",
|
|
2172
|
+
"name": "button-inverted",
|
|
2173
|
+
"title": "ButtonInverted",
|
|
2174
|
+
"summary": "Single-recipe filled command button with an inverted background and primary foreground for actions that must remain legible across ordinary surfaces.",
|
|
2175
|
+
"intentStatus": "complete",
|
|
2176
|
+
"intent": {
|
|
2177
|
+
"audience": "general",
|
|
2178
|
+
"status": "stable",
|
|
2179
|
+
"summary": "Single-recipe filled command button with an inverted background and primary foreground for actions that must remain legible across ordinary surfaces.",
|
|
2180
|
+
"useWhen": [
|
|
2181
|
+
"A command needs the filled button structure with the fixed inverted background treatment.",
|
|
2182
|
+
"The action should use primary foreground content on the inverted surface without exposing intent or contrast choices.",
|
|
2183
|
+
"A compact, icon-only inverted action needs an explicit accessible name.",
|
|
2184
|
+
"The command has closely related alternatives and needs split mode while keeping the same inverted recipe."
|
|
2185
|
+
],
|
|
2186
|
+
"avoidWhen": [
|
|
2187
|
+
"The action needs semantic intent or contrast-specific filled treatments; use ButtonFilled.",
|
|
2188
|
+
"The action is unfilled icon-only shell, navigation, overflow, or tool-rail chrome; use ButtonUnfilled.",
|
|
2189
|
+
"The element represents navigation rather than a command.",
|
|
2190
|
+
"The content is a persistent selected state rather than an action."
|
|
2191
|
+
],
|
|
2192
|
+
"alternatives": [
|
|
2193
|
+
{
|
|
2194
|
+
"when": "The action's consequence needs a semantic intent or the fill must adapt through contrast.",
|
|
2195
|
+
"component": "component:ds-button-filled",
|
|
2196
|
+
"reason": "ButtonFilled owns intent and contrast-aware filled command treatments."
|
|
2197
|
+
},
|
|
2198
|
+
{
|
|
2199
|
+
"when": "The action is shell, navigation, overflow, or tool-rail chrome.",
|
|
2200
|
+
"component": "component:ds-button-unfilled",
|
|
2201
|
+
"reason": "ButtonUnfilled owns unfilled chrome, active state, borders, and surface-aware interaction states."
|
|
2202
|
+
},
|
|
2203
|
+
{
|
|
2204
|
+
"when": "The user is choosing a destination in application navigation.",
|
|
2205
|
+
"component": "component:ds-panel-nav",
|
|
2206
|
+
"reason": "PanelNav owns destination selection and navigation semantics."
|
|
2207
|
+
}
|
|
2208
|
+
],
|
|
2209
|
+
"commonlyComposedWith": [
|
|
2210
|
+
"component:ds-modal",
|
|
2211
|
+
"component:ds-field",
|
|
2212
|
+
"component:ds-menu"
|
|
2213
|
+
],
|
|
2214
|
+
"patterns": [
|
|
2215
|
+
"pattern:menu-trigger"
|
|
2216
|
+
],
|
|
2217
|
+
"accessibility": [
|
|
2218
|
+
"Provide an explicit accessible name for icon-only buttons.",
|
|
2219
|
+
"In split mode, provide menuAriaLabel for the appended ChevronDown segment, pass controls with the Menu id, and synchronize expanded with the Menu open state.",
|
|
2220
|
+
"Set hasMenu when the action opens a Menu; it implies aria-haspopup of menu and renders the trailing chevron. Pass controls with the Menu id and expanded from the same open state given to Menu.",
|
|
2221
|
+
"Use haspopup directly for a non-menu popup such as a dialog; that case gets no chevron.",
|
|
2222
|
+
"Loading keeps the action focused and named, exposes busy and disabled state, and blocks activation.",
|
|
2223
|
+
"Use native submit behavior for form submission and handle the form submit event rather than submitting from the button click event."
|
|
2224
|
+
],
|
|
2225
|
+
"states": [
|
|
2226
|
+
"Every size applies one complete control-density recipe across frame height, inline padding, icon zone, text-container inset, gap, and radius.",
|
|
2227
|
+
"The inverted background and primary foreground are fixed; ButtonInverted has no intent, contrast, parent-surface, or optional-border props.",
|
|
2228
|
+
"Every button has a minimum inline size equal to its resolved height. Short labels therefore form a square control while longer labels continue to hug their content.",
|
|
2229
|
+
"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 and falls back to single at xs.",
|
|
2230
|
+
"Rounded changes only the control radius to the half-radius treatment; it does not change the inverted recipe, size, variant, or interaction semantics.",
|
|
2231
|
+
"Loading prevents duplicate activation without applying inactive opacity or removing the current keyboard focus.",
|
|
2232
|
+
"Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width.",
|
|
2233
|
+
"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.",
|
|
2234
|
+
"ButtonInverted has no active, pressed, or selected state; a filled action is a command, not a toggle or persistent selection.",
|
|
2235
|
+
"An open popup is a transient pressed state. While surfaceOpen is true the pressed wash is held for the popup's complete rendered lifecycle without introducing selected styling.",
|
|
2236
|
+
"Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick."
|
|
2237
|
+
],
|
|
2238
|
+
"responsiveBehavior": [
|
|
2239
|
+
"Use fill width only when the parent layout calls for a full-width action, commonly on narrow form layouts.",
|
|
2240
|
+
"Choose density from the containing layout so the inverted action matches neighboring controls."
|
|
2241
|
+
],
|
|
2242
|
+
"frameworkCaveats": {
|
|
2243
|
+
"customElements": [
|
|
2244
|
+
"For form submission, use the native submit type and listen to the form submit event; use dsClick for non-submit commands."
|
|
2245
|
+
],
|
|
2246
|
+
"react": [
|
|
2247
|
+
"Keep async state in the owner and pass it to the loading state until the command settles."
|
|
2248
|
+
],
|
|
2249
|
+
"angular": [
|
|
2250
|
+
"Keep async state in the owner and pass it to the loading state until the command settles."
|
|
2251
|
+
]
|
|
2252
|
+
},
|
|
2253
|
+
"references": [
|
|
2254
|
+
{
|
|
2255
|
+
"label": "Storybook examples",
|
|
2256
|
+
"path": "src/wc/components/ButtonInverted/ButtonInverted.stories.ts"
|
|
2257
|
+
},
|
|
2258
|
+
{
|
|
2259
|
+
"label": "Surface ownership and trigger state",
|
|
2260
|
+
"path": "src/docs/SurfaceOwnership.mdx"
|
|
2261
|
+
}
|
|
2262
|
+
]
|
|
2263
|
+
},
|
|
2264
|
+
"api": {
|
|
2265
|
+
"props": {
|
|
2266
|
+
"ariaLabel": {
|
|
2267
|
+
"type": "string | null",
|
|
2268
|
+
"required": false
|
|
2269
|
+
},
|
|
2270
|
+
"controls": {
|
|
2271
|
+
"type": "string | undefined",
|
|
2272
|
+
"required": false
|
|
2273
|
+
},
|
|
2274
|
+
"expanded": {
|
|
2275
|
+
"type": "boolean | undefined",
|
|
2276
|
+
"required": false
|
|
2277
|
+
},
|
|
2278
|
+
"hasMenu": {
|
|
2279
|
+
"type": "boolean",
|
|
2280
|
+
"required": false
|
|
2281
|
+
},
|
|
2282
|
+
"haspopup": {
|
|
2283
|
+
"type": "ButtonInvertedPopup | undefined",
|
|
2284
|
+
"required": false
|
|
2285
|
+
},
|
|
2286
|
+
"icon": {
|
|
2287
|
+
"type": "string",
|
|
2288
|
+
"required": false
|
|
2289
|
+
},
|
|
2290
|
+
"insetDepth": {
|
|
2291
|
+
"type": "ControlInsetDepth",
|
|
2292
|
+
"required": false
|
|
2293
|
+
},
|
|
2294
|
+
"isInactive": {
|
|
2295
|
+
"type": "boolean",
|
|
2296
|
+
"required": false
|
|
2297
|
+
},
|
|
2298
|
+
"isInset": {
|
|
2299
|
+
"type": "boolean",
|
|
2300
|
+
"required": false
|
|
2301
|
+
},
|
|
2302
|
+
"isLoading": {
|
|
2303
|
+
"type": "boolean",
|
|
2304
|
+
"required": false
|
|
2305
|
+
},
|
|
2306
|
+
"label": {
|
|
2307
|
+
"type": "string",
|
|
2308
|
+
"required": false
|
|
2309
|
+
},
|
|
2310
|
+
"labelEmphasis": {
|
|
2311
|
+
"type": "boolean",
|
|
2312
|
+
"required": false
|
|
2313
|
+
},
|
|
2314
|
+
"menuAriaLabel": {
|
|
2315
|
+
"type": "string",
|
|
2316
|
+
"required": false
|
|
2317
|
+
},
|
|
2318
|
+
"pressScale": {
|
|
2319
|
+
"type": "boolean",
|
|
2320
|
+
"required": false
|
|
2321
|
+
},
|
|
2322
|
+
"rounded": {
|
|
2323
|
+
"type": "boolean",
|
|
2324
|
+
"required": false
|
|
2325
|
+
},
|
|
2326
|
+
"size": {
|
|
2327
|
+
"type": "ButtonInvertedSize",
|
|
2328
|
+
"required": false
|
|
2329
|
+
},
|
|
2330
|
+
"split": {
|
|
2331
|
+
"type": "boolean",
|
|
2332
|
+
"required": false
|
|
2333
|
+
},
|
|
2334
|
+
"surfaceOpen": {
|
|
2335
|
+
"type": "boolean | undefined",
|
|
2336
|
+
"required": false
|
|
2337
|
+
},
|
|
2338
|
+
"type": {
|
|
2339
|
+
"type": "'button' | 'submit' | 'reset'",
|
|
2340
|
+
"required": false
|
|
2341
|
+
},
|
|
2342
|
+
"variant": {
|
|
2343
|
+
"type": "ButtonInvertedVariant",
|
|
2344
|
+
"required": false
|
|
2345
|
+
},
|
|
2346
|
+
"width": {
|
|
2347
|
+
"type": "ButtonInvertedWidth",
|
|
2348
|
+
"required": false
|
|
2349
|
+
}
|
|
2350
|
+
},
|
|
2351
|
+
"events": [
|
|
2352
|
+
{
|
|
2353
|
+
"name": "dsClick",
|
|
2354
|
+
"detail": "MouseEvent"
|
|
2355
|
+
},
|
|
2356
|
+
{
|
|
2357
|
+
"name": "dsMenuClick",
|
|
2358
|
+
"detail": "MouseEvent"
|
|
2359
|
+
}
|
|
2360
|
+
],
|
|
2361
|
+
"slots": []
|
|
2362
|
+
},
|
|
2363
|
+
"exports": {
|
|
2364
|
+
"customElement": "ds-button-inverted",
|
|
2365
|
+
"react": "DsButtonInverted",
|
|
2366
|
+
"vue": "DsButtonInverted",
|
|
2367
|
+
"angular": "DsButtonInverted"
|
|
2368
|
+
},
|
|
2369
|
+
"dependencies": [
|
|
2370
|
+
"@ds-mo/ui",
|
|
2371
|
+
"@ds-mo/tokens",
|
|
2372
|
+
"@ds-mo/icons"
|
|
2373
|
+
],
|
|
2374
|
+
"componentDependencies": [
|
|
2375
|
+
"badge",
|
|
2376
|
+
"icon",
|
|
2377
|
+
"loader",
|
|
2378
|
+
"text"
|
|
2379
|
+
]
|
|
2380
|
+
},
|
|
2169
2381
|
{
|
|
2170
2382
|
"id": "component:ds-button-unfilled",
|
|
2171
2383
|
"tag": "ds-button-unfilled",
|
|
@@ -2431,108 +2643,232 @@
|
|
|
2431
2643
|
]
|
|
2432
2644
|
},
|
|
2433
2645
|
{
|
|
2434
|
-
"id": "component:ds-
|
|
2435
|
-
"tag": "ds-
|
|
2436
|
-
"name": "
|
|
2437
|
-
"title": "
|
|
2438
|
-
"summary": "
|
|
2646
|
+
"id": "component:ds-calendar",
|
|
2647
|
+
"tag": "ds-calendar",
|
|
2648
|
+
"name": "calendar",
|
|
2649
|
+
"title": "Calendar",
|
|
2650
|
+
"summary": "Month calendar grid for choosing one calendar date or an inclusive date range, reused by form date fields and filter range selection.",
|
|
2439
2651
|
"intentStatus": "complete",
|
|
2440
2652
|
"intent": {
|
|
2441
2653
|
"audience": "general",
|
|
2442
2654
|
"status": "experimental",
|
|
2443
|
-
"summary": "
|
|
2655
|
+
"summary": "Month calendar grid for choosing one calendar date or an inclusive date range, reused by form date fields and filter range selection.",
|
|
2444
2656
|
"useWhen": [
|
|
2445
|
-
"
|
|
2446
|
-
"
|
|
2447
|
-
"
|
|
2657
|
+
"A user picks one calendar day from a month grid.",
|
|
2658
|
+
"A user builds an inclusive start and end date by choosing two days.",
|
|
2659
|
+
"A date field or filter needs the shared month navigation, weekday headings, and selected-day treatment."
|
|
2448
2660
|
],
|
|
2449
2661
|
"avoidWhen": [
|
|
2450
|
-
"The
|
|
2451
|
-
"The
|
|
2452
|
-
"The
|
|
2453
|
-
"Rows require descriptions, nested controls, menus, or selection state instead of one direct action."
|
|
2662
|
+
"The user types a date without opening a calendar; the owning field keeps that editable value.",
|
|
2663
|
+
"The user chooses a relative preset such as last 7 days rather than fixed calendar days.",
|
|
2664
|
+
"The popup also has to host filter categories, search, or apply actions; that surface stays with FilterMenu."
|
|
2454
2665
|
],
|
|
2455
2666
|
"alternatives": [
|
|
2456
2667
|
{
|
|
2457
|
-
"when": "The
|
|
2458
|
-
"component": "component:ds-
|
|
2459
|
-
"reason": "
|
|
2668
|
+
"when": "The date is a form field that can be typed or picked.",
|
|
2669
|
+
"component": "component:ds-input-date",
|
|
2670
|
+
"reason": "InputDate owns the editable field, form association, and the calendar popup."
|
|
2460
2671
|
},
|
|
2461
2672
|
{
|
|
2462
|
-
"when": "The
|
|
2463
|
-
"component": "component:ds-
|
|
2464
|
-
"reason": "
|
|
2673
|
+
"when": "The value is a clock time rather than a calendar date.",
|
|
2674
|
+
"component": "component:ds-time-picker",
|
|
2675
|
+
"reason": "TimePicker owns bounded hour, minute, and AM/PM lists with the same 32px tile geometry."
|
|
2676
|
+
},
|
|
2677
|
+
{
|
|
2678
|
+
"when": "The user chooses relative presets or mixed filter families from one trigger.",
|
|
2679
|
+
"component": "component:ds-filter-menu",
|
|
2680
|
+
"reason": "FilterMenu owns relative date presets and hosts this calendar only for fixed ranges."
|
|
2465
2681
|
}
|
|
2466
2682
|
],
|
|
2467
2683
|
"commonlyComposedWith": [
|
|
2468
|
-
"component:ds-
|
|
2684
|
+
"component:ds-input-date",
|
|
2685
|
+
"component:ds-filter-menu",
|
|
2686
|
+
"component:ds-button-unfilled",
|
|
2469
2687
|
"component:ds-text"
|
|
2470
2688
|
],
|
|
2471
2689
|
"accessibility": [
|
|
2472
|
-
"
|
|
2473
|
-
"
|
|
2474
|
-
"
|
|
2475
|
-
"
|
|
2476
|
-
"Keep item labels concise; a visible trailing value participates in the action's accessible name."
|
|
2690
|
+
"The month grid is labelled with the visible month and year. Days are grid cells with an accessible date name.",
|
|
2691
|
+
"The grid keeps one tab stop. Arrow keys move by day or week, Home and End move within the week, and Page Up or Page Down change month.",
|
|
2692
|
+
"In range mode, the first chosen day applies immediately as a one-day range. Hovering or focusing another day previews the inclusive span without changing the value until the second activation.",
|
|
2693
|
+
"Month navigation buttons are named Previous month and Next month. Inactive calendars disable day and month controls."
|
|
2477
2694
|
],
|
|
2478
2695
|
"states": [
|
|
2479
|
-
"
|
|
2480
|
-
"
|
|
2481
|
-
"
|
|
2696
|
+
"Single selection paints the current value with the shared interaction-fill selected wash and primary text. A committed range paints inclusive days with the faint brand fill and both edges boldly.",
|
|
2697
|
+
"Today uses emphasized primary text without becoming selected on its own.",
|
|
2698
|
+
"Days outside the visible month remain in the six-week grid and use tertiary text. Optional min and max dates disable days outside that inclusive bound.",
|
|
2699
|
+
"After the first range day is chosen, that day keeps the shared pressed overlay. Hovering or focusing toward another day paints the inclusive span with the shared hover overlay on top of the previous committed range, which stays visible until the replacement is completed. Completing the end day orders the two dates inclusively and replaces those overlays with brand fill."
|
|
2482
2700
|
],
|
|
2483
2701
|
"responsiveBehavior": [
|
|
2484
|
-
"The
|
|
2485
|
-
"Long labels wrap while trailing values remain visible; the page owns rail width and movement below primary content.",
|
|
2486
|
-
"Groups retain their order when the parent layout moves the complete card between desktop and mobile regions."
|
|
2702
|
+
"The grid fills the width supplied by its owner. Seven equal day columns and the shared 4px gaps are owned here; the owner supplies the popup or pane width."
|
|
2487
2703
|
],
|
|
2488
2704
|
"frameworkCaveats": {
|
|
2489
2705
|
"customElements": [
|
|
2490
|
-
"
|
|
2491
|
-
"Listen for dsAction and inspect sectionId, itemId, item, and the original pointer event."
|
|
2706
|
+
"Listen for dsChange. Single mode emits YYYY-MM-DD. Range mode emits range:start/end using the shared date-filter string."
|
|
2492
2707
|
],
|
|
2493
2708
|
"react": [
|
|
2494
|
-
"
|
|
2495
|
-
"Prevent the event only when replacing native navigation for an item with href."
|
|
2496
|
-
],
|
|
2497
|
-
"angular": [
|
|
2498
|
-
"Bind [sections] through the generated standalone adapter and inspect $event.detail from (dsAction).",
|
|
2499
|
-
"Keep product data and activation consequences in the Angular owner rather than embedding them in the component contract."
|
|
2709
|
+
"Use DsCalendar, bind value, and handle onDsChange."
|
|
2500
2710
|
]
|
|
2501
2711
|
},
|
|
2502
2712
|
"references": [
|
|
2503
2713
|
{
|
|
2504
|
-
"label": "Storybook
|
|
2505
|
-
"path": "src/wc/components/
|
|
2506
|
-
},
|
|
2507
|
-
{
|
|
2508
|
-
"label": "Rendered semantics, interaction, and geometry coverage",
|
|
2509
|
-
"path": "tests/e2e/card-action-center.spec.ts"
|
|
2714
|
+
"label": "Storybook examples",
|
|
2715
|
+
"path": "src/wc/components/Calendar/Calendar.stories.ts"
|
|
2510
2716
|
}
|
|
2511
2717
|
]
|
|
2512
2718
|
},
|
|
2513
2719
|
"api": {
|
|
2514
2720
|
"props": {
|
|
2515
|
-
"
|
|
2516
|
-
"type": "
|
|
2721
|
+
"autoFocus": {
|
|
2722
|
+
"type": "boolean",
|
|
2517
2723
|
"required": false
|
|
2518
2724
|
},
|
|
2519
|
-
"
|
|
2520
|
-
"type": "
|
|
2725
|
+
"isInactive": {
|
|
2726
|
+
"type": "boolean",
|
|
2727
|
+
"required": false
|
|
2728
|
+
},
|
|
2729
|
+
"max": {
|
|
2730
|
+
"type": "string | undefined",
|
|
2731
|
+
"required": false
|
|
2732
|
+
},
|
|
2733
|
+
"min": {
|
|
2734
|
+
"type": "string | undefined",
|
|
2735
|
+
"required": false
|
|
2736
|
+
},
|
|
2737
|
+
"selectionMode": {
|
|
2738
|
+
"type": "CalendarSelectionMode",
|
|
2739
|
+
"required": false
|
|
2740
|
+
},
|
|
2741
|
+
"value": {
|
|
2742
|
+
"type": "string",
|
|
2521
2743
|
"required": false
|
|
2522
2744
|
}
|
|
2523
2745
|
},
|
|
2524
2746
|
"events": [
|
|
2525
2747
|
{
|
|
2526
|
-
"name": "
|
|
2527
|
-
"detail": "
|
|
2748
|
+
"name": "dsChange",
|
|
2749
|
+
"detail": "string"
|
|
2528
2750
|
}
|
|
2529
2751
|
],
|
|
2530
2752
|
"slots": []
|
|
2531
2753
|
},
|
|
2532
2754
|
"exports": {
|
|
2533
|
-
"customElement": "ds-
|
|
2534
|
-
"react": "
|
|
2535
|
-
"vue": "
|
|
2755
|
+
"customElement": "ds-calendar",
|
|
2756
|
+
"react": "DsCalendar",
|
|
2757
|
+
"vue": "DsCalendar",
|
|
2758
|
+
"angular": "DsCalendar"
|
|
2759
|
+
},
|
|
2760
|
+
"dependencies": [
|
|
2761
|
+
"@ds-mo/ui",
|
|
2762
|
+
"@ds-mo/tokens"
|
|
2763
|
+
],
|
|
2764
|
+
"componentDependencies": [
|
|
2765
|
+
"button-unfilled",
|
|
2766
|
+
"text"
|
|
2767
|
+
]
|
|
2768
|
+
},
|
|
2769
|
+
{
|
|
2770
|
+
"id": "component:ds-card-action-center",
|
|
2771
|
+
"tag": "ds-card-action-center",
|
|
2772
|
+
"name": "card-action-center",
|
|
2773
|
+
"title": "CardActionCenter",
|
|
2774
|
+
"summary": "Compact bordered card that groups overview-page actions, optional values or status tags, and native destinations into named sections.",
|
|
2775
|
+
"intentStatus": "complete",
|
|
2776
|
+
"intent": {
|
|
2777
|
+
"audience": "general",
|
|
2778
|
+
"status": "experimental",
|
|
2779
|
+
"summary": "Compact bordered card that groups overview-page actions, optional values or status tags, and native destinations into named sections.",
|
|
2780
|
+
"useWhen": [
|
|
2781
|
+
"An overview rail needs a compact action center with multiple named groups.",
|
|
2782
|
+
"Action rows need optional counts or short values aligned at the trailing edge.",
|
|
2783
|
+
"Related reports or resource destinations belong beside attention items in one bounded surface."
|
|
2784
|
+
],
|
|
2785
|
+
"avoidWhen": [
|
|
2786
|
+
"The complete card leads to one destination; use CardNavigation.",
|
|
2787
|
+
"The surface edits settings in place; use CardSetting.",
|
|
2788
|
+
"The content is a chart, legend, metric visualization, or other data-visualization composition; use CardChart or CardOverview.",
|
|
2789
|
+
"Rows require descriptions, nested controls, menus, or selection state instead of one direct action."
|
|
2790
|
+
],
|
|
2791
|
+
"alternatives": [
|
|
2792
|
+
{
|
|
2793
|
+
"when": "The entire surface represents one destination.",
|
|
2794
|
+
"component": "component:ds-card-navigation",
|
|
2795
|
+
"reason": "CardNavigation provides the single native-link card contract."
|
|
2796
|
+
},
|
|
2797
|
+
{
|
|
2798
|
+
"when": "The card presents page-level score and metric summaries.",
|
|
2799
|
+
"component": "component:ds-card-overview",
|
|
2800
|
+
"reason": "CardOverview owns summary metrics, comparison periods, and selectable metric cells."
|
|
2801
|
+
}
|
|
2802
|
+
],
|
|
2803
|
+
"commonlyComposedWith": [
|
|
2804
|
+
"component:ds-tag",
|
|
2805
|
+
"component:ds-text"
|
|
2806
|
+
],
|
|
2807
|
+
"accessibility": [
|
|
2808
|
+
"Each non-empty group is a section labelled by an h2 heading, and each row is a native button or link.",
|
|
2809
|
+
"Use href for real destinations so link context menus, modified clicks, and native browser semantics remain available.",
|
|
2810
|
+
"Prevent the cancelable dsAction event only when an application router takes ownership of the same link activation.",
|
|
2811
|
+
"Inactive items become disabled buttons and are removed from keyboard navigation rather than exposing a false destination.",
|
|
2812
|
+
"Keep item labels concise; a visible trailing value participates in the action's accessible name."
|
|
2813
|
+
],
|
|
2814
|
+
"states": [
|
|
2815
|
+
"Rows expose distinct rest, hover, pressed, keyboard-focus, and inactive states.",
|
|
2816
|
+
"An empty sections array or groups with no items render the configured empty message.",
|
|
2817
|
+
"The application owns loading, error, permission, routing, and post-activation consequences and reflects availability through the supplied item data."
|
|
2818
|
+
],
|
|
2819
|
+
"responsiveBehavior": [
|
|
2820
|
+
"The card fills its parent width and never establishes a product breakpoint.",
|
|
2821
|
+
"Long labels wrap while trailing values remain visible; the page owns rail width and movement below primary content.",
|
|
2822
|
+
"Groups retain their order when the parent layout moves the complete card between desktop and mobile regions."
|
|
2823
|
+
],
|
|
2824
|
+
"frameworkCaveats": {
|
|
2825
|
+
"customElements": [
|
|
2826
|
+
"Assign sections as a JavaScript property; complex arrays are not supported as string attributes.",
|
|
2827
|
+
"Listen for dsAction and inspect sectionId, itemId, item, and the original pointer event."
|
|
2828
|
+
],
|
|
2829
|
+
"react": [
|
|
2830
|
+
"Pass sections as an array and handle onDsAction for product actions or client-side routing.",
|
|
2831
|
+
"Prevent the event only when replacing native navigation for an item with href."
|
|
2832
|
+
],
|
|
2833
|
+
"angular": [
|
|
2834
|
+
"Bind [sections] through the generated standalone adapter and inspect $event.detail from (dsAction).",
|
|
2835
|
+
"Keep product data and activation consequences in the Angular owner rather than embedding them in the component contract."
|
|
2836
|
+
]
|
|
2837
|
+
},
|
|
2838
|
+
"references": [
|
|
2839
|
+
{
|
|
2840
|
+
"label": "Storybook grouped, value, and empty examples",
|
|
2841
|
+
"path": "src/wc/components/CardActionCenter/CardActionCenter.stories.ts"
|
|
2842
|
+
},
|
|
2843
|
+
{
|
|
2844
|
+
"label": "Rendered semantics, interaction, and geometry coverage",
|
|
2845
|
+
"path": "tests/e2e/card-action-center.spec.ts"
|
|
2846
|
+
}
|
|
2847
|
+
]
|
|
2848
|
+
},
|
|
2849
|
+
"api": {
|
|
2850
|
+
"props": {
|
|
2851
|
+
"emptyMessage": {
|
|
2852
|
+
"type": "string",
|
|
2853
|
+
"required": false
|
|
2854
|
+
},
|
|
2855
|
+
"sections": {
|
|
2856
|
+
"type": "ReadonlyArray<CardActionCenterSection>",
|
|
2857
|
+
"required": false
|
|
2858
|
+
}
|
|
2859
|
+
},
|
|
2860
|
+
"events": [
|
|
2861
|
+
{
|
|
2862
|
+
"name": "dsAction",
|
|
2863
|
+
"detail": "CardActionCenterActionDetail"
|
|
2864
|
+
}
|
|
2865
|
+
],
|
|
2866
|
+
"slots": []
|
|
2867
|
+
},
|
|
2868
|
+
"exports": {
|
|
2869
|
+
"customElement": "ds-card-action-center",
|
|
2870
|
+
"react": "DsCardActionCenter",
|
|
2871
|
+
"vue": "DsCardActionCenter",
|
|
2536
2872
|
"angular": "DsCardActionCenter"
|
|
2537
2873
|
},
|
|
2538
2874
|
"dependencies": [
|
|
@@ -2706,10 +3042,12 @@
|
|
|
2706
3042
|
"The native link owns hover, pressed, and focus-visible states across the complete card in navigation-only mode.",
|
|
2707
3043
|
"In content mode, the native link owns those interaction states only across the header while the body remains application-owned.",
|
|
2708
3044
|
"An empty or unsafe href renders non-interactive card chrome without a false keyboard target.",
|
|
3045
|
+
"Copy is always stacked, so a missing description keeps the heading at the start of the column instead of centering it in the header.",
|
|
2709
3046
|
"The application owns destination loading, authorization, not-found, and recovery states after navigation."
|
|
2710
3047
|
],
|
|
2711
3048
|
"responsiveBehavior": [
|
|
2712
3049
|
"Choose sm, md, or lg from the parent layout; the surface never exceeds its parent width.",
|
|
3050
|
+
"The heading stays at the start of the stacked copy column whether or not supporting copy is present, so mixed destination lists keep titles aligned. The chevron stays vertically centered in the header.",
|
|
2713
3051
|
"Supporting copy wraps while the chevron remains visible at the trailing edge.",
|
|
2714
3052
|
"The parent owns wrapping, columns, stacking, and breakpoint changes between cards."
|
|
2715
3053
|
],
|
|
@@ -4331,14 +4669,15 @@
|
|
|
4331
4669
|
"tag": "ds-field",
|
|
4332
4670
|
"name": "field",
|
|
4333
4671
|
"title": "Field",
|
|
4334
|
-
"summary": "Accessible form-field composition that gives one Input, Textarea, or Select
|
|
4672
|
+
"summary": "Accessible form-field composition that gives one Input, InputDate, InputTime, Textarea, or Select an optional visible label, optional guidance, shared error presentation, stable IDs, and observable interaction state.",
|
|
4335
4673
|
"intentStatus": "complete",
|
|
4336
4674
|
"intent": {
|
|
4337
4675
|
"audience": "general",
|
|
4338
4676
|
"status": "stable",
|
|
4339
|
-
"summary": "Accessible form-field composition that gives one Input, Textarea, or Select
|
|
4677
|
+
"summary": "Accessible form-field composition that gives one Input, InputDate, InputTime, Textarea, or Select an optional visible label, optional guidance, shared error presentation, stable IDs, and observable interaction state.",
|
|
4340
4678
|
"useWhen": [
|
|
4341
|
-
"An Input, Textarea, or Select needs a persistent visible label in a form.",
|
|
4679
|
+
"An Input, InputDate, InputTime, Textarea, or Select needs a persistent visible label in a form.",
|
|
4680
|
+
"A nearby heading already names the field, and the control still needs Field's error association and message rhythm.",
|
|
4342
4681
|
"Help text or an error message must be programmatically associated with one control.",
|
|
4343
4682
|
"A form layout needs one consistent label-control-message rhythm."
|
|
4344
4683
|
],
|
|
@@ -4356,19 +4695,23 @@
|
|
|
4356
4695
|
],
|
|
4357
4696
|
"commonlyComposedWith": [
|
|
4358
4697
|
"component:ds-input",
|
|
4698
|
+
"component:ds-input-date",
|
|
4699
|
+
"component:ds-input-time",
|
|
4359
4700
|
"component:ds-textarea",
|
|
4360
4701
|
"component:ds-select",
|
|
4361
4702
|
"component:ds-text"
|
|
4362
4703
|
],
|
|
4363
4704
|
"accessibility": [
|
|
4364
|
-
"Slot exactly one form control. Field assigns its stable control ID and connects
|
|
4705
|
+
"Slot exactly one form control. When a visible label is provided, Field assigns its stable control ID and connects that label automatically.",
|
|
4706
|
+
"Omit the visible label when a nearby heading already names the field. Keep a programmatic name on the slotted control, such as aria-label, and do not set aria-labelledby to an empty value.",
|
|
4365
4707
|
"The visible description or error ID is merged with any authored aria-describedby references; a rendered error replaces the description.",
|
|
4366
4708
|
"The error prop forwards aria-invalid and supported design-system control error styling; put visible error text on Field, not again on the child control.",
|
|
4367
4709
|
"Clicking the label focuses the slotted design-system control without opening a Select popup.",
|
|
4368
4710
|
"Do not use placeholder text as the only label. Keep label text concise and put format or consequence guidance in description."
|
|
4369
4711
|
],
|
|
4370
4712
|
"states": [
|
|
4371
|
-
"
|
|
4713
|
+
"The visible label is optional. Omit it when a nearby heading already names the field; Field still associates description and error text with the slotted control.",
|
|
4714
|
+
"Label, control, description, and error content follow the shared 4px vertical field flow without changing the slotted control's width or semantics. When the slotted control is borderless, description and error copy inset to that control's text origin instead of the resting bordered edge.",
|
|
4372
4715
|
"Field exposes data-focused, data-filled, data-dirty, data-touched, data-invalid, data-disabled, and data-required hooks while the slotted control remains the source of value and interaction behavior.",
|
|
4373
4716
|
"A rendered error replaces the description; preserve essential guidance in the error message so users retain what they need to correct the field.",
|
|
4374
4717
|
"Field owns validation presentation but not validation timing; the form decides when to set error and errorMessage.",
|
|
@@ -4384,7 +4727,7 @@
|
|
|
4384
4727
|
"Assign child component values and option arrays through their normal JavaScript properties."
|
|
4385
4728
|
],
|
|
4386
4729
|
"react": [
|
|
4387
|
-
"Compose one DsInput, DsTextarea, or DsSelect child and control validation timing in the form owner."
|
|
4730
|
+
"Compose one DsInput, DsInputDate, DsInputTime, DsTextarea, or DsSelect child and control validation timing in the form owner."
|
|
4388
4731
|
],
|
|
4389
4732
|
"angular": [
|
|
4390
4733
|
"Compose the generated Field adapter around the control adapter and its matching Angular value accessor."
|
|
@@ -4421,7 +4764,7 @@
|
|
|
4421
4764
|
},
|
|
4422
4765
|
"label": {
|
|
4423
4766
|
"type": "string",
|
|
4424
|
-
"required":
|
|
4767
|
+
"required": false
|
|
4425
4768
|
}
|
|
4426
4769
|
},
|
|
4427
4770
|
"events": [],
|
|
@@ -4476,14 +4819,15 @@
|
|
|
4476
4819
|
"commonlyComposedWith": [
|
|
4477
4820
|
"component:ds-select",
|
|
4478
4821
|
"component:ds-table",
|
|
4479
|
-
"component:ds-checkbox"
|
|
4822
|
+
"component:ds-checkbox",
|
|
4823
|
+
"component:ds-calendar"
|
|
4480
4824
|
],
|
|
4481
4825
|
"accessibility": [
|
|
4482
4826
|
"The built-in select trigger exposes combobox semantics with a dialog popup, synchronizes expanded state, holds the pressed interaction wash without changing resting foreground while open, and restores focus after dismissal.",
|
|
4483
4827
|
"The category pane is a vertical tab list. Arrow Up and Arrow Down wrap, Home and End jump, Arrow Right enters the option pane, and Arrow Left returns to the active category.",
|
|
4484
4828
|
"Every non-date category begins with a labelled search field. Arrow Down and Arrow Up enter the first or last visible option, while Left and Right retain native text-caret behavior. Search matches option labels and descriptions without changing selected values.",
|
|
4485
4829
|
"Escape and outside activation close the popup and restore trigger focus. Tab moves through option controls and closes only when it leaves the popup boundary.",
|
|
4486
|
-
"Date filters expose containerless Range and Relative tabs in a secondary-background header with 4px padding around the 32px medium control. Relative presets use listbox semantics
|
|
4830
|
+
"Date filters expose containerless Range and Relative tabs in a secondary-background header with 4px padding around the 32px medium control. Relative presets use listbox semantics. Range selection hosts Calendar, which owns the labelled month grid, one tab stop, arrow-key day navigation, Home and End week navigation, and Page Up or Page Down month navigation. After a range start is chosen, pointer hover and keyboard focus preview the possible inclusive range without changing selection semantics.",
|
|
4487
4831
|
"When an external trigger is inside an open shadow tree, pass its HTMLElement through anchor so outside activation, focus return, and Tab continuation use the composed tree.",
|
|
4488
4832
|
"The trigger count reports active filter categories. Multiple-choice category tags report individual selected criteria, while an applied Date category uses a visual dot because its value is singular. The default summary footer announces the total; the categories-clear footer recipe reserves a visually empty category-pane action row and exposes its divider and only Clear when criteria are active."
|
|
4489
4833
|
],
|
|
@@ -4498,7 +4842,10 @@
|
|
|
4498
4842
|
"Selection applies immediately and does not close the popup.",
|
|
4499
4843
|
"Changing category replaces the option-pane subtree so checkbox and other option visuals mount in their new state instead of transitioning from the previous category's row state.",
|
|
4500
4844
|
"The trigger reports how many filter categories have selections. footerLayout=summary adds a full-width selected-count footer only while values are selected; footerLayout=categories-clear always reserves the category-pane footer height while keeping its inactive divider hidden, then reveals the divider and only its left-aligned Clear action while values are selected.",
|
|
4501
|
-
"The built-in trigger derives the shared surface-open wash from the rendered popup lifecycle, including closing. For an external trigger, the application owns that relationship and retains the wash until dsAfterClose; selected filter values remain independent."
|
|
4845
|
+
"The built-in trigger derives the shared surface-open wash from the rendered popup lifecycle, including closing. For an external trigger, the application owns that relationship and retains the wash until dsAfterClose; selected filter values remain independent.",
|
|
4846
|
+
"Embedded mode renders the same controlled content inside a parent-owned surface; the parent owns positioning, initial focus, Escape, Tab exit, and dismissal.",
|
|
4847
|
+
"Apply-required filtering stages edits locally, including match mode. Clear immediately emits dsClear and discards pending edits. The footer appears when filters are selected or applied; Apply stays in place and inactive without pending changes; applying emits controlled changes. Closing discards unapplied edits.",
|
|
4848
|
+
"Vertical presentation renders initially expanded, independently collapsible filter categories and emits edits immediately to its controlled owner. The owning panel supplies the draft and action footer."
|
|
4502
4849
|
],
|
|
4503
4850
|
"responsiveBehavior": [
|
|
4504
4851
|
"The popup defaults to the large menu-width token and clamps to the nearest data-ds-overlay-boundary rectangle or the viewport fallback.",
|
|
@@ -4554,6 +4901,10 @@
|
|
|
4554
4901
|
"type": "string | undefined",
|
|
4555
4902
|
"required": false
|
|
4556
4903
|
},
|
|
4904
|
+
"applyRequired": {
|
|
4905
|
+
"type": "boolean",
|
|
4906
|
+
"required": false
|
|
4907
|
+
},
|
|
4557
4908
|
"ariaLabel": {
|
|
4558
4909
|
"type": "string | null",
|
|
4559
4910
|
"required": false
|
|
@@ -4574,6 +4925,10 @@
|
|
|
4574
4925
|
"type": "boolean",
|
|
4575
4926
|
"required": false
|
|
4576
4927
|
},
|
|
4928
|
+
"embedded": {
|
|
4929
|
+
"type": "boolean",
|
|
4930
|
+
"required": false
|
|
4931
|
+
},
|
|
4577
4932
|
"filters": {
|
|
4578
4933
|
"type": "FilterMenuFilter[]",
|
|
4579
4934
|
"required": false
|
|
@@ -4610,6 +4965,10 @@
|
|
|
4610
4965
|
"type": "string",
|
|
4611
4966
|
"required": false
|
|
4612
4967
|
},
|
|
4968
|
+
"neutralTrigger": {
|
|
4969
|
+
"type": "boolean",
|
|
4970
|
+
"required": false
|
|
4971
|
+
},
|
|
4613
4972
|
"noResultsText": {
|
|
4614
4973
|
"type": "string",
|
|
4615
4974
|
"required": false
|
|
@@ -4622,6 +4981,10 @@
|
|
|
4622
4981
|
"type": "string",
|
|
4623
4982
|
"required": false
|
|
4624
4983
|
},
|
|
4984
|
+
"showIndicator": {
|
|
4985
|
+
"type": "boolean",
|
|
4986
|
+
"required": false
|
|
4987
|
+
},
|
|
4625
4988
|
"showSelectedCount": {
|
|
4626
4989
|
"type": "boolean",
|
|
4627
4990
|
"required": false
|
|
@@ -4646,6 +5009,10 @@
|
|
|
4646
5009
|
"type": "FilterMenuValues",
|
|
4647
5010
|
"required": false
|
|
4648
5011
|
},
|
|
5012
|
+
"vertical": {
|
|
5013
|
+
"type": "boolean",
|
|
5014
|
+
"required": false
|
|
5015
|
+
},
|
|
4649
5016
|
"width": {
|
|
4650
5017
|
"type": "FilterMenuWidth",
|
|
4651
5018
|
"required": false
|
|
@@ -4696,7 +5063,7 @@
|
|
|
4696
5063
|
],
|
|
4697
5064
|
"componentDependencies": [
|
|
4698
5065
|
"badge",
|
|
4699
|
-
"
|
|
5066
|
+
"calendar",
|
|
4700
5067
|
"checkbox",
|
|
4701
5068
|
"empty-state",
|
|
4702
5069
|
"icon",
|
|
@@ -4774,151 +5141,641 @@
|
|
|
4774
5141
|
],
|
|
4775
5142
|
"frameworkCaveats": {
|
|
4776
5143
|
"customElements": [
|
|
4777
|
-
"Import each canonical glyph as an SVG string and call registerIcons before first render when synchronous critical-icon paint is required."
|
|
5144
|
+
"Import each canonical glyph as an SVG string and call registerIcons before first render when synchronous critical-icon paint is required."
|
|
5145
|
+
],
|
|
5146
|
+
"react": [
|
|
5147
|
+
"Keep nested control icons decorative and place the accessible name on the owning React control."
|
|
5148
|
+
],
|
|
5149
|
+
"angular": [
|
|
5150
|
+
"Keep nested control icons decorative and place the accessible name on the owning Angular control."
|
|
5151
|
+
]
|
|
5152
|
+
},
|
|
5153
|
+
"references": [
|
|
5154
|
+
{
|
|
5155
|
+
"label": "Storybook examples",
|
|
5156
|
+
"path": "src/wc/components/Icon/Icon.stories.ts"
|
|
5157
|
+
},
|
|
5158
|
+
{
|
|
5159
|
+
"label": "Preload API guidance",
|
|
5160
|
+
"path": "src/wc/components/Icon/icon-cache.ts"
|
|
5161
|
+
}
|
|
5162
|
+
]
|
|
5163
|
+
},
|
|
5164
|
+
"api": {
|
|
5165
|
+
"props": {
|
|
5166
|
+
"color": {
|
|
5167
|
+
"type": "IconColor",
|
|
5168
|
+
"required": false
|
|
5169
|
+
},
|
|
5170
|
+
"label": {
|
|
5171
|
+
"type": "string | undefined",
|
|
5172
|
+
"required": false
|
|
5173
|
+
},
|
|
5174
|
+
"name": {
|
|
5175
|
+
"type": "string",
|
|
5176
|
+
"required": false
|
|
5177
|
+
},
|
|
5178
|
+
"size": {
|
|
5179
|
+
"type": "IconSize",
|
|
5180
|
+
"required": false
|
|
5181
|
+
}
|
|
5182
|
+
},
|
|
5183
|
+
"events": [],
|
|
5184
|
+
"slots": []
|
|
5185
|
+
},
|
|
5186
|
+
"exports": {
|
|
5187
|
+
"customElement": "ds-icon",
|
|
5188
|
+
"react": "DsIcon",
|
|
5189
|
+
"vue": "DsIcon",
|
|
5190
|
+
"angular": "DsIcon"
|
|
5191
|
+
},
|
|
5192
|
+
"dependencies": [
|
|
5193
|
+
"@ds-mo/ui",
|
|
5194
|
+
"@ds-mo/tokens",
|
|
5195
|
+
"@ds-mo/icons"
|
|
5196
|
+
],
|
|
5197
|
+
"componentDependencies": []
|
|
5198
|
+
},
|
|
5199
|
+
{
|
|
5200
|
+
"id": "component:ds-input",
|
|
5201
|
+
"tag": "ds-input",
|
|
5202
|
+
"name": "input",
|
|
5203
|
+
"title": "Input",
|
|
5204
|
+
"summary": "Form-associated single-line text and number field for primary and secondary application backgrounds, with native input behavior, four control densities, optional leading and trailing content, search clearing, and validation.",
|
|
5205
|
+
"intentStatus": "complete",
|
|
5206
|
+
"intent": {
|
|
5207
|
+
"audience": "general",
|
|
5208
|
+
"status": "stable",
|
|
5209
|
+
"summary": "Form-associated single-line text and number field for primary and secondary application backgrounds, with native input behavior, four control densities, optional leading and trailing content, search clearing, and validation.",
|
|
5210
|
+
"useWhen": [
|
|
5211
|
+
"A user must enter or edit one line of text, an email address, telephone number, URL, search query, password, or exact number.",
|
|
5212
|
+
"The value must participate in native, Angular, React, or Vue form state.",
|
|
5213
|
+
"A compact filter or toolbar needs a single-line search field that follows the shared control-density recipe."
|
|
5214
|
+
],
|
|
5215
|
+
"avoidWhen": [
|
|
5216
|
+
"The user chooses from a finite set of known values.",
|
|
5217
|
+
"The user must enter multiple paragraphs or formatted content.",
|
|
5218
|
+
"The value is adjusted primarily by dragging within a numeric range.",
|
|
5219
|
+
"The value is a calendar date or a clock time."
|
|
5220
|
+
],
|
|
5221
|
+
"alternatives": [
|
|
5222
|
+
{
|
|
5223
|
+
"when": "The value comes from a finite set of known choices.",
|
|
5224
|
+
"component": "component:ds-select",
|
|
5225
|
+
"reason": "Select exposes the available values and owns listbox selection behavior."
|
|
5226
|
+
},
|
|
5227
|
+
{
|
|
5228
|
+
"when": "The value is a calendar date.",
|
|
5229
|
+
"component": "component:ds-input-date",
|
|
5230
|
+
"reason": "InputDate owns calendar date form values, shared Input density, and the Calendar picker."
|
|
5231
|
+
},
|
|
5232
|
+
{
|
|
5233
|
+
"when": "The value is a clock time.",
|
|
5234
|
+
"component": "component:ds-input-time",
|
|
5235
|
+
"reason": "InputTime owns clock time form values, shared Input density, and the TimePicker."
|
|
5236
|
+
},
|
|
5237
|
+
{
|
|
5238
|
+
"when": "The value is an immediate on/off setting.",
|
|
5239
|
+
"component": "component:ds-switch",
|
|
5240
|
+
"reason": "Switch communicates a binary setting instead of free text entry."
|
|
5241
|
+
},
|
|
5242
|
+
{
|
|
5243
|
+
"when": "The value is chosen from a bounded numeric range.",
|
|
5244
|
+
"component": "component:ds-slider",
|
|
5245
|
+
"reason": "Slider supports direct range adjustment and communicates the current position."
|
|
5246
|
+
}
|
|
5247
|
+
],
|
|
5248
|
+
"commonlyComposedWith": [
|
|
5249
|
+
"component:ds-field",
|
|
5250
|
+
"component:ds-icon",
|
|
5251
|
+
"component:ds-text",
|
|
5252
|
+
"component:ds-select"
|
|
5253
|
+
],
|
|
5254
|
+
"accessibility": [
|
|
5255
|
+
"Provide a persistent visible label through the owning field or an external native label; placeholder text is guidance and must not be the field's only label.",
|
|
5256
|
+
"Choose the native input type that matches the value so browsers and assistive technology can provide appropriate semantics and keyboards.",
|
|
5257
|
+
"Error text is associated with the native input and announced as an alert when the invalid state is rendered.",
|
|
5258
|
+
"Read-only fields remain focusable and submittable while preventing edits; inactive or disabled fields leave the tab order and are omitted from form submission.",
|
|
5259
|
+
"Password fields keep a named show-or-hide action beside the value. Revealing the value changes only the native input type; the submitted string does not change. The action restores focus to the field after activation.",
|
|
5260
|
+
"Number stepper actions are pointer affordances hidden from the accessibility tree; the native spinbutton remains the single keyboard and assistive-technology control.",
|
|
5261
|
+
"Prefix and suffix content must not carry information that is otherwise absent from the field's visible label, value, or description.",
|
|
5262
|
+
"A nested prefix or suffix Select is a separate control from the editable value and must have its own accessible name."
|
|
5263
|
+
],
|
|
5264
|
+
"states": [
|
|
5265
|
+
"Every size applies one complete control-density recipe across frame height, inline padding, icon zones, text-container inset, gap, and radius; supporting error content follows the shared 4px field flow.",
|
|
5266
|
+
"The normal field boundary uses the shared secondary inset border. Focus promotes it to the thicker bold-brand inset stroke, while error uses the thicker bold-negative inset stroke without changing geometry. Set hasBorder to false only in chrome that supplies enough surrounding structure; supporting error copy then insets to the field's text origin rather than the resting border box. Set hasInteractionFill to false when that containing chrome also owns hover and pressed feedback.",
|
|
5267
|
+
"Placeholder text is secondary at rest and quaternary while the editable field is focused because it becomes decorative once typing begins. Single-line placeholder and entered value text truncate with an ellipsis when the field is narrower than its content.",
|
|
5268
|
+
"Entered values use the parent surface's primary foreground; prefix icons, prefix text, suffix content, and resting placeholder text use its secondary foreground.",
|
|
5269
|
+
"Search fields show a standard borderless CrossCircle icon action only while they contain a value. Clearing emits the empty value and restores focus to the native field.",
|
|
5270
|
+
"Password fields show a standard inset Eye action at the field's density. EyeDisabled replaces it while the value is visible. The action stays available on read-only fields and is inactive with the field.",
|
|
5271
|
+
"Search fields disable browser autocomplete history, automatic capitalization, autocorrection, and spellchecking by default so browser-owned suggestions do not compete with product-owned results. Consumers can explicitly provide autoComplete when a different native history behavior is required.",
|
|
5272
|
+
"Search fields used with owned result sets forward aria-controls and aria-activedescendant to the native field so keyboard focus can remain in the query while assistive technology tracks the active result.",
|
|
5273
|
+
"The prefix and suffix slots host compact leading or trailing units such as a currency code, or a nested same-size inset Select. Text adornments use the control's balanced text inset. Nested Selects match the field density, set isInset, hasBorder false, width hug, and indicator up-down, keep a selected value, set allowClear false so the menu has no clear footer, set neutralTrigger so the selected unit stays on the secondary adornment foreground, and do not carry the field's error message. Configurable prefix and suffix controls are separated from the editable value by a vertical divider at the density icon height. The nested inset keeps its 2px remainder toward the line; the editable value keeps the same inline padding from the line as a non-prefixed field keeps from its border. The optional leading icon is decorative and does not replace the field label. Password, search-clear, and date or time actions stay type-owned trailing buttons rather than suffix-slot content.",
|
|
5274
|
+
"Use autoComplete, inputMode, and enterKeyHint to provide browser and virtual-keyboard hints without changing the value's semantic type.",
|
|
5275
|
+
"Number fields preserve native spinbutton semantics, keyboard stepping, and min/max constraint behavior while dsChange continues to report the native string value. Two borderless inset chevron actions split the available inner height, disable independently at their numeric bound, and restore focus to the spinbutton after pointer activation.",
|
|
5276
|
+
"textAlign positions the editable value while the numeric stepper stays on the opposite inline edge, keeping the actions clear of the number: start-aligned values use an inline-end stepper and end-aligned values use an inline-start stepper.",
|
|
5277
|
+
"The host exposes focused, filled, dirty, touched, invalid, disabled, read-only, and required data attributes for Field integration and diagnostics.",
|
|
5278
|
+
"Use Input only on primary or secondary application backgrounds. It intentionally does not expose alternate surface contexts."
|
|
5279
|
+
],
|
|
5280
|
+
"responsiveBehavior": [
|
|
5281
|
+
"Form fields normally fill their parent; use hug width only in a compact toolbar or filter layout with an explicit width constraint.",
|
|
5282
|
+
"Choose density from the containing layout: md for ordinary forms, lg for a touch-primary layout, and sm or xs only where surrounding controls use the same compact recipe.",
|
|
5283
|
+
"The owner supplies layout constraints and decides when a compact field moves to its own row."
|
|
5284
|
+
],
|
|
5285
|
+
"frameworkCaveats": {
|
|
5286
|
+
"customElements": [
|
|
5287
|
+
"Listen for dsChange for user edits and dsClear for the search clear action.",
|
|
5288
|
+
"Use the form attribute on the host when associating an input rendered outside its owning form."
|
|
5289
|
+
],
|
|
5290
|
+
"react": [
|
|
5291
|
+
"Use DsInput, bind value for controlled application state, and handle onDsChange and onDsClear."
|
|
5292
|
+
],
|
|
5293
|
+
"vue": [
|
|
5294
|
+
"Use DsInput with v-model for the value, and listen for dsChange and dsClear."
|
|
5295
|
+
],
|
|
5296
|
+
"angular": [
|
|
5297
|
+
"Import DsInput with TextValueAccessor when integrating with Angular Forms."
|
|
5298
|
+
]
|
|
5299
|
+
},
|
|
5300
|
+
"references": [
|
|
5301
|
+
{
|
|
5302
|
+
"label": "Storybook examples",
|
|
5303
|
+
"path": "src/wc/components/Input/Input.stories.ts"
|
|
5304
|
+
},
|
|
5305
|
+
{
|
|
5306
|
+
"label": "Cross-browser form and accessibility coverage",
|
|
5307
|
+
"path": "tests/e2e/forms.spec.ts"
|
|
5308
|
+
}
|
|
5309
|
+
]
|
|
5310
|
+
},
|
|
5311
|
+
"api": {
|
|
5312
|
+
"props": {
|
|
5313
|
+
"ariaActiveDescendant": {
|
|
5314
|
+
"type": "string | undefined",
|
|
5315
|
+
"required": false
|
|
5316
|
+
},
|
|
5317
|
+
"ariaControls": {
|
|
5318
|
+
"type": "string | undefined",
|
|
5319
|
+
"required": false
|
|
5320
|
+
},
|
|
5321
|
+
"ariaDescribedby": {
|
|
5322
|
+
"type": "string | undefined",
|
|
5323
|
+
"required": false
|
|
5324
|
+
},
|
|
5325
|
+
"ariaLabel": {
|
|
5326
|
+
"type": "string | null",
|
|
5327
|
+
"required": false
|
|
5328
|
+
},
|
|
5329
|
+
"ariaLabelledby": {
|
|
5330
|
+
"type": "string | undefined",
|
|
5331
|
+
"required": false
|
|
5332
|
+
},
|
|
5333
|
+
"autoComplete": {
|
|
5334
|
+
"type": "string | undefined",
|
|
5335
|
+
"required": false
|
|
5336
|
+
},
|
|
5337
|
+
"autoFocus": {
|
|
5338
|
+
"type": "boolean",
|
|
5339
|
+
"required": false
|
|
5340
|
+
},
|
|
5341
|
+
"clearLabel": {
|
|
5342
|
+
"type": "string",
|
|
5343
|
+
"required": false
|
|
5344
|
+
},
|
|
5345
|
+
"disabled": {
|
|
5346
|
+
"type": "boolean",
|
|
5347
|
+
"required": false
|
|
5348
|
+
},
|
|
5349
|
+
"enterKeyHint": {
|
|
5350
|
+
"type": "string",
|
|
5351
|
+
"required": false
|
|
5352
|
+
},
|
|
5353
|
+
"error": {
|
|
5354
|
+
"type": "boolean",
|
|
5355
|
+
"required": false
|
|
5356
|
+
},
|
|
5357
|
+
"errorMessage": {
|
|
5358
|
+
"type": "string | undefined",
|
|
5359
|
+
"required": false
|
|
5360
|
+
},
|
|
5361
|
+
"form": {
|
|
5362
|
+
"type": "string | undefined",
|
|
5363
|
+
"required": false
|
|
5364
|
+
},
|
|
5365
|
+
"hasBorder": {
|
|
5366
|
+
"type": "boolean",
|
|
5367
|
+
"required": false
|
|
5368
|
+
},
|
|
5369
|
+
"hasInteractionFill": {
|
|
5370
|
+
"type": "boolean",
|
|
5371
|
+
"required": false
|
|
5372
|
+
},
|
|
5373
|
+
"hidePasswordLabel": {
|
|
5374
|
+
"type": "string",
|
|
5375
|
+
"required": false
|
|
5376
|
+
},
|
|
5377
|
+
"icon": {
|
|
5378
|
+
"type": "string | undefined",
|
|
5379
|
+
"required": false
|
|
5380
|
+
},
|
|
5381
|
+
"inputId": {
|
|
5382
|
+
"type": "string | undefined",
|
|
5383
|
+
"required": false
|
|
5384
|
+
},
|
|
5385
|
+
"inputMode": {
|
|
5386
|
+
"type": "string",
|
|
5387
|
+
"required": false
|
|
5388
|
+
},
|
|
5389
|
+
"isInactive": {
|
|
5390
|
+
"type": "boolean",
|
|
5391
|
+
"required": false
|
|
5392
|
+
},
|
|
5393
|
+
"max": {
|
|
5394
|
+
"type": "number | undefined",
|
|
5395
|
+
"required": false
|
|
5396
|
+
},
|
|
5397
|
+
"min": {
|
|
5398
|
+
"type": "number | undefined",
|
|
5399
|
+
"required": false
|
|
5400
|
+
},
|
|
5401
|
+
"name": {
|
|
5402
|
+
"type": "string | undefined",
|
|
5403
|
+
"required": false
|
|
5404
|
+
},
|
|
5405
|
+
"placeholder": {
|
|
5406
|
+
"type": "string | undefined",
|
|
5407
|
+
"required": false
|
|
5408
|
+
},
|
|
5409
|
+
"readOnly": {
|
|
5410
|
+
"type": "boolean",
|
|
5411
|
+
"required": false
|
|
5412
|
+
},
|
|
5413
|
+
"required": {
|
|
5414
|
+
"type": "boolean",
|
|
5415
|
+
"required": false
|
|
5416
|
+
},
|
|
5417
|
+
"requiredMessage": {
|
|
5418
|
+
"type": "string",
|
|
5419
|
+
"required": false
|
|
5420
|
+
},
|
|
5421
|
+
"showPasswordLabel": {
|
|
5422
|
+
"type": "string",
|
|
5423
|
+
"required": false
|
|
5424
|
+
},
|
|
5425
|
+
"size": {
|
|
5426
|
+
"type": "InputSize",
|
|
5427
|
+
"required": false
|
|
5428
|
+
},
|
|
5429
|
+
"step": {
|
|
5430
|
+
"type": "number | undefined",
|
|
5431
|
+
"required": false
|
|
5432
|
+
},
|
|
5433
|
+
"textAlign": {
|
|
5434
|
+
"type": "InputTextAlign",
|
|
5435
|
+
"required": false
|
|
5436
|
+
},
|
|
5437
|
+
"type": {
|
|
5438
|
+
"type": "InputType",
|
|
5439
|
+
"required": false
|
|
5440
|
+
},
|
|
5441
|
+
"value": {
|
|
5442
|
+
"type": "string",
|
|
5443
|
+
"required": false
|
|
5444
|
+
},
|
|
5445
|
+
"width": {
|
|
5446
|
+
"type": "InputWidth",
|
|
5447
|
+
"required": false
|
|
5448
|
+
}
|
|
5449
|
+
},
|
|
5450
|
+
"events": [
|
|
5451
|
+
{
|
|
5452
|
+
"name": "dsChange",
|
|
5453
|
+
"detail": "string"
|
|
5454
|
+
},
|
|
5455
|
+
{
|
|
5456
|
+
"name": "dsClear",
|
|
5457
|
+
"detail": "void"
|
|
5458
|
+
}
|
|
5459
|
+
],
|
|
5460
|
+
"slots": []
|
|
5461
|
+
},
|
|
5462
|
+
"exports": {
|
|
5463
|
+
"customElement": "ds-input",
|
|
5464
|
+
"react": "DsInput",
|
|
5465
|
+
"vue": "DsInput",
|
|
5466
|
+
"angular": "DsInput"
|
|
5467
|
+
},
|
|
5468
|
+
"dependencies": [
|
|
5469
|
+
"@ds-mo/ui",
|
|
5470
|
+
"@ds-mo/tokens",
|
|
5471
|
+
"@ds-mo/icons"
|
|
5472
|
+
],
|
|
5473
|
+
"componentDependencies": [
|
|
5474
|
+
"button-unfilled",
|
|
5475
|
+
"divider",
|
|
5476
|
+
"icon",
|
|
5477
|
+
"text"
|
|
5478
|
+
]
|
|
5479
|
+
},
|
|
5480
|
+
{
|
|
5481
|
+
"id": "component:ds-input-date",
|
|
5482
|
+
"tag": "ds-input-date",
|
|
5483
|
+
"name": "input-date",
|
|
5484
|
+
"title": "InputDate",
|
|
5485
|
+
"summary": "Form-associated calendar date field that reuses Input density, focus, validation, and field composition, with a typeable value and a Calendar picker.",
|
|
5486
|
+
"intentStatus": "complete",
|
|
5487
|
+
"intent": {
|
|
5488
|
+
"audience": "general",
|
|
5489
|
+
"status": "experimental",
|
|
5490
|
+
"summary": "Form-associated calendar date field that reuses Input density, focus, validation, and field composition, with a typeable value and a Calendar picker.",
|
|
5491
|
+
"useWhen": [
|
|
5492
|
+
"A user must enter or edit a calendar date as an ISO date string.",
|
|
5493
|
+
"The date must participate in native, Angular, React, or Vue form state.",
|
|
5494
|
+
"The control should match Input geometry, typography, and field composition rather than a one-off native date input."
|
|
5495
|
+
],
|
|
5496
|
+
"avoidWhen": [
|
|
5497
|
+
"The value is freeform text, a number, or a search query.",
|
|
5498
|
+
"The value is a clock time without a calendar date.",
|
|
5499
|
+
"The user chooses a predefined relative range such as last 7 days."
|
|
5500
|
+
],
|
|
5501
|
+
"alternatives": [
|
|
5502
|
+
{
|
|
5503
|
+
"when": "The value is one line of text, email, search, or an exact number.",
|
|
5504
|
+
"component": "component:ds-input",
|
|
5505
|
+
"reason": "Input owns those native types, adornments, search clearing, and numeric stepping."
|
|
5506
|
+
},
|
|
5507
|
+
{
|
|
5508
|
+
"when": "The value is a clock time.",
|
|
5509
|
+
"component": "component:ds-input-time",
|
|
5510
|
+
"reason": "InputTime owns clock time form values and the TimePicker."
|
|
5511
|
+
},
|
|
5512
|
+
{
|
|
5513
|
+
"when": "The user chooses a relative or bounded date range from presets.",
|
|
5514
|
+
"component": "component:ds-filter-menu",
|
|
5515
|
+
"reason": "FilterMenu owns relative date presets and range selection rather than a single calendar date."
|
|
5516
|
+
},
|
|
5517
|
+
{
|
|
5518
|
+
"when": "The month grid is needed without a form field.",
|
|
5519
|
+
"component": "component:ds-calendar",
|
|
5520
|
+
"reason": "Calendar owns the shared month grid and can select a single date or a range."
|
|
5521
|
+
}
|
|
5522
|
+
],
|
|
5523
|
+
"commonlyComposedWith": [
|
|
5524
|
+
"component:ds-field",
|
|
5525
|
+
"component:ds-calendar",
|
|
5526
|
+
"component:ds-button-unfilled",
|
|
5527
|
+
"component:ds-icon",
|
|
5528
|
+
"component:ds-text",
|
|
5529
|
+
"component:ds-input-time"
|
|
5530
|
+
],
|
|
5531
|
+
"accessibility": [
|
|
5532
|
+
"Provide a persistent visible label through the owning field or an external native label.",
|
|
5533
|
+
"The text field remains the keyboard and assistive-technology value control. Users can type an ISO date, a numeric M/D/YYYY date, or a short-month label such as Sep 10, 2026.",
|
|
5534
|
+
"The trailing calendar button is a named disclosure that opens a non-modal calendar dialog. It shares the field's density, uses the single inset recipe, and reports expanded state while the picker is open.",
|
|
5535
|
+
"Filled values keep YYYY-MM-DD as the form value. Visible text uses a short-month calendar label such as Sep 10, 2026 so the field does not show ISO chrome. That label reuses Input's value typography and text-container inset.",
|
|
5536
|
+
"Error text is associated with the text field and announced as an alert when the invalid state is rendered.",
|
|
5537
|
+
"Read-only fields remain focusable and submittable while preventing edits; inactive or disabled fields leave the tab order and are omitted from form submission."
|
|
5538
|
+
],
|
|
5539
|
+
"states": [
|
|
5540
|
+
"Every size applies the shared control-density recipe, including md body-medium text, across frame height, inline padding, icon zones, and radius.",
|
|
5541
|
+
"The normal field boundary uses the shared secondary inset border. Focus promotes it to the thicker bold-brand inset stroke, while error uses the thicker bold-negative inset stroke without changing geometry. When hasBorder is false, supporting error copy insets to the field's text origin rather than the resting border box.",
|
|
5542
|
+
"The host exposes focused, filled, dirty, touched, invalid, disabled, read-only, and required data attributes for Field integration and diagnostics.",
|
|
5543
|
+
"The trailing calendar action is an unfilled icon button of the same density as the field, borderless and square, with the single inset recipe so the 4px height reduction insets it equally from the field's top, end, and bottom edges. It does not replace the field label or the submitted date value. Inactive or disabled fields apply that treatment on the host only, so the nested button is not faded a second time.",
|
|
5544
|
+
"Activating the calendar button opens the shared Calendar grid in a choice-popup dialog anchored to the field's end edge, beside the trailing calendar action. Choosing a day commits that date and closes the dialog. Typing in the field commits a parsed date without requiring the picker. Invalid typed text reverts to the last committed value on blur."
|
|
5545
|
+
],
|
|
5546
|
+
"responsiveBehavior": [
|
|
5547
|
+
"Form fields normally fill their parent; use hug width only in a compact toolbar or filter layout with an explicit width constraint.",
|
|
5548
|
+
"Choose density from the containing layout: md for ordinary forms, lg for a touch-primary layout, and sm or xs only where surrounding controls use the same compact recipe.",
|
|
5549
|
+
"The calendar dialog uses the shared choice-popup recipe with the same 4px sm chrome inset as choice lists, aligns to the field's end edge, flips when the field collides with the overlay boundary, and stays in the top layer."
|
|
5550
|
+
],
|
|
5551
|
+
"frameworkCaveats": {
|
|
5552
|
+
"customElements": [
|
|
5553
|
+
"Listen for dsChange for user edits. The detail is the ISO calendar date string YYYY-MM-DD.",
|
|
5554
|
+
"Use the form attribute on the host when associating a date field rendered outside its owning form."
|
|
4778
5555
|
],
|
|
4779
5556
|
"react": [
|
|
4780
|
-
"
|
|
5557
|
+
"Use DsInputDate, bind value for controlled application state, and handle onDsChange."
|
|
5558
|
+
],
|
|
5559
|
+
"vue": [
|
|
5560
|
+
"Use DsInputDate with v-model for the value, and listen for dsChange."
|
|
4781
5561
|
],
|
|
4782
5562
|
"angular": [
|
|
4783
|
-
"
|
|
5563
|
+
"Import DsInputDate with TextValueAccessor when integrating with Angular Forms."
|
|
4784
5564
|
]
|
|
4785
5565
|
},
|
|
4786
5566
|
"references": [
|
|
4787
5567
|
{
|
|
4788
5568
|
"label": "Storybook examples",
|
|
4789
|
-
"path": "src/wc/components/
|
|
5569
|
+
"path": "src/wc/components/InputDate/InputDate.stories.ts"
|
|
4790
5570
|
},
|
|
4791
5571
|
{
|
|
4792
|
-
"label": "
|
|
4793
|
-
"path": "
|
|
5572
|
+
"label": "Cross-browser form and accessibility coverage",
|
|
5573
|
+
"path": "tests/e2e/forms.spec.ts"
|
|
4794
5574
|
}
|
|
4795
5575
|
]
|
|
4796
5576
|
},
|
|
4797
5577
|
"api": {
|
|
4798
5578
|
"props": {
|
|
4799
|
-
"
|
|
4800
|
-
"type": "
|
|
5579
|
+
"ariaDescribedby": {
|
|
5580
|
+
"type": "string | undefined",
|
|
4801
5581
|
"required": false
|
|
4802
5582
|
},
|
|
4803
|
-
"
|
|
5583
|
+
"ariaLabel": {
|
|
5584
|
+
"type": "string | null",
|
|
5585
|
+
"required": false
|
|
5586
|
+
},
|
|
5587
|
+
"ariaLabelledby": {
|
|
5588
|
+
"type": "string | undefined",
|
|
5589
|
+
"required": false
|
|
5590
|
+
},
|
|
5591
|
+
"autoFocus": {
|
|
5592
|
+
"type": "boolean",
|
|
5593
|
+
"required": false
|
|
5594
|
+
},
|
|
5595
|
+
"disabled": {
|
|
5596
|
+
"type": "boolean",
|
|
5597
|
+
"required": false
|
|
5598
|
+
},
|
|
5599
|
+
"error": {
|
|
5600
|
+
"type": "boolean",
|
|
5601
|
+
"required": false
|
|
5602
|
+
},
|
|
5603
|
+
"errorMessage": {
|
|
5604
|
+
"type": "string | undefined",
|
|
5605
|
+
"required": false
|
|
5606
|
+
},
|
|
5607
|
+
"form": {
|
|
5608
|
+
"type": "string | undefined",
|
|
5609
|
+
"required": false
|
|
5610
|
+
},
|
|
5611
|
+
"hasBorder": {
|
|
5612
|
+
"type": "boolean",
|
|
5613
|
+
"required": false
|
|
5614
|
+
},
|
|
5615
|
+
"hasInteractionFill": {
|
|
5616
|
+
"type": "boolean",
|
|
5617
|
+
"required": false
|
|
5618
|
+
},
|
|
5619
|
+
"inputId": {
|
|
5620
|
+
"type": "string | undefined",
|
|
5621
|
+
"required": false
|
|
5622
|
+
},
|
|
5623
|
+
"isInactive": {
|
|
5624
|
+
"type": "boolean",
|
|
5625
|
+
"required": false
|
|
5626
|
+
},
|
|
5627
|
+
"max": {
|
|
5628
|
+
"type": "string | undefined",
|
|
5629
|
+
"required": false
|
|
5630
|
+
},
|
|
5631
|
+
"min": {
|
|
4804
5632
|
"type": "string | undefined",
|
|
4805
5633
|
"required": false
|
|
4806
5634
|
},
|
|
4807
5635
|
"name": {
|
|
5636
|
+
"type": "string | undefined",
|
|
5637
|
+
"required": false
|
|
5638
|
+
},
|
|
5639
|
+
"readOnly": {
|
|
5640
|
+
"type": "boolean",
|
|
5641
|
+
"required": false
|
|
5642
|
+
},
|
|
5643
|
+
"required": {
|
|
5644
|
+
"type": "boolean",
|
|
5645
|
+
"required": false
|
|
5646
|
+
},
|
|
5647
|
+
"requiredMessage": {
|
|
4808
5648
|
"type": "string",
|
|
4809
5649
|
"required": false
|
|
4810
5650
|
},
|
|
4811
5651
|
"size": {
|
|
4812
|
-
"type": "
|
|
5652
|
+
"type": "InputDateSize",
|
|
5653
|
+
"required": false
|
|
5654
|
+
},
|
|
5655
|
+
"value": {
|
|
5656
|
+
"type": "string",
|
|
5657
|
+
"required": false
|
|
5658
|
+
},
|
|
5659
|
+
"width": {
|
|
5660
|
+
"type": "InputDateWidth",
|
|
4813
5661
|
"required": false
|
|
4814
5662
|
}
|
|
4815
5663
|
},
|
|
4816
|
-
"events": [
|
|
5664
|
+
"events": [
|
|
5665
|
+
{
|
|
5666
|
+
"name": "dsChange",
|
|
5667
|
+
"detail": "string"
|
|
5668
|
+
}
|
|
5669
|
+
],
|
|
4817
5670
|
"slots": []
|
|
4818
5671
|
},
|
|
4819
5672
|
"exports": {
|
|
4820
|
-
"customElement": "ds-
|
|
4821
|
-
"react": "
|
|
4822
|
-
"vue": "
|
|
4823
|
-
"angular": "
|
|
5673
|
+
"customElement": "ds-input-date",
|
|
5674
|
+
"react": "DsInputDate",
|
|
5675
|
+
"vue": "DsInputDate",
|
|
5676
|
+
"angular": "DsInputDate"
|
|
4824
5677
|
},
|
|
4825
5678
|
"dependencies": [
|
|
4826
5679
|
"@ds-mo/ui",
|
|
4827
|
-
"@ds-mo/tokens"
|
|
4828
|
-
"@ds-mo/icons"
|
|
5680
|
+
"@ds-mo/tokens"
|
|
4829
5681
|
],
|
|
4830
|
-
"componentDependencies": [
|
|
5682
|
+
"componentDependencies": [
|
|
5683
|
+
"button-unfilled",
|
|
5684
|
+
"calendar",
|
|
5685
|
+
"text"
|
|
5686
|
+
]
|
|
4831
5687
|
},
|
|
4832
5688
|
{
|
|
4833
|
-
"id": "component:ds-input",
|
|
4834
|
-
"tag": "ds-input",
|
|
4835
|
-
"name": "input",
|
|
4836
|
-
"title": "
|
|
4837
|
-
"summary": "Form-associated
|
|
5689
|
+
"id": "component:ds-input-time",
|
|
5690
|
+
"tag": "ds-input-time",
|
|
5691
|
+
"name": "input-time",
|
|
5692
|
+
"title": "InputTime",
|
|
5693
|
+
"summary": "Form-associated clock time field that reuses Input density, focus, validation, and field composition, with a typeable value and a TimePicker.",
|
|
4838
5694
|
"intentStatus": "complete",
|
|
4839
5695
|
"intent": {
|
|
4840
5696
|
"audience": "general",
|
|
4841
|
-
"status": "
|
|
4842
|
-
"summary": "Form-associated
|
|
5697
|
+
"status": "experimental",
|
|
5698
|
+
"summary": "Form-associated clock time field that reuses Input density, focus, validation, and field composition, with a typeable value and a TimePicker.",
|
|
4843
5699
|
"useWhen": [
|
|
4844
|
-
"A user must enter or edit
|
|
4845
|
-
"The
|
|
4846
|
-
"
|
|
5700
|
+
"A user must enter or edit a clock time as a native time string.",
|
|
5701
|
+
"The time must participate in native, Angular, React, or Vue form state.",
|
|
5702
|
+
"The control should match Input geometry, typography, and field composition rather than a one-off native time input."
|
|
4847
5703
|
],
|
|
4848
5704
|
"avoidWhen": [
|
|
4849
|
-
"The
|
|
4850
|
-
"The
|
|
4851
|
-
"The
|
|
5705
|
+
"The value is freeform text, a number, or a search query.",
|
|
5706
|
+
"The value is a calendar date without a clock time.",
|
|
5707
|
+
"The user chooses from a finite set of named schedule options rather than an exact time."
|
|
4852
5708
|
],
|
|
4853
5709
|
"alternatives": [
|
|
4854
5710
|
{
|
|
4855
|
-
"when": "The value
|
|
4856
|
-
"component": "component:ds-
|
|
4857
|
-
"reason": "
|
|
5711
|
+
"when": "The value is one line of text, email, search, or an exact number.",
|
|
5712
|
+
"component": "component:ds-input",
|
|
5713
|
+
"reason": "Input owns those native types, adornments, search clearing, and numeric stepping."
|
|
4858
5714
|
},
|
|
4859
5715
|
{
|
|
4860
|
-
"when": "The value is
|
|
4861
|
-
"component": "component:ds-
|
|
4862
|
-
"reason": "
|
|
5716
|
+
"when": "The value is a calendar date.",
|
|
5717
|
+
"component": "component:ds-input-date",
|
|
5718
|
+
"reason": "InputDate owns calendar date form values and the Calendar picker."
|
|
4863
5719
|
},
|
|
4864
5720
|
{
|
|
4865
|
-
"when": "The
|
|
4866
|
-
"component": "component:ds-
|
|
4867
|
-
"reason": "
|
|
5721
|
+
"when": "The hour, minute, and AM/PM lists are needed without a form field.",
|
|
5722
|
+
"component": "component:ds-time-picker",
|
|
5723
|
+
"reason": "TimePicker owns the bounded 12-hour lists and selected-tile treatment."
|
|
5724
|
+
},
|
|
5725
|
+
{
|
|
5726
|
+
"when": "The user chooses from a finite set of named times or cadences.",
|
|
5727
|
+
"component": "component:ds-select",
|
|
5728
|
+
"reason": "Select exposes the available values and owns listbox selection behavior."
|
|
4868
5729
|
}
|
|
4869
5730
|
],
|
|
4870
5731
|
"commonlyComposedWith": [
|
|
4871
5732
|
"component:ds-field",
|
|
5733
|
+
"component:ds-time-picker",
|
|
5734
|
+
"component:ds-button-unfilled",
|
|
4872
5735
|
"component:ds-icon",
|
|
4873
|
-
"component:ds-text"
|
|
5736
|
+
"component:ds-text",
|
|
5737
|
+
"component:ds-input-date"
|
|
4874
5738
|
],
|
|
4875
5739
|
"accessibility": [
|
|
4876
|
-
"Provide a persistent visible label through the owning field or an external native label
|
|
4877
|
-
"
|
|
4878
|
-
"
|
|
4879
|
-
"
|
|
4880
|
-
"
|
|
4881
|
-
"
|
|
5740
|
+
"Provide a persistent visible label through the owning field or an external native label.",
|
|
5741
|
+
"The text field remains the keyboard and assistive-technology value control. Users can type HH:MM, H:MM, or a 12-hour label such as 9:00 AM.",
|
|
5742
|
+
"The trailing clock button is a named disclosure that opens a non-modal time dialog. It shares the field's density, uses the single inset recipe, and reports expanded state while the picker is open.",
|
|
5743
|
+
"Filled values keep HH:MM as the form value. Visible text uses a 12-hour label such as 9:00 AM so the field does not show 24-hour chrome. That label reuses Input's value typography and text-container inset.",
|
|
5744
|
+
"Error text is associated with the text field and announced as an alert when the invalid state is rendered.",
|
|
5745
|
+
"Read-only fields remain focusable and submittable while preventing edits; inactive or disabled fields leave the tab order and are omitted from form submission."
|
|
4882
5746
|
],
|
|
4883
5747
|
"states": [
|
|
4884
|
-
"Every size applies
|
|
4885
|
-
"The
|
|
4886
|
-
"
|
|
4887
|
-
"Entered values use the parent surface's primary foreground; prefix icons, suffix content, and resting placeholder text use its secondary foreground.",
|
|
4888
|
-
"Search fields show a standard borderless CrossCircle icon action only while they contain a value. Clearing emits the empty value and restores focus to the native field.",
|
|
4889
|
-
"Search fields disable browser autocomplete history, automatic capitalization, autocorrection, and spellchecking by default so browser-owned suggestions do not compete with product-owned results. Consumers can explicitly provide autoComplete when a different native history behavior is required.",
|
|
4890
|
-
"Search fields used with owned result sets forward aria-controls and aria-activedescendant to the native field so keyboard focus can remain in the query while assistive technology tracks the active result.",
|
|
4891
|
-
"The suffix slot is for compact units or decorations. The optional leading icon is decorative and does not replace the field label.",
|
|
4892
|
-
"Use autoComplete, inputMode, and enterKeyHint to provide browser and virtual-keyboard hints without changing the value's semantic type.",
|
|
4893
|
-
"Number fields preserve native spinbutton semantics, keyboard stepping, and min/max constraint behavior while dsChange continues to report the native string value. Two borderless inset chevron actions split the available inner height, disable independently at their numeric bound, and restore focus to the spinbutton after pointer activation.",
|
|
4894
|
-
"textAlign positions the editable value while the numeric stepper stays on the opposite inline edge, keeping the actions clear of the number: start-aligned values use an inline-end stepper and end-aligned values use an inline-start stepper.",
|
|
5748
|
+
"Every size applies the shared control-density recipe, including md body-medium text, across frame height, inline padding, icon zones, and radius.",
|
|
5749
|
+
"The default step is one minute so the field matches ordinary schedule entry; override step only when a coarser minute increment is required.",
|
|
5750
|
+
"The normal field boundary uses the shared secondary inset border. Focus promotes it to the thicker bold-brand inset stroke, while error uses the thicker bold-negative inset stroke without changing geometry. When hasBorder is false, supporting error copy insets to the field's text origin rather than the resting border box.",
|
|
4895
5751
|
"The host exposes focused, filled, dirty, touched, invalid, disabled, read-only, and required data attributes for Field integration and diagnostics.",
|
|
4896
|
-
"
|
|
5752
|
+
"The trailing clock action is an unfilled icon button of the same density as the field, borderless and square, with the single inset recipe so the 4px height reduction insets it equally from the field's top, end, and bottom edges. It does not replace the field label or the submitted time value. Inactive or disabled fields apply that treatment on the host only, so the nested button is not faded a second time.",
|
|
5753
|
+
"Activating the clock button opens the shared TimePicker in a choice-popup dialog anchored to the field's end edge, beside the trailing clock action. Choosing hour, minute, or AM/PM commits that part of the time and leaves the dialog open so the other columns can be adjusted. Typing in the field commits a parsed time without requiring the picker. Invalid typed text reverts to the last committed value on blur."
|
|
4897
5754
|
],
|
|
4898
5755
|
"responsiveBehavior": [
|
|
4899
5756
|
"Form fields normally fill their parent; use hug width only in a compact toolbar or filter layout with an explicit width constraint.",
|
|
4900
5757
|
"Choose density from the containing layout: md for ordinary forms, lg for a touch-primary layout, and sm or xs only where surrounding controls use the same compact recipe.",
|
|
4901
|
-
"The
|
|
5758
|
+
"The time dialog uses the shared choice-popup recipe with the same 4px sm chrome inset as choice lists, aligns to the field's end edge, flips when the field collides with the overlay boundary, and stays in the top layer."
|
|
4902
5759
|
],
|
|
4903
5760
|
"frameworkCaveats": {
|
|
4904
5761
|
"customElements": [
|
|
4905
|
-
"Listen for dsChange for user edits
|
|
4906
|
-
"Use the form attribute on the host when associating
|
|
5762
|
+
"Listen for dsChange for user edits. The detail is the clock time string HH:MM.",
|
|
5763
|
+
"Use the form attribute on the host when associating a time field rendered outside its owning form."
|
|
4907
5764
|
],
|
|
4908
5765
|
"react": [
|
|
4909
|
-
"Use
|
|
5766
|
+
"Use DsInputTime, bind value for controlled application state, and handle onDsChange."
|
|
4910
5767
|
],
|
|
4911
5768
|
"vue": [
|
|
4912
|
-
"Use
|
|
5769
|
+
"Use DsInputTime with v-model for the value, and listen for dsChange."
|
|
4913
5770
|
],
|
|
4914
5771
|
"angular": [
|
|
4915
|
-
"Import
|
|
5772
|
+
"Import DsInputTime with TextValueAccessor when integrating with Angular Forms."
|
|
4916
5773
|
]
|
|
4917
5774
|
},
|
|
4918
5775
|
"references": [
|
|
4919
5776
|
{
|
|
4920
5777
|
"label": "Storybook examples",
|
|
4921
|
-
"path": "src/wc/components/
|
|
5778
|
+
"path": "src/wc/components/InputTime/InputTime.stories.ts"
|
|
4922
5779
|
},
|
|
4923
5780
|
{
|
|
4924
5781
|
"label": "Cross-browser form and accessibility coverage",
|
|
@@ -4928,14 +5785,6 @@
|
|
|
4928
5785
|
},
|
|
4929
5786
|
"api": {
|
|
4930
5787
|
"props": {
|
|
4931
|
-
"ariaActiveDescendant": {
|
|
4932
|
-
"type": "string | undefined",
|
|
4933
|
-
"required": false
|
|
4934
|
-
},
|
|
4935
|
-
"ariaControls": {
|
|
4936
|
-
"type": "string | undefined",
|
|
4937
|
-
"required": false
|
|
4938
|
-
},
|
|
4939
5788
|
"ariaDescribedby": {
|
|
4940
5789
|
"type": "string | undefined",
|
|
4941
5790
|
"required": false
|
|
@@ -4948,26 +5797,14 @@
|
|
|
4948
5797
|
"type": "string | undefined",
|
|
4949
5798
|
"required": false
|
|
4950
5799
|
},
|
|
4951
|
-
"autoComplete": {
|
|
4952
|
-
"type": "string | undefined",
|
|
4953
|
-
"required": false
|
|
4954
|
-
},
|
|
4955
5800
|
"autoFocus": {
|
|
4956
5801
|
"type": "boolean",
|
|
4957
5802
|
"required": false
|
|
4958
5803
|
},
|
|
4959
|
-
"clearLabel": {
|
|
4960
|
-
"type": "string",
|
|
4961
|
-
"required": false
|
|
4962
|
-
},
|
|
4963
5804
|
"disabled": {
|
|
4964
5805
|
"type": "boolean",
|
|
4965
5806
|
"required": false
|
|
4966
5807
|
},
|
|
4967
|
-
"enterKeyHint": {
|
|
4968
|
-
"type": "string",
|
|
4969
|
-
"required": false
|
|
4970
|
-
},
|
|
4971
5808
|
"error": {
|
|
4972
5809
|
"type": "boolean",
|
|
4973
5810
|
"required": false
|
|
@@ -4988,35 +5825,23 @@
|
|
|
4988
5825
|
"type": "boolean",
|
|
4989
5826
|
"required": false
|
|
4990
5827
|
},
|
|
4991
|
-
"icon": {
|
|
4992
|
-
"type": "string | undefined",
|
|
4993
|
-
"required": false
|
|
4994
|
-
},
|
|
4995
5828
|
"inputId": {
|
|
4996
5829
|
"type": "string | undefined",
|
|
4997
5830
|
"required": false
|
|
4998
5831
|
},
|
|
4999
|
-
"inputMode": {
|
|
5000
|
-
"type": "string",
|
|
5001
|
-
"required": false
|
|
5002
|
-
},
|
|
5003
5832
|
"isInactive": {
|
|
5004
5833
|
"type": "boolean",
|
|
5005
5834
|
"required": false
|
|
5006
5835
|
},
|
|
5007
5836
|
"max": {
|
|
5008
|
-
"type": "
|
|
5837
|
+
"type": "string | undefined",
|
|
5009
5838
|
"required": false
|
|
5010
5839
|
},
|
|
5011
5840
|
"min": {
|
|
5012
|
-
"type": "number | undefined",
|
|
5013
|
-
"required": false
|
|
5014
|
-
},
|
|
5015
|
-
"name": {
|
|
5016
5841
|
"type": "string | undefined",
|
|
5017
5842
|
"required": false
|
|
5018
5843
|
},
|
|
5019
|
-
"
|
|
5844
|
+
"name": {
|
|
5020
5845
|
"type": "string | undefined",
|
|
5021
5846
|
"required": false
|
|
5022
5847
|
},
|
|
@@ -5033,19 +5858,11 @@
|
|
|
5033
5858
|
"required": false
|
|
5034
5859
|
},
|
|
5035
5860
|
"size": {
|
|
5036
|
-
"type": "
|
|
5861
|
+
"type": "InputTimeSize",
|
|
5037
5862
|
"required": false
|
|
5038
5863
|
},
|
|
5039
5864
|
"step": {
|
|
5040
|
-
"type": "
|
|
5041
|
-
"required": false
|
|
5042
|
-
},
|
|
5043
|
-
"textAlign": {
|
|
5044
|
-
"type": "InputTextAlign",
|
|
5045
|
-
"required": false
|
|
5046
|
-
},
|
|
5047
|
-
"type": {
|
|
5048
|
-
"type": "InputType",
|
|
5865
|
+
"type": "string | number",
|
|
5049
5866
|
"required": false
|
|
5050
5867
|
},
|
|
5051
5868
|
"value": {
|
|
@@ -5053,7 +5870,7 @@
|
|
|
5053
5870
|
"required": false
|
|
5054
5871
|
},
|
|
5055
5872
|
"width": {
|
|
5056
|
-
"type": "
|
|
5873
|
+
"type": "InputTimeWidth",
|
|
5057
5874
|
"required": false
|
|
5058
5875
|
}
|
|
5059
5876
|
},
|
|
@@ -5061,29 +5878,24 @@
|
|
|
5061
5878
|
{
|
|
5062
5879
|
"name": "dsChange",
|
|
5063
5880
|
"detail": "string"
|
|
5064
|
-
},
|
|
5065
|
-
{
|
|
5066
|
-
"name": "dsClear",
|
|
5067
|
-
"detail": "void"
|
|
5068
5881
|
}
|
|
5069
5882
|
],
|
|
5070
5883
|
"slots": []
|
|
5071
5884
|
},
|
|
5072
5885
|
"exports": {
|
|
5073
|
-
"customElement": "ds-input",
|
|
5074
|
-
"react": "
|
|
5075
|
-
"vue": "
|
|
5076
|
-
"angular": "
|
|
5886
|
+
"customElement": "ds-input-time",
|
|
5887
|
+
"react": "DsInputTime",
|
|
5888
|
+
"vue": "DsInputTime",
|
|
5889
|
+
"angular": "DsInputTime"
|
|
5077
5890
|
},
|
|
5078
5891
|
"dependencies": [
|
|
5079
5892
|
"@ds-mo/ui",
|
|
5080
|
-
"@ds-mo/tokens"
|
|
5081
|
-
"@ds-mo/icons"
|
|
5893
|
+
"@ds-mo/tokens"
|
|
5082
5894
|
],
|
|
5083
5895
|
"componentDependencies": [
|
|
5084
5896
|
"button-unfilled",
|
|
5085
|
-
"
|
|
5086
|
-
"
|
|
5897
|
+
"text",
|
|
5898
|
+
"time-picker"
|
|
5087
5899
|
]
|
|
5088
5900
|
},
|
|
5089
5901
|
{
|
|
@@ -5340,7 +6152,8 @@
|
|
|
5340
6152
|
"Use a swatch-picker section for a small curated visual preference and apply dsSwatchSelect immediately without closing the popup.",
|
|
5341
6153
|
"Ordinary rows, section headings, and supporting text consume the Menu size. At xs, both the primary label and supporting text use caption metrics.",
|
|
5342
6154
|
"A trailing tag resolves one density smaller than its menu row and uses the inset recipe so it nests without changing row height. Do not combine tag, dot, and switch suffixes on one item.",
|
|
5343
|
-
"Reorderable rows use the Drag prefix and ignore icon. Prefix and drag-handle icons inherit the choice-popup secondary foreground, matching Select. When any row in a section has an icon or is reorderable, the remaining rows get a spacer so labels align."
|
|
6155
|
+
"Reorderable rows use the Drag prefix and ignore icon. Prefix and drag-handle icons inherit the choice-popup secondary foreground, matching Select. When any row in a section has an icon or is reorderable, the remaining rows get a spacer so labels align.",
|
|
6156
|
+
"Embedded mode renders the same controlled content inside a parent-owned surface; the parent owns positioning, initial focus, Escape, Tab exit, and dismissal."
|
|
5344
6157
|
],
|
|
5345
6158
|
"responsiveBehavior": [
|
|
5346
6159
|
"Keep the default choice-cell anchor alignment so the first or last interactive row edge aligns with its trigger, matching Select; use popup-frame only for deliberate custom frame geometry.",
|
|
@@ -5399,6 +6212,10 @@
|
|
|
5399
6212
|
"type": "HTMLElement | undefined",
|
|
5400
6213
|
"required": false
|
|
5401
6214
|
},
|
|
6215
|
+
"embedded": {
|
|
6216
|
+
"type": "boolean",
|
|
6217
|
+
"required": false
|
|
6218
|
+
},
|
|
5402
6219
|
"emptyMessage": {
|
|
5403
6220
|
"type": "string",
|
|
5404
6221
|
"required": false
|
|
@@ -8186,7 +9003,8 @@
|
|
|
8186
9003
|
"component:ds-text",
|
|
8187
9004
|
"component:ds-icon",
|
|
8188
9005
|
"component:ds-empty-state",
|
|
8189
|
-
"component:ds-loader"
|
|
9006
|
+
"component:ds-loader",
|
|
9007
|
+
"component:ds-input"
|
|
8190
9008
|
],
|
|
8191
9009
|
"accessibility": [
|
|
8192
9010
|
"In forms, provide a persistent visible external field label; placeholder text is guidance and must not be the field's only label. In a compact filter bar, the trigger's visible text may supply the accessible name.",
|
|
@@ -8200,9 +9018,10 @@
|
|
|
8200
9018
|
"Use errorMessage with error so the trigger is described by the rendered alert."
|
|
8201
9019
|
],
|
|
8202
9020
|
"states": [
|
|
8203
|
-
"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.",
|
|
9021
|
+
"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. Set neutralTrigger to keep the selected label on the resting secondary foreground, including Input prefix and suffix units.",
|
|
8204
9022
|
"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.",
|
|
8205
|
-
"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.",
|
|
9023
|
+
"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. Set rounded to use the same half-radius pill as buttons on the trigger only; the popup keeps the menu radius.",
|
|
9024
|
+
"Set isInset only when the trigger is nested inside a same-size control, including an Input prefix or suffix. Match the host field's size, set hasBorder to false, use width hug, and set indicator to up-down. Prefix and suffix Selects keep a selected value, set allowClear false so the menu has no clear footer, and set neutralTrigger so the selected unit stays secondary like prefix text. The owning Input draws a vertical divider between the nested control and the editable value at the density icon height. The nested inset keeps its 2px remainder toward the line; the editable value keeps the same inline padding from the line as a non-prefixed field keeps from its border. 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. Inset and rounded change only the trigger's outer box. Popup option rows, search, and footer always use the selected size recipe and do not change for single or double inset or for rounded. Do not put error copy on the nested Select; the owning Input keeps validation.",
|
|
8206
9025
|
"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.",
|
|
8207
9026
|
"Multiple mode keeps the persistent placeholder label visible, appends the selected count, and submits one repeated form entry per selected value.",
|
|
8208
9027
|
"Required Selects begin without an automatic selection and require the user to make an explicit choice; do not preselect the first option merely to satisfy validity.",
|
|
@@ -8217,7 +9036,7 @@
|
|
|
8217
9036
|
"Option labels and the selected trigger label stay on one line and truncate when constrained. Option subtext may wrap to at most two lines.",
|
|
8218
9037
|
"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; surfaceOpen keeps it visible while its controlled menu is rendered. Activating it emits dsOptionAction without selecting the option or closing the Select popup.",
|
|
8219
9038
|
"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.",
|
|
8220
|
-
"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
|
|
9039
|
+
"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 for compact always-selected value pickers such as pagination page size and Input prefix or suffix units.",
|
|
8221
9040
|
"While the popup is open, the trigger holds the pressed interaction wash without changing its resting foreground or selected-value treatment.",
|
|
8222
9041
|
"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.",
|
|
8223
9042
|
"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.",
|
|
@@ -8226,7 +9045,7 @@
|
|
|
8226
9045
|
"An empty filtered list composes the message-only body variant of EmptyState. Keep the default neutral no-results message unless localized product guidance makes the outcome clearer.",
|
|
8227
9046
|
"Enable searchable for more than roughly 20 options, user-managed listings, large domains such as addresses, or sets users cannot efficiently scan. Local matching includes option labels, subtext, and section headings; the owner resolves remote data before assigning options.",
|
|
8228
9047
|
"Validation timing belongs to the form owner and may be immediate or deferred until blur or submit; the Select exposes validity and error presentation without imposing that policy.",
|
|
8229
|
-
"The error trigger uses a 1.5px bold-negative inset stroke so invalid state remains distinguishable from the normal 1px border without changing control geometry. Set hasBorder to false for chrome where the trigger must remain borderless at rest, when selected or focused, and when invalid; error semantics and supporting copy
|
|
9048
|
+
"The error trigger uses a 1.5px bold-negative inset stroke so invalid state remains distinguishable from the normal 1px border without changing control geometry. Set hasBorder to false for chrome where the trigger must remain borderless at rest, when selected or focused, and when invalid; error semantics remain available, and supporting error copy insets to the trigger text origin rather than the resting border box.",
|
|
8230
9049
|
"An initially empty option set is not an expected Select use case. The no-results state describes a search with no matches, not a source with no choices.",
|
|
8231
9050
|
"Use options for a flat list or sections for grouped choices; when sections are present they take precedence.",
|
|
8232
9051
|
"The background prop describes the actual parent surface and uses the same surface set as ButtonUnfilled.",
|
|
@@ -8237,7 +9056,8 @@
|
|
|
8237
9056
|
"When collapseLabel is set inside a named ds-table container narrower than 900px, the trigger omits its label and chevron, becomes icon-only, and exposes its label through a hover and keyboard-focus tooltip. A selected value promotes the prefix icon to primary.",
|
|
8238
9057
|
"The popup matches the trigger minimum width, may grow for content, and clamps to the nearest data-ds-overlay-boundary rectangle or the viewport fallback. Assign boundary as an HTMLElement only for an explicit override.",
|
|
8239
9058
|
"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.",
|
|
8240
|
-
"Long option collections scroll inside the popup; virtualization and remote search are not part of this component."
|
|
9059
|
+
"Long option collections scroll inside the popup; virtualization and remote search are not part of this component.",
|
|
9060
|
+
"An explicitly compact composition can keep only the prefix icon while preserving the accessible name and tooltip."
|
|
8241
9061
|
],
|
|
8242
9062
|
"frameworkCaveats": {
|
|
8243
9063
|
"customElements": [
|
|
@@ -8334,6 +9154,10 @@
|
|
|
8334
9154
|
"type": "string | undefined",
|
|
8335
9155
|
"required": false
|
|
8336
9156
|
},
|
|
9157
|
+
"iconOnly": {
|
|
9158
|
+
"type": "boolean",
|
|
9159
|
+
"required": false
|
|
9160
|
+
},
|
|
8337
9161
|
"indicator": {
|
|
8338
9162
|
"type": "SelectIndicator",
|
|
8339
9163
|
"required": false
|
|
@@ -8342,10 +9166,18 @@
|
|
|
8342
9166
|
"type": "string | undefined",
|
|
8343
9167
|
"required": false
|
|
8344
9168
|
},
|
|
9169
|
+
"insetDepth": {
|
|
9170
|
+
"type": "ControlInsetDepth",
|
|
9171
|
+
"required": false
|
|
9172
|
+
},
|
|
8345
9173
|
"isInactive": {
|
|
8346
9174
|
"type": "boolean",
|
|
8347
9175
|
"required": false
|
|
8348
9176
|
},
|
|
9177
|
+
"isInset": {
|
|
9178
|
+
"type": "boolean",
|
|
9179
|
+
"required": false
|
|
9180
|
+
},
|
|
8349
9181
|
"isLoading": {
|
|
8350
9182
|
"type": "boolean",
|
|
8351
9183
|
"required": false
|
|
@@ -8362,6 +9194,10 @@
|
|
|
8362
9194
|
"type": "string | undefined",
|
|
8363
9195
|
"required": false
|
|
8364
9196
|
},
|
|
9197
|
+
"neutralTrigger": {
|
|
9198
|
+
"type": "boolean",
|
|
9199
|
+
"required": false
|
|
9200
|
+
},
|
|
8365
9201
|
"noResultsText": {
|
|
8366
9202
|
"type": "string",
|
|
8367
9203
|
"required": false
|
|
@@ -8390,6 +9226,10 @@
|
|
|
8390
9226
|
"type": "string",
|
|
8391
9227
|
"required": false
|
|
8392
9228
|
},
|
|
9229
|
+
"rounded": {
|
|
9230
|
+
"type": "boolean",
|
|
9231
|
+
"required": false
|
|
9232
|
+
},
|
|
8393
9233
|
"searchPlaceholder": {
|
|
8394
9234
|
"type": "string",
|
|
8395
9235
|
"required": false
|
|
@@ -8554,7 +9394,8 @@
|
|
|
8554
9394
|
"Managed ShellApp keeps the selected desktop section-navigation presentation and ShellPage present and owns page header stickiness and the content scroller.",
|
|
8555
9395
|
"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.",
|
|
8556
9396
|
"The application filters unauthorized destinations, sections, and tools before passing them into shell components.",
|
|
8557
|
-
"Application-owned header actions and the account trigger retain surface ownership across shell presentations. Supply surfaceOpen on header actions and accountMenuSurfaceOpen on navigation for rendered surface lifetimes; keep disclosure and selected-route state separate."
|
|
9397
|
+
"Application-owned header actions and the account trigger retain surface ownership across shell presentations. Supply surfaceOpen on header actions and accountMenuSurfaceOpen on navigation for rendered surface lifetimes; keep disclosure and selected-route state separate.",
|
|
9398
|
+
"Managed page chrome can explicitly choose page-local title presentation for pages that must remain compact rather than following capacity and scrolling."
|
|
8558
9399
|
],
|
|
8559
9400
|
"responsiveBehavior": [
|
|
8560
9401
|
"ShellApp owns the fixed system breakpoints and resolves desktop at 1200px and wider, tablet from 768px through 1199px, and mobile below 768px.",
|
|
@@ -9811,7 +10652,8 @@
|
|
|
9811
10652
|
"Use one consistent content variant across every selectable tab in a group.",
|
|
9812
10653
|
"Omitted background is for primary and secondary surfaces; pass the faint context explicitly on faint surfaces.",
|
|
9813
10654
|
"Only the omitted default context emphasizes visible selected label text and keeps the filled track; every explicit surface context uses a transparent track, stable text weight, surface border, and its context-matched neutral active fill rather than a brand active fill.",
|
|
9814
|
-
"Dividers visually separate related subsets inside one tab list but do not create nested navigation or independent selection groups."
|
|
10655
|
+
"Dividers visually separate related subsets inside one tab list but do not create nested navigation or independent selection groups.",
|
|
10656
|
+
"Simple navigation-style tabs use regular control geometry and selected text emphasis, without a selected pill fill or border."
|
|
9815
10657
|
],
|
|
9816
10658
|
"responsiveBehavior": [
|
|
9817
10659
|
"The component remains a single horizontal row and does not become vertical or wrap.",
|
|
@@ -9855,6 +10697,10 @@
|
|
|
9855
10697
|
"type": "boolean",
|
|
9856
10698
|
"required": false
|
|
9857
10699
|
},
|
|
10700
|
+
"presentation": {
|
|
10701
|
+
"type": "'segmented' | 'tabs'",
|
|
10702
|
+
"required": false
|
|
10703
|
+
},
|
|
9858
10704
|
"size": {
|
|
9859
10705
|
"type": "TabGroupSize",
|
|
9860
10706
|
"required": false
|
|
@@ -9966,7 +10812,9 @@
|
|
|
9966
10812
|
"Score-and-text cells (`kind: score-text`) place the small 24px safety score at the top-right of the cell while the same one-, two-, or three-track copy stack as a standard text cell fills from the start edge. The score is top-aligned with the first text track, adds no inner padding, and defaults its accessible name prefix to Safety score. Score-and-text loading geometry uses the matching small score skeleton and declared copy tracks.",
|
|
9967
10813
|
"The public @ds-mo/ui/table.css export is the authoritative zero-specificity visual recipe. Override its --ds-table-* properties or target its stable element classes for product-specific styling.",
|
|
9968
10814
|
"While any checkbox selection is active, row activation toggles selection instead of opening details. Clearing the selection restores ordinary row activation. Nested controls retain their own intent, and disabled or non-selectable rows cannot be selected by activating their row.",
|
|
9969
|
-
"Use surfaceOpenRowId to identify the interactive row associated with a visible detail panel or other contextual surface. The application owns opening, same-row toggling, switching records, and closing; retain the identity through exit motion, then clear it. Move it when panel navigation changes the displayed record. This pressed wash spans sticky and scrolling cells, follows stable row identity through virtualization, and never checks a checkbox or changes selectedRowIds. Group expansion remains an inline disclosure."
|
|
10815
|
+
"Use surfaceOpenRowId to identify the interactive row associated with a visible detail panel or other contextual surface. The application owns opening, same-row toggling, switching records, and closing; retain the identity through exit motion, then clear it. Move it when panel navigation changes the displayed record. This pressed wash spans sticky and scrolling cells, follows stable row identity through virtualization, and never checks a checkbox or changes selectedRowIds. Group expansion remains an inline disclosure.",
|
|
10816
|
+
"An external ds-table-preferences may own column controls. Hide only the built-in Customize trigger, keep column customization enabled, and share hidden-column and ordering state with the external surface.",
|
|
10817
|
+
"Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback."
|
|
9970
10818
|
],
|
|
9971
10819
|
"responsiveBehavior": [
|
|
9972
10820
|
"The table keeps native semantics at narrow widths and scrolls horizontally instead of transforming into cards.",
|
|
@@ -10022,6 +10870,10 @@
|
|
|
10022
10870
|
"type": "string",
|
|
10023
10871
|
"required": true
|
|
10024
10872
|
},
|
|
10873
|
+
"captionControlsBorderless": {
|
|
10874
|
+
"type": "boolean",
|
|
10875
|
+
"required": false
|
|
10876
|
+
},
|
|
10025
10877
|
"captionVisibility": {
|
|
10026
10878
|
"type": "TableCaptionVisibility",
|
|
10027
10879
|
"required": false
|
|
@@ -10046,6 +10898,10 @@
|
|
|
10046
10898
|
"type": "TableColumn[]",
|
|
10047
10899
|
"required": false
|
|
10048
10900
|
},
|
|
10901
|
+
"customizeOptions": {
|
|
10902
|
+
"type": "MenuItemData[]",
|
|
10903
|
+
"required": false
|
|
10904
|
+
},
|
|
10049
10905
|
"dataMode": {
|
|
10050
10906
|
"type": "TableDataMode",
|
|
10051
10907
|
"required": false
|
|
@@ -10142,6 +10998,10 @@
|
|
|
10142
10998
|
"type": "string[]",
|
|
10143
10999
|
"required": false
|
|
10144
11000
|
},
|
|
11001
|
+
"hideColumnCustomizerTrigger": {
|
|
11002
|
+
"type": "boolean",
|
|
11003
|
+
"required": false
|
|
11004
|
+
},
|
|
10145
11005
|
"highlightFieldIds": {
|
|
10146
11006
|
"type": "string[]",
|
|
10147
11007
|
"required": false
|
|
@@ -10272,6 +11132,10 @@
|
|
|
10272
11132
|
"name": "dsColumnsConfigChange",
|
|
10273
11133
|
"detail": "TableColumnsConfigChangeDetail"
|
|
10274
11134
|
},
|
|
11135
|
+
{
|
|
11136
|
+
"name": "dsCustomizeOptionChange",
|
|
11137
|
+
"detail": "string"
|
|
11138
|
+
},
|
|
10275
11139
|
{
|
|
10276
11140
|
"name": "dsDataModeChange",
|
|
10277
11141
|
"detail": "TableDataModeChangeDetail"
|
|
@@ -10378,16 +11242,20 @@
|
|
|
10378
11242
|
],
|
|
10379
11243
|
"states": [
|
|
10380
11244
|
"filters, values, matchModes, and activeFilterId are controlled. dsChange, dsMatchModeChange, dsClear, and dsActiveFilterChange report intent without changing those inputs; the application applies query consequences and returns replacement values.",
|
|
10381
|
-
"The visible trigger label stays singular Filter without appending an active-count suffix. Active criteria
|
|
11245
|
+
"The visible trigger label stays singular Filter without appending an active-count suffix. Active criteria retain the same neutral label and icon colors.",
|
|
10382
11246
|
"The popup reserves a visually empty footer row inside the category pane for every state. Active criteria reveal its divider and only a left-aligned Clear action, without adding popup height or showing redundant selected-count copy; the option pane retains its full column.",
|
|
10383
11247
|
"Every multiple-choice category exposes a right-pane footer where the blue any or all word toggles its controlled match mode. any is the default OR mode; the application applies the requested mode to its query.",
|
|
10384
11248
|
"Every non-date category exposes a 40px secondary-background search header that filters its displayed option labels and descriptions without changing controlled filter values. Date retains only its Relative and Range header.",
|
|
10385
11249
|
"Date categories use the shared compact-header Range and Relative experience. Persist relative values semantically and resolve them from the product's current date whenever rows or saved views are applied.",
|
|
10386
|
-
"Popup visibility follows the same mutable open and dsOpenChange contract as ds-filter-menu."
|
|
11250
|
+
"Popup visibility follows the same mutable open and dsOpenChange contract as ds-filter-menu.",
|
|
11251
|
+
"Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
|
|
11252
|
+
"Expanded toolbar triggers use an icon and regular-weight text without a trailing chevron.",
|
|
11253
|
+
"Selected views and applied filters do not promote trigger icon or label colors. Trigger colors remain neutral across value changes.",
|
|
11254
|
+
"Apply-required filtering stages edits locally, including match mode. Clear immediately clears all filters and discards pending edits. The footer appears when filters are selected or applied; Apply stays in place and inactive without pending changes; applying emits controlled changes. Closing discards unapplied edits."
|
|
10387
11255
|
],
|
|
10388
11256
|
"responsiveBehavior": [
|
|
10389
11257
|
"Place the control in the trailing region of ds-table-toolbar.",
|
|
10390
|
-
"Inside a named ds-table container narrower than 900px, the trigger becomes icon-only, exposes its visible label through a hover and keyboard-focus tooltip, and
|
|
11258
|
+
"Inside a named ds-table container narrower than 900px, the trigger becomes icon-only, exposes its visible label through a hover and keyboard-focus tooltip, and the Filters icon remains neutral with active criteria."
|
|
10391
11259
|
],
|
|
10392
11260
|
"frameworkCaveats": {
|
|
10393
11261
|
"customElements": [
|
|
@@ -10433,6 +11301,10 @@
|
|
|
10433
11301
|
"type": "FilterMenuFilter[]",
|
|
10434
11302
|
"required": false
|
|
10435
11303
|
},
|
|
11304
|
+
"hasBorder": {
|
|
11305
|
+
"type": "boolean",
|
|
11306
|
+
"required": false
|
|
11307
|
+
},
|
|
10436
11308
|
"label": {
|
|
10437
11309
|
"type": "string",
|
|
10438
11310
|
"required": false
|
|
@@ -10552,7 +11424,11 @@
|
|
|
10552
11424
|
"options and grouping are controlled. A data option may supply product-owned orderOptions; otherwise Order defaults to Ascending and Descending. dsGroupChange reports a complete TableGroupingState and dsClear requests null grouping without mutating either input.",
|
|
10553
11425
|
"Selecting a new data point starts at its first custom order option, or ascending when it has no custom order options. Re-selecting the active data point preserves its complete order state.",
|
|
10554
11426
|
"Selecting a data point or direction applies immediately and leaves the dialog open so the other pane can be changed.",
|
|
10555
|
-
"The grouping picker automatically holds the shared surface-open wash through exit. Opening this picker is separate from expanding an inline table group."
|
|
11427
|
+
"The grouping picker automatically holds the shared surface-open wash through exit. Opening this picker is separate from expanding an inline table group.",
|
|
11428
|
+
"Embedded mode renders the same controlled content inside a parent-owned surface; the parent owns positioning, initial focus, Escape, Tab exit, and dismissal.",
|
|
11429
|
+
"Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
|
|
11430
|
+
"Expanded toolbar triggers use an icon and regular-weight text without a trailing chevron.",
|
|
11431
|
+
"Vertical presentation stacks grouping data and ordering, with an explicit No grouping choice and no Clear footer."
|
|
10556
11432
|
],
|
|
10557
11433
|
"responsiveBehavior": [
|
|
10558
11434
|
"Use in the trailing region of ds-table-toolbar.",
|
|
@@ -10595,6 +11471,10 @@
|
|
|
10595
11471
|
"type": "string",
|
|
10596
11472
|
"required": false
|
|
10597
11473
|
},
|
|
11474
|
+
"embedded": {
|
|
11475
|
+
"type": "boolean",
|
|
11476
|
+
"required": false
|
|
11477
|
+
},
|
|
10598
11478
|
"emptyMessage": {
|
|
10599
11479
|
"type": "string",
|
|
10600
11480
|
"required": false
|
|
@@ -10603,6 +11483,10 @@
|
|
|
10603
11483
|
"type": "TableGroupingState | null",
|
|
10604
11484
|
"required": false
|
|
10605
11485
|
},
|
|
11486
|
+
"hasBorder": {
|
|
11487
|
+
"type": "boolean",
|
|
11488
|
+
"required": false
|
|
11489
|
+
},
|
|
10606
11490
|
"open": {
|
|
10607
11491
|
"type": "boolean",
|
|
10608
11492
|
"required": false
|
|
@@ -10610,6 +11494,10 @@
|
|
|
10610
11494
|
"options": {
|
|
10611
11495
|
"type": "TableGroupOption[]",
|
|
10612
11496
|
"required": false
|
|
11497
|
+
},
|
|
11498
|
+
"vertical": {
|
|
11499
|
+
"type": "boolean",
|
|
11500
|
+
"required": false
|
|
10613
11501
|
}
|
|
10614
11502
|
},
|
|
10615
11503
|
"events": [
|
|
@@ -10645,6 +11533,180 @@
|
|
|
10645
11533
|
"text"
|
|
10646
11534
|
]
|
|
10647
11535
|
},
|
|
11536
|
+
{
|
|
11537
|
+
"id": "component:ds-table-preferences",
|
|
11538
|
+
"tag": "ds-table-preferences",
|
|
11539
|
+
"name": "table-preferences",
|
|
11540
|
+
"title": "TablePreferences",
|
|
11541
|
+
"summary": "Compact table preferences dialog with Filters, Sort, Group, and Customize tabs.",
|
|
11542
|
+
"intentStatus": "complete",
|
|
11543
|
+
"intent": {
|
|
11544
|
+
"audience": "general",
|
|
11545
|
+
"status": "experimental",
|
|
11546
|
+
"summary": "Compact table preferences dialog with Filters, Sort, Group, and Customize tabs.",
|
|
11547
|
+
"useWhen": [
|
|
11548
|
+
"A narrow table toolbar or a user preference calls for one result-shaping control."
|
|
11549
|
+
],
|
|
11550
|
+
"avoidWhen": [
|
|
11551
|
+
"The application needs unrelated actions or a submitted form."
|
|
11552
|
+
],
|
|
11553
|
+
"states": [
|
|
11554
|
+
"The application owns all filter, sort, grouping, and column configuration values. Apply emitted changes to the table and replace the matching preferences inputs.",
|
|
11555
|
+
"The component owns popup visibility, active tab, positioning, and dismissal; embedded controls reuse the same content as their standalone popups.",
|
|
11556
|
+
"Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
|
|
11557
|
+
"Apply-required filtering stages edits locally, including match mode. Clear immediately clears all filters and discards pending edits. The footer appears when filters are selected or applied; Apply stays in place and inactive without pending changes; applying emits controlled changes. Closing discards unapplied edits.",
|
|
11558
|
+
"Embedded presentation delegates its active tab, draft state, Apply, Reset, and dismissal to the owning panel; it renders vertical filter and grouping content without a popup trigger."
|
|
11559
|
+
],
|
|
11560
|
+
"accessibility": [
|
|
11561
|
+
"An icon-only Preferences trigger opens a named dialog. TabGroup owns section keyboard navigation; Escape and outside activation dismiss, returning focus to the trigger."
|
|
11562
|
+
],
|
|
11563
|
+
"responsiveBehavior": [
|
|
11564
|
+
"The popup fits the viewport and scrolls internally. The application chooses whether to show it instead of separate controls. Hide the table-owned Customize trigger while retaining column customization."
|
|
11565
|
+
],
|
|
11566
|
+
"patterns": [],
|
|
11567
|
+
"commonlyComposedWith": [
|
|
11568
|
+
"component:ds-table",
|
|
11569
|
+
"component:ds-table-toolbar",
|
|
11570
|
+
"component:ds-filter-menu",
|
|
11571
|
+
"component:ds-menu",
|
|
11572
|
+
"component:ds-table-group",
|
|
11573
|
+
"component:ds-tab-group"
|
|
11574
|
+
]
|
|
11575
|
+
},
|
|
11576
|
+
"api": {
|
|
11577
|
+
"props": {
|
|
11578
|
+
"activeFilterId": {
|
|
11579
|
+
"type": "string | undefined",
|
|
11580
|
+
"required": false
|
|
11581
|
+
},
|
|
11582
|
+
"activeTab": {
|
|
11583
|
+
"type": "PreferencesTab",
|
|
11584
|
+
"required": false
|
|
11585
|
+
},
|
|
11586
|
+
"columnOrder": {
|
|
11587
|
+
"type": "string[]",
|
|
11588
|
+
"required": false
|
|
11589
|
+
},
|
|
11590
|
+
"columns": {
|
|
11591
|
+
"type": "TableColumn[]",
|
|
11592
|
+
"required": false
|
|
11593
|
+
},
|
|
11594
|
+
"customizeOptions": {
|
|
11595
|
+
"type": "MenuItemData[]",
|
|
11596
|
+
"required": false
|
|
11597
|
+
},
|
|
11598
|
+
"customizeSections": {
|
|
11599
|
+
"type": "MenuSection[]",
|
|
11600
|
+
"required": false
|
|
11601
|
+
},
|
|
11602
|
+
"embedded": {
|
|
11603
|
+
"type": "boolean",
|
|
11604
|
+
"required": false
|
|
11605
|
+
},
|
|
11606
|
+
"filters": {
|
|
11607
|
+
"type": "FilterMenuFilter[]",
|
|
11608
|
+
"required": false
|
|
11609
|
+
},
|
|
11610
|
+
"grouping": {
|
|
11611
|
+
"type": "TableGroupingState | null",
|
|
11612
|
+
"required": false
|
|
11613
|
+
},
|
|
11614
|
+
"groupingOptions": {
|
|
11615
|
+
"type": "TableGroupOption[]",
|
|
11616
|
+
"required": false
|
|
11617
|
+
},
|
|
11618
|
+
"hasBorder": {
|
|
11619
|
+
"type": "boolean",
|
|
11620
|
+
"required": false
|
|
11621
|
+
},
|
|
11622
|
+
"hiddenColumnIds": {
|
|
11623
|
+
"type": "string[]",
|
|
11624
|
+
"required": false
|
|
11625
|
+
},
|
|
11626
|
+
"label": {
|
|
11627
|
+
"type": "string",
|
|
11628
|
+
"required": false
|
|
11629
|
+
},
|
|
11630
|
+
"matchModes": {
|
|
11631
|
+
"type": "FilterMenuMatchModes",
|
|
11632
|
+
"required": false
|
|
11633
|
+
},
|
|
11634
|
+
"sort": {
|
|
11635
|
+
"type": "TableSortState | null",
|
|
11636
|
+
"required": false
|
|
11637
|
+
},
|
|
11638
|
+
"sortColumns": {
|
|
11639
|
+
"type": "TableColumn[]",
|
|
11640
|
+
"required": false
|
|
11641
|
+
},
|
|
11642
|
+
"values": {
|
|
11643
|
+
"type": "FilterMenuValues",
|
|
11644
|
+
"required": false
|
|
11645
|
+
}
|
|
11646
|
+
},
|
|
11647
|
+
"events": [
|
|
11648
|
+
{
|
|
11649
|
+
"name": "dsActiveFilterChange",
|
|
11650
|
+
"detail": "string"
|
|
11651
|
+
},
|
|
11652
|
+
{
|
|
11653
|
+
"name": "dsColumnsConfigChange",
|
|
11654
|
+
"detail": "TableColumnsConfigChangeDetail"
|
|
11655
|
+
},
|
|
11656
|
+
{
|
|
11657
|
+
"name": "dsCustomizeOptionChange",
|
|
11658
|
+
"detail": "string"
|
|
11659
|
+
},
|
|
11660
|
+
{
|
|
11661
|
+
"name": "dsFilterChange",
|
|
11662
|
+
"detail": "FilterMenuChangeDetail"
|
|
11663
|
+
},
|
|
11664
|
+
{
|
|
11665
|
+
"name": "dsFilterMatchModeChange",
|
|
11666
|
+
"detail": "FilterMenuMatchModeChangeDetail"
|
|
11667
|
+
},
|
|
11668
|
+
{
|
|
11669
|
+
"name": "dsFiltersClear",
|
|
11670
|
+
"detail": "void"
|
|
11671
|
+
},
|
|
11672
|
+
{
|
|
11673
|
+
"name": "dsGroupChange",
|
|
11674
|
+
"detail": "TableGroupingState"
|
|
11675
|
+
},
|
|
11676
|
+
{
|
|
11677
|
+
"name": "dsGroupClear",
|
|
11678
|
+
"detail": "void"
|
|
11679
|
+
},
|
|
11680
|
+
{
|
|
11681
|
+
"name": "dsPreferencesTabChange",
|
|
11682
|
+
"detail": "PreferencesTab"
|
|
11683
|
+
},
|
|
11684
|
+
{
|
|
11685
|
+
"name": "dsSortChange",
|
|
11686
|
+
"detail": "TableSortChangeDetail"
|
|
11687
|
+
}
|
|
11688
|
+
],
|
|
11689
|
+
"slots": []
|
|
11690
|
+
},
|
|
11691
|
+
"exports": {
|
|
11692
|
+
"customElement": "ds-table-preferences",
|
|
11693
|
+
"react": "DsTablePreferences",
|
|
11694
|
+
"vue": "DsTablePreferences",
|
|
11695
|
+
"angular": "DsTablePreferences"
|
|
11696
|
+
},
|
|
11697
|
+
"dependencies": [
|
|
11698
|
+
"@ds-mo/ui",
|
|
11699
|
+
"@ds-mo/tokens"
|
|
11700
|
+
],
|
|
11701
|
+
"componentDependencies": [
|
|
11702
|
+
"button-unfilled",
|
|
11703
|
+
"filter-menu",
|
|
11704
|
+
"menu",
|
|
11705
|
+
"tab-group",
|
|
11706
|
+
"table-group",
|
|
11707
|
+
"tooltip"
|
|
11708
|
+
]
|
|
11709
|
+
},
|
|
10648
11710
|
{
|
|
10649
11711
|
"id": "component:ds-table-saved-views",
|
|
10650
11712
|
"tag": "ds-table-saved-views",
|
|
@@ -10669,7 +11731,8 @@
|
|
|
10669
11731
|
"component:ds-table",
|
|
10670
11732
|
"component:ds-select",
|
|
10671
11733
|
"component:ds-menu",
|
|
10672
|
-
"component:ds-modal"
|
|
11734
|
+
"component:ds-modal",
|
|
11735
|
+
"component:ds-field"
|
|
10673
11736
|
],
|
|
10674
11737
|
"patterns": [
|
|
10675
11738
|
"pattern:menu-trigger"
|
|
@@ -10677,17 +11740,22 @@
|
|
|
10677
11740
|
"accessibility": [
|
|
10678
11741
|
"The primary control retains combobox semantics and exposes a direct accessible name.",
|
|
10679
11742
|
"Each custom view exposes a separately named options trigger. The options menu supports keyboard navigation and returns focus through the shared Select and Menu behavior.",
|
|
10680
|
-
"The naming dialog traps focus through Modal behavior,
|
|
11743
|
+
"The naming dialog traps focus through Modal behavior. The dialog heading names the task, so the name field omits a visible label; the input keeps aria-label Name, Field associates validation text, and focus returns to the saved-views control after closing.",
|
|
11744
|
+
"Footer actions are assigned with slot=\"footer\" on each button so Modal owns the two-action layout."
|
|
10681
11745
|
],
|
|
10682
11746
|
"states": [
|
|
10683
11747
|
"views, value, and dirty are controlled. Dirty state is presented only for a selected custom view; the default template never shows the trigger dot or save/discard actions even if dirty is supplied. Selection, create, save, discard, rename, and remove events communicate intent and never mutate application records.",
|
|
10684
11748
|
"The component owns only transient interaction state: the contextual menu, naming dialog, draft name, duplicate-name validation, and focus restoration.",
|
|
10685
11749
|
"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.",
|
|
10686
|
-
"The built-in picker and contextual option menu each retain their own surface-open treatment. Opening a view menu does not select that view."
|
|
11750
|
+
"The built-in picker and contextual option menu each retain their own surface-open treatment. Opening a view menu does not select that view.",
|
|
11751
|
+
"Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
|
|
11752
|
+
"Expanded toolbar triggers use an icon and regular-weight text without a trailing chevron.",
|
|
11753
|
+
"Selected views and applied filters do not promote trigger icon or label colors. Trigger colors remain neutral across value changes."
|
|
10687
11754
|
],
|
|
10688
11755
|
"responsiveBehavior": [
|
|
10689
11756
|
"The control remains a single toolbar item and relies on Select, Menu, and Modal collision and viewport behavior. Its trigger hugs short view names and is capped at the compact menu-width token so long names truncate while the dirty dot stays visible. Its choice popup keeps that same token as the minimum width.",
|
|
10690
|
-
"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."
|
|
11757
|
+
"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.",
|
|
11758
|
+
"The ViewMenu prefix identifies saved views. Compact compositions and narrow table captions show only the icon while retaining the accessible name and tooltip."
|
|
10691
11759
|
],
|
|
10692
11760
|
"frameworkCaveats": {
|
|
10693
11761
|
"customElements": [
|
|
@@ -10717,6 +11785,10 @@
|
|
|
10717
11785
|
},
|
|
10718
11786
|
"api": {
|
|
10719
11787
|
"props": {
|
|
11788
|
+
"compact": {
|
|
11789
|
+
"type": "boolean",
|
|
11790
|
+
"required": false
|
|
11791
|
+
},
|
|
10720
11792
|
"createLabel": {
|
|
10721
11793
|
"type": "string",
|
|
10722
11794
|
"required": false
|
|
@@ -10733,6 +11805,10 @@
|
|
|
10733
11805
|
"type": "boolean",
|
|
10734
11806
|
"required": false
|
|
10735
11807
|
},
|
|
11808
|
+
"hasBorder": {
|
|
11809
|
+
"type": "boolean",
|
|
11810
|
+
"required": false
|
|
11811
|
+
},
|
|
10736
11812
|
"label": {
|
|
10737
11813
|
"type": "string",
|
|
10738
11814
|
"required": false
|
|
@@ -10830,7 +11906,7 @@
|
|
|
10830
11906
|
"Typing slash opens the field listbox without inserting slash into the table query. Text typed while it is open filters data points by complete label, Up and Down change the active match, Enter selects it, Escape closes it, and Left and Right retain native text-cursor behavior because focus never leaves the input. Backspace edits the field-picker query first and closes the listbox when that query is empty.",
|
|
10831
11907
|
"The query disables browser autocomplete history, automatic capitalization, autocorrection, and spellchecking so browser-owned suggestions never obscure the product-owned field menu or table results.",
|
|
10832
11908
|
"Selected field Chips have individually labeled remove actions and are also described by the search input. Polite announcements report additions, removals, and clearing without duplicating the visible query.",
|
|
10833
|
-
"The
|
|
11909
|
+
"The search input exposes the slash command through aria-keyshortcuts and its description, without a visible suffix button.",
|
|
10834
11910
|
"The clear action removes both free text and every selected field. It restores focus to the search input; each Chip's own remove action remains scoped to that field."
|
|
10835
11911
|
],
|
|
10836
11912
|
"states": [
|
|
@@ -10840,12 +11916,13 @@
|
|
|
10840
11916
|
"Backspace edits a non-empty field-picker query, then closes the open slash listbox when that query is empty. When the table query is empty and the listbox is already closed, the next Backspace removes the last selected field. Ordinary Backspace edits table query text when the listbox is closed.",
|
|
10841
11917
|
"Duplicate, blank, and unknown field identities are ignored for presentation. Selected fields preserve the consumer's order.",
|
|
10842
11918
|
"Inactive search leaves the tab order, closes the field listbox, and does not emit query or field changes.",
|
|
10843
|
-
"The field-picker action holds the shared surface-open wash while its listbox is visible; chosen search fields remain independent."
|
|
11919
|
+
"The field-picker action holds the shared surface-open wash while its listbox is visible; chosen search fields remain independent.",
|
|
11920
|
+
"Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback."
|
|
10844
11921
|
],
|
|
10845
11922
|
"responsiveBehavior": [
|
|
10846
11923
|
"The control fills the available inline size supplied by the table toolbar search slot. Selected Chips and the editable query share one horizontal editor lane so the md control does not grow vertically.",
|
|
10847
11924
|
"The field popup enters the top layer, aligns its first choice cell with the search control, flips or clamps to the viewport or nearest overlay boundary, and scrolls internally when its catalog is taller than available space.",
|
|
10848
|
-
"
|
|
11925
|
+
"Clear appears when query text is present and uses the standard sm icon button treatment."
|
|
10849
11926
|
],
|
|
10850
11927
|
"frameworkCaveats": {
|
|
10851
11928
|
"customElements": [
|
|
@@ -10892,6 +11969,10 @@
|
|
|
10892
11969
|
"type": "string",
|
|
10893
11970
|
"required": false
|
|
10894
11971
|
},
|
|
11972
|
+
"hasBorder": {
|
|
11973
|
+
"type": "boolean",
|
|
11974
|
+
"required": false
|
|
11975
|
+
},
|
|
10895
11976
|
"isInactive": {
|
|
10896
11977
|
"type": "boolean",
|
|
10897
11978
|
"required": false
|
|
@@ -10939,7 +12020,6 @@
|
|
|
10939
12020
|
"componentDependencies": [
|
|
10940
12021
|
"button-unfilled",
|
|
10941
12022
|
"chip",
|
|
10942
|
-
"divider",
|
|
10943
12023
|
"empty-state",
|
|
10944
12024
|
"icon",
|
|
10945
12025
|
"text"
|
|
@@ -10993,7 +12073,9 @@
|
|
|
10993
12073
|
"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.",
|
|
10994
12074
|
"The trigger stays Sort in regular-weight resting secondary chrome. Field and direction selection live in the menu and on column headers, so the trigger never uses active primary emphasis. It keeps pressed interaction paint without physically scaling inside the stable table caption row.",
|
|
10995
12075
|
"Compound sortable headers contribute one Data row per segment. Action columns never appear.",
|
|
10996
|
-
"The trigger automatically holds the shared surface-open wash through menu exit while the selected sort remains independently controlled."
|
|
12076
|
+
"The trigger automatically holds the shared surface-open wash through menu exit while the selected sort remains independently controlled.",
|
|
12077
|
+
"Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
|
|
12078
|
+
"Expanded toolbar triggers use an icon and regular-weight text without a trailing chevron."
|
|
10997
12079
|
],
|
|
10998
12080
|
"responsiveBehavior": [
|
|
10999
12081
|
"Place the control in the trailing region of ds-table-toolbar with Filter and Group.",
|
|
@@ -11036,6 +12118,10 @@
|
|
|
11036
12118
|
"type": "TableColumn[]",
|
|
11037
12119
|
"required": false
|
|
11038
12120
|
},
|
|
12121
|
+
"hasBorder": {
|
|
12122
|
+
"type": "boolean",
|
|
12123
|
+
"required": false
|
|
12124
|
+
},
|
|
11039
12125
|
"sort": {
|
|
11040
12126
|
"type": "TableSortState | null",
|
|
11041
12127
|
"required": false
|
|
@@ -11093,7 +12179,8 @@
|
|
|
11093
12179
|
"component:ds-table-group",
|
|
11094
12180
|
"component:ds-select",
|
|
11095
12181
|
"component:ds-table-sort",
|
|
11096
|
-
"component:ds-button-unfilled"
|
|
12182
|
+
"component:ds-button-unfilled",
|
|
12183
|
+
"component:ds-table-preferences"
|
|
11097
12184
|
],
|
|
11098
12185
|
"patterns": [],
|
|
11099
12186
|
"accessibility": [
|
|
@@ -11104,14 +12191,15 @@
|
|
|
11104
12191
|
"states": [
|
|
11105
12192
|
"The component owns layout only. It never mutates slotted control props, values, menus, loading, persistence, or consequences. Use ds-table-saved-views and ds-table-filter when those interactions need the shared CompoMo behavior while application data and persistence remain external.",
|
|
11106
12193
|
"Buttons in the toolbar keep their hover and pressed interaction paint without physically scaling, so pointer feedback does not disturb the stable caption geometry.",
|
|
11107
|
-
"The start cluster is followed by
|
|
11108
|
-
"
|
|
12194
|
+
"The start cluster is followed by Search, optional leading controls, and one trailing action cluster. The start cluster hides when nothing is projected. Search is a dedicated slot that hides when nothing is projected and grows to consume available row space. Empty leading or trailing clusters add no placeholder chrome. Search is the only toolbar region that grows and shrinks; all action controls retain their control geometry and align directly before the table-owned actions.",
|
|
12195
|
+
"Data-mode switching remains a table-owned caption action. Column customization normally uses the table caption trigger; compact compositions use the shared ds-table-preferences control and hide that trigger. When slotted into a table header, the table caption owns overflow for the complete toolbar and table-owned action row.",
|
|
12196
|
+
"Standard toolbars omit region dividers. Borderless compositions show dividers after populated start and search regions when another region follows; the application supplies borderless controls."
|
|
11109
12197
|
],
|
|
11110
12198
|
"responsiveBehavior": [
|
|
11111
12199
|
"The start cluster, search, trailing Filter/Sort/Group, and table caption trailing actions stay on one line. Saved views hug their current trigger content up to the compact menu-width token rather than reserving that full width; long names truncate while the dirty dot stays visible. Filter, Sort, and Group triggers cap at the same token, and Sort and Group popups keep that compact menu-width floor. A standalone toolbar owns its horizontal scrolling; inside a table, the complete caption row is the single overflow owner so table-owned actions never remain pinned over scrolling toolbar controls.",
|
|
11112
|
-
"Search consumes the row space left between fixed control groups and flexes smaller when the complete row needs space. Inside a named ds-table container narrower than 900px, ds-table-filter, ds-table-group, and ds-table-sort omit their labels and chevrons; each exposes its label through a hover and keyboard-focus tooltip. Empty leading and trailing slot groups do not add spacing. Active filtering
|
|
12200
|
+
"Search consumes the row space left between fixed control groups and flexes smaller when the complete row needs space. Inside a named ds-table container narrower than 900px, ds-table-filter, ds-table-group, and ds-table-sort omit their labels and chevrons; each exposes its label through a hover and keyboard-focus tooltip. Empty leading and trailing slot groups do not add spacing. Active filtering retains neutral trigger colors. Group and Sort keep resting secondary chrome. Table-owned Customize also becomes the icon-only Table menu button at that width with the same tooltip behavior.",
|
|
11113
12201
|
"The scrollbar is visually suppressed without removing touch, trackpad, mouse-wheel, or keyboard scrolling from the overflow container.",
|
|
11114
|
-
"
|
|
12202
|
+
"For compact toolbars, the application can replace Filter, Sort, Group and the table Customize trigger with ds-table-preferences in the trailing slot. Share the same controlled values and events; the toolbar remains a data-agnostic layout."
|
|
11115
12203
|
],
|
|
11116
12204
|
"frameworkCaveats": {
|
|
11117
12205
|
"customElements": [
|
|
@@ -11137,6 +12225,10 @@
|
|
|
11137
12225
|
},
|
|
11138
12226
|
"api": {
|
|
11139
12227
|
"props": {
|
|
12228
|
+
"borderless": {
|
|
12229
|
+
"type": "boolean",
|
|
12230
|
+
"required": false
|
|
12231
|
+
},
|
|
11140
12232
|
"label": {
|
|
11141
12233
|
"type": "string",
|
|
11142
12234
|
"required": false
|
|
@@ -11540,7 +12632,7 @@
|
|
|
11540
12632
|
"The default four visible rows can be changed with rows; rows is clamped to at least one.",
|
|
11541
12633
|
"Vertical resizing is enabled by default and can be disabled when the surrounding layout owns the field height.",
|
|
11542
12634
|
"Size changes typography and inset spacing without changing the authored row count.",
|
|
11543
|
-
"Border, focus, error, placeholder, inactive, hover, and pressed treatments follow the same shared recipes as Input."
|
|
12635
|
+
"Border, focus, error, placeholder, inactive, hover, and pressed treatments follow the same shared recipes as Input. When hasBorder is false, supporting error copy insets to the text origin rather than the resting border box."
|
|
11544
12636
|
],
|
|
11545
12637
|
"responsiveBehavior": [
|
|
11546
12638
|
"Textarea fills its parent by default and follows the width supplied by Field or the form layout.",
|
|
@@ -11699,6 +12791,119 @@
|
|
|
11699
12791
|
"text"
|
|
11700
12792
|
]
|
|
11701
12793
|
},
|
|
12794
|
+
{
|
|
12795
|
+
"id": "component:ds-time-picker",
|
|
12796
|
+
"tag": "ds-time-picker",
|
|
12797
|
+
"name": "time-picker",
|
|
12798
|
+
"title": "TimePicker",
|
|
12799
|
+
"summary": "Bounded 12-hour clock lists for choosing hour, minute, and AM/PM, reused by form time fields.",
|
|
12800
|
+
"intentStatus": "complete",
|
|
12801
|
+
"intent": {
|
|
12802
|
+
"audience": "general",
|
|
12803
|
+
"status": "stable",
|
|
12804
|
+
"summary": "Bounded 12-hour clock lists for choosing hour, minute, and AM/PM, reused by form time fields.",
|
|
12805
|
+
"useWhen": [
|
|
12806
|
+
"A user picks a clock time from hour, minute, and AM/PM lists.",
|
|
12807
|
+
"A time field needs 32px clock tiles that match calendar day geometry and the shared choice-list selected treatment."
|
|
12808
|
+
],
|
|
12809
|
+
"avoidWhen": [
|
|
12810
|
+
"The user types a time without opening a picker; the owning field keeps that editable value.",
|
|
12811
|
+
"The value is a calendar date rather than a clock time.",
|
|
12812
|
+
"The user chooses from a finite set of named schedule options rather than an exact time."
|
|
12813
|
+
],
|
|
12814
|
+
"alternatives": [
|
|
12815
|
+
{
|
|
12816
|
+
"when": "The time is a form field that can be typed or picked.",
|
|
12817
|
+
"component": "component:ds-input-time",
|
|
12818
|
+
"reason": "InputTime owns the editable field, form association, and the time-picker popup."
|
|
12819
|
+
},
|
|
12820
|
+
{
|
|
12821
|
+
"when": "The value is a calendar date.",
|
|
12822
|
+
"component": "component:ds-calendar",
|
|
12823
|
+
"reason": "Calendar owns the month grid for single dates and ranges."
|
|
12824
|
+
}
|
|
12825
|
+
],
|
|
12826
|
+
"commonlyComposedWith": [
|
|
12827
|
+
"component:ds-input-time",
|
|
12828
|
+
"component:ds-text"
|
|
12829
|
+
],
|
|
12830
|
+
"accessibility": [
|
|
12831
|
+
"Hour, minute, and AM/PM are separate labelled listboxes without visible column headings. Each list keeps one tab stop on the selected option.",
|
|
12832
|
+
"Arrow keys move to the next or previous option and stop at the first and last values; they do not wrap. Home and End jump to those ends. Left and Right move between columns and stop at Hour and AM/PM.",
|
|
12833
|
+
"Inactive pickers disable every option. Optional min and max times disable combinations outside that inclusive bound."
|
|
12834
|
+
],
|
|
12835
|
+
"states": [
|
|
12836
|
+
"Selected hour, minute, and period tiles use the shared interaction-fill selected wash and primary text. Resting tiles use secondary text on a transparent 32px square.",
|
|
12837
|
+
"Lists are finite. Hour runs 1 through 12, minutes follow the step, and AM/PM has two values. Scrolling and keyboard movement stop at those ends instead of looping.",
|
|
12838
|
+
"An empty value highlights 12:00 AM so the lists have a resting selection without inventing a second empty state."
|
|
12839
|
+
],
|
|
12840
|
+
"responsiveBehavior": [
|
|
12841
|
+
"The three columns fill the width supplied by the owner. Tile size, 4px gaps, and the seven-tile list viewport are owned here; the owner supplies the popup or pane width."
|
|
12842
|
+
],
|
|
12843
|
+
"frameworkCaveats": {
|
|
12844
|
+
"customElements": [
|
|
12845
|
+
"Listen for dsChange. The detail is the clock time string HH:MM."
|
|
12846
|
+
],
|
|
12847
|
+
"react": [
|
|
12848
|
+
"Use DsTimePicker, bind value, and handle onDsChange."
|
|
12849
|
+
]
|
|
12850
|
+
},
|
|
12851
|
+
"references": [
|
|
12852
|
+
{
|
|
12853
|
+
"label": "Storybook examples",
|
|
12854
|
+
"path": "src/wc/components/TimePicker/TimePicker.stories.ts"
|
|
12855
|
+
}
|
|
12856
|
+
]
|
|
12857
|
+
},
|
|
12858
|
+
"api": {
|
|
12859
|
+
"props": {
|
|
12860
|
+
"autoFocus": {
|
|
12861
|
+
"type": "boolean",
|
|
12862
|
+
"required": false
|
|
12863
|
+
},
|
|
12864
|
+
"isInactive": {
|
|
12865
|
+
"type": "boolean",
|
|
12866
|
+
"required": false
|
|
12867
|
+
},
|
|
12868
|
+
"max": {
|
|
12869
|
+
"type": "string | undefined",
|
|
12870
|
+
"required": false
|
|
12871
|
+
},
|
|
12872
|
+
"min": {
|
|
12873
|
+
"type": "string | undefined",
|
|
12874
|
+
"required": false
|
|
12875
|
+
},
|
|
12876
|
+
"step": {
|
|
12877
|
+
"type": "string | number",
|
|
12878
|
+
"required": false
|
|
12879
|
+
},
|
|
12880
|
+
"value": {
|
|
12881
|
+
"type": "string",
|
|
12882
|
+
"required": false
|
|
12883
|
+
}
|
|
12884
|
+
},
|
|
12885
|
+
"events": [
|
|
12886
|
+
{
|
|
12887
|
+
"name": "dsChange",
|
|
12888
|
+
"detail": "string"
|
|
12889
|
+
}
|
|
12890
|
+
],
|
|
12891
|
+
"slots": []
|
|
12892
|
+
},
|
|
12893
|
+
"exports": {
|
|
12894
|
+
"customElement": "ds-time-picker",
|
|
12895
|
+
"react": "DsTimePicker",
|
|
12896
|
+
"vue": "DsTimePicker",
|
|
12897
|
+
"angular": "DsTimePicker"
|
|
12898
|
+
},
|
|
12899
|
+
"dependencies": [
|
|
12900
|
+
"@ds-mo/ui",
|
|
12901
|
+
"@ds-mo/tokens"
|
|
12902
|
+
],
|
|
12903
|
+
"componentDependencies": [
|
|
12904
|
+
"text"
|
|
12905
|
+
]
|
|
12906
|
+
},
|
|
11702
12907
|
{
|
|
11703
12908
|
"id": "component:ds-toast",
|
|
11704
12909
|
"tag": "ds-toast",
|