صفحهبندی — Pagination
صفحهبندی برای فهرستهای محدود و شمارهدار به کار میرود که کاربر بین صفحههای مشخص حرکت میکند. کامپوننت همیشه اولین و آخرین صفحه، صفحهٔ فعلی و همجوارهای آن را نشان میدهد و بقیه را با «…» پنهان میکند. اگر کپی کد بدهید هر صفحه لینک واقعی میشود (مناسب برای SEO و باز کردن در تب جدید)؛ در غیر این صورت با کپی کد دکمهها کار میکنند. ساختار کپی کد و کپی کد، کپی کد روی صفحهٔ فعلی و برچسب صفحه ثابت است.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { Pagination } from '@tokapps/tuk';نمونهٔ زنده
کد قابل کپی
import { useState } from 'react';import { Pagination } from '@tokapps/tuk';export function ControlledPagination() { const [page, setPage] = useState(1); return <Pagination page={page} pageCount={20} onPageChange={setPage} />;}import { Pagination } from '@tokapps/tuk';export function LinkPagination({ currentPage }: { currentPage: number }) { return ( <Pagination page={currentPage} pageCount={8} siblingCount={2} hrefFor={(p) => `/forum?page=${p}`} aria-label="صفحهبندی فهرست ایدهها" print="show" /> );}import { useState } from 'react';import { Pagination } from '@tokapps/tuk';// حالت خاص: یک صفحه یا عدد لاتین؛ قبلی و بعدی غیرفعال میمانندexport function EdgeCasePagination() { const [page, setPage] = useState(1); return ( <> <Pagination page={page} pageCount={1} onPageChange={setPage} previousLabel="قبلی" nextLabel="بعدی" /> <Pagination page={3} pageCount={9} digits="latin" onPageChange={setPage} /> </> );}همهٔ پیکربندیها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — (الزامی) | صفحهٔ فعلی، ۱-مبنا. مقدارهای خارج از بازه به کپی کد تا کپی کد محدود میشوند. |
| کپی کد | کپی کد | — (الزامی) | تعداد کل صفحهها. کمتر از ۱ به کپی کد تبدیل میشود. |
| کپی کد | کپی کد | — | فراخوانی با شمارهٔ صفحهٔ مقصد هنگام انتخاب. |
| کپی کد | کپی کد | — | اگر داده شود، همهچیز لینک واقعی است. |
| کپی کد | کپی کد | کپی کد | تعداد صفحههای همجوار در دو طرف صفحهٔ فعلی. |
| کپی کد | کپی کد | کپی کد | ارقام فارسی یا لاتین برای شمارهها. |
| کپی کد | کپی کد | کپی کد | متن دکمهٔ قبلی (در موبایل فقط آیکون میماند). |
| کپی کد | کپی کد | کپی کد | متن دکمهٔ بعدی (در موبایل فقط آیکون میماند). |
| کپی کد | کپی کد | کپی کد + شمارهٔ صفحه با کپی کد | برچسب دسترسپذیری هر صفحه. |
| کپی کد | کپی کد | کپی کد | برچسب کپی کد برای صفحهخوان. |
| کپی کد | کپی کد | کپی کد | پیشفرض در چاپ پنهان است. |
| کپی کد | کپی کد | — (پیشفرض کپی کد) | رندر لینک با روتر دلخواه؛ از کپی کد به ارث رسیده است. |
| کپی کد | کپی کد | — (پیشفرض کپی کد) | جایگزین سادهتر کپی کد؛ از کپی کد به ارث رسیده است. |
| کپی کد | کپی کد | — | کلاس اضافی روی کپی کد. |
ساختار و اسلاتها
- کپی کد با کپی کد
- کپی کد
- کپی کد برای قبلی: کپی کد با کپی کد و آیکون کپی کد (با کپی کد)
- کپی کد (متن قبلی؛ در موبایل پنهان)
- کپی کد برای هر عضو بازه: یکی از این دو
- کپی کد با کپی کد و کپی کد برای صفحهٔ فعلی
- کپی کد برای «…»
- کپی کد برای بعدی: کپی کد با کپی کد و آیکون کپی کد (با کپی کد)
- کپی کد (متن بعدی؛ در موبایل پنهان)
- کپی کد برای قبلی: کپی کد با کپی کد و آیکون کپی کد (با کپی کد)
- کپی کد
بنیان ثابت: ترتیب قبلی، صفحهها و «…»، کپی کد روی صفحهٔ فعلی و منطق بازهٔ صفحهها (کپی کد).
بخش قابلتغییر: متنهای قبلی و بعدی، برچسب صفحه، ارقام، کپی کد و نوع لینک.
همهٔ حالتها
| حالت | نشانه | نمایش |
|---|---|---|
| پیشفرض | بدون data-attribute خاص | شمارهٔ صفحهها با رنگ کپی کد. |
| hover | کپی کد روی کپی کد | پسزمینهٔ کپی کد و رنگ کپی کد. |
| current | کپی کد روی صفحهٔ فعلی | پسزمینهٔ کپی کد، متن کپی کد و وزن پررنگتر. |
| disabled | کپی کد و کپی کد (بدون کپی کد) | قبلی در صفحهٔ اول و بعدی در صفحهٔ آخر؛ رنگ کپی کد، بدون واکنش به کلیک، کپی کد وقتی کپی کد دارد. |
| focus-visible | کپی کد روی لینک | حلقهٔ فوکوس کپی کد. |
| ellipsis | کپی کد و کپی کد | نمایش «…» بین بازه و ابتدا/انتها. |
| فشرده (موبایل) | رسانه کپی کد | متن قبلی و بعدی پنهان؛ فقط آیکون و کپی کد باقی میماند. |
| چاپ | کپی کد | در چاپ پنهان است. |
کامپوننت حالتهای loading، invalid و readonly ندارد؛ در کد تعریف نشدهاند.
تغییرات مجاز برای توسعهدهنده
- variant: یک ظاهر (کپی کد).
- size: یک اندازه (کپی کد) با هدف لمسی ۴۴ پیکسل.
- حالت کار: دکمه با کپی کد یا لینک با کپی کد (هر دو قابل ترکیباند تا کپی کد لینک را بسازد).
- بازهٔ نمایش: کپی کد برای تعداد صفحههای همجوار.
- ارقام و متن: کپی کد، کپی کد، کپی کد و کپی کد برای ترجمه.
- لینک: کپی کد یا کپی کد برای روتر.
- نقاط توسعه: کپی کد، کپی کد، توکنهای کپی کد (از جمله کپی کد)، کپی کد، کپی کد.
- صدا و handler: رویداد صوتی ندارد؛ کلیک از طریق کپی کد اعلام میشود.
تغییرات ممنوع (بنیان ثابت)
- تغییر ترتیب قبلی ← صفحهها ← بعدی یا حذف کپی کد و کپی کد.
- حذف کپی کد از صفحهٔ فعلی.
- فعالکردن موارد غیرفعال با حذف کپی کد یا کپی کد.
- نمایش «…» در صفحهخوان (باید کپی کد بماند).
- هدف لمسی کمتر از ۴۴ پیکسل برای موارد صفحه.
- حذف فوکوس مرئی یا انتقال در کپی کد.
RTL، کیبورد و صفحهخوان
- RTL: «قبلی» در سمت راست و «بعدی» در سمت چپ قرار میگیرد و آیکونها با کپی کد برمیگردند. ارقام پیشفرض فارسیاند.
- کیبورد: کپی کد بین موارد حرکت میکند و کپی کد یا کپی کد به صفحه میرود. موارد غیرفعال با کپی کد مشخصاند و کلیکشان نادیده گرفته میشود.
- صفحهخوان: کپی کد با کپی کد (پیشفرض «صفحهبندی»)، هر صفحه با برچسب «صفحه N»، صفحهٔ فعلی با کپی کد، و «…» پنهان از صفحهخوان.
- هدف لمسی: هر مورد حداقل ۴۴×۴۴ پیکسل (کپی کد).
صدا، حرکت، چاپ و کاهش حرکت
- صدا: بیصدا (کپی کد). prop مربوط به کپی کد در کد تعریف نشده است.
- حرکت: نام معنایی کپی کد با تغییر کپی کد و کپی کد (کپی کد). با کپی کد یا کپی کد تغییر فوری است.
- چاپ: پیشفرض پنهان (کپی کد، رنگ تکرنگ) (کپی کد). با کپی کد در چاپ هم دیده میشود.
توکنها
- فایل توکن: کپی کد و مقدارهای مرجع در کپی کد.
- توکنهای معنایی مصرفی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- توکنهای سطح کامپوننت (کپی کد): کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
قرارداد ARCH
- آیکونهای قبلی و بعدی فقط با کپی کد و نام معنایی کپی کد و کپی کد با کپی کد رندر میشوند؛ مسیر asset در کد مصرفکننده نمیآید.
- تم فقط حرکت و توکن را تغییر میدهد؛ ترتیب DOM، ARIA و منطق بازهٔ صفحهها ثابت است.
- gesture ندارد؛ کار با کیبورد و pointer یکسان است.
نکات
- برای فهرستهای بیپایان از الگوی «بارگذاری بیشتر» با Button استفاده کنید.
- برای مراحل ترتیبی یک فرایند از Stepper استفاده کنید.
- اگر لینکهای صفحهبندی برای SEO مهماند، حتماً کپی کد بدهید تا صفحهها لینک واقعی باشند.
- برای نمایش مسیر سلسلهمراتبی صفحه، از درختواره داخل TopBar استفاده کنید؛ صفحهٔ مستقل مسیرنما وجود ندارد.