Le composant Table est un tableau d'elements.
Pour le créer il faut déclarer un certain nombre d'elements.
L'exemple n'est pas 100% fonctionnelle car il n'est pas relié au serveur les filtres et le trie ne fonctionne pas.
Le composant Table.Root possède 5 props principale :
getRows : La fonction qui récupere les informations coté serveur ou client
onClick : La fonction qui permet de definir le comportement au clique d'un des element de la table
tableId : Il contient un nom unique par lequel la table vas pouvoir dans le localstorage stocké les données utilisateur.
columns : La configuration des colonne
version : La version, quand vous faite des modification sur la configuration columns il faut la changer pour que le localstorage de l'utilisateur si il y en a n'entre pas en conflit.
Cette fonction prend 5 paramètres :
globalSearch : C'est un string qui contient la recherche global vous pouvez si vous
souhaité ajouter la props hasGlobalSearch sur le composant Table.ActionsBar afin d'activer la recherche global.
Cela ajoutera un champ recherche. sur votre bar d'action.
filters : un objet de clé valeur en clé le nom de la colonne ou dans le cas d'une date se sera le nom de la colonne suivie de "_after" ou "_before" et en valeur la valeur du filtre si l'utilisateur clique sur la colonne name par exemple et ecris "test" alors getRows va etre apeller et filters contiendra {name : "test"}.
sort : un objet de clé valeur en clé le nom de la colonne et en valeur la valeur soit "DESC" ou "ASC" il n'y a qu'une seul colonne trié a la fois. si une colonne est trié vers le bas par exemple la colonne id alors sort contiendra {id:"DESC"}
limit : il contient le nombre d'element a afficher sur une page par defaut 20 il peut etre altéré via la props limit du composant Table.Root
offset : c'est l'offset en fonction de la limit et de la page un offset sera passé en paramètre ce parametre avec limit permet de récuperer les elements d'une page du table coté serveur via sql par exemple.
La fonction onClick est executé au clique d'un element et transmet en parametre les données de l'element cliqué.
C'est un array d'objet chaque objet correspond a une colonne et peux contenir des clé permetant de definir l'affichage et le comportement de celui-ci voici la liste des clé possible :
name : le nom de la colonne c'est par celui-ci que il appliquer un sort ou un filter et c'est par celui-ci qu'ont attribue une valeur.
label : le nom qui sera affiché a l'utilisateur
isSearchable : est ce qu'il possede un champs de recherche
isSortable : est ce qu'il peut etre trié
initialWidth : sa largeur par defaut
searchChoices : les possibilité de filtre cette props permet de contraindre l'utilisateur a plusieur choix il contient un array d'objet contenant en clé value et label la value c'est la valeur envoyé dans le parametre filter de la fonction getRows et le label c'est le texte affiché.
datePicker : si il est true se sera un datePicker qui servira de filtre. il y aura un DatePicker apres et avant du coup il envera le filtre avec en clé "{nom de la colonne}_after" ou "{nom de la colonne}_before"
<script>
// import
import { sendRequest, Table } from 'hamzus-ui';
import CategoryStateTag from './CategoryStateTag.svelte';
// props
export let tableId = 'categories_table';
export let path = '/get-all-categories';
// variables
const columns = [
{
name: 'id',
label: 'id',
isSearchable: true,
isSortable: true,
initialWidth: 50
<script>
import Tag from "hamzus-ui";
export let value = "inProspection"
const states = {
inProspection:{
icon:`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.4" d="M2.77 10C2.34 10 2 9.66 2 9.23V6.92C2 4.21 4.21 2 6.92 2H9.23C9.66 2 10 2.34 10 2.77C10 3.2 9.66 3.54 9.23 3.54H6.92C5.05 3.54 3.54 5.06 3.54 6.92V9.23C3.54 9.66 3.19 10 2.77 10Z" fill="#292D32"/>
<path opacity="0.4" d="M21.23 10C20.81 10 20.46 9.66 20.46 9.23V6.92C20.46 5.05 18.94 3.54 17.08 3.54H14.77C14.34 3.54 14 3.19 14 2.77C14 2.35 14.34 2 14.77 2H17.08C19.79 2 22 4.21 22 6.92V9.23C22 9.66 21.66 10 21.23 10Z" fill="#292D32"/>
<path d="M17.0799 21.9999H15.6899C15.2699 21.9999 14.9199 21.6599 14.9199 21.2299C14.9199 20.8099 15.2599 20.4599 15.6899 20.4599H17.0799C18.9499 20.4599 20.4599 18.9399 20.4599 17.0799V15.6999C20.4599 15.2799 20.7999 14.9299 21.2299 14.9299C21.6499 14.9299 21.9999 15.2699 21.9999 15.6999V17.0799C21.9999 19.7899 19.7899 21.9999 17.0799 21.9999Z" fill="#292D32"/>
<path d="M9.23 22H6.92C4.21 22 2 19.79 2 17.08V14.77C2 14.34 2.34 14 2.77 14C3.2 14 3.54 14.34 3.54 14.77V17.08C3.54 18.95 5.06 20.46 6.92 20.46H9.23C9.65 20.46 10 20.8 10 21.23C10 21.66 9.66 22 9.23 22Z" fill="#292D32"/>
<path d="M18.4595 11.23H17.0995H6.89953H5.53953C5.10953 11.23 4.76953 11.58 4.76953 12C4.76953 12.42 5.10953 12.77 5.53953 12.77H6.89953H17.0995H18.4595C18.8895 12.77 19.2295 12.42 19.2295 12C19.2295 11.58 18.8895 11.23 18.4595 11.23Z" fill="#292D32"/>
<path d="M6.90039 13.94V14.27C6.90039 15.93 8.24039 17.27 9.90039 17.27H14.1004C15.7604 17.27 17.1004 15.93 17.1004 14.27V13.94C17.1004 13.82 17.0104 13.73 16.8904 13.73H7.11039C6.99039 13.73 6.90039 13.82 6.90039 13.94Z" fill="#292D32"/>
<path opacity="0.4" d="M6.90039 10.06V9.72998C6.90039 8.06998 8.24039 6.72998 9.90039 6.72998H14.1004C15.7604 6.72998 17.1004 8.06998 17.1004 9.72998V10.06C17.1004 10.18 17.0104 10.27 16.8904 10.27H7.11039C6.99039 10.27 6.90039 10.18 6.90039 10.06Z" fill="#292D32"/>