Skip to main content

Styling

Um Einfluss auf das Styling der Viewer-Komponenten nehmen zu können, müssen SCSS-Variablen überschrieben werden.

Verwendung des Stylesheets

Der Viewer liefert ein Default-Style mit, dieses muss im Projekt referenziert werden.

Es kann dabei zwischen 3 Themes gewählt werden:

  • Dark
  • Light
  • Automatisch

Das automatische Theme wählt das Dark oder Light-Theme automatisch je nach Einstellung des Browsers/Betriebssystems aus.

Für das Einbinden existieren zwei Wege.

Import via angular.json

In der angular.json-Datei kann die SCSS-Datei im Block styles referenziert werden.

Der Block kann folgendermaßen gefunden werden: projects.<project-name>.architect.build.configurations.<development AND production>.styles.

"styles": [
"src/styles.scss", // Angular Default
"./node_modules/@levigo/jadice-web-icons/assets/icon-font.scss", // jadice Icons
"./node_modules/@levigo/webtoolkit-ng-client/assets/adaptive-theme.scss" // Default-Style
"./node_modules/@levigo/webtoolkit-ng-client/assets/dark-theme.scss" // Alternativ: Dark
"./node_modules/@levigo/webtoolkit-ng-client/assets/light-theme.scss" // Alternativ: Light
"src/assets/themes/my-theme.scss" // Projektspezifisch
]

Import via SCSS

Alternativ kann auch innerhalb der src/styles.css (Angular Default) auch ein Import durchgeführt werden:

@import "assets/my-theme";

Eigene Styles

Nachdem ein integrationsspezifisches Stylesheet (SCSS-Datei) angelegt wurde, muss dieses in dem Projekt referenziert werden. Dies erfolgt auf selbem Wege wie im ersten Absatz beschrieben.

Farben

Die Farben können über die folgenden SCSS-Variablen überschrieben werden:

$background-level-0: #FFFFFF;
$background-level-1: #DEDFE0;
$background-level-1-half-opacity: rgba(171, 186, 204, 0.5);
$background-level-2: #ADBBCD;
$background-level-3: #8D9095;
$background-level-4: #595F67;
$foreground-level-0: #000000;
$foreground-level-1: #30363F;
$foreground-level-2: #434952;
$foreground-level-2-half-opacity: rgba(48, 54, 63, 0.85);
$foreground-level-3: #5C6168;
$foreground-level-4: #131619;

$accent-level-0: #70a0ff;
$accent-level-1: #367aff;
$accent-level-1-half-opacity: rgba(54, 121, 255, 0.5);
$accent-level-2: #2D65CE;

$warn-level-0: #ffb870;
$warn-level-1: #ff9a36;

$gradient-background-level-1: #ffffff;
$gradient-background-level-2: #cbd0d2;

@import "@levigo/jadice-common-components/assets/light-theme";
@include JADICE_RIGID_THEME((

annotation-panel: (
background : $background-level-0,
foreground: $foreground-level-0,
entry-background-hover: $background-level-3,
entry-background-selected: $accent-level-1,
selection-delete-button-background: $accent-level-1,
selection-delete-button-background-hover: $accent-level-0,
selection-delete-button-foreground: $foreground-level-0,
separator: $foreground-level-2-half-opacity,
scrollbar: $foreground-level-1,
),

search-bar: (
background: $background-level-0,
foreground: $foreground-level-0
),

advanced-search-panel: (
background: $background-level-2,
foreground: $foreground-level-0,
search-bar-background: $foreground-level-4,
result-hover-background: $foreground-level-4,
result-active-background: $accent-level-1,
separator: $foreground-level-4,
progress-bar: $foreground-level-0,
checkbox: $foreground-level-4,
checkbox-active: $accent-level-1,
checkbox-hover: $background-level-0,
checkbox-hover-outline: $accent-level-1
),

bookmark-panel: (
background: $background-level-2,
foreground: $foreground-level-0,
result-hover-background: $foreground-level-4,
result-active-background: $accent-level-1,
separator: $foreground-level-4
),

search-panel: (
background: $background-level-0,
foreground: $foreground-level-0
),

line-width-editor: (
background: $background-level-1,
background-hover: $background-level-2,
foreground: $foreground-level-0
),

thumbnail-panel: (
background: $background-level-2,
foreground: $foreground-level-0,
slider-thumb: $foreground-level-0,
slider-track-background: $foreground-level-2,
slider-track-fill: $foreground-level-1
),

thumbnail-view: (
highlight: $accent-level-1,
outline: $accent-level-1-half-opacity,
label: $foreground-level-0,
active-label: $foreground-level-0
),

open-file-modal: (
dnd-border: $foreground-level-0,
dnd-hint: $background-level-0,
overlay: $background-level-0,
scrollbar-thumb: $foreground-level-0,
scrollbar-firefox-rail: $background-level-1,
button-background: $accent-level-1,
button-background-hover: $accent-level-0,
foreground: $foreground-level-0,
background: linear-gradient(to bottom, $gradient-background-level-1, $gradient-background-level-2)
),

accessible-viewer: (
background: linear-gradient(to bottom, $background-level-3, $background-level-2)
)

));

@include DEFAULT_GWT_OVERRIDES(
$viewer-background: linear-gradient(to bottom, $background-level-3, $background-level-2),
$scrollbar-knob: $foreground-level-1,
$scrollbar-knob-active: $foreground-level-0
);

html, body {
.jadice-viewer-confirm-dialog-gwt {
background: $background-level-2;
color: white;
border-radius: 5px;
}

.jadice-viewer-confirm-dialog-header-gwt {
background: transparent;
border-color: $background-level-3;
font-weight: 400;
}

.jadice-viewer-confirm-dialog-content-gwt {
background: transparent;
}

.jadice-viewer-confirm-dialog-actions-gwt > button {
background-color: $accent-level-1;
}

}

(Icon-)Fonts

Der Viewer liefert die jadice Icons als Iconfont bereits mit. Diese enthält Icons für die gängigen Operationen im Viewer wie z.B. Drehen, Zoomen und so weiter. Alternativ können auch eigene Icons, beispielsweise bei Buttons, hinterlegt werden.

Dies wird an folgendem SCSS-Snippet veranschaulicht:

@import "@levigo/jadice-web-icons/assets/icon-font.scss";

@font-face {
font-family: "Jadice Icons";
font-style: normal;
font-weight: 400;
src: url(./assets/icons/icon-style-font.woff2) format('woff2');
font-display: block; // Use FOIT text rendering strategy. While usually undesirable, it makes more sense than FOUT for icons.
}

.jadice-icon-font {
$size: 28px;
font-family: "Jadice Icons";
font-weight: normal;
font-style: normal;
font-size: $size;
height: $size !important;
width: $size !important;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
pointer-events: none;
-webkit-font-feature-settings: "liga";
-webkit-font-smoothing: antialiased;
}

Tutorial

Ein ausführliches Beispiel zum Styling finden Sie auch in unserem Getting-Started-Repository.