LegbaCallButton

expérimentaldepuis 0.1.0@legba-core/ui

LegbaCallButton

Ce que ça fait

Bouton (<legba-call-button for="id">) qui déclenche connect() sur l’élément <legba-call> référencé par id — même patron que l’attribut for natif de <label>. Retrouve la cible au montage, appelle sa méthode publique connect() au clic, et reflète son état RÉEL (connectionPhase, via l’événement legba-call-phase-change) plutôt que de ne suivre que l’issue de son propre clic.

Signature

class LegbaCallButton extends LegbaElement {
  for: string;
}

Tag : legba-call-button.

Paramètres

PropriétéTypeRequisDéfautDescription
forstringoui""id de l’élément <legba-call> référencé, ailleurs dans le document

Retour

N/A — un élément DOM. Aucun événement propre émis ; l’action réelle est un appel à LegbaCall.connect() sur l’élément référencé.

Erreurs

Aucune exception : un for pointant vers un id inexistant produit un console.error explicite (erreur de développement détectable), jamais une exception qui remonte, et le clic reste sans effet plutôt que de planter.

Exemple minimal

<legba-call id="salle-1" room="salle-demo" token-endpoint="/api/token"></legba-call>
<legba-call-button for="salle-1"></legba-call-button>

Exemple complet

import type { LegbaCallButton } from "@legba-core/ui";

// Le bouton se désactive lui-même pendant la connexion et une fois en
// appel (libellé « Déjà en appel ») — aucun câblage supplémentaire requis
// pour éviter un double-clic qui reconnecterait inutilement.
function logButtonState(button: LegbaCallButton): void {
  console.log("cible :", button.for);
}

Pièges

  • Résolution par id DOM global (document.getElementById), pas par portée Shadow DOM — comme l’attribut for natif de <label>, for doit correspondre à un id dans le document (light DOM), pas à l’intérieur d’un autre Shadow Root.
  • Ne mute jamais <legba-call> directement : le seul point d’entrée est connect(). Le bouton ne pose ni room ni token-endpoint sur la cible.
  • Reconnexion inutile impossible : une fois l’appel en cours (connecting) ou établi (connected), le bouton natif est disabled — et même un clic programmatique forcé reste sans second effet.
  • Consomme les jetons --legba-* comme tout composant @legba-core/ui : ne redéclare jamais un jeton public directement, voir LegbaElement.

Voir aussi