commencer
Boutons
bouton
bouton icon
groupe de bouton
Textes
tag
chip
carte info
carte alerte
lien
touche de clavier
accordeon
Popover
tooltip
popover
dropdown-menu
Dialogue
dialog
toast
Formulaire
form
input
selection
textarea
checkbox
slider
sound-track
switch
input fichier
Temps
date-time-picker
date-picker
year-picker
month-of-year-picker
month-picker
day-picker
time-picker
Navigation
tabs
Données
caroussel
liste de données
tableau responsive
tableau
squelette
loader ligne
cercle de progression
Graphique
graphique en ligne
graphique en bar
fermé la barre de navigation Alt + B

Table

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.

getRows

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.

onClick

La fonction onClick est executé au clique d'un element et transmet en parametre les données de l'element cliqué.

columns

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"

Import

import { Table } from "hamzus-ui"

CategoryTable

1

<script>

2

// import

3

import { sendRequest, Table } from 'hamzus-ui';

4

import CategoryStateTag from './CategoryStateTag.svelte';

5

// props

6

export let tableId = 'categories_table';

7

export let path = '/get-all-categories';

8

// variables

9

const columns = [

10

{

11

name: 'id',

12

label: 'id',

13

isSearchable: true,

14

isSortable: true,

15

initialWidth: 50

./CategoryTable

CategoryStateTag

1

<script>

2

import Tag from "hamzus-ui";

3

4

export let value = "inProspection"

5

6

const states = {

7

inProspection:{

8

icon:`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">

9

<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"/>

10

<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"/>

11

<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"/>

12

<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"/>

13

<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"/>

14

<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"/>

15

<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"/>

./CategoryStateTag