Référence

Documentation des composants

Configuration EJS complète, paramètres publics et API JavaScript de chaque composant du kit. Les options incompatibles entre elles sont tout de même présentées dans le snippet afin de rendre le contrat complet visible.

Conventions publiques

  • Les paramètres EJS utilisent camelCase; les booléens explicites utilisent notamment show… et enable….
  • class cible la racine ou l’élément principal; les extensions ciblées portent le suffixe Class.
  • Les API d’instance sont exposées sur root.__ui<Component> et leurs méthodes commencent par un verbe.
  • Chaque argument d’une méthode indique son type attendu; le suffixe ? et la mention « optionnel » signalent qu’il peut être omis.
  • Les événements suivent component:action, remontent dans le DOM et exposent leurs données dans event.detail.
  • Chaque capacité ne possède qu’un nom canonique; aucun alias historique n’est maintenu.

Button

Voir la démo

Bouton ou lien d’action, avec variantes, couleurs, tailles, icônes et état de chargement.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Button — EJS Ejs
<%- include('../ui/button', {
  label: 'Enregistrer',
  variant: 'regular',
  color: 'primary',
  size: 'md',
  shape: 'default',
  iconName: 'check',
  customSize: '3rem',
  type: 'button',
  href: '/action',
  id: 'save-button',
  iconLeft: 'save',
  iconRight: 'arrow-right',
  attrs: { 'data-action': 'save', 'aria-label': 'Enregistrer' },
  class: 'w-full sm:w-auto',
  disabled: false,
  loading: false,
}) %>

Paramètres

Paramètres du composant Button
Paramètre Type Requis Défaut Valeurs possibles Description
label string Non any text button text
variant string Non regular regular soft outline ghost regular | soft | outline | ghost
color string Non primary primary secondary success warning danger info muted primary | secondary | success | warning | danger | info | muted
size string Non md sm md lg sm | md | lg
shape string Non default default icon default | icon (icon = round icon-only button)
iconName string Non Lucide icon name for shape: 'icon' Lucide icon name for shape: 'icon'
customSize number/string Non custom diameter for shape: 'icon' (52 = 52px, or '3rem') custom diameter for shape: 'icon' (px if number)
type string Non button button submit reset button | submit | reset
href string Non renders as <a> renders as <a> if set
id string Non auto Texte libre ou valeur conforme au format décrit HTML id attribute
iconLeft string Non Lucide icon name (e.g. 'arrow-right') Lucide icon name (e.g. 'arrow-right')
iconRight string Non Lucide icon name (e.g. 'arrow-right') Lucide icon name (e.g. 'arrow-right')
attrs object Non {} { 'data-ui': 'modal-trigger', 'data-target': 'id' } extra HTML attributes (data-*, aria-*, onclick, etc.)
class string Non '' extra Tailwind classes extra classes
disabled boolean Non false true | false Désactive les interactions du composant.
loading boolean Non false true | false Affiche l’état de chargement initial.

API JavaScript

Point d’accès : import { setLoading } from '/ui/utils.js'

Méthodes JavaScript de Button
Méthode ou interactionParamètres attendusRetourDescription
setLoading(button, active)
  • button: HTMLElement
  • active: boolean
void Active ou retire l’état de chargement d’un bouton existant.

Indicateur compact de statut ou de catégorie.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Badge — EJS Ejs
<%- include('../ui/badge', {
  label: 'Nouveau',
  variant: 'soft',
  color: 'success',
  iconName: 'sparkles',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Badge
Paramètre Type Requis Défaut Valeurs possibles Description
label string Oui any text badge text
variant string Non default default muted success warning danger info soft default | success | warning | danger | info | muted | soft
color string Non primary primary secondary muted success warning danger info when variant is soft primary | secondary | success | warning | danger | info | muted (for variant: soft)
iconName string Non Lucide icon name shown before the label (e.g. 'circle-check') optional Lucide icon name shown before the label (e.g. 'check')
class string Non '' Texte libre ou valeur conforme au format décrit extra classes

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Message contextuel avec niveau de sévérité et contenu HTML.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Alert — EJS Ejs
<%- include('../ui/alert', {
  variant: 'warning',
  title: 'Attention',
  message: '<p>Contenu <strong>HTML</strong> de l’alerte.</p>',
  dismissible: true,
  dismissLabel: 'Fermer l’alerte',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Alert
Paramètre Type Requis Défaut Valeurs possibles Description
variant string Non info info success warning danger info | success | warning | danger
title string Non optional bold heading optional bold title
message string Oui HTML allowed alert content (HTML allowed)
dismissible boolean Non false adds an accessible close button show a close button
dismissLabel string Non Fermer accessible label for the close button accessible label for the close button
class string Non '' Texte libre ou valeur conforme au format décrit extra classes

API JavaScript

Point d’accès : root.__uiAlert

Méthodes JavaScript de Alert
Méthode ou interactionParamètres attendusRetourDescription
dismiss() boolean Ferme l’alerte et la retire du DOM. Retourne false si l’événement est annulé.
Événements JavaScript de Alert
ÉvénementDétailDescription
alert:dismiss { alert, reason } Émis avant la fermeture, annulable. reason vaut button ou api.

Spinner

Voir la démo

Indicateur de chargement autonome, sans initialisation JavaScript.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Spinner — EJS Ejs
<%- include('../ui/spinner', {
  size: "md",
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Spinner
Paramètre Type Requis Défaut Valeurs possibles Description
size string Non md sm | md | lg sm | md | lg
class string Non '' Texte libre ou valeur conforme au format décrit extra classes

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Skeleton

Voir la démo

Placeholder de chargement avec presets texte, carte, liste et composition libre.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Skeleton — EJS Ejs
<%- include('../ui/skeleton', {
  type: 'custom',
  lines: 4,
  items: 3,
  body: '<div class="ui-skeleton h-12 w-full"></div>',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Skeleton
Paramètre Type Requis Défaut Valeurs possibles Description
type string Non text text | card | list | custom text | card | list | custom
lines number Non 3 Nombre conforme aux contraintes décrites type='text' : nombre de lignes
items number Non 3 Nombre conforme aux contraintes décrites type='list' : nombre d'items
body string Non Texte libre ou valeur conforme au format décrit type='custom' : HTML arbitraire
class string Non '' Texte libre ou valeur conforme au format décrit classes supplémentaires sur le wrapper

API JavaScript

Point d’accès : import { showSkeleton } from '/ui/utils.js'

Méthodes JavaScript de Skeleton
Méthode ou interactionParamètres attendusRetourDescription
showSkeleton(element, type?, options?)
  • element: HTMLElement
  • type?: 'text' | 'card' | 'list' (optionnel)
  • options?: { lines?: number, items?: number } (optionnel)
void Injecte un preset text, card ou list dans un conteneur.

Conteneur structuré avec média, en-tête, corps et pied.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Card — EJS Ejs
<%- include('../ui/card', {
  title: 'Titre du composant',
  subtitle: 'Description secondaire',
  image: { src: '/images/example.jpg', alt: 'Illustration', position: 'top', aspect: '16 / 9', class: 'object-cover', mediaClass: 'bg-muted', loading: 'lazy' },
  imageAlt: 'Illustration',
  imagePosition: 'top',
  imageAspect: '16 / 9',
  imageClass: 'object-cover',
  imageMediaClass: 'bg-muted',
  footer: '<button type="button" class="ui-btn ui-btn-regular ui-btn-md">Valider</button>',
  body: '<p>Contenu HTML du composant.</p>',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Card
Paramètre Type Requis Défaut Valeurs possibles Description
title string Non Texte libre ou valeur conforme au format décrit card header title (optional)
subtitle string Non Texte libre ou valeur conforme au format décrit card header subtitle (optional)
image string/object Non Objet conforme à la structure décrite image URL or { src, alt, position, aspect, class, mediaClass, loading }
imageAlt string Non Texte libre ou valeur conforme au format décrit image alt text (optional)
imagePosition string Non top top | bottom top | bottom
imageAspect string Non 16 / 9 Texte libre ou valeur conforme au format décrit CSS aspect-ratio value
imageClass string Non Texte libre ou valeur conforme au format décrit extra classes on the image element
imageMediaClass string Non Texte libre ou valeur conforme au format décrit extra classes on the media wrapper
footer string (HTML) Non Texte libre ou valeur conforme au format décrit raw HTML for footer (optional)
body string (HTML) Non Texte libre ou valeur conforme au format décrit raw HTML for body (optional)
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on the card root

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Dialogue modal avec focus piégé, fermeture clavier et actions structurées.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Modal — EJS Ejs
<%- include('../ui/modal', {
  id: 'example-modal',
  title: 'Titre du composant',
  titleIcon: 'info',
  body: '<p>Contenu HTML du composant.</p>',
  size: 'lg',
  class: 'w-full',
  footerHidden: false,
  buttons: [
      { label: 'Annuler', variant: 'ghost', color: 'muted', size: 'sm', close: true },
      { label: 'Enregistrer', variant: 'regular', color: 'primary', size: 'md', shape: 'default', iconLeft: 'save', iconRight: 'arrow-right', type: 'submit', id: 'save', class: 'font-semibold', attrs: { 'data-action': 'save' }, disabled: false },
    ],
  footer: '<button type="button" class="ui-btn ui-btn-regular ui-btn-md">Valider</button>',
}) %>

Paramètres

Paramètres du composant Modal
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit required, used by data-target
title string Non Texte libre ou valeur conforme au format décrit modal title
titleIcon string Non Texte libre ou valeur conforme au format décrit Lucide icon name (e.g. 'trash-2')
body string (HTML) Non Texte libre ou valeur conforme au format décrit raw HTML body content
size string Non md sm | md | lg | full sm md lg full
class string Non '' Texte libre ou valeur conforme au format décrit Extra Tailwind classes
footerHidden boolean Non false true | false Renders the footer in the DOM but hides it initially
buttons array Non Tableau conforme à la structure décrite Structured CTAs (preferred over footer)
footer string (HTML) Non Texte libre ou valeur conforme au format décrit Raw HTML fallback when buttons not set

API JavaScript

Point d’accès : root.__uiModal

Méthodes JavaScript de Modal
Méthode ou interactionParamètres attendusRetourDescription
open() boolean Ouvre la modale. Retourne true si l’état a changé.
close() boolean Ferme la modale. Retourne true si l’état a changé.
isOpen() boolean Indique si la modale est ouverte.
Événements JavaScript de Modal
ÉvénementDétailDescription
modal:open { id, reason } Émis sur la modale après son ouverture.
modal:close { id, reason } Émis sur la modale au début de sa fermeture.

Drawer

Voir la démo

Panneau latéral ou vertical, statique ou alimenté par un emplacement responsive.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Drawer — EJS Ejs
<%- include('../ui/drawer', {
  id: 'example-drawer',
  title: 'Titre du composant',
  titleIcon: 'info',
  body: '<p>Contenu HTML du composant.</p>',
  side: 'right',
  width: { base: 'calc(100vw - 2rem)', sm: '24rem', lg: '32rem' },
  responsive: { source: '#drawer-content', breakpoints: ['base', 'sm', 'md'], media: '(max-width: 1023px)', controls: true },
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Drawer
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Identifiant du drawer
title string Non Texte libre ou valeur conforme au format décrit Titre du panneau
titleIcon string Non Texte libre ou valeur conforme au format décrit Nom d'icône Lucide affichée avant le titre
body string (HTML) Non Texte libre ou valeur conforme au format décrit Contenu statique du drawer
side string Non right left | right | top | bottom left right top bottom
width string|number|object Non 20rem Objet conforme à la structure décrite Largeur des drawers left/right; accepte { base, sm, md, lg, xl, '2xl' }
responsive object Non Objet conforme à la structure décrite { source, breakpoints, media, controls } pour déplacer un noeud existant dans le drawer selon une condition responsive
class string Non '' Texte libre ou valeur conforme au format décrit extra classes

API JavaScript

Point d’accès : root.__uiDrawer

Méthodes JavaScript de Drawer
Méthode ou interactionParamètres attendusRetourDescription
open() boolean Ouvre le drawer. Retourne true si l’état a changé.
close() boolean Ferme le drawer. Retourne true si l’état a changé.
isOpen() boolean Indique si le drawer est ouvert.
Événements JavaScript de Drawer
ÉvénementDétailDescription
drawer:open { id, reason } Émis sur le drawer après son ouverture.
drawer:close { id, reason } Émis sur le drawer au début de sa fermeture.

Sliding Drawer

Voir la démo

Panneau coulissant persistant avec poignée et dimensions adaptatives.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Sliding Drawer — EJS Ejs
<%- include('../ui/sliding-drawer', {
  id: 'example-sliding-drawer',
  body: '<p>Contenu HTML du composant.</p>',
  side: 'right',
  size: 'full',
  overlay: true,
  handle: 'icon',
  handleIcon: 'panel-right',
  handleText: 'Ouvrir',
  handleAriaLabel: 'Ouvrir le panneau',
  radiusClass: 'rounded-l-xl',
  radius: '1rem',
  edgeInset: '1rem',
  responsive: { source: '#sliding-content', breakpoints: ['base', 'sm', 'md'], controls: true },
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Sliding Drawer
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Identifiant du panneau
body string (HTML) Non Texte libre ou valeur conforme au format décrit Contenu statique du panneau
side string Non right left | right | top | bottom left right top bottom
size string Non auto auto (content-based) | full (100vh/100vw) auto ou full. En full, les bordures au contact du viewport/conteneur sont retirées
overlay boolean Non true true | false Affiche un backdrop à l'ouverture
handle string Non grip grip | arrow | icon | text grip arrow icon text
handleIcon string Non Texte libre ou valeur conforme au format décrit Icône Lucide utilisée avec handle: 'icon'
handleText string Non Texte libre ou valeur conforme au format décrit Libellé utilisé avec handle: 'text'
handleAriaLabel string Non Texte libre ou valeur conforme au format décrit accessible label for the handle
radiusClass string Non Texte libre ou valeur conforme au format décrit Classe de radius personnalisée sur le panneau. Prend le dessus sur radius
radius string Non var(--radius) Texte libre ou valeur conforme au format décrit Valeur CSS appliquée aux coins exposés du panneau
edgeInset string | number Non 0 Nombre conforme aux contraintes décrites Marge minimale conservée entre le côté handle et le bord opposé du viewport/sandbox
responsive object Non Objet conforme à la structure décrite Même API que Drawer: { source, breakpoints, media, controls }
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le panneau

API JavaScript

Point d’accès : root.__uiSlidingDrawer

Méthodes JavaScript de Sliding Drawer
Méthode ou interactionParamètres attendusRetourDescription
open() boolean Ouvre le panneau coulissant. Retourne true si l’état a changé.
close() boolean Ferme le panneau coulissant. Retourne true si l’état a changé.
isOpen() boolean Indique si le panneau est ouvert.
Événements JavaScript de Sliding Drawer
ÉvénementDétailDescription
sliding-drawer:open { id, reason } Émis après ouverture, y compris après un glissement.
sliding-drawer:close { id, reason } Émis après fermeture, y compris après un glissement.

Anchor Nav

Voir la démo

Navigation latérale avec scrollspy, sticky desktop et drawer mobile.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Anchor Nav — EJS Ejs
<%- include('../ui/anchor-nav', {
  id: 'example-anchor-nav',
  title: 'Titre du composant',
  items: [
      { id: 'overview', label: 'Vue générale' },
      { id: 'api', label: 'API' },
    ],
  targetSelector: 'section[id]',
  scrollContainer: '#scroll-container',
  offsetSelector: 'header',
  rootMargin: '-80px 0px -70% 0px',
  sticky: true,
  mobileDrawer: { id: 'page-nav-drawer', title: 'Sections', side: 'right' },
  class: 'w-full',
}) %>

<%# Sous-composants associés %>
<%- include('../ui/anchor-nav-trigger', {
  target: 'page-nav-drawer',
  label: 'Libellé',
  iconName: 'list',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Anchor Nav
Paramètre Partial Type Requis Défaut Valeurs possibles Description
id anchor-nav string Non auto Texte libre ou valeur conforme au format décrit Identifiant racine du composant
title anchor-nav string Non Sur cette page Texte libre ou valeur conforme au format décrit Titre visible au-dessus des liens
items anchor-nav array Non [] Tableau conforme à la structure décrite [{ id, label }], où id cible une section existante
targetSelector anchor-nav string Non section[id] Texte libre ou valeur conforme au format décrit Sélecteur des sections observées
scrollContainer anchor-nav string Non Texte libre ou valeur conforme au format décrit Sélecteur d'un conteneur scrollable interne
offsetSelector anchor-nav string Non header Texte libre ou valeur conforme au format décrit Élément mesuré pour l'offset de scroll
rootMargin anchor-nav string Non -80px 0px -70% 0px Texte libre ou valeur conforme au format décrit Options IntersectionObserver
sticky anchor-nav boolean Non true true | false Rend la sidebar sticky sur desktop
mobileDrawer anchor-nav object|boolean Non false true | false { id, title, side } pour générer le drawer mobile
class anchor-nav string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur l'aside
target anchor-nav-trigger string Non '' Texte libre ou valeur conforme au format décrit drawer id to open
label anchor-nav-trigger string Non Sections Texte libre ou valeur conforme au format décrit accessible label
iconName anchor-nav-trigger string Non align-justify Texte libre ou valeur conforme au format décrit Lucide icon name
class anchor-nav-trigger string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur l'aside

API JavaScript

Point d’accès : root.__uiAnchorNav

Méthodes JavaScript de Anchor Nav
Méthode ou interactionParamètres attendusRetourDescription
getActiveId() string|null Retourne l’identifiant de la section active.
scrollTo(id)
  • id: string
boolean Active une section et lance le défilement vers celle-ci.
refresh() void Reconstruit la liste des sections et recalcule la navigation.

Navigation générique horizontale ou verticale avec gestion du débordement.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Nav — EJS Ejs
<%- include('../ui/nav', {
  items: [
      { label: 'Accueil', href: '/', iconLeft: 'home', active: true },
      { label: 'Action', type: 'button', iconRight: 'arrow-right', attrs: { 'data-action': 'open' } },
      { label: 'Information', type: 'text', disabled: true },
    ],
  orientation: "horizontal",
  variant: "pill",
  size: "md",
  gap: "sm",
  activeMode: "exact",
  wrap: true,
  overflowX: true,
  overflowPosition: "start",
  overflowFade: true,
  id: 'example-nav',
  ariaLabel: "Navigation",
  listClass: '',
  itemClass: '',
  linkClass: '',
  attrs: { 'data-example': 'complete' },
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Nav
Paramètre Type Requis Défaut Valeurs possibles Description
items array Non [] Tableau conforme à la structure décrite Entrées de navigation
orientation string Non horizontal horizontal | vertical horizontal ou vertical
variant string Non pill pill | underline | ghost | soft | plain pill, underline, ghost, soft, plain
size string Non md sm | md | lg sm, md, lg
gap string Non sm none | xs | sm | md | lg none, xs, sm, md, lg
activeMode string Non exact exact | prefix | manual | none exact, prefix, manual, none
wrap boolean Non false true | false Autorise le retour à la ligne horizontal
overflowX boolean Non false true | false Active le scroll horizontal sur une nav horizontale. Si activé, wrap est ignoré visuellement
overflowPosition string Non start start | end start ou end; position initiale quand overflowX déborde
overflowFade boolean Non true true | false Ajoute un fondu sur les bords où du contenu reste masqué
id string Non auto Texte libre ou valeur conforme au format décrit Id du <nav>
ariaLabel string Non Navigation Texte libre ou valeur conforme au format décrit Label accessible du <nav>
listClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le <ul>
itemClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur chaque <li>
linkClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur chaque contrôle
attrs object Non {} Objet conforme à la structure décrite Attributs HTML additionnels sur le <nav>
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le <nav>

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Breadcrumbs

Voir la démo

Fil d’Ariane responsive, compactable et accessible.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Breadcrumbs — EJS Ejs
<%- include('../ui/breadcrumbs', {
  id: 'example-breadcrumbs',
  ariaLabel: "Breadcrumb",
  items: [
      { label: 'Accueil', href: '/', icon: 'home' },
      { label: 'Composants', href: '/components', icon: 'blocks' },
      { label: 'Page courante', current: true },
    ],
  activeMode: "exact",
  mobileBehavior: "scroll",
  overflowPosition: "start",
  overflowFade: true,
  separatorIcon: "chevron-right",
  separator: 'separator',
  separatorHtml: 'separatorHtml',
  maxItems: 1,
  ellipsisLabel: "Pages masquees",
  class: 'w-full',
  listClass: '',
  itemClass: '',
  linkClass: '',
  currentClass: '',
  separatorClass: '',
  attrs: { 'data-example': 'complete' },
}) %>

Paramètres

Paramètres du composant Breadcrumbs
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Id du <nav>
ariaLabel string Non Breadcrumb Texte libre ou valeur conforme au format décrit Label accessible du <nav>
items array Non [] Tableau conforme à la structure décrite Entrées du fil d'Ariane
activeMode string Non exact exact | prefix | manual | none exact, prefix, manual, none
mobileBehavior string Non scroll scroll | wrap scroll garde un overflow horizontal sur mobile, wrap autorise le retour à la ligne
overflowPosition string Non start start | end start ou end; position initiale quand mobileBehavior: 'scroll' déborde
overflowFade boolean Non true true | false Ajoute un fondu sur les bords où du contenu reste masqué
separatorIcon string Non chevron-right Texte libre ou valeur conforme au format décrit Icône Lucide du séparateur
separator string Non Texte libre ou valeur conforme au format décrit Séparateur texte, prioritaire sur separatorIcon
separatorHtml string Non Texte libre ou valeur conforme au format décrit Séparateur HTML brut, prioritaire sur separator
maxItems number Non Nombre conforme aux contraintes décrites Compacte les longues chaînes avec une ellipse
ellipsisLabel string Non Pages masquees Texte libre ou valeur conforme au format décrit Label accessible de l'ellipse
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le <nav>
listClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le <ol>
itemClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur chaque <li>
linkClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur les liens/items
currentClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur l'item courant
separatorClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur les séparateurs
attrs object Non {} Objet conforme à la structure décrite Attributs HTML additionnels sur le <nav>

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Mega Menu

Voir la démo

Navigation multi-niveaux avec panneaux desktop et parcours mobile.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Mega Menu — EJS Ejs
<%- include('../ui/mega-menu', {
  id: 'example-mega-menu',
  items: [
      { label: 'Accueil', href: '/', iconLeft: 'home' },
      { label: 'Produits', icon: 'package', children: [
        { label: 'Plateforme', href: '/platform', description: 'Vue générale', icon: 'layers', badge: 'New', children: [
          { label: 'API', href: '/api', icon: 'braces', active: true },
        ] },
      ] },
    ],
  ariaLabel: "Navigation",
  orientation: "horizontal",
  variant: "pill",
  size: "md",
  gap: "sm",
  activeMode: "exact",
  wrap: true,
  overflowX: true,
  overflowPosition: "start",
  overflowFade: true,
  mobileTrigger: 'mobileTrigger',
  drawerMode: 'drawerMode',
  drawerBreakpoints: "base sm md",
  drawerMedia: 'drawerMedia',
  drawer: {},
  allLabel: "Tout voir",
  mobileTitle: 'mobileTitle',
  mobileThumbnails: true,
  linkAdapter: (item) => item.href,
  deobfuscate: true,
  panelClass: '',
  gridClass: '',
  rootClass: '',
  class: 'w-full',
  listClass: '',
  itemClass: '',
  linkClass: '',
  attrs: { 'data-example': 'complete' },
  openMode: "click",
}) %>

Paramètres

Paramètres du composant Mega Menu
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit optional, auto-generated if omitted
items array Non [] Tableau conforme à la structure décrite full navigation tree; root items render as the top-level nav
ariaLabel string Non Navigation Texte libre ou valeur conforme au format décrit same as Nav
orientation string Non horizontal horizontal | vertical same as Nav
variant string Non pill pill | underline | ghost | soft | plain same as Nav: pill, underline, ghost, soft, plain
size string Non md sm | md | lg same as Nav: sm, md, lg
gap string Non sm none | xs | sm | md | lg same as Nav: none, xs, sm, md, lg
activeMode string Non exact exact | prefix | manual | none exact, prefix, manual, none; uses currentPath when available
wrap boolean Non false true | false same as Nav
overflowX boolean Non false true | false same as Nav
overflowPosition string Non start start | end same as Nav
overflowFade boolean Non true true | false same as Nav
mobileTrigger string (HTML) Non Texte libre ou valeur conforme au format décrit trigger markup for the mobile drawer
drawerMode string Non auto auto | always | never auto, always, never
drawerBreakpoints string Non base sm md Texte libre ou valeur conforme au format décrit breakpoints for drawer mode
drawerMedia string Non Texte libre ou valeur conforme au format décrit custom media query for drawer mode
drawer object Non Objet conforme à la structure décrite { title, side, width, class } for the drawer
allLabel string Non Tout voir Texte libre ou valeur conforme au format décrit label for "view all" in sub-steps
mobileTitle string Non Texte libre ou valeur conforme au format décrit optional title for the root mobile step; omitted by default because the drawer already has a title
mobileThumbnails boolean Non true true | false show image as thumbnails in mobile items
linkAdapter function Non Fonction conforme à la signature décrite optional link adapter for items (see below)
deobfuscate boolean Non false true | false enable front-end de-obfuscation for obfuscated links
panelClass string Non '' Texte libre ou valeur conforme au format décrit extra classes on desktop panel
gridClass string Non '' Texte libre ou valeur conforme au format décrit extra classes on desktop grid
rootClass string Non '' Texte libre ou valeur conforme au format décrit extra classes on the mega-menu wrapper
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on the rendered Nav
listClass string Non '' Texte libre ou valeur conforme au format décrit same as Nav
itemClass string Non '' Texte libre ou valeur conforme au format décrit same as Nav
linkClass string Non '' Texte libre ou valeur conforme au format décrit same as Nav
attrs object Non {} Objet conforme à la structure décrite same as Nav, applied to the rendered Nav
openMode string Non click Texte libre ou valeur conforme au format décrit click or hover

API JavaScript

Point d’accès : root.__uiMegaMenu

Méthodes JavaScript de Mega Menu
Méthode ou interactionParamètres attendusRetourDescription
open(target?)
  • target?: string | Element (optionnel)
void Ouvre le premier panneau, un panneau identifié ou le drawer mobile.
close() void Ferme le panneau et le drawer mobile.
showStep(step, direction?)
  • step: string
  • direction?: 'forward' | 'back' | '' (optionnel)
void Affiche une étape du parcours mobile.
isOpen() boolean Indique si le menu desktop ou mobile est ouvert.

Accordion

Voir la démo

Collection de panneaux repliables en mode simple ou multiple.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Accordion — EJS Ejs
<%- include('../ui/accordion', {
  items: [
      { id: 'general', title: 'Général', content: '<p>Contenu HTML</p>', open: true },
      { id: 'advanced', title: 'Avancé', content: '<p>Autre contenu</p>' },
    ],
  mode: 'multiple',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Accordion
Paramètre Type Requis Défaut Valeurs possibles Description
items array Non [] Tableau conforme à la structure décrite [{ id, title, content, open }]
mode string Non single single | multiple single — ouvrir un item ferme les autres · multiple — chaque item s'ouvre/ferme indépendamment
class string Non '' Texte libre ou valeur conforme au format décrit extra classes

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Collapse

Voir la démo

Panneau repliable autonome, contrôlable par plusieurs déclencheurs.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Collapse — EJS Ejs
<%- include('../ui/collapse', {
  id: 'example-collapse',
  label: 'Libellé',
  trigger: '<button type="button" class="ui-btn ui-btn-outline ui-btn-md">Afficher</button>',
  body: '<p>Contenu HTML du composant.</p>',
  open: true,
  showIcon: true,
  duration: 200,
  responsive: { open: { base: false, lg: true } },
  class: 'w-full',
  triggerClass: '',
  panelClass: '',
  contentClass: '',
  disabled: false,
}) %>

Paramètres

Paramètres du composant Collapse
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Identifiant du root. Recommande avec un trigger externe.
label string Non null Texte libre ou valeur conforme au format décrit Texte du trigger interne
trigger string (HTML) Non null Texte libre ou valeur conforme au format décrit Contenu HTML du trigger interne, prioritaire sur label
body string (HTML) Non '' Texte libre ou valeur conforme au format décrit Contenu du panneau
open boolean Non false true | false Panneau ouvert au chargement
showIcon boolean Non true true | false Affiche le chevron du trigger interne
duration number Non 200 Nombre conforme aux contraintes décrites Duree de transition en ms, exposee via --ui-collapse-duration
responsive object Non Objet conforme à la structure décrite Même API responsive que Drawer pour déplacer un noeud existant dans le panneau
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le root
triggerClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le trigger interne
panelClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le panneau
contentClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le wrapper de contenu
disabled boolean Non false true | false Bloque le changement d'etat

API JavaScript

Point d’accès : root.__uiCollapse

Méthodes JavaScript de Collapse
Méthode ou interactionParamètres attendusRetourDescription
open() void Ouvre le panneau.
close() void Ferme le panneau.
toggle() void Inverse l’état ouvert/fermé.
isOpen() boolean Retourne l’état courant.
Événements JavaScript de Collapse
ÉvénementDétailDescription
collapse:open { open: true } Émis à l’ouverture.
collapse:close { open: false } Émis à la fermeture.
collapse:change { open } Émis après chaque changement d’état.

Dropdown

Voir la démo

Menu d’actions positionné avec Floating UI et portail optionnel.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Dropdown — EJS Ejs
<%- include('../ui/dropdown', {
  id: 'example-dropdown',
  trigger: '<button class="ui-btn ui-btn-outline ui-btn-md">Actions</button>',
  items: [
      { label: 'Modifier', icon: 'pencil', href: '/edit' },
      { type: 'separator' },
      { label: 'Supprimer', icon: 'trash-2', danger: true, attrs: { 'data-action': 'delete' } },
    ],
  placement: "bottom-start",
  class: 'w-full',
  portal: true,
  portalBreakpoints: [],
  portalMedia: 'portalMedia',
}) %>

Paramètres

Paramètres du composant Dropdown
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit required
trigger string (HTML) Non Texte libre ou valeur conforme au format décrit raw HTML for the trigger element
items array Non [] Tableau conforme à la structure décrite [{ label, href, icon (Lucide name), disabled, separator, isLabel }]
placement string Non bottom-start Texte libre ou valeur conforme au format décrit any Floating UI placement
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on the menu panel
portal boolean Non false true | false enables portaled positioning
portalBreakpoints string \/ array Non Tableau conforme à la structure décrite base sm md lg xl 2xl (space-separated or array)
portalMedia string Non Texte libre ou valeur conforme au format décrit custom media query (overrides breakpoints)

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Tooltip

Voir la démo

Info-bulle accessible positionnée avec Floating UI.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Tooltip — EJS Ejs
<%- include('../ui/tooltip', {
  id: 'example-tooltip',
  content: 'Information complémentaire',
  placement: 'top',
  trigger: '<button type="button" class="ui-btn ui-btn-ghost ui-btn-sm">Aide</button>',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Tooltip
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit optional, auto-generated if omitted
content string Non Texte libre ou valeur conforme au format décrit tooltip text
placement string Non top Texte libre ou valeur conforme au format décrit Floating UI placement
trigger string (HTML) Non Texte libre ou valeur conforme au format décrit raw HTML for the trigger element
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on root

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Popover

Voir la démo

Panneau flottant interactif avec contenu HTML libre.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Popover — EJS Ejs
<%- include('../ui/popover', {
  id: 'example-popover',
  trigger: '<button type="button" class="ui-btn ui-btn-outline ui-btn-md">Détails</button>',
  body: '<p>Contenu HTML du composant.</p>',
  placement: 'bottom-start',
  class: 'w-full',
  portal: true,
  portalBreakpoints: ['base', 'sm'],
  portalMedia: '(max-width: 639px)',
}) %>

Paramètres

Paramètres du composant Popover
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit optional, auto-generated if omitted
trigger string (HTML) Non Texte libre ou valeur conforme au format décrit raw HTML for the trigger element
body string (HTML) Non Texte libre ou valeur conforme au format décrit raw HTML popover content
placement string Non bottom Texte libre ou valeur conforme au format décrit any Floating UI placement
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on the panel
portal boolean Non false true | false enables portaled positioning
portalBreakpoints string \/ array Non Tableau conforme à la structure décrite base sm md lg xl 2xl (space-separated or array)
portalMedia string Non Texte libre ou valeur conforme au format décrit custom media query (overrides breakpoints)

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Notification éphémère créée depuis JavaScript ou par événement.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Toast — EJS Ejs
<%- include('../ui/toast-container') %>

<script type="module">
window.UI.toast({
  title: 'Enregistrement terminé',
  message: 'Les modifications ont été enregistrées.',
  variant: 'success',
  duration: 4000,
  position: 'top-right',
});
</script>

Paramètres

Paramètres du composant Toast
Paramètre Type Requis Défaut Valeurs possibles Description
title string Non Texte libre Titre optionnel affiché en emphase.
message string Non HTML autorisé Corps de la notification.
variant string Non info info | success | warning | danger Niveau sémantique et variante visuelle.
duration number Non 4000 0 ou durée en millisecondes Délai avant fermeture automatique. 0 rend le toast persistant.
position string Non bottom-right top-left | top-center | top-right | bottom-left | bottom-center | bottom-right Position du conteneur de notifications.

API JavaScript

Point d’accès : window.UI.toast

Méthodes JavaScript de Toast
Méthode ou interactionParamètres attendusRetourDescription
toast(options)
  • options: { title?: string, message?: string, variant?: 'info' | 'success' | 'warning' | 'danger', duration?: number, position?: string }
void Crée un toast dans le conteneur correspondant à sa position.
Événements JavaScript de Toast
ÉvénementDétailDescription
ui:toast { title?, message?, variant?, duration?, position? } Alternative événementielle à window.UI.toast().

Onglets ARIA avec navigation clavier et panneaux HTML.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Tabs — EJS Ejs
<%- include('../ui/tabs', {
  id: 'example-tabs',
  items: [
      { id: 'account', label: 'Compte', icon: 'user', iconPosition: 'start', content: '<p>Compte</p>', active: true },
      { id: 'security', label: 'Sécurité', icon: 'lock', iconPosition: 'end', content: '<p>Sécurité</p>' },
    ],
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Tabs
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit required
items array Non [] Tableau conforme à la structure décrite [{ id, label, content (HTML), active (bool), icon (string), iconPosition ('start'|'end') }]
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on root

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Table SSR avec tri, sélection, limite de lignes, sticky et personnalisation.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Table — EJS Ejs
<%- include('../ui/table', {
  id: 'example-table',
  columns: [
      { key: 'name', label: 'Nom', sortable: true, align: 'left', width: '16rem', personalization: { hideable: false, pinnable: true, defaultVisible: true, defaultPin: 'left' } },
      { key: 'status', label: 'Statut', align: 'center', personalization: { hideable: true, pinnable: true } },
    ],
  rows: [
      { name: 'Alice', status: 'Active', rowDataAttributes: { url: '/users/1' }, cellDataAttributes: { status: { state: 'active' } } },
    ],
  tableTitle: {},
  tableTitleAs: "h2",
  sort: {},
  selectable: { key: 'id', name: 'selected[]', selected: ['1'], disabledKey: 'locked', dataAttribute: 'selectionValue', sticky: true },
  rowsLimit: { value: 25, defaultValue: 25, options: [10, 25, 50, 100], name: 'limit', label: 'Lignes', persist: true, storageKey: 'users:limit' },
  personalization: { persist: true, storageKey: 'users:columns', label: 'Colonnes', resetLabel: 'Réinitialiser', titleLabel: 'Personnaliser', description: 'Choisissez les colonnes', pinLabels: { free: 'Libre', left: 'Gauche', right: 'Droite' } },
  ariaLabels: {},
  sticky: { header: true, topRows: 1, leftColumns: 1, rightColumns: 1, maxScrollHeight: '32rem', breakpoints: { base: { header: true }, lg: { leftColumns: 2 } } },
  striped: true,
  compact: true,
  caption: 'caption',
  empty: "Aucune donnée",
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Table
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Id du wrapper. Recommandé pour la persistance
columns array Non [] Tableau conforme à la structure décrite [{ key, label, sortable?, align?, width?, personalization? }]
rows array Non [] Tableau conforme à la structure décrite [{ [key]: string|HTML, rowDataAttributes?, cellDataAttributes? }]
tableTitle string|object Non Objet conforme à la structure décrite Titre visible
tableTitleAs string Non h2 Texte libre ou valeur conforme au format décrit Tag du titre visible
sort object Non Objet conforme à la structure décrite { key, dir }
selectable object|boolean Non true | false Colonne de sélection et event table:selection-change
rowsLimit object|boolean Non true | false Sélecteur de lignes et event table:rows-limit-change; préférence persistée par défaut si id est défini
personalization object|boolean Non true | false { persist?, storageKey?, label?, resetLabel? } pour afficher un panneau de colonnes
ariaLabels object Non Objet conforme à la structure décrite libellés accessibles optionnels pour les contrôles de tri/sélection (sort, selectAll, selectRow)
sticky object Non Objet conforme à la structure décrite { header?, topRows?, leftColumns?, rightColumns?, maxScrollHeight?, breakpoints? }
striped boolean Non false true | false Lignes alternées
compact boolean Non false true | false Padding réduit
caption string Non Texte libre ou valeur conforme au format décrit Légende accessible
empty string Non Aucune donnée Texte libre ou valeur conforme au format décrit Message quand rows est vide
class string Non '' Texte libre ou valeur conforme au format décrit classes supplémentaires sur la racine

API JavaScript

Point d’accès : root.__uiTable

Méthodes JavaScript de Table
Méthode ou interactionParamètres attendusRetourDescription
selection.getSelected() string[] Retourne les valeurs sélectionnées.
selection.getSelectedRows() HTMLElement[] Retourne les lignes sélectionnées.
selection.setSelected(values)
  • values: Array<string | number>
void Remplace la sélection courante.
selection.clear() void Vide la sélection.
selection.selectAll() void Sélectionne toutes les lignes disponibles.
rowsLimit.getValue() number Retourne la limite de lignes courante.
rowsLimit.getOptions() number[] Retourne les limites proposées.
rowsLimit.setValue(value)
  • value: number
void Change la limite et émet l’événement associé.
rowsLimit.clearStoredValue() void Supprime la limite persistée.
personalization.open() void Ouvre le panneau de personnalisation.
personalization.close() void Ferme le panneau de personnalisation.
personalization.getState() object Retourne une copie de l’état courant des colonnes.
personalization.getDefaults() object Retourne une copie de l’état par défaut.
personalization.reset() void Restaure l’état par défaut.
personalization.clearStoredValue() void Supprime la personnalisation persistée.
refresh() void Recalcule les positions sticky.
Événements JavaScript de Table
ÉvénementDétailDescription
table:sort { key, dir } Signale un nouveau tri ; dir vaut asc, desc ou null.
table:selection-change { selected, selectedCount, selectedRows, allSelected } Signale un changement de sélection.
table:rows-limit-change { value, previousValue, name, options, reason } Signale un changement de limite. reason vaut user, api ou storage.
table:personalization-change { state, defaults, dirty, visibleColumns, pinnedColumns } Signale une modification des colonnes.

Bloc de code avec coloration, copie, numéros de ligne et retour à la ligne.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Code — EJS Ejs
<%- include('../ui/code', {
  id: 'example-code',
  language: 'ejs',
  code: '<h1>Titre</h1>',
  title: 'Titre du composant',
  copyLabel: "Copier",
  copiedLabel: "Copié !",
  copyAriaLabel: 'copyAriaLabel',
  copyIconLeft: 'copy',
  copyIconRight: 'check',
  copyButtonVariant: "outline",
  copyButtonColor: "primary",
  copyButtonSize: "sm",
  copyButtonClass: '',
  copyButton: true,
  languageBadgeVariant: "primary-soft",
  lineNumbers: true,
  wrap: true,
  wrapButton: true,
  wrapButtonLabel: "Retour à la ligne automatique",
  preClass: '',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Code
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Id racine optionnel
language string Non plaintext Texte libre ou valeur conforme au format décrit Langage Prism (javascript, html, css, json, etc.)
code string Non '' Texte libre ou valeur conforme au format décrit Contenu affiché dans le bloc
title string Non Texte libre ou valeur conforme au format décrit Libellé affiché dans l'en-tête
copyLabel string Non Copier Texte libre ou valeur conforme au format décrit Label visible à partir de sm; tooltip sur mobile
copiedLabel string Non Copié ! Texte libre ou valeur conforme au format décrit Label temporaire après copie
copyAriaLabel string Non Texte libre ou valeur conforme au format décrit accessibility label for copy button (useful in icon-only mode)
copyIconLeft string Non Texte libre ou valeur conforme au format décrit Icônes Lucide du bouton desktop; mobile utilise une icône ronde
copyIconRight string Non Texte libre ou valeur conforme au format décrit Icônes Lucide du bouton desktop; mobile utilise une icône ronde
copyButtonVariant string Non outline regular | soft | outline | ghost regular soft outline ghost
copyButtonColor string Non primary primary | secondary | success | warning | danger | info | muted primary secondary success warning danger info muted
copyButtonSize string Non sm sm | md | lg sm md lg
copyButtonClass string Non Texte libre ou valeur conforme au format décrit extra classes for copy button
copyButton boolean Non true true | false Affiche le bouton de copie
languageBadgeVariant string Non primary-soft primary-soft | primary | secondary | muted | success | warning | danger | info Mappe vers Badge soft color
lineNumbers boolean Non false true | false Active les classes Prism line numbers
wrap boolean Non false true | false État initial du retour à la ligne automatique
wrapButton boolean Non true true | false Affiche le bouton qui active/désactive le retour à la ligne
wrapButtonLabel string Non Retour à la ligne automatique Texte libre ou valeur conforme au format décrit Tooltip et aria-label du bouton
preClass string Non Texte libre ou valeur conforme au format décrit Classes additionnelles sur <pre>
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on root

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Ce composant n’expose ni méthode ni événement public ; son comportement est initialisé automatiquement par le loader.

Pagination

Voir la démo

Pagination SSR ou pilotée par événements, responsive à sa largeur.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Pagination — EJS Ejs
<%- include('../ui/pagination', {
  id: 'example-pagination',
  page: 1,
  totalPages: 1,
  totalItems: 1,
  itemsPerPage: 1,
  siblings: 1,
  boundaries: 1,
  showAllThreshold: 10,
  name: 'pagination',
  href: '/destination',
  showSummary: true,
  summaryLabel: "sur",
  ariaLabel: "Pagination",
  previousLabel: "Précédent",
  nextLabel: "Suivant",
  previousAriaLabel: "Page précédente",
  nextAriaLabel: "Page suivante",
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Pagination
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit id HTML optionnel
page number Non 1 Nombre conforme aux contraintes décrites page courante
totalPages number Non Nombre conforme aux contraintes décrites nombre total de pages, prioritaire si fourni
totalItems number Non Nombre conforme aux contraintes décrites nombre total d'items, utilisé pour le résumé et totalPages
itemsPerPage number Non Nombre conforme aux contraintes décrites items par page, générique (table, grille, galerie...)
siblings number Non 1 Nombre conforme aux contraintes décrites pages voisines autour de la page courante
boundaries number Non 1 Nombre conforme aux contraintes décrites pages toujours affichées au début/à la fin
showAllThreshold number Non 10 Nombre conforme aux contraintes décrites affiche toutes les pages si totalPages <= cette valeur et si la largeur le permet
name string Non 'page' Texte libre ou valeur conforme au format décrit nom métier émis dans pagination:page-change
href function|string Non Fonction conforme à la signature décrite lien SSR optionnel. Function: page => url. String: remplace :page ou {page}
showSummary boolean Non true true | false affiche "x-y sur n" si totalItems/itemsPerPage
summaryLabel string Non 'sur' Texte libre ou valeur conforme au format décrit libellé du résumé entre la plage et le total
ariaLabel string Non 'Pagination' Texte libre ou valeur conforme au format décrit label accessible du nav
previousLabel string Non 'Précédent' Texte libre ou valeur conforme au format décrit label visible du contrôle précédent
nextLabel string Non 'Suivant' Texte libre ou valeur conforme au format décrit label visible du contrôle suivant
previousAriaLabel string Non 'Page précédente' Texte libre ou valeur conforme au format décrit label accessible du contrôle précédent
nextAriaLabel string Non 'Page suivante' Texte libre ou valeur conforme au format décrit label accessible du contrôle suivant
class string Non '' Texte libre ou valeur conforme au format décrit classes CSS additionnelles sur le nav

API JavaScript

Point d’accès : root.__uiPagination

Méthodes JavaScript de Pagination
Méthode ou interactionParamètres attendusRetourDescription
getPage() number Retourne la page courante.
getTotalPages() number Retourne le nombre total de pages.
refresh() void Recalcule la pagination responsive.
Événements JavaScript de Pagination
ÉvénementDétailDescription
pagination:page-change { page, previousPage, totalPages, totalItems, itemsPerPage, name } Émis avant le changement de page. Annulable.

Filters

Voir la démo

Formulaire de filtres SSR-first avec modes natif, asynchrone et événementiel.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Filters — EJS Ejs
<%- include('../ui/filters', {
  method: "GET",
  submitMode: "form",
  submitOnChange: true,
  showReset: true,
  showTitle: true,
  responsive: { drawer: true, breakpoints: ['base', 'sm', 'md'], drawerId: 'filters-drawer', drawerTitle: 'Filtres', side: 'right', width: { base: 'calc(100vw - 2rem)', sm: '26rem' }, submitOnChange: false },
  componentFallbacks: { selectSearch: 'select', autocomplete: 'text' },
  debounce: 150,
  asyncTarget: "",
  responseType: 'responseType',
  id: 'example-filters',
  action: "",
  fields: [
      { type: 'search', name: 'q', label: 'Recherche', placeholder: 'Mot-clé' },
      { type: 'select-search', name: 'status', label: 'Statut', options: [{ value: 'active', label: 'Actif' }] },
      { type: 'autocomplete', name: 'owner', label: 'Responsable', fetchUrl: '/api/users' },
      { type: 'datepicker', name: 'period', label: 'Période', mode: 'range' },
      { type: 'switch', name: 'active', label: 'Actifs uniquement' },
      { type: 'custom', name: 'custom', html: '<strong>Champ libre</strong>' },
    ],
  activeFilters: [{ label: 'Statut', value: 'Actif', href: '/users', name: 'status', class: 'font-medium' }],
  fieldsClass: '',
  actionsClass: '',
  activeFiltersClass: '',
  labels: {},
  resetHref: "action en GET",
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Filters
Paramètre Type Requis Défaut Valeurs possibles Description
method string Non GET GET | POST GET ou POST
submitMode string Non form form | async | event form pour soumission native, async pour fetch, event pour laisser l'app gérer
submitOnChange boolean Non true true | false Soumet au changement d'un champ. Masque le bouton submit, garde reset
showReset boolean Non true true | false Affiche le contrôle de réinitialisation
showTitle boolean Non true true | false Affiche labels.title
responsive object Non null Objet conforme à la structure décrite Wrapper responsive optionnel : drawer ou collapse
componentFallbacks object Non { selectSearch: 'select', autocomplete: 'text' } Objet conforme à la structure décrite Garde-fou si les composants optionnels sont absents
debounce number Non 150 Nombre conforme aux contraintes décrites Délai en ms avant submit onchange
asyncTarget string Non '' Texte libre ou valeur conforme au format décrit Sélecteur DOM mis à jour avec une réponse HTML/text en submitMode: 'async'
responseType string Non auto auto | html | text | json auto, html, text, json pour le parsing async
id string Non auto Texte libre ou valeur conforme au format décrit Id du <form data-ui="filters">
action string Non '' Texte libre ou valeur conforme au format décrit URL de soumission
fields array Non [] Tableau conforme à la structure décrite Champs rendus dans le formulaire
activeFilters array Non [] Tableau conforme à la structure décrite Badges de filtres actifs
fieldsClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur la grille de champs
actionsClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur la zone d'actions
activeFiltersClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur les filtres actifs
labels object Non voir ci-dessous Objet conforme à la structure décrite Tous les textes visibles/aria du composant
resetHref string Non action en GET Texte libre ou valeur conforme au format décrit URL de réinitialisation. Si absent en POST, reset JS + submit selon le mode
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le form

API JavaScript

Point d’accès : form.__uiFilters

Méthodes JavaScript de Filters
Méthode ou interactionParamètres attendusRetourDescription
submit() void | Promise Soumet les filtres selon le mode configuré.
reset() void | Promise Réinitialise les contrôles puis applique les filtres.
getValues() object Retourne les valeurs courantes sous forme d’objet.
Événements JavaScript de Filters
ÉvénementDétailDescription
filters:change { form, values, field, cause } Signale la modification d’un champ.
filters:submit { form, values, mode, cause } Signale une soumission. Annulable.
filters:reset { form, values, resetHref } Signale une réinitialisation. Annulable.
filters:success { form, values, response, responseType, data, cause } Émis après une réponse asynchrone réussie.
filters:error { form, values, error, cause } Émis après un échec asynchrone.

Datepicker

Voir la démo

Sélecteur de date, plage, mois, année ou heure avec valeurs normalisées.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Datepicker — EJS Ejs
<%- include('../ui/datepicker', {
  mode: 'range',
  type: 'datetime',
  rangeDisplay: "full",
  compactSeparator: ",",
  panelMonths: 2,
  locale: "fr-FR",
  firstDayOfWeek: 1,
  timePrecision: 'minute',
  id: 'example-datepicker',
  name: 'datepicker',
  startName: "${name}_start",
  endName: "${name}_end",
  label: 'Libellé',
  value: '',
  startValue: '',
  endValue: '',
  placeholder: 'Sélectionner…',
  startPlaceholder: "Début",
  endPlaceholder: "Fin",
  rangeSeparator: "-",
  min: 'min',
  max: 'max',
  clearable: true,
  required: true,
  disabled: false,
  readonly: false,
  helpText: 'Texte d’aide',
  errorText: '',
  triggerClass: '',
  panelClass: '',
  attrs: { 'data-context': 'booking' },
  labels: { clear: 'Effacer', today: "Aujourd’hui", previousMonth: 'Mois précédent', nextMonth: 'Mois suivant' },
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Datepicker
Paramètre Type Requis Défaut Valeurs possibles Description
mode string Non single single | range single ou range
type string Non date date | datetime | month | year | time date, datetime, month, year, time
rangeDisplay string Non full full | compact full ou compact pour un range datetime
compactSeparator string Non , Texte libre ou valeur conforme au format décrit Séparateur entre la date et le créneau en mode compact
panelMonths number Non 1 Nombre conforme aux contraintes décrites Nombre de mois affichés côte à côte dans le panel de sélection date/range, limité à 1 ou 2
locale string Non fr-FR Texte libre ou valeur conforme au format décrit Locale Intl.DateTimeFormat, ex. en-US, fr-FR
firstDayOfWeek number Non 1 Nombre conforme aux contraintes décrites 0 dimanche, 1 lundi
timePrecision string Non minute hour | minute | second hour, minute, second
id string Non auto Texte libre ou valeur conforme au format décrit Id racine. Sert aussi à lier trigger, panel et inputs
name string Non id Texte libre ou valeur conforme au format décrit Nom soumis en mode single
startName string Non ${name}_start Texte libre ou valeur conforme au format décrit Nom du début en mode range
endName string Non ${name}_end Texte libre ou valeur conforme au format décrit Nom de fin en mode range
label string Non Texte libre ou valeur conforme au format décrit Libellé visible
value string Non '' Texte libre ou valeur conforme au format décrit Valeur initiale en mode single
startValue string Non '' Texte libre ou valeur conforme au format décrit Valeur initiale de début
endValue string Non '' Texte libre ou valeur conforme au format décrit Valeur initiale de fin
placeholder string Non Choisir une date Texte libre ou valeur conforme au format décrit Texte quand aucune valeur n'est sélectionnée
startPlaceholder string Non Début Texte libre ou valeur conforme au format décrit Placeholder de début pour l'affichage range
endPlaceholder string Non Fin Texte libre ou valeur conforme au format décrit Placeholder de fin pour l'affichage range
rangeSeparator string Non - Texte libre ou valeur conforme au format décrit Séparateur affiché entre début et fin
min string Non Texte libre ou valeur conforme au format décrit Valeur minimale dans le même format que type
max string Non Texte libre ou valeur conforme au format décrit Valeur maximale dans le même format que type
clearable boolean Non true true | false Affiche le bouton d'effacement
required boolean Non false true | false Ajoute required sur les inputs hidden
disabled boolean Non false true | false Désactive le trigger et les inputs
readonly boolean Non false true | false Empêche l'ouverture sans désactiver la valeur soumise
helpText string Non Texte libre ou valeur conforme au format décrit Texte d'aide
errorText string Non Texte libre ou valeur conforme au format décrit Message d'erreur SSR
triggerClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le bouton trigger
panelClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le panel flottant
attrs object Non {} Objet conforme à la structure décrite Attributs additionnels sur la racine data-ui="datepicker"
labels object Non voir ci-dessous Objet conforme à la structure décrite Textes d'actions et aria
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le wrapper field

API JavaScript

Point d’accès : root.__uiDatepicker

Méthodes JavaScript de Datepicker
Méthode ou interactionParamètres attendusRetourDescription
open() void Ouvre le panneau.
close() void Ferme le panneau.
clear() void Efface les valeurs.
setValue(value, options?)
  • value: string | { startValue?: string, endValue?: string }
  • options?: { notifyPart?: 'start' | 'end' } (optionnel)
boolean Définit la valeur simple ou les bornes de plage. Retourne false si la valeur est invalide.
getValue() { value, startValue, endValue } Retourne les valeurs normalisées.
Événements JavaScript de Datepicker
ÉvénementDétailDescription
datepicker:open Émis à l’ouverture.
datepicker:close Émis à la fermeture.
datepicker:change { mode, type, value, startValue, endValue } Émis après modification.
datepicker:clear Émis après effacement.

Planning

Voir la démo

Planning jour, semaine et mois avec ressources, mode compact et chargement asynchrone.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Planning — EJS Ejs
<%- include('../ui/planning', {
  id: 'example-planning',
  items: [{ id: 'event-1', title: 'Intervention', subtitle: 'Client', start: '2026-07-21T09:00', end: '2026-07-21T10:30', resourceId: 'tech-1', color: '#2563eb', status: 'planned', class: 'priority', href: '/events/1', dataAttrs: { customerId: '42' } }],
  resources: [{ id: 'tech-1', label: 'Alice Martin', avatar: 'AM', color: '#2563eb' }],
  view: "week",
  currentDate: "aujourd'hui",
  minDate: 'minDate',
  maxDate: 'maxDate',
  firstDayOfWeek: 1,
  showWeekNumber: true,
  dayStartHour: 7,
  dayEndHour: 20,
  slotMinutes: 60,
  locale: "fr-FR",
  timezone: "timezone navigateur",
  compact: { base: true, lg: false },
  compactViews: [],
  dayCompactMode: "resource-focus",
  legend: true,
  enableFullscreen: true,
  fullscreenCompact: true,
  fullscreenToolbarSticky: true,
  loading: false,
  errorText: '',
  labels: { today: "Aujourd'hui", empty: 'Aucun événement', retry: 'Réessayer' },
  cta: { label: 'Nouvelle intervention', href: '/events/new', iconLeft: 'plus', variant: 'regular', color: 'primary' },
  resourceFilters: "",
  class: 'w-full',
  resourceSticky: { base: false, md: true },
  hourSticky: { base: true },
  surfaceMaxHeight: { base: '24rem', md: '40rem' },
}) %>

Paramètres

Paramètres du composant Planning
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Id racine
items array Non [] Tableau conforme à la structure décrite Événements (start/end + resourceId)
resources array Non [] Tableau conforme à la structure décrite Ressources affichées en colonnes/lignes
view string Non week day | week | month day, week, month
currentDate string Non aujourd'hui Texte libre ou valeur conforme au format décrit Date ancre (YYYY-MM-DD ou ISO datetime)
minDate string Non Texte libre ou valeur conforme au format décrit Borne min de navigation
maxDate string Non Texte libre ou valeur conforme au format décrit Borne max de navigation
firstDayOfWeek number Non 1 Nombre conforme aux contraintes décrites 0 dimanche, 1 lundi
showWeekNumber boolean Non false true | false Affiche le numéro de semaine dans la 1ère cellule de l'entête hebdo
dayStartHour number Non 7 Nombre conforme aux contraintes décrites Début affichage en vue jour
dayEndHour number Non 20 Nombre conforme aux contraintes décrites Fin affichage en vue jour
slotMinutes number Non 60 Nombre conforme aux contraintes décrites Pas de grille en vue jour
locale string Non fr-FR Texte libre ou valeur conforme au format décrit Locale utilisée par Intl.DateTimeFormat pour les jours, mois et plages de dates
timezone string Non timezone navigateur Texte libre ou valeur conforme au format décrit Métadonnée timezone transmise dans les événements async (planning:range-change)
compact boolean | object Non null true | false Active le mode compact globalement ou par breakpoint ({ base: true, md: false })
compactViews array | string Non ['week', 'month'] Tableau conforme à la structure décrite Vues affectées par le compact. Accepte ['week', 'month', 'day'] ou 'all'
dayCompactMode string Non resource-focus Texte libre ou valeur conforme au format décrit Stratégie de vue jour compacte : timeline focalisée sur une ressource
legend boolean | string Non auto resource legend display: auto | true | false Affichage de la légende ressources : auto, true, false
enableFullscreen boolean Non false true | false Affiche un bouton plein écran dans la barre d'outils du planning
fullscreenCompact boolean | object Non null true | false Override du mode compact quand le fullscreen est actif. Si omis, le fullscreen reprend compact
fullscreenToolbarSticky boolean Non true true | false keep toolbar sticky while fullscreen is active
loading boolean Non false true | false État initial de chargement async
errorText string Non '' Texte libre ou valeur conforme au format décrit Message d'erreur initial async
labels object Non voir defaults Objet conforme à la structure décrite Libellés UI + aria labels + templates de plage
cta object Non Objet conforme à la structure décrite CTA à gauche du sélecteur de vue, rendue via le bouton du kit
resourceFilters string Non '' Texte libre ou valeur conforme au format décrit Zone d'injection HTML libre (ou rendu d'un composant kit)
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur la racine
resourceSticky object Non Objet conforme à la structure décrite Option « resourceSticky » transmise au partial EJS.
hourSticky object Non Objet conforme à la structure décrite Option « hourSticky » transmise au partial EJS.
surfaceMaxHeight string | object Non null Objet conforme à la structure décrite Hauteur max du conteneur scrollable ui-planning-surface. Accepte une taille CSS (ex: "38rem", "60vh") ou un objet responsive `{ base?: string

API JavaScript

Point d’accès : root.__uiPlanning

Méthodes JavaScript de Planning
Méthode ou interactionParamètres attendusRetourDescription
next() void Passe à la période suivante.
previous() void Passe à la période précédente.
today() void Revient à aujourd’hui.
setView(view, options?)
  • view: 'day' | 'week' | 'month'
  • options?: { force?: boolean, reason?: string } (optionnel)
void Change la vue day, week ou month.
setDate(date, options?)
  • date: Date | string | number
  • options?: { force?: boolean, reason?: string } (optionnel)
void Change la date d’ancrage.
setData(data, options?)
  • data: { items?: PlanningItem[], resources?: PlanningResource[] }
  • options?: { preserveScroll?: boolean, clearLoading?: boolean, clearError?: boolean, reason?: string } (optionnel)
void Met à jour items, resources et états asynchrones en une opération.
setLoading(loading, options?)
  • loading: boolean
  • options?: { clearError?: boolean, reason?: string } (optionnel)
void Met à jour l’état de chargement.
setError(error, options?)
  • error: string | Error | { message: string } | null
  • options?: { clearLoading?: boolean, reason?: string } (optionnel)
void Définit l’erreur courante.
clearError(options?)
  • options?: { clearLoading?: boolean, reason?: string } (optionnel)
void Efface l’erreur courante.
setItems(items)
  • items: PlanningItem[]
void Remplace les événements.
setResources(resources)
  • resources: PlanningResource[]
void Remplace les ressources.
setCompact(config)
  • config: boolean | Record<string, boolean>
void Change le mode compact.
setFullscreenCompact(config)
  • config: boolean | Record<string, boolean>
void Change le mode compact en plein écran.
setFullscreenToolbarSticky(sticky)
  • sticky: boolean
void Configure la toolbar sticky en plein écran.
setCompactViews(views)
  • views: Array<'day' | 'week' | 'month'> | string
void Définit les vues concernées par le compact.
setCompactResource(resourceId)
  • resourceId: string | number
void Sélectionne la ressource compacte.
setLegend(legend)
  • legend: boolean | 'auto'
void Change l’affichage de la légende.
setFullscreen(active)
  • active: boolean
void Active ou quitte le plein écran.
toggleFullscreen() void Inverse le plein écran.
retry() void Émet une demande de nouvel essai.
getRange() object Retourne la plage visible.
refreshRange(reason?)
  • reason?: string (optionnel)
void Réémet la plage visible.
refresh() void Réhydrate et recalcule le planning.
getState() object Retourne un instantané complet de l’état public.
Événements JavaScript de Planning
ÉvénementDétailDescription
planning:ready Consulter getRange() ou getState() selon l’événement Initialisation terminée, avec api.
planning:range-change Consulter getRange() ou getState() selon l’événement Plage visible modifiée.
planning:view-change Consulter getRange() ou getState() selon l’événement Vue modifiée.
planning:date-change Consulter getRange() ou getState() selon l’événement Date d’ancrage modifiée.
planning:data-change Consulter getRange() ou getState() selon l’événement Collections de données modifiées.
planning:loading-change Consulter getRange() ou getState() selon l’événement État de chargement modifié.
planning:error-change Consulter getRange() ou getState() selon l’événement Erreur courante modifiée.
planning:item-click Consulter getRange() ou getState() selon l’événement Événement du planning activé.
planning:slot-click Consulter getRange() ou getState() selon l’événement Créneau vide activé.
planning:retry Consulter getRange() ou getState() selon l’événement Nouvel essai demandé.
planning:fullscreen-change Consulter getRange() ou getState() selon l’événement État plein écran modifié.

Champ de saisie natif avec label, aide, erreur et attributs additionnels.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Input — EJS Ejs
<%- include('../ui/input', {
  label: 'Libellé',
  type: "text",
  class: 'w-full',
  inputClass: '',
  attrs: { 'data-example': 'complete' },
  id: 'example-input',
  name: 'input',
  placeholder: 'Sélectionner…',
  value: '',
  helpText: 'Texte d’aide',
  errorText: '',
  required: true,
  disabled: false,
}) %>

Paramètres

Paramètres du composant Input
Paramètre Type Requis Défaut Valeurs possibles Description
label string Non Texte libre ou valeur conforme au format décrit visible label (optional)
type string Non text text | email | password | number | tel | url text | email | password | number | tel | url
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on the field root
inputClass string Non '' Texte libre ou valeur conforme au format décrit extra classes on the input
attrs object Non {} Objet conforme à la structure décrite extra HTML attributes
id string Non auto Texte libre ou valeur conforme au format décrit Identifiant HTML unique du composant.
name string Non id Texte libre ou valeur conforme au format décrit Nom du champ envoyé lors de la soumission du formulaire.
placeholder string Non '' Texte libre ou valeur conforme au format décrit Texte affiché lorsqu’aucune valeur n’est renseignée.
value string Non '' Texte libre ou valeur conforme au format décrit Valeur initiale ou valeur soumise.
helpText string Non Texte libre ou valeur conforme au format décrit Texte d’aide affiché sous le contrôle.
errorText string Non — (triggers red border) Texte libre ou valeur conforme au format décrit Message d’erreur SSR, prioritaire sur le texte d’aide.
required boolean Non false true | false Marque la valeur comme obligatoire.
disabled boolean Non false true | false Désactive les interactions du composant.

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Textarea

Voir la démo

Zone de texte multiligne avec états de validation.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Textarea — EJS Ejs
<%- include('../ui/textarea', {
  id: 'example-textarea',
  name: 'textarea',
  label: 'Libellé',
  placeholder: 'Sélectionner…',
  value: '',
  rows: [],
  helpText: 'Texte d’aide',
  errorText: '',
  required: true,
  disabled: false,
  inputClass: '',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Textarea
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Identifiant HTML unique du composant.
name string Non id Texte libre ou valeur conforme au format décrit Nom du champ envoyé lors de la soumission du formulaire.
label string Non Texte libre ou valeur conforme au format décrit Libellé visible du composant.
placeholder string Non '' Texte libre ou valeur conforme au format décrit Texte affiché lorsqu’aucune valeur n’est renseignée.
value string Non '' Texte libre ou valeur conforme au format décrit Valeur initiale ou valeur soumise.
rows number Non 4 Nombre conforme aux contraintes décrites Option « rows » transmise au partial EJS.
helpText string Non Texte libre ou valeur conforme au format décrit Texte d’aide affiché sous le contrôle.
errorText string Non Texte libre ou valeur conforme au format décrit Message d’erreur SSR, prioritaire sur le texte d’aide.
required boolean Non false true | false Marque la valeur comme obligatoire.
disabled boolean Non false true | false Désactive les interactions du composant.
inputClass string Non Texte libre ou valeur conforme au format décrit Classes CSS additionnelles appliquées au contrôle de saisie natif.
class string Non '' Texte libre ou valeur conforme au format décrit Classes CSS additionnelles appliquées à l’élément racine.

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Select

Voir la démo

Sélecteur natif avec options simples ou groupées.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Select — EJS Ejs
<%- include('../ui/select', {
  id: 'example-select',
  name: 'select',
  label: 'Libellé',
  options: [
      { value: '', label: 'Sélectionner…' },
      { label: 'Groupe', options: [{ value: 'one', label: 'Option 1' }, { value: 'two', label: 'Option 2', disabled: true }] },
    ],
  value: '',
  helpText: 'Texte d’aide',
  errorText: '',
  required: true,
  disabled: false,
  inputClass: '',
  attrs: { 'data-action': 'change-status' },
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Select
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Identifiant HTML unique du composant.
name string Non id Texte libre ou valeur conforme au format décrit Nom du champ envoyé lors de la soumission du formulaire.
label string Non Texte libre ou valeur conforme au format décrit Libellé visible du composant.
options array Non [] Tableau conforme à la structure décrite Options proposées par le contrôle.
value string Non '' Texte libre ou valeur conforme au format décrit Valeur initiale ou valeur soumise.
helpText string Non Texte libre ou valeur conforme au format décrit Texte d’aide affiché sous le contrôle.
errorText string Non Texte libre ou valeur conforme au format décrit Message d’erreur SSR, prioritaire sur le texte d’aide.
required boolean Non false true | false Marque la valeur comme obligatoire.
disabled boolean Non false true | false Désactive les interactions du composant.
inputClass string Non Texte libre ou valeur conforme au format décrit Classes CSS additionnelles appliquées au contrôle de saisie natif.
attrs object Non {} Objet conforme à la structure décrite Attributs HTML additionnels appliqués à l’élément principal.
class string Non '' Texte libre ou valeur conforme au format décrit Classes CSS additionnelles appliquées à l’élément racine.

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Checkbox

Voir la démo

Case à cocher native avec aide et état désactivé.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Checkbox — EJS Ejs
<%- include('../ui/checkbox', {
  id: 'example-checkbox',
  name: 'checkbox',
  label: 'Libellé',
  checked: true,
  disabled: false,
  helpText: 'Texte d’aide',
  value: '',
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Checkbox
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit Identifiant HTML unique du composant.
name string Non id Texte libre ou valeur conforme au format décrit Nom du champ envoyé lors de la soumission du formulaire.
label string Non Texte libre ou valeur conforme au format décrit Libellé visible du composant.
checked boolean Non false true | false Option « checked » transmise au partial EJS.
disabled boolean Non false true | false Désactive les interactions du composant.
helpText string Non Texte libre ou valeur conforme au format décrit Texte d’aide affiché sous le contrôle.
value string Non 1 Texte libre ou valeur conforme au format décrit Valeur initiale ou valeur soumise.
class string Non '' Texte libre ou valeur conforme au format décrit Classes CSS additionnelles appliquées à l’élément racine.

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Switch

Voir la démo

Interrupteur accessible avec description et position de libellé configurable.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Switch — EJS Ejs
<%- include('../ui/switch', {
  value: '',
  labelPosition: "right",
  attrs: { 'data-example': 'complete' },
  class: 'w-full',
  id: 'example-switch',
  name: 'switch',
  label: 'Libellé',
  description: 'description',
  errorText: '',
  checked: true,
  disabled: false,
  required: true,
  inputClass: '',
  trackClass: '',
  thumbClass: '',
  labelClass: '',
  descriptionClass: '',
}) %>

Paramètres

Paramètres du composant Switch
Paramètre Type Requis Défaut Valeurs possibles Description
value string Non 1 Texte libre ou valeur conforme au format décrit Valeur soumise quand le switch est actif
labelPosition string Non right right | left right ou left
attrs object Non {} Objet conforme à la structure décrite Attributs HTML additionnels sur l'input
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le root
id string Non auto Texte libre ou valeur conforme au format décrit Id de l'input
name string Non id Texte libre ou valeur conforme au format décrit Nom soumis
label string Non '' Texte libre ou valeur conforme au format décrit Libellé visible
description string Non Texte libre ou valeur conforme au format décrit Texte descriptif sous le label
errorText string Non Texte libre ou valeur conforme au format décrit Message d'erreur, ajoute aria-invalid
checked boolean Non false true | false État initial
disabled boolean Non false true | false Désactive le contrôle
required boolean Non false true | false Exige l'état actif avant soumission
inputClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur l'input masqué
trackClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur la piste
thumbClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le pouce
labelClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le label
descriptionClass string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur la description

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Groupe de boutons radio natifs.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Radio — EJS Ejs
<%- include('../ui/radio', {
  name: 'radio',
  label: 'Libellé',
  options: [
      { value: 'email', label: 'E-mail', checked: true },
      { value: 'sms', label: 'SMS', disabled: true },
    ],
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Radio
Paramètre Type Requis Défaut Valeurs possibles Description
name string Non id Texte libre ou valeur conforme au format décrit required, shared name for the group
label string Non — (group legend) Texte libre ou valeur conforme au format décrit group label
options array Non [] Tableau conforme à la structure décrite [{ id, value, label, checked, disabled, helpText }]
class string Non '' Texte libre ou valeur conforme au format décrit Classes CSS additionnelles appliquées à l’élément racine.

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Autocomplete

Voir la démo

Champ de recherche distant avec sélection structurée et hooks applicatifs.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Autocomplete — EJS Ejs
<%- include('../ui/autocomplete', {
  id: 'example-autocomplete',
  name: 'autocomplete',
  label: 'Libellé',
  value: '',
  selectedId: '',
  fetchUrl: 'fetchUrl',
  fetchByIdUrl: 'fetchByIdUrl',
  keyName: "label",
  idKey: "id",
  minChars: 1,
  debounce: 300,
  emptyText: "Aucun résultat",
  portal: true,
  portalBreakpoints: [],
  portalMedia: 'portalMedia',
  class: 'w-full',
  placeholder: 'Sélectionner…',
  helpText: 'Texte d’aide',
  errorText: '',
  required: true,
  disabled: false,
}) %>

Paramètres

Paramètres du composant Autocomplete
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit text input id
name string Non id Texte libre ou valeur conforme au format décrit hidden input name
label string Non Texte libre ou valeur conforme au format décrit libellé visible
value string Non '' Texte libre ou valeur conforme au format décrit displayed value
selectedId string Non '' Texte libre ou valeur conforme au format décrit hidden input value
fetchUrl string Non Texte libre ou valeur conforme au format décrit GET {fetchUrl}?search=...
fetchByIdUrl string Non Texte libre ou valeur conforme au format décrit GET {fetchByIdUrl}/{id}
keyName string Non label Texte libre ou valeur conforme au format décrit display property
idKey string Non id Texte libre ou valeur conforme au format décrit value property
minChars number Non 1 Nombre conforme aux contraintes décrites min chars before fetch
debounce number Non 300 Nombre conforme aux contraintes décrites debounce in ms
emptyText string Non Aucun résultat Texte libre ou valeur conforme au format décrit no-results message
portal boolean Non false true | false enables portaled positioning
portalBreakpoints string \/ array Non Tableau conforme à la structure décrite base sm md lg xl 2xl (space-separated or array)
portalMedia string Non Texte libre ou valeur conforme au format décrit custom media query (overrides breakpoints)
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on field root
placeholder string Non Rechercher… Texte libre ou valeur conforme au format décrit Texte affiché lorsqu’aucune valeur n’est renseignée.
helpText string Non Texte libre ou valeur conforme au format décrit Texte d’aide affiché sous le contrôle.
errorText string Non Texte libre ou valeur conforme au format décrit Message d’erreur SSR, prioritaire sur le texte d’aide.
required boolean Non false true | false Marque la valeur comme obligatoire.
disabled boolean Non false true | false Désactive les interactions du composant.

API JavaScript

Point d’accès : root.__uiAutocomplete

Méthodes JavaScript de Autocomplete
Méthode ou interactionParamètres attendusRetourDescription
getValue() { value, label } Retourne la valeur soumise et le libellé affiché.
setValue(item)
  • item: Record<string, unknown>
boolean Sélectionne un résultat selon keyName et idKey.
clear() void Efface la sélection et émet autocomplete:change.
focus() void Donne le focus au champ de recherche.
setFilter(callback)
  • callback: ((items: object[]) => object[]) | null
void Configure la transformation des résultats après chargement.
setOnSelect(callback)
  • callback: ((item: object) => void) | null
void Configure un callback appelé après sélection.
Événements JavaScript de Autocomplete
ÉvénementDétailDescription
autocomplete:change { item, value, label } Signale une modification de la valeur soumise.
autocomplete:select { item } Signale la sélection d’un résultat.

Upload

Voir la démo

Sélection, glisser-déposer, collage et prévisualisation de fichiers.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Upload — EJS Ejs
<%- include('../ui/upload', {
  id: 'example-upload',
  name: 'upload',
  label: 'Libellé',
  accept: 'image/*,.pdf',
  multiple: true,
  maxSize: 5242880,
  placeholder: 'Sélectionner…',
  subtext: 'subtext',
  hint: 'hint',
  preview: true,
  existingFiles: [
      { name: 'document.pdf', size: 184200, url: '/uploads/document.pdf', type: 'application/pdf' },
    ],
  class: 'w-full',
  helpText: 'Texte d’aide',
  errorText: '',
  required: true,
  disabled: false,
}) %>

Paramètres

Paramètres du composant Upload
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit HTML id
name string Non id Texte libre ou valeur conforme au format décrit input name
label string Non Texte libre ou valeur conforme au format décrit visible label
accept string Non Texte libre ou valeur conforme au format décrit types acceptés ex: 'image/*' ou '.pdf,.docx'
multiple boolean Non true | false autoriser plusieurs fichiers
maxSize number Non Nombre conforme aux contraintes décrites taille max par fichier en octets (validation JS)
placeholder string Non '' Texte libre ou valeur conforme au format décrit texte cliquable de la zone (défaut: 'Choisir un/des fichier(s)')
subtext string Non Texte libre ou valeur conforme au format décrit texte secondaire sous le placeholder (défaut: auto selon accept)
hint string Non Texte libre ou valeur conforme au format décrit texte de format ex: 'PNG, JPG jusqu\'à 5 Mo'
preview boolean Non true | false afficher une miniature pour les images
existingFiles array Non Tableau conforme à la structure décrite fichiers déjà uploadés : [{ name, size, url, type? }]
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on field root
helpText string Non Texte libre ou valeur conforme au format décrit Texte d’aide affiché sous le contrôle.
errorText string Non Texte libre ou valeur conforme au format décrit Message d’erreur SSR, prioritaire sur le texte d’aide.
required boolean Non false true | false Marque la valeur comme obligatoire.
disabled boolean Non false true | false Désactive les interactions du composant.

API JavaScript

Point d’accès : Initialisation automatique par /ui/loader.js

Événements JavaScript de Upload
ÉvénementDétailDescription
upload:change { files: FileList, existingFiles: Array<{ name, url }> } Émis après ajout ou suppression de fichiers.

Signature

Voir la démo

Zone de signature canvas synchronisée avec un champ de formulaire.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Signature — EJS Ejs
<%- include('../ui/signature', {
  value: '',
  height: 180,
  strokeColor: '#111827',
  strokeWidth: 2.5,
  backgroundColor: '#ffffff',
  outputType: 'image/png',
  id: 'example-signature',
  name: 'signature',
  label: 'Libellé',
  placeholder: 'Sélectionner…',
  clearLabel: "Effacer",
  emptyMessage: "Signature requise.",
  helpText: 'Texte d’aide',
  errorText: '',
  required: true,
  disabled: false,
  readonly: false,
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Signature
Paramètre Type Requis Défaut Valeurs possibles Description
value string Non '' Texte libre ou valeur conforme au format décrit Data URL initiale, utile en mode édition
height number|string Non 180 Nombre conforme aux contraintes décrites Hauteur du canvas en px ou valeur CSS
strokeColor string Non currentColor Texte libre ou valeur conforme au format décrit Couleur du trait. Accepte toute couleur CSS (#111827, rgb(...), hsl(...), var(...), currentColor)
strokeWidth number Non 2.5 Nombre conforme aux contraintes décrites Épaisseur du trait en pixels CSS
backgroundColor string Non transparent Texte libre ou valeur conforme au format décrit Fond du canvas
outputType string Non image/png image/png | image/jpeg | image/webp Format exporté dans le hidden
id string Non auto Texte libre ou valeur conforme au format décrit Base des ids du wrapper, du canvas et du champ caché
name string Non id Texte libre ou valeur conforme au format décrit Attribut name du champ caché soumis
label string Non Texte libre ou valeur conforme au format décrit Libellé visible au-dessus de la zone
placeholder string Non Signer ici Texte libre ou valeur conforme au format décrit Texte affiché tant que la zone est vide
clearLabel string Non Effacer Texte libre ou valeur conforme au format décrit Libellé du bouton d'effacement, par exemple Recommencer
emptyMessage string Non Signature requise. Texte libre ou valeur conforme au format décrit Message de validation JS
helpText string Non Texte libre ou valeur conforme au format décrit Texte d'aide
errorText string Non Texte libre ou valeur conforme au format décrit Message d'erreur SSR
required boolean Non false true | false Bloque le submit si la signature est vide
disabled boolean Non false true | false Désactive le dessin et l'effacement
readonly boolean Non false true | false Affiche la valeur sans permettre de modification
class string Non '' Texte libre ou valeur conforme au format décrit Classes additionnelles sur le wrapper

API JavaScript

Point d’accès : root.__uiSignature

Méthodes JavaScript de Signature
Méthode ou interactionParamètres attendusRetourDescription
clear(options?)
  • options?: { emit?: boolean } (optionnel)
void Efface la signature.
fromDataURL(value, options?)
  • value: string
  • options?: { emit?: boolean } (optionnel)
void Charge une image encodée.
isEmpty() boolean Indique si la zone est vide.
resize() void Recalcule le canvas sans perdre le tracé.
toDataURL(type?)
  • type?: string (optionnel)
string Retourne la signature encodée.
validate() boolean Valide la contrainte required.
Événements JavaScript de Signature
ÉvénementDétailDescription
signature:change { value, empty } Émis après modification ou effacement.

Timeline

Voir la démo

Frise verticale, alternée ou horizontale, en mode données ou markup libre.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Timeline — EJS Ejs
<%- include('../ui/timeline', {
  items: [
      { date: '21 juillet', title: 'Création', body: '<p>Dossier créé.</p>', nodeIcon: 'check', nodeStep: 1, status: 'success', active: true },
    ],
  body: include('../ui/timeline-item', { title: 'Markup libre', body: '<strong>HTML</strong>' }),
  layout: "vertical",
  step: 'step',
  class: 'w-full',
}) %>

<%# Sous-composants associés %>
<%- include('../ui/timeline-item', {
  date: 'date',
  title: 'Titre du composant',
  body: include('../ui/timeline-item', { title: 'Markup libre', body: '<strong>HTML</strong>' }),
  nodeIcon: 'check',
  nodeStep: 1,
  status: 'success',
  active: true,
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Timeline
Paramètre Partial Type Requis Défaut Valeurs possibles Description
items timeline array Non [] Tableau conforme à la structure décrite data-driven mode: [{ date, title, body, nodeIcon, nodeStep, status, active }]
body timeline string Non Texte libre ou valeur conforme au format décrit markup-libre mode: pre-rendered HTML (use timeline-item includes)
layout timeline string Non 'vertical' vertical | alternating | horizontal vertical | alternating | horizontal
step timeline string Non 'asc' | 'desc' — auto-number nodes (data-driven mode only); 'asc' | 'desc' — auto-number nodes (data-driven mode only);
class timeline string Non '' Texte libre ou valeur conforme au format décrit extra classes on root
date timeline-item string Non Texte libre ou valeur conforme au format décrit date or label displayed above the title
title timeline-item string Non Texte libre ou valeur conforme au format décrit item title
body timeline-item string Non Texte libre ou valeur conforme au format décrit HTML body content
nodeIcon timeline-item string Non Texte libre ou valeur conforme au format décrit Lucide icon name (replaces the default pip); takes priority over nodeStep
nodeStep timeline-item string|number Non Nombre conforme aux contraintes décrites number or short text displayed inside the node
status timeline-item string Non 'default' default | success | warning | error | info | muted default | success | warning | error | info | muted
active timeline-item boolean Non true | false marks this item as the current step (primary color + ring)
class timeline-item string Non '' Texte libre ou valeur conforme au format décrit extra classes on item root

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Progress Bar

Voir la démo

Barre de progression déterminée ou indéterminée avec labels et variantes.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Progress Bar — EJS Ejs
<%- include('../ui/progress', {
  value: 65,
  size: "md",
  color: "primary",
  label: 'Libellé',
  showValue: true,
  textPosition: 'top-left',
  striped: true,
  animated: true,
  indeterminate: true,
  class: 'w-full',
  attrs: { 'data-task-id': '42' },
}) %>

Paramètres

Paramètres du composant Progress Bar
Paramètre Type Requis Défaut Valeurs possibles Description
value number Non 0 0 to 100, clamped 0–100
size string Non md sm md lg sm | md | lg
color string Non primary primary secondary success warning danger info muted primary | secondary | success | warning | danger | info | muted
label string Non visible label and fallback aria-label texte libre affiché selon textPosition
showValue boolean Non false shows the percentage when not indeterminate affiche le pourcentage
textPosition string Non top-left top-center top-right bottom-left bottom-center bottom-right inside-left inside-center inside-right top-left | top-center | top-right
striped boolean Non false diagonal stripe texture on the fill motif rayé diagonal
animated boolean Non false animates stripes when striped is true anime les rayures, combo avec striped
indeterminate boolean Non false animated loading state for unknown duration barre défilante pour durée inconnue
class string Non '' Extra classes on the wrapper classes supplémentaires sur le wrapper
attrs object Non {} Extra attributes on the progressbar track attributs HTML supplémentaires sur le track

API JavaScript

Point d’accès : Aucune API JavaScript publique

Ce composant n’expose ni méthode ni événement public.

Adaptateur Chart.js lazy avec presets et API de mise à jour.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Chart — EJS Ejs
<%- include('../ui/chart', {
  id: 'example-chart',
  type: "line",
  data: { labels: ['Jan', 'Fév'], datasets: [{ label: 'Ventes', data: [12, 19], gaugeMax: 100 }] },
  options: { responsive: true, plugins: { legend: { display: true } } },
  preset: 'preset',
  height: 240,
  emptyText: "No data",
  ariaLabel: "Chart",
  lazy: true,
  class: 'w-full',
}) %>

Paramètres

Paramètres du composant Chart
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit optional, auto-generated if omitted
type string Non line chart type (line | bar | doughnut) line, bar, doughnut
data object Non Objet conforme à la structure décrite Chart.js data object
options object Non [] Objet conforme à la structure décrite Chart.js options object
preset string Non area | stacked | horizontal area, stacked, stacked-100, horizontal, gauge, combo
height number Non 240 Nombre conforme aux contraintes décrites canvas height in px
emptyText string Non No data Texte libre ou valeur conforme au format décrit empty state label
ariaLabel string Non Chart Texte libre ou valeur conforme au format décrit canvas aria-label
lazy boolean Non true true | false true loads near viewport; false initializes immediately
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on the root

API JavaScript

Point d’accès : root.__uiChart

Méthodes JavaScript de Chart
Méthode ou interactionParamètres attendusRetourDescription
getInstance() Chart|null Retourne l’instance Chart.js après initialisation.
setData(data)
  • data: ChartData
void Remplace les données, y compris avant le chargement de Chart.js.
setOptions(options)
  • options: ChartOptions
void Fusionne les options du graphique.
update() void Redessine le graphique.
destroy() void Détruit l’instance et libère ses ressources.
await ready Promise<object|null> Attend l’API réelle après le chargement lazy.

Editor

Voir la démo

Éditeur riche Quill chargé à la demande et synchronisé avec un champ caché.

Configuration EJS complète

Toutes les propriétés publiques sont renseignées. Adaptez ou retirez les options selon le cas d’usage.

Editor — EJS Ejs
<%- include('../ui/editor', {
  id: 'example-editor',
  name: 'editor',
  label: 'Libellé',
  value: '',
  toolbar: 'full',
  height: 220,
  resizable: true,
  lazy: true,
  labels: { tooltipVisit: 'URL :', tooltipEnterLink: 'Lien :', tooltipEdit: 'Modifier', tooltipSave: 'Appliquer', tooltipRemove: 'Retirer' },
  class: 'w-full',
  placeholder: 'Sélectionner…',
  helpText: 'Texte d’aide',
  errorText: '',
  required: true,
  disabled: false,
}) %>

Paramètres

Paramètres du composant Editor
Paramètre Type Requis Défaut Valeurs possibles Description
id string Non auto Texte libre ou valeur conforme au format décrit HTML id du conteneur Quill (et base pour l'input hidden {id}-value)
name string Non id Texte libre ou valeur conforme au format décrit Attribut name de l'input hidden soumis avec le formulaire
label string Non Texte libre ou valeur conforme au format décrit Libellé visible au-dessus de l'éditeur
value string Non '' Texte libre ou valeur conforme au format décrit Contenu HTML initial
toolbar string Non 'full' 'minimal' | 'full' 'full' (en-têtes, formatage, listes, liens, images…) ou 'minimal' (gras, italique, liste, lien)
height number Non 200 Nombre conforme aux contraintes décrites Hauteur du corps de l'éditeur en pixels
resizable boolean Non false true | false allow vertical resize
lazy boolean Non true true | false Charge Quill proche du viewport ou à la première interaction; false initialise immédiatement
labels object Non Objet conforme à la structure décrite optional Quill toolbar/link tooltip labels
class string Non '' Texte libre ou valeur conforme au format décrit extra classes on field root
placeholder string Non '' Texte libre ou valeur conforme au format décrit Placeholder affiché dans l'éditeur vide
helpText string Non Texte libre ou valeur conforme au format décrit Texte d'aide sous l'éditeur
errorText string Non Texte libre ou valeur conforme au format décrit Message d'erreur (active la bordure rouge)
required boolean Non false true | false Ajoute * rouge au label et required sur l'input hidden
disabled boolean Non false true | false Lecture seule — toolbar masquée, saisie désactivée

API JavaScript

Point d’accès : root.__uiEditor

Méthodes JavaScript de Editor
Méthode ou interactionParamètres attendusRetourDescription
await ready Promise<Quill|null> Attend l’initialisation lazy de Quill.
getInstance() Quill|null Retourne l’instance Quill lorsqu’elle est initialisée.
getValue() string Retourne le HTML normalisé de l’éditeur.
setValue(value)
  • value: string | null
void Remplace le HTML, avant ou après l’initialisation.
focus() Promise<Quill|null> Initialise si nécessaire puis donne le focus à l’éditeur.
setEnabled(enabled?)
  • enabled?: boolean (optionnel)
void Active ou désactive l’édition.
Événements JavaScript de Editor
ÉvénementDétailDescription
editor:change { value, source } Émis après chaque modification du contenu.