⁦Table⁩, ⁦List⁩ ותרשימים

החלפת שורות שנבנו ידנית ברכיב Table שניתן למיון ובתרשים שלא מזיז את ה-layout.

האפליקציה של הפרק הזה רצה במסוף. יש לפתוח אותו עם ⌘⌥JCtrl+Shift+J⌘⌥KCtrl+Shift+K⌘⌥C (תחילה להפעיל תכונות למפתחים), ואז לנסות אותה.
צפייה בפרק3:05

בפרק הזה

  • טבלה עם מיון
  • תרשים מעל הטבלה
  • רכיבים נוספים

יש להחליף את השורות שנכתבו ידנית ברכיבים: <Table> עם ניווט במקלדת ומיון, <List> עם גלילה וירטואלית, ותרשימים המצוירים באמצעות תווי שמיניות בלוק ונקודות ברבעי תא.

טבלה עם מיון

העמודות הן מערך של אובייקטים. עמודה ללא width חולקת את השטח הנותר לפי grow, המיון משווה את value, ו-render מצייר את התא.

app/deployments/page.tsx+10-1tsx
נוסף: 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> מיישר תוויות וערכים.

app/deployments/page.tsx+15tsx
נוסף: 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. יש ללחוץ על המשטח, ואז להשתמש במקשים שלמטה.

▼ 07 · ⁦Table⁩, ⁦List⁩ ותרשימים

פתיחת המסוף

⌘⌥J
CtrlShiftJ
⌘⌥K
CtrlShiftK
⌘⌥C

האפליקציה מרונדרת ב-DevTools.תחילה יש להפעיל את "הצגת תכונות למפתחי אתרים" בהגדרות Safari → מתקדם. אחר כך ללחוץ כאן וללחוץ על s.

פתיחה במחשב

האפליקציה הזו מרונדרת במסוף של DevTools, שדורש דפדפן במחשב.

בוחן

2 שאלות

להשלמת הפרק, יש לענות על כל השאלות.

כשהמיקוד על Table שניתן למיון, מה עושה s?

 

למה לקבוע גובה קבוע לתיבת התרשים?