Skip to content

Input

کامپوننت ورودی برای واردکردن محتوا با صفحه‌کلید؛ پایه‌ای‌ترین کنترل فرم.

کجا به کار می‌آید: وقتی به یک فیلد متنی نیاز دارید با برچسب ثابتِ بالا، آیکن ابتدایی، وضعیت و پیام اعتبارسنجی، و مشارکت در فرم بومی. <r-input> ورودی متن، گذرواژه و عدد را پوشش می‌دهد.

شروع سریع

کاربرد پایه

html
<r-input placeholder="متنی وارد کنید"></r-input>

مرجع API

ویژگی‌ها

ویژگینوعپیش‌فرضتوضیح
labelstring''نوشته ثابتی که بالای فیلد رسم می‌شود
placeholderstring''متن جای‌نگهدار که به <input> بومی پاس داده می‌شود
valuestring''مقدار فیلد؛ به اتریبیوت بازتاب می‌یابد و به فرم هم می‌رسد
disabledbooleanfalseاینکه ورودی غیرفعال باشد یا نه
typestring''نوع ورودی بومی که به کنترل درونی پاس داده می‌شود (text، password، number، …)
iconstring''نام آیکن ابتدای فیلد (به‌صورت r-icon رسم می‌شود)
namestring''نام فیلد هنگام مشارکت در فرم
statusstring''وضعیت اعتبارسنجی: error، warning
messagestring''متن راهنما یا اعتبارسنجی که زیر فیلد رسم می‌شود
minstring''کمترین مقدار؛ وقتی type="number" باشد به <input> درونی پاس می‌رود
maxstring''بیشترین مقدار؛ وقتی type="number" باشد به <input> درونی پاس می‌رود
stepstring''گام مقدار؛ وقتی type="number" باشد به <input> درونی پاس می‌رود
requiredbooleanfalseبه <input> درونی پاس می‌رود تا اعتبارسنجی بومی اعمال شود
sheetstring''CSSی که به shadow root تزریق می‌شود

برچسب label

نوشته‌ای ثابت که بالای فیلد رسم می‌شود: همیشه دیده می‌شود، هرگز روی محتوای کناری نمی‌افتد و با فوکوس، چیدمان را جابه‌جا نمی‌کند (برچسب‌های بالاچین فرم را هم سریع‌تر از برچسب‌های درون‌خطی یا شناور به پایان می‌رسانند؛ پژوهش ردیابی چشم لوک وروبلوسکی را ببینید).

html
<r-input label="نام کاربری"></r-input>

جای‌نگهدار placeholder

مثل اتریبیوت بومی placeholder رفتار می‌کند.

html
<r-input placeholder="نام کاربری را وارد کنید"></r-input>

مقدار value

html
<r-input value="1234"></r-input>

حالت غیرفعال disabled

html
<r-input label="نام کاربری" disabled></r-input>

آیکن icon

html
<r-input icon="user"></r-input>

انواع ورودی type

html
<r-input icon="lock" type="password" placeholder="گذرواژه"></r-input>
<r-input type="number" placeholder="عدد"></r-input>

وضعیت status

status را همیشه با یک message همراه کنید تا وضعیت را متن برساند، نه تنها رنگ.

html
<r-input status="error" label="نام کاربری" message="این فیلد الزامی است"></r-input>
<r-input status="warning" label="نام کاربری" message="این مقدار را بررسی کنید"></r-input>

پیام راهنما message

متن راهنما یا اعتبارسنجی را زیر فیلد رسم می‌کند.

html
<r-input label="ایمیل" message="ایمیل شما را هرگز با کسی در میان نمی‌گذاریم"></r-input>

نام فیلد فرم name

html
<r-input name="username" label="نام کاربری"></r-input>

رویدادها

هر دو رویداد به‌صورت CustomEvent فرستاده می‌شوند و مقدار جاری را در detail دارند.

رویدادچه وقت رخ می‌دهدdetail
inputبا هر ضربه کلید (هم‌رفتار با input بومی){ value: string }
changeهنگام نهایی‌شدن یا از دست دادن فوکوس (هم‌رفتار با change بومی){ value: string }

رویداد ورودی input

javascript
const input = document.createElement('r-input');
input.setAttribute('label', 'نام کاربری');
input.addEventListener('input', (event) => {
  console.log('در حال تایپ:', event.detail.value);
});

رویداد تغییر change

javascript
const input = document.createElement('r-input');
input.setAttribute('label', 'نام کاربری');
input.addEventListener('change', (event) => {
  console.log('مقدار تغییر کرد:', event.detail.value);
});

پیوند با فرم

r-input یک عنصر سفارشی پیوسته به فرم است (static formAssociated = true). ElementInternals را متصل می‌کند و مقدارش را با setFormValue می‌فرستد، پس اگر واقعاً از نوادگان یک <form> بومی باشد، new FormData(form) آن را جمع می‌کند؛ برای اینکه مقدار کلیدی داشته باشد name را تنظیم کنید. برای کمک‌کننده serializeForm() که یک ارسال را به شیء ساده تبدیل می‌کند، فرم‌ها را ببینید.

html
<form>
  <r-input name="username" label="نام کاربری"></r-input>
</form>

بازنشانی: یک form.reset() بومی (یا <button type="reset">) مقداری را برمی‌گرداند که فیلد هنگام نخستین اتصالش داشت. این کار با formResetCallback() انجام می‌شود، یکی از قلاب‌های چرخه عمر که مرورگر خودش روی عنصر سفارشی پیوسته به فرم صدا می‌زند.

اعتبارسنجی: تنظیم required باعث می‌شود فیلد خالی از راه ElementInternals.setValidity() نامعتبر شمرده شود؛ form.checkValidity() / form.reportValidity() آن را می‌بینند و هنگام ارسال، حباب اعتبارسنجی بومی مرورگر روی همان فیلد ظاهر می‌شود. فیلدهای disabled هرگز جلوی اعتبارسنجی را نمی‌گیرند، درست مثل <input> بومی. r-input متدها و ویژگی‌های همیشگی یک فیلد بومی را هم دارد: checkValidity()، reportValidity()، validity، validationMessage.

html
<form>
  <r-input name="username" label="نام کاربری" required></r-input>
  <button type="submit">ارسال</button>
</form>

Partهای CSS

از راه ::part() برای استایل‌دهی بیرونی در دسترس‌اند.

Partعنصر
inputپوشش فیلد
contentکنترل <input> بومیِ درونی
labelبرچسب ثابت بالای فیلد (وقتی label تنظیم شده باشد)
messageمتن راهنما یا اعتبارسنجی (وقتی message تنظیم شده باشد)
css
r-input::part(content) {
  font-size: 16px;
}

استایل‌دهی

<r-input> ۶۱ ویژگی سفارشی CSS از آنِ خود دارد، به‌علاوه توکن‌های معنایی که از پوسته می‌خواند. هر جا که ارث برسد می‌توانید یکی را تعیین کنید: :root، یک دربرگیرنده، یا خود عنصر:

css
r-input {
  --ran-input-color: var(--ran-color-text-secondary);
}

Partها: content · input · label · message

فهرست کامل در توکن‌های استایل است؛ اینکه کدام توکن را به کار ببرید در سیستم طراحی آمده.

بهترین شیوه‌ها

  • برچسب‌ها: یک label معنادار بگذارید تا فیلد نامی دسترس‌پذیر داشته باشد.
  • جای‌نگهدارها: placeholder برای راهنمایی هنگام تایپ است، نه جایگزین برچسب.
  • وضعیت و پیام: status را با message همراه کنید تا وضعیت تنها با رنگ اعلام نشود.
  • آیکن‌ها: یک icon مرتبط بگذارید تا فیلد زودتر شناخته شود.
  • نوع‌ها: type متناسب با محتوا را انتخاب کنید (text، password، number، …).
  • فرم‌ها: وقتی مقدار را درون یک فرم جمع می‌کنید name را تنظیم کنید.

منتشرشده تحت مجوز MIT.