N°2847 - Add activity panel to object details (and some variables renaming)

This commit is contained in:
Molkobain
2020-08-13 18:57:07 +02:00
parent f2725c5a5c
commit df20d10afa
33 changed files with 1775 additions and 18 deletions

View File

@@ -22,22 +22,29 @@ $ibo-hyperlink-color--on-active: $ibo-color-primary-700 !default;
$ibo-svg-illustration--fill: $ibo-color-primary-500 !default;
$ibo-content-block--background-color: $ibo-color-white-100 !default;
$ibo-content-block--border: 1px solid $ibo-color-grey-400 !default;
/* CSS variables */
:root{
--ibo-hyperlink-color: #{$ibo-hyperlink-color};
--ibo-hyperlink-color--on-hover: #{$ibo-hyperlink-color--on-hover};
--ibo-hyperlink-color--on-active: #{$ibo-hyperlink-color--on-active};
}
/* Box sizing reset */
*,
*::before,
*::after{
box-sizing: border-box;
}
/* Base font size (used by all typographies) */
html{
font-size: 12px;
}
/* Hyperlinks reset, ensure that they are of the right color and without decoration everywhere (of course this can be overloaded in some components) */
a{
color: var(--ibo-hyperlink-color);
text-decoration: none;

View File

@@ -28,7 +28,7 @@ $ibo-breadcrumbs--item-separator--margin-x: 12px !default;
$ibo-breadcrumbs--item-separator--text-color: $ibo-color-grey-500 !default;
.ibo-breadcrumbs{
@extend %ibo-vertically-centered-content;
@extend %ibo-full-height-content;
* {
display: flex;

View File

@@ -73,7 +73,7 @@ $ibo-global-search--compartment--placeholder-hint--text-color: $ibo-color-grey-7
/* SCSS rules */
.ibo-global-search{
position: relative;
@extend %ibo-vertically-centered-content;
@extend %ibo-full-height-content;
&.ibo-is-opened{
.ibo-global-search--input{
@@ -90,7 +90,7 @@ $ibo-global-search--compartment--placeholder-hint--text-color: $ibo-color-grey-7
}
}
.ibo-global-search--head{
@extend %ibo-vertically-centered-content;
@extend %ibo-full-height-content;
background-color: $ibo-global-search--head--background-color;
}
.ibo-global-search--icon{

View File

@@ -77,7 +77,7 @@ $ibo-quick-create--compartment--placeholder-hint--text-color: $ibo-color-grey-70
/* SCSS rules */
.ibo-quick-create{
position: relative;
@extend %ibo-vertically-centered-content;
@extend %ibo-full-height-content;
&.ibo-is-opened{
.ibo-quick-create--input{
@@ -93,7 +93,7 @@ $ibo-quick-create--compartment--placeholder-hint--text-color: $ibo-color-grey-70
}
}
.ibo-quick-create--head{
@extend %ibo-vertically-centered-content;
@extend %ibo-full-height-content;
background-color: $ibo-quick-create--head--background-color;
}
.ibo-quick-create--icon{

View File

@@ -18,4 +18,6 @@
@import "navigation-menu";
@import "top-bar";
@import "content";
@import "content";
@import "activity-panel/activity-panel";
@import "activity-panel/activity-entry";

View File

@@ -16,9 +16,6 @@
* You should have received a copy of the GNU Affero General Public License
*/
.ibo-center-container{
}
.ibo-center-container--with-side-content{
display: flex;
align-items: stretch;
@@ -26,4 +23,9 @@
#ibo-main-content{
flex-grow: 1; /* To occupy maximum width, side content will handle its width */
}
}
#ibo-side-content{
background-color: $ibo-content-block--background-color;
border-left: $ibo-content-block--border;
}

View File

@@ -38,7 +38,7 @@ $ibo-top-bar--quick-actions--margin-right: $ibo-top-bar--elements-spacing !defau
--ibo-top-bar--quick-actions--margin-right: #{$ibo-top-bar--quick-actions--margin-right};
}
.ibo-top-bar{
@extend %ibo-vertically-centered-content;
@extend %ibo-full-height-content;
height: var(--ibo-top-bar--height);
padding: var(--ibo-top-bar--padding-y) var(--ibo-top-bar--padding-right) var(--ibo-top-bar--padding-y) var(--ibo-top-bar--padding-left);
background-color: var(--ibo-top-bar--background-color);
@@ -50,7 +50,7 @@ $ibo-top-bar--quick-actions--margin-right: $ibo-top-bar--elements-spacing !defau
}
}
.ibo-top-bar--quick-actions{
@extend %ibo-vertically-centered-content;
@extend %ibo-full-height-content;
margin-right: var(--ibo-top-bar--quick-actions--margin-right);
.ibo-global-search{

View File

@@ -0,0 +1,176 @@
/*!
* Copyright (C) 2013-2020 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 */
/* - Entry group */
$ibo-activity-panel--entry-group--margin-bottom: 24px !default;
/* - Entry */
$ibo-activity-entry--medallion--margin-with-information: 8px !default;
$ibo-activity-entry--medallion--margin-bottom: 18px !default;
$ibo-activity-entry--medallion--diameter: 32px !default;
$ibo-activity-entry--medallion--border-radius: $ibo-border-radius-full !default;
$ibo-activity-entry--medallion--has-image--background-color: $ibo-color-blue-100 !default;
$ibo-activity-entry--medallion--has-image--box-shadow: inset 0 1px 2px 0 rgba(0, 0, 0, 0.25) !default;
$ibo-activity-entry--medallion--has-no-image--background-color: $ibo-color-blue-grey-600 !default;
$ibo-activity-entry--medallion--has-no-image--text-color: $ibo-color-white-100 !default;
$ibo-activity-entry--medallion--has-no-image--border: 1px solid $ibo-color-grey-200 !default;
$ibo-activity-entry--information--margin-to-other-side: $ibo-activity-entry--medallion--diameter + $ibo-activity-entry--medallion--margin-with-information !default;
$ibo-activity-entry--main-information--padding-x: 12px !default;
$ibo-activity-entry--main-information--padding-y: $ibo-activity-entry--main-information--padding-x !default;
$ibo-activity-entry--main-information--background-color: $ibo-color-grey-200 !default;
$ibo-activity-entry--main-information--border-radius: $ibo-border-radius-500 !default;
$ibo-activity-entry--main-information--border-radius--for-tip: 0 !default;
$ibo-activity-entry--main-information-accent-strip--width: 2px !default;
$ibo-activity-entry--main-information--is-current-user--background-color: $ibo-color-blue-100 !default;
$ibo-activity-entry--main-information--is-closed--max-height: 48px !default;
$ibo-activity-entry--main-information--is-closed--placeholder-top: 30px !default;
$ibo-activity-entry--main-information--is-closed--placeholder-padding-left: $ibo-activity-entry--main-information--padding-x !default;
$ibo-activity-entry--sub-information--margin-top: 4px !default;
$ibo-activity-entry--sub-information--margin-bottom: $ibo-activity-entry--sub-information--margin-top !default;
$ibo-activity-entry--sub-information--text-color: $ibo-color-grey-700 !default;
/* Entry group */
.ibo-activity-panel--entry-group{
&:not(:last-child){
margin-bottom: $ibo-activity-panel--entry-group--margin-bottom;
}
}
/* Entry */
.ibo-activity-entry{
display: flex;
flex-direction: row;
align-items: flex-end;
/* Last entry */
&:not(:last-child){
.ibo-activity-entry--medallion{
visibility: hidden; /* Show only medallion on the last entry */
}
.ibo-activity-entry--sub-information{
margin-bottom: $ibo-activity-entry--sub-information--margin-bottom;
}
}
/* Current or not user specificities */
&.ibo-is-current-user{
flex-direction: row-reverse;
.ibo-activity-entry--medallion{
margin-right: initial;
margin-left: $ibo-activity-entry--medallion--margin-with-information;
}
.ibo-activity-entry--information{
margin-right: 0;
margin-left: $ibo-activity-entry--information--margin-to-other-side;
}
.ibo-activity-entry--main-information{
background-color: $ibo-activity-entry--main-information--is-current-user--background-color;
}
.ibo-activity-entry--sub-information{
text-align: right;
}
/* Bubble tip on the right for last entry of the group */
&:last-child{
.ibo-activity-entry--main-information{
border-bottom-right-radius: $ibo-activity-entry--main-information--border-radius--for-tip;
border-bottom-left-radius: $ibo-activity-entry--main-information--border-radius;
}
}
}
&:not(.ibo-is-current-user){
.ibo-activity-entry--information{
margin-right: $ibo-activity-entry--information--margin-to-other-side;
margin-left: 0;
}
/* Bubble tip on the left for last entry of the group */
&:last-child{
.ibo-activity-entry--main-information{
border-bottom-right-radius: $ibo-activity-entry--main-information--border-radius;
border-bottom-left-radius: $ibo-activity-entry--main-information--border-radius--for-tip;
}
}
}
&.ibo-is-closed{
.ibo-activity-entry--main-information{
max-height: $ibo-activity-entry--main-information--is-closed--max-height;
overflow: hidden;
cursor: pointer;
&::after{
content: "...";
position: absolute;
top: $ibo-activity-entry--main-information--is-closed--placeholder-top;
left: 0;
padding-left: $ibo-activity-entry--main-information--is-closed--placeholder-padding-left;
width: 100%;
height: 100%;
background-color: inherit;
}
}
}
}
.ibo-activity-entry--medallion{
margin-right: $ibo-activity-entry--medallion--margin-with-information;
margin-bottom: $ibo-activity-entry--medallion--margin-bottom;
min-width: $ibo-activity-entry--medallion--diameter; /* We have to set a min-width, otherwise the medallion will be compressed when sibling element is too large */
width: $ibo-activity-entry--medallion--diameter;
min-height: $ibo-activity-entry--medallion--diameter;
height: $ibo-activity-entry--medallion--diameter;
overflow: hidden;
@extend %ibo-fully-centered-content;
border-radius: $ibo-activity-entry--medallion--border-radius;
@extend %ibo-font-ral-nor-150;
&.ibo-has-image{
background-color: $ibo-activity-entry--medallion--has-image--background-color;
box-shadow: $ibo-activity-entry--medallion--has-image--box-shadow;
}
&:not(.ibo-has-image){
background-color: $ibo-activity-entry--medallion--has-no-image--background-color;
color: $ibo-activity-entry--medallion--has-no-image--text-color;
border: $ibo-activity-entry--medallion--has-no-image--border;
}
.ibo-activity-entry--author-picture{
max-height: 100%;
}
}
.ibo-activity-entry--main-information{
position: relative;
padding: $ibo-activity-entry--main-information--padding-y $ibo-activity-entry--main-information--padding-x;
background-color: $ibo-activity-entry--main-information--background-color;
border-radius: $ibo-activity-entry--main-information--border-radius;
}
.ibo-activity-entry--sub-information{
margin-top: $ibo-activity-entry--sub-information--margin-top;
text-align: left;
color: $ibo-activity-entry--sub-information--text-color;
@extend %ibo-font-ral-nor-50;
}

View File

@@ -0,0 +1,227 @@
/*!
* Copyright (C) 2013-2020 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
*/
/* Color palette for caselog visual identification */
$ibo-activity-panel--caselog-main-color-1: $ibo-color-green-700 !default;
$ibo-activity-panel--caselog-main-color-2: $ibo-color-pink-700 !default;
$ibo-activity-panel--caselog-main-color-3: $ibo-color-blue-600 !default;
$ibo-activity-panel--caselog-main-color-4: $ibo-color-orange-400 !default;
$ibo-activity-panel--caselog-main-color-5: $ibo-color-cyan-200 !default;
$ibo-activity-panel--caselog-main-colors: $ibo-activity-panel--caselog-main-color-1, $ibo-activity-panel--caselog-main-color-2, $ibo-activity-panel--caselog-main-color-3, $ibo-activity-panel--caselog-main-color-4, $ibo-activity-panel--caselog-main-color-5 !default;
/* SCSS variables */
$ibo-activity-panel--width: 460px !default;
/* TODO: This should be changed when responsive breakpoints are defined and used */
$ibo-activity-panel--is-expanded--width: 1200px !default;
$ibo-activity-panel--padding-x: 16px !default;
$ibo-activity-panel--padding-y: 0 !default;
@for $iIdx from 1 through 5 {
.ibo-activity-panel--tab-decoration-for-caselog-#{$iIdx} {
background-color: nth($ibo-activity-panel--caselog-main-colors, $iIdx);
}
}
/* - Header */
$ibo-activity-panel--header--padding-x: $ibo-activity-panel--padding-x * 3 !default; /* We need to increase this so the size toggler which will be set in abs. pos. can overlap it nicely */
$ibo-activity-panel--header--background-color: $ibo-color-grey-100 !default;
$ibo-activity-panel--size-toggler--color: $ibo-color-grey-600 !default;
$ibo-activity-panel--size-toggler--on-hover--color: $ibo-color-grey-800 !default;
/* - Tab */
$ibo-activity-panel--tab--is-active--background-color: $ibo-color-grey-200 !default;
/* - Tab title */
$ibo-activity-panel--tab-title--padding-x: 16px !default;
$ibo-activity-panel--tab-title--padding-y: 8px !default;
$ibo-activity-panel--tab-title--on-hover--background-color: $ibo-activity-panel--tab--is-active--background-color !default;
$ibo-activity-panel--tab-title--is-active--background-color: $ibo-activity-panel--tab--is-active--background-color !default;
$ibo-activity-panel--tab-decoration--width: 12px !default;
$ibo-activity-panel--tab-decoration--height: $ibo-activity-panel--tab-decoration--width !default;
$ibo-activity-panel--tab-decoration--margin-right: 8px !default;
$ibo-activity-panel--tab-decoration--border-radius: $ibo-border-radius-300 !default;
$ibo-activity-panel--tab-text--max-width: 100px !default;
/* - Tab toolbar */
$ibo-activity-panel--tab-toolbar--padding-x: $ibo-activity-panel--padding-x !default;
$ibo-activity-panel--tab-toolbar--height: 32px !default;
$ibo-activity-panel--tab-toolbar--background-color: $ibo-activity-panel--tab--is-active--background-color !default;
$ibo-activity-panel--tab-for-caselog--elements-spacing: 16px !default;
$ibo-activity-panel--tab-for-caselog--icon-margin-left: 8px !default;
$ibo-activity-panel--tab-for-caselog--icons-separator-content: "-" !default;
$ibo-activity-panel--tab-for-caselog--icons-separator-margin-x: 8px !default;
$ibo-activity-panel--tab-for-activity--elements-spacing: 36px !default;
$ibo-activity-panel--tab-for-activity---checkbox-margin-right: 8px !default;
/* - Body */
$ibo-activity-panel--body--padding-top: $ibo-activity-panel--tab-toolbar--height + 16px !default;
$ibo-activity-panel--body--padding-x: $ibo-activity-panel--padding-x !default;
/* Whole layout */
.ibo-activity-panel{
width: $ibo-activity-panel--width;
transition: width 0.2s ease-in-out;
&.ibo-is-expanded{
width: $ibo-activity-panel--is-expanded--width;
}
}
/* Header */
.ibo-activity-panel--header{
position: relative;
padding-left: $ibo-activity-panel--header--padding-x;
padding-right: $ibo-activity-panel--header--padding-x;
@extend %ibo-fully-centered-content;
background-color: $ibo-activity-panel--header--background-color;
/* Remove hyperlinks default color */
a{
color: inherit;
}
}
.ibo-activity-panel--tabs{
@extend %ibo-fully-centered-content;
}
/* Tab */
.ibo-activity-panel--tab{
&.ibo-is-active{
.ibo-activity-panel--tab-title{
background-color: $ibo-activity-panel--tab-title--is-active--background-color;
}
.ibo-activity-panel--tab-toolbar{
display: flex;
}
}
}
/* Tab title */
.ibo-activity-panel--tab-title{
padding: $ibo-activity-panel--tab-title--padding-y $ibo-activity-panel--tab-title--padding-x;
@extend %ibo-fully-centered-content;
&:hover{
background-color: $ibo-activity-panel--tab-title--on-hover--background-color;
}
}
.ibo-activity-panel--tab-decoration{
display: inline-flex;
margin-right: $ibo-activity-panel--tab-decoration--margin-right;
width: $ibo-activity-panel--tab-decoration--width;
height: $ibo-activity-panel--tab-decoration--height;
border-radius: $ibo-activity-panel--tab-decoration--border-radius;
@extend %ibo-depression-100;
}
.ibo-activity-panel--tab-text{
max-width: $ibo-activity-panel--tab-text--max-width;
@extend %ibo-text-truncated-with-ellipsis;
}
/* Tab toolbar */
.ibo-activity-panel--tab-toolbar{
display: none;
align-items: center;
position: absolute;
top: 100%;
left: 0;
right: 0;
height: $ibo-activity-panel--tab-toolbar--height;
padding-left: $ibo-activity-panel--tab-toolbar--padding-x;
padding-right: $ibo-activity-panel--tab-toolbar--padding-x;
background-color: $ibo-activity-panel--tab-toolbar--background-color;
}
.ibo-activity-panel--tab-left-actions,
.ibo-activity-panel--tab-right-actions{
@extend %ibo-vertically-centered-content;
}
.ibo-activity-panel--tab-middle-actions{
@extend %ibo-fully-centered-content;
}
.ibo-activity-panel--tab-action{
@extend %ibo-baseline-centered-content;
}
.ibo-activity-panel--tab-for-caselog{
.ibo-activity-panel--tab-toolbar{
justify-content: space-between;
.ibo-activity-panel--tab-action{
&:not(:first-child){
&::before{
content: $ibo-activity-panel--tab-for-caselog--icons-separator-content;
margin: 0 $ibo-activity-panel--tab-for-caselog--icons-separator-margin-x;
}
}
}
.ibo-activity-panel--tab-info{
> .ibo-activity-panel--tab-info-icon{
margin-left: $ibo-activity-panel--tab-for-caselog--icon-margin-left;
}
&:not(:first-child){
margin-left: $ibo-activity-panel--tab-for-caselog--elements-spacing;
}
}
}
}
.ibo-activity-panel--tab-for-activity{
.ibo-activity-panel--tab-toolbar{
justify-content: center;
.ibo-activity-panel--tab-action{
> input{
margin-right: $ibo-activity-panel--tab-for-activity---checkbox-margin-right;
}
&:not(:first-child){
margin-left: $ibo-activity-panel--tab-for-activity--elements-spacing;
}
}
}
}
/* Size toggler */
.ibo-activity-panel--size-toggler{
position: absolute;
right: $ibo-activity-panel--padding-x;
top: 0;
bottom: 0;
@extend %ibo-fully-centered-content;
color: $ibo-activity-panel--size-toggler--color;
&:hover{
color: $ibo-activity-panel--size-toggler--on-hover--color;
}
}
.ibo-activity-panel--collapse-icon{
display: none;
}
/* Body */
.ibo-activity-panel--body{
padding-top: $ibo-activity-panel--body--padding-top;
padding-left: $ibo-activity-panel--body--padding-x;
padding-right: $ibo-activity-panel--body--padding-x;
}

View File

@@ -21,6 +21,7 @@ $ibo-body-text-color: $ibo-color-grey-900 !default;
$ibo-body-background-color: $ibo-color-white-200 !default;
$ibo-page-container--elements-padding-x: 48px !default;
$ibo-main-content--padding-top: 24px !default;
$ibo-main-content--padding-bottom: 24px !default;

View File

@@ -17,6 +17,7 @@
*/
@import "typography";
@import "depression";
@import "elevation";
@import "misc";
@import "font-icon";

View File

@@ -0,0 +1,27 @@
/*!
* Copyright (C) 2013-2020 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
*/
$ibo-depression-100: inset 0 1px 1px 0 rgba(0, 0, 0, 0.15) !default;
:root{
--ibo-elevation-100: #{$ibo-depression-100};
}
%ibo-depression-100{
box-shadow: $ibo-depression-100;
}

View File

@@ -16,13 +16,26 @@
* You should have received a copy of the GNU Affero General Public License
*/
.ibo-is-hidden{
display: none !important; /* Note: !important is necessary as it needs to overload any standard rules */
}
%ibo-fully-centered-content{
display: flex;
justify-content: center;
align-items: center;
}
/* Note: This might not be named correctly. The intention is to make an element occupy the full height of its parent and to be centered in it */
%ibo-vertically-centered-content{
display: flex;
align-items: center;
}
/* Typically to align icons and text */
%ibo-baseline-centered-content{
display: flex;
align-items: center;
}
/* Note: This might not be named correctly. The intention is to make an element occupy the full height of its parent and to be centered in it */
%ibo-full-height-content{
display: flex;
align-items: stretch;
}

View File

@@ -92,6 +92,16 @@ $ibo-color-cyan-700: hsla(186, 100%, 32.7%, 1) !default;
$ibo-color-cyan-800: hsla(185, 100%, 28%, 1) !default;
$ibo-color-cyan-900: hsla(182, 100%, 19.6%, 1) !default;
$ibo-color-pink-100: hsla(348, 100%, 98%, 1) !default;
$ibo-color-pink-200: hsla(343, 95%, 92%, 1) !default;
$ibo-color-pink-300: hsla(339, 90%, 85%, 1) !default;
$ibo-color-pink-400: hsla(336, 86%, 75%, 1) !default;
$ibo-color-pink-500: hsla(331, 79%, 66%, 1) !default;
$ibo-color-pink-600: hsla(329, 64%, 54%, 1) !default;
$ibo-color-pink-700: hsla(325, 57%, 46%, 1) !default;
$ibo-color-pink-800: hsla(322, 60%, 37%, 1) !default;
$ibo-color-pink-900: hsla(318, 51%, 29%, 1) !default;
:root{
--ibo-color-white-100: #{$ibo-color-white-100};
--ibo-color-white-200: #{$ibo-color-white-200};
@@ -167,6 +177,16 @@ $ibo-color-cyan-900: hsla(182, 100%, 19.6%, 1) !default;
--ibo-color-cyan-700: #{$ibo-color-cyan-700};
--ibo-color-cyan-800: #{$ibo-color-cyan-800};
--ibo-color-cyan-900: #{$ibo-color-cyan-900};
--ibo-color-pink-100: #{$ibo-color-pink-100};
--ibo-color-pink-200: #{$ibo-color-pink-200};
--ibo-color-pink-300: #{$ibo-color-pink-300};
--ibo-color-pink-400: #{$ibo-color-pink-400};
--ibo-color-pink-500: #{$ibo-color-pink-500};
--ibo-color-pink-600: #{$ibo-color-pink-600};
--ibo-color-pink-700: #{$ibo-color-pink-700};
--ibo-color-pink-800: #{$ibo-color-pink-800};
--ibo-color-pink-900: #{$ibo-color-pink-900};
}
/* Semantic palettes */

View File

@@ -16,4 +16,7 @@
* You should have received a copy of the GNU Affero General Public License
*/
$family-sans-serif: "Monorale";
$family-sans-serif: "Monorale";
$body-overflow-x: hidden !default;
$body-overflow-y: auto !default;