import { ComputedRef, MaybeRefOrGetter, Ref } from 'vue'; import { DataTableHeaders, Item } from './types'; /** * Indique si une valeur peut être éditée par l'éditeur texte par défaut * (`SyTextField`). Les valeurs **non primitives** (objet, tableau, `Date`…) ne * peuvent pas l'être proprement : le projet doit fournir un slot * `#edit.` avec un éditeur adapté (SySelect, DatePicker…). */ export declare function isEditableAsText(value: unknown): boolean; interface UseTableEditingParams { /** * Fonction d'identité de ligne (réutilise celle de la sélection : * selectionKey, puis `id`, puis l'objet lui-même). */ getItemValue: (item: Item) => unknown; /** En-têtes de colonnes, pour déterminer les colonnes éditables (flag `editable`). */ headers?: MaybeRefOrGetter; /** Active l'édition inline des lignes (prop `editable` du tableau). */ editable?: MaybeRefOrGetter; /** Indique si un slot `#edit.` est fourni par le projet pour une colonne. */ hasEditSlot?: (colKey: string) => boolean; } interface UseTableEditingReturn { /** Clé de la ligne en cours d'édition (`null` si aucune). */ editingKey: Ref; /** Brouillon de la ligne éditée (copie, la prop `items` n'est jamais mutée). */ draft: Ref; /** Indique si l'item passé est la ligne actuellement éditée. */ isRowEditing: (item: Item) => boolean; /** Démarre l'édition d'une ligne (une seule à la fois en V1). */ startEditing: (item: Item) => void; /** Met à jour un champ du brouillon. */ setDraftField: (key: string, value: unknown) => void; /** * Restaure le type primitif d'origine d'une colonne (`number`/`boolean`) pour une * valeur **émise par l'éditeur texte par défaut** (`SyTextField`, qui émet toujours * une `string`), afin de ne pas transformer silencieusement un nombre ou un booléen * en chaîne. Les slots `#edit.` fournissent déjà une valeur typée et ne * passent pas par cette fonction. */ restoreFieldType: (key: string, value: unknown) => unknown; /** Valide l'édition et renvoie l'item modifié + l'original. */ saveEditing: () => { updated: Item; original: Item | null; }; /** Annule l'édition et renvoie l'item original. */ cancelEditing: () => Item | null; /** Réinitialise l'état d'édition. */ resetEditing: () => void; /** Clés des colonnes portant le flag `editable` (indépendamment de la prop `editable`). */ editableHeaderColumns: ComputedRef; /** Colonnes éditables en inline (uniquement si le tableau est `editable`). */ editableColumns: ComputedRef; } /** * Moteur d'édition inline d'une ligne pour les tableaux du DS. * * Ne mute jamais les données d'origine : il travaille sur un brouillon et * renvoie l'item modifié au composant, à charge pour l'application parente * de persister via l'évènement `@save`. * * L'éditeur par défaut (`SyTextField`) ne gère que les valeurs primitives. Pour * une colonne dont la valeur est un objet/tableau/`Date`, le projet **doit** * fournir un slot `#edit.` (un avertissement est émis en développement * dans le cas contraire). */ export declare function useTableEditing({ getItemValue, headers, editable, hasEditSlot }: UseTableEditingParams): UseTableEditingReturn; export {};