اسلایدر (Slider)
کنترل انتخاب مقدار با کشیدن
معرفی
کامپوننت Slider برای انتخاب مقدار با کشیدن استفاده میشود.
چه زمانی استفاده نکنیم:
- وقتی مقدار دقیق مهم است — از
Input type="number"استفاده کنید - برای انتخاب از لیست گزینههای گسسته — از
SelectیاRadioGroupاستفاده کنید
استفاده
import { Slider } from '@partodata/ui'
export default function MyComponent() {
return <Slider defaultValue={[50]} max={100} step={1} />
}زمین بازی
با تغییر تنظیمات زیر، اسلایدر را به صورت زنده مشاهده کنید.
زمین بازی
تنظیمات
داده
حالت
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
حالتها و انواع
پیشفرض
عمودی
<Slider orientation="vertical" defaultValue={[50]} className="h-44" />غیرفعال
<Slider defaultValue={[30]} disabled />محدوده (Range)
<Slider defaultValue={[25, 75]} />اندازهها
اندازهٔ نوار و دستگیره با هم تغییر میکنند. پیشفرض پروژه sm است؛ برای ردیفهای فشرده (مثلاً یک نوار فیلتر) از xs و برای فرمهای ساختهشده روی ورودیهای xl از xl استفاده کنید.
<Slider defaultValue={[40]} size="xs" />
<Slider defaultValue={[40]} size="sm" />
<Slider defaultValue={[40]} size="md" />
<Slider defaultValue={[40]} size="lg" />
<Slider defaultValue={[40]} size="xl" />نمایش مقدار
برای اسلایدری که یک آستانه (threshold) را تنظیم میکند، کاربر باید مقدار انتخابی را ببیند. showValue="inline" مقدار را همیشه بالای دستگیره نشان میدهد؛ showValue="tooltip" فقط هنگام کشیدن یا فوکوس نمایش میدهد. برای قالببندی سفارشی (مثلاً افزودن واحد) از formatValue استفاده کنید.
<Slider defaultValue={[42]} showValue="inline" />
<Slider defaultValue={[42]} showValue="tooltip" />
<Slider defaultValue={[42]} showValue="inline" formatValue={(v) => `${v}%`} />نشانههای مرجع (Marks)
برای نشاندادن نقاط مهم روی نوار (مثلاً حداقل توصیهشده) از marks استفاده کنید.
<Slider
defaultValue={[40]}
marks={[
{ value: 0, label: 'کم' },
{ value: 50, label: 'متوسط' },
{ value: 100, label: 'زیاد' },
]}
/>راهنمای استفاده
بکنید
- از Slider برای انتخاب مقدار در یک بازه پیوسته استفاده کنید (مانند حجم صدا، درصد، یا فیلتر قیمت) - از
onValueCommitبه جایonValueChangeبرای فراخوانی API استفاده کنید تا از درخواستهای مکرر جلوگیری شود - برای انتخاب بازه (مثلاً فیلتر قیمت) از دو دستگیره با آرایه دو عنصری استفاده کنید - وقتی مقدار انتخابی یک آستانهٔ حیاتی است (مثلاً برای فراخوانی API)، حتماًshowValueرا روشن کنید تا کاربر مقدار را ببیند
نکنید
- وقتی مقدار دقیق عددی مهم است از Slider استفاده نکنید — از
Input type="number"استفاده کنید - برای انتخاب از گزینههای گسسته و مشخص از Slider استفاده نکنید — ازSelectیاRadioGroupاستفاده کنید - Slider را بدون نمایش مقدار فعلی به کاربر رها نکنید
Props
نکات
- جهت از
dirسند HTML خودکار تشخیص داده میشود (RTL/LTR) - برای جلوگیری از فراخوانی مکرر API، از
onValueCommit(نهonValueChange) استفاده کنید
دسترسیپذیری
- نقش
sliderاز Radix UI بهصورت خودکار اعمال میشود - مقادیر
aria-valuemin،aria-valuemaxوaria-valuenowتوسط Radix مدیریت میشوند - با
aria-labelیاaria-labelledbyبرچسبگذاری کنید - دستگیره بسته به
sizeبین 12 تا 24 پیکسل دیده میشود، اما ناحیهٔ لمسی آن در همهٔ اندازهها دستکم 44 پیکسل است (یک::beforeشفاف با inset منطقی)، بنابراین روی صفحههای لمسی هدفِ استاندارد را برآورده میکند بدون آنکه ظاهر تغییر کند
تعامل با کیبورد
Tab: فوکوس روی دستگیره (thumb) -Arrow Left/Right: تغییر مقدار بهصورت گامبهگام (در RTL جهت معکوس میشود) -Arrow Up/Down: تغییر مقدار -Home: حداقل مقدار -End: حداکثر مقدار -Page Up/Down: تغییر مقدار با گام بزرگتر
کامپوننتهای مرتبط
- Input — اگر کاربر باید مقدار عددی دقیق وارد کند، از Input با
type="number"استفاده کنید - RadioGroup — اگر مقادیر گسسته و محدود هستند (مثلاً 3 سطح کیفیت)، از RadioGroup استفاده کنید