ترقيم الصفحات Pagination
عرض مُقسّم إلى صفحات عند كثرة البيانات، مع دعم الوضعين المُتحكم به وغير المُتحكم به، وتبديل عدد العناصر في كل صفحة، والانتقال السريع بين الصفحات.
الاستخدام الأساسي
import { useState } from 'react'
import { LhPagination } from '@lh-ui/react'
export default function Demo() {
const [current, setCurrent] = useState(1)
return (
<LhPagination
total={128}
current={current}
onChange={(page) => setCurrent(page)}
/>
)
}
خصائص Pagination
| خاصية | الوصف | النوع | القيم المتاحة | الافتراضي |
|---|---|---|---|---|
| total | العدد الإجمالي للبيانات (مطلوب) | number | — | — |
| current | الصفحة الحالية (مُتحكم بها، تبدأ من 1) | number | — | — |
| defaultCurrent | القيمة الافتراضية للصفحة الحالية (غير مُتحكم بها) | number | — | 1 |
| pageSize | عدد العناصر في كل صفحة (مُتحكم به) | number | — | — |
| defaultPageSize | القيمة الافتراضية لعدد العناصر في كل صفحة (غير مُتحكم بها) | number | — | 10 |
| pageSizes | خيارات عدد العناصر في كل صفحة | number[] | — | [10, 20, 30, 40] |
| siblingCount | عدد أرقام الصفحات المعروضة على كل جانب من الصفحة الحالية | number | — | 1 |
| showTotal | هل يُعرض العدد الإجمالي | boolean | — | false |
| showSizeChanger | هل يُعرض مبدّل عدد العناصر في كل صفحة | boolean | — | false |
| showJumper | هل يُعرض حقل الانتقال السريع | boolean | — | false |
| simple | الوضع المُختصر | boolean | — | false |
| disabled | هل يكون معطّلًا | boolean | — | false |
| sx | خصائص التخطيط السريع | SxProps | — | — |
أحداث Pagination
| حدث | الوصف | توقيع الاستدعاء | مقابل Vue |
|---|---|---|---|
| onChange | يُطلق عند تغيّر الصفحة (تبديل الصفحة، أو الانتقال السريع، أو التقييد الناتج عن تغيّر عدد العناصر في كل صفحة) | (current: number, pageSize: number) => void | @change |
| onSizeChange | يُطلق عند تغيّر عدد العناصر في كل صفحة | (pageSize: number) => void | @size-change |
تمرير current يجعله مُتحكمًا به (لا يحتفظ المكوّن بحالة داخلية، بل يقوده الخارج)؛ وتمرير defaultCurrent يذهب به إلى الحالة الداخلية غير المُتحكم بها. وpageSize بالمثل. وفي كلا الوضعين يُطلق onChange.
عندما يؤدي تغيير pageSize إلى نقص عدد الصفحات الإجمالي، وإذا كانت الصفحة الحالية خارج النطاق، يُقيّدها المكوّن تلقائيًا إلى الصفحة الأخيرة في effect ويُطلق onChange، دون الحاجة إلى معالجة احتياطية في جانب العمل.
تفاعل لوحة المفاتيح
حقل الانتقال السريع: يُرسل Enter طلب الانتقال، ويُرسل أيضًا عند فقد التركيز؛ وتُحدَّد القيم غير الصالحة (خارج النطاق أو غير الرقمية) إلى النطاق الصالح.
إمكانية الوصول
العنصر الجذر هو <nav aria-label>؛ وتُخرج الصفحة الحالية aria-current="page"، ويحمل كل زر رقم صفحة aria-label (قالب pagination.page من حزمة اللغة، مثل «الصفحة 3»).
ref
forwardRef<HTMLElement> — العنصر ال جذر <nav>.
الأنماط
import '@lh-ui/react/theme.css'
import '@lh-ui/react/style/pagination'