Ana içeriğe geç

React Hook Form İçin Akıllı Mask ve Doğrulama

Teknik2 dkMedium

@virastack/input-mask (eski adı @omergulcicek/forms)

React projelerinde form doğrulama ve input mask işlemleriyle uğraşmak çoğu zaman zahmetli olabiliyor. Bu ihtiyacı karşılamak için geliştirdiğim @virastack/input-mask (eski adı @virastack/input-mask) paketi ile, TypeScript desteğiyle birlikte kolayca maskeleme ve doğrulama işlemlerini yönetebilirsin.

🚀 Canlı Önizleme

Paketi canlı olarak denemek için: virastack.com/tr/input-mask

npm package @virastack/input-mask
npm package @virastack/input-mask

Özellikler

  • Akıllı mask: Kart numarası, telefon, TCKN gibi alanlarda otomatik maskeleme
  • Regex doğrulama: Gömülü desenlerle hızlı doğrulama
  • Klavye kısıtlaması: Sadece rakam veya harf kabul eden alanlar
  • TypeScript desteği: Tam tip güvenliği
  • shadcn/ui uyumluluğu: Modern ve şık arayüzlerle sorunsuz entegrasyon

Kurulum

Peer dependency olarak react, react-hook-form ve use-mask-input gerektirir.

npm install @virastack/input-mask
npm install react react-hook-form use-mask-input

Kullanım

Aşağıdaki gibi kolayca entegre edebilirsin:

import { useForm } from "react-hook-form"
 
import { useFormFields } from "@virastack/input-mask"
import { useHookFormMask } from "use-mask-input"
 
const form = useForm()
const registerWithMask = useHookFormMask(form.register)
 
const { cardNumber, phone, email, tckn } = useFormFields({
	fields: [
		{ name: "cardNumber", type: "cardNumber" },
		{ name: "phone", type: "phone" },
		{ name: "email", type: "email" },
		{ name: "tckn", type: "tckn" }
	],
	registerWithMask,
	form
})
 
console.log(cardNumber.value) // "1234567890123456" (unmasked)
console.log(cardNumber.maskedValue) // "1234 5678 9012 3456" (masked)
<form onSubmit="{form.handleSubmit(console.log)}">
	<input {...cardNumber} placeholder="**** **** **** ****" />
	<input {...phone} placeholder="(5xx) xxx xx xx" />
	<input {...email} placeholder="email@example.com" />
	<input {...tckn} placeholder="12345678950" />
	<button type="submit">Gönder</button>
</form>

shadcn/ui ile Kullanım

shadcn/ui bileşenleriyle de tam uyumlu çalışır:

import { Button } from "@/components/ui/button"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
 
;<form onSubmit={form.handleSubmit(console.log)} className="space-y-4">
	<div>
		<Label htmlFor="cardNumber">Kart Numarası</Label>
		<Input {...cardNumber} placeholder="**** **** **** ****" />
	</div>
	<div>
		<Label htmlFor="phone">Telefon</Label>
		<Input {...phone} placeholder="(5xx) xxx xx xx" />
	</div>
	<Button type="submit">Gönder</Button>
</form>

Neden @virastack/input-mask?

  • Form alanlarını hızlıca tanımla, mask ve doğrulama otomatik gelsin
  • Modern arayüzlerle sorunsuz çalışır
  • TypeScript ile güvenli ve hatasız kod yaz
  • Türkiye'ye özel TCKN ve telefon gibi alanlar hazır

Katkıda Bulun

GitHub üzerinden açık kaynak olarak geliştirmekteyim: github.com/virastack/input-mask. Herhangi bir sorunla karşılaştığınızda issue açabilir veya PR gönderebilirsiniz. GitHub üzerinden repo'yu yıldızlayıp bana destek olabilirsiniz.

Arama paleti

Sayfa, yazı veya eylem ara