@zevra/ui 0.43.1 → 0.44.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DECISIONS.md +32 -0
- package/dist/css-inline.d.ts.map +1 -1
- package/dist/css-inline.js +1 -1
- package/dist/css-inline.js.map +1 -1
- package/dist/data-table.d.ts +29 -3
- package/dist/data-table.d.ts.map +1 -1
- package/dist/data-table.js +58 -40
- package/dist/data-table.js.map +1 -1
- package/dist/grille.d.ts +94 -10
- package/dist/grille.d.ts.map +1 -1
- package/dist/grille.js +189 -79
- package/dist/grille.js.map +1 -1
- package/dist/use-persisted-state.d.ts +3 -1
- package/dist/use-persisted-state.d.ts.map +1 -1
- package/dist/use-persisted-state.js +6 -3
- package/dist/use-persisted-state.js.map +1 -1
- package/package.json +1 -1
- package/react/css-inline.ts +1 -1
- package/react/data-table.tsx +76 -5
- package/react/grille.tsx +458 -167
- package/react/use-persisted-state.ts +6 -4
- package/src/data.css +71 -3
package/dist/css-inline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-inline.js","sourceRoot":"","sources":["../react/css-inline.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,0EAA0E;AAE1E;;;iEAGiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAW,
|
|
1
|
+
{"version":3,"file":"css-inline.js","sourceRoot":"","sources":["../react/css-inline.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,0EAA0E;AAE1E;;;iEAGiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAW,w69SAAw69S,CAAA;AAE389S;;;yBAGyB;AACzB,MAAM,CAAC,MAAM,WAAW,GAAW,y3BAAy3B,CAAA"}
|
package/dist/data-table.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type CSSProperties, type ReactNode } from 'react';
|
|
2
|
-
import { type Column, type Header, type RowData, type Table as TableTanstack } from '@tanstack/react-table';
|
|
1
|
+
import { type CSSProperties, type DragEvent, type ReactNode } from 'react';
|
|
2
|
+
import { type Column, type Header, type Row, type RowData, type Table as TableTanstack } from '@tanstack/react-table';
|
|
3
3
|
declare module '@tanstack/react-table' {
|
|
4
4
|
interface ColumnMeta<TData extends RowData, TValue> {
|
|
5
5
|
/** `nom` : colonne d'identité, la seule en encre pleine.
|
|
@@ -54,6 +54,32 @@ export interface DataTableProps<T> {
|
|
|
54
54
|
* liste). Elle porte un filet d'accent à gauche, distinct de la ligne
|
|
55
55
|
* COCHÉE, qui est une sélection pour agir. */
|
|
56
56
|
ligneActive?: (ligne: T) => boolean;
|
|
57
|
+
/** Clic droit sur une ligne : l'appelant ouvre son menu contextuel aux
|
|
58
|
+
* coordonnées données. Le menu du navigateur est alors retenu. */
|
|
59
|
+
onRowContextMenu?: (ligne: T, x: number, y: number) => void;
|
|
60
|
+
/** Double clic : « ouvrir pour de bon », quand le simple clic ne fait que
|
|
61
|
+
* montrer. La sélection de texte qu'il provoque est effacée. */
|
|
62
|
+
onRowDoubleClick?: (ligne: T) => void;
|
|
63
|
+
/** La ligne se saisit (glisser-déposer NATIF) : l'appelant remplit le
|
|
64
|
+
* `dataTransfer`, pour ranger une pièce dans un dossier par exemple. */
|
|
65
|
+
onRowDragStart?: (ligne: T, e: DragEvent<HTMLDivElement>) => void;
|
|
66
|
+
/** Les lignes à rendre, dans leur ordre, à la place du modèle de TanStack :
|
|
67
|
+
* pour un ordre que le tri ne sait pas dire (des lignes épinglées en tête
|
|
68
|
+
* quel que soit le tri). */
|
|
69
|
+
lignes?: Row<T>[];
|
|
70
|
+
/** Rangée posée en tête du corps, avant les lignes : une ligne de SAISIE. */
|
|
71
|
+
avantLignes?: ReactNode;
|
|
72
|
+
/** Rangée intercalée AVANT une ligne : l'intitulé d'un groupe (une année,
|
|
73
|
+
* un mois) quand la clé change. Rien pour ne rien intercaler. */
|
|
74
|
+
intercalaire?: (ligne: Row<T>, precedente: Row<T> | undefined) => ReactNode;
|
|
75
|
+
/** Sous les lignes : un pied de totaux, le déclencheur d'une liste infinie. */
|
|
76
|
+
apresLignes?: ReactNode;
|
|
77
|
+
/** Rangées resserrées, pour un tableau secondaire posé dans une fiche. */
|
|
78
|
+
dense?: boolean;
|
|
79
|
+
/** Le tableau REMPLIT la hauteur de son parent (une colonne flex bornée) :
|
|
80
|
+
* seules les lignes défilent, les intitulés et les filtres restent en
|
|
81
|
+
* haut. */
|
|
82
|
+
remplir?: boolean;
|
|
57
83
|
className?: string;
|
|
58
84
|
}
|
|
59
85
|
/** Classes et décalage d'une cellule épinglée (en-tête, filtres ou corps).
|
|
@@ -68,5 +94,5 @@ export declare function epinglage<T>(c: Column<T, unknown>, table: TableTanstack
|
|
|
68
94
|
* `getVisibleLeafColumns()`, lui, ignore l'épinglage, et un gabarit bâti
|
|
69
95
|
* dessus donne à la première colonne la largeur d'une autre. */
|
|
70
96
|
export declare function colonnesAffichees<T>(table: TableTanstack<T>): Column<T, unknown>[];
|
|
71
|
-
export declare function DataTable<T>({ table, vide, onRowClick, celluleEntete, sousEntete, ligneActive, className, }: DataTableProps<T>): import("react").JSX.Element;
|
|
97
|
+
export declare function DataTable<T>({ table, vide, onRowClick, celluleEntete, sousEntete, ligneActive, onRowContextMenu, onRowDoubleClick, onRowDragStart, lignes: lignesImposees, avantLignes, intercalaire, apresLignes, dense, remplir, className, }: DataTableProps<T>): import("react").JSX.Element;
|
|
72
98
|
//# sourceMappingURL=data-table.d.ts.map
|
package/dist/data-table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../react/data-table.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAY,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../react/data-table.tsx"],"names":[],"mappings":"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"}
|
package/dist/data-table.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// Tableau piloté par TanStack Table.
|
|
3
3
|
//
|
|
4
4
|
// ⚠️ CE FICHIER N'EST PAS DANS LE BARREL, et c'est délibéré :
|
|
@@ -61,56 +61,74 @@ export function colonnesAffichees(table) {
|
|
|
61
61
|
...table.getRightVisibleLeafColumns(),
|
|
62
62
|
];
|
|
63
63
|
}
|
|
64
|
-
export function DataTable({ table, vide, onRowClick, celluleEntete, sousEntete, ligneActive, className, }) {
|
|
64
|
+
export function DataTable({ table, vide, onRowClick, celluleEntete, sousEntete, ligneActive, onRowContextMenu, onRowDoubleClick, onRowDragStart, lignes: lignesImposees, avantLignes, intercalaire, apresLignes, dense, remplir, className, }) {
|
|
65
65
|
const grille = table.options.enableColumnResizing === true;
|
|
66
66
|
const reglages = table.getState().columnSizing;
|
|
67
67
|
const colonnes = colonnesAffichees(table);
|
|
68
68
|
const gabarit = colonnes
|
|
69
69
|
.map((c) => grille ? piste(c, reglages[c.id] != null) : (c.columnDef.meta?.largeur ?? 'minmax(0, 1fr)'))
|
|
70
70
|
.join(' ');
|
|
71
|
-
const lignes = table.getRowModel().rows;
|
|
71
|
+
const lignes = lignesImposees ?? table.getRowModel().rows;
|
|
72
72
|
const style = { '--zv-cols': gabarit };
|
|
73
73
|
if (grille) {
|
|
74
74
|
style['--zv-cols-somme'] = `${colonnes.reduce((s, c) => s + c.getSize(), 0)}px`;
|
|
75
75
|
style['--zv-cols-n'] = String(colonnes.length);
|
|
76
76
|
}
|
|
77
|
-
return (_jsxs("div", { className: cx('zv-table', className), style: style, children: [table.getHeaderGroups().map((groupe) => (_jsx("div", { className: "zv-table__head", children: groupe.headers.map((entete) => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
77
|
+
return (_jsxs("div", { className: cx('zv-table', dense && 'zv-table--dense', remplir && 'zv-table--remplir', className), style: style, children: [_jsxs(Haut, { actif: remplir, children: [table.getHeaderGroups().map((groupe) => (_jsx("div", { className: "zv-table__head", children: groupe.headers.map((entete) => {
|
|
78
|
+
const triable = entete.column.getCanSort();
|
|
79
|
+
const sens = entete.column.getIsSorted();
|
|
80
|
+
const registre = entete.column.columnDef.meta?.registre;
|
|
81
|
+
const contenu = entete.isPlaceholder
|
|
82
|
+
? null
|
|
83
|
+
: flexRender(entete.column.columnDef.header, entete.getContext());
|
|
84
|
+
const pin = grille ? epinglage(entete.column, table) : { classes: false };
|
|
85
|
+
const ariaSort = sens === 'asc' ? 'ascending' : sens === 'desc' ? 'descending' : undefined;
|
|
86
|
+
const props = {
|
|
87
|
+
entete,
|
|
88
|
+
className: cx('zv-cell', registre === 'num' && 'zv-cell--num', pin.classes),
|
|
89
|
+
style: pin.style,
|
|
90
|
+
// La colonne triée est annoncée : sans aria-sort, le tri est
|
|
91
|
+
// une information purement visuelle.
|
|
92
|
+
'aria-sort': ariaSort,
|
|
93
|
+
children: triable ? (_jsxs("button", { type: "button", className: "zv-sort", onClick: entete.column.getToggleSortingHandler(), children: [celluleEntete ? _jsx("span", { className: "zv-colhead__label", children: contenu }) : contenu, _jsx("span", { className: "zv-sort__mark", "aria-hidden": "true", children: sens === 'asc' ? '↑' : sens === 'desc' ? '↓' : '↕' })] })) : celluleEntete ? (_jsx("span", { className: "zv-colhead__label", children: contenu })) : (contenu),
|
|
94
|
+
};
|
|
95
|
+
if (celluleEntete)
|
|
96
|
+
return _jsx(Fragment, { children: celluleEntete(props) }, entete.id);
|
|
97
|
+
return (_jsx("div", { className: props.className, style: props.style, "aria-sort": props['aria-sort'], children: props.children }, entete.id));
|
|
98
|
+
}) }, groupe.id))), sousEntete] }), avantLignes, lignes.length === 0
|
|
99
99
|
? vide
|
|
100
|
-
: lignes.map((ligne) => (_jsx("div", { className: cx('zv-row', ligne.getIsSelected() && 'zv-row--selected', ligneActive?.(ligne.original) && 'zv-row--on'), "aria-current": ligneActive?.(ligne.original) || undefined,
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
100
|
+
: lignes.map((ligne, i) => (_jsxs(Fragment, { children: [intercalaire?.(ligne, lignes[i - 1]), _jsx("div", { className: cx('zv-row', ligne.getIsSelected() && 'zv-row--selected', ligneActive?.(ligne.original) && 'zv-row--on'), "aria-current": ligneActive?.(ligne.original) || undefined,
|
|
101
|
+
// Le clavier suit le clic : une ligne cliquable qui n'est pas
|
|
102
|
+
// atteignable au clavier est une action inaccessible.
|
|
103
|
+
role: onRowClick ? 'button' : undefined, tabIndex: onRowClick ? 0 : undefined, style: onRowClick ? undefined : { cursor: 'default' }, onClick: onRowClick ? () => onRowClick(ligne.original) : undefined, onContextMenu: onRowContextMenu
|
|
104
|
+
? (e) => {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
onRowContextMenu(ligne.original, e.clientX, e.clientY);
|
|
107
|
+
}
|
|
108
|
+
: undefined, onDoubleClick: onRowDoubleClick
|
|
109
|
+
? (e) => {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
e.currentTarget.ownerDocument.defaultView?.getSelection()?.removeAllRanges();
|
|
112
|
+
onRowDoubleClick(ligne.original);
|
|
113
|
+
}
|
|
114
|
+
: undefined, draggable: onRowDragStart ? true : undefined, onDragStart: onRowDragStart ? (e) => onRowDragStart(ligne.original, e) : undefined, onKeyDown: onRowClick
|
|
115
|
+
? (e) => {
|
|
116
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
117
|
+
e.preventDefault();
|
|
118
|
+
onRowClick(ligne.original);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
: undefined, children: ligne.getVisibleCells().map((cellule) => {
|
|
122
|
+
const meta = cellule.column.columnDef.meta;
|
|
123
|
+
const pin = grille ? epinglage(cellule.column, table) : { classes: false };
|
|
124
|
+
return (_jsxs("div", { className: cx('zv-cell', meta?.registre === 'nom' && 'zv-cell--name', meta?.registre === 'num' && 'zv-cell--num', meta?.classe, pin.classes), style: pin.style, children: [meta?.label && _jsx("span", { className: "zv-cell__label", children: meta.label }), flexRender(cellule.column.columnDef.cell, cellule.getContext()), meta?.unite && _jsx("span", { className: "zv-cell__unit", children: meta.unite })] }, cellule.id));
|
|
125
|
+
}) })] }, ligne.id))), apresLignes] }));
|
|
126
|
+
}
|
|
127
|
+
/** L'en-tête et les filtres, groupés dans un bloc COLLANT quand le tableau
|
|
128
|
+
* remplit son parent : sans ce bloc, chaque rangée collerait au même
|
|
129
|
+
* endroit et la seconde recouvrirait la première. Sinon, rien n'enveloppe :
|
|
130
|
+
* le balisage reste celui d'avant. */
|
|
131
|
+
function Haut({ actif, children }) {
|
|
132
|
+
return actif ? _jsx("div", { className: "zv-table__haut", children: children }) : _jsx(_Fragment, { children: children });
|
|
115
133
|
}
|
|
116
134
|
//# sourceMappingURL=data-table.js.map
|
package/dist/data-table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-table.js","sourceRoot":"","sources":["../react/data-table.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,EAAE;AACF,8DAA8D;AAC9D,4EAA4E;AAC5E,2EAA2E;AAC3E,6DAA6D;AAC7D,EAAE;AACF,wDAAwD;AACxD,EAAE;AACF,iFAAiF;AACjF,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,wEAAwE;AACxE,0EAA0E;AAC1E,uEAAuE;AAEvE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"data-table.js","sourceRoot":"","sources":["../react/data-table.tsx"],"names":[],"mappings":"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"}
|
package/dist/grille.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
|
-
import { type Column, type ColumnDef, type ColumnOrderState, type ColumnPinningState, type ColumnSizingState, type FilterFn, type SortingState, type Table as TableTanstack, type VisibilityState } from '@tanstack/react-table';
|
|
1
|
+
import type { DragEvent as EvenementGlisser, ReactNode } from 'react';
|
|
2
|
+
import { type Column, type ColumnDef, type ColumnOrderState, type ColumnPinningState, type ColumnSizingState, type FilterFn, type SortingState, type Table as TableTanstack, type Updater, type VisibilityState } from '@tanstack/react-table';
|
|
3
3
|
import { usePersistedState } from './use-persisted-state.js';
|
|
4
4
|
export { usePersistedState };
|
|
5
5
|
/** Identifiant réservé de la colonne de cases. */
|
|
@@ -15,6 +15,24 @@ export interface VueGrille {
|
|
|
15
15
|
sorting: SortingState;
|
|
16
16
|
pageSize: number;
|
|
17
17
|
}
|
|
18
|
+
/** La sélection tenue par l'APP : les clés cochées lui appartiennent, elles
|
|
19
|
+
* survivent au changement de filtre, et ce sont elles que ses actions
|
|
20
|
+
* consomment. La case maîtresse porte sur les lignes AFFICHÉES, jamais sur
|
|
21
|
+
* ce qu'un filtre garde hors de l'écran, qui reste coché tel quel. */
|
|
22
|
+
export interface SelectionGrille<T> {
|
|
23
|
+
choisies: ReadonlySet<string>;
|
|
24
|
+
onChoisir: (cles: Set<string>) => void;
|
|
25
|
+
/** La clé retenue pour une ligne. Par défaut : son identifiant
|
|
26
|
+
* (`getRowId`). */
|
|
27
|
+
cle?: (ligne: T) => string;
|
|
28
|
+
/** Ce que le lecteur d'écran annonce pour la case d'une ligne. */
|
|
29
|
+
label?: (ligne: T) => string;
|
|
30
|
+
/** Les lignes qui ont une case ; les autres n'en ont pas, et la case
|
|
31
|
+
* maîtresse les ignore. */
|
|
32
|
+
selectionnable?: (ligne: T) => boolean;
|
|
33
|
+
/** Cases inertes le temps d'une opération en cours. */
|
|
34
|
+
desactivee?: boolean;
|
|
35
|
+
}
|
|
18
36
|
/** Les tailles de page proposées au pied. */
|
|
19
37
|
export declare const TAILLES_PAGE: readonly [25, 50, 100];
|
|
20
38
|
/** Toute la copie de la grille. Aucun libellé, visible ou annoncé, n'est
|
|
@@ -34,6 +52,11 @@ export interface TextesGrille {
|
|
|
34
52
|
min: string;
|
|
35
53
|
max: string;
|
|
36
54
|
effacer: string;
|
|
55
|
+
effacerFiltres: string;
|
|
56
|
+
toutAfficher: string;
|
|
57
|
+
aucun: string;
|
|
58
|
+
rechercherValeur: string;
|
|
59
|
+
aucuneValeur: string;
|
|
37
60
|
/** Raccourcis de période du filtre de dates. */
|
|
38
61
|
periodes: string;
|
|
39
62
|
aujourdhui: string;
|
|
@@ -79,8 +102,9 @@ export declare const TEXTES_GRILLE: TextesGrille;
|
|
|
79
102
|
export interface DataGridProps<T> {
|
|
80
103
|
/** Identifiant STABLE du tableau : il nomme la vue enregistrée
|
|
81
104
|
* (`table:<tableId>:v1`). Deux tableaux qui le partagent partagent leur
|
|
82
|
-
* vue ; le changer fait oublier celle de tous les utilisateurs.
|
|
83
|
-
|
|
105
|
+
* vue ; le changer fait oublier celle de tous les utilisateurs. Sans
|
|
106
|
+
* lui, la vue vit le temps de la page et ne s'enregistre pas. */
|
|
107
|
+
tableId?: string;
|
|
84
108
|
data: T[];
|
|
85
109
|
/** Colonnes TanStack. Chacune doit avoir un `id` ou un `accessorKey`
|
|
86
110
|
* textuel : c'est lui que la vue enregistre. `size` est la largeur
|
|
@@ -97,13 +121,71 @@ export interface DataGridProps<T> {
|
|
|
97
121
|
* données se rechargent : par défaut c'est l'INDEX, et une ligne cochée
|
|
98
122
|
* deviendrait une autre ligne après un tri côté serveur. */
|
|
99
123
|
getRowId?: (ligne: T, index: number) => string;
|
|
100
|
-
/** Une colonne de cases, épinglée à gauche.
|
|
101
|
-
|
|
124
|
+
/** Une colonne de cases, épinglée à gauche. `true` : la grille tient les
|
|
125
|
+
* cases et remonte les lignes par `onSelectionChange`. Un objet : l'APP
|
|
126
|
+
* tient l'ensemble des clés cochées (elles survivent à un filtre, à une
|
|
127
|
+
* page, à un rechargement), voir `SelectionGrille`. */
|
|
128
|
+
selection?: boolean | SelectionGrille<T>;
|
|
102
129
|
onSelectionChange?: (lignes: T[]) => void;
|
|
130
|
+
/** Tri délégué au SERVEUR : sur une liste paginée côté serveur, trier dans
|
|
131
|
+
* le navigateur ne trierait que la page affichée. La grille n'ordonne
|
|
132
|
+
* plus rien, elle dit seulement quel tri est demandé. */
|
|
133
|
+
triServeur?: {
|
|
134
|
+
tri: SortingState;
|
|
135
|
+
onTri: (tri: SortingState) => void;
|
|
136
|
+
};
|
|
137
|
+
/** Clic droit sur une ligne : l'app ouvre son menu contextuel. */
|
|
138
|
+
onRowContextMenu?: (ligne: T, x: number, y: number) => void;
|
|
139
|
+
/** Double clic sur une ligne : « ouvrir pour de bon ». */
|
|
140
|
+
onRowDoubleClick?: (ligne: T) => void;
|
|
141
|
+
/** La ligne se glisse (glisser-déposer natif) : l'app remplit le
|
|
142
|
+
* `dataTransfer`. */
|
|
143
|
+
onRowDragStart?: (ligne: T, e: EvenementGlisser<HTMLDivElement>) => void;
|
|
144
|
+
/** Une ligne de SAISIE en tête du corps : un contenu par identifiant de
|
|
145
|
+
* colonne. Elle suit l'ordre, la visibilité et l'épinglage des colonnes. */
|
|
146
|
+
ligneSaisie?: Partial<Record<string, ReactNode>>;
|
|
147
|
+
/** Des intitulés intercalés quand la clé change d'une ligne à l'autre (une
|
|
148
|
+
* année, un mois). N'a de sens que si le tri suit cette clé. */
|
|
149
|
+
groupe?: {
|
|
150
|
+
de: (ligne: T) => string;
|
|
151
|
+
rendu?: (cle: string, lignes: T[]) => ReactNode;
|
|
152
|
+
};
|
|
153
|
+
/** Des lignes qui restent en tête QUEL QUE SOIT le tri : le rang 0 d'abord,
|
|
154
|
+
* puis 1, etc., chacun trié comme le reste (les pièces épinglées). */
|
|
155
|
+
rang?: (ligne: T) => number;
|
|
156
|
+
/** Une rangée de totaux sous les lignes, calculée sur les lignes
|
|
157
|
+
* AFFICHÉES (après recherche et filtres) : un contenu par colonne. */
|
|
158
|
+
pied?: (lignes: T[]) => Partial<Record<string, ReactNode>>;
|
|
159
|
+
/** Rangées resserrées : un tableau secondaire dans une fiche. */
|
|
160
|
+
dense?: boolean;
|
|
161
|
+
/** La grille REMPLIT son parent (colonne flex à hauteur bornée) : seules
|
|
162
|
+
* les lignes défilent, la barre, les intitulés et les filtres restent. */
|
|
163
|
+
remplir?: boolean;
|
|
164
|
+
/** Sous les lignes, dans la zone qui défile : le déclencheur d'une liste
|
|
165
|
+
* infinie, qui charge la suite en entrant dans l'écran. */
|
|
166
|
+
apresLignes?: ReactNode;
|
|
167
|
+
/** Enveloppe le CADRE du tableau seul (pas la barre) : un voile de
|
|
168
|
+
* rechargement qui laisse la recherche et les filtres utilisables. */
|
|
169
|
+
envelopperTableau?: (tableau: ReactNode) => ReactNode;
|
|
170
|
+
/** La barre d'outils (recherche, colonnes, export). Par défaut : oui.
|
|
171
|
+
* Sans elle, les filtres de colonne restent. */
|
|
172
|
+
barre?: boolean;
|
|
173
|
+
/** Un champ de recherche fourni par l'app, à la place de celui de la
|
|
174
|
+
* grille : une recherche faite par le serveur, par exemple. */
|
|
175
|
+
champRecherche?: ReactNode;
|
|
176
|
+
/** Visibilité des colonnes TENUE PAR L'APP, quand son bouton « Colonnes »
|
|
177
|
+
* vit hors de la grille. Sinon, la vue enregistrée la tient. */
|
|
178
|
+
visibilite?: VisibilityState;
|
|
179
|
+
onVisibilite?: (u: Updater<VisibilityState>) => void;
|
|
180
|
+
/** Les lignes affichées (après recherche, filtres et tri) et si un filtre
|
|
181
|
+
* est actif : ce qu'un téléchargement de l'app doit reprendre. Appelé
|
|
182
|
+
* quand leur ensemble change, pas à chaque rendu. */
|
|
183
|
+
onLignesAffichees?: (lignes: T[], filtre: boolean) => void;
|
|
103
184
|
/** Lignes par page (25, 50 ou 100), ou `false` pour tout afficher. */
|
|
104
185
|
parPage?: (typeof TAILLES_PAGE)[number] | false;
|
|
105
|
-
/** Champ de recherche sur toutes les colonnes. Par défaut : oui.
|
|
106
|
-
|
|
186
|
+
/** Champ de recherche sur toutes les colonnes. Par défaut : oui. Une
|
|
187
|
+
* chaîne en est le texte d'invite. */
|
|
188
|
+
recherche?: boolean | string;
|
|
107
189
|
/** Rangée de filtres sous les intitulés. Par défaut : oui. */
|
|
108
190
|
filtres?: boolean;
|
|
109
191
|
/** Bouton d'export CSV des lignes filtrées et triées, colonnes visibles.
|
|
@@ -146,7 +228,7 @@ export type ValeurFiltre = {
|
|
|
146
228
|
valeur: string;
|
|
147
229
|
} | {
|
|
148
230
|
type: 'choix';
|
|
149
|
-
|
|
231
|
+
valeurs: string[];
|
|
150
232
|
} | {
|
|
151
233
|
type: 'nombre';
|
|
152
234
|
min: string;
|
|
@@ -174,6 +256,8 @@ export declare function typeDeFiltre(meta: {
|
|
|
174
256
|
filtre?: TypeFiltre | false;
|
|
175
257
|
registre?: 'nom' | 'num';
|
|
176
258
|
} | undefined, valeurs: unknown[]): TypeFiltre | false;
|
|
259
|
+
/** Sans casse ni accents : « decision » trouve « Décision ». */
|
|
260
|
+
export declare function normaliser(v: unknown): string;
|
|
177
261
|
/** Le filtre de toutes les colonnes de la grille : il lit la FORME de la
|
|
178
262
|
* valeur, pas la colonne. Bornes comprises. */
|
|
179
263
|
export declare const filtreGrille: FilterFn<any>;
|
|
@@ -199,5 +283,5 @@ export declare function libelleColonne<T>(c: Column<T, unknown>): string;
|
|
|
199
283
|
* ISO. Les VALEURS, pas le rendu : une pastille d'état s'exporte par son
|
|
200
284
|
* libellé de données, pas par son HTML. */
|
|
201
285
|
export declare function versCsv<T>(table: TableTanstack<T>): string;
|
|
202
|
-
export declare function DataGrid<T>({ tableId, data, columns, onRowClick, ligneActive, getRowId, selection, onSelectionChange, parPage, recherche, filtres, exportCsv, vueInitiale, vide, outils, textes, className, }: DataGridProps<T>): import("react").JSX.Element;
|
|
286
|
+
export declare function DataGrid<T>({ tableId, data, columns, onRowClick, ligneActive, getRowId, selection, onSelectionChange, triServeur, onRowContextMenu, onRowDoubleClick, onRowDragStart, ligneSaisie, groupe, rang, pied, dense, remplir, apresLignes, envelopperTableau, barre, champRecherche, visibilite, onVisibilite, onLignesAffichees, parPage, recherche, filtres, exportCsv, vueInitiale, vide, outils, textes, className, }: DataGridProps<T>): import("react").JSX.Element;
|
|
203
287
|
//# sourceMappingURL=grille.d.ts.map
|
package/dist/grille.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grille.d.ts","sourceRoot":"","sources":["../react/grille.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"grille.d.ts","sourceRoot":"","sources":["../react/grille.tsx"],"names":[],"mappings":"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"}
|