import { Ref } from 'vue'; import { StateEnum } from './constants/StateEnum'; import { DataOptions, FilterOption } from './types'; export type ServerRow = Record; /** * Simule un chargement serveur initial pour les stories qui gèrent des items * **mutables localement** (édition inline, actions groupées) : `state` passe de * `PENDING` à `RESOLVED` après un court délai et les items apparaissent, comme sur * les autres stories serveur (`:loading="state === StateEnum.PENDING"`). Le `ref` * d'items retourné reste modifiable par la story (save/delete). */ export declare function useServerEditingDemo(initialItems: T[], delay?: number): { items: Ref; state: Ref; StateEnum: typeof StateEnum; }; /** * Prédicat de filtrage d'une ligne pour un filtre donné : retourne `true` si la * ligne doit être conservée. {@link useServerTableDemo} utilise * {@link defaultFilterMatch} par défaut, mais une story peut fournir sa propre * implémentation via le paramètre `customFilter`. */ export type FilterMatcher = (row: ServerRow, filter: FilterOption) => boolean; interface ServerTableDemo { /** Lignes de la page courante (résultat du « fetch » simulé). */ items: Ref; /** Nombre total de lignes (après filtrage, avant pagination) — pour `server-items-length`. */ totalItems: Ref; /** État de chargement (`IDLE` / `PENDING` / `RESOLVED`). */ state: Ref; /** Options du tableau (tri, pagination, filtres…), synchronisées avec `args.options`. */ options: Ref>; /** Recharge les données (à brancher sur `@update:options`). */ fetchData: () => Promise; StateEnum: typeof StateEnum; } /** * Simule un tableau serveur pour les stories : état de chargement, « fetch » * asynchrone avec **filtrage**, **tri multi-clés** et **pagination** côté * serveur, et synchronisation du `v-model:options` vers `args` (pour les * Controls Storybook). * * Le filtrage s'applique **avant** le tri et la pagination, et `totalItems` * reflète la longueur du jeu filtré. Il est opt-in : sans `options.filters`, le * comportement est identique à un tableau non filtré (stories « Tri » inchangées). * * Remplace le boilerplate (state + fetch + filtrage + tri + pagination) qui était * dupliqué dans chaque story de `SyServerTable`. * * @param customFilter Prédicat de filtrage optionnel, à utiliser lorsque la * sémantique d'une story ne correspond pas au filtre générique. */ export declare function useServerTableDemo(args: { options?: Partial; }, dataset: ServerRow[], customFilter?: FilterMatcher): ServerTableDemo; export {};