REAL SHOWCASE SOURCEtemporal-inputs
1 个文件 · 107 行 · TypeScript
// ===== showcase/src/examples/components/temporal_inputs.ts ===== import { RenderDateRangeEdit, RenderDateTimeRangeEdit, RenderFormField, RenderFormPanel, RenderPageHeader, RenderStackPanel, RenderText, RenderTimeEdit, RenderTimePicker, RenderTimeRangeEdit,} from 'ds-ui' export function createTemporalInputsExample(): RenderStackPanel { const status = new RenderText( '时间与范围值使用稳定字符串模型;弹窗中的草稿只有确认后才会提交。', { role: 'secondary' }, ) const form = new RenderFormPanel({ columns: 'auto', maxColumns: 2, minColumnWidth: 340, labelWidth: 116, columnGap: 18, rowGap: 16, }) form.addField(new RenderFormField({ label: '键盘时间', child: new RenderTimeEdit({ value: '08:30', precision: 'minute', minuteStep: 5, clearable: true, helperText: '按时、分分段录入,方向键按 5 分钟步进', onChange: value => { status.text = `TimeEdit:${value || '已清空'}` }, }), })) form.addField(new RenderFormField({ label: '候选时间', child: new RenderTimePicker({ value: '09:30', precision: 'minute', minuteStep: 5, clearable: true, helperText: '从时、分候选列选择并确认', onChange: value => { status.text = `TimePicker:${value || '已清空'}` }, }), })) form.addField(new RenderFormField({ label: '跨日班次', child: new RenderTimeRangeEdit({ value: { start: '22:00', end: '06:00' }, precision: 'minute', minuteStep: 5, allowOvernight: true, clearable: true, helperText: '显式允许结束时刻落在次日', onChange: value => { status.text = `TimeRangeEdit:${value.start ?? '-'} ~ ${value.end ?? '-'}` }, }), })) form.addField(new RenderFormField({ label: '住院日期', child: new RenderDateRangeEdit({ value: { start: '2026-07-01', end: '2026-07-25' }, clearable: true, helperText: '左右日历可独立切换日、月和年视图', onChange: value => { status.text = `DateRangeEdit:${value.start ?? '-'} ~ ${value.end ?? '-'}` }, }), })) form.addField(new RenderFormField({ label: '预约窗口', child: new RenderDateTimeRangeEdit({ value: { start: '2026-07-31T08:30', end: '2026-08-01T17:30', }, timePrecision: 'minute', minuteStep: 5, clearable: true, helperText: '每侧可独立切换日期和时间页签', onChange: value => { status.text = `DateTimeRangeEdit:${value.start ?? '-'} ~ ${value.end ?? '-'}` }, }), }), { columnSpan: 2 }) const panel = new RenderStackPanel({ orientation: 'vertical', spacing: 18, crossAxisAlignment: 'stretch', }) panel.addChild(new RenderPageHeader({ title: '时间与日期范围输入', description: '对比键盘分段输入、候选列选择、跨日时刻以及纯日期和日期时间范围。', })) panel.addChild(form) panel.addChild(status) panel.padding = 24 return panel}