<button type="button"
class="navbar-toggler"
- (click)="isCollapsed = !isCollapsed">
+ (click)="toggleRightSidebar()">
<span i18n
class="sr-only">Toggle navigation</span>
<span class="">
</button>
<div class="collapse navbar-collapse"
- [collapse]="isCollapsed">
+ [ngClass]="{'show': rightSidebarOpen}">
<ul class="nav navbar-nav cd-navbar-utility my-2 my-md-0">
<ng-container *ngTemplateOutlet="cd_utilities"> </ng-container>
</ul>
<cd-language-selector class="cd-navbar"></cd-language-selector>
</li>
<li class="nav-item ">
- <cd-notifications class="cd-navbar"></cd-notifications>
+ <cd-notifications class="cd-navbar"
+ (click)="toggleRightSidebar()"></cd-notifications>
</li>
<li class="nav-item ">
<cd-dashboard-help class="cd-navbar"></cd-dashboard-help>
</li>
</ng-template>
-<ng-template #cd_menu >
+<ng-template #cd_menu>
<ng-container *ngIf="enabledFeature$ | async as enabledFeature">
<!-- Dashboard -->
<li routerLinkActive="active"
<ng-container i18n>Cluster</ng-container>
</a>
<ul class="list-unstyled"
- [collapse]="displayedSubMenu !== 'cluster'"
- [isAnimated]="true">
+ [ngbCollapse]="displayedSubMenu !== 'cluster'">
<li routerLinkActive="active"
class="tc_submenuitem tc_submenuitem_hosts"
*ngIf="permissions.hosts.read">
class="tc_submenuitem tc_submenuitem_modules"
*ngIf="permissions.configOpt.read">
<a i18n
- routerLink="/mgr-modules">Manager modules</a>
+ routerLink="/mgr-modules">Manager Modules</a>
</li>
<li routerLinkActive="active"
class="tc_submenuitem tc_submenuitem_log"
*ngIf="permissions.prometheus.read">
<a routerLink="/monitoring">
<ng-container i18n>Monitoring</ng-container>
- <small *ngIf="prometheusAlertService.alerts.length > 0"
- class="badge badge-danger">{{ prometheusAlertService.alerts.length }}</small>
+ <small *ngIf="prometheusAlertService.activeAlerts > 0"
+ class="badge badge-danger">{{ prometheusAlertService.activeAlerts }}</small>
</a>
</li>
</ul>
</a>
<ul class="list-unstyled"
- [collapse]="displayedSubMenu !== 'block'"
- [isAnimated]="true">
+ [ngbCollapse]="displayedSubMenu !== 'block'">
<li routerLinkActive="active"
class="tc_submenuitem tc_submenuitem_block_images"
*ngIf="permissions.rbdImage.read && enabledFeature.rbd">
*ngIf="permissions.cephfs.read && enabledFeature.cephfs">
<a i18n
class="nav-link"
- routerLink="/cephfs">Filesystems</a>
+ routerLink="/cephfs">File Systems</a>
</li>
<!-- Object Gateway -->
<ng-container i18n>Object Gateway</ng-container>
</a>
<ul class="list-unstyled"
- [collapse]="displayedSubMenu !== 'rgw'"
- [isAnimated]="true">
+ [ngbCollapse]="displayedSubMenu !== 'rgw'">
<li routerLinkActive="active"
class="tc_submenuitem tc_submenuitem_rgw_daemons">
<a i18n
});
}
- urlGenerator(section: string, release = '7'): string {
+ urlGenerator(section: string, release = '7p'): string {
const domain = `https://documentation.suse.com/ses/${release}/single-html/`;
- const domainCeph = `https://ceph.io/`;
-
const sections = {
- iscsi: `${domain}mgr/dashboard/#enabling-iscsi-management`,
- prometheus: `${domain}mgr/dashboard/#enabling-prometheus-alerting`,
- 'nfs-ganesha': `${domain}mgr/dashboard/#configuring-nfs-ganesha-in-the-dashboard`,
- 'rgw-nfs': `${domain}radosgw/nfs`,
- rgw: `${domain}mgr/dashboard/#enabling-the-object-gateway-management-frontend`,
- dashboard: `${domain}mgr/dashboard`,
- grafana: `${domain}mgr/dashboard/#enabling-the-embedding-of-grafana-dashboards`,
- orch: `${domain}mgr/orchestrator`,
- pgs: `${domainCeph}pgcalc`,
- help: `${domainCeph}help/`,
- security: `${domainCeph}security/`,
- trademarks: `${domainCeph}legal-page/trademarks/`,
- 'dashboard-landing-page-status': `${domain}mgr/dashboard/#dashboard-landing-page-status`,
- 'dashboard-landing-page-performance': `${domain}mgr/dashboard/#dashboard-landing-page-performance`,
- 'dashboard-landing-page-capacity': `${domain}mgr/dashboard/#dashboard-landing-page-capacity`
+ iscsi: `${domain}ses-admin/#dashboard-iscsi-management`,
+ prometheus: `${domain}ses-deployment/#deploy-cephadm-day2-service-monitoring`,
+ 'nfs-ganesha': `${domain}ses-admin/#ceph-nfsganesha-config`,
+ 'rgw-nfs': `${domain}ses-admin/#ceph-nfsganesha-config-service-rgw`,
+ rgw: `${domain}ses-admin/#dashboard-ogw-enabling`,
+ dashboard: `${domain}ses-admin/#dashboard-initial-configuration`,
+ grafana: `${domain}ses-deployment/#deploy-cephadm-day2-service-monitoring`,
+ orch: `${domain}ses-deployment/#deploy-cephadm-day2-orch`,
+ pgs: `${domain}ses-admin/#ceph-pools`,
+ help: `${domain}`,
+ security: `${domain}ses-security`,
+ trademarks: `${domain}`,
+ 'dashboard-landing-page-status': `${domain}ses-admin/#dashboard-widgets-status`,
+ 'dashboard-landing-page-performance': `${domain}ses-admin/#dashboard-widgets-performance`,
+ 'dashboard-landing-page-capacity': `${domain}ses-admin/#dashboard-widgets-capacity`
};
return sections[section];
return this.releaseData$
.pipe(
filter((value) => !!value),
- map((release) => this.urlGenerator(section, release)),
+ map(() => this.urlGenerator(section)),
first()
)
.subscribe(next, error);
Custom styles, third-party libraries, frameworks, design systems, ...
*/
-@import 'variables';
+@use 'variables' as vv;
@font-face {
font-family: 'WorkSansLight';
- src: url('assets/WorkSans-Light.ttf') format('truetype');
+ src: url('../../assets/WorkSans-Light.ttf') format('truetype');
}
@font-face {
font-family: 'WorkSansMedium';
- src: url('assets/WorkSans-Medium.ttf') format('truetype');
+ src: url('../../assets/WorkSans-Medium.ttf') format('truetype');
}
@font-face {
font-family: 'WorkSansRegular';
- src: url('assets/WorkSans-Regular.ttf') format('truetype');
+ src: url('../../assets/WorkSans-Regular.ttf') format('truetype');
}
/* Body */
h6 {
font-family: 'WorkSansMedium', 'Verdana', Helvetica, Arial, sans-serif;
}
+
.subheader {
font-family: 'WorkSansLight', 'Verdana', Helvetica, Arial, sans-serif;
}
/* Button */
.btn-primary,
-.btn-secondary {
- background-color: $color-primary !important;
- border-color: $color-primary !important;
+.btn-secondary,
+.btn-accent {
+ background-color: vv.$primary !important;
+ border-color: vv.$primary !important;
}
+
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-secondary:active,
.btn-secondary.active,
.open .dropdown-toggle.btn-secondary {
- background-color: lighten($color-primary, 10) !important;
- border-color: lighten($color-primary, 10) !important;
+ background-color: lighten(vv.$primary, 10) !important;
+ border-color: lighten(vv.$primary, 10) !important;
}
+
.btn-secondary:focus {
- box-shadow: 0 0 0 0.2rem rgba($color-primary, 0.5) !important;
+ box-shadow: 0 0 0 0.2rem rgba(vv.$primary, 0.5) !important;
}
+
.btn-primary:active,
.btn-primary.active,
.open .dropdown-toggle.btn-primary,
.open .dropdown-toggle.btn-secondary {
&:hover,
&:focus {
- background-color: lighten($color-primary, 10) !important;
- border-color: lighten($color-primary, 10) !important;
+ background-color: lighten(vv.$primary, 10) !important;
+ border-color: lighten(vv.$primary, 10) !important;
}
}
+
.btn-primary.disabled,
.btn-primary[disabled],
fieldset[disabled] .btn-primary,
.btn-secondary.disabled.active,
.btn-secondary[disabled].active,
fieldset[disabled] .btn-secondary.active {
- background-color: $color-primary !important;
- border-color: $color-primary !important;
+ background-color: vv.$primary !important;
+ border-color: vv.$primary !important;
}
/* Icons */
.ceph-icon {
+ margin-right: 1em !important;
+ padding: 15px !important;
background: {
- image: url('assets/SUSE_Chameleon_L_Green-pos_sRGB-250.png');
- clip: padding-box;
- size: contain;
- repeat: no-repeat;
- }
- padding: 15px;
- margin-right: 1em;
+ clip: padding-box !important;
+ image: url('../../assets/SUSE_Chameleon_L_Green-pos_sRGB-250.png') !important;
+ repeat: no-repeat !important;
+ size: contain !important;
+ };
}
/* Login */
.login-suse {
+ background-color: vv.$color-login-background;
+ color: vv.$color-soft-gray;
font-family: 'WorkSansRegular', 'Verdana', Helvetica, Arial, sans-serif;
- color: $color-soft-gray;
- background-color: $color-login-background;
- width: 100%;
margin: 0;
+ width: 100%;
header {
+ background-color: vv.$secondary;
margin-bottom: 30px;
- background-color: $color-secondary;
.row {
margin: 0;
- @media screen and (max-width: $screen-sm-max) {
+ @media screen and (max-width: vv.$screen-sm-max) {
margin-left: -15px;
}
}
.navbar-brand {
font-size: 2rem;
- line-height: 2.5rem;
height: 60px;
- padding: 15px 15px;
+ line-height: 2.5rem;
+ padding: 15px;
span {
- @media screen and (max-width: $screen-xs-max) {
+ @media screen and (max-width: vv.$screen-xs-max) {
display: none;
}
}
.form-inline {
.dropdown-toggle {
- display: block;
border: 0;
+ display: block;
padding: 21px 15px;
&:hover,
&:focus {
- color: $color-black;
- background-color: $color-primary;
+ background-color: vv.$primary;
+ color: vv.$black;
text-decoration: none;
}
- @media screen and (max-width: $screen-sm-max) {
+ @media screen and (max-width: vv.$screen-sm-max) {
margin-left: 15px;
}
}
.dropdown-menu {
- @media screen and (max-width: $screen-sm-max) {
- background-color: $color-white;
+ @media screen and (max-width: vv.$screen-sm-max) {
+ background-color: vv.$white;
}
}
}
section {
display: inline-flex;
- width: 100%;
- min-height: 100vh;
margin: -90px auto -100px;
+ min-height: 100vh;
+ width: 100%;
h1 {
- margin-bottom: 3rem;
+ color: vv.$primary;
font-size: 4rem;
- color: $color-primary;
+ margin-bottom: 3rem;
}
p {
.subheader {
display: block;
- margin-bottom: 1rem;
font-size: 1.4rem;
font-weight: bold;
+ margin-bottom: 1rem;
}
h2 {
- margin: 2.5rem 0;
font-size: 2.5rem;
+ margin: 2.5rem 0;
}
.form-group {
+ background-color: vv.$color-login-background;
border-left: 0;
- background-color: $color-login-background;
&:focus-within {
border-left: 0;
}
input {
- background-color: $color-white;
- border-color: $color-white;
- color: $body-color;
+ background-color: vv.$white;
+ border-color: vv.$white;
+ color: vv.$body-color;
font-size: 13px;
height: 2.5rem;
&:focus {
- border-color: rgba($color-primary, 0.8);
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px 2px rgba($color-primary, 0.5);
+ border-color: rgba(vv.$primary, 0.8);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px 2px rgba(vv.$primary, 0.5);
outline: 0;
}
+
+ &:-webkit-autofill {
+ -webkit-background-clip: text;
+ }
}
}
.btn-password {
- color: $body-color;
- border-left: 1px solid $body-color;
- background-color: $color-white;
+ background-color: vv.$white;
+ border-left: 1px solid vv.$body-color;
+ color: vv.$body-color;
&:hover {
- color: $color-white;
- background-color: $color-secondary;
+ background-color: vv.$secondary;
+ color: vv.$white;
}
&:focus {
- color: $body-color;
- background-color: $color-white;
- border-color: rgba($color-primary, 0.8);
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px 2px rgba($color-primary, 0.5);
+ background-color: vv.$white;
+ border-color: rgba(vv.$primary, 0.8);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px 2px rgba(vv.$primary, 0.5);
+ color: vv.$body-color;
outline: 0;
}
}
}
footer {
- margin-top: 30px;
+ border-bottom: 16px solid vv.$primary;
height: 70px;
+ margin-top: 30px;
padding-top: 23px;
- border-bottom: 16px solid $color-primary;
.footer-logo {
- width: 50px;
margin-top: -16px;
+ width: 50px;
}
.container {
padding-bottom: 10px;
}
}
+
+ a {
+ color: inherit;
+
+ &:hover {
+ color: inherit;
+ }
+ }
}
/* About */
.suse-logo {
- width: 140px;
margin-bottom: 1.5rem;
+ width: 140px;
+}
+
+.modal-header {
+ .close {
+ color: inherit !important;
+ }
}
.modal-content {
.green-background-1,
.green-background-2 {
- width: 140%;
height: 400px;
left: -20%;
position: absolute;
+ width: 140%;
}
.green-background-1 {
- background-color: $color-green-contrast-1;
+ background-color: vv.$color-green-contrast-1;
bottom: -240px;
transform: rotate(-11deg);
}
.green-background-2 {
- background-color: $color-green-contrast-2;
+ background-color: vv.$color-green-contrast-2;
bottom: -310px;
transform: rotate(-6deg);
}
// Dashboard
-
.dashboard {
- background-color: #ffffff !important;
+ background-color: vv.$white !important;
.card {
- background-color: #f5f5f5;
+ background-color: vv.$color-white-smoke !important;
}
}
@mixin suse-nav-link {
.nav-link,
a {
- background-color: #f5f5f5 !important;
+ background-color: vv.$color-white-smoke !important;
border-left: 5px solid transparent !important;
- color: $body-color !important;
+ color: vv.$body-color !important;
margin: 0 16px 0 0 !important;
padding: 8px 0 8px 21px !important;
&:hover {
background-color: transparent !important;
- border-left: 5px solid $color-primary !important;
+ border-left: 5px solid vv.$primary !important;
}
}
}
@mixin suse-nav-link-active {
- background-color: $color-primary !important;
- border-radius: 0 2px 2px 0;
- color: #ffffff !important;
+ background-color: vv.$primary !important;
+ border-radius: 0 2px 2px 0 !important;
+ color: vv.$white !important;
&:hover {
- background-color: $color-primary !important;
+ background-color: vv.$primary !important;
border-left: 5px solid transparent !important;
}
}
nav#sidebar {
- background-color: #f5f5f5 !important;
+ @include suse-nav-link;
+ background-color: vv.$color-white-smoke !important;
padding-top: 1.5rem;
.nav-item ul {
- background-color: #f5f5f5 !important;
-
@include suse-nav-link;
+ background-color: vv.$color-white-smoke !important;
a {
padding: 8px 0 8px 33px !important;
}
}
- @include suse-nav-link;
.active .nav-link {
@include suse-nav-link-active;
}
}
.nav-item.active .fa-heartbeat.health-ok {
- color: #ffffff !important;
+ color: vv.$white !important;
}
// Logo
-
.cd-navbar-top .cd-navbar-brand .navbar-brand > img {
height: 29px !important;
}
+
+// Error page
+cd-error {
+ .dashboard,
+ .text-center {
+ background-color: vv.$white !important;
+ }
+}
+
+/* Notification icons */
+.toast-message .custom-icon {
+ /* Display icons in white, regardless of their origin color. */
+ filter: brightness(0) invert(1);
+ -webkit-filter: brightness(0) invert(1);
+ -moz-filter: brightness(0) invert(1);
+ -o-filter: brightness(0) invert(1);
+}