feat: implement useUrlState hook for managing URL-based state in admin pages
- Refactor multiple admin pages (BlogsPage, ClinicsPage, DoctorsPage, etc.) to utilize the new useUrlState hook for managing pagination, search, and filter states via URL. - Ensure that the state persists in the URL, allowing users to return to the same state when navigating back from detail pages. - Update relevant components to handle state changes appropriately and maintain clean URLs by removing default values. - Add SlotPicker component for selecting appointment slots based on availability. - Create tests for useUrlState to validate its functionality and ensure correct behavior when interacting with the URL. - Update API documentation to reflect changes in appointment creation and slot selection processes.
This commit is contained in:
@@ -157,6 +157,21 @@ Feature composites (not generic) live one level up in `components/*.tsx`.
|
||||
(همان دکمهٔ صفحهٔ سرویسها) و رفتارش در `hooks/useGoBack.ts` متمرکز است: یک قدم عقب در تاریخچهٔ
|
||||
پنل، و در ورود مستقیم/رفرش (`location.key === 'default'`) رفتن به `fallback`.
|
||||
|
||||
### وضعیت لیستها در URL، نه در state
|
||||
|
||||
جستجو، فیلترها، شمارهٔ صفحه و نمای هر صفحهٔ لیست باید در query string بنشیند — با
|
||||
`hooks/useUrlState.ts`:
|
||||
|
||||
```tsx
|
||||
const [urlState, setUrlState] = useUrlState({ page: '1', search: '', status: '' });
|
||||
const page = pageOf(urlState.page);
|
||||
const setSearch = (v: string) => setUrlState({ search: v, page: '1' });
|
||||
```
|
||||
|
||||
دلیلش «بازگشت» است: `navigate(-1)` همان URL قبلی را برمیگرداند، پس هرچه در URL باشد سرِ جایش
|
||||
برمیگردد و هرچه در `useState` باشد با remount میپرد. سود جانبی: رفرش و اشتراک لینک همان نما را
|
||||
میدهد. فیلدِ جستجوی debounceشده local میماند و فقط مقدار نهایی به URL میرود.
|
||||
|
||||
---
|
||||
|
||||
## Conventions
|
||||
|
||||
Reference in New Issue
Block a user