صفحهبندی (Pagination)
کامپوننت ناوبری بین صفحات با props استاندارد
معرفی
کامپوننت Pagination برای ناوبری بین صفحات استفاده میشود. دو روش استفاده وجود دارد:
- PaginationControlled: کامپوننت با props استاندارد (پیشنهادی)
- Pagination: کامپوننت پایه برای استفاده دستی
استفاده با PaginationControlled (پیشنهادی)
کامپوننت PaginationControlled با props استاندارد برای استفاده آسان:
Playground
در playground زیر میتوانید props مختلف را تست کنید:
import { PaginationControlled } from '@parto-system-design/ui';
import { useState } from 'react';
export default function MyComponent() {
const [currentPage, setCurrentPage] = useState(2);
return (
<PaginationControlled
currentPage={currentPage}
totalPages={10}
onPageChange={setCurrentPage}
/>
);
}مثال با props اضافی
import { PaginationControlled } from '@parto-system-design/ui';
export default function MyComponent() {
const [page, setPage] = useState(5);
return (
<PaginationControlled
currentPage={page}
totalPages={20}
onPageChange={setPage}
siblingCount={2} // تعداد صفحات در هر طرف صفحه فعلی
showFirstLast={true} // نمایش دکمههای اول و آخر
showPrevNext={true} // نمایش دکمههای قبلی و بعدی
showEllipsis={true} // نمایش ellipsis برای صفحات مخفی
dir="rtl" // جهت متن
/>
);
}استفاده دستی با Pagination
برای کنترل بیشتر، میتوانید از کامپوننتهای پایه استفاده کنید:
import {
Pagination,
PaginationContent,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
PaginationEllipsis,
} from '@parto-system-design/ui';
export default function MyComponent() {
return (
<Pagination dir="rtl">
<PaginationContent>
<PaginationItem>
<PaginationPrevious href="#" />
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">1</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#" isActive>2</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">3</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationEllipsis />
</PaginationItem>
<PaginationItem>
<PaginationNext href="#" />
</PaginationItem>
</PaginationContent>
</Pagination>
);
}Props
PaginationControlled
PaginationLink
PaginationPrevious / PaginationNext
مثالهای استفاده
مثال ساده
const [page, setPage] = useState(1);
<PaginationControlled
currentPage={page}
totalPages={5}
onPageChange={setPage}
/>مثال با صفحات زیاد
const [page, setPage] = useState(10);
<PaginationControlled
currentPage={page}
totalPages={100}
onPageChange={setPage}
siblingCount={2}
showEllipsis={true}
/>مثال با دکمههای اول و آخر
const [page, setPage] = useState(5);
<PaginationControlled
currentPage={page}
totalPages={20}
onPageChange={setPage}
showFirstLast={true}
siblingCount={1}
/>مثال بدون دکمههای قبلی/بعدی
<PaginationControlled
currentPage={page}
totalPages={10}
onPageChange={setPage}
showPrevNext={false}
/>ویژگیها
- ✅ پشتیبانی از RTL/LTR
- ✅ نمایش خودکار ellipsis برای صفحات زیاد
- ✅ استایل زیبا با رنگ brand
- ✅ Responsive و سازگار با موبایل
- ✅ Accessibility با ARIA labels
- ✅ قابلیت سفارشیسازی با className