Vercel UI SDK 0.1.0-beta.2 üzerine kurulu. API’si değişebilir.
Number input
Vercel UI SDK üzerinde basılı tutulunca tekrarlayan düğmeler, her dilde para birimi, yüzde ve birim biçimleri ve sürükleme tutamacı olan bir sayı alanı.
- Form bileşenleri
- 8 parça
- 13 örnek
@tabler/icons-react@ui-sdk/core@ui-sdk/reactclass-variance-authority
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-number-input.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @ui-sdk/react@0.1.0-beta.2 @ui-sdk/core@0.1.0-beta.2 @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/ui-sdk-number-input.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
UI SDK, ui-sdk adlı bir cascade katmanında kendi CSS’ini biraz ekler. Sınıflarınızın kazanması için bu katmanı genel stil dosyanızın en üstünde, Tailwind import’unun üzerinde tanımlayın.
Değer bir sayıdır, alan boşken null olur ve alan onu biçimlendirilmiş gösterir. Yazmak, metin geçerli bir sayı olduğu anda değeri günceller. Enter veya alandan çıkmak onu onaylar: metin okunur, min ile max arasında tutulur, adıma oturtulur ve yeniden biçimlendirilir.
Bir düğme sınırında kapanır. Sınırların dışında yazılan değer onaylanınca içeri çekilir.
step olağan artıştır. Shift, Page Up ve Page Down largeStep kadar, Alt veya Option ile bir ok tuşu smallStep kadar değiştirir. Tekrarlamak için düğmeyi basılı tutun.
format, Intl.NumberFormat seçeneklerini alır. Aynı biçimde yazılabilir ve yüzde bir kesirdir, yani %15 0.15 demektir. variant="stacked" grubu sona küçük oklar koyar.
locale gösterim ve yazım için ayırıcıları, simgeleri ve basamak gruplamasını seçer. Olmadığında alan etkileşimli hale gelince sayfanın dilini izler ve sunucu İngilizce çizer.
Değeri değiştirmek için bir NumberInputScrubArea öğesini tasarım araçlarındaki gibi yana sürükleyin. Tarayıcının işaretçi kilidine izin verdiği yerlerde sürükleme ekranın kenarını geçebilir ve imleci NumberInputScrubAreaCursor çizer.
wheel ile odaktaki alanın üzerinde kaydırmak değeri değiştirir. Varsayılan olarak kapalıdır, böylece alanın üzerinden kaydırılan bir sayfa onu hiç değiştirmez.
onValueChange her geçerli değişiklikte, onValueCommit ise bir etkileşim bitince çalışır; kaydetmek için o kullanılır. Bir denetleyici değeri herhangi bir düğmeden değiştirir veya ayarlar.
Bir name ile sayı olduğu gibi, örneğin 1250 olarak gönderilir, asla biçimlendirilmez. required boş alanı engeller ve form sıfırlanınca varsayılana döner.
invalid, stok gibi kendi denetimleriniz için alanı işaretler ve girişe aria-invalid ekler.
Devre dışı bir alana odaklanılamaz, değiştirilemez ve gönderilmez.
Salt okunur bir alana odaklanılabilir ve gönderilir, ancak düğmeler, sürükleme ve yazma onu değiştirmez.
Düğmeler yer değiştirir; rakamları ve para birimini yerel ayar belirler.
| Tuş | Action |
|---|---|
| ↑↓ | Değeri step kadar değiştirir. |
| ShiftPageUpPageDown | largeStep kadar değiştirir, varsayılan on adımdır. Shift oklarla, düğmelerle, tekerlekle ve sürüklemeyle çalışır. |
| Alt | Bir ok tuşuyla smallStep kadar değiştirir, varsayılan adımın onda biridir. |
| HomeEnd | Tanımlıysa en küçük ya da en büyük değere gider. |
| Enter | Yazılanı onaylar ve biçimlendirir. |
Alan, yerel bir metin girişi üzerinde WAI-ARIA spinbutton kalıbının klavyesini izler, böylece normal metin düzenleme çalışmaya devam eder. Girişi bir etiketle veya aria-label ile adlandırın. Düğmeler varsayılan olarak “Increase” ve “Decrease” adını taşır, girişi gösterir ve ok tuşları aynı işi yaptığı için sekme sırasının dışında kalır.
Ondalıklı bir alan telefonlarda ondalık tuş takımı ister ve düğmeler dokunmatik ekranlarda büyür. Yalnızca harekete izin verildiğinde basınca küçülürler.
Her parça aynı adlı UI SDK parçasını sarar ve render ile parçanın durumuna bağlı bir fonksiyon olabilen className dahil tüm prop’larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
value | number | null | – |
defaultValue | number | null | – |
onValueChange | (value: number | null, details) => void | – |
onValueCommitBir etkileşim bitince çalışır. Kaydetmek için. | (value: number | null, details) => void | – |
min | number | – |
max | number | – |
step | number | 1 |
largeStep | number | step × 10 |
smallStep | number | step ÷ 10 |
format | Intl.NumberFormatOptions | – |
localeVarsayılan olarak sayfanın dili. | string | – |
wheel | boolean | false |
invalid | boolean | false |
disabled | boolean | false |
readOnly | boolean | false |
required | boolean | false |
name | string | – |
form | string | – |
controllercreateNumberInputController() ile oluşturulur. | NumberInputController | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="number-input" | CSS'te sayı alanını hedeflemek için. |
data-scrubbing | Sürükleme değeri değiştirirken bulunur. |
data-invalid | Geçersiz olduğunda bulunur. |
data-disabled | Devre dışıyken bulunur. |
data-readonly | Salt okunur olduğunda bulunur. |
data-required | Zorunlu olduğunda bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
variantİki yanda düğmeler, sonda üst üste oklar ya da sürükleme tutamacı için düğmesiz. | "split" | "stacked" | "plain" | "split" |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="number-input-group" | CSS'te alanın kutusunu hedeflemek için. |
data-variant | Varyant: split, stacked veya plain. |
| Prop | Tür | Varsayılan |
|---|---|---|
id | string | – |
placeholder | string | – |
render | ReactElement | (props, state) => ReactElement | – |
| Prop | Tür | Varsayılan |
|---|---|---|
aria-label | string | "Increase" |
disabledYalnızca bu düğmeyi kapatır. | boolean | – |
childrenVarsayılan olarak artı, stacked varyantında ok. | ReactNode | (state) => ReactNode | – |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="number-input-increment" | CSS'te düğmeyi hedefler. |
data-at-bound | Değer max olduğunda bulunur. |
data-disabled | Düğme değeri değiştiremediğinde bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
aria-label | string | "Decrease" |
disabledYalnızca bu düğmeyi kapatır. | boolean | – |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="number-input-decrement" | CSS'te düğmeyi hedefler. |
data-at-bound | Değer min olduğunda bulunur. |
stacked grubunun sonunda artırma düğmesini azaltmanın üstüne dizer.
| Prop | Tür | Varsayılan |
|---|---|---|
orientationSağa ve yukarı değeri artırır. | "horizontal" | "vertical" | "horizontal" |
pixelsPerStepBir adım için işaretçinin ne kadar hareket ettiği. | number | – |
controllerSayı alanının dışındaki bir sürükleme alanını bağlar, örneğin araç çubuğundaki bir simge. | NumberInputController | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="number-input-scrub-area" | CSS'te sürükleme alanını hedeflemek için. |
data-orientation | horizontal veya vertical. |
data-scrubbing | Bir sürükleme değeri değiştirirken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenVarsayılan olarak işaretçiye ortalanmış yatay bir ok. | ReactNode | – |
- CalendarTekli, aralık ve çoklu seçim için, kayan aylar, aralık önizlemeleri ve dokunmaya uygun boyutta günler içeren bir tarih ızgarası.
- Checkboxİşareti çizilerek beliren, belirsiz üst öğeleri, grupları ve hover durumunu paylaşan etiketleri olan bir onay kutusu.
- ComboboxÇipler, gruplar ve asenkron sonuçlar içeren, siz yazdıkça boyutu değişen bir açılır pencerede filtrelenebilir bir select.
- Date pickerTek tarihler ve aralıklar için takvimi bir popover içinde, telefonlarda ise alt sayfa olarak açan bir düğme.
- FieldKontrolüne bağlanmış etiketler, açıklamalar ve hatalar; doğrulama durumları ve formlar için düzenler içerir.
- InputÜç boyutlu, geçersiz ve salt okunur durumları, yerel doğrulama stilleri ve telefonların asla yakınlaştırmaması için 16px dokunmatik yazı tipi olan bir metin girişi.