]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: SCSS: Replaced usage of baseclass with specific
authorEnno Gotthold <egotthold@suse.de>
Tue, 4 Aug 2020 14:58:38 +0000 (16:58 +0200)
committerEnno Gotthold <egotthold@suse.de>
Mon, 10 Aug 2020 11:59:55 +0000 (13:59 +0200)
The SCSS class cd-col-form-label is the specific and correct class to use. Previously sometimes the class col-form-label was used.

Fixes: https://tracker.ceph.com/issues/46382
Signed-off-by: Enno Gotthold <egotthold@suse.de>
33 files changed:
src/pybind/mgr/dashboard/frontend/src/app/ceph/block/rbd-trash-move-modal/rbd-trash-move-modal.component.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/cephfs/cephfs-directories/cephfs-directories.component.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/logs/logs.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/logs/logs.component.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/mgr-modules/mgr-module-form/mgr-module-form.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-list/osd-list.component.ts
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-recv-speed-modal/osd-recv-speed-modal.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/cluster/osd/osd-reweight-modal/osd-reweight-modal.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/info-card/info-card-popover.scss
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/info-card/info-card.component.html
src/pybind/mgr/dashboard/frontend/src/app/ceph/dashboard/info-card/info-card.component.scss
src/pybind/mgr/dashboard/frontend/src/app/core/auth/login-password-form/login-password-form.component.scss
src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.scss
src/pybind/mgr/dashboard/frontend/src/app/core/auth/role-details/role-details.component.scss
src/pybind/mgr/dashboard/frontend/src/app/core/navigation/navigation/navigation.component.scss
src/pybind/mgr/dashboard/frontend/src/app/shared/components/config-option/config-option.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/grafana/grafana.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/notifications-sidebar/notifications-sidebar.component.scss
src/pybind/mgr/dashboard/frontend/src/app/shared/components/refresh-selector/refresh-selector.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/select/select.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/select/select.component.scss
src/pybind/mgr/dashboard/frontend/src/app/shared/components/usage-bar/usage-bar.component.scss
src/pybind/mgr/dashboard/frontend/src/app/shared/datatable/table/table.component.scss
src/pybind/mgr/dashboard/frontend/src/styles.scss
src/pybind/mgr/dashboard/frontend/src/styles/_chart-tooltip.scss
src/pybind/mgr/dashboard/frontend/src/styles/bootstrap-extends.scss
src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_basics.scss
src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_buttons.scss
src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_forms.scss
src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_grid.scss
src/pybind/mgr/dashboard/frontend/src/styles/ceph-custom/_toast.scss
src/pybind/mgr/dashboard/frontend/src/styles/defaults/_bootstrap-defaults.scss
src/pybind/mgr/dashboard/frontend/src/styles/defaults/_mixins.scss

index f0e49476b76f5ca8f0c1b5a50e2815f722e7f84f..404cccdca50f96c3fde294e892b67a3727aa650f 100644 (file)
 <ng-template #logFiltersTpl>
   <div class="form-inline">
     <div class="form-group">
-      <label class="col-form-label"
+      <label for="logs-priority"
              i18n>Priority:</label>
-      <select class="form-control custom-select"
+      <select id="logs-priority"
+              class="form-control custom-select"
               [(ngModel)]="priority"
               (ngModelChange)="filterLogs()">
         <option *ngFor="let prio of prioritys"
@@ -62,7 +63,7 @@
     </div>
 
     <div class="form-group">
-      <label class="col-form-label"
+      <label for="logs-keyword"
              i18n>Keyword:</label>
       <div class="input-group">
         <div class="input-group-prepend">
@@ -72,6 +73,7 @@
         </div>
 
         <input class="form-control"
+               id="logs-keyword"
                type="text"
                [(ngModel)]="search"
                (keyup)="filterLogs()">
     </div>
 
     <div class="form-group">
-      <label class="col-form-label"
+      <label for="logs-date"
              i18n>Date:</label>
       <div class="input-group">
         <input class="form-control"
+               id="logs-date"
                placeholder="YYYY-MM-DD"
                ngbDatepicker
                #d="ngbDatepicker"
     </div>
 
     <div class="form-group">
-      <label class="col-form-label"
-             i18n>Time range:</label>
+      <label i18n>Time range:</label>
       <ngb-timepicker [spinners]="false"
                       [(ngModel)]="startTime"
                       (ngModelChange)="filterLogs()"></ngb-timepicker>
 
-      <span class="middle">&nbsp;&mdash;&nbsp;</span>
+      <span>&nbsp;&mdash;&nbsp;</span>
 
       <ngb-timepicker [spinners]="false"
                       [(ngModel)]="endTime"
index dc9a04960204305bda3f68efdbfba21e4208d1fb..a12196c2f198aa9dfb61ecd886dc49822aab038e 100644 (file)
@@ -42,7 +42,3 @@ p {
 ::ng-deep ngb-timepicker input.ngb-tp-input {
   width: 3.5rem !important;
 }
-
-.middle {
-  padding-top: 7px;
-}
index aef2f59679f022342800fcc0e91640d84a971933..de235b58b6d3bb1ad12c1c3a368ad9002de050ca 100644 (file)
@@ -12,7 +12,7 @@
              *ngFor="let moduleOption of moduleOptions | keyvalue">
 
           <!-- Field label -->
-          <label class="col-form-label col-sm-5"
+          <label class="cd-col-form-label"
                  for="{{ moduleOption.value.name }}">
             {{ moduleOption.value.name }}
             <cd-helper *ngIf="moduleOption.value.long_desc || moduleOption.value.desc">
@@ -22,7 +22,7 @@
 
           <!-- Field control -->
           <!-- bool -->
-          <div class="col-sm-7"
+          <div class="cd-col-form-input"
                *ngIf="moduleOption.value.type === 'bool'">
             <div class="custom-control custom-checkbox">
               <input id="{{ moduleOption.value.name }}"
@@ -35,7 +35,7 @@
           </div>
 
           <!-- addr|str|uuid -->
-          <div class="col-sm-7"
+          <div class="cd-col-form-input"
                *ngIf="['addr', 'str', 'uuid'].includes(moduleOption.value.type)">
             <input id="{{ moduleOption.value.name }}"
                    class="form-control"
@@ -60,7 +60,7 @@
           </div>
 
           <!-- uint|int|size|secs -->
-          <div class="col-sm-7"
+          <div class="cd-col-form-input"
                *ngIf="['uint', 'int', 'size', 'secs'].includes(moduleOption.value.type)">
             <input id="{{ moduleOption.value.name }}"
                    class="form-control"
@@ -83,7 +83,7 @@
           </div>
 
           <!-- float -->
-          <div class="col-sm-7"
+          <div class="cd-col-form-input"
                *ngIf="moduleOption.value.type === 'float'">
             <input id="{{ moduleOption.value.name }}"
                    class="form-control"
index af298a9e5b16827ef97d20c69045ae6e1fa8e3e2..8fc15333ae9f4312d95cbf10094e2fc81f38b711 100644 (file)
@@ -542,6 +542,6 @@ export class OsdListComponent extends ListWithDetails implements OnInit {
   }
 
   configurePgScrubAction() {
-    this.bsModalRef = this.modalService.show(OsdPgScrubModalComponent, { size: 'lg' });
+    this.bsModalRef = this.modalService.show(OsdPgScrubModalComponent, undefined, { size: 'lg' });
   }
 }
index 0bc4fef593433879aa48644e6b70c573761a93fc..726159778a0a2a5158f347c650b4da9ec590cba4 100755 (executable)
@@ -9,10 +9,10 @@
       <div class="modal-body">
         <!-- Priority -->
         <div class="form-group row">
-          <label class="col-form-label col-sm-6 required"
+          <label class="cd-col-form-label required"
                  for="priority"
                  i18n>Priority</label>
-          <div class="col-sm-6">
+          <div class="cd-col-form-input">
             <select class="form-control custom-select"
                     formControlName="priority"
                     id="priority"
@@ -30,7 +30,7 @@
 
         <!-- Customize priority -->
         <div class="form-group row">
-          <div class="offset-sm-6 col-sm-6">
+          <div class="cd-col-form-offset">
             <div class="custom-control custom-checkbox">
               <input formControlName="customizePriority"
                      class="custom-control-input"
         <!-- Priority values -->
         <div class="form-group row"
              *ngFor="let attr of priorityAttrs | keyvalue">
-          <label class="col-form-label col-sm-6"
+          <label class="cd-col-form-label"
                  [for]="attr.key">
             <span [ngClass]="{'required': osdRecvSpeedForm.getValue('customizePriority')}">
               {{ attr.value.text }}
             </span>
             <cd-helper *ngIf="attr.value.desc">{{ attr.value.desc }}</cd-helper>
           </label>
-          <div class="col-sm-6">
+          <div class="cd-col-form-input">
             <input class="form-control"
                    type="number"
                    [id]="attr.key"
index 9e67bbb6e1be28a17cfdd026badfd336c65a83a7..34b47b30836090837a407b556488ed1eaa2260fa 100644 (file)
@@ -7,8 +7,8 @@
       <div class="modal-body">
         <div class="row">
           <label for="weight"
-                 class="col-sm-2 col-form-label">Weight</label>
-          <div class="col-sm-10">
+                 class="cd-col-form-label">Weight</label>
+          <div class="cd-col-form-input">
             <input id="weight"
                    class="form-control"
                    type="number"
index 4680dafe4026d44006b569c7cfd8f8b97dbb223f..004400d97e835e724935f6af39682e5f1c94da53 100644 (file)
 }
 
 .info-card-content-clickable {
-  border: 1px solid bd.$color-shade-gray;
+  border: 1px solid bd.$gray-200;
   border-radius: 3px;
   cursor: pointer;
   padding: 7px;
 }
 
 .info-card-content-clickable:hover {
-  background-color: bd.$color-light-shade-gray;
-  border-color: bd.$color-light-gray;
+  background-color: bd.$gray-200;
+  border-color: bd.$gray-400;
 }
index 526b3e9d74e961d05cfcd446962c3e6c9da6156b..2f12d51280dcae433b6b75ffeeaee836c895aeaf 100644 (file)
@@ -1,4 +1,4 @@
-<div class="card"
+<div class="card shadow-sm"
      [ngClass]="cardClass">
   <div class="card-body d-flex align-items-center justify-content-center">
     <h5 class="card-title m-4">
index bc83d8b2865ff6885a80f9f29c668c7cc35a17b6..3d78d0bb5609fbb8f38b1c922581c4e833c29f3d 100644 (file)
@@ -15,7 +15,6 @@ $card-font-max-size: 21px;
   );
   border: 0.5px solid bd.$gray-300;
   border-radius: 3px;
-  box-shadow: 0 1px 1px rgba(3, 3, 3, 0.175);
   height: 100%;
 
   .card-body {
index 27d1a024e9c18a335f60c2339d67d1c151fa20f3..4b7dbed62fba272b881dd3bb6a9b72669080cbdb 100755 (executable)
@@ -1 +1,27 @@
 @use './src/styles/defaults/bootstrap-defaults' as bd;
+
+::ng-deep cd-login-password-form {
+  h4 {
+    margin: 0 0 30px;
+  }
+
+  .btn-password,
+  .btn-password:focus,
+  .form-control,
+  .form-control:focus {
+    background-color: bd.$gray-800;
+    color: bd.$white;
+  }
+
+  .form-control::placeholder {
+    color: bd.$gray-500;
+  }
+
+  .btn-password:focus {
+    outline-color: bd.$primary;
+  }
+
+  button.btn:not(:first-child) {
+    margin-left: 5px;
+  }
+}
index bdf354352d2514ced4ec96e2dcc2df44167c33c1..486b1785072f74dfa7ddebf9726afed8fa7e08a2 100644 (file)
@@ -1,19 +1,17 @@
-@use "sass:map";
+@use 'sass:map';
 @use './src/styles/defaults/bootstrap-defaults' as bd;
 
+$dark-secondary: darken(bd.$secondary, 4%);
+
 ::ng-deep cd-login {
   .form-group {
-    background-color: bd.$color-password-toggle-bg;
-    border-left: 4px solid bd.$color-solid-white;
+    background-color: $dark-secondary;
+    border-left: 4px solid bd.$white;
     height: auto;
     margin-bottom: 2rem;
 
     &:focus-within {
-      border-left: 4px solid map.get(bd.$theme-colors, "accent");
-    }
-
-    .invalid-feedback {
-      display: inline;
+      border-left: 4px solid map.get(bd.$theme-colors, 'accent');
     }
   }
 
   .btn-password:focus,
   .form-control,
   .form-control:focus {
-    background-color: bd.$color-password-toggle-bg;
+    background-color: $dark-secondary;
     border: 0;
     box-shadow: none;
-    color: bd.$color-password-toggle-text;
+    color: bd.$body-color-bright;
     filter: none;
     outline: none;
   }
 
   .placeholder {
-    color: bd.$color-password-toggle-placeholder-text;
+    color: bd.$gray-600;
   }
 
   .btn-password:focus {
-    outline-color: bd.$color-password-toggle-focus;
+    outline-color: bd.$primary;
   }
 }
 
 // This will override the colors applied by chrome
 @keyframes autofill {
   to {
-    background-color: bd.$color-password-toggle-bg;
-    color: bd.$color-password-toggle-text;
+    background-color: $dark-secondary;
+    color: bd.$body-color-bright;
   }
 }
 
@@ -50,7 +48,7 @@ input:-webkit-autofill {
   animation-fill-mode: both;
   animation-name: autofill;
   border-radius: 0;
-  box-shadow: 0 0 0 1000px bd.$color-password-toggle-bg inset;
-  -webkit-text-fill-color: bd.$color-password-toggle-text;
+  box-shadow: 0 0 0 1000px $dark-secondary inset;
+  -webkit-text-fill-color: bd.$body-color-bright;
   transition-property: none;
 }
index 8604f68ff4737c9edd5bdf255b09f7430e611395..0b5d5568cd0b7517b6f5ed9d5a5ff71950199c2f 100644 (file)
@@ -6,8 +6,8 @@
 
 ::ng-deep .cd-navbar-top {
   .cd-navbar-brand {
-    background: bd.$color-navbar-bg;
-    border-top: 4px solid bd.$color-nav-top-bar;
+    background: bd.$secondary;
+    border-top: 4px solid bd.$primary;
 
     &.isPwdDisplayed {
       top: bd.$top-notification-height;
@@ -15,7 +15,7 @@
 
     .navbar-brand,
     .navbar-brand:hover {
-      color: bd.$color-navbar-brand;
+      color: bd.$gray-200;
       height: auto;
       padding: 0;
     }
@@ -33,7 +33,7 @@
       }
 
       .fa-navicon {
-        color: bd.$color-nav-toggle-bar;
+        color: bd.$gray-200;
       }
     }
 
@@ -42,8 +42,8 @@
     }
 
     .cd-navbar-utility > .active > a {
-      background-color: bd.$color-nav-links-hover;
-      color: bd.$color-nav-links;
+      background-color: bd.$primary;
+      color: bd.$gray-200;
     }
 
     .cd-navbar-utility > li > .open > a,
     .cd-navbar-utility > li > .open > a:hover {
       background-color: transparent;
       border-color: transparent;
-      color: bd.$color-nav-links;
+      color: bd.$gray-200;
     }
   }
 
   .navbar-nav > li > .cd-navbar > [ngbDropdown] > a,
   .navbar-nav > li > .cd-navbar > a,
   .navbar-nav > li > a {
-    color: bd.$color-nav-links;
+    color: bd.$gray-200;
     display: block;
     line-height: 1;
     padding: 13.5px 18px !important;
@@ -68,7 +68,7 @@
 
   .navbar-nav .nav-link,
   .navbar-nav .nav-link:hover {
-    color: bd.$color-nav-links;
+    color: bd.$gray-200;
   }
 
   .navbar-nav > li > .cd-navbar > [ngbDropdown] > a:hover,
@@ -76,7 +76,7 @@
   .navbar-nav > li > .cd-navbar > a:hover,
   .navbar-nav > li > a:hover,
   .navbar-nav > li:hover {
-    background-color: bd.$color-nav-links-hover;
+    background-color: bd.$primary;
   }
 
   .navbar-nav > .open > .cd-navbar > [ngbDropdown] > a,
@@ -90,7 +90,7 @@
   .navbar-nav > .open > a:hover {
     background-color: transparent;
     border-color: transparent;
-    color: bd.$color-nav-links;
+    color: bd.$gray-200;
   }
 
   @media (min-width: bd.$screen-md-min) {
       }
 
       .open .dropdown-menu {
-        background-color: bd.$color-nav-open-bg;
+        background-color: bd.$primary;
         border: 0;
         padding-bottom: 0;
         padding-top: 0;
       }
 
       .open .dropdown-menu > li > a {
-        color: bd.$color-nav-links;
+        color: bd.$gray-200;
         padding: 5px 15px 5px 35px;
       }
 
       .open .dropdown-menu > .active > a {
-        background-color: bd.$color-nav-active-link-bg;
+        background-color: bd.$primary;
       }
     }
 
     .navbar-nav > li > a:hover {
-      background-color: bd.$color-nav-active-link-bg;
+      background-color: bd.$primary;
     }
   }
 }
@@ -143,9 +143,9 @@ $sidebar-width: 200px;
 .cd-navbar-primary .active > a,
 .cd-navbar-primary > .active > a:focus,
 .cd-navbar-primary > .active > a:hover {
-  background-color: bd.$color-nav-links-hover !important;
+  background-color: bd.$primary !important;
   border: 0 !important;
-  color: bd.$color-nav-links !important;
+  color: bd.$gray-200 !important;
 }
 
 .wrapper {
@@ -153,7 +153,7 @@ $sidebar-width: 200px;
   width: 100%;
 
   #sidebar {
-    background: bd.$color-navbar-bg;
+    background: bd.$secondary;
     bottom: 0;
     color: bd.$white;
     left: 0;
@@ -189,7 +189,7 @@ $sidebar-width: 200px;
         text-decoration: none;
 
         &:hover {
-          background: bd.$color-primary;
+          background: bd.$primary;
           color: bd.$white;
         }
 
@@ -224,7 +224,7 @@ $sidebar-width: 200px;
   }
 
   ul ul a {
-    background: lighten(bd.$color-navbar-bg, 10);
+    background: lighten(bd.$secondary, 10);
     font-size: 0.9em !important;
     padding-left: 40px !important;
   }
index 0d18853601e5f1ab6ec89bee45f3c30fa094a33c..0b0f87957a93ef4025c56ecf48842817aab38400 100644 (file)
@@ -2,7 +2,7 @@
   <div *ngFor="let option of options; let last = last">
     <div class="form-group row pt-2"
          *ngIf="option.type === 'bool'">
-      <label class="col-form-label col-6"
+      <label class="cd-col-form-label"
              [for]="option.name">
         <b>{{ option.text }}</b>
         <br>
@@ -13,7 +13,7 @@
         </span>
       </label>
 
-      <div class="col-6">
+      <div class="cd-col-form-input">
         <div class="custom-control custom-checkbox">
           <input class="custom-control-input"
                  type="checkbox"
@@ -27,7 +27,7 @@
 
     <div class="form-group row pt-2"
          *ngIf="option.type !== 'bool'">
-      <label class="col-6 col-form-label"
+      <label class="cd-col-form-label"
              [for]="option.name">{{ option.text }}
         <br>
         <span class="text-muted">
@@ -36,7 +36,7 @@
             {{ option.long_desc }}</cd-helper>
         </span>
       </label>
-      <div class="col-6">
+      <div class="cd-col-form-input">
         <div class="input-group">
           <input class="form-control"
                  [type]="option.additionalTypeInfo.inputType"
index d6ac94af42aa46bfde559bf338185de903c374e5..6968a1fd488adc37444a7fa1aaa85e7c2ab3b48b 100644 (file)
 
 <ng-container *ngIf="grafanaExist && dashboardExist">
   <div class="row">
-    <div class="col-12">
+    <div class="col">
       <div class="form-inline timepicker">
         <label for="timepicker"
-               class="ml-1 my-1 col-form-label"
+               class="ml-1 my-1"
                i18n>Grafana Time Picker</label>
 
         <select id="timepicker"
@@ -45,7 +45,7 @@
   </div>
 
   <div class="row">
-    <div class="col-12">
+    <div class="col">
       <div class="grafana-container">
         <iframe #iframe
                 id="iframe"
index 3d34340a6af8ed3bbc754039b4d8e74943d0db7b..fb7f8ef3a34d31f49c86c27129a4ed5fb95c7e53 100644 (file)
@@ -27,8 +27,8 @@ ngx-simplebar {
 }
 
 .separator {
-  background-color: bd.$color-popover-seperator-bg;
-  color: bd.$color-popover-seperator-text;
+  background-color: bd.$gray-200;
+  color: bd.$gray-600;
   font-size: 1rem;
   padding: 5px 12px;
 }
index e0a60af896a922cd2174d86603e40557be550840..c4a5c38d672a0b09f91ba8d4358b718401deee6c 100644 (file)
@@ -1,7 +1,7 @@
 <div class="container-fluid">
   <div class="row">
-    <div class="col-12">
-      <div class="float-right d-inline-flex">
+    <div class="col d-flex justify-content-end">
+      <form class="form-inline">
         <label for="refreshInterval"
                class="col-form-label my-0 mx-2"
                i18n>Refresh</label>
@@ -13,7 +13,7 @@
           <option *ngFor="let key of intervalKeys"
                   [value]="intervalList[key]">{{ key }}</option>
         </select>
-      </div>
+      </form>
     </div>
   </div>
 </div>
index 955f4f4e0bdcaec1d50981b3e5c5222128a4cbc2..190944311bed978827b41cf838c9e9d6143dfc84 100644 (file)
@@ -11,7 +11,7 @@
              (keyup)="$event.keyCode == 13 ? selectOption() : updateFilter()"
              class="form-control text-center" />
       <ng-container *ngFor="let error of Object.keys(messages.customValidations)">
-        <span class="invalid-feedback text-center"
+        <span class="invalid-feedback text-center d-block"
               *ngIf="form.showError('filter', formDir) && filter.hasError(error)">
           {{ messages.customValidations[error] }}
         </span>
index 6adfb0e3e1130e6c4ade0abe513ebafd0c9a24e1..252b44cd6cb9090fe6a5f1c8f3adc8b62fe6cd15 100644 (file)
@@ -1,13 +1,13 @@
 @use './src/styles/defaults/bootstrap-defaults' as bd;
 
 .select-menu-item {
-  border-bottom: 1px solid bd.$color-transparent;
+  border-bottom: 1px solid bd.$datatable-divider-color;
   cursor: pointer;
   display: block;
   font-size: 1rem;
 
   &:hover {
-    background-color: bd.$color-whitesmoke-gray;
+    background-color: bd.$gray-200;
   }
 }
 
index 735667d5dd41030c38ab66136dde89fbca0afe93..e0cd3e55b0d18e786e1d510a9f7e9744789a8d9c 100644 (file)
@@ -5,7 +5,7 @@
 }
 
 .bg-freespace {
-  background-color: bd.$gray-500 !important;
+  background-color: bd.$gray-400 !important;
 }
 
 .progress {
index e102a91872e5a53e36cee119ea49b8c9a18f0b57..fa954ad5de26058bfc396b957c3e127885093bd1 100644 (file)
@@ -12,7 +12,7 @@
   margin-bottom: 25px;
 
   .separator {
-    border-left: 1px solid bd.$color-table-seperator-border;
+    border-left: 1px solid bd.$datatable-divider-color;
     display: inline-block;
     height: 30px;
     margin-left: 5px;
@@ -21,7 +21,7 @@
   }
 
   .widget-toolbar {
-    border-left: 1px solid bd.$color-table-seperator-border;
+    border-left: 1px solid bd.$datatable-divider-color;
     float: right;
     padding: 0 8px;
 
@@ -37,8 +37,8 @@
 }
 
 .dataTables_header {
-  background-color: bd.$color-table-header-bg;
-  border: 1px solid bd.$color-table-header-border;
+  background-color: bd.$gray-100;
+  border: 1px solid bd.$gray-400;
   border-bottom: 0;
   padding: 5px;
   position: relative;
@@ -48,7 +48,7 @@
   }
 
   ::ng-deep .table-filters {
-    border-left: 1px solid bd.$color-table-seperator-border;
+    border-left: 1px solid bd.$datatable-divider-color;
     float: right;
     padding-left: 8px;
   }
@@ -62,7 +62,7 @@
   }
 
   .input-group {
-    border-left: 1px solid bd.$color-table-input-border;
+    border-left: 1px solid bd.$datatable-divider-color;
     float: right;
     max-width: 250px;
     padding-left: 8px;
@@ -87,7 +87,7 @@
 }
 
 ::ng-deep .cd-datatable {
-  border: 1px solid bd.$color-table-header-border;
+  border: 1px solid bd.$gray-400;
   margin-bottom: 0;
   max-width: none !important;
 
     width: 100%;
 
     .container {
-      background-color: bd.$color-table-active-row;
+      background-color: bd.$primary;
 
       .bar {
-        background-color: bd.$color-table-active-row;
+        background-color: bd.$primary;
         height: 100%;
         left: 0;
         overflow: hidden;
 
       .bar::before {
         animation: progress-loading 3s linear infinite;
-        background-color: bd.$color-table-progress-bar-active;
+        background-color: bd.$primary;
         content: '';
         display: block;
         height: 100%;
 
   .datatable-header {
     background-clip: padding-box;
-    background-color: bd.$color-table-datatable-header;
-    background-image: linear-gradient(
-      to bottom,
-      bd.$color-table-gradient-1 0,
-      bd.$color-table-gradient-2 100%
-    );
+    background-color: bd.$gray-100;
+    background-image: linear-gradient(to bottom, bd.$gray-100 0, bd.$gray-200 100%);
     background-repeat: repeat-x;
     filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffededed', GradientType=0);
 
     .sort-asc,
     .sort-desc {
-      color: bd.$color-table-sort;
+      color: bd.$primary;
     }
 
     .datatable-header-cell {
     margin-bottom: -6px;
 
     .empty-row {
-      background-color: bd.$color-table-empty-row;
+      background-color: lighten(bd.$primary, 45%);
       font-style: italic;
       font-weight: bold;
       padding-bottom: 5px;
 
     .datatable-body-row {
       &.clickable:hover .datatable-row-group {
-        background-color: bd.$color-table-hover-row;
+        background-color: lighten(bd.$primary, 45%);
         transition-duration: 0.3s;
         transition-property: background;
         transition-timing-function: linear;
       }
 
       &.datatable-row-even {
-        background-color: bd.$color-table-even-row-bg;
+        background-color: bd.$white;
       }
 
       &.datatable-row-odd {
-        background-color: bd.$color-table-odd-row-bg;
+        background-color: bd.$gray-100;
       }
 
       &.active,
       &.active:hover {
-        background-color: bd.$color-table-active-row-hover;
+        background-color: lighten(bd.$primary, 35%);
       }
 
       .datatable-body-cell {
     }
 
     .datatable-row-detail {
-      border-bottom: 2px solid bd.$color-table-header-border;
+      border-bottom: 2px solid bd.$gray-400;
       overflow-y: visible !important;
       padding: 20px;
     }
index f2576ea1c8c54c1f2335432fbea7878fb7ab57f9..392f8227a925b6cbc467ecfbd7cdee900badca73 100644 (file)
@@ -31,14 +31,7 @@ $popover-max-width: 350px;
   padding-top: 5em;
 }
 
-.cd-header,
-legend {
-  @extend .pb-1;
-  @extend .mt-4;
-  @extend .mb-4;
-  @extend .border-bottom;
-}
-
+// TODO: Replace (cd-)col-form-label with something more generic.
 @include media-breakpoint-up(sm) {
   .col-form-label {
     text-align: right;
@@ -49,34 +42,6 @@ legend {
   font-weight: 700;
 }
 
-// Firefox is adding a white background-coor in these components
-cd-submit-button {
-  background-color: transparent !important;
-}
-
-// All '.fa' icons will have fixed width
-.fa {
-  @extend .fa-fw;
-}
-
-pre {
-  @extend .card;
-  @extend .bg-light;
-  @extend .p-2;
-  // @extend my-2;
-}
-
-bfv-messages {
-  display: none;
-}
-
-// Display error message in 'input-group' form fields.
-// https://github.com/twbs/bootstrap/issues/23454
-// https://github.com/adrianhurt/play-bootstrap/issues/118
-.form-group.has-error .invalid-feedback {
-  display: block;
-}
-
 //Displaying the password strength
 .password-strength-level {
   flex: 100%;
@@ -106,7 +71,7 @@ bfv-messages {
   }
 
   .very-strong {
-    background: darken($success, 30%);
+    background: darken($success, 15%);
     width: 100%;
   }
 }
@@ -137,19 +102,23 @@ tree-root {
 
 // Other
 tags-input .tags {
-  border-radius: 4px;
   border: 1px solid $gray-400;
+  border-radius: 4px;
   box-shadow: inset 0 1px 1px rgba($black, 0.09);
 }
+
 .card-header {
   font-size: 1.3em;
 }
+
 .card-body h2:first-child {
   margin-top: 0;
 }
+
 .disabled {
   pointer-events: none;
 }
+
 .clickable,
 a {
   cursor: pointer;
index 151661002d7cbcff2bd88442c01d76f97735fc9b..47d09ae24f2d5dde946c93e338356de75590d217 100644 (file)
@@ -12,7 +12,7 @@ canvas {
 }
 
 .chartjs-tooltip {
-  background: rgba(bd.$black, .7);
+  background: rgba(bd.$black, 0.7);
   border-radius: 3px;
   color: bd.$white;
   font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif !important;
index ff315bf121682a027d83c10ce445d629b88d7b1a..29cc23c814d8e47b0cd060f4bd3f2160f601983b 100644 (file)
@@ -89,3 +89,22 @@ cd-about {
     @extend .col-8;
   }
 }
+
+.cd-header,
+legend {
+  @extend .pb-1;
+  @extend .mt-4;
+  @extend .mb-4;
+  @extend .border-bottom;
+}
+
+// All '.fa' icons will have fixed width
+.fa {
+  @extend .fa-fw;
+}
+
+pre {
+  @extend .card;
+  @extend .bg-light;
+  @extend .p-2;
+}
index bef1fa56ba35508e761b3524e32e5a7592151628..59c7cfcb60bc4a22ce76141359747b580254baa9 100644 (file)
@@ -20,13 +20,16 @@ option {
 .full-height {
   height: 100vh;
 }
+
 .full-width {
   width: 100vw;
 }
+
 .vertical-align {
   align-items: center;
   display: flex;
 }
+
 .horizontal-align {
   display: flex;
   justify-content: center;
index 57ea2defade33c23f349dfe9bc65cf03cf531a6f..a0590861c52b73b89cca32bb8e766ef316c77590 100644 (file)
@@ -64,3 +64,7 @@
   /** Add space between icon and text */
   margin-right: 5px;
 }
+
+.card-footer button.btn:not(:first-child) {
+  margin-left: 5px;
+}
index 524aa3885b07021615562ea8e7f2e939149d4c03..dccdfbbc311af7622b6da23238e0a129f54eca9e 100644 (file)
@@ -1,9 +1,8 @@
-@use "sass:map";
 @use '../defaults/bootstrap-defaults' as bd;
 
 /* Forms */
 .required::after {
-  color: map.get(bd.$theme-colors, "accent");
+  color: bd.$danger;
   content: '*';
   font-size: 1.167rem;
   padding-left: 4px;
@@ -19,8 +18,7 @@
 
   &:focus {
     border-color: rgba(bd.$primary, 0.8);
-    box-shadow: inset 0 1px 1px rgba(bd.$black, .75),
-      0 0 8px 2px rgba(bd.$primary, 0.5);
+    box-shadow: inset 0 1px 1px rgba(bd.$black, 0.75), 0 0 8px 2px rgba(bd.$primary, 0.5);
     outline: 0;
   }
 }
@@ -67,3 +65,7 @@ cd-modal {
     @extend .offset-lg-4;
   }
 }
+
+.invalid-feedback {
+  display: block;
+}
index 393902a9108af5ed90ab778808c2e472d14e878a..ebc002383ebf30cc18da1d5f08923315cb6f7fd0 100644 (file)
@@ -1,90 +1,6 @@
 @use '../defaults/bootstrap-defaults' as bd;
 
 /* Grid */
-.container,
 .container-fluid {
-  padding-left: 30px !important;
-  padding-right: 30px !important;
-}
-
-.row {
-  margin-left: -30px;
-  margin-right: -30px;
-}
-
-.col-lg-1,
-.col-lg-10,
-.col-lg-11,
-.col-lg-12,
-.col-lg-2,
-.col-lg-3,
-.col-lg-4,
-.col-lg-5,
-.col-lg-6,
-.col-lg-7,
-.col-lg-8,
-.col-lg-9,
-.col-md-1,
-.col-md-10,
-.col-md-11,
-.col-md-12,
-.col-md-2,
-.col-md-3,
-.col-md-4,
-.col-md-5,
-.col-md-6,
-.col-md-7,
-.col-md-8,
-.col-md-9,
-.col-sm-1,
-.col-sm-10,
-.col-sm-11,
-.col-sm-12,
-.col-sm-2,
-.col-sm-3,
-.col-sm-4,
-.col-sm-5,
-.col-sm-6,
-.col-sm-7,
-.col-sm-8,
-.col-sm-9,
-.col-1,
-.col-10,
-.col-11,
-.col-12,
-.col-2,
-.col-3,
-.col-4,
-.col-5,
-.col-6,
-.col-7,
-.col-8,
-.col-9 {
-  padding-left: 30px;
-  padding-right: 30px;
-}
-
-tags-input .tags {
-  border: 1px solid bd.$color-tags-border;
-  border-radius: 4px;
-  box-shadow: inset 0 1px 1px bd.$color-tags-box-shadow;
-}
-
-.card-header {
-  font-size: 1.3em;
-}
-
-.disabled {
-  pointer-events: none;
-}
-
-.clickable,
-a {
-  cursor: pointer;
-}
-
-:invalid .has-error-btn,
-:invalid .has-error-btn:disabled:hover {
-  background-color: bd.$color-error-btn-bg;
-  border-color: bd.$color-error-btn-border;
+  padding: 0 bd.$grid-gutter-width;
 }
index b7f76077557b114d0ea26b325067f7ea3badba22..1cbab1ac872765a10211c05b7caa12ec3593b653 100644 (file)
@@ -1,4 +1,4 @@
 .toast-message > ul {
-  padding-left: 1rem;
   margin: 0;
+  padding-left: 1rem;
 }
index d48fcb33941ccb66ebcd9a64c92970bb3ad76cb0..b00aaa0195cea5a6138fa858b673d11148319802 100644 (file)
@@ -2,40 +2,40 @@
 
 // Color system
 
-$white:     #ffffff !default;
-$gray-100:  #f8f9fa !default;
-$gray-200:  #e9ecef !default;
-$gray-300:  #dee2e6 !default;
-$gray-400:  #ced4da !default;
-$gray-500:  #adb5bd !default;
-$gray-600:  #6c757d !default;
-$gray-700:  #495057 !default;
-$gray-800:  #343a40 !default;
-$gray-900:  #212529 !default;
-$black:     #000000 !default;
-
-$blue:      #007bff !default;
-$indigo:    #6610f2 !default;
-$purple:    #6f42c1 !default;
-$pink:      #a94442;
-$red:       #ef5c55;
-$orange:    #fd7e14 !default;
-$yellow:    #ffc200;
-$green:     #00bb00;
-$teal:      #20c997 !default;
-$cyan:      #17a2b8 !default;
-
-$primary:   #2b99a8;
+$white: #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black: #000 !default;
+
+$blue: #007bff !default;
+$indigo: #6610f2 !default;
+$purple: #6f42c1 !default;
+$pink: #a94442;
+$red: #ef5c55;
+$orange: #fd7e14 !default;
+$yellow: #ffc200;
+$green: #0b0;
+$teal: #20c997 !default;
+$cyan: #17a2b8 !default;
+
+$primary: #2b99a8;
 $secondary: #374249;
-$success:   $green;
-$info:      $primary;
-$warning:   $yellow;
-$danger:    $red;
-$light:     $gray-100;
-$dark:      #777777;
+$success: $green;
+$info: $primary;
+$warning: $yellow;
+$danger: $red;
+$light: $gray-100;
+$dark: #777;
 
 $theme-colors: (
-  "accent": $red
+  'accent': #ef5c55
 );
 
 // Body
@@ -47,7 +47,7 @@ $body-color: $gray-900;
 // Typography
 
 $font-family-sans-serif: 'Helvetica Neue', Helvetica, Arial, 'Noto Sans', sans-serif,
-'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+  'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
 
 // Card
 
@@ -57,14 +57,18 @@ $card-cap-bg: $gray-100;
 
 $grid-gutter-width: 30px;
 
+// Table
+
+$datatable-divider-color: rgba($black, 0.09);
+
 // Navs
 
 $nav-tabs-margin-bottom: 1rem;
 
 // Tooltips
 
-$tooltip-color:                     $white;
-$tooltip-bg:                        $body-color;
+$tooltip-color: $white;
+$tooltip-bg: $body-color;
 
 // Misc
 
index 37d076ab20f82dece06505e201833022e656d9a0..d0f6aee913a1309154465b36c9fb58c1dcd83720 100644 (file)
@@ -1,17 +1,17 @@
 @use '../vendor/variables';
-@use 'bootstrap-defaults';
+@use 'bootstrap-defaults' as bd;
 @use 'functions';
 
 @mixin table-cell {
   border: 0;
-  border-bottom: 1px solid bootstrap-defaults.$color-light-gray;
-  border-left: 1px solid bootstrap-defaults.$color-light-gray;
+  border-bottom: 1px solid bd.$gray-400;
+  border-left: 1px solid bd.$gray-400;
   padding: 5px;
 }
 
 @mixin hf {
-  background-color: bootstrap-defaults.$color-whitesmoke-gray;
-  border-bottom: 1px solid bootstrap-defaults.$color-light-gray;
+  background-color: bd.$gray-200;
+  border-bottom: 1px solid bd.$gray-400;
 }
 
 @mixin fluid-font-size($min-vw, $max-vw, $min-font-size, $max-font-size) {