تخطّي إلى المحتوى الرئيسي

مربع حوار Dialog

يُبلغ المستخدم ويحمل العمليات ذات الصلة مع الحفاظ على حالة الصفحة الحالية.

الاستخدام الأساسي​

مربع حوار مُتحكم به
import { useState } from 'react'
import { LhButton, LhDialog } from '@lh-ui/react'

export default function Demo() {
const [open, setOpen] = useState(false)

return (
<>
<LhButton type="primary" onClick={() => setOpen(true)}>
فتح مربع الحوار
</LhButton>
<LhDialog
open={open}
title="تنبيه"
width="420px"
footer={
<>
<LhButton onClick={() => setOpen(false)}>إلغاء</LhButton>
<LhButton type="primary" onClick={() => setOpen(false)}>تأكيد</LhButton>
</>
}
onClose={() => setOpen(false)}
>
<p>هذا مربع حوار مُتحكم به.</p>
</LhDialog>
</>
)
}

خصائص Dialog​

خاصيةالوصفالنوعالقيم المتاحةالافتراضي
openهل يكون مفتوحًا (مُتحكم به بحتة)boolean—false
titleالعنوان (يعمل كقيمة احتياطية لـ aria-label عند عدم وجود header)string——
widthالعرضstring | number——
fullscreenملء الشاشةboolean—false
showCloseإظهار زر الإغلاقboolean—true
closeOnClickModalالإغلاق عند النقر على القناعboolean—true
closeOnPressEscapeالإغلاق بالضغط على Escboolean—true
draggableقابل للسحب (سحب شريط العنوان)boolean—false
centerتوسيط العنوان والتذييلboolean—false
positionإزاحة تموضع مخصصة{ top?: string; left?: string }——
lockScrollقفل تمرير body عند الفتحboolean—true
beforeCloseاعتراض ما قبل الإغلاق (إرجاع false / Promise<false> يعني عدم الإغلاق)() => boolean | Promise<boolean>——
topالمسافة من الأعلىstring——
zIndexمستوى الطبقة (يُخصص افتراضيًا بشكل متزايد عبر useLhZIndex)number——
headerرأس مخصص (يتجاوز title)ReactNode——
footerتذييل مخصصReactNode——
themeVarsمتغيرات السمة على مستوى المكوّنRecord<string, string>——
sxخصائص التخطيط السريعSxProps——

أحداث Dialog​

حدثالوصفتوقيع الاستدعاءمقابل Vue
onCloseطلب إغلاق (يُطلق من القناع / Esc / زر الإغلاق، ولا يُستدعى بعد اعتراض beforeClose)() => voidupdate:modelValue
onOpenيُطلق لحظة الفتح (بعد تركيب DOM)() => void@open
onOpenedيُطلق بعد انتهاء حركة الفتح() => void@opened
onCloseStartيُطلق عند بدء حركة الإغلاق() => void@close
onClosedيُطلق بعد انتهاء حركة الإغلاق (بعد إلغاء تركيب DOM)() => void@closed

ref​

forwardRef<HTMLDivElement>. لا يحتوي LhDialogInstance حاليًا على أي دوال حتمية.

دلالة التحكم البحت

على خلاف plus، لا يحتوي Dialog في هذه المكتبة على حالة وسيطة isVisible داخلية: تُحمل قيمة open بالكامل من قبل الحالة الخارجية، وأي مسار إغلاق يستدعي onClose فقط. راجع دليل الترحيل.

تعدد الطبقات المنبثقة و Esc

يحافظ useLhOverlayStack على رصة ترتيب الفتح، فلا يغلق Esc إلا الطبقة المنبثقة العليا، تجنبًا لإغلاق كل الطبقات بضغطة واحدة.

الأنماط​

import '@lh-ui/react/style/dialog'