Dialog Styling Delay
Dialog Styling Delay verschiebt das Anwenden von UIX-Styles auf Dialoge, bis der Dialog vollständig angezeigt wird. Das hilft bei Dialogen, deren DOM erst nach der Öffnungsanimation vollständig verfügbar ist.
Aktivierung über die Integrations-UI
- In Home Assistant zu Settings -> Devices & Services -> UI eXtension -> Configure gehen.
- Performance settings öffnen.
- Delay UIX styling for dialogs until fully shown aktivieren.
- Speichern.
So funktioniert es
Normalerweise versucht UIX, Dialog-Styling direkt beim Erstellen oder Anzeigen des Dialogs anzuwenden. Manche Home-Assistant-Dialoge oder Custom-Dialoge montieren ihre internen Elemente aber erst etwas später. Mit Dialog Styling Delay wartet UIX, bis der Dialog vollständig gezeigt wird.
INFO
Die Option betrifft Dialog-Styling, nicht normale Karten- oder View-Styles. Sie kann besonders bei More-info-Dialogen, adaptiven Dialogen oder Custom-Dialogen helfen.
Clientseitige Override-API
window.uixCoordinator stellt eine Methode bereit, mit der das Verhalten pro Browser überschrieben werden kann.
window.uixCoordinator.setDialogApplyAfterShowOverride(true)
window.uixCoordinator.setDialogApplyAfterShowOverride(false)
window.uixCoordinator.setDialogApplyAfterShowOverride(null)Mit Browser Mod verwenden
# In der Browser-Mod-Konfiguration für eine bestimmte Browser-ID:
service: browser_mod.javascript
data:
browser_id: wall-tablet
code: |
window.uixCoordinator?.setDialogApplyAfterShowOverride(true)Mit custom:button-card verwenden
# Dialog Styling Delay für diese Browser-Session aktivieren:
tap_action:
action: fire-dom-event
uix:
action: javascript
data:
code: window.uixCoordinator?.setDialogApplyAfterShowOverride(true)
# Override wieder löschen:
hold_action:
action: fire-dom-event
uix:
action: javascript
data:
code: window.uixCoordinator?.setDialogApplyAfterShowOverride(null)Konfigurationsreferenz
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Delay UIX styling for dialogs until fully shown | Aus | Wenn aktiviert, wendet UIX Dialog-Styles nach Abschluss der Öffnungsanimation an statt sofort. |
Wann sollte Dialog Styling Delay genutzt werden?
Nutze die Option, wenn Dialog-Styles manchmal nicht greifen, erst nach erneutem Öffnen sichtbar werden oder nur bei bestimmten Browsern/Companion-App-Sessions zuverlässig erscheinen.
WARNING
Die Verzögerung kann sichtbar sein, wenn sehr starke Dialog-Styles angewendet werden. Aktiviere sie nur, wenn sie ein echtes Timing-Problem löst.
Reihenfolge der Einstellungen
UIX kann Dialog Styling Delay aus mehreren Quellen erhalten. Entscheidend ist die konkrete Browser-Session.
| Quelle | Wirkung |
|---|---|
| Integrations-UI | Globaler Standard für alle Browser |
setDialogApplyAfterShowOverride(true) | Aktiviert Delay nur für diese Browser-Session |
setDialogApplyAfterShowOverride(false) | Deaktiviert Delay nur für diese Browser-Session |
setDialogApplyAfterShowOverride(null) | Entfernt den Session-Override und nutzt wieder den globalen Standard |
Der Override ist besonders nützlich für Wandtablets oder Companion-App-Sessions, wenn nur ein Gerät Timing-Probleme zeigt.
Typische Dialoge
| Dialogtyp | Wann Delay helfen kann |
|---|---|
| More-info | Inhalte werden erst nach Öffnung vollständig montiert |
| Browser-Mod-Dialog | Custom-Inhalte erscheinen verzögert |
| Adaptive Dialoge | Layout ändert sich während der Öffnungsanimation |
| Custom-Card-Dialoge | Interne Shadow Roots entstehen erst nach dem ersten Render |
Testablauf
- Dialog ohne Delay öffnen und prüfen, ob UIX-Styling direkt greift.
- Delay global oder per Browser-Override aktivieren.
- Home Assistant im Browser hart neu laden.
- Dialog erneut öffnen und vergleichen.
- Wenn nur ein Gerät betroffen ist, global wieder deaktivieren und den Browser-Override nutzen.
Rückgängig machen
Global wird die Option wieder in der Integrations-UI deaktiviert. Ein lokaler Override wird so entfernt:
window.uixCoordinator.setDialogApplyAfterShowOverride(null)Danach gilt wieder der globale Wert aus der Integration.
Zeitpunkt und Reichweite
Die standardmäßig deaktivierte Option wartet auf das Dialogereignis after-show. Dadurch vermeidet sie ein erneutes Zeichnen mitten in der Öffnungsanimation. Das Problem hängt vom Browser ab und kann besonders Safari/WebKit auf iOS betreffen. Die gespeicherte Integrationsoption gilt sofort in allen verbundenen Browsern, ohne Seitenneuladen.
setDialogApplyAfterShowOverride() hat dagegen für die jeweilige Browsersitzung Vorrang vor der serverseitigen Einstellung. true aktiviert die Verzögerung, false deaktiviert sie und null entfernt den Override und verwendet wieder die Integrationsvorgabe.
