Skip to content

نموذج Form ​

جمع البيانات والتحقق منها. منطق التحقق كله دوالّ نقية في @lh-ui/share، صفر اعتماد على المنصة، والسلوك متطابق على الطرفين.

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

vue
<template>
  <lh-form :model="form" :rules="rules" ref="formRef" label-width="80">
    <lh-form-item label="اسم المستخدم" prop="name">
      <lh-input v-model="form.name" placeholder="أدخل اسم المستخدم" />
    </lh-form-item>
    <lh-form-item label="البريد الإلكتروني" prop="email">
      <lh-input v-model="form.email" placeholder="أدخل البريد الإلكتروني" />
    </lh-form-item>
    <lh-button type="primary" @click="onSubmit">إرسال</lh-button>
  </lh-form>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const form = ref({ name: '', email: '' })
const formRef = ref()

const rules = {
  name: [{ required: true, message: 'أدخل اسم المستخدم', trigger: 'blur' }],
  email: [{ required: true, message: 'أدخل البريد الإلكتروني', trigger: 'blur' }],
}

const onSubmit = async () => {
  const ok = await formRef.value.validate()
  if (ok) {
    // اجتاز التحقق، إرسال
  }
}
</script>

Form Props ​

الخاصيةالوصفالنوعالافتراضي
modelكائن بيانات النموذج (مطلوب)Record<string, unknown>—
rulesقواعد التحقق (المفاتيح هي أسماء prop)Record<string, LhFormRule[]>—
labelPositionموضع التسمية'left' | 'right' | 'top''right'
labelWidthعرض التسميةstring | number—
inlineتخطيط ضمن السطرbooleanfalse
customClassصنف مخصّصstring—
sxخصائص تخطيط سريعةLhSxProps—

Form Methods (تُستدعى عبر ref) ​

يجب أن يكون استدعاء ref بعد onReady

لم يكتمل إنشاء المكوّنات الفرعية في مرحلة onLoad، لذا فإن formRef.value هو undefined. حدث النقر على زر الإرسال يقع طبيعيًا بعد onReady فلا مشكلة فيه؛ أما إن أردت الاستدعاء عند تهيئة الصفحة فضعه داخل onReady.

الدالةالوصفالقيمة المُرجَعة
validateالتحقق من جميع الحقولPromise<boolean> (true عند اجتياز الكل)
validateFieldالتحقق من حقل واحدPromise<boolean>

FormItem Props ​

الخاصيةالوصفالنوعالافتراضي
propمفتاح الحقل (يقابل مفتاح model ومفتاح rules)string—
labelنص التسميةstring—
requiredعلامة الحقل المطلوب (نجمة؛ التحقق الفعلي تحدده rules)booleanfalse
rulesقواعد خاصة بهذا الحقل (تدمج مع rules الخاصة بـ Form)LhFormRule[]>—
customClassصنف مخصّصstring—

الفروق عن نسخة Vue3

  • تشغيل التحقق: لا توجد دلالة change لعناصر التحكم في البرنامج المصغر، فيُخطَّط حدثا blur / input في كل عنصر تحكم كمطلق للتحقق.
  • إرسال النموذج: تختلف دلالات النموذج في البرنامج المصغر، لذا يُرجع validate صيغة Promise<boolean> للإرسال اليدوي، دون اعتراض حدث submit كما في الويب.