Files
sogo/UI/WebServerResources/scss/views/SchedulerUI.scss
T
Francis Lachapelle fcba6f2ddb Improve Calendar views
Moved toolbars inside "list" and "detail" views, like we do in the other
modules. With this change, it was possible to move the navitation button
(chevrons) inside the top toolbar of the detail view. Also move the view
headers inside a toolbar. The all-day events of the day and week views
have also been moved inside this toolbar.
2015-09-23 15:24:24 -04:00

293 lines
5.7 KiB
SCSS

/// SchedulerUI.scss -*- Mode: scss; indent-tabs-mode: nil; basic-offset: 2 -*-
$hours_margin: 50px;
$scrollbar_width: 16px;
/**
* Affected templates:
* - SchedulerUI/UIxCalDayView.wox
* - SchedulerUI/UIxCalWeekView.wox
* - SchedulerUI/UIxCalDayTable.wox
* - SchedulerUI/UIxCalMonthView.wox
*/
[ui-view=calendars] {
// Decrease with of middle column (list of events and tasks)
$listView-width: grid-step(5) !global;
$detailView-width: grid-step(11) !global;
.view-list {
min-width: ($listView-width - ($pitch * 2));
@include at(md){
@include flex-col(md, 6, 1, 1);
min-width: ($pitch * 3);
}
@include from(lg) {
@include flex-col(lg, 5, 1, 0);
}
}
.view-detail {
@include at(md) {
@include flex-col(md, 10);
}
@include from(lg) {
@include flex-col(lg, 11, 1, 1);
}
}
// The calendar view container
.calendarView {
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
}
// The days labels appear in the toolbar
md-toolbar {
&.daysView {
overflow: hidden;
z-index: $z-index-toolbar - 1;
.days {
margin-left: $hours_margin;
margin-right: $scrollbar_width; // scrollbar
&.dayLabels {
.day {
padding-left: 1%;
}
}
}
}
&[sg-view=dayview] {
.dayLabels {
.day {
display: flex;
align-items: center;
}
}
}
// &.monthView {
// > div {
// margin-right: $scrollbar_width;
// }
// }
}
// The all-day events appear in the shrinkable toolbar, bellow the days labels
.allDaysView {
border-bottom: 1px solid sg-color($sogoPaper, 300);
max-height: $sg-font-size-4 * 6;
.sg-event {
margin: 2%; // See sgCalendarDayBlock.directive.js
line-height: initial;
position: relative;
}
.gradient, .text {
position: relative;
}
}
// Days row
.days {
display: flex;
flex-direction: row;
align-items: stretch;
.day {
flex-grow: 1;
flex-basis: 0;
border-left: 1px solid sg-color($sogoPaper, 300);
.clickableHourCell {
height: 40px;
border-bottom: 1px solid sg-color($sogoPaper, 300);
}
}
}
// Header of month tiles
.sg-calendar-tile-header {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: $sg-font-size-2;
//font-weight: $sg-font-light;
overflow: hidden;
padding: 2px;
}
// The left column of hours
.hours {
color: sg-color($sogoBlue, 700);
display: inline-block;
float: left;
clear: left;
font-weight: $sg-font-light;
height: auto;
left: 0;
position: relative;
top: 0;
width: $hours_margin;
.hour {
border-bottom: 1px solid sg-color($sogoPaper, 300);
text-align: right;
height: 40px;
left: 0;
padding: 2px;
position: relative;
right: 0;
top: 0;
}
}
// A container for a day-long (column) of hour cells
.hourCells {
position: relative;
}
// The outer event container
.sg-event {
font-size: $sg-font-size-2;
&, md-icon {
color: #fff;
}
.material-icons {
font-size: $sg-font-size-2;
}
}
// Events from editable calendars are draggable
.sg-draggable {
cursor: move;
}
.sg-event {
border-radius: 3px;
position: absolute;
left: 0;
right: 0;
opacity: 0.9; // When events from a same calendar overlap, it creates a border to help distinguish the events
overflow: hidden;
$i: 0;
@while $i < 96 { // number of 15-minutes blocks in a day
&.starts#{$i} { top: 10px * $i; }
&.lasts#{$i} { height: 10px * $i; }
$i: $i + 1;
}
.eventInside {
overflow: hidden;
}
}
.monthView {
md-grid-tile {
border: 1px solid sg-color($sogoPaper, 300);
overflow: auto;
}
.sg-event {
position: relative;
border-radius: 1px;
overflow: hidden;
padding: 2%;
margin: 2%;
text-overflow: ellipsis;
white-space: nowrap;
span { // hours
font-weight: $sg-font-light;
}
}
}
.minutes15, .minutes30, .minutes45 {
display: block;
height: 25%;
}
.minutes30 {
border-bottom: 1px dotted sg-color($sogoPaper, 300);
}
.gradient, .text {
position: absolute;
top: 1px;
left: 4px;
right: 2px;
bottom: 1px;
overflow: hidden;
}
.gradient > IMG {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: 100%;
min-height: 15px; /* for 15-minute events */
width: 100%;
}
}
/* Attendees Editor */
.attendees {
overflow: hidden;
overflow-x: auto;
md-content {
display: table-row;
}
md-list {
display: table-cell;
vertical-align: top;
padding-top: 0;
&.day {
min-width: 408px;
md-list-item {
//padding: 0;
align-items: stretch;
}
}
}
md-list-item {
padding-left: 0;
&:hover {
background-color: initial;
}
// img {
// margin-right: $mg/4;
// }
}
.md-tile-left {
height: initial;
min-height: 48px;
width: initial;
padding: 4px;
}
.hours {
font-size: 9px;
}
.hour {
display: flex;
border-left: 1px solid sg-color($sogoPaper, 100);
min-width: 16px;
min-height: 16px;
flex-wrap: nowrap;
flex-grow: 0;
flex-basis: 17px; // hour's width + hour's border
align-items: stretch;
}
.quarter {
min-width: 4px;
display: flex;
align-items: stretch;
.busy {
margin: 8px 0;
min-width: 4px;
background-color: sg-color($sogoPaper, 600);
}
&.event {
background-color: sg-color($sogoBlue, 300);
}
}
}