@eclipse-scout/core
Version:
Eclipse Scout runtime
769 lines (641 loc) • 15.9 kB
text/less
/*
* Copyright (c) 2010, 2024 BSI Business Systems Integration AG
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
.calendar-icon(@icon, @size) {
#scout.font-icon();
display: inline-block;
position: relative;
font-size: @size;
width: 29px;
content: @icon;
color: @icon-color;
text-align: center;
}
.calendar {
white-space: nowrap;
padding-left: 0;
}
.calendar-scrollable-components {
height: 100%;
}
.calendar-header {
position: relative;
display: block;
white-space: nowrap;
padding: 8px @root-group-box-padding-right 12px 0;
& > .busyindicator-label {
display: table-cell;
vertical-align: middle;
text-indent: 0;
}
&.mobile {
padding-right: @calendar-padding-right-mobile;
}
}
.calendar-header-row {
display: table;
width: 100%;
&.last {
padding-top: 10px;
}
}
.calendar-range {
display: table-cell;
vertical-align: middle;
padding-left: 8px;
width: 1%;
}
.calendar-previous,
.calendar-today,
.calendar-next {
cursor: pointer;
display: inline-block;
vertical-align: middle;
white-space: nowrap;
text-align: center;
height: @calendar-header-button-height;
color: @text-color;
background-color: @button-background-color;
border: 1px solid @control-border-color;
border-radius: @button-border-radius;
margin-right: 5px;
line-height: @calendar-header-button-height - 1px;
&:hover {
color: @hover-color;
}
}
.calendar-today {
padding-left: 15px;
padding-right: 15px;
}
.calendar-title {
display: table-cell;
vertical-align: middle;
color: @calendar-title-color;
.calendar-header-row.last > & {
text-align: center;
}
}
.calendar-select {
display: inline-block;
vertical-align: middle;
text-align: center;
font-size: 16px;
margin-left: 15px;
margin-right: 15px;
}
.calendar-previous:hover::before,
.calendar-next:hover::before {
color: @hover-color;
}
.calendar-previous::before {
.calendar-icon(@icon-angle-left, 20px);
}
.calendar-next::before {
.calendar-icon(@icon-angle-right, 20px);
}
.calendar-commands {
display: table-cell;
vertical-align: middle;
text-align: right;
white-space: nowrap;
}
.calendar-mode,
.calendar-toggle-sidebar,
.calendar-toggle-list {
display: inline-block;
vertical-align: middle;
text-align: center;
height: @calendar-header-button-height;
line-height: @calendar-header-button-height - 1px;
cursor: pointer;
}
.calendar-mode {
padding: 0 8px;
min-width: 65px;
border-top: 1px solid @control-border-color;
border-bottom: 1px solid @control-border-color;
border-left: 1px solid @control-border-color;
&.first {
border-left: 1px solid @control-border-color;
border-top-left-radius: @button-border-radius;
border-bottom-left-radius: @button-border-radius;
}
&.last {
border-right: 1px solid @control-border-color;
border-top-right-radius: @button-border-radius;
border-bottom-right-radius: @button-border-radius;
margin-right: 5px;
}
&:hover {
color: @hover-color;
}
&.selected {
color: @calendar-mode-selected-color;
background-color: @calendar-mode-selected-background-color;
}
}
.calendar-mode-menu {
padding: 5px 12px;
border: 1px solid @control-border-color;
border-radius: @button-border-radius;
}
.calendar-toggle-sidebar,
.calendar-toggle-list {
margin-left: 5px;
&:hover::before {
color: @hover-color;
}
}
.calendar-toggle-sidebar::before {
.calendar-icon(@icon-calendar, 18px);
}
.calendar-toggle-list::before {
.calendar-icon(@icon-list, 18px);
}
.calendar-component {
display: flex;
flex-direction: row;
position: relative;
float: left;
line-height: 24px;
height: 24px;
min-height: 20px;
width: calc(~'100% - ' @calendar-component-margin-left);
text-align: left;
color: @calendar-component-color;
& > .content {
#scout.overflow-ellipsis();
& > .icon {
padding-right: 3px;
font-size: 14px;
display: inline-block;
min-width: 20px;
}
& > .subject {
vertical-align: top;
}
}
& > .calendar-component-leftcolorborder {
flex-shrink: 0;
top: 0;
left: 0;
width: 4px;
margin-right: 4px;
background-color: @palette-blue-1; /* Default colors used when component has no specific class */
}
/* Default colors used when component has no specific class */
background-color: @palette-blue-0;
&:hover {
background-color: @palette-blue-1;
& > .calendar-component-leftcolorborder {
background-color: @palette-blue-3;
}
}
&.comp-selected {
background-color: @palette-blue-2;
& > .calendar-component-leftcolorborder {
background-color: @palette-blue-3;
}
}
/* Colors for type Appointment */
&.calendar-appointment {
background-color: @palette-orange-0;
& > .calendar-component-leftcolorborder {
background-color: @palette-orange-2;
}
&:hover {
background-color: @palette-orange-1;
& > .calendar-component-leftcolorborder {
background-color: @palette-orange-3;
}
}
&.comp-selected {
background-color: @palette-orange-2;
& > .calendar-component-leftcolorborder {
background-color: @palette-orange-3;
}
}
}
/* Colors for type Task */
&.calendar-task {
background-color: @palette-green-0;
& > .calendar-component-leftcolorborder {
background-color: @palette-green-2;
}
&:hover {
background-color: @palette-green-1;
& > .calendar-component-leftcolorborder {
background-color: @palette-green-2;
}
}
&.comp-selected {
background-color: @palette-green-2;
& > .calendar-component-leftcolorborder {
background-color: @palette-green-3;
}
}
}
}
.widget-popup > .calendar-component-tooltip-content.tooltip-content {
padding: 0;
#scout.font-text-normal();
max-width: 300px;
max-height: 500px;
}
.calendar-component-header {
padding: 18px 18px 10px 18px;
background-color: @table-header-background-color;
&:not(.with-description) {
padding-bottom: 18px;
}
}
.calendar-component-title-label {
color: @top-label-color;
font-size: @top-label-font-size;
padding-bottom: @top-label-border-padding-bottom;
}
.calendar-component-title {
font-weight: bold;
font-size: @font-size-plus;
#scout.overflow-ellipsis-nowrap();
}
.calendar-component-intro {
font-size: 11px;
margin-top: 9px;
color: @calendar-component-intro-color;
& > .icon {
padding-right: 9px;
display: inline-block;
font-size: 12px;
line-height: 15px;
min-width: 27px;
text-align: center;
vertical-align: middle;
}
}
.calendar-component-description-container {
padding: 10px 18px 18px 18px;
}
.calendar-component-description-element {
display: flex;
align-items: center;
& > .icon {
padding-right: 9px;
display: inline-block;
min-width: 27px;
vertical-align: top;
text-align: center;
}
& > .text {
display: inline-block;
vertical-align: top;
word-wrap: break-word;
word-break: break-word;
}
&:not(.first) {
padding-top: 10px;
border-top: 1px solid @tooltip-border-color;
}
&:not(.last) {
padding-bottom: 10px;
}
}
.calendar-list-container {
display: inline-block;
vertical-align: top;
width: 0;
padding: 0;
overflow: hidden;
}
.calendar-list {
width: 270px;
padding: 0 0 0 30px;
height: 100%;
& > .calendar-component {
cursor: pointer;
height: auto;
width: calc(~'100% - 10px');
background-color: transparent ; /* NOSONAR (required to override original component background color) */
margin-top: 12px;
color: @text-color;
& > .content {
width: 100%;
white-space: normal;
line-height: normal;
}
}
}
.calendar-list-title {
position: relative;
width: calc(~'100% - 10px');
height: @calendar-title-height;
line-height: @calendar-title-height;
font-weight: bold;
color: @text-color;
&::after {
position: absolute;
height: 1px;
width: 100%;
left: 0;
bottom: -1px;
content: '';
background-color: @border-color;
}
}
.calendar-grids {
display: inline-block;
vertical-align: top;
overflow: hidden;
--min-full-day-components: 2;
--max-full-day-components: 4;
--full-day-components: 0;
--day-of-month-height: 30px; // CalendarComponent.DAY_OF_MONTH_HEIGHT
--component-height: 24px; // CalendarComponent.COMPONENT_HEIGHT
--component-vgap: 2px; // CalendarComponent.COMPONENT_VGAP
--component-height-with-gap: calc(var(--component-height) + var(--component-vgap));
--top-grid-height: calc(@calendar-title-height
+ var(--day-of-month-height)
+ (max(min(var(--full-day-components), var(--max-full-day-components)), var(--min-full-day-components)) * var(--component-height-with-gap))// number of full day components, bounded by min and max
- (min(max(var(--full-day-components), var(--min-full-day-components)), 1) * var(--component-vgap))// remove additional gap after the last full day component if there is one
+ 1px); // border
&.calendar-grids-month {
--top-grid-height: @calendar-title-height + 1px;
}
}
.calendar-grid {
display: block;
height: calc(~'100% - ' var(--top-grid-height));
padding-right: @root-group-box-padding-right;
& + .scroll-shadow {
--scroll-shadow-inset-right: @root-group-box-padding-right;
}
&.mobile {
padding-right: @calendar-padding-right-mobile;
& + .scroll-shadow {
--scroll-shadow-inset-right: @calendar-padding-right-mobile;
}
}
}
.calendar-top-grid {
display: block;
overflow: hidden;
border-bottom: 1px solid @border-color;
height: var(--top-grid-height);
margin-right: @root-group-box-padding-right;
&.mobile {
margin-right: @calendar-padding-right-mobile;
}
}
.calendar-week-header,
.calendar-week {
display: block;
width: 100%;
white-space: nowrap;
}
.calendar-week-allday-container {
height: calc(~'100% - ' @calendar-title-height);
}
.calendar-week-allday-container > .calendar-week-name {
height: calc(~'100% - ' @calendar-title-height - 9px);
}
.calendar-week-allday-container > .calendar-day > .resource-column {
padding-top: 30px; // for the day-of-month number
}
.calendar-week-header,
.calendar-week-header > .calendar-day-name,
.calendar-week-header > .calendar-week-name,
.calendar-week-header > .calendar-day-name > .resource-column {
height: @calendar-title-height;
}
.calendar-week {
position: relative;
overflow: hidden;
}
.calendar-week-name {
width: @calendar-week-name-width;
}
.calendar-day-name,
.calendar-week-name,
.calendar-day,
.resource-column {
position: relative;
display: inline-block;
overflow: hidden;
z-index: 1; /* draw over grid */
}
.calendar-day {
padding: 0;
height: 100%;
&:not(.calendar-no-label)::before {
position: absolute;
content: attr(data-day-name);
color: @calendar-day-color;
left: 7px;
top: 7px;
z-index: 1; /* draw over calendar items */
}
&.out {
background-color: @calendar-out-background-color;
&::before {
color: @calendar-out-color;
}
}
&.weekend::before {
color: @calendar-weekend-color;
}
&.weekend-out {
background-color: @calendar-weekend-out-background-color;
&::before {
color: @calendar-weekend-out-color;
}
}
&.now::before {
color: @highlight-color;
font-weight: bold;
}
/* helps to center days between 10 and 19 nicer */
&.selected.center-nice::before {
padding-right: 2px;
}
& .calendar-component {
margin-left: @calendar-component-margin-left;
margin-bottom: 1px;
margin-top: 1px;
&.component-month.compact {
top: 30px;
margin-left: 0;
width: 100%;
}
&.component-day,
&.component-task {
position: absolute;
word-break: break-all;
left: 0;
margin: 0;
width: 100%;
height: 24px;
line-height: 24px;
}
&.component-open-top {
overflow: visible;
padding-top: 10px;
/* Compensate for open top padding */
& > .calendar-component-leftcolorborder {
height: calc(~'100% + 10px');
top: -10px;
position: relative;
}
&::before {
position: absolute;
display: block;
content: '';
width: 16px;
height: 16px;
left: calc(~'50% - 8px');
top: -8px;
transform: rotate(45deg);
background-color: @background-color;
}
}
&.component-open-bottom {
overflow: visible;
border-bottom: none; /* Compensate for calendar-component border */
&::after {
position: absolute;
display: block;
content: '';
width: 16px;
height: 16px;
left: calc(~'50% - 8px');
bottom: -8px;
transform: rotate(45deg);
background-color: inherit;
}
}
}
}
.calendar-day.selected.now::before {
left: 4px;
top: 3px;
font-weight: normal;
border: solid 4px @highlight-inverted-background-color;
border-radius: 50%;
background-color: @highlight-inverted-background-color;
color: @palette-white;
}
.calendar-day.selected::before {
text-align: center;
left: 4px;
top: 3px;
width: @calendar-day-selected-circle-size;
height: @calendar-day-selected-circle-size;
border: solid 4px @calendar-day-selected-background-color;
border-radius: 50%;
background-color: @calendar-day-selected-background-color;
color: @calendar-day-selected-color;
}
.calendar-week-name {
font-size: 11px;
color: @calendar-week-axis-color;
padding-top: 9px;
text-align: center;
}
.calendar-day::after,
.calendar-day-name::after,
.resource-column::after {
position: absolute;
width: 1px;
height: 100%;
left: 0;
top: 0;
content: '';
background-color: @border-color;
}
.calendar-week:not(.calendar-week-noborder)::after {
position: absolute;
height: 1px;
width: 100%;
left: 0;
top: 0;
content: '';
background-color: @border-color;
}
.calendar-day-name::before {
position: absolute;
content: attr(data-day-name);
color: @calendar-day-color;
left: 7px;
bottom: 0;
z-index: 1; /* draw over calendar items */
line-height: @calendar-title-height;
}
.calendar-week-axis {
position: absolute;
left: @calendar-week-name-width - @calendar-week-axis-overlap;
width: calc(~'100% - @{calendar-week-name-width} + @{calendar-week-axis-overlap}');
&:not(.first) {
&::after {
position: absolute;
height: 1px;
width: 100%;
content: '';
background-color: @calendar-light-line-color;
}
&.hour::after {
background-color: @calendar-line-color;
}
&::before {
position: absolute;
font-size: 12px;
left: -35px;
top: -8px;
color: @calendar-week-axis-color;
content: attr(data-axis-name);
}
}
}
.calendar-week-task {
position: relative;
left: 0;
width: 100%;
}
.calendar-week-task::after {
position: relative;
height: 1px;
width: 100%;
content: '';
background-color: @border-color;
}
.calendar-week-task::before {
position: absolute;
font-size: 11px;
top: 28px;
left: 7px;
color: @calendar-week-axis-color;
content: attr(data-axis-name);
}
.calendar-range-selector {
background-color: @selected-background-color;
position: absolute;
opacity: 0.3;
width: 100%;
}
.calendar-day > .resource-column {
height: 100%;
}
.resource-column::before {
position: absolute;
content: attr(data-resource-name);
color: @calendar-day-color;
left: 7px;
bottom: 0;
z-index: 1; /* draw over calendar items */
line-height: @calendar-title-height;
}