@zevra/ui 0.43.0 → 0.44.0
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 +49 -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 +33 -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 +93 -8
- package/dist/grille.d.ts.map +1 -1
- package/dist/grille.js +251 -112
- package/dist/grille.js.map +1 -1
- package/package.json +1 -1
- package/react/css-inline.ts +1 -1
- package/react/data-table.tsx +87 -6
- package/react/grille.tsx +627 -268
- package/src/data.css +101 -10
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.
|
|
@@ -50,6 +50,36 @@ export interface DataTableProps<T> {
|
|
|
50
50
|
/** Appelé au clic sur une ligne. Sans lui, la ligne n'est pas cliquable :
|
|
51
51
|
* et elle ne doit pas en avoir l'air. */
|
|
52
52
|
onRowClick?: (ligne: T) => void;
|
|
53
|
+
/** La ligne dont on regarde le détail (l'aperçu ouvert à côté de la
|
|
54
|
+
* liste). Elle porte un filet d'accent à gauche, distinct de la ligne
|
|
55
|
+
* COCHÉE, qui est une sélection pour agir. */
|
|
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;
|
|
53
83
|
className?: string;
|
|
54
84
|
}
|
|
55
85
|
/** Classes et décalage d'une cellule épinglée (en-tête, filtres ou corps).
|
|
@@ -64,5 +94,5 @@ export declare function epinglage<T>(c: Column<T, unknown>, table: TableTanstack
|
|
|
64
94
|
* `getVisibleLeafColumns()`, lui, ignore l'épinglage, et un gabarit bâti
|
|
65
95
|
* dessus donne à la première colonne la largeur d'une autre. */
|
|
66
96
|
export declare function colonnesAffichees<T>(table: TableTanstack<T>): Column<T, unknown>[];
|
|
67
|
-
export declare function DataTable<T>({ table, vide, onRowClick, celluleEntete, sousEntete, 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;
|
|
68
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, 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'),
|
|
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;
|
|
@@ -91,17 +114,77 @@ export interface DataGridProps<T> {
|
|
|
91
114
|
/** Clic (ou Entrée) sur une ligne. Sans lui, la ligne n'est pas
|
|
92
115
|
* cliquable, et elle n'en a pas l'air. */
|
|
93
116
|
onRowClick?: (ligne: T) => void;
|
|
117
|
+
/** La ligne dont l'aperçu est ouvert : filet d'accent à gauche. */
|
|
118
|
+
ligneActive?: (ligne: T) => boolean;
|
|
94
119
|
/** Identifiant de ligne. Indispensable avec `selection` dès que les
|
|
95
120
|
* données se rechargent : par défaut c'est l'INDEX, et une ligne cochée
|
|
96
121
|
* deviendrait une autre ligne après un tri côté serveur. */
|
|
97
122
|
getRowId?: (ligne: T, index: number) => string;
|
|
98
|
-
/** Une colonne de cases, épinglée à gauche.
|
|
99
|
-
|
|
123
|
+
/** Une colonne de cases, épinglée à gauche. `true` : la grille tient les
|
|
124
|
+
* cases et remonte les lignes par `onSelectionChange`. Un objet : l'APP
|
|
125
|
+
* tient l'ensemble des clés cochées (elles survivent à un filtre, à une
|
|
126
|
+
* page, à un rechargement), voir `SelectionGrille`. */
|
|
127
|
+
selection?: boolean | SelectionGrille<T>;
|
|
100
128
|
onSelectionChange?: (lignes: T[]) => void;
|
|
129
|
+
/** Tri délégué au SERVEUR : sur une liste paginée côté serveur, trier dans
|
|
130
|
+
* le navigateur ne trierait que la page affichée. La grille n'ordonne
|
|
131
|
+
* plus rien, elle dit seulement quel tri est demandé. */
|
|
132
|
+
triServeur?: {
|
|
133
|
+
tri: SortingState;
|
|
134
|
+
onTri: (tri: SortingState) => void;
|
|
135
|
+
};
|
|
136
|
+
/** Clic droit sur une ligne : l'app ouvre son menu contextuel. */
|
|
137
|
+
onRowContextMenu?: (ligne: T, x: number, y: number) => void;
|
|
138
|
+
/** Double clic sur une ligne : « ouvrir pour de bon ». */
|
|
139
|
+
onRowDoubleClick?: (ligne: T) => void;
|
|
140
|
+
/** La ligne se glisse (glisser-déposer natif) : l'app remplit le
|
|
141
|
+
* `dataTransfer`. */
|
|
142
|
+
onRowDragStart?: (ligne: T, e: EvenementGlisser<HTMLDivElement>) => void;
|
|
143
|
+
/** Une ligne de SAISIE en tête du corps : un contenu par identifiant de
|
|
144
|
+
* colonne. Elle suit l'ordre, la visibilité et l'épinglage des colonnes. */
|
|
145
|
+
ligneSaisie?: Partial<Record<string, ReactNode>>;
|
|
146
|
+
/** Des intitulés intercalés quand la clé change d'une ligne à l'autre (une
|
|
147
|
+
* année, un mois). N'a de sens que si le tri suit cette clé. */
|
|
148
|
+
groupe?: {
|
|
149
|
+
de: (ligne: T) => string;
|
|
150
|
+
rendu?: (cle: string, lignes: T[]) => ReactNode;
|
|
151
|
+
};
|
|
152
|
+
/** Des lignes qui restent en tête QUEL QUE SOIT le tri : le rang 0 d'abord,
|
|
153
|
+
* puis 1, etc., chacun trié comme le reste (les pièces épinglées). */
|
|
154
|
+
rang?: (ligne: T) => number;
|
|
155
|
+
/** Une rangée de totaux sous les lignes, calculée sur les lignes
|
|
156
|
+
* AFFICHÉES (après recherche et filtres) : un contenu par colonne. */
|
|
157
|
+
pied?: (lignes: T[]) => Partial<Record<string, ReactNode>>;
|
|
158
|
+
/** Rangées resserrées : un tableau secondaire dans une fiche. */
|
|
159
|
+
dense?: boolean;
|
|
160
|
+
/** La grille REMPLIT son parent (colonne flex à hauteur bornée) : seules
|
|
161
|
+
* les lignes défilent, la barre, les intitulés et les filtres restent. */
|
|
162
|
+
remplir?: boolean;
|
|
163
|
+
/** Sous les lignes, dans la zone qui défile : le déclencheur d'une liste
|
|
164
|
+
* infinie, qui charge la suite en entrant dans l'écran. */
|
|
165
|
+
apresLignes?: ReactNode;
|
|
166
|
+
/** Enveloppe le CADRE du tableau seul (pas la barre) : un voile de
|
|
167
|
+
* rechargement qui laisse la recherche et les filtres utilisables. */
|
|
168
|
+
envelopperTableau?: (tableau: ReactNode) => ReactNode;
|
|
169
|
+
/** La barre d'outils (recherche, colonnes, export). Par défaut : oui.
|
|
170
|
+
* Sans elle, les filtres de colonne restent. */
|
|
171
|
+
barre?: boolean;
|
|
172
|
+
/** Un champ de recherche fourni par l'app, à la place de celui de la
|
|
173
|
+
* grille : une recherche faite par le serveur, par exemple. */
|
|
174
|
+
champRecherche?: ReactNode;
|
|
175
|
+
/** Visibilité des colonnes TENUE PAR L'APP, quand son bouton « Colonnes »
|
|
176
|
+
* vit hors de la grille. Sinon, la vue enregistrée la tient. */
|
|
177
|
+
visibilite?: VisibilityState;
|
|
178
|
+
onVisibilite?: (u: Updater<VisibilityState>) => void;
|
|
179
|
+
/** Les lignes affichées (après recherche, filtres et tri) et si un filtre
|
|
180
|
+
* est actif : ce qu'un téléchargement de l'app doit reprendre. Appelé
|
|
181
|
+
* quand leur ensemble change, pas à chaque rendu. */
|
|
182
|
+
onLignesAffichees?: (lignes: T[], filtre: boolean) => void;
|
|
101
183
|
/** Lignes par page (25, 50 ou 100), ou `false` pour tout afficher. */
|
|
102
184
|
parPage?: (typeof TAILLES_PAGE)[number] | false;
|
|
103
|
-
/** Champ de recherche sur toutes les colonnes. Par défaut : oui.
|
|
104
|
-
|
|
185
|
+
/** Champ de recherche sur toutes les colonnes. Par défaut : oui. Une
|
|
186
|
+
* chaîne en est le texte d'invite. */
|
|
187
|
+
recherche?: boolean | string;
|
|
105
188
|
/** Rangée de filtres sous les intitulés. Par défaut : oui. */
|
|
106
189
|
filtres?: boolean;
|
|
107
190
|
/** Bouton d'export CSV des lignes filtrées et triées, colonnes visibles.
|
|
@@ -144,7 +227,7 @@ export type ValeurFiltre = {
|
|
|
144
227
|
valeur: string;
|
|
145
228
|
} | {
|
|
146
229
|
type: 'choix';
|
|
147
|
-
|
|
230
|
+
valeurs: string[];
|
|
148
231
|
} | {
|
|
149
232
|
type: 'nombre';
|
|
150
233
|
min: string;
|
|
@@ -172,6 +255,8 @@ export declare function typeDeFiltre(meta: {
|
|
|
172
255
|
filtre?: TypeFiltre | false;
|
|
173
256
|
registre?: 'nom' | 'num';
|
|
174
257
|
} | undefined, valeurs: unknown[]): TypeFiltre | false;
|
|
258
|
+
/** Sans casse ni accents : « decision » trouve « Décision ». */
|
|
259
|
+
export declare function normaliser(v: unknown): string;
|
|
175
260
|
/** Le filtre de toutes les colonnes de la grille : il lit la FORME de la
|
|
176
261
|
* valeur, pas la colonne. Bornes comprises. */
|
|
177
262
|
export declare const filtreGrille: FilterFn<any>;
|
|
@@ -197,5 +282,5 @@ export declare function libelleColonne<T>(c: Column<T, unknown>): string;
|
|
|
197
282
|
* ISO. Les VALEURS, pas le rendu : une pastille d'état s'exporte par son
|
|
198
283
|
* libellé de données, pas par son HTML. */
|
|
199
284
|
export declare function versCsv<T>(table: TableTanstack<T>): string;
|
|
200
|
-
export declare function DataGrid<T>({ tableId, data, columns, onRowClick, getRowId, selection, onSelectionChange, parPage, recherche, filtres, exportCsv, vueInitiale, vide, outils, textes, className, }: DataGridProps<T>): import("react").JSX.Element;
|
|
285
|
+
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;
|
|
201
286
|
//# 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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"}
|