@akhatmirzo/ui

Slider

Raqamli qiymat yoki oraliqni sudrab tanlash: bitta va ikki tutqich, belgilar, qiymat pufakchasi va Field bilan integratsiya.

Import

import { Slider } from '@akhatmirzo/ui';

Qachon ishlatish

  • Aniq raqam muhim bo'lmaganda — ovoz balandligi, yorqinlik, radius. Foydalanuvchi "taxminan" tanlaydi va natijani darhol ko'radi.
  • Oraliq filtri — narx "dan — gacha", yosh, maydon. Ikki tutqichli slider ikkita input'dan tezroq.
  • Aniq qiymat kerak bo'lsa (summa, miqdor) — Input yoki MaskedInput qulayroq; slider bilan yonma-yon ham qo'yish mumkin.
  • Qadamlar kam bo'lsa (3–5 ta variant) — SegmentedControl yoki RadioGroup tushunarliroq.

Qiymat — doim massiv

Radix kabi qiymat har doim number[]: bitta tutqich — [50], oraliq — [20, 80]. Tutqichlar soni massiv uzunligidan olinadi. defaultValue berilmasa — [min].

<Slider defaultValue={[50]} />
<Slider defaultValue={[20, 80]} />

Oraliq

Ikki qiymat — ikki tutqich. formatValue qiymatni pufakchada va ekran o'quvchida chiroyli ko'rsatadi; minStepsBetweenThumbs tutqichlar orasidagi eng kichik masofani (qadamlarda) belgilaydi.

Narx: 1 000 000 so'm — 3 500 000 so'm

Qiymat pufakchasi

showValue — tutqich ustidagi qiymat (Tooltip uslubida):

QiymatQachon ko'rinadi
active (standart)Sichqoncha ustida turganda, sudrashda va fokus olganda
alwaysDoim
neverHech qachon

Belgilar

marks — trek ostidagi chiziqcha va yozuvlar. Belgilar faqat ko'rsatish uchun: qiymatni step cheklaydi.

O'lchamlar va holatlar

size — md (trek 6px, tutqich 20px, standart) yoki sm (4px / 16px). Tutqichning bosish maydoni ikkala o'lchamda ham kamida 40px. disabled — sudrab bo'lmaydi va fokus olmaydi.

Field bilan

Field ichida label tutqich nomiga aylanadi, izoh va xato aria-describedby ga ulanadi, error bo'lsa slider invalid holatga o'tadi (tutqich va to'lgan qism qizil).

Do'kondan necha km uzoqlikkacha yetkazasiz

40 km dan uzoqqa kuryer yo'q

Vertikal

orientation="vertical" — slider ota elementning balandligini egallaydi (kamida 160px). Klaviaturada ↑ ↓ ham ishlaydi.

Forma va API

  • name berilsa, <form> ichida har bir tutqich uchun yashirin <input> yaratiladi: bitta tutqichda name, oraliqda name[].
  • onValueChange — har bir siljishda; onValueCommit — sudrash tugaganda (yoki klaviatura bilan o'zgarganda) bir marta. Server so'rovlarini onValueCommit ga ulang.
<Slider
  defaultValue={[20]}
  onValueChange={setPreview} // har siljishda
  onValueCommit={(v) => saveSettings({ volume: v[0] })} // qo'yib yuborilganda
/>

Props

Qolgan <span> atributlari va Radix Root prop'lari (dir, form) ham qabul qilinadi; ref ildiz elementga tushadi.

PropTipStandartTavsif
valuenumber[]—Qiymat (boshqariladigan rejim)
defaultValuenumber[][min]Boshlang'ich qiymat
onValueChange(value: number[]) => void—Har bir o'zgarishda
onValueCommit(value: number[]) => void—Sudrash tugaganda yoki klaviatura bilan o'zgarganda
minnumber0Eng kichik qiymat
maxnumber100Eng katta qiymat
stepnumber1Qadam
minStepsBetweenThumbsnumber0Tutqichlar orasidagi eng kichik masofa (qadamlarda)
orientation'horizontal' | 'vertical''horizontal'Yo'nalish
size'sm' | 'md''md'Trek 4 / 6px, tutqich 16 / 20px
showValue'never' | 'active' | 'always''active'Tutqich ustidagi qiymat pufakchasi
formatValue(value: number) => stringStringPufakcha va aria-valuetext matni
marks{ value: number; label?: ReactNode }[]—Trek ostidagi belgilar
disabledboolean—Sliderni o'chiradi
invalidboolean—Xato holati (Field ichida avtomatik)
namestring—Forma uchun: har bir tutqichga yashirin input (oraliqda name[])
labels{ thumb?: (index: number, count: number) => string }'Qiymat' | 'Minimal qiymat' / 'Maksimal qiymat'Tutqichlarning ekran o'quvchi uchun nomi
aria-labelstring—Field bo'lmasa — slider nomi (oraliqda tutqich nomi bilan qo'shiladi)

Data atributlari

AtributQayerdaQiymat
data-sizeildizsm · md
data-orientationildiz, trek, tutqichhorizontal · vertical
data-disabledildiz, trek, tutqicho'chirilganda mavjud
data-invalidildizxato holatida mavjud
data-slottrek, to'lgan qism, ...slider-track · slider-range · slider-thumb · slider-value · slider-marks

Klaviatura

TugmaHarakat
← ↓ / → ↑Bir qadam kamaytirish / oshirish
PageDown / PageUp10 qadam kamaytirish / oshirish
Shift + strelka10 qadam
Home / Endmin / max
TabKeyingi tutqichga o'tish

Accessibility

  • Rol. Har bir tutqich — role="slider", aria-valuemin, aria-valuemax, aria-valuenow, aria-orientation bilan. Asosida Radix Slider.
  • Matnli qiymat. aria-valuetext = formatValue natijasi — ekran o'quvchi "1 500 000 so'm" deb o'qiydi, "1500000" emas.
  • Nom. Field ichida tutqich label bilan aria-labelledby orqali bog'lanadi. Oraliqda har tutqich nomi: label + "Minimal qiymat" / "Maksimal qiymat" (labels.thumb bilan o'zgartiriladi). Field bo'lmasa — aria-label bering.
  • Xato. Field ning izohi va xatosi aria-describedby ga, xato holati aria-invalid ga tushadi.
  • Pufakcha va belgilar bezak — aria-hidden (qiymat aria-valuetext da allaqachon bor).
  • Touch. Tutqichning ko'rinmas bosish maydoni kamida 40px.

Sahifada