Überschreiben einer existierenden Komponente
Neben der Möglichkeit in einem Styleguide neue Komponenten und Elemente erstellen zu können, dürfen auch bereits bestehende Komponenten überschrieben werden. Hierbei kann eine Überschreibung nur das Layout oder auch die Vorlagendefinition betreffen. Bei der Überschreibung einer Vorlagendefinition ist zu beachten, dass damit die Komponente oder das Element in allen installierten Styleguides, auch außerhalb der Abhängigkeitskette, verändert wird. Eine Überschreibung der Vorlagendefinition sollte daher vermieden werden. In diesem Tutorial wird im custom-styleguide
die Komponente framework-button
überschrieben, wobei custom-styleguide
selbst auf admin-styleguide
basiert.
Dateistruktur
Damit eine existierende Komponente überschrieben werden kann, muss die Ordner- und Dateistruktur aus dem definierenden Styleguide nachempfunden werden. In unserem Beispiel befindet sich die Komponente framework-button
im Styleguide framework-styleguide
innerhalb des component
-Ordners, dadurch ergibt sich in unserem Styleguide custom-styleguide
die folgende Ordnerstruktur:
custom-styleguide
component
framework-button
Die nachfolgenden Punkte beschreiben verschiedene Wege für die Überschreibung einer Komponente, welche jeweils unterschiedliche Dateien im soeben erstellten Ordner benötigen.
Variablenüberschreibung
In vielen Fällen reicht die Überschreibung der SCSS-Variablen einer bestehenden Komponente aus. Hierfür muss im zuvor erstellten Ordner die Datei _override.scss
erstellt werden. Die Komponente framework-button
besitzt im admin-styleguide
die SCSS-Variable $admin-framework-button-height
mit dem Standardwert von 35px
. Wir werden diesen Standardwert nun in 64px
ändern. Das Kennzeichen !default
wird auch bei einer Überschreibung beibehalten, da diese Variablen ebenfalls überschrieben werden können.
/* _override.scss */
$admin-framework-button-height: 64px !default;
In den _override.scss
-Dateien stehen keine SCSS-Variablen aus der _default.scss
der originalen Komponenten zur Verfügung.
Layoutüberschreibung
Neben der Überschreibung von SCSS-Variablen kann auch das Layout einer Komponente überschrieben werden. Hierbei kann das Layout komplett ersetzt oder erweitert werden. Es beiden Fällen muss die Datei _layout.scss
im zuvor erstellen Ordner angelegt werden.
/* _layout.scss */
/**
* Wird das Layout nur erweitert und nicht komplett überschrieben, muss das originale Layout eingebunden werden.
*/
@import "../../../admin-styleguide/component/framework-button/layout";
/**
* In beiden Fällen dürfen CSS-Selektoren mit Layouts geschrieben werden.
*/
.framework-button--standard {
border-radius: 32px;
}
Vorlagenüberschreibung
Neben dem Layout kann auch die Vorlagendefinition überschrieben werden. Hierbei muss die Datei für den Handlebars
-Code erstellt werden. In unserem Beispiel ist das framework-button.hbs
im zuvor erstellten Ordner.
<!-- framework-button.hbs -->
{{#> framework-element this }}
<!-- Der neue Code für "framework-button" -->
{{/framework-element}}