config v18 - IHK-GfI/lux-components GitHub Wiki

Konfiguration

Overview / API

Allgemein

Das LuxComponentsConfigModule wird dazu verwendet bestimmte LuxComponents-weite Einstellungen festzulegen. Diese gelten dann für die gesamte Applikation.

Name Beschreibung
import LuxComponentsConfigModule

Services

LuxComponentsConfigService

Dieser Service wird von den Components benutzt, um die Standardkonfiguration zu nutzen, sollte es keine vom Entwickler übergebene Konfiguration geben. Des Weiteren bietet er die Möglichkeit, sich zu abonnieren, und so aktualisierte Konfigurationsobjekte zu erhalten.

Dieser Service sollte dann vom Entwickler genutzt werden, wenn die Konfiguration zur Laufzeit der Applikation angepasst werden soll.

Name der Property/Funktion Typ/Rückgabewert Beschreibung
DEFAULT_CONFIG (Property) LuxComponentsConfigParameters Statisches Readonly-Objekt, welches die Standardkonfiguration beinhaltet. Wenn keine Konfiguration übergeben wird, wird diese benutzt. Wenn die übergebene Konfiguration bestimmte Werte nicht setzt, werden diese aus der DEFAULT_CONFIG geladen.
config (Property) Observable <LuxComponentsConfigParameters> Gibt ein Observable zurück, welches das aktuelle/neueste Konfigurationsobjekt beinhaltet.
currentConfig LuxComponentsConfigParameters Gibt direkt das aktuelle Konfigurationsobjekt zurück.
isLabelUppercaseForSelector(selector: string) boolean Gibt wieder, ob die Labels für bestimmte Komponenten uppercase dargestellt werden sollen und ob das auch auf die Komponente mit dem übergebenen Selektor zutrifft.
updateConfiguration(config: LuxComponentsConfigParameters) void Ersetzt die aktuelle Konfiguration mit der übergebenen. Auch hier wird bei fehlenden Werten die Standard-Konfiguration zu Rate gezogen.

Classes / Interfaces

LuxComponentsConfigParameters

Property Typ Beschreibung
generateLuxTagIds? boolean Bestimmt, ob die LuxTagIds (und dazugehörende) Warnungen generiert werden.
displayLuxConsoleLogs? boolean Bestimmt, ob die Ausgaben des LuxConsoleService in die Developer-Console des Browsers geschrieben werden.
lookupServiceUrl? string Bestimmt den Basepfad des Lookup-Services für die LookupComponents.
labelConfiguration? Object Bestimmt, ob die Labels für LuxButtons, LuxLinks, LuxMenuItems, LuxStepper, LuxSideNavItem und LuxTabs immer Uppercase dargestellt werden. Siehe labelConfiguration.
cardExpansionAnimationActive? boolean Flag, um die Ausklappanimationen von LuxCards zu aktivieren bzw. zu deaktivieren.
rippleConfiguration? Object Bestimmt die globalen Einstellungen für die Animationen der LuxRipple-Direktiven. Siehe rippleConfiguration.
iconBasePath? string Bestimmt den Basepfad der LUX-Icons.
tenantLogoLookupServiceUrl string Bestimmt den Basepfad der Tenantlogos.
appFooter Object Einstellungen des Footers.

appFooter

Property Typ Beschreibung
fixedDesktop? boolean Gibt an, ob der Footer in der Desktopansicht fixiert seien soll.
fixedMobile? boolean Gibt an, ob der Footer in der mobilen Ansicht fixiert seien soll.

Wichtig!

Wenn der Footer nicht fixiert ist, kann es auf Seiten mit wenig Inhalt dazu kommen, dass der Footer hoch rutscht (siehe Abbildung unten). D.h. alle Seiten sollten so gebaut werden, dass der Footer auf Seiten mit wenig Inhalt trotzdem am unteren Rand angezeigt wird.

Verrutschter App-Footer

buttonConfiguration

Property Typ Beschreibung
throttleTimeMs? number Verhindert, dass ein Button mehrfach hinter einander ausgelöst wird.

rippleConfiguration

Property Typ Beschreibung
enterDuration number Definiert die Dauer der Eingangsanimationen.
exitDuration number Definiert die Dauer der Ausgangsanimationen.
color? string Enthält die Farbe (beliebiger CSS-gültiger Wert) der Ripples.
centered? boolean Bestimmt ob die Animationen vom Zentrum der Ripple-Targets ausgehen oder vom Mausklick.
radius? number Bestimmt den Radius der Animationen. Wenn 0, werden die Begrenzungen der Ripple-Targets genommen.
disabled? boolean Deaktiviert die LuxRipples.
unbounded? boolean Bestimmt ob die Animationen über die Ripple-Targets hinausgehen oder nicht.

labelConfiguration

Property Typ Beschreibung
allUppercase boolean Bestimmt, ob die Labels für LuxButtons, LuxLinks, LuxMenuItems, LuxStepper, LuxSideNavItem und LuxTabs immer Uppercase dargestellt werden.
notAppliedTo string[] Definiert ob alle o.g. Komponenten ihre Labels uppercase darstellen. Hier können Ausnahmen eingetragen werden. Dazu einfach den Selektor der Komponente hier eintragen. (z.B. 'lux-link')

viewConfiguration

Property Typ Beschreibung
centeredView boolean Bestimmt, ob der Inhalt App-Headers-Ac und des App-Footers begrenzt und zentriert angezeigt wird, default = false.
centeredWidth string Definiert die Max-Width (default = 1500px) des Inhaltes des App-Header-Ac und des App-Footers, falls centeredView = true gilt.

tenantLogoLookupServiceUrl

Logos mit der App ausliefern

In der Konfiguration in der app.module.ts muss der Logo-Ordner eingetragen werden:

const myConfiguration: LuxComponentsConfigParameters = {
  ...
  tenantLogoLookupServiceUrl: '/assets/tenant-logos/',
  ...
};

Die Logos müssen in den src/assets/tenant-logos-Ordner kopiert und mit der App ausgeliefert werden.

Logos über ein CDN laden

In der Konfiguration in der app.module.ts muss der Logo-Ordner eingetragen werden:

const myConfiguration: LuxComponentsConfigParameters = {
  ...
  tenantLogoLookupServiceUrl: 'https://[my-domain].de/tenant-logos/',
  ...
};

D.h. die Logos müssen nicht mit der App ausgeliefert werden. Sie werden direkt vom CDN-Server geladen.

iconBasePath

Icons mit der App ausliefern

Damit die Icons mit der App ausgeliefert werden können, müssen folgende Einstellungen vorgenommen werden.

Abhängigkeit in der package.json hinzufügen:

"dependencies": {
  "@ihk-gfi/lux-components-icons-and-fonts": "x.x.x",
}

Die assets-Abschnitte in der angular.json ergänzen:

"assets": [
  ...
  {
    "glob": "**/*",
    "input": "./node_modules/@ihk-gfi/lux-components-icons-and-fonts/assets/icons/",
    "output": "./assets/icons"
  },
  {
    "glob": "**/*",
    "input": "./node_modules/@ihk-gfi/lux-components-icons-and-fonts/assets/logos/",
    "output": "./assets/logos"
  },
  {
    "glob": "**/*",
    "input": "./node_modules/@ihk-gfi/lux-components-icons-and-fonts/assets/fonts/",
    "output": "./assets/fonts"
  },
  ...
]

Den foldenden Code in der styles.scss ergänzen:

@import '@ihk-gfi/lux-components-theme/src/base/luxfonts';

$basepath: '/';

@include web-fonts($basepath);
Icons über ein CDN laden

Damit die Icons über ein CDN geladen werden können, müssen folgende Einstellungen vorgenommen werden.

Abhängigkeit in der package.json hinzufügen, falls noch nicht vorhanden:

"dependencies": {
  "@ihk-gfi/lux-components-icons-and-fonts": "x.x.x",
}

Änderungen in den assets-Abschnitten in der angular.json:

Die folgenden Einträge können gelöscht werden:

"assets": [
  ...
  {
    "glob": "**/*",
    "input": "./node_modules/@ihk-gfi/lux-components-icons-and-fonts/assets/icons/",
    "output": "./assets/icons"
  },
  {
    "glob": "**/*",
    "input": "./node_modules/@ihk-gfi/lux-components-icons-and-fonts/assets/logos/",
    "output": "./assets/logos"
  },
  {
    "glob": "**/*",
    "input": "./node_modules/@ihk-gfi/lux-components-icons-and-fonts/assets/fonts/",
    "output": "./assets/fonts"
  },
  ...
]

Der folgende Abschnitt muss ergänzt werden:

"assets": [
  ...
  {
    "glob": "lux-icons.json",
    "input": "./node_modules/@ihk-gfi/lux-components-icons-and-fonts/assets/icons/",
    "output": "./assets/icons"
  },
  ...
]

Die Konfiguration in der app.module.ts muss wie folgt angepasst werden:

const myConfiguration: LuxComponentsConfigParameters = {
  ...
  iconBasePath: 'https://[my-domain].de/lux-components/icons-and-fonts/v1.8.0/',
  ...
};

Derselbe Pfad muss in der styles.scss eingesetzt werden:

@import '@ihk-gfi/lux-components-theme/src/base/luxfonts';

$basepath: 'https://[my-domain].de/lux-components/icons-and-fonts/v1.8.0/';

@include web-fonts($basepath);

D.h. die Icons and Fonts müssen nicht mit der App ausgeliefert werden. Sie werden direkt vom CDN-Server geladen.

Im CDN müssen die Icons in den Unterordner assets angelegt werden. Z.B. https://[my-domain].de/lux-components/icons-and-fonts/v1.8.0/assets/icons/Interface-Essentials/Validation/interface-validation-check-circle--checkmark-addition-circle-success-check-validation-add-form.svg

Wichtig! Falls eine CSP (Content Security Policy) den Zugriff auf Icon-Ressourcen einschränkt, muss diese um die CDN-Url (z.B. https://[my-domain].de ) erweitert werden. Z.B. in Spring-Boot-Projekten kann die CSP (siehe http - security - csp - connect-src) über die Konfigurationsdateien application.yml, application-dev.yml,... festgelegt werden.

Beispiele

1. Config

In derapp.module.ts-Datei muss das LuxComponentsConfigModule importiert und dessen forRoot-Methode aufgerufen werden. Diese Methode erwartet eine Konfiguration als Übergabeparameter.

Ts

const myConfiguration: LuxComponentsConfigParameters = {
  generateLuxTagIds: environment.generateLuxTagIds,
  displayLuxConsoleLogs: false,
  lookupServiceUrl: "/lookup/",
  labelConfiguration: {
    allUppercase: true,
    notAppliedTo: ["lux-menu-item", "lux-side-nav-item"],
  },
  cardExpansionAnimationActive: true,
  viewConfiguration: {
    centerdView: true,
    centeredWidth: '1000px',
  }
};

@NgModule({
  declarations: [
    // ...
    AppComponent,
    // ...
  ],
  imports: [
    // ...
    // Wenn keine Konfiguration mitgegeben wird, wird eine Standardkonfiguration verwendet (siehe LuxComponentsConfigService).
    LuxComponentsConfigModule.forRoot(myConfiguration),
    // ...
  ],
  providers: [
    // ...
  ],
  bootstrap: [AppComponent],
})
export class AppModule {}
⚠️ **GitHub.com Fallback** ⚠️