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é | Type | Requis | Défaut | Description |
|---|---|---|---|---|
for | string | oui | "" | 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’attributfornatif de<label>,fordoit 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 estconnect(). Le bouton ne pose niroomnitoken-endpointsur la cible. - Reconnexion inutile impossible : une fois l’appel en cours
(
connecting) ou établi (connected), le bouton natif estdisabled— 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, voirLegbaElement.