استان و شهر
address-pickerکامپوننتدو کمبوباکس بههموصل برای ۳۱ استان و شهرهاشون. فهرست شهر دنبال استان میاد، با عوض شدن استان خالی میشه و فقط اسمهای داخل فهرست قبول میشن.
نصب
با CLI
اگر هنوز init نکردید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور کامپوننت و وابستگیهاش را مینویسه.
$ npx vibefarsi add address-pickerنصب دستی
محتوای تب «کد» را در
components/ui/address-picker.tsxبگذارید. پیشنیاز: combobox.$ npm i lucide-reactکپی کل فایلregistry json
استفاده
usage.tsx
1import { AddressPicker } from "@/components/ui/address-picker"2import { PostalCodeInput } from "@/components/ui/postal-code-input"34<AddressPicker onChange={(addr, complete) => complete && setAddress(addr)} />5<PostalCodeInput onChange={(digits, valid) => setPostal(valid ? digits : null)} />67// فقط استانهایی که ارسال دارید:8<AddressPicker provinces={["تهران", "البرز"]} name="ship" />پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| value / defaultValue | { province, city } | - | اسم استان و شهر، همونطور که در lib/iran-divisions.ts نوشته شده. |
| onChange | (value, complete) => void | - | complete وقتی هر دو انتخاب شده باشن و شهر مال همون استان باشه. |
| provinces | string[] | - | محدود کردن فهرست استانها، مثلاً برای ارسال فقط به چند استان. |
| name | string | - | دو ورودی مخفی name-province و name-city برای فرم معمولی میسازه. |
| invalid | boolean | - | بعد از ثبت فرم true بدید تا زیر فیلد خالی خطا نشون داده بشه. |
| layout | "row" | "stack" | "row" | row از sm به بالا دوستونی میشه. |
نکتههای راستچین
- دادهها مراکز شهرستان و شهرهای بزرگتر هر استان هستن و مرکز استان همیشه اول فهرست میاد. اگه همهی شهرها و روستاها را لازم دارید فهرست را از سرور بگیرید و به Combobox بدید.
- تایپ با ي و ك عربی یا بدون نیمفاصله هم شهر را پیدا میکنه، چون Combobox قبل از مقایسه حروف را یکسان میکنه.