مكوّنات البيانات

<List> و <Table> و <Tree>: بعرض افتراضي، وقابلة للفرز والتحديد.

تعرض <List> و <Table> و <Tree> مجموعات بيانات كبيرة. تُعرض الصفوف المرئية فقط.

مباشر72×13 · booting Turbolog…tsx
preview://table:1
<Table  columns={[    { key: "name", header: "Service" },    { key: "region", header: "Region", width: 8 },    { key: "p95", header: "p95", width: 7, align: "right" },  ]}  rows={services}  sortable  selectionMode="multiple"  onSelect={(s) => router.push(`/services/${s.name}`)}/>

تستخدم <List> و <Table> و <Tree> نموذجًا موحدًا للوحة المفاتيح.

المفاتيحالإجراء
↑ ↓ / j kالتنقل
PgUp PgDn، Ctrl+U Ctrl+Dالتنقل صفحة، نصف صفحة
Home End / g Gالأول، الأخير
↵onSelect
عجلة التمريرتحريك المؤشر

تملأ العنصر الأب افتراضيًا. مرّر height لتحديد عدد ثابت من الصفوف.

<List>

قائمة افتراضية العرض. يبلغ ارتفاع كل صف خلية واحدة.

<List  items={requests}  getLabel={(r) => `${r.method} ${r.path}`}  onSelect={open}/>
⁦Prop⁩الوصف
itemsأي مصفوفة
renderItem(item, { highlighted, focused }) => ReactNode
isItemDisabledيتجاوزه المؤشر
heightالصفوف المرئية (الافتراضي: ملء المساحة)
highlightedIndex / onHighlightمؤشر متحكَّم فيه
vimKeysj k g G (الافتراضي true)

<Table>

تتقاسم الأعمدة العرض المتبقي ما لم تحدد width. تستخدم الرؤوس والخلايا قواعد flex نفسها، لذا تتراصف دائمًا.

حقل العمودالوصف
keyالمعرّف وموصّل الوصول الافتراضي
width / growعدد ثابت من الخلايا أو حصة من الباقي
alignleft right center
valueقيمة العرض والفرز
renderمحتوى خلية مخصص
compareفرز مخصص

الفرز

مع sortable، اضغط رقم العمود للفرز حسبه (ومرة أخرى لعكس الاتجاه)، واضغط s للتنقل بين الأعمدة و S لعكس الاتجاه. الفرز مستقر. تحكّم فيه باستخدام sort و onSortChange.

التحديد

يضيف selectionMode="multiple" عمود خانات اختيار؛ ويبدّل Space حالة تحديد الصف المميز. استخدم selectedKeys و onSelectionChange للتحكم في التحديد، و getRowKey للحصول على مفاتيح ثابتة.

<Tree>

شجرة قابلة للتوسيع مع خطوط إرشادية.

مباشر56×11 · booting Turbolog…tsx
preview://tree:1
<Tree  data={[{ id: "app", label: "app", children: [{ id: "page", label: "page.tsx", hint: "2.8 kB" }] }]}  defaultExpanded={["app"]}  onSelect={(node) => open(node.id)}/>

يوسّع → الفرع أو ينتقل إلى داخله. يطوي ← الفرع أو ينتقل إلى العنصر الأب. يبدّل Space حالة التوسيع. تتيح flattenTree(data, expanded) الصفوف المرئية إذا احتجت إلى عارض خاص بك.

تحرير هذه الصفحة على GitHub