REAL SHOWCASE SOURCEscroll-viewer-settings
1 个文件 · 23 行 · TypeScript
// ===== showcase/src/examples/components/scroll_viewer.ts ===== import { RenderBorder, RenderButton, RenderPageHeader, RenderScrollViewer, RenderStackPanel, RenderText, RenderWrapPanel } from 'ds-ui' export function createScrollViewerExample(): RenderStackPanel { const status = new RenderText('可使用滚轮、拖动滚动条或按钮控制垂直偏移。', { role: 'secondary' }) const content = new RenderStackPanel({ orientation: 'vertical', spacing: 8, crossAxisAlignment: 'stretch' }) for (let index = 1; index <= 24; index += 1) { content.addChild(new RenderBorder({ background: index % 2 === 0 ? 'muted' : 'panel', padding: 12, child: new RenderText(`${String(index).padStart(2, '0')} · 审计记录:患者信息字段已完成一致性核验`) })) } const viewer = new RenderScrollViewer({ direction: 'vertical', child: content }) viewer.height = 420 const actions = new RenderWrapPanel({ spacing: 8 }) actions.addChild(new RenderButton({ label: '回到顶部', onClick: () => { viewer.scrollY = 0; status.text = 'scrollY = 0' } })) actions.addChild(new RenderButton({ label: '滚动到底部', variant: 'primary', onClick: () => { viewer.scrollY = Number.MAX_SAFE_INTEGER; status.text = `当前 scrollY = ${Math.round(viewer.scrollY)}` } })) const panel = new RenderStackPanel({ orientation: 'vertical', spacing: 14, crossAxisAlignment: 'stretch' }) panel.addChild(new RenderPageHeader({ title: 'ScrollViewer 审计记录', description: '固定视口承载长内容,并统一处理滚轮、拖动和 API 滚动。' })) panel.addChild(actions) panel.addChild(viewer) panel.addChild(status) panel.padding = 24 return panel}