useInvalidShake
Gönderme denemesi bir form kontrolünü geçersiz bulduğunda onu sallar; biri hâlâ yazarken asla sallamaz.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-invalid-shake.jsonHook'u ve bağımlı olduğu her şeyi projenize ekler.
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
hooks/use-invalid-shake.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Hook yalnızca bir data-shake niteliği ayarlar. Hareket temanın animate-button-shake değerinden gelir ve onu data-shake:motion-safe:animate-button-shake ile eklersiniz. HextaUI'ın Input, Textarea, Native select ve Input group bileşenleri bu sınıfı zaten içerir ve hook'u çağırır. Kendi denetimleriniz için doğrudan kullanın.
Sallanma tek bir soruyu yanıtlar: göndermem neden çalışmadı? Bu yüzden hook yalnızca biri göndermeyi denedikten hemen sonra sallar, formu doldururken asla.
| Olay | Açıklama |
|---|---|
Submit attempt | Bir gönder düğmesine tıklamak, formun bir girdisinde Enter'a basmak veya formun submit olayı. |
Invalid within 600ms | Denetim invalid tetikler veya aria-invalid="true", data-invalid ya da :user-invalid taşır. Bu, yerel doğrulamayı, Base UI alanlarını ve gönderdikten hemen sonra ayarlanan sunucu hatalarını kapsar. |
Shake | data-shake 400ms boyunca ayarlanır. Bu sinyallerden kaç tanesi gelirse gelsin, deneme başına bir kez sallanır. |
- Bir
InputGroupiçinde yalnızca iç denetim değil tüm grup sallanır. - Azaltılmış harekette hiçbir şey ayarlanmaz. Her iki durumda da sallanmayı görünür bir hata mesajıyla eşleyin; çünkü sallanma bir ipucudur, mesaj değildir.
- Hook'un çalışması için denetimin bir
<form>'a ait olması gerekir. Olmadan hiçbir şey yapmaz.
- Denetim başına
enabledargümanıyla veya HextaUI girdilerindeshake={false}ile kapatın. - Niteliği yeniden başlatmak animasyonu yeniden başlatır; böylece ilki hâlâ sürüyor olsa bile ikinci bir başarısız deneme yeniden sallar.
- Yerel doğrulama gönderirken ilk geçersiz denetime odaklanır. Sallanma bunun üstüne yalnızca hareket ekler ve odağı asla taşımaz.
| Prop | Tür | Varsayılan |
|---|---|---|
refİzlenecek form denetimi. | RefObject<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | null> | – |
enabledSallanıp sallanmayacağı. | boolean | true |
| Öznitelik | Açıklama |
|---|---|
data-shake | Başarısız bir gönderim denemesinden sonra 400ms boyunca denetimde veya InputGroup'ta bulunur. |
Input, Textarea, NativeSelect ve InputGroup.
- MotionHer bileşenin kullandığı yumuşatma eğrileri, süreler ve azaltılmış hareket denetimi; ayrıca boyut dönüşümleri ve kayan vurgular için hook'lar.
- 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.
- Input groupSimgeler, metin, düğmeler ya da klavye ipucu eklenmiş; tek kenarlık ve odak halkasını paylaşan bir input.
- Native selectTarayıcının kendi select'i; Input ile eşleşecek şekilde biçimlendirilmiş, sakin bir yer tutucusu, Field desteği ve her cihazda işletim sistemi seçicisi vardır.
- TextareaYazdıklarınıza göre en az ve en çok satır sayısı arasında akıcı biçimde büyüyen çok satırlı metin; sayaçlar, doğrulama ve gönderme kısayolu içerir.