Aller au contenu

context

Ce que l’application sait et que les lignes ignorent — le rôle de l’utilisateur, les prix du jour — transmis aux fonctions de rappel de la grille.

Typeunknown
Par défautnon défini
Modifiable en direct (update())Oui
Angularl’entrée [context]
<dz-grid>la propriété settings : el.settings = { context: … }
Déclaré danspackages/dom/src/settings.ts

N’importe quelle valeur, que la grille ne lit jamais : elle la transmet. Les options de colonne editable, validate, tooltip et les options d’un éditeur la reçoivent en argument ; de même rowClass, cellClass, chaque partie, le canSelect de la sélection et le canExport de l’export. Une règle peut alors dire « un responsable peut modifier cette colonne » sans fermeture sur un état global.

Une nouvelle valeur est une nouvelle identité : donnez un nouvel objet, pas le même modifié. Avec update({ context }), ce qui en dépend est redemandé — les classes des lignes, les cellules modifiables.

import { createGrid } from '@dzgrid/dom';
import { FR } from '@dzgrid/dom/locales/fr';
type Shift = { id: string; nurse: string; ward: string };
type Ctx = { role: 'manager' | 'staff' };
const isManager = (context: unknown) => (context as Ctx).role === 'manager';
const grid = createGrid<Shift>(document.getElementById('gardes')!, {
rows: [{ id: 's1', nurse: 'A. Moreau', ward: 'Nord' }],
columns: [
{ id: 'nurse', header: 'Infirmier·e' },
{ id: 'ward', header: 'Service', editable: (_row, context) => isManager(context) },
],
getRowId: (s) => s.id,
messages: FR,
context: { role: 'staff' } satisfies Ctx,
});
grid.update({ context: { role: 'manager' } satisfies Ctx }); // la règle de la colonne du service dit maintenant oui

Modifier une cellule demande les fonctions d’édition : voir Édition.

  • rowClass — des classes d’après la ligne et le contexte.
  • Édition — editable et validate.