ActivityLog
Un journal d'activité, filtrable et paginé par le serveur.
AuditMeta et Timeline racontent l'histoire d'un objet ; ce bloc sert l'autre question — qui a fait quoi, sur tout le système, cette semaine. Filtres déclarés, recherche temporisée, pagination et taille de page : tout passe par la requête, rien n'est filtré dans le navigateur.
Installation
bash
sia-ui add activity-logOu par le paquet, sans rien copier :
tsx
import { ActivityLog, activityColumns } from "@sia-ui/react-web";Props de activityColumns
Les colonnes d'une ActivityEntry : quand, qui, quoi, sur quoi.
| Prop | Type | Défaut | Description |
|---|---|---|---|
actionBadgeProps | Partial<Omit<StatusBadgeProps, "value">> | — | Les props du StatusBadge de la colonne « Action », sans value. |
actionLabels | Record<string, ReactNode> | — | |
actionTones | Record<string, ComponentTone> | — | |
language | string | — | La langue des dates. Par défaut, fr-FR. |
messages | any | — | Les en-têtes : le groupe activityLog de la locale. Français par défaut. |
Props de ActivityLog
| Prop | Type | Défaut | Description |
|---|---|---|---|
* entries | T[] | — | |
* query | TableQuery | — | L'état de la requête : page, taille, recherche, filtres. useDataTableQuery() le fournit, synchronisé avec l'URL ou le routeur ; query.params part tel quel au serveur. Le journal ne filtre rien lui-même : un journal se compte en milliers de lignes. |
actionBadgeProps | Partial<Omit<StatusBadgeProps, "value">> | — | Les props du StatusBadge de la colonne « Action » par défaut. Sans value, lue sur l'entrée. Sans effet quand columns est fourni. |
actionLabels | Record<string, ReactNode> | — | Le libellé de chaque action — « Suppression » pour delete. |
actionTones | Record<string, ComponentTone> | — | Le ton de chaque action dans les colonnes par défaut. |
className | string | — | |
columns | DataTableColumn<T>[] | — | Par défaut, les colonnes d'une ActivityEntry. |
description | ReactNode | — | |
empty | { title?: ReactNode; description?: ReactNode; action?: ReactNode; icon?: ReactNode; } | — | |
error | ReactNode | — | |
filters | ActivityLogFilter[] | [] | |
filtersBarProps | Partial<Omit<FiltersBarProps, "search" | "filters" | "activeCount" | "onReset">> | — | Les props de la FiltersBar — des actions, un autre libellé de réinitialisation. Sans search, filters, activeCount ni onReset, que le journal compose à partir de la requête. |
filterSelectProps | Partial<Omit<SelectProps, "value" | "onValueChange" | "options">> | — | Les props communes aux Select des filtres. Sans value, onValueChange ni options, propres à chaque filtre et branchés sur la requête. |
getRowKey | (row: T, index: number) => Key | — | |
headingLevel | 1 | 2 | 3 | — | |
loading | boolean | false | |
onRetry | () => void | — | |
pageHeaderProps | PageHeaderProps | — | Les props du PageHeader, rendu quand title est fourni. |
paginationProps | Partial<Omit<PaginationProps, "page" | "totalPages" | "onPageChange" | "pageSize" | "onPageSizeChange">> | — | Les props de la Pagination — jumpTo, pageSizeOptions. Sans la page et la taille de page ni leurs changements, branchés sur la requête. |
searchInputProps | Partial<Omit<SearchInputProps, "value" | "defaultValue" | "onValueChange" | "onSearch">> | — | Les props du champ de recherche. Sans value, defaultValue, onValueChange ni onSearch : la recherche en vigueur vit dans la requête. |
searchPlaceholder | string | — | Absente, la recherche n'est pas proposée. |
tableProps | Partial<Omit<DataTableProps<T>, "columns" | "data">> | — | Les props du DataTable — densité, mode cartes, sélection. Sans columns ni data, qui ont leurs props ici. |
title | ReactNode | — | |
totalPages | number | — |
* obligatoire.
Voir aussi
- Le composant dans le catalogue — états, variantes, et bac à sable.
- La référence complète — tous les composants.