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

@@ -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;
}