@northware/service-config
Das Package @northware/service-config
stellt helfende Funktionalitäten bereit, um zu kontrollieren, welche App der Northware-Suite gerade genutzt wird.
Überall wo es nötig ist, kann @northware/service-config verwendet werden, um innerhalb von Packages die aktuell genutzte App herauszufinden (z.B. Conditional-Rendering von UI-Komponenten oder API-Fetching-Filter).
Mit @northware/service-config
soll es so schnell und einfach möglich sein, die Konfigurationen der Apps zentral zu verändern.
App-Auswertung als Component-Prop
Der einfachste Weg, die aktuell genutzte App ausuwerten bzw. zu definieren, ist ihn als ein Component-Prop zu definieren und dann an Child-Komponenten weiter zu geben.
Der Vorteil hierbei ist, dass der Wert auch in Server-Komponenten nutzbar ist.
Um den Prop nicht immer wieder mit TypeScript zu defineren, sollte für den Prop der ServiceType verwendet werden, der von @northware/service-config
bereitgestellt wird.
Der Type kann dann in Komponenten verwendet werden, die direkt in die App integriert werden. An alle von der Komponente selbst verwendeten Komponenten kann der Wert des Props weitergegeben werden.
Durch die Verwendung von ServiceType
wird sichergestellt, dass der Prop der Komponente nur die vorgegebenen Werte akzeptiert.
So lässt sich eine neue App einfach über ServiceType
zu den akzeptierten Werten hinzufügen und alle anderen Werte werden zurückgewiesen.
Verwendung des Service Props als Filter für API-Calls
Komponenten, die auf Daten aus der API zugreifen, können den Service-Prop auch als Argument an Funktionen weitergeben. Die Funktionen, die die Daten der API bereitstellen können dann anhand dieses Wertes filtern.
suiteApps Array in den Meta-Navigationen
Auch der Array für die in der Meta-Navigation verlinkten Apps wird von @northware/service-config
bereitgestellt.
Die Meta-Navigationen in Mobile und Desktop-Ansichten mappen dann durch diesen Array um entsprechende Links zu präsentieren.
Über diesen zentralen Array lassen sich nun die Klassen der einzelnen App-Buttons und die Links zu den Apps steuern.