{% extends 'base.html.twig' %} {% block title %}Tool Toggle - Design System - Bubul{% endblock %} {% block body %}
Molécules /

Tool Toggle

Activation/désactivation d'outils avec confirmation

{# ===== USAGE ===== #}

Usage

{% verbatim %}{% include '_molecules/tool-toggle/tool-toggle.html.twig' with {
    name: 'Moodia',
    icon: 'bubul-moodia',
        enabled: true
} %}{% endverbatim %}
{# ===== APERÇU ===== #}

Aperçu

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Moodia', icon: 'bubul-moodia', enabled: true } %}
{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Serenia', icon: 'bubul-serenia', enabled: false } %}
{# ===== ÉTATS ===== #}

États

Paramètre : enabled

enabled: true

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Slidia', icon: 'bubul-slidia', enabled: true } %}

enabled: false

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Slidia', icon: 'bubul-slidia', enabled: false } %}
{# ===== ÉTAT BLOQUÉ ===== #}

État bloqué

Paramètre : locked: true — Utilisateur sans droit d'accès

locked: true (outil non disponible)

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Slidia', icon: 'bubul-slidia', locked: true } %}

Comparaison des 3 états

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Moodia', icon: 'bubul-moodia', enabled: true } %} {% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Serenia', icon: 'bubul-serenia', enabled: false } %} {% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Sam', icon: 'bubul-sam', locked: true } %}
{# ===== TOUS LES OUTILS ===== #}

Tous les outils Bubul

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Moodia', icon: 'bubul-moodia', enabled: true } %} {% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Serenia', icon: 'bubul-serenia', enabled: true } %} {% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Slidia', icon: 'bubul-slidia', enabled: false } %} {% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Sam', icon: 'bubul-sam', enabled: true } %}
{# ===== TAILLES ===== #}

Tailles

Paramètre : size

sm

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Moodia', icon: 'bubul-moodia', enabled: true, size: 'sm' } %}

md (défaut)

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Moodia', icon: 'bubul-moodia', enabled: true, size: 'md' } %}

lg

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Moodia', icon: 'bubul-moodia', enabled: true, size: 'lg' } %}
{# ===== MODE READONLY ===== #}

Mode lecture seule

Paramètre : readonly: true

Sans bouton toggle (affichage seul)

{% include '_molecules/tool-toggle/tool-toggle.html.twig' with { name: 'Serenia', icon: 'bubul-serenia', enabled: true, readonly: true } %}
{# ===== USAGE INTERACTIF ===== #}

Usage interactif

Avec Stimulus controller et modal de confirmation

{% verbatim %}{% include '_molecules/tool-toggle/tool-toggle.html.twig' with {
    name: 'Moodia',
    icon: 'bubul-moodia',
        enabled: user.hasTool('moodia'),
    toggleUrl: path('admin_user_toggle_tool', {id: user.id, tool: 'moodia'}),
    csrfToken: csrf_token('toggle-tool'),
    modalId: 'modal-toggle-moodia'
} %}{% endverbatim %}

Le composant utilise le controller Stimulus tool-toggle pour gérer l'interaction et ouvrir une modal de confirmation avant le changement d'état.

{# ===== PARAMÈTRES ===== #}

Paramètres

Paramètre Type Défaut Description
namestring(requis)Nom de l'outil
iconstringnullIcône (bubul-moodia, bubul-serenia...)
enabledboolfalseÉtat actuel de l'outil
lockedboolfalseOutil bloqué (pas le droit)
toggleUrlstringnullURL API pour le toggle
csrfTokenstringnullToken CSRF
modalIdstringnullID de la modal de confirmation
readonlyboolfalseMasquer le bouton toggle
sizestringmdsm, md, lg
classstring''Classes CSS additionnelles
{% endblock %}