پرتوپرتو

انتخاب استان (RegionPicker)

چندانتخابی ۳۱ استان ایران بر اساس slug یا کد ISO 3166-2:IR

معرفی

RegionPicker یک wrapper سبک روی MultiSelect است که از داده‌ی canonical IRAN_PROVINCES تغذیه می‌شود. خروجی به‌صورت پیش‌فرض slug (مثل tehran) است که URL-friendly است؛ با keyBy="iso" می‌توانید کد ISO 3166-2:IR (مثل IR-07) دریافت کنید.

چه زمانی استفاده کنیم:

  • داشبورد افکارسنجی scoped per province
  • فیلتر گزارش بولتن استانی
  • Pair با IranProvinceHeat برای فیلتر-and-render همزمان

چه زمانی استفاده نکنیم:

  • اگر به انتخاب کشور نیاز دارید — از CountryPicker استفاده کنید
  • اگر می‌خواهید نقشه SVG قابل کلیک داشته باشید (Phase 5.4 deferred — هنوز shipped نیست)

زمین بازی

با تغییر تنظیمات زیر، انتخاب استان را به‌صورت زنده مشاهده کنید.

زمین بازی
تنظیمات
محتوا
ظاهر
کد این نمونه به‌صورت خودکار قابل تولید نیست — برای کد آماده‌ی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.

استفاده

import { RegionPicker } from '@parto-system-design/ui'

const [provinces, setProvinces] = React.useState<string[]>([])

;<RegionPicker value={provinces} onValueChange={setProvinces} placeholder="استان را انتخاب کنید" />

حالت‌ها و انواع

پیش‌فرض (slug-based)

<RegionPicker value={provinces} onValueChange={setProvinces} />

خروجی به‌صورت کد ISO

<RegionPicker keyBy="iso" value={provinces} onValueChange={setProvinces} />
// خروجی: ['IR-07', 'IR-04', ...]

محدود به استان‌های منتخب

<RegionPicker
  includeSlugs={['tehran', 'isfahan', 'fars', 'khorasan-razavi']}
  value={provinces}
  onValueChange={setProvinces}
/>

Single-select

<RegionPicker maxSelected={1} value={provinces} onValueChange={setProvinces} />

راهنمای استفاده

بکنید

  • مقدار را همیشه به‌صورت slug ذخیره کنید — locale-independent و URL-safe است - اگر در state از URL همگام‌سازی می‌کنید، slug را به query param بدهید: ?province=tehran - از keyBy="iso" فقط زمانی استفاده کنید که با سرویس external که ISO می‌خواهد کار می‌کنید

نکنید

  • از این کامپوننت برای فیلتر کشور استفاده نکنید — CountryPicker مناسب آن است - مقدار را به نام فارسی استان ذخیره نکنید — هرگز به نام label وابستگی نسازید - پارامتر IRAN_PROVINCES را در کلاینت پارس نکنید — منبع canonical در lib/iran-provinces.ts است

جدول ویژگی‌ها

Prop

Type

دسترسی‌پذیری

  • روی MultiSelect ساخته شده — تمام keyboard interactions به ارث می‌رسد.
  • اسامی استان‌ها به فارسی روان screen reader را پیست می‌کنند؛ روی en/ar از label محلی استفاده می‌شود.
  • role="combobox" با aria-label معنادار از placeholder یا value تأمین می‌شود.

کامپوننت‌های مرتبط

  • CountryPicker — اگر نیاز به انتخاب کشور دارید، نه استان
  • IranProvinceHeat — برای نمایش choropleth-style توزیع داده روی استان‌ها
  • MultiSelect — اگر کامپوننت پایه می‌خواهید بدون دیتاست استانی