کشو — Drawer
کپی کد یک پنل مودال کناری است که برای فیلترها، تنظیمات، جزئیات یک ردیف یا منوی تبلت به کار میرود. لبه با مقادیر منطقی کپی کد و کپی کد مشخص میشود، بنابراین در RTL خودکار جابهجا میشود. پرده، دام فوکوس، Escape، قفل اسکرول و بازگرداندن فوکوس مانند کپی کد هستند. کشو کشیدن برای بستن ندارد؛ بستن همیشه با دکمهٔ بستن مرئی یا Escape است. برای تأیید کنش از کپی کد و برای محتوای مرکزی از کپی کد استفاده کنید.
وضعیت: beta · لایه: ۳ (کپی کد) · کد: کپی کد
import { Drawer } from '@tokapps/tuk';نمونهٔ زنده
کد قابل کپی
پایه: فیلتر از لبهٔ انتهایی
import { Drawer, Button } from '@tokapps/tuk';export function IdeaFilters() { return ( <Drawer trigger={<Button variant="secondary">فیلترها</Button>} title="فیلتر ایدهها" description="نتایج را محدود کنید." footer={({ close }) => <Button onClick={close}>اعمال فیلتر</Button>} > <p>دستهبندی، وضعیت و بازهٔ زمانی.</p> </Drawer> );}پیشرفته: کنترلشده، لبهٔ آغازین، اندازهٔ بزرگ
import { useState } from 'react';import { Drawer, Button } from '@tokapps/tuk';export function CampaignMenu() { const [open, setOpen] = useState(false); return ( <> <Button variant="secondary" onClick={() => setOpen(true)}>منوی کمپین</Button> <Drawer open={open} onOpenChange={setOpen} side="start" size="lg" title="منوی کمپین" description="بخشهای کمپین را انتخاب کنید." footer={({ close }) => <Button variant="ghost" onClick={close}>بستن منو</Button>} > <nav> <p>اطلاعات کلی</p> <p>بودجه و حمایتها</p> <p>نظرها</p> </nav> </Drawer> </> );}حالت محدود: تمامصفحه، بدون دکمهٔ بستن، با چاپ
import { Drawer, Button } from '@tokapps/tuk';export function ReadOnlyDetails() { return ( <Drawer size="full" showClose={false} print="show" dismissable={false} trigger={<Button variant="ghost">جزئیات کامل</Button>} title="جزئیات ایده" footer={({ close }) => <Button onClick={close}>بازگشت</Button>} > <p>این کشو فقط با دکمهٔ بازگشت یا Escape بسته میشود.</p> </Drawer> );}همهٔ پیکربندیها
کپی کد پراپها را از کپی کد و کپی کد (در کپی کد) میگیرد. پیشفرضها از پارامترهای تابع کپی کد در کپی کد خوانده شدهاند.
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| کپی کد | کپی کد | — | محرک باز کردن؛ با کپی کد وصل میشود. |
| کپی کد | کپی کد | — | حالت کنترلشده. |
| کپی کد | کپی کد | — | حالت کنترلنشدهٔ اولیه. |
| کپی کد | کپی کد | — | با هر تغییر باز یا بسته صدا میخورد. |
| کپی کد | کپی کد | بدون پیشفرض (الزامی) | عنوان؛ نام دسترسی کشو. |
| کپی کد | کپی کد | — | توضیح زیر عنوان؛ کپی کد. |
| کپی کد | کپی کد | — | ناحیهٔ کنشها؛ با کپی کد میتوان بست. |
| کپی کد | کپی کد | — | بدنهٔ اسکرولپذیر که کپی کد دارد. |
| کپی کد | کپی کد | کپی کد | لبهٔ منطقی. کپی کد در RTL سمت چپ و در LTR سمت راست است. |
| کپی کد | کپی کد | کپی کد | عرض: کپی کد از کپی کد، کپی کد از کپی کد، کپی کد از کپی کد؛ کپی کد عرض کامل بدون حاشیه. |
| کپی کد | کپی کد | کپی کد | کپی کد یعنی کلیک روی پرده نمیبندد. |
| کپی کد | کپی کد | کپی کد | نمایش دکمهٔ بستن مرئی. |
| کپی کد | کپی کد | کپی کد | برچسب دسترسپذیر دکمهٔ بستن. |
| کپی کد | کپی کد | — | مقدار کپی کد روی ریشه. |
| کپی کد | کپی کد | — | نام دسترسی وقتی عنوان مرئی ندارید. |
| کپی کد | کپی کد | — | مقصد اختصاصی صدا (opt-in). |
| کپی کد | کپی کد | کپی کد | رفتار چاپ. |
| کپی کد | کپی کد | از کپی کد | جهت صریح برای locale React Aria. |
| کپی کد | کپی کد | — | کلاس اضافه روی ریشهٔ پوشش. |
ساختار و اسلاتها
ModalOverlay [data-tds="drawer"][data-overlay="modal"][data-side][data-size][data-print]└── Modal [data-part="panel"] └── RacDialog [data-part="dialog"] ├── button [data-part="close"] (فقط وقتی showClose) ├── header [data-part="header"] │ └── div [data-part="heading"] │ ├── Heading [data-part="title"] │ └── p [data-part="description"] ├── div [data-part="body"] (فقط وقتی children) └── footer [data-part="footer"] (فقط وقتی footer)- بنیان ثابت: ترتیب DOM، کپی کد، جایگذاری پنل در لبهٔ منطقی، و کپی کد که جهت اسلاید را تعیین میکند.
- قابل تغییر: کپی کد، متغیرهای کپی کد، و محتوای کپی کد و کپی کد.
همهٔ حالتها
| حالت | نشانه (data-attribute یا prop) | نمایش |
|---|---|---|
| بسته (closed) | پوشش در DOM نیست | — |
| در حال ورود | کپی کد روی پنل | اسلات از لبهٔ کپی کد با کپی کد |
| باز (open) | کپی کد | پرده و کشو؛ بقیهٔ صفحه کپی کد |
| در حال خروج | کپی کد روی پنل | اسلات به سمت لبه |
| لبهٔ کپی کد | کپی کد | در LTR راست، در RTL چپ؛ گوشهٔ گرد فقط در لبهٔ داخلی |
| لبهٔ کپی کد | کپی کد | برعکس کپی کد |
| کپی کد | کپی کد | عرض کامل، بدون گوشهٔ گرد و حاشیه |
| hover و pressed (دکمهٔ بستن) | کپی کد، کپی کد | کپی کد و کپی کد |
| focus-visible | کپی کد روی دکمهٔ بستن و کنترلهای داخل پنل | حلقهٔ کپی کد |
| کپی کد | کپی کد | کلیک پرده نمیبندد |
| چاپ | کپی کد | پنل ایستا با حاشیه؛ دکمهٔ بستن پنهان |
| غیرفعال، خطا، بارگذاری، فقطخواندنی | در کد تعریف نشده | — |
رفتار پوشش (از قرارداد کپی کد در کپی کد)
- دام فوکوس: فوکوس درون کشو حبس میشود و با بسته شدن به محرک برمیگردد.
- Escape: کشو را میبندد و کپی کد صدا میخورد.
- پسزمینه: کلیک روی پرده میبندد؛ با کپی کد فقط دکمهها و Escape.
- قفل اسکرول: صفحهٔ زیرین قفل است؛ فقط بدنهٔ کشو اسکرول میخورد.
- کشیدن برای بستن: ندارد.
- تودرتو: پوششهای تودرتو با ترتیب DOM روی هم مینشینند.
تغییرات مجاز برای توسعهدهنده
- لبه (کپی کد): کپی کد (پیشفرض) یا کپی کد.
- اندازه (کپی کد): کپی کد، کپی کد (پیشفرض)، کپی کد، کپی کد.
- پرده و بستن: کپی کد، کپی کد، کپی کد.
- چاپ (کپی کد): کپی کد یا کپی کد.
- جهت (کپی کد): کپی کد یا کپی کد برای locale React Aria.
- محتوا: کپی کد، کپی کد، کپی کد، کپی کد (گره یا کپی کد).
- کنترل حالت: کپی کد و کپی کد، یا کپی کد و کپی کد.
- نقاط توسعه: کپی کد، کپی کد، کپی کد، متغیرهای کپی کد در سطح پوشش (فهرست در بخش توکنها).
تغییرات ممنوع (بنیان ثابت)
- اضافه کردن کشیدن برای بستن (gesture). این رفتار در قرارداد تعریف نشده است؛ برای آن از کپی کد استفاده کنید.
- حذف دام فوکوس، Escape یا کپی کد صفحهٔ زیرین.
- تغییر نقش یا نقطهٔ اتصال کپی کد عنوان.
- تغییر لبهٔ منطقی به لبهٔ فیزیکی (کپی کد و کپی کد) در استایل. جهت باید از کپی کد و کپی کد بیاید.
- حذف کپی کد (الزامی).
- استایل خام برای رنگ یا گرادیان. فقط توکنهای معنایی.
RTL، کیبورد و صفحهخوان
- RTL: کپی کد در RTL به سمت چپ و کپی کد به سمت راست میرود. جهت اسلاید از کپی کد روی ریشهٔ سند خوانده میشود (در CSS: کپی کد). ویژگیهای منطقی برای گوشهها و حاشیهها استفاده شدهاند.
- کلیدها: کپی کد و کپی کد فوکوس را درون کشو میچرخانند؛ کپی کد میبندد.
- صفحهخوان: کپی کد با نام از عنوان (کپی کد)، و توضیح از کپی کد (کپی کد).
- هدف لمسی: دکمهٔ بستن حداقل ۴۴px است.
- فوتر در موبایل: فاصلهٔ پایین فوتر با کپی کد تنظیم میشود.
صدا، حرکت، چاپ و کاهش حرکت
- صدا: پیشفرض بیصداست (opt-in). باز و بسته شدن کپی کد است؛ هیچ صدایی روی hover پخش نمیشود. معادل بصری: اسلاید کشو و انتقال فوکوس.
- حرکت: نام معنایی کپی کد (کپی کد) در کپی کد. مسافت از کپی کد (پیشفرض ۱۰۰٪) میآید؛ جهت اسلاید از کپی کد و کپی کد سند.
- کاهش حرکت: با کپی کد یا کپی کد اسلاید حذف و کشو فوری ظاهر میشود.
- چاپ: پیشفرض کپی کد. با کپی کد پنل ایستا با حاشیه چاپ میشود و دکمهٔ بستن پنهان است.
توکنها
فایل توکنهای مصرفی: کپی کد. استایلها در کپی کد و ساختار مشترک در کپی کد. مقدار مرجع در کپی کد.
- معنایی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- کامپوننتی: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
- تایپوگرافی، کنترل و مقیاس: کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد، کپی کد.
قرارداد ARCH
- آیکون دکمهٔ بستن فقط با کپی کد و نام معنایی است؛ مسیر asset وجود ندارد.
- تم فقط حرکت (کپی کد) و توکن را تغییر میدهد؛ لبهٔ منطقی و ترتیب DOM ثابتاند.
- gesture ندارد. معادل کیبوردی بستن Escape و دکمهٔ بستن است.
نکات
- برای ناوبری دائمی کناری در دسکتاپ از Sidebar استفاده کنید؛ کشو برای ناوبری موقت است.
- برای محتوای مرکزی: Dialog.
- برای تغییر خودکار بین مودال و نمای موبایل: ResponsiveDialog.
- برای کنش مخرب یا تأیید: AlertDialog.