bpm.table
Tableau de données avec tri, lignes alternées, survol et lignes cliquables pour accéder au détail.
| Produit | Prix | Stock | Statut |
|---|---|---|---|
| Widget A | 29,99 | 142 | En stock |
| Widget B | 49,99 | 38 | Stock bas |
| Widget C | 9,99 | 500 | En stock |
| Widget D | 79,99 | 0 | Rupture |
| Widget E | 19,99 | 210 | En stock |
Cliquez sur une ligne pour afficher le détail.
Python
import bpm
import pandas as pd
df = pd.DataFrame({
"Produit": ["Widget A", "Widget B", "Widget C"],
"Prix": [29.99, 49.99, 9.99],
"Stock": [142, 38, 500],
})
bpm.table(df, striped=true, hover=true)| Prop | Type | Défaut | Requis | Description |
|---|---|---|---|---|
columns | TableColumn[] | — | Oui | key, label ; optionnel : align, render (pas renderCell),decimals, noWrap, className. Cellule custom : render: (value, row) => … |
data | Record<string, unknown>[] | — | Oui | Lignes du tableau. Interdit : JSX dans data[] — utiliser render sur la colonne. |
striped | boolean | true | Non | Lignes alternées. |
hover | boolean | true | Non | Surbrillance au survol. |
onRowClick | (row) => void | — | Non | Callback au clic sur une ligne. |
defaultSortColumn | string | null | null | Non | Colonne de tri initiale. |
defaultSortDirection | 'asc' | 'desc' | 'asc' | Non | Direction du tri initial. |
valueLocale | string | fr-FR | Non | Locale pour formater les nombres (ex. fr-FR → 1 000,50, en-US → 1,000.50). |
valueDecimals | number | 0 | Non | Décimales par défaut pour les cellules numériques. Surcharge possible par colonne (decimals). |
valueGrouping | boolean | true | Non | Séparateur de milliers (false = 1000,50 sans espace). |
emptyMessage | string | « Aucune donnée disponible » | Non | Message si data vide. |
name, keyColumn, minWidth, trackContext, className | voir Table.tsx | — | Non | Contexte IA, largeur min., clé de ligne, etc. |
Exemples
bpm.table(df, striped=True, hover=True)
# Clic sur une ligne pour ouvrir le détail
bpm.table(df, on_row_click=lambda row: bpm.write(row["id"]))# Tri initial par colonne "Prix" décroissant
bpm.table(df, default_sort_column="Prix", default_sort_direction="desc")# Format des nombres (comme bpm.metric)
bpm.table(df, value_locale="en-US", value_decimals=2, value_grouping=True)# Alignement par colonne (left | center | right)
bpm.table(df, columns=[{"key": "Nom", "label": "Nom"}, {"key": "Montant", "label": "Montant", "align": "right"}])