REAL SHOWCASE SOURCEmasked-text-edit
1 个文件 · 85 行 · TypeScript
// ===== showcase/src/examples/components/masked_text_edit.ts ===== import { RenderFormField, RenderFormPanel, RenderMaskedTextEdit, RenderPageHeader, RenderStackPanel, RenderText,} from 'ds-ui' export function createMaskedTextEditExample(): RenderStackPanel { const status = new RenderText( '业务层接收不含分隔符的 raw value,界面负责格式提示、覆盖输入和 block 校验。', { role: 'secondary' }, ) const form = new RenderFormPanel({ columns: 'auto', maxColumns: 2, minColumnWidth: 320, labelWidth: 108, columnGap: 18, rowGap: 16, }) form.addField(new RenderFormField({ label: '病案编号', child: new RenderMaskedTextEdit({ mask: 'AA-000000', value: 'AB001234', clearable: true, helperText: '固定字母数字槽位;分隔符不进入业务值', onChange: (value, details) => { status.text = `病案编号:raw=${value},display=${details.display}` }, }), })) form.addField(new RenderFormField({ label: '联系电话', child: new RenderMaskedTextEdit({ mask: '000-0000-0000', value: '13800138000', promptMode: 'focused', overwriteMode: 'replace', clearable: true, helperText: '聚焦显示完整格式,输入时覆盖当前槽位', onChange: (value, details) => { status.text = `联系电话:raw=${value},complete=${details.complete}` }, }), })) form.addField(new RenderFormField({ label: '业务编码', child: new RenderMaskedTextEdit({ mask: '{region}-{month}-{serial}', value: 'CN12AB34', blocks: { region: { kind: 'enum', values: ['CN', 'US', 'JP'] }, month: { kind: 'range', length: 2, min: 1, max: 12 }, serial: { mask: 'LL00', placeholderCharacter: '·' }, }, promptMode: 'always', overwriteMode: 'replace', clearable: true, helperText: '地区枚举、月份范围和编号 pattern 组合校验', onChange: (value, details) => { status.text = `业务编码:raw=${value},complete=${details.complete}` }, }), }), { columnSpan: 2 }) const panel = new RenderStackPanel({ orientation: 'vertical', spacing: 18, crossAxisAlignment: 'stretch', }) panel.addChild(new RenderPageHeader({ title: 'MaskedTextEdit 固定格式输入', description: '演示格式提示、覆盖输入以及 enum、range、pattern 三类 named block。', })) panel.addChild(form) panel.addChild(status) panel.padding = 24 return panel}