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)
| فیلد | نوع | پیشفرض | توضیح |
|---|---|---|---|
storageKey | string | — | namespace در localStorage (در هر بخشِ اپ یکتا) |
maxPresets | number | 20 | سقفِ نرم؛ قدیمیترین روی سرریز حذف میشود |
مقدار بازگشتی
| فیلد | نوع | توضیح |
|---|---|---|
presets | FilterPreset<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 |
هوکهای مرتبط
- همگامسازیِ فیلترها با URL → useFilterParams
- نمایشِ فیلترهای فعال → FilterChip