Files
iTop/css/backoffice/components/_panel.scss
2021-03-18 11:55:01 +01:00

226 lines
7.0 KiB
SCSS

/*!
* Copyright (C) 2013-2021 Combodo SARL
*
* This file is part of iTop.
*
* iTop is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* iTop is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
*/
/* SCSS variables */
$ibo-panel--spacing-top: 24px !default;
$ibo-panel--header--margin-bottom: 4px !default;
$ibo-panel--icon--size: 48px !default;
$ibo-panel--icon--spacing: 16px !default;
$ibo-panel--icon--size-as-medallion: 72px !default;
$ibo-panel--icon--spacing--as-medallion: 16px !default;
$ibo-panel--icon--bottom--as-medallion: -24px !default;
$ibo-panel--icon--background-color--as-medallion: $ibo-color-grey-100 !default;
$ibo-panel--icon--border--as-medallion: 2px solid $ibo-color-blue-grey-300 !default;
$ibo-panel--icon--border-radius--as-medallion: $ibo-border-radius-full !default;
$ibo-panel--icon-background--size--must-contain: contain !default;
$ibo-panel--icon-background--size--must-cover: cover !default;
$ibo-panel--icon-background--size--must-zoomout: 66.67% !default;
$ibo-panel--title--color: $ibo-color-grey-900 !default;
$ibo-panel--subtitle--color: $ibo-color-grey-800 !default;
$ibo-panel--highlight--width: 100% !default;
$ibo-panel--highlight--height: 8px !default;
$ibo-panel--highlight--border-radius: $ibo-border-radius-400 $ibo-border-radius-400 0 0 !default;
$ibo-panel--highlight--padding-bottom: $ibo-panel--highlight--height !default;
$ibo-panel--body--background-color: $ibo-color-white-100 !default;
$ibo-panel--body--padding-bottom: 24px !default;
$ibo-panel--body--padding-top: $ibo-panel--body--padding-bottom + $ibo-panel--highlight--height !default;
$ibo-panel--body--padding-x: 16px !default;
$ibo-panel--body--border-radius: $ibo-border-radius-500 !default;
$ibo-panel--body--border-size: 1px !default;
$ibo-panel--body--border-color: $ibo-color-grey-400 !default;
$ibo-panel--collapsible-toggler--margin-right: 8px !default;
$ibo-panel--collapsible-toggler--font-size: $ibo-font-size-250 !default;
$ibo-panel--collapsible-toggler--color: $ibo-color-grey-700 !default;
$ibo-panel-colors: (
'primary': $ibo-color-primary-600,
'secondary': $ibo-color-secondary-600,
'neutral': $ibo-color-grey-600,
'information': $ibo-color-information-600,
'success': $ibo-color-success-600,
'failure': $ibo-color-danger-600,
'warning': $ibo-color-warning-600,
'danger': $ibo-color-danger-600,
'grey' : $ibo-color-grey-600,
'blue-grey': $ibo-color-blue-grey-600,
'blue': $ibo-color-blue-800,
'cyan': $ibo-color-cyan-600,
'green': $ibo-color-green-600,
'orange' : $ibo-color-orange-600,
'red': $ibo-color-red-600,
'pink': $ibo-color-pink-600,
) !default;
@each $sColor, $sColorValue in $ibo-panel-colors {
.ibo-panel.ibo-is-#{$sColor} > .ibo-panel--body::before {
position: absolute;
top: 0;
left: 0;
display: block;
background-color: $sColorValue;
content: "";
width: $ibo-panel--highlight--width;
height: $ibo-panel--highlight--height;
padding-bottom: $ibo-panel--highlight--padding-bottom;
}
}
/* Rules */
.ibo-panel + .ibo-panel {
margin-top: $ibo-panel--spacing-top;
}
.ibo-panel {
&.ibo-has-icon {
.ibo-panel--titles {
padding-left: $ibo-panel--icon--spacing;
}
&.ibo-has-medallion-icon {
.ibo-panel--header-left {
position: relative;
z-index: 1;
margin-left: $ibo-panel--icon--spacing--as-medallion;
}
// Note: Direct child selector is mandatory, otherwise a panel within a panel with a medallion icon will have its icon as a medallion too (eg. dashboard in an object)
> .ibo-panel--header {
.ibo-panel--header-left {
.ibo-panel--icon {
position: absolute;
bottom: $ibo-panel--icon--bottom--as-medallion;
left: 0;
overflow: hidden;
width: $ibo-panel--icon--size-as-medallion;
height: $ibo-panel--icon--size-as-medallion;
min-width: $ibo-panel--icon--size-as-medallion;
min-height: $ibo-panel--icon--size-as-medallion;
background-color: $ibo-panel--icon--background-color--as-medallion;
border: $ibo-panel--icon--border--as-medallion;
border-radius: $ibo-panel--icon--border-radius--as-medallion;
}
.ibo-panel--titles {
padding-left: calc(#{$ibo-panel--icon--size-as-medallion} + #{$ibo-panel--icon--spacing--as-medallion});
}
}
}
}
}
}
.ibo-panel--header {
display: flex;
justify-content: space-between;
align-items: flex-end;
margin-bottom: $ibo-panel--header--margin-bottom;
}
.ibo-panel--header-left {
@extend %ibo-fully-centered-content;
justify-content: left;
}
.ibo-panel--icon {
@extend %ibo-fully-centered-content;
width: $ibo-panel--icon--size;
height: $ibo-panel--icon--size;
min-width: $ibo-panel--icon--size;
min-height: $ibo-panel--icon--size;
}
.ibo-panel--icon-background {
width: 100%;
height: 100%;
background-position: center;
background-repeat: no-repeat;
background-size: $ibo-panel--icon-background--size--must-contain;
}
.ibo-panel--icon-background--must-contain {
background-size: $ibo-panel--icon-background--size--must-contain;
}
.ibo-panel--icon-background--must-cover {
background-size: $ibo-panel--icon-background--size--must-cover;
}
.ibo-panel--icon-background--must-zoomout {
background-size: $ibo-panel--icon-background--size--must-zoomout;
}
.ibo-panel--title {
display: inline-block;
color: $ibo-panel--title--color;
@extend %ibo-font-ral-sembol-250;
flex-grow: 1;
}
.ibo-panel--subtitle {
display: flex;
@extend %ibo-font-ral-med-250;
color: $ibo-panel--subtitle--color;
}
.ibo-panel--body {
position: relative;
padding: $ibo-panel--body--padding-top $ibo-panel--body--padding-x $ibo-panel--body--padding-bottom $ibo-panel--body--padding-x;
background-color: $ibo-panel--body--background-color;
border: solid $ibo-panel--body--border-size $ibo-panel--body--border-color;
border-radius: $ibo-panel--body--border-radius;
overflow: hidden; /* To force highlight color to be cropped by the border radius */
@extend %ibo-font-ral-nor-200;
}
.ibo-panel--collapsible-toggler{
display: inline-block;
margin-right: $ibo-panel--collapsible-toggler--margin-right;
font-size: $ibo-panel--collapsible-toggler--font-size;
color: $ibo-panel--collapsible-toggler--color;
cursor: pointer;
}
.ibo-panel--collapsible-toggler--opened{
display: block;
}
.ibo-panel--collapsible-toggler--closed{
display: none;
}
.ibo-panel:not(.ibo-is-opened) {
.ibo-panel--collapsible-toggler--closed{
display: block;
}
.ibo-panel--collapsible-toggler--opened{
display: none;
}
.ibo-panel--body{
display: none;
}
}