@ds-mo/ui 14.35.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 +1105 -187
- 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-input-date.d.ts +15 -0
- package/dist/angular/ds-input-date.js +43 -0
- package/dist/angular/ds-input-time.d.ts +15 -0
- package/dist/angular/ds-input-time.js +43 -0
- package/dist/angular/ds-input.d.ts +1 -1
- package/dist/angular/ds-input.js +3 -3
- package/dist/angular/ds-select.d.ts +1 -1
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-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 +5 -0
- package/dist/angular/proxies.d.ts +5 -0
- package/dist/angular/proxies.js +5 -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-bubble.js.map +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-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-preferences.js +1 -1
- package/dist/components/ds-table-preferences.js.map +1 -1
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-saved-views.js.map +1 -1
- package/dist/components/ds-table-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.js +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-CI7VfYC3.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-CE540WZ7.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-xHGqrz_p.js → p-BOhpMUwO.js} +2 -2
- package/dist/components/{p-DdspY23v.js → p-BV5T1hzN.js} +2 -2
- package/dist/components/{p-DTDLlinw.js → p-BWfzaSc3.js} +2 -2
- package/dist/components/{p-CLGtPE0K.js → p-BgLI9JoT.js} +2 -2
- package/dist/components/{p-DGzn4k4h.js → p-C-dHtQMi.js} +2 -2
- package/dist/components/p-C0CE2v5D.js +2 -0
- package/dist/components/{p-yZRXPHDe.js → p-C2JnoaWI.js} +2 -2
- package/dist/components/{p-umAf0fBn.js → p-C4m8y9ki.js} +2 -2
- package/dist/components/{p-CAxDdYjh.js → p-CDJ2Ntcq.js} +2 -2
- package/dist/components/{p-DQQFN2sw.js → p-CMQUuGvl.js} +2 -2
- package/dist/components/{p-BQaO7cg_.js → p-CQ5RwY2C.js} +2 -2
- package/dist/components/p-CQIh2yRP.js +2 -0
- package/dist/components/{p-C1_3CVma.js.map → p-CQIh2yRP.js.map} +1 -1
- package/dist/components/{p-DEGNrPLe.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-beRFLHbB.js → p-CaNCGKEJ.js} +2 -2
- package/dist/components/p-CbSUyv5B.js +2 -0
- package/dist/components/{p-BINSI_KF.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-DFjIBS5B.js → p-Ce4zy8q1.js} +2 -2
- package/dist/components/{p-BcdHgPi5.js → p-CeXf9-X3.js} +2 -2
- package/dist/components/{p-omPm8_vx.js → p-Cga6Ex0E.js} +2 -2
- package/dist/components/{p-y06IxxoN.js → p-Cl9phSf0.js} +2 -2
- package/dist/components/{p-Dk-8Ju0Q.js → p-ClJhuG5Y.js} +2 -2
- package/dist/components/{p-BmFeeR4q.js → p-CqW2eyiF.js} +2 -2
- package/dist/components/p-Cus1Sigh.js +2 -0
- package/dist/components/{p-N5SHSVo2.js.map → p-Cus1Sigh.js.map} +1 -1
- package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
- package/dist/components/{p-CwqFJMvP.js → p-D7yBIPB6.js} +2 -2
- package/dist/components/p-D8rpKod8.js +2 -0
- package/dist/components/p-D8rpKod8.js.map +1 -0
- package/dist/components/{p-DtLQIMsa.js → p-DBwa1OXP.js} +2 -2
- package/dist/components/{p-BQsVI_vO.js → p-DK9Ex3aY.js} +2 -2
- package/dist/components/{p-CqlBlv55.js → p-DLXXGgmf.js} +2 -2
- package/dist/components/{p-BnzsBNUY.js → p-DVd1TIxi.js} +2 -2
- package/dist/components/p-DZ58Sg5a.js.map +1 -1
- package/dist/components/{p-CZOiTaNa.js → p-DgG9W9N4.js} +2 -2
- package/dist/components/{p-mpk_Mm8_.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-C7CZ9pnP.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-C8ek-1SP.js → p-DvzI2A_M.js} +2 -2
- package/dist/components/p-J5x-QtlD.js +2 -0
- package/dist/components/{p-beCz9OnD.js.map → p-J5x-QtlD.js.map} +1 -1
- package/dist/components/{p-CSnsz3Eb.js → p-Jaqdfw4E.js} +2 -2
- package/dist/components/p-MQ36mEgn.js +2 -0
- package/dist/components/{p-UAIxh67Q.js.map → p-MQ36mEgn.js.map} +1 -1
- package/dist/components/{p-BnWxbhFP.js → p-PmcUwTQ_.js} +2 -2
- package/dist/components/p-TjXGRPik.js +2 -0
- package/dist/components/{p-B-9fdIWv.js.map → p-TjXGRPik.js.map} +1 -1
- package/dist/components/{p-Cq_Qpe_C.js → p-bM3LH3kc.js} +2 -2
- package/dist/components/{p-BPhbwXOv.js → p-ji09W9el.js} +2 -2
- package/dist/components/{p-n68x-ZKp.js → p-neWTRxmf.js} +2 -2
- package/dist/components/{p-BPlWEidl.js → p-rYePOPbJ.js} +2 -2
- package/dist/components/{p-D44g2Kw1.js → p-su6y4hLK.js} +2 -2
- package/dist/components/p-su6y4hLK.js.map +1 -0
- package/dist/components/{p-DC69DgAR.js → p-tNQ0YulU.js} +2 -2
- package/dist/components/{p-Cwz9TPVS.js → p-x1wf38q3.js} +2 -2
- package/dist/docs/components.json +6485 -3451
- 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 +6 -10
- 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/registry.json +1118 -185
- package/dist/mcp-data/registry/select.json +63 -7
- package/dist/mcp-data/registry/table-saved-views.json +6 -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 +5 -0
- package/dist/react/components.js +5 -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-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 +0 -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/Select/Select.d.ts +8 -1
- package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
- package/dist/types/components.d.ts +858 -27
- 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 +5 -0
- package/dist/vue/components.js +5 -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-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-select.js +3 -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-9fdIWv.js +0 -2
- package/dist/components/p-BINSI_KF.js +0 -2
- package/dist/components/p-BbfBvMRR.js +0 -2
- package/dist/components/p-BbfBvMRR.js.map +0 -1
- package/dist/components/p-C1_3CVma.js +0 -2
- package/dist/components/p-Cmj04E5Q.js +0 -2
- package/dist/components/p-Cmj04E5Q.js.map +0 -1
- package/dist/components/p-D44g2Kw1.js.map +0 -1
- package/dist/components/p-D_u8WhlU.js +0 -2
- package/dist/components/p-Dhw_W8nk.js.map +0 -1
- package/dist/components/p-FPZbS19l.js +0 -2
- package/dist/components/p-FPZbS19l.js.map +0 -1
- package/dist/components/p-N5SHSVo2.js +0 -2
- package/dist/components/p-QjkufCcn.js +0 -2
- package/dist/components/p-QjkufCcn.js.map +0 -1
- package/dist/components/p-UAIxh67Q.js +0 -2
- package/dist/components/p-beCz9OnD.js +0 -2
- package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
- /package/dist/components/{p-CI7VfYC3.js.map → p-2GVGhrh0.js.map} +0 -0
- /package/dist/components/{p-CE540WZ7.js.map → p-8oRkhvjy.js.map} +0 -0
- /package/dist/components/{p-xHGqrz_p.js.map → p-BOhpMUwO.js.map} +0 -0
- /package/dist/components/{p-DdspY23v.js.map → p-BV5T1hzN.js.map} +0 -0
- /package/dist/components/{p-DTDLlinw.js.map → p-BWfzaSc3.js.map} +0 -0
- /package/dist/components/{p-CLGtPE0K.js.map → p-BgLI9JoT.js.map} +0 -0
- /package/dist/components/{p-DGzn4k4h.js.map → p-C-dHtQMi.js.map} +0 -0
- /package/dist/components/{p-D_u8WhlU.js.map → p-C0CE2v5D.js.map} +0 -0
- /package/dist/components/{p-yZRXPHDe.js.map → p-C2JnoaWI.js.map} +0 -0
- /package/dist/components/{p-umAf0fBn.js.map → p-C4m8y9ki.js.map} +0 -0
- /package/dist/components/{p-CAxDdYjh.js.map → p-CDJ2Ntcq.js.map} +0 -0
- /package/dist/components/{p-DQQFN2sw.js.map → p-CMQUuGvl.js.map} +0 -0
- /package/dist/components/{p-BQaO7cg_.js.map → p-CQ5RwY2C.js.map} +0 -0
- /package/dist/components/{p-DEGNrPLe.js.map → p-CWPT3aOB.js.map} +0 -0
- /package/dist/components/{p-beRFLHbB.js.map → p-CaNCGKEJ.js.map} +0 -0
- /package/dist/components/{p-DFjIBS5B.js.map → p-Ce4zy8q1.js.map} +0 -0
- /package/dist/components/{p-BcdHgPi5.js.map → p-CeXf9-X3.js.map} +0 -0
- /package/dist/components/{p-omPm8_vx.js.map → p-Cga6Ex0E.js.map} +0 -0
- /package/dist/components/{p-y06IxxoN.js.map → p-Cl9phSf0.js.map} +0 -0
- /package/dist/components/{p-Dk-8Ju0Q.js.map → p-ClJhuG5Y.js.map} +0 -0
- /package/dist/components/{p-BmFeeR4q.js.map → p-CqW2eyiF.js.map} +0 -0
- /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
- /package/dist/components/{p-CwqFJMvP.js.map → p-D7yBIPB6.js.map} +0 -0
- /package/dist/components/{p-DtLQIMsa.js.map → p-DBwa1OXP.js.map} +0 -0
- /package/dist/components/{p-BQsVI_vO.js.map → p-DK9Ex3aY.js.map} +0 -0
- /package/dist/components/{p-CqlBlv55.js.map → p-DLXXGgmf.js.map} +0 -0
- /package/dist/components/{p-BnzsBNUY.js.map → p-DVd1TIxi.js.map} +0 -0
- /package/dist/components/{p-CZOiTaNa.js.map → p-DgG9W9N4.js.map} +0 -0
- /package/dist/components/{p-mpk_Mm8_.js.map → p-DkfM55x8.js.map} +0 -0
- /package/dist/components/{p-C7CZ9pnP.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-C8ek-1SP.js.map → p-DvzI2A_M.js.map} +0 -0
- /package/dist/components/{p-CSnsz3Eb.js.map → p-Jaqdfw4E.js.map} +0 -0
- /package/dist/components/{p-BnWxbhFP.js.map → p-PmcUwTQ_.js.map} +0 -0
- /package/dist/components/{p-Cq_Qpe_C.js.map → p-bM3LH3kc.js.map} +0 -0
- /package/dist/components/{p-BPhbwXOv.js.map → p-ji09W9el.js.map} +0 -0
- /package/dist/components/{p-n68x-ZKp.js.map → p-neWTRxmf.js.map} +0 -0
- /package/dist/components/{p-BPlWEidl.js.map → p-rYePOPbJ.js.map} +0 -0
- /package/dist/components/{p-DC69DgAR.js.map → p-tNQ0YulU.js.map} +0 -0
- /package/dist/components/{p-Cwz9TPVS.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,107 +2643,231 @@
|
|
|
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": "
|
|
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",
|
|
2535
2871
|
"vue": "DsCardActionCenter",
|
|
2536
2872
|
"angular": "DsCardActionCenter"
|
|
2537
2873
|
},
|
|
@@ -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
|
],
|
|
@@ -4719,7 +5063,7 @@
|
|
|
4719
5063
|
],
|
|
4720
5064
|
"componentDependencies": [
|
|
4721
5065
|
"badge",
|
|
4722
|
-
"
|
|
5066
|
+
"calendar",
|
|
4723
5067
|
"checkbox",
|
|
4724
5068
|
"empty-state",
|
|
4725
5069
|
"icon",
|
|
@@ -4823,125 +5167,615 @@
|
|
|
4823
5167
|
"type": "IconColor",
|
|
4824
5168
|
"required": false
|
|
4825
5169
|
},
|
|
4826
|
-
"label": {
|
|
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."
|
|
5555
|
+
],
|
|
5556
|
+
"react": [
|
|
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."
|
|
5561
|
+
],
|
|
5562
|
+
"angular": [
|
|
5563
|
+
"Import DsInputDate with TextValueAccessor when integrating with Angular Forms."
|
|
5564
|
+
]
|
|
5565
|
+
},
|
|
5566
|
+
"references": [
|
|
5567
|
+
{
|
|
5568
|
+
"label": "Storybook examples",
|
|
5569
|
+
"path": "src/wc/components/InputDate/InputDate.stories.ts"
|
|
5570
|
+
},
|
|
5571
|
+
{
|
|
5572
|
+
"label": "Cross-browser form and accessibility coverage",
|
|
5573
|
+
"path": "tests/e2e/forms.spec.ts"
|
|
5574
|
+
}
|
|
5575
|
+
]
|
|
5576
|
+
},
|
|
5577
|
+
"api": {
|
|
5578
|
+
"props": {
|
|
5579
|
+
"ariaDescribedby": {
|
|
5580
|
+
"type": "string | undefined",
|
|
5581
|
+
"required": false
|
|
5582
|
+
},
|
|
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": {
|
|
4827
5632
|
"type": "string | undefined",
|
|
4828
5633
|
"required": false
|
|
4829
5634
|
},
|
|
4830
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": {
|
|
4831
5648
|
"type": "string",
|
|
4832
5649
|
"required": false
|
|
4833
5650
|
},
|
|
4834
5651
|
"size": {
|
|
4835
|
-
"type": "
|
|
5652
|
+
"type": "InputDateSize",
|
|
5653
|
+
"required": false
|
|
5654
|
+
},
|
|
5655
|
+
"value": {
|
|
5656
|
+
"type": "string",
|
|
5657
|
+
"required": false
|
|
5658
|
+
},
|
|
5659
|
+
"width": {
|
|
5660
|
+
"type": "InputDateWidth",
|
|
4836
5661
|
"required": false
|
|
4837
5662
|
}
|
|
4838
5663
|
},
|
|
4839
|
-
"events": [
|
|
5664
|
+
"events": [
|
|
5665
|
+
{
|
|
5666
|
+
"name": "dsChange",
|
|
5667
|
+
"detail": "string"
|
|
5668
|
+
}
|
|
5669
|
+
],
|
|
4840
5670
|
"slots": []
|
|
4841
5671
|
},
|
|
4842
5672
|
"exports": {
|
|
4843
|
-
"customElement": "ds-
|
|
4844
|
-
"react": "
|
|
4845
|
-
"vue": "
|
|
4846
|
-
"angular": "
|
|
5673
|
+
"customElement": "ds-input-date",
|
|
5674
|
+
"react": "DsInputDate",
|
|
5675
|
+
"vue": "DsInputDate",
|
|
5676
|
+
"angular": "DsInputDate"
|
|
4847
5677
|
},
|
|
4848
5678
|
"dependencies": [
|
|
4849
5679
|
"@ds-mo/ui",
|
|
4850
|
-
"@ds-mo/tokens"
|
|
4851
|
-
"@ds-mo/icons"
|
|
5680
|
+
"@ds-mo/tokens"
|
|
4852
5681
|
],
|
|
4853
|
-
"componentDependencies": [
|
|
5682
|
+
"componentDependencies": [
|
|
5683
|
+
"button-unfilled",
|
|
5684
|
+
"calendar",
|
|
5685
|
+
"text"
|
|
5686
|
+
]
|
|
4854
5687
|
},
|
|
4855
5688
|
{
|
|
4856
|
-
"id": "component:ds-input",
|
|
4857
|
-
"tag": "ds-input",
|
|
4858
|
-
"name": "input",
|
|
4859
|
-
"title": "
|
|
4860
|
-
"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.",
|
|
4861
5694
|
"intentStatus": "complete",
|
|
4862
5695
|
"intent": {
|
|
4863
5696
|
"audience": "general",
|
|
4864
|
-
"status": "
|
|
4865
|
-
"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.",
|
|
4866
5699
|
"useWhen": [
|
|
4867
|
-
"A user must enter or edit
|
|
4868
|
-
"The
|
|
4869
|
-
"
|
|
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."
|
|
4870
5703
|
],
|
|
4871
5704
|
"avoidWhen": [
|
|
4872
|
-
"The
|
|
4873
|
-
"The
|
|
4874
|
-
"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."
|
|
4875
5708
|
],
|
|
4876
5709
|
"alternatives": [
|
|
4877
5710
|
{
|
|
4878
|
-
"when": "The value
|
|
4879
|
-
"component": "component:ds-
|
|
4880
|
-
"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."
|
|
4881
5714
|
},
|
|
4882
5715
|
{
|
|
4883
|
-
"when": "The value is
|
|
4884
|
-
"component": "component:ds-
|
|
4885
|
-
"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."
|
|
4886
5719
|
},
|
|
4887
5720
|
{
|
|
4888
|
-
"when": "The
|
|
4889
|
-
"component": "component:ds-
|
|
4890
|
-
"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."
|
|
4891
5729
|
}
|
|
4892
5730
|
],
|
|
4893
5731
|
"commonlyComposedWith": [
|
|
4894
5732
|
"component:ds-field",
|
|
5733
|
+
"component:ds-time-picker",
|
|
5734
|
+
"component:ds-button-unfilled",
|
|
4895
5735
|
"component:ds-icon",
|
|
4896
|
-
"component:ds-text"
|
|
5736
|
+
"component:ds-text",
|
|
5737
|
+
"component:ds-input-date"
|
|
4897
5738
|
],
|
|
4898
5739
|
"accessibility": [
|
|
4899
|
-
"Provide a persistent visible label through the owning field or an external native label
|
|
4900
|
-
"
|
|
4901
|
-
"
|
|
4902
|
-
"
|
|
4903
|
-
"
|
|
4904
|
-
"
|
|
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."
|
|
4905
5746
|
],
|
|
4906
5747
|
"states": [
|
|
4907
|
-
"Every size applies
|
|
4908
|
-
"The
|
|
4909
|
-
"
|
|
4910
|
-
"Entered values use the parent surface's primary foreground; prefix icons, suffix content, and resting placeholder text use its secondary foreground.",
|
|
4911
|
-
"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.",
|
|
4912
|
-
"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.",
|
|
4913
|
-
"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.",
|
|
4914
|
-
"The suffix slot is for compact units or decorations. The optional leading icon is decorative and does not replace the field label.",
|
|
4915
|
-
"Use autoComplete, inputMode, and enterKeyHint to provide browser and virtual-keyboard hints without changing the value's semantic type.",
|
|
4916
|
-
"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.",
|
|
4917
|
-
"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.",
|
|
4918
5751
|
"The host exposes focused, filled, dirty, touched, invalid, disabled, read-only, and required data attributes for Field integration and diagnostics.",
|
|
4919
|
-
"
|
|
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."
|
|
4920
5754
|
],
|
|
4921
5755
|
"responsiveBehavior": [
|
|
4922
5756
|
"Form fields normally fill their parent; use hug width only in a compact toolbar or filter layout with an explicit width constraint.",
|
|
4923
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.",
|
|
4924
|
-
"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."
|
|
4925
5759
|
],
|
|
4926
5760
|
"frameworkCaveats": {
|
|
4927
5761
|
"customElements": [
|
|
4928
|
-
"Listen for dsChange for user edits
|
|
4929
|
-
"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."
|
|
4930
5764
|
],
|
|
4931
5765
|
"react": [
|
|
4932
|
-
"Use
|
|
5766
|
+
"Use DsInputTime, bind value for controlled application state, and handle onDsChange."
|
|
4933
5767
|
],
|
|
4934
5768
|
"vue": [
|
|
4935
|
-
"Use
|
|
5769
|
+
"Use DsInputTime with v-model for the value, and listen for dsChange."
|
|
4936
5770
|
],
|
|
4937
5771
|
"angular": [
|
|
4938
|
-
"Import
|
|
5772
|
+
"Import DsInputTime with TextValueAccessor when integrating with Angular Forms."
|
|
4939
5773
|
]
|
|
4940
5774
|
},
|
|
4941
5775
|
"references": [
|
|
4942
5776
|
{
|
|
4943
5777
|
"label": "Storybook examples",
|
|
4944
|
-
"path": "src/wc/components/
|
|
5778
|
+
"path": "src/wc/components/InputTime/InputTime.stories.ts"
|
|
4945
5779
|
},
|
|
4946
5780
|
{
|
|
4947
5781
|
"label": "Cross-browser form and accessibility coverage",
|
|
@@ -4951,14 +5785,6 @@
|
|
|
4951
5785
|
},
|
|
4952
5786
|
"api": {
|
|
4953
5787
|
"props": {
|
|
4954
|
-
"ariaActiveDescendant": {
|
|
4955
|
-
"type": "string | undefined",
|
|
4956
|
-
"required": false
|
|
4957
|
-
},
|
|
4958
|
-
"ariaControls": {
|
|
4959
|
-
"type": "string | undefined",
|
|
4960
|
-
"required": false
|
|
4961
|
-
},
|
|
4962
5788
|
"ariaDescribedby": {
|
|
4963
5789
|
"type": "string | undefined",
|
|
4964
5790
|
"required": false
|
|
@@ -4971,26 +5797,14 @@
|
|
|
4971
5797
|
"type": "string | undefined",
|
|
4972
5798
|
"required": false
|
|
4973
5799
|
},
|
|
4974
|
-
"autoComplete": {
|
|
4975
|
-
"type": "string | undefined",
|
|
4976
|
-
"required": false
|
|
4977
|
-
},
|
|
4978
5800
|
"autoFocus": {
|
|
4979
5801
|
"type": "boolean",
|
|
4980
5802
|
"required": false
|
|
4981
5803
|
},
|
|
4982
|
-
"clearLabel": {
|
|
4983
|
-
"type": "string",
|
|
4984
|
-
"required": false
|
|
4985
|
-
},
|
|
4986
5804
|
"disabled": {
|
|
4987
5805
|
"type": "boolean",
|
|
4988
5806
|
"required": false
|
|
4989
5807
|
},
|
|
4990
|
-
"enterKeyHint": {
|
|
4991
|
-
"type": "string",
|
|
4992
|
-
"required": false
|
|
4993
|
-
},
|
|
4994
5808
|
"error": {
|
|
4995
5809
|
"type": "boolean",
|
|
4996
5810
|
"required": false
|
|
@@ -5011,35 +5825,23 @@
|
|
|
5011
5825
|
"type": "boolean",
|
|
5012
5826
|
"required": false
|
|
5013
5827
|
},
|
|
5014
|
-
"icon": {
|
|
5015
|
-
"type": "string | undefined",
|
|
5016
|
-
"required": false
|
|
5017
|
-
},
|
|
5018
5828
|
"inputId": {
|
|
5019
5829
|
"type": "string | undefined",
|
|
5020
5830
|
"required": false
|
|
5021
5831
|
},
|
|
5022
|
-
"inputMode": {
|
|
5023
|
-
"type": "string",
|
|
5024
|
-
"required": false
|
|
5025
|
-
},
|
|
5026
5832
|
"isInactive": {
|
|
5027
5833
|
"type": "boolean",
|
|
5028
5834
|
"required": false
|
|
5029
5835
|
},
|
|
5030
5836
|
"max": {
|
|
5031
|
-
"type": "
|
|
5837
|
+
"type": "string | undefined",
|
|
5032
5838
|
"required": false
|
|
5033
5839
|
},
|
|
5034
5840
|
"min": {
|
|
5035
|
-
"type": "number | undefined",
|
|
5036
|
-
"required": false
|
|
5037
|
-
},
|
|
5038
|
-
"name": {
|
|
5039
5841
|
"type": "string | undefined",
|
|
5040
5842
|
"required": false
|
|
5041
5843
|
},
|
|
5042
|
-
"
|
|
5844
|
+
"name": {
|
|
5043
5845
|
"type": "string | undefined",
|
|
5044
5846
|
"required": false
|
|
5045
5847
|
},
|
|
@@ -5056,19 +5858,11 @@
|
|
|
5056
5858
|
"required": false
|
|
5057
5859
|
},
|
|
5058
5860
|
"size": {
|
|
5059
|
-
"type": "
|
|
5861
|
+
"type": "InputTimeSize",
|
|
5060
5862
|
"required": false
|
|
5061
5863
|
},
|
|
5062
5864
|
"step": {
|
|
5063
|
-
"type": "
|
|
5064
|
-
"required": false
|
|
5065
|
-
},
|
|
5066
|
-
"textAlign": {
|
|
5067
|
-
"type": "InputTextAlign",
|
|
5068
|
-
"required": false
|
|
5069
|
-
},
|
|
5070
|
-
"type": {
|
|
5071
|
-
"type": "InputType",
|
|
5865
|
+
"type": "string | number",
|
|
5072
5866
|
"required": false
|
|
5073
5867
|
},
|
|
5074
5868
|
"value": {
|
|
@@ -5076,7 +5870,7 @@
|
|
|
5076
5870
|
"required": false
|
|
5077
5871
|
},
|
|
5078
5872
|
"width": {
|
|
5079
|
-
"type": "
|
|
5873
|
+
"type": "InputTimeWidth",
|
|
5080
5874
|
"required": false
|
|
5081
5875
|
}
|
|
5082
5876
|
},
|
|
@@ -5084,29 +5878,24 @@
|
|
|
5084
5878
|
{
|
|
5085
5879
|
"name": "dsChange",
|
|
5086
5880
|
"detail": "string"
|
|
5087
|
-
},
|
|
5088
|
-
{
|
|
5089
|
-
"name": "dsClear",
|
|
5090
|
-
"detail": "void"
|
|
5091
5881
|
}
|
|
5092
5882
|
],
|
|
5093
5883
|
"slots": []
|
|
5094
5884
|
},
|
|
5095
5885
|
"exports": {
|
|
5096
|
-
"customElement": "ds-input",
|
|
5097
|
-
"react": "
|
|
5098
|
-
"vue": "
|
|
5099
|
-
"angular": "
|
|
5886
|
+
"customElement": "ds-input-time",
|
|
5887
|
+
"react": "DsInputTime",
|
|
5888
|
+
"vue": "DsInputTime",
|
|
5889
|
+
"angular": "DsInputTime"
|
|
5100
5890
|
},
|
|
5101
5891
|
"dependencies": [
|
|
5102
5892
|
"@ds-mo/ui",
|
|
5103
|
-
"@ds-mo/tokens"
|
|
5104
|
-
"@ds-mo/icons"
|
|
5893
|
+
"@ds-mo/tokens"
|
|
5105
5894
|
],
|
|
5106
5895
|
"componentDependencies": [
|
|
5107
5896
|
"button-unfilled",
|
|
5108
|
-
"
|
|
5109
|
-
"
|
|
5897
|
+
"text",
|
|
5898
|
+
"time-picker"
|
|
5110
5899
|
]
|
|
5111
5900
|
},
|
|
5112
5901
|
{
|
|
@@ -8214,7 +9003,8 @@
|
|
|
8214
9003
|
"component:ds-text",
|
|
8215
9004
|
"component:ds-icon",
|
|
8216
9005
|
"component:ds-empty-state",
|
|
8217
|
-
"component:ds-loader"
|
|
9006
|
+
"component:ds-loader",
|
|
9007
|
+
"component:ds-input"
|
|
8218
9008
|
],
|
|
8219
9009
|
"accessibility": [
|
|
8220
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.",
|
|
@@ -8228,9 +9018,10 @@
|
|
|
8228
9018
|
"Use errorMessage with error so the trigger is described by the rendered alert."
|
|
8229
9019
|
],
|
|
8230
9020
|
"states": [
|
|
8231
|
-
"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.",
|
|
8232
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.",
|
|
8233
|
-
"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.",
|
|
8234
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.",
|
|
8235
9026
|
"Multiple mode keeps the persistent placeholder label visible, appends the selected count, and submits one repeated form entry per selected value.",
|
|
8236
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.",
|
|
@@ -8245,7 +9036,7 @@
|
|
|
8245
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.",
|
|
8246
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.",
|
|
8247
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.",
|
|
8248
|
-
"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.",
|
|
8249
9040
|
"While the popup is open, the trigger holds the pressed interaction wash without changing its resting foreground or selected-value treatment.",
|
|
8250
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.",
|
|
8251
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.",
|
|
@@ -8254,7 +9045,7 @@
|
|
|
8254
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.",
|
|
8255
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.",
|
|
8256
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.",
|
|
8257
|
-
"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.",
|
|
8258
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.",
|
|
8259
9050
|
"Use options for a flat list or sections for grouped choices; when sections are present they take precedence.",
|
|
8260
9051
|
"The background prop describes the actual parent surface and uses the same surface set as ButtonUnfilled.",
|
|
@@ -8375,10 +9166,18 @@
|
|
|
8375
9166
|
"type": "string | undefined",
|
|
8376
9167
|
"required": false
|
|
8377
9168
|
},
|
|
9169
|
+
"insetDepth": {
|
|
9170
|
+
"type": "ControlInsetDepth",
|
|
9171
|
+
"required": false
|
|
9172
|
+
},
|
|
8378
9173
|
"isInactive": {
|
|
8379
9174
|
"type": "boolean",
|
|
8380
9175
|
"required": false
|
|
8381
9176
|
},
|
|
9177
|
+
"isInset": {
|
|
9178
|
+
"type": "boolean",
|
|
9179
|
+
"required": false
|
|
9180
|
+
},
|
|
8382
9181
|
"isLoading": {
|
|
8383
9182
|
"type": "boolean",
|
|
8384
9183
|
"required": false
|
|
@@ -8427,6 +9226,10 @@
|
|
|
8427
9226
|
"type": "string",
|
|
8428
9227
|
"required": false
|
|
8429
9228
|
},
|
|
9229
|
+
"rounded": {
|
|
9230
|
+
"type": "boolean",
|
|
9231
|
+
"required": false
|
|
9232
|
+
},
|
|
8430
9233
|
"searchPlaceholder": {
|
|
8431
9234
|
"type": "string",
|
|
8432
9235
|
"required": false
|
|
@@ -10928,7 +11731,8 @@
|
|
|
10928
11731
|
"component:ds-table",
|
|
10929
11732
|
"component:ds-select",
|
|
10930
11733
|
"component:ds-menu",
|
|
10931
|
-
"component:ds-modal"
|
|
11734
|
+
"component:ds-modal",
|
|
11735
|
+
"component:ds-field"
|
|
10932
11736
|
],
|
|
10933
11737
|
"patterns": [
|
|
10934
11738
|
"pattern:menu-trigger"
|
|
@@ -10936,7 +11740,8 @@
|
|
|
10936
11740
|
"accessibility": [
|
|
10937
11741
|
"The primary control retains combobox semantics and exposes a direct accessible name.",
|
|
10938
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.",
|
|
10939
|
-
"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."
|
|
10940
11745
|
],
|
|
10941
11746
|
"states": [
|
|
10942
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.",
|
|
@@ -11827,7 +12632,7 @@
|
|
|
11827
12632
|
"The default four visible rows can be changed with rows; rows is clamped to at least one.",
|
|
11828
12633
|
"Vertical resizing is enabled by default and can be disabled when the surrounding layout owns the field height.",
|
|
11829
12634
|
"Size changes typography and inset spacing without changing the authored row count.",
|
|
11830
|
-
"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."
|
|
11831
12636
|
],
|
|
11832
12637
|
"responsiveBehavior": [
|
|
11833
12638
|
"Textarea fills its parent by default and follows the width supplied by Field or the form layout.",
|
|
@@ -11986,6 +12791,119 @@
|
|
|
11986
12791
|
"text"
|
|
11987
12792
|
]
|
|
11988
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
|
+
},
|
|
11989
12907
|
{
|
|
11990
12908
|
"id": "component:ds-toast",
|
|
11991
12909
|
"tag": "ds-toast",
|