# MalioDataTable Tableau de données presentational avec pagination, filtres par slots et lignes cliquables. ## Props détaillées | Prop | Type | Défaut | Description | |------|------|--------|-------------| | `id` | `string` | auto-généré | Identifiant HTML | | `columns` | `{ key: string, label: string }[]` | **requis** | Définition des colonnes | | `items` | `Record[]` | **requis** | Données à afficher | | `totalItems` | `number` | **requis** | Total pour la pagination | | `page` | `number` | `1` | Page courante (v-model) | | `perPage` | `number` | `10` | Lignes par page (v-model) | | `perPageOptions` | `number[]` | `[10, 25, 50]` | Options du sélecteur de lignes | | `rowClickable` | `boolean` | `true` | Lignes cliquables | | `tableClass` | `string` | `''` | Classes CSS sur le wrapper (twMerge) | | `emptyMessage` | `string` | `'Aucune donnée'` | Message si items vide | ## Slots | Slot | Scope | Description | |------|-------|-------------| | `#header-{key}` | `{ column }` | Filtre dans le `` (placeholder = label). Fallback : texte du label | | `#cell-{key}` | `{ item, column }` | Contenu du ``. Fallback : `item[key]` | | `#empty` | — | Contenu état vide. Fallback : `emptyMessage` | ## Events | Event | Payload | Description | |-------|---------|-------------| | `update:page` | `number` | Changement de page | | `update:per-page` | `number` | Changement du nb de lignes (reset page à 1) | | `row-click` | `Record` | Clic sur une ligne | ## Pagination - ≤ 5 pages : toutes affichées - \> 5 pages : page 1 … [voisin] **[courante]** [voisin] … dernière - Boutons Prev/Next toujours visibles, désactivés aux extrêmes ## Accessibilité - `` sur chaque en-tête - `