Angular Ladeanzeige & Overlay | ng-hub-ui-loading

Angular-Ladekomponente mit Spinner-, Dots-, Bars-, Pulse- und Ring-Indikatoren in den Modi inline, overlay und fullscreen, dazu ein Service für anwendungsweit blockierende Overlays.

API-Referenz

Hier ist der vollständige Vertrag für loading: alles, was du binden, abhören, projizieren und gestalten kannst, an einem Ort gesammelt. Verdrahte, was du brauchst, und gestalte, was du willst — es ist standalone und Signals-freundlich.

Inputs

Stelle loading mit 17 Inputs ein. Binde sie wie jeden Angular-@Input.

NameTypStandardBeschreibung
hub-loading · mode'inline' | 'overlay' | 'fullscreen''inline'Wo der Block sitzt. `inline` nimmt am normalen Dokumentfluss teil und reserviert eigenen Platz; `overlay` wird absolut positioniert und deckt den nächsten positionierten Vorfahren ab; `fullscreen` ist am Viewport fixiert.
hub-loading · variant'spinner' | 'dots' | 'bars' | 'pulse' | 'ring''spinner'Welcher reine CSS-Indikator gerendert wird. Wird ignoriert, solange `image` gesetzt ist, da das Bild den eingebauten Indikator ersetzt.
hub-loading · imagestring | nullnullURL oder Data-URI, die statt des eingebauten Indikators gerendert wird — typischerweise eine Markenmarke. Ihre Box wird über `--hub-loading-image-size` dimensioniert.
hub-loading · imageAnimation'none' | 'spin' | 'pulse''none'Bewegung für `image`; ohne gesetztes Bild wirkungslos. `spin` passt zu einer radialsymmetrischen Marke, `pulse` hält eine Wortmarke aufrecht und lesbar, `none` lässt sie still.
hub-loading · messagestring | nullnullText unter dem Indikator und zugleich das, was die Live-Region beim Erscheinen des Blocks ankündigt. `null` rendert keine Meldung.
hub-loading · size'sm' | 'md' | 'lg''md'Größenstufe, die `--hub-loading-size` speist. Das Token bleibt eigenständig überschreibbar, wenn ein Layout eine Größe braucht, die die drei Stufen nicht abdecken.
hub-loading · colorstring | nullnullAkzent des Indikators, von `resolveHubAccent()` in den einzigen Slot `--hub-loading-accent` normalisiert. Ein bloßer Name wie `primary` löst zu einem `--hub-sys-color-*`-Token auf und folgt dem Theme; ein Hex-Wert, ein `oklch()`-Literal oder eine `var(...)`-Referenz wird unverändert übernommen. `null` belässt den Kaskaden-Standard des Tokens.
hub-loading · backdropbooleantrueZeichnet den durchscheinenden Schleier über dem verdeckten Inhalt. Im Modus `inline` ignoriert, der nichts verdeckt.
hub-loading · ariaLabelstring'Loading'Barrierefreier Name, den die Live-Region des Hosts über `role="status"` ankündigt.
hub-loading · appendTostring | null'body'CSS-Selektor des Elements, unter das ein `fullscreen`-Indikator verschoben wird; bei `null` oder einem Selektor, der nichts trifft, bleibt er dort, wo die Vorlage ihn deklariert. `inline` und `overlay` werden nie verschoben.
hub-loading-bar · mode'inline' | 'overlay' | 'fixed''inline'Wo der Streifen sitzt. `inline` nimmt am normalen Fluss teil und reserviert seine eigene Zeile, sodass beim Erscheinen nichts springt; `overlay` wird absolut am nächsten positionierten Vorfahren ausgerichtet — der Navigationsleiste, der Sie `position: relative` gegeben haben; `fixed` heftet ihn an den Viewport bei `--hub-loading-bar-offset`.
hub-loading-bar · placement'top' | 'bottom''top'An welche Kante sich die Modi `overlay` und `fixed` heften. `bottom` hängt die Leiste an die Unterseite einer Navigationsleiste; `inline` ignoriert den Wert.
hub-loading-bar · progressnumber | null | undefinedundefinedÜbernimmt die Leiste. Ungebunden folgt sie `HubLoadingBarService`; eine Zahl von 0 bis 100 steuert sie direkt und wird als `aria-valuenow` veröffentlicht; `null` blendet sie aus.
hub-loading-bar · indeterminatebooleanfalseLässt ein Fragment hin- und herwandern, statt zu füllen — für Arbeit ohne messbaren Fortschritt. Der angesagte Wert wird zurückgehalten, und genau so kennzeichnet ARIA eine Fortschrittsanzeige unbekannter Position.
hub-loading-bar · glowbooleantrueWeiches Leuchten hinter der Vorderkante — das Detail, das auch zwischen zwei Trickle-Schritten noch als Bewegung gelesen wird.
hub-loading-bar · colorstring | nullnullAkzent der Füllung. Ein bloßer Name wird zu einem `--hub-sys-color-*`-Token aufgelöst und folgt dem Theme; ein Hex-Wert, ein `oklch()` oder ein `var(...)` wird wörtlich übernommen.
hub-loading-bar · ariaLabelstring'Loading'Zugänglicher Name für das `role="progressbar"` des Hosts.

Outputs

Noch keine Outputs dokumentiert.

Methoden

Steuere loading aus dem Code heraus — 14 Methoden auf der programmatischen Schnittstelle.

NameSignaturRückgabeBeschreibung
HubLoadingService.showshow(options?: HubLoadingOptions): voidvoidRegistriert einen Aufrufer und hängt das Fullscreen-Overlay ein, falls es noch nicht steht. Nur die tatsächlich übergebenen Schlüssel werden über die Anwendungsstandards gelegt, sodass verschachtelte Aufrufe sich ergänzen statt einander zurückzusetzen.
HubLoadingService.hidehide(): voidvoidEntlässt einen Aufrufer und baut das Overlay ab, sobald keiner mehr wartet. Der Zähler wird bei null gekappt, sodass ein verirrtes `hide()` ein späteres `show()` nicht wirkungslos machen kann.
HubLoadingService.hideAllhideAll(): voidvoidVerwirft alle offenen Aufrufer auf einmal und entfernt das Overlay sofort. Ein Notausstieg für Fehlerbehandlung und Routenwechsel, kein Ersatz für ausgeglichene `show()`/`hide()`-Paare.
HubLoadingService.updateupdate(options: HubLoadingOptions): voidvoidKleidet das laufende Overlay neu ein — eine Fortschrittsmeldung, die sich mitten im Vorgang ändert, ein Variantenwechsel — ohne den Referenzzähler anzutasten.
HubLoadingService.isLoadingisLoading: Signal<boolean>Signal<boolean> — true while at least one reference is heldSignal, das true ist, solange mindestens ein Aufrufer wartet. Auch beim Server-Side-Rendering sicher lesbar, wo der Zähler läuft, aber kein Overlay eingehängt wird.
HubLoadingBarService.startstart(): voidvoidRegistriert einen Aufrufer. Der erste startet einen Zyklus — nach der Karenzzeit, nicht sofort — die übrigen erhöhen nur den Zähler.
HubLoadingBarService.completecomplete(): voidvoidZieht einen Aufrufer zurück. Ist keiner mehr übrig, läuft die Leiste auf 100 % und blendet aus — oder verschwindet ungesehen, wenn die Karenzzeit den ganzen Vorgang geschluckt hat.
HubLoadingBarService.completeAllcompleteAll(): voidvoidVerwirft alle offenen Aufrufer und schließt die Leiste sofort ab. Für einen Fehler-Handler oder einen Aufrufer, der sein `start()` nie ausgeglichen hat.
HubLoadingBarService.setset(value: number): voidvoidSetzt die Leiste auf einen exakten Wert und zeigt sie sofort, ohne die Karenzzeit abzuwarten. Für Arbeit mit echtem Prozentsatz; der Wert wird auf 0–100 begrenzt, aber nicht auf die Trickle-Obergrenze.
HubLoadingBarService.incinc(amount?: number): voidvoidBewegt die Leiste weiter und zeigt sie. Ohne Betrag entscheidet die konfigurierte Trickle-Kurve — das ist es, was ein unbekanntes Warten in Bewegung hält, ohne je anzukommen.
HubLoadingBarService.resetreset(): voidvoidBricht alles auf einmal ab — keine Abschlussanimation, keine offenen Aufrufer, nichts auf dem Bildschirm.
HubLoadingBarService.progressprogress: Signal<number>Signal<number> — the current fill, 0–100Aktuelle Füllung, 0–100. Auch beim serverseitigen Rendern gefahrlos lesbar.
HubLoadingBarService.isActiveisActive: Signal<boolean>Signal<boolean> — true while at least one caller is waitingOb noch ein Aufrufer wartet — die ehrliche Frage „lädt die Seite?“, unabhängig davon, ob die Leiste sich schon zeigt.
HubLoadingBarService.isVisibleisVisible: Signal<boolean>Signal<boolean> — true only while the bar is paintedOb die Leiste tatsächlich gezeichnet wird. Während der Karenzzeit falsch, im Abschluss-Nachlauf noch wahr.

Templates

Mach es zu deinem — 7 Template-Slots lassen dich eigenes Markup projizieren.

NameBeschreibungBeispiel
Standard-InhaltsslotAlles zwischen den Tags Projizierte wird unter der Meldung gerendert — eine Abbrechen-Aktion, eine Fortschrittsnotiz oder ein Hinweis, dass der Vorgang länger dauert als üblich.<hub-loading message="Importing rows"><button type="button">Cancel</button></hub-loading>
provideHubLoadingRegistriert anwendungsweite Standardwerte über das Token `HUB_LOADING_CONFIG` — Markenbild, bevorzugte Variante, übersetztes Label —, sodass `<hub-loading>` und `HubLoadingService` beide davon ausgehen und einzelne Aufrufstellen schlank bleiben.providers: [provideHubLoading({ variant: 'ring', size: 'lg' })]
Leiste unter der NavigationsleisteDie Platzierung, nach der die Leiste benannt ist. `position: relative` auf der Navigationsleiste ist das, was das Overlay auf sie begrenzt, und `placement="bottom"` hängt es an die Unterkante.<nav class="navbar position-relative"> <hub-loading-bar mode="overlay" placement="bottom" /> </nav>
provideHubLoadingBarRouterLässt die Leiste genau so lange laufen wie eine Navigation — auch eine, die ein Guard ablehnt oder ein Fehler beendet: die beiden Fälle, in denen eine handverdrahtete Leiste sonst hängen bleibt.providers: [provideRouter(routes), provideHubLoadingBarRouter()]
hubLoadingBarInterceptorHält die Leiste für die Lebensdauer jeder HTTP-Anfrage offen. `finalize` gleicht sie bei Erfolg, Fehler und Abbruch gleichermaßen aus.provideHttpClient(withInterceptors([hubLoadingBarInterceptor]))
withoutHubLoadingBarNimmt eine Anfrage aus dem Zähler heraus. Ein Polling auf einem Timer würde die Leiste sonst für immer offen halten, und ein Fortschrittsbalken, der nie fertig wird, ist schlimmer als keiner.this.http.get('/api/heartbeat', { context: withoutHubLoadingBar() })
provideHubLoadingBarRegistriert anwendungsweite Vorgaben der Leiste über das Token `HUB_LOADING_BAR_CONFIG` — Akzent, Tempo, Karenzzeit, Trickle-Kurve, übersetztes Label.providers: [provideHubLoadingBar({ color: 'primary', delay: 120 })]