پرتوپرتو

useFilterPresets

ذخیره/بارگذاری/حذف preset های نام‌دار از state یک FilterProvider در localStorage

معرفی

هوک useFilterPresets وضعیتِ یک <FilterProvider> را به‌صورت preset های نام‌دار در localStorage ذخیره و مدیریت می‌کند: save / load / rename / overwrite / remove / clear. لیست به‌ترتیبِ جدیدترین مرتب می‌شود و سقفِ نرمِ maxPresets (پیش‌فرض ۲۰) دارد؛ روی سرریز قدیمی‌ترین حذف می‌شود. SSR-safe.

باید درونِ <FilterProvider> استفاده شود.

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

  • اجازه به کاربر برای ذخیره‌ی ترکیب‌های فیلترِ پرکاربرد و بازگشتِ سریع به آن‌ها

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

  • اگر فیلترها فقط باید با لینک share شوند → useFilterParams

استفاده

import { FilterProvider, useFilterPresets } from '@partodata/ui'

function PresetBar() {
  const { presets, save, load, remove } = useFilterPresets({ storageKey: 'reports.filters' })

  return (
    <div className="flex items-center gap-2">
      <Button onClick={() => save('فیلتر من')}>ذخیره‌ی فیلتر فعلی</Button>
      {presets.map((p) => (
        <FilterChip key={p.id} label={p.name} onClick={() => load(p.id)} onRemove={() => remove(p.id)} />
      ))}
    </div>
  )
}

پارامترها (options)

فیلدنوعپیش‌فرضتوضیح
storageKeystringnamespace در localStorage (در هر بخشِ اپ یکتا)
maxPresetsnumber20سقفِ نرم؛ قدیمی‌ترین روی سرریز حذف می‌شود

مقدار بازگشتی

فیلدنوعتوضیح
presetsFilterPreset<T>[]لیستِ preset ها (جدیدترین اول)
save(name: string) => stringذخیره‌ی state فعلی؛ id جدید را برمی‌گرداند
load(id: string) => booleanاعمالِ state یک preset به FilterProvider
remove(id: string) => voidحذفِ یک preset
rename(id, name) => booleanتغییرِ نامِ یک preset
overwrite(id: string) => booleanبازنویسیِ یک preset با state فعلی
clear() => voidحذفِ همه‌ی preset های این namespace

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