رفتن به محتوا

فوکوس لایه‌ها

Dialog، Alert Dialog، Sheet و Drawer modal هستند و focus را هنگام بازبودن داخل خود نگه می‌دارند. Popover، menu، Select، Combobox، Hover Card و Tooltip غیرmodal‌اند و مدل focus مخصوص خود را دارند.

مرحلهDialog، Sheet و DrawerAlert Dialog
بازشدنelement دارای focus ثبت می‌شودelement دارای focus ثبت می‌شود
focus اولیهcontainer محتوا focus می‌گیردcancel امن در صورت وجود focus می‌گیرد
Tabمیان descendantهای قابل‌focus می‌چرخدمیان descendantهای قابل‌focus می‌چرخد
Escapemodal بالایی را می‌بنددdialog را می‌بندد؛ cancel قابل‌مشاهده نیز لازم است
بستنfocus به opener موجود برمی‌گرددfocus به opener موجود برمی‌گردد

مدیریت focus جای accessible title و description را نمی‌گیرد.

AdapterPortalکنترل برنامه‌ای
ReactDialogPortal محتوا را در document.body mount می‌کندopen و onOpenChange یا defaultOpen
Vuemodal با Teleport به body می‌رودv-model:open یا default-open
Angularمحتوا در host می‌ماندمتدهای show() و close() را فراخوانی کنید؛ assignment مستقیم lifecycle را دور می‌زند

Tooltip و Hover Card focus را به loop modal منتقل نمی‌کنند. Popover با Escape بسته می‌شود. Menuها focus را میان itemها جابه‌جا می‌کنند. Select و Combobox باید رفتار فرم و active option خود را حفظ کنند. Tab را در یک surface غیرmodal trap نکنید.

فاصلهٔ پیش‌فرض ۸px است، سمت bottom ترجیح دارد و در برخورد با viewport به جهت مقابل flip می‌شود. engine با scroll، resize و تغییر اندازهٔ element به‌روزرسانی و در teardown همهٔ listenerها را پاک می‌کند.

در صورت امکان از modal داخل modal خودداری کنید. اگر لازم است:

  1. child را از element پایدار داخل parent باز کنید.
  2. Escape اول فقط child را ببندد.
  3. focus به opener داخل parent برگردد.
  4. پس از بستن parent، focus به opener اصلی برگردد.
  5. outside press نباید هر دو سطح را هم‌زمان ببندد.

با صفحه‌کلید opener را فعال کنید، focus اولیه و accessible name را بررسی کنید، با Tab و Shift+Tab حرکت کنید و Escape را بزنید. آزمون را در RTL، reduced motion، صفحهٔ scrollشده و viewport موبایل تکرار کنید.

Last verified on 2026-08-13 against Simurgh registry 0.1.1.