REAL SHOWCASE SOURCEbreadcrumb-patient-path

1 个文件 · 58 行 · TypeScript

// ===== showcase/src/examples/components/breadcrumb.ts ===== import {  RenderBreadcrumb,  RenderButton,  RenderPageHeader,  RenderStackPanel,  RenderText,  RenderWrapPanel,} from 'ds-ui' export function createBreadcrumbExample(): RenderStackPanel {  const status = new RenderText('当前位于“检验结果”;末级表示当前位置,不会触发导航。', { role: 'secondary' })  const breadcrumb = new RenderBreadcrumb({    items: [      { key: 'home', label: '临床工作台' },      { key: 'outpatient', label: '门诊中心' },      { key: 'patient', label: '李安然' },      { key: 'record', label: '电子病历' },      { key: 'lab', label: '检验结果' },    ],    onNavigate: (item, index) => {      status.text = `准备返回第 ${index + 1} 级:${item.label}。路由切换由外层业务执行。`    },  })   const actions = new RenderWrapPanel({ spacing: 8, runSpacing: 8 })  actions.addChild(new RenderButton({    label: '禁用“门诊中心”',    onClick: () => {      breadcrumb.items[1] = { ...breadcrumb.items[1]!, disabled: true }      breadcrumb.markNeedsPaint()      status.text = '“门诊中心”已禁用,鼠标和键盘都会跳过该层级。'    },  }))  actions.addChild(new RenderButton({    label: '恢复全部层级',    variant: 'primary',    onClick: () => {      breadcrumb.items[1] = { ...breadcrumb.items[1]!, disabled: false }      breadcrumb.markNeedsPaint()      status.text = '全部上级路径均可导航。'    },  }))   const panel = new RenderStackPanel({ orientation: 'vertical', spacing: 16, crossAxisAlignment: 'stretch' })  panel.addChild(new RenderPageHeader({    title: 'Breadcrumb 患者档案路径',    description: '在 PageHeader 下方表达当前位置层级,并支持鼠标、方向键、Home、End 和 Enter。',  }))  panel.addChild(breadcrumb)  panel.addChild(new RenderText('检验结果', { role: 'title', size: 'large', weight: 'semibold' }))  panel.addChild(new RenderText('患者:李安然 · 门诊号:MZ20260717018 · 最近更新:10:42', { role: 'secondary' }))  panel.addChild(actions)  panel.addChild(status)  panel.padding = 24  return panel}