# حقل إدخال Input
إدخال نصي أحادي السطر ومتعدد الأسطر. يدعم البادئة واللاحقة، والمسح، وعدّ الأحرف، وقطع maxlength، والربط مع التحقق من النموذج.
أشكال حقل الإدخال
<template>
<div class="demo-col" style="gap: 18px">
<div class="demo-row" style="gap: 12px; flex-wrap: wrap">
<LhInput v-model="text" placeholder="يرجى إدخال المحتوى" clearable name="title" />
<LhInput v-model="text" prefix-icon="search" suffix-icon="close" placeholder="أيقونات بادئة ولاحقة" />
</div>
<div class="demo-row" style="gap: 12px; flex-wrap: wrap">
<LhInput v-model="secret" type="password" placeholder="كلمة المرور" autocomplete="new-password" />
<LhInput v-model="text" readonly placeholder="للقراءة فقط" />
<LhInput v-model="text" disabled placeholder="حالة معطّلة" />
</div>
<div class="demo-row" style="gap: 12px; flex-wrap: wrap; align-items: center">
<LhInput v-model="text" size="small" placeholder="small" />
<LhInput v-model="text" size="medium" placeholder="medium" />
<LhInput v-model="text" size="large" placeholder="large" />
</div>
<div class="demo-row" style="gap: 12px; flex-wrap: wrap">
<LhInput v-model="poem" type="textarea" :rows="2" placeholder="نص متعدد الأسطر (rows=2)" resize="vertical" />
<LhInput v-model="poem" type="textarea" autosize placeholder="ارتفاع أسطر متكيّف" />
</div>
<div class="demo-row" style="gap: 12px; flex-wrap: wrap">
<LhInput v-model="limited" :maxlength="20" show-word-limit placeholder="عدّاد الأحرف" />
<LhInput v-model="text" label="تسمية عائمة" placeholder="متنافية مع placeholder" />
</div>
<p class="demo-note">القيمة الحالية: {{ text || '(فارغ)' }}</p>
</div>
</template>
<script>
export default {
data: () => ({ text: '', secret: '', poem: '', limited: '' }),
}
</script>
# Props
| خاصية | الوصف | النوع | الافتراضي |
|---|---|---|---|
| v-model | القيمة المرتبطة (model: modelValue/input) | string | — |
| type | نوع عنصر التحكم | 'text' \| 'textarea' \| 'password' \| … | 'text' |
| size | الحجم | 'small' \| 'medium' \| 'large' | 'medium' |
| placeholder | نص العنصر النائب، يُؤخَذ من حزمة اللغة عند غيابه | string | t('input.placeholder') |
| clearable | إظهار زر المسح | boolean | false |
| prefixIcon / suffixIcon | أيقونتان أمامية وخلفية، تأخذان اسم أيقونة من LhIcon المُدمج | string | — |
| maxlength / minlength | حدّان أصليان للطول | number | — |
| showWordLimit | إظهار عدّاد الأحرف (يتطلب maxlength) | boolean | false |
| autosize | ارتفاع أسطر متكيّف لـ textarea | boolean \| {minRows,maxRows} | false |
| disabled / readonly | تعطيل / للقراءة فقط | boolean | false |
| autofocus | تركيز تلقائي عند التركيب | boolean | false |
| autocomplete | autocomplete أصلي | string | 'off' |
| nativeType | type أصلي (يعمل عند type=text) | string | 'text' |
| resize | اتجاه مقبض تحجيم textarea | 'none' \| 'both' \| 'horizontal' \| 'vertical' | — |
| name / form | سمتا name / form الأصليتان | string | — |
| tabindex | tabindex أصلي | number \| string | — |
| inputStyle | تنسيق مضمَّن لعنصر الإدخال | Record<string, string> | — |
| label | تسمية عائمة (متنافية مع placeholder) | string | — |
| themeVars / bgPattern / sx | تجاوز السمة | — | — |
# Events
| حدث | الوصف | معامل الاستدعاء |
|---|---|---|
| input | حدث v-model | (val, e) |
| change | يُطلق عند تغيّر القيمة | — |
| focus | يُطلق عند اكتساب التركيز | — |
| blur | يُطلق عند فقدان التركيز | — |
| clear | يُطلق عند المسح | — |
| keydown | يُطلق عند ضغط مفتاح | — |
# الربط مع النموذج
عند وضعه داخل LhFormItem وفشل التحقق، يحمل عنصر التحكم الأصلي aria-invalid="true" تلقائياً.
Copyright © 2024-2026 FengMo WenXue