Table و List والمخططات
استبدل الصفوف المكتوبة يدويًا بمكوّن Table قابل للفرز ومخطط لا يغيّر التخطيط أبدًا.
في هذا الفصل
- جدول قابل للفرز
- مخطط فوق الجدول
- مزيد من المكوّنات
استبدل الصفوف المكتوبة يدويًا بمكوّنات: <Table> مع التنقل بلوحة المفاتيح والفرز، و <List> مع التمرير الافتراضي، ومخططات مرسومة بكتل من أثمان الخلية ونقاط أرباع الخلية.
جدول قابل للفرز
الأعمدة مصفوفة من الكائنات. يشارك العمود الذي لا يحدد width في المساحة المتبقية حسب grow، ويقارن الفرز قيم value، ويرسم render الخلية.
المضاف: import { Table, type SortState, type TableColumn } from "@textjs/app";المضاف: المضاف: const COLUMNS: TableColumn<Deployment>[] = [المضاف: { key: "status", header: "Status", width: 11, render: (d) => <Status status={d.status} /> },المضاف: { key: "commit", header: "Commit", grow: 2 },المضاف: { key: "project", header: "Project", width: 10 },المضاف: { key: "duration", header: "Build", width: 6, align: "right", value: (d) => d.duration, render: (d) => <Text>{`${d.duration}s`}</Text> },المضاف: ];export default function DeploymentsPage() {المضاف: const [sort, setSort] = useState<SortState | null>(null); …المحذوف: return rows.map((d) => …);المضاف: return <Table columns={COLUMNS} rows={rows} getRowKey={(d) => d.id} sortable sort={sort} onSortChange={setSort} autoFocus />;}عندما يكون التركيز على الجدول، ينقل ↑ و ↓ التمييز، ويتنقل s بين أعمدة الفرز، ويعكس S الاتجاه، ويستدعي Enter الدالة onSelect. لا تعرض الجداول الطويلة إلا الصفوف المرئية.
مخطط فوق الجدول
يملأ <Sparkline> صندوقه بأحدث النقاط. يحاذي <BarChart> التسميات والقيم.
المضاف: import { BarChart, Sparkline } from "@textjs/app";المضاف: المضاف: const [chart, setChart] = useState<"spark" | "bars">("spark");المضاف: useInput((e) => {المضاف: if (e.input === "c") setChart((c) => (c === "spark" ? "bars" : "spark"));المضاف: });المضاف: return ( <Box className="flex-col grow gap-1">المضاف: <Box className="flex-col" height={4}>المضاف: <Text color="subtle">Build time, last 24 deployments</Text>المضاف: {chart === "spark" ? (المضاف: <Sparkline data={buildTimes} height={3} color="accent" />المضاف: ) : (المضاف: <BarChart data={byProject} formatValue={(v) => `${v}s`} />المضاف: )}المضاف: </Box> <Table … /> </Box> );لصندوق المخطط ارتفاع ثابت، لذا لا يؤدي التبديل بين المخططات إلى تحريك الجدول، ولا يُعاد ترميز صفوفه.
مزيد من المكوّنات
يرد توثيق <List>، و <Tree>، و <Tabs>، و <Select>، و <Input>، و <Modal>، و <Toaster>، و <CommandPalette>، و <ProgressBar>، و <LineChart> وغيرها ضمن المكوّنات.
جرّبه
هذا تطبيق Acme Deploys في نهاية الفصل، يعمل في DevTools. انقر اللوحة، ثم استخدم المفاتيح أدناه.
فتح وحدة التحكم
يُعرض التطبيق في DevTools.فعّل أولًا «إظهار الميزات لمطوري الويب» في إعدادات Safari → متقدم. ثم انقر هنا واضغط s.
الفتح على حاسوب مكتبي
يُعرض هذا التطبيق في وحدة تحكم DevTools، التي تتطلب متصفحًا على حاسوب مكتبي.
اختبار
2 سؤالانأجب عن كل سؤال لإكمال الفصل.