Page MenuHomePhorge

No OneTemporary

Size
91 KB
Referenced Files
None
Subscribers
None
diff --git a/less-build.sh b/less-build.sh
index 08bbace5..be63e9f6 100755
--- a/less-build.sh
+++ b/less-build.sh
@@ -1,9 +1,6 @@
#!/bin/sh
# First you have to link/copy /skins directory from Roundcube repo
# into ./skins here
-# Note: You can remove -x option to generate non-minified file
-# (remember to remove ".min" from the output file name)
-
-lessc --relative-urls -x plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css
+lessc --clean-css="--s1 --advanced" --rewrite-urls=all plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css
diff --git a/plugins/libkolab/skins/elastic/include/calendar.less b/plugins/libkolab/skins/elastic/include/calendar.less
index 479803ef..0d553247 100644
--- a/plugins/libkolab/skins/elastic/include/calendar.less
+++ b/plugins/libkolab/skins/elastic/include/calendar.less
@@ -1,1309 +1,1310 @@
/**
* Kolab core library
*
* This file contains Elastic skin styles for calendar plugin.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
.menu {
a.calendarlink:before {
content: @fa-var-calendar-alt;
}
a.send:before {
content: @fa-var-paper-plane;
}
}
// Icon for resources in autocompletion list
.listing.iconized li.resource > i:before {
content: @fa-var-cube;
}
a.button {
&.today:before {
.font-icon-regular(@fa-var-calendar);
}
&.date:before {
.font-icon-regular(@fa-var-calendar-alt);
}
}
.listing {
li {
& > div {
&.calendar {
.calname:before {
&:extend(.font-icon-class);
content: @fa-var-calendar-alt;
}
.actions {
padding-right: .25rem;
:last-child {
margin-right: 0;
}
}
}
&.calendar.cal---invitation--pending .calname:before,
&.calendar.cal---invitation--declined .calname:before {
.font-icon-regular(@fa-var-calendar-alt);
}
&.calendar.cal-__bdays__ .calname:before {
content: @fa-var-birthday-cake;
}
&.calendar.cal---invitation--pending,
&.calendar.cal---invitation--declined,
&.calendar.cal-__bdays__ {
font-style: italic;
a.calname {
padding-right: 2.5em;
}
.count {
right: 4.2em;
font-style: normal;
}
}
}
// Calednars list element (color indicator) used in Larry
span.handle {
display: none;
}
}
}
#calendarcategories {
.input-group:not(:last-child) {
margin-bottom: .25rem;
}
}
fieldset.categories .input-group {
.minicolors-input {
border-radius: 0;
}
.minicolors + .input-group-append {
margin-left: 0;
}
a.button.create {
&:before {
&:extend(.font-icon-class);
content: @fa-var-plus;
line-height: 1;
}
}
}
.calendar-invitebox {
& > i.icon:before {
content: @fa-var-calendar !important;
}
}
.calendar-agenda-preview {
display: none;
margin-top: .5rem;
border-top: 1px solid #ddd;
h3 {
margin-top: .5rem;
}
.event-row {
white-space: nowrap;
- .overflow-ellipsis;
+ .overflow-ellipsis();
&.current {
color: #333;
font-weight: bold;
}
&.no-event {
font-style: italic;
}
&.fc-invitation-needs-action {
color: @color-black-shade-text;
.event-title {
font-style: italic;
}
}
}
.event-title {
padding-left: .5rem;
}
.event-date {
}
}
#calendar.content {
- overflow: hidden !important; // fullcalendar widget implements scrolling on its own
+ // fullcalendar widget implements scrolling on its own
+ overflow: hidden !important;
position: relative;
}
.calendar-datepicker {
// overwrite jQuery-UI datepicker styles
.ui-datepicker {
margin: 0 !important;
border: 0;
border-radius: 0;
width: auto;
min-width: auto !important;
font-size: .9rem;
background-color: @color-black-shade-bg;
table {
margin: 0;
}
td a {
font-size: .9rem !important;
}
}
.ui-datepicker-header {
background-color: @color-black-shade-bg;
border-top: 1px solid @color-layout-border;
}
.ui-dialog & {
.ui-datepicker {
background: transparent;
}
.ui-datepicker-header {
background: transparent;
border: 0;
}
td a {
line-height: 3em !important;
font-size: 1rem !important;
}
}
}
// Fullcalendar styles
@import "fullcalendar";
@color-calendar-border: @color-layout-border;
@color-calendar-free-bg: fadeout(@color-black-shade-text, 80%);
@color-calendar-today: fadeout(@color-warning, 80%);
@color-event-default: #c00;
.fc {
body.quickview-active & .fc-scroller {
background: data-uri("image/svg+xml;charset=utf-8", "../images/eye.svg") center no-repeat;
background-size: 50%;
}
.fc-header-toolbar {
display: flex;
background-color: @color-black-shade-bg;
margin: 0;
& > * > * {
float: none;
margin: 0;
}
}
.fc-left {
order: 1;
.fc-button-group {
display: none;
}
}
.fc-center {
flex: 1;
order: 2;
text-align: center;
padding: .25rem;
h2 {
margin: 0;
color: @color-black-shade-text;
white-space: nowrap;
font-size: 1.25rem;
font-weight: bold;
}
}
.fc-right {
order: 3;
text-align: right;
.fc-button {
display: none;
}
}
button {
height: unset;
padding: .3rem .75rem;
}
button.prev:before {
&:extend(.font-icon-class);
content: @fa-var-angle-left;
margin: 0 !important;
line-height: 1;
}
button.next:before {
&:extend(.font-icon-class);
content: @fa-var-angle-right;
margin: 0 !important;
line-height: 1;
}
.btn-group {
padding: .5rem;
margin: 0;
}
.fc-type-freebusy {
opacity: 0.6;
.fc-title {
position: absolute;
top: -5000px;
}
td {
color: #999;
}
}
.fc-event-dot {
background-color: @color-event-default;
}
a.fc-event, a.fc-event:hover {
color: #fff;
}
.fc-event {
font-size: 13px;
background-color: @color-event-default;
border-color: @color-event-default;
.fc-title {
font-weight: bold;
}
.fc-bg {
opacity: .15;
margin-top: 1.1rem;
}
&.fc-invitation-needs-action,
&.fc-invitation-tentative,
&.fc-invitation-declined {
border: 1px dashed #999;
}
&.fc-event-ns-other.fc-invitation-declined {
opacity: 0.7;
.fc-title {
text-decoration: line-through;
}
}
&.fc-invitation-tentative .fc-bg {
background: url(data:image/gif;base64,R0lGODlhCAAIAPABAOuJAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
}
&.fc-invitation-needs-action .fc-bg {
background: url(data:image/gif;base64,R0lGODlhCAAIAPABAFdXx////yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
}
&.fc-invitation-declined .fc-bg {
background: url(data:image/gif;base64,R0lGODlhCAAIAPABAMwAAP///yH/C1hNUCBEYXRhWE1QAT8AIfkEBQAAAQAsAAAAAAgACAAAAg4Egmipx+ZaDPCtVPFNBQA7) 0 0 repeat #fff;
}
}
.fc-list-view {
tr.fc-invitation-tentative,
tr.fc-invitation-declined,
tr.fc-invitation-needs-action {
color: #888;
.fc-event-dot {
background-color: #888;
}
}
}
.fc-needs-action,
.fc-declined,
.cal-event-status-cancelled {
opacity: 0.6;
}
.fc-time i {
display: inline-block;
width: 1em;
height: 1em;
margin-left: .25rem;
&:before {
&:extend(.font-icon-class);
font-size: 1em;
line-height: 1;
margin-top: .1rem;
}
&.fc-icon-recurring:before {
.font-icon-regular(@fa-var-clone);
}
&.fc-icon-alarms:before {
content: @fa-var-bell;
}
&.fc-icon-sensitive:before {
content: @fa-var-lock;
}
}
.fc-event-temp {
opacity: 0.4;
}
.fc-nonbusiness {
background-color: @color-calendar-free-bg;
}
.fc-day.fc-today {
background: @color-calendar-today !important;
}
.fc-now-indicator {
border-color: @color-success;
border-width: 1.5px;
}
.fc-list-item,
.fc-list-item:hover td {
background: transparent;
}
.fc-list-item td,
.fc-list-item a {
cursor: default;
}
.fc-list-item-title {
font-weight: bold;
}
.fc-list-table td {
padding: .5rem;
}
.fc-list-heading td {
background: fadeout(@color-black-shade-text, 90%);
}
.fc-list-empty {
display: none;
}
.fc-more {
color: @color-link !important;
white-space: nowrap;
}
.fc-axis,
.fc-day-number,
.fc-week-number,
.fc-day-header,
.fc-week-header {
color: @color-black-shade-text;
font-size: .95rem;
padding: .15rem !important;
}
.fc-week-number {
text-align: center;
}
.fc-popover {
border-radius: .3rem;
.fc-header {
color: @color-black-shade-text;
font-size: .95rem;
font-weight: bold;
}
.fc-icon-x::after {
top: 3px;
}
}
// remove redundant borders
.fc-view.fc-widget-content,
td.fc-head-container {
border-left-width: 0;
}
.fc-list-view,
.fc-body > tr > .fc-widget-content,
.fc-body .fc-bg-sceleton .fc-widget-content,
.fc-body .fc-bg .fc-widget-content {
border-bottom-width: 0;
}
// fullcalendar style overrides for printing
.print-content & {
.fc-header-toolbar {
background-color: #fff;
}
.fc-center h2 {
color: #000;
padding-bottom: .75rem;
font-size: 1.5rem !important;
}
.fc-day.fc-today {
background: transparent !important;
}
a.fc-event {
color: #000;
background-color: #fff !important;
}
.fc-event-description {
white-space: pre-wrap;
font-size: 90%;
}
.fc-event-location {
width: 20%;
}
.fc-event-row-secondary td {
border: 0;
padding-top: 0 !important;
}
.fc-scroller {
overflow: visible !important;
height: auto !important;
}
// Re-add removed borders
.fc-view.fc-widget-content,
td.fc-head-container {
border-left-width: 1px;
}
.fc-list-view,
.fc-agenda-view,
.fc-month-view {
border-bottom: 1px solid #ddd;
}
}
@media screen and (max-width: @screen-width-small) {
.fc-left {
display: block;
width: 100%;
padding: 0;
button {
flex: 1 1 auto;
border-radius: 0;
}
.btn-group {
padding: 0;
display: flex;
}
}
.fc-list-table .fc-event-location,
.fc-center,
.fc-right {
display: none;
}
}
@media screen and (min-width: (@screen-width-small + 1px)) and (max-width: 920px) {
.fc-center {
- .overflow-ellipsis;
+ .overflow-ellipsis();
flex: 1;
h2 {
font-size: 1rem;
line-height: 1;
padding-top: .45rem;
}
}
.fc-left,
.fc-right {
.btn {
padding-left: .5rem;
padding-right: .5rem;
}
}
}
}
// Add scrollbar on iOS
html:matches(.ipad,.iphone) {
.ui-dialog-content:not(.iframe),
#fish-eye-view,
.fc-scroller {
&::-webkit-scrollbar {
-webkit-appearance: none;
}
&::-webkit-scrollbar:vertical {
width: .6rem;
}
&::-webkit-scrollbar:horizontal {
height: .6rem;
}
&::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, .4);
border-radius: .3rem;
border: 2px solid #fff;
}
}
}
body.task-calendar {
#print-layout {
#calendar-view-selector {
float: right;
padding-top: .25rem;
}
#calendarlist {
margin-top: 1rem;
&, ul {
list-style: none;
padding: 0;
}
li {
display: inline-block;
white-space: nowrap;
}
ul, li, div {
float: left;
}
div {
margin-right: 2rem;
}
a {
text-decoration: none;
cursor: auto;
}
input,
span.actions,
span.handle {
display: none;
}
}
}
@media screen and (min-width: (@screen-width-small + 1px)) {
#layout-sidebar {
flex: 2;
max-width: 400px;
min-width: 240px;
}
}
// improve datepicker
.ui-datepicker {
td {
width: 12.5%;
}
.ui-datepicker-week-col {
color: @color-black-shade-border;
text-align: center;
}
}
.ui-datepicker-inline {
.ui-datepicker-week-col {
color: @color-link;
cursor: pointer;
}
.ui-datepicker-activerange {
background-color: @color-list-selected-background;
}
}
}
#timezone-display {
font-size: .9rem;
color: @color-black-shade-text;
}
#agendaoptions {
padding: 0 .5rem .5rem .5rem;
display: flex;
background-color: @color-black-shade-bg;
.input-group {
padding-right: .5rem;
flex-wrap: nowrap;
// width: 50%;
&:last-child {
padding-right: 0;
}
}
select {
min-width: 7em;
}
.input-group-prepend {
overflow: hidden;
margin-bottom: 0;
span {
display: block;
- .overflow-ellipsis;
+ .overflow-ellipsis();
}
}
}
#eventshow {
margin: 0;
.event-title {
font-size: 1.5rem;
font-weight: bold;
}
.event-location {
- .overflow-ellipsis;
+ .overflow-ellipsis();
white-space: nowrap;
}
.event-description {
margin: 1rem 0;
}
.event-attendees {
margin-bottom: 1rem;
.attendee {
margin-right: .25rem;
}
}
.event-partstat {
& > span {
display: flex;
}
.rsvp-status {
&:before {
display: inline;
float: none;
}
}
.changersvp {
cursor: pointer;
font-size: 1.2rem;
margin-left: 1em;
&:before {
&:extend(.font-icon-class);
content: @fa-var-pen-square;
float: none;
display: inline;
line-height: 1;
}
}
.inner {
display: none;
}
}
}
#eventedit {
.edit-attendees-table td {
padding-top: .15rem;
&.role {
padding-left: 0;
width: 9em;
}
}
}
#fish-eye-view {
padding: 0;
@media screen and (min-width: (@screen-width-small + 1px)) {
border-bottom: 1px solid @color-calendar-border;
}
}
@color-availability-unknown: #bbb; // Larry: #ddd;
@color-availability-free: @color-success; // Larry: #abd640;
@color-availability-busy: @color-error; // Larry: #e26569;
@color-availability-tentative: #8383fc;
@color-availability-out-of-office: #fbaa68;
.availability {
span {
margin-right: .5rem;
color: @color-black-shade-text;
&:before {
&:extend(.font-icon-class);
content: @fa-var-square;
display: inline;
float: none;
}
&.legend:before {
font-size: 1em;
}
&.loading:before {
- .animated-icon-class;
+ .animated-icon-class();
content: @fa-var-circle-notch;
display: block;
line-height: 1;
}
&.unknown:before {
color: @color-availability-unknown;
}
&.free:before {
color: @color-availability-free;
}
&.busy:before {
color: @color-availability-busy;
}
&.tentative:before {
color: @color-availability-tentative;
}
&.out-of-office:before {
color: @color-availability-out-of-office;
}
}
}
// fixes additional checkbox in Elastic's .datetime widget
.datetime {
.custom-switch {
padding-left: .5rem;
label {
line-height: 2;
margin-top: .2rem;
}
}
input {
width: 10em !important;
}
@media screen and (max-width: 420px) {
input {
width: 8em !important;
& + input {
width: 6em !important;
}
}
}
}
.calendar-scheduler {
.nav {
align-items: center;
button:first-child {
margin-right: .25rem;
}
& > div {
white-space: nowrap;
}
@media screen and (max-width: 420px) {
button {
padding-left: .5rem;
padding-right: .5rem;
}
}
}
.schedule-buttons {
.prev-slot:before {
content: @fa-var-chevron-left;
}
.next-slot:after {
&:extend(.font-icon-class);
content: @fa-var-chevron-right;
display: inline-block;
float: none;
margin-right: 0;
}
}
.schedule-options {
flex: 1;
margin-left: 1rem;
html.layout-phone & {
order: 100;
margin-left: 0;
}
}
.schedule-nav {
flex: 1;
margin-left: .3rem;
text-align: right;
button {
line-height: 1.8;
}
}
.schedule-range {
width: 60%;
margin-top: 2rem;
html.layout-phone & {
margin: 0;
}
}
.schedule-legend {
.attendee {
margin-right: .5rem;
}
}
.attendees-list {
position: relative;
a.attendee-role-toggle {
position: absolute;
left: 0;
display: inline-block;
width: 1em;
cursor: pointer;
}
div.attendee {
border-top: 1px solid @color-list-border;
line-height: 1.7rem;
height: 1.8rem;
}
.attendee {
white-space: nowrap;
&.spacer {
height: 10px;
}
&.loading:before {
- .animated-icon-class;
+ .animated-icon-class();
.font-icon-solid(@fa-var-circle-notch);
}
&.total {
font-weight: bold;
}
&.total,
&.spacer {
&:before {
display: none;
}
}
}
}
.schedule-table {
table-layout: fixed;
th {
border-top: 0;
}
td.attendees {
width: 25%;
overflow: hidden;
border-top: 0;
html.layout-phone & {
width: 35%;
}
.attendees-list {
border-bottom: 1px solid @color-table-border;
}
}
td.times {
width: auto;
border-top: 0;
table {
margin: 0;
}
td {
height: 1.8rem;
border-top: 1px solid @color-list-border;
white-space: nowrap;
}
}
div.scroll {
position: relative;
overflow: auto;
}
.timesheader {
height: 1.4rem;
border-top: 1px solid @color-table-border;
}
.boxtitle {
margin: 0;
padding: 0;
font-size: 1rem;
font-weight: bold;
padding-top: .5rem;
line-height: 2;
}
td {
padding: 4px;
}
tbody td {
padding: 0;
div {
height: 100%;
}
}
tr.spacer td {
padding: 0;
height: 10px;
}
tr.dates th[colspan="1"] {
min-width: 48px;
max-width: 48px;
text-align: center;
font-size: .7rem;
line-height: 2.9;
}
tr.times td {
cursor: pointer;
min-width: 48px;
max-width: 48px;
font-size: .7rem;
text-align: center;
color: @color-link;
height: 1.4rem;
padding: 0 .1rem;
vertical-align: middle;
border-top: 1px solid @color-table-border;
border-left: 1px solid @color-list-border;
}
.fbcontent {
td {
border-left: 1px solid @color-list-border;
}
&:last-child td {
border-bottom: 1px solid @color-table-border;
}
}
div.unknown {
background-color: @color-availability-unknown;
}
div.free {
background-color: @color-availability-free;
}
div.busy {
background-color: @color-availability-busy;
}
div.tentative {
background-color: @color-availability-tentative;
}
div.out-of-office {
background-color: @color-availability-out-of-office;
}
div.all-busy,
div.all-tentative,
div.all-out-of-office {
overflow: hidden;
// This span imitates a slanting line across the parent element
span {
display: block;
width: 300%;
height: 300%;
border: 1px solid #fff;
background: darken(@color-availability-busy, 10%);
transform: rotate(42deg) translate(2%);
}
&.w10 span {
display: none;
}
&.w20 span,
&.w25 span {
transform: rotate(17deg) translate(-9%);
}
&.w30 span {
transform: rotate(28deg) translate(-7%);
}
&.w33 span {
transform: rotate(32deg) translate(-5%);
}
&.w40 span {
transform: rotate(36deg) translate(-3%);
}
&.w60 span {
transform: rotate(48deg) translate(6%);
}
&.w67 span {
transform: rotate(52deg) translate(9%);
}
&.w70 span,
&.w75 span {
transform: rotate(55deg) translate(12%, 30%);
}
&.w80 span {
transform: rotate(56deg) translate(13%, 30%);
}
&.w90 span {
transform: rotate(59deg) translate(16%, 30%);
}
&.w100 span {
transform: rotate(62deg) translate(19%, 30%);
}
}
div.all-tentative span {
background: darken(@color-availability-tentative, 10%);
}
div.all-out-of-office span {
background: darken(@color-availability-out-of-office, 10%);
}
}
}
#schedule-event-time {
position: absolute;
border-radius: .3rem;
cursor: move;
border: 2px solid #444;
background-color: rgba(0, 0, 0, .3);
}
.resources-dialog {
.resource-selection {
flex: 4;
min-width: 300px;
}
.resource-content {
flex: 10;
margin-left: 1em;
}
.listing li.resource > a {
color: @color-font;
&:before {
&:extend(.font-icon-class);
content: @fa-var-cube;
}
}
.slot-nav {
display: none; // TODO
}
}
#resource-availability {
height: 100%;
.fc {
height: 100%;
overflow: hidden;
position: relative;
border-bottom: 1px solid #ddd;
}
.fc-view {
border-left: 1px solid #ddd;
}
.fc-header-toolbar {
height: 0;
}
}
.standalone-invitebox {
margin: 0 auto;
max-width: 500px;
width: 95%;
display: flex;
flex-direction: column;
top: 15vh;
position: relative;
#logo {
max-height: 90px;
}
.invitebox {
margin-top: 3em !important;
}
}
.searchbar a.button.date {
@media screen and (min-width: (@screen-width-small + 1px)) {
display: none;
}
}
#rcmfd_alarmvalue {
max-width: 80px;
}
@media screen and (max-width: @screen-width-small) {
#agendaoptions {
padding-top: .5rem;
}
.calendar-scheduler {
.schedule-range {
width: 100%;
}
}
#layout-sidebar .calendar-datepicker {
display: none;
}
.resources-dialog {
.resource-content {
display: none;
margin: 0;
}
.resource-content {
ul {
margin: 1em 1em 0 1em;
}
}
}
#resource-availability {
margin: 0 1em;
}
}
body.task-calendar .header-title {
position: relative;
.tz {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
line-height: 2;
font-size: .8rem;
font-weight: normal;
color: @color-black-shade-text;
}
}
diff --git a/plugins/libkolab/skins/elastic/include/darkmode.less b/plugins/libkolab/skins/elastic/include/darkmode.less
new file mode 100644
index 00000000..3f018b2a
--- /dev/null
+++ b/plugins/libkolab/skins/elastic/include/darkmode.less
@@ -0,0 +1,168 @@
+/**
+ * Kolab core library
+ *
+ * This file contains Elastic skin dark mode styles for all Kolab plugins
+ *
+ * @author Aleksander Machniak <machniak@kolabsys.com>
+ *
+ * Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
+ *
+ * This program 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.
+ *
+ * This program 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+html.dark-mode {
+ // Use icons-only on taskmenu with small screen height
+ @media screen and (max-height: 750px) and (min-width: (@screen-width-small + 1px)) {
+ #taskmenu a {
+ width: @layout-menu-width-sm - 1px;
+ }
+ }
+
+ .watermark {
+ background-color: @color-dark-background;
+ background-blend-mode: soft-light;
+
+ &:before {
+ background: none;
+ }
+ }
+
+ #filelistcontainer,
+ .fc-scroller {
+ scrollbar-width: thin;
+ }
+
+ .fc {
+ .fc-header-toolbar {
+ background-color: @color-dark-list-selected-background;
+ }
+
+ #timezone-display,
+ .fc-center h2 {
+ color: @color-dark-font;
+ }
+ }
+
+ .filelist tr.session.owner > td.name::after,
+ .rsvp-status:not(.accepted):not(.tentative):not(.declined)::before,
+ .resources-dialog .listing li.resource > a {
+ color: @color-dark-font;
+ }
+
+ .fc-unthemed th,
+ .fc-unthemed td,
+ .fc-unthemed .fc-divider,
+ .fc-unthemed .fc-row,
+ .fc-unthemed .fc-content,
+ .fc-unthemed .fc-popover,
+ .fc-unthemed .fc-list-view,
+ .fc-unthemed .fc-list-heading td,
+ #tasklist li.taskitem > div,
+ #tasklist li.taskitem > span {
+ border-color: @color-dark-list-border;
+ }
+
+ .files-dialog .selection-content,
+ .calendar-scheduler .schedule-table td.times td,
+ .calendar-scheduler .attendees-list div.attendee,
+ .calendar-scheduler .schedule-table .timesheader,
+ .calendar-scheduler .schedule-table td.attendees .attendees-list,
+ .fc-unthemed th,
+ .fc-unthemed td {
+ border-color: @color-dark-border;
+ }
+
+ #resource-availability .fc,
+ #resource-availability .fc-view {
+ border-color: @color-dark-border;
+ }
+
+ .selection-dialog .form-addon,
+ .selection-dialog .header,
+ .selection-dialog .selection-list,
+ .edit-attendees-table th {
+ border-color: @color-dark-border !important;
+ }
+
+ .selection-dialog .listing ul,
+ .selection-dialog .form-addon,
+ .selection-dialog .header {
+ background-color: transparent;
+ }
+
+ .fc-unthemed .fc-divider,
+ .fc-unthemed .fc-popover .fc-header,
+ .fc-unthemed .fc-list-heading td,
+ body.task-calendar .ui-datepicker-inline .ui-datepicker-activerange,
+ .listing li.selected > div > *,
+ #tasklist li.taskitem div.taskhead.selected {
+ color: @color-dark-list-selected;
+ background-color: @color-dark-list-selected-background;
+ }
+
+ #folder-mount-form td.source.selected {
+ background-color: @color-dark-list-selected-background;
+ }
+
+ #tagsform option,
+ .tagedit-list li.tagedit-listelement-new input {
+ color: @color-dark-input;
+ }
+
+ .fc .fc-axis,
+ .fc .fc-day-number,
+ .fc .fc-week-number,
+ .fc .fc-day-header,
+ .fc .fc-week-header,
+ .formcontent.text-only .faded *,
+ .availability span,
+ .invitebox td.label,
+ .invitebox .rsvp-status.hint,
+ .calendar-agenda-preview .event-row.current,
+ #tasklist span.date,
+ #kolabnoteslist td.date,
+ #notedetailstitle .dates {
+ color: @color-dark-hint;
+ }
+
+ .invitebox .folder-select select {
+ background-color: @color-dark-input-background;
+ }
+
+ .tagedit-list[tabindex="-1"] {
+ border-color: @color-dark-input-border-focus;
+ box-shadow: 0 0 0 .2rem @color-input-border-focus-shadow;
+ background: @color-dark-input-background-focus;
+ }
+
+ #tasklist .progressbar .progressvalue {
+ border-color: @color-dark-warning;
+ }
+
+ .listing {
+ li > div.readonly a:first-child,
+ li.readonly:not(.virtual) > div a:first-child {
+ &:after {
+ color: @color-dark-font;
+ background-color: @color-dark-background;
+ }
+ }
+ }
+
+ .dialog-message {
+ opacity: 1;
+ color: @color-dark-font;
+ background-color: @color-dark-warning;
+ }
+}
diff --git a/plugins/libkolab/skins/elastic/include/kolab_activesync.less b/plugins/libkolab/skins/elastic/include/kolab_activesync.less
index 95700df9..98c4fa52 100644
--- a/plugins/libkolab/skins/elastic/include/kolab_activesync.less
+++ b/plugins/libkolab/skins/elastic/include/kolab_activesync.less
@@ -1,53 +1,53 @@
/**
* Kolab core library
*
* This file contains Elastic skin styles for kolab_activesync plugin.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
.listing.iconized li {
&.activesync > a:before {
content: @fa-var-rss-square;
}
}
#devices-table {
td:not(.selection) {
display: flex;
&:before {
&:extend(.font-icon-class);
content: @fa-var-rss-square; // TODO: mobile icon is not free
}
span {
- .overflow-ellipsis;
+ .overflow-ellipsis();
}
}
.devicealias {
flex: 1;
}
.devicetype {
max-width: 40%;
font-style: italic;
padding-left: .5em;
}
}
diff --git a/plugins/libkolab/skins/elastic/include/kolab_files.less b/plugins/libkolab/skins/elastic/include/kolab_files.less
index 401c1823..ad12f4cc 100644
--- a/plugins/libkolab/skins/elastic/include/kolab_files.less
+++ b/plugins/libkolab/skins/elastic/include/kolab_files.less
@@ -1,525 +1,525 @@
/**
* Kolab core library
*
* This file contains Elastic skin styles for kolab_files plugin.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
a.btn.fromcloud:before,
li > a.icon.saveas:before,
a.button.filesaveall:before,
a.button.saveas:before {
&:extend(.font-icon-class);
content: @fa-var-folder;
}
.menu {
a.mount.storage:before {
content: @fa-var-database;
}
a.open:before {
content: @fa-var-eye;
}
a.cancel:before {
content: @fa-var-times;
}
a.share:before {
content: @fa-var-share-alt;
}
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset a.btn-link.options.add-folder {
order: -1;
&:before {
content: @fa-var-plus;
}
}
.folderlist {
li.collection {
a.name {
padding-left: .5em;
}
&.audio a.name:before {
.font-icon-solid(@fa-var-volume-up);
}
&.video a.name:before {
.font-icon-solid(@fa-var-video);
}
&.image a.name:before {
content: @fa-var-image;
}
&.document a.name:before {
.font-icon-solid(@fa-var-book);
}
&.sessions a.name:before {
.font-icon-solid(@fa-var-users);
}
}
li.mailbox {
a.subscription {
cursor: pointer;
// reset listing's link style
padding: 0 !important;
border-left: 0;
width: auto;
&:before {
.font-icon-regular(@fa-var-bookmark); // TODO: better icon
height: auto;
color: @color-link;
margin-right: .25rem;
}
&.subscribed:before {
&:extend(.font-icon-class);
.font-icon-solid(@fa-var-bookmark); // TODO: better icon
}
}
}
}
#filelistcontainer {
position: relative;
}
#filesuploadform {
// force upload form position, otherwise it breaks layout
position: absolute !important;
}
#filelistbox {
height: 100%;
&.droptarget {
&.active {
box-shadow: 0 0 2px 1px darken(@color-toolbar-button-background-hover, 20%) inset;
}
&.hover {
box-shadow: 0 0 2px 1px darken(@color-toolbar-button-background-hover, 20%) inset;
background-color: @color-toolbar-button-background-hover;
}
}
}
.filelist {
thead {
display: none;
}
td.options {
display: none;
}
td.name {
position: relative;
}
td.mtime {
width: 11em;
}
td.size {
text-align: right;
width: 6em;
}
tr.session > td.name {
padding-right: 2em;
&:after {
&:extend(.font-icon-class);
content: @fa-var-users;
color: @color-black-shade-border;
position: absolute;
right: .25em;
top: 0;
}
}
tr.session.invited > td.name:after {
color: @color-success;
}
tr.session.owner > td.name:after {
color: @color-black;
}
}
@media screen and (max-width: @screen-width-xs) {
.filelist {
td.mtime {
display: none;
}
}
}
.filelist tbody td.filename {
& span {
background: transparent !important;
}
& span:before {
&:extend(.font-icon-class);
.font-icon-regular(@fa-var-file);
}
&.pdf span:before,
&.application_pdf span:before {
content: @fa-var-file-pdf;
}
&.application_vnd_openxmlformats_officedocument_wordprocessingml_document span:before,
&.application_vnd_openxmlformats_officedocument_wordprocessingml_template span:before,
&.application_vnd_ms_word span:before,
&.application_msword span:before {
content: @fa-var-file-word;
}
&.application_vnd_ms_excel span:before,
&.application_vnd_openxmlformats_officedocument_spreadsheetml_sheet span:before,
&.application_vnd_openxmlformats_officedocument_spreadsheetml_template span:before,
&.application_vnd_oasis_opendocument_spreadsheet span:before,
&.application_vnd_oasis_opendocument_spreadsheet_template span:before {
content: @fa-var-file-excel;
}
&.application_vnd_openxmlformats_officedocument_presentationml_presentation span:before,
&.application_vnd_openxmlformats_officedocument_presentationml_template span:before,
&.application_vnd_openxmlformats_officedocument_presentationml_slideshow span:before,
&.application_vnd_ms_powerpoint span:before {
content: @fa-var-file-powerpoint;
}
&.application_vnd_oasis_opendocument_text span:before {
content: @fa-var-file-alt; // TODO
}
&.application_vnd_oasis_opendocument_presentation span:before,
&.application_vnd_oasis_opendocument_presentation_template span:before {
content: @fa-var-file-powerpoint; // TODO
}
&.tar span:before,
&.application_zip span:before,
&.application_x_7z_compressed span:before,
&.application_x_ace span:before,
&.application_x_arc span:before,
&.application_x_arj span:before,
&.application_x_bzip_compressed_tar span:before,
&.application_x_lha span:before,
&.application_x_rar span:before,
&.application_x_tarz span:before,
&.application_x_tzo span:before,
&.application_x_zip span:before,
&.application_x_zoo span:before {
content: @fa-var-file-archive;
}
&.image span:before,
&.image_png span:before,
&.image_svg_xml span:before,
&.image_jpeg span:before,
&.image_jpeg2000 span:before,
&.image_x_eps span:before,
&.application_vnd_stardivision_draw span:before,
&.application_vnd_sun_xml_draw span:before,
&.application_vnd_sun_xml_draw_template span:before {
content: @fa-var-file-image;
}
&.application_pgp_keys span:before,
&.application_pkcs7_mime span:before {
// TODO
}
&.audio span:before {
content: @fa-var-file-audio;
}
&.video span:before {
content: @fa-var-file-video;
}
&.ascii span:before,
&.text_plain span:before {
content: @fa-var-file-alt;
}
&.vcalendar span:before {
// TODO
}
&.vcard span:before,
&.text_x_vcard span:before {
// TODO
}
&.text_html span:before {
content: @fa-var-file-code;
}
&.style_css span:before {
// TODO
}
&.text_csv span:before {
// TODO
}
&.message_rfc822 span:before {
// TODO
}
}
#folder-mount-form {
td.source {
display: flex;
align-items: flex-start;
padding: .5rem;
&.selected {
background-color: @color-list-selected-background;
}
& > input {
height: 32px;
margin-right: .5rem;
}
& > div {
flex: 1;
}
img {
height: 32px;
margin-right: .5rem;
}
.name {
font-weight: bold;
}
.description {
font-size: 90%;
}
table {
margin-top: .5rem;
}
.form-group {
margin-bottom: 0;
}
}
.auth-options {
margin-top: .5rem;
& > label:before {
line-height: 1;
}
}
}
.files-dialog {
.selection-list {
flex: 1;
min-width: 220px;
}
.selection-content {
flex: 2;
@media screen and (min-width: (@screen-width-small + 1px)) {
border: 1px solid @color-layout-border;
border-left: 0;
}
}
a.subscription {
display: none;
}
@media screen and (max-width: @screen-width-small) {
.selection-list {
display: none;
}
}
}
.document-editor-header {
.toolbar {
text-align: left !important;
flex: 1;
a {
text-align: center;
}
}
a.button.icon.members:before {
content: @fa-var-users;
}
#collaborators {
order: 9;
display: flex;
margin-right: .5rem;
margin-left: 2rem;
a.button.add:before {
&:extend(.font-icon-class);
content: @fa-var-plus;
}
.inner {
display: none;
}
}
#doc-title {
flex: 1;
order: 8;
input {
display: inline;
}
}
}
.session-members {
img.photo {
width: 48px;
height: 48px;
min-width: 48px;
overflow: hidden;
background: url("@{skin-path}/images/contactpic.png") center center no-repeat #fff;
background-size: cover;
border-radius: 50%;
border: solid 3px #eee;
margin-left: .5rem;
}
ul {
padding: 0;
margin: 0;
list-style-type: none;
li {
display: flex;
align-items: center;
}
img.photo {
margin-left: 0;
margin-right: 1em;
}
}
}
.editors-dialog {
table {
th {
border: 0;
}
tr:last-child td {
border-bottom: 1px solid @color-layout-border;
}
td.options {
width: 1%;
a.delete:before {
&:extend(.font-icon-class);
content: @fa-var-trash-alt;
display: inline;
line-height: 1;
}
}
}
label {
display: block;
}
}
button.participant.add:before {
content: @fa-var-user-plus;
}
.iframe-wrapper.file-type-audio,
.iframe-wrapper.file-type-video {
display: flex;
align-items: center;
justify-content: center;
@media screen and (min-width: (@screen-width-small + 1px)) {
padding: 1em;
}
}
#shareform {
table {
td,th {
padding-left: .15rem;
max-width: 10vw; // needed for overflow
- .overflow-ellipsis;
+ .overflow-ellipsis();
&:last-child {
padding-right: .15rem;
width: 1%;
max-width: unset;
}
}
td {
vertical-align: middle;
&.form {
input {
margin-bottom: .25rem;
width: 100%;
}
}
}
tr + tr > td {
border-top: 0;
padding-bottom: .25rem;
}
button {
padding: .185rem .75rem;
width: 100%;
}
}
}
diff --git a/plugins/libkolab/skins/elastic/include/kolab_notes.less b/plugins/libkolab/skins/elastic/include/kolab_notes.less
index 2d4fa4a7..bc856c2b 100644
--- a/plugins/libkolab/skins/elastic/include/kolab_notes.less
+++ b/plugins/libkolab/skins/elastic/include/kolab_notes.less
@@ -1,97 +1,97 @@
/**
* Kolab core library
*
* This file contains Elastic skin styles for kolab_notes plugin.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
.menu {
a.appendnote:before {
content: @fa-var-sticky-note;
}
}
// Fixes TinyMCE editor height=0 issue
#noteform iframe {
min-height: 10rem;
}
#notereferences {
margin-top: .5rem;
.attachmentslist a.delete {
margin-left: .5rem;
}
}
#notedetailstitle {
.dates {
color: @color-list-secondary;
}
}
#print-layout {
#notetitle {
font-size: 1.5rem;
line-height: 2;
}
#notetags {
margin-bottom: .5rem;
}
#notecreated {
margin-right: 2rem;
}
}
#kolabnoteslist {
tr {
display: flex;
}
td.title {
- .overflow-ellipsis;
+ .overflow-ellipsis();
flex: 1;
&:before {
&:extend(.font-icon-class);
.font-icon-regular(@fa-var-sticky-note);
}
}
td.date {
overflow: unset;
color: @color-list-secondary;
font-style: italic;
}
}
.kolabmessagenotes {
& > i.icon:before {
.font-icon-regular(@fa-var-sticky-note) !important;
}
& > a {
- .overflow-ellipsis;
+ .overflow-ellipsis();
white-space: nowrap;
display: block;
text-decoration: none;
}
}
diff --git a/plugins/libkolab/skins/elastic/include/kolab_tags.less b/plugins/libkolab/skins/elastic/include/kolab_tags.less
index 527c84bf..71f6b7bc 100644
--- a/plugins/libkolab/skins/elastic/include/kolab_tags.less
+++ b/plugins/libkolab/skins/elastic/include/kolab_tags.less
@@ -1,123 +1,116 @@
/**
* Kolab core library
*
* This file contains Elastic skin style of kolab_tags plugin.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
.menu {
a.tags:before {
content: @fa-var-tags;
}
a.tag:before,
a.tag.remove:before,
a.tag.remove.all:before {
content: @fa-var-tag;
}
}
#taglist {
li {
padding: 0 .5rem;
&:before {
&:extend(.font-icon-class);
content: @fa-var-tag;
margin: 0 .5rem 0 .2rem;
}
}
}
#tagsform option:before,
#taglist li:before,
#tag-selector li a:before {
color: darken(@color-main, 15%); // default tag color
}
#tagsform option:checked:before,
#tag-selector li:hover a:before {
color: #fff;
}
#tagsform {
min-height: 15rem;
select {
padding: 0;
margin-bottom: .5rem;
-
- &:focus {
- box-shadow: none !important;
- border: 1px solid @color-layout-border;
- }
}
option {
- color: @color-font; // fix Firefox issue caused by text-shadow below
- text-shadow: none;
padding: .5rem;
outline: 0;
border: 0;
&:before {
&:extend(.font-icon-class);
content: @fa-var-tag;
line-height: 1;
}
}
.buttons {
text-align: center;
button {
margin: 0 .25rem;
}
}
}
.tagbox {
color: #fff;
background-color: @color-main !important;
border: 0 !important;
border-radius: .25rem;
max-width: 4em;
padding: .1rem .4rem;
margin-right: .2rem;
font-weight: bold;
&:not(.tagedit-listelement) a {
color: inherit;
padding-left: .5rem;
text-decoration: none;
}
h2 > & {
font-size: 1.2rem;
}
}
.tag-droppable.formcontainer {
&.ui-droppable-active {
background-color: @color-black-shade-bg !important;
}
&.ui-droppable-hover {
background-color: @color-list-droptarget-background !important;
}
}
diff --git a/plugins/libkolab/skins/elastic/include/libcalendaring.less b/plugins/libkolab/skins/elastic/include/libcalendaring.less
index 40a47e88..f4451057 100644
--- a/plugins/libkolab/skins/elastic/include/libcalendaring.less
+++ b/plugins/libkolab/skins/elastic/include/libcalendaring.less
@@ -1,717 +1,717 @@
/**
* Kolab core library
*
* This file contains Elastic skin styles for libcalendaring plugin.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
.invitebox {
& > i.icon {
position: absolute;
top: 0;
padding-top: .5em;
}
& > span {
padding-left: 2.5em;
}
td {
padding: 2px;
vertical-align: top;
&.ititle {
font-weight: bold;
padding-right: 0.5em;
}
&.label {
color: #666;
padding-right: 1em;
}
&.sensitivity {
font-weight: bold;
}
&.recurrence-id {
text-transform: uppercase;
font-style: italic;
}
&.date.modified {
font-weight: bold;
color: @color-error;
}
em {
font-weight: bold;
}
}
.itip-buttons {
display: flex;
flex-wrap: wrap;
input.button {
margin: 0 .25rem .25rem 0;
}
}
.rsvp-buttons {
width: 100%;
padding-top: .25rem;
}
.itip-reply-controls {
margin-top: .25rem;
width: 100%;
line-height: 2;
& > label {
display: inline;
label {
line-height: 1;
margin-right: .25rem;
}
}
a {
margin-left: 1em;
white-space: nowrap;
}
}
.rsvp-status {
margin: .5rem 0;
width: 100%;
&.hint {
color: #666;
font-style: italic;
}
}
.folder-select {
white-space: nowrap;
select {
display: initial;
width: auto;
}
}
}
.rsvp-status {
&:before {
line-height: 1.1;
color: lighten(@color-black, 25%);
float: none;
display: inline;
}
&.loading:before {
&:extend(.font-icon-class);
- .animated-icon-class;
+ .animated-icon-class();
content: @fa-var-circle-notch;
line-height: 1;
}
&.declined:before {
&:extend(.font-icon-class);
content: @fa-var-ban;
color: @color-error;
}
&.tentative:before {
&:extend(.font-icon-class);
content: @fa-var-check-circle;
color: @color-warning;
}
&.accepted:before {
&:extend(.font-icon-class);
content: @fa-var-check-circle;
color: @color-success;
}
&.delegated:before {
&:extend(.font-icon-class);
content: @fa-var-share;
}
&.needs-action:before {
&:extend(.font-icon-class);
content: @fa-var-question-circle;
}
}
.attendee {
&:before {
&:extend(.font-icon-class);
content: @fa-var-question-circle;
display: inline;
float: none;
font-size: 1em;
color: @color-black-shade-text;
}
&.req-participant:before {
content: @fa-var-user;
}
&.opt-participant:before {
.font-icon-regular(@fa-var-user);
}
&.non-participant:before {
content: @fa-var-user;
color: #ccc;
}
&.chair:before {
content: @fa-var-user; // todo
color: @color-warning;
}
&.completed:before,
&.accepted:before {
content: @fa-var-check-circle;
color: @color-success;
}
&.declined:before {
content: @fa-var-ban;
color: @color-error;
}
&.tentative:before {
content: @fa-var-check-circle;
color: @color-warning;
}
&.delegated:before {
content: @fa-var-share;
}
&.organizer:before {
content: @fa-var-briefcase; // TODO: better icon
}
&.in-process:before {
content: @fa-var-cog;
}
}
.attendees-comentbox {
label {
display: inline;
}
}
.edit-attendees-table {
width: 100%;
th, td {
width: 1%;
text-align: center;
}
td {
border: 0;
padding: 0 .3rem;
}
th {
border-bottom: 1px solid #eee !important;
}
th.name, td.name, th.role, td.role {
width: auto;
text-align: left;
}
th.invite {
input {
display: none;
}
label {
cursor: pointer;
}
label:before {
&:extend(.font-icon-class);
content: @fa-var-envelope;
display: inline;
float: none;
margin-left: .25rem;
}
}
td.invite {
.custom-switch {
margin-top: .15rem;
}
}
td.name {
span {
line-height: 2.5;
display: flex;
& > :first-child {
- .overflow-ellipsis;
+ .overflow-ellipsis();
// width and flex is required to make overflow working
flex: 1;
width: 1px;
white-space: nowrap;
}
}
}
td.availability,
td.confirmstate {
span {
margin: 0;
}
span:after,
span:before {
line-height: 2;
margin: 0;
font-size: 1.2em;
height: 2em;
width: 2em;
}
}
td.options {
a {
display: inline-block;
height: 2em;
&:before {
line-height: 1.8;
margin: 0;
}
}
}
a.expandlink {
&:before {
content: @fa-var-plus-square;
line-height: 2;
}
}
.inner {
display: none;
}
html.layout-phone & {
th.availability,
th.confirmstate {
text-indent: -5000px;
}
td.role {
max-width: 7em;
}
select {
padding-left: .5rem;
}
}
}
.form-searchbar {
display: flex;
margin-bottom: .5rem;
input[type=text] {
flex: 1;
html.layout-phone & {
max-width: 50%;
}
}
input[type=button] {
margin-left: .5em;
- .overflow-ellipsis;
+ .overflow-ellipsis();
}
}
.attachmentslist li.ics:before,
.attachmentslist li.text.calendar:before,
.messagelist tbody .attachment span.ical:before {
.font-icon-regular(@fa-var-calendar-alt);
}
.alarms-input {
.edit-alarm-item {
display: flex;
& + .edit-alarm-item {
margin-top: .25rem;
}
&.first .delete-alarm,
&:not(.first) .add-alarm {
display: none;
}
}
.edit-alarm-buttons {
a {
border-top-right-radius: .25rem !important;
border-bottom-right-radius: .25rem !important;
&:before {
margin: 0;
width: 1em;
}
&:focus {
box-shadow: none;
}
&.add:before {
content: @fa-var-plus;
}
}
.inner {
display: none;
}
}
.edit-alarm-type {
flex: 1;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
&:focus {
z-index: 2;
}
}
.edit-alarm-set {
display: flex;
flex: 1;
}
.edit-alarm-values {
flex: 5;
.form-control {
border-radius: 0;
}
:first-child {
border-left: 0;
}
}
.edit-alarm-offset {
flex: 5;
}
.edit-alarm-date,
.edit-alarm-time,
.edit-alarm-related {
flex: 3;
}
}
.recurrence-form {
.recurrence-rdates {
width: 100%;
padding: 0;
list-style-type: none;
&:empty {
margin: 0;
}
a.delete {
margin-left: 2em;
&:before {
display: inline-block;
float: none;
}
}
.inner {
display: none;
}
}
.recurrence-onevery {
select {
width: 40%;
display: inline;
}
}
.inputform {
display: flex;
input.button {
margin-left: .25rem;
}
}
div.line {
width: 100%;
display: flex;
margin-bottom: .25rem;
label {
margin-left: .5em;
min-width: 4em;
line-height: 2.5;
}
}
.month,
.monthday,
.weekday {
display: inline-block;
width: 3.5em;
margin-right: .5rem;
white-space: nowrap;
input {
margin-right: .25rem;
}
}
.monthday {
width: 2.75em;
}
.table td {
border: 0;
padding: 0;
&.label {
white-space: nowrap;
}
&:first-child label {
line-height: 2.5;
}
& label.monthday:first-child {
margin-top: .5rem;
}
}
.input-group-append,
.input-group-prepend {
display: initial; // fixes buggy height of the element
}
}
#event-status-badge {
width: 7rem;
height: 7rem;
position: absolute;
top: 0;
right: 0;
overflow: hidden;
span {
display: none;
text-transform: uppercase;
line-height: 20px;
position: absolute;
left: -2.4rem;
top: 2.4rem;
width: 13.2rem;
text-align: center;
font-weight: bold;
font-size: .85rem;
color: #fff;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
&:before {
&:extend(.font-icon-class);
display: inline;
float: none;
}
.status-cancelled & {
background-color: darken(@color-error, 10%);
display: block;
&:before {
content: @fa-var-times-circle;
}
}
.sensitivity-private & {
background-color: darken(@color-warning, 10%);
display: block;
&:before {
content: @fa-var-lock;
}
}
.sensitivity-confidential & {
background-color: darken(@color-error, 10%);
display: block;
&:before {
content: @fa-var-user-secret;
}
}
}
}
#alarm-display {
h3 {
font-size: 1.2rem;
margin-bottom: .25rem;
&:before {
&:extend(.font-icon-class);
.font-icon-regular(@fa-var-calendar-alt);
font-size: 1em;
}
&.type-task:before {
.font-icon-regular(@fa-var-calendar-check);
}
}
.event-section {
font-size: .9rem;
color: @color-black-shade-text;
white-space: nowrap;
- .overflow-ellipsis;
+ .overflow-ellipsis();
}
.alarm-actions {
text-align: right;
margin-bottom: .25rem;
a {
&:first-child {
margin-right: 1em;
}
&:before {
&:extend(.font-icon-class);
display: inline;
float: none;
}
}
}
a.alarm-action-snooze:before {
content: @fa-var-bell-slash;
}
a.alarm-action-dismiss:before {
content: @fa-var-trash-alt;
}
}
#alarm-snooze-dropdown a:before {
.font-icon-regular(@fa-var-clock);
}
.dialog-message {
margin: 0;
opacity: .95;
width: 100%;
padding: .75em;
margin-top: .25em;
color: @color-message;
background-color: @color-message-warning-box-background;
& > label {
margin: 0;
display: block;
label:before {
line-height: 1.25;
margin-right: .25rem;
}
}
.message {
display: flex;
}
& + .savemode {
margin-top: 1rem;
a.btn {
margin-right: .5rem;
}
}
& > .savemode {
margin-top: .5rem;
label {
margin-right: 1rem;
}
input {
margin-right: .25rem;
}
}
}
@media screen and (max-width: 420px) {
.nav-link.nav-icon {
width: 3em;
margin-right: 5px;
padding: .5rem .5rem .5rem .65rem;
&:before {
- .font-icon-class;
+ .font-icon-class();
margin: 0 1rem 0 0;
width: 1em;
line-height: 1.2;
}
&.resources:before {
content: @fa-var-cube;
margin-left: .1rem;
}
&.attachments:before {
content: @fa-var-paperclip;
}
&.attendees:before {
content: @fa-var-users;
}
}
}
diff --git a/plugins/libkolab/skins/elastic/include/tasklist.less b/plugins/libkolab/skins/elastic/include/tasklist.less
index f4aae230..8cc8196d 100644
--- a/plugins/libkolab/skins/elastic/include/tasklist.less
+++ b/plugins/libkolab/skins/elastic/include/tasklist.less
@@ -1,363 +1,362 @@
/**
* Kolab core library
*
* This file contains Elastic skin styles for tasklist plugin.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
.menu {
a.tasklist:before,
a.tasklistlink:before,
a.taskaddlink:before {
content: @fa-var-calendar-check;
}
}
.tasklist-invitebox {
& > i.icon:before {
content: @fa-var-calendar-check !important;
}
}
.listing {
li {
& > div {
&.tasklist .listname:before {
&:extend(.font-icon-class);
content: @fa-var-calendar-check;
}
}
}
}
@tasklist-record-height: 3.8rem;
#tasklist {
li.taskitem {
border-bottom: 0;
div.taskhead {
position: relative;
display: block;
height: @tasklist-record-height;
padding-left: (1 * @listing-treetoggle-width);
outline: 0;
&.flagged {
color: @color-list-flagged !important;
}
&.selected {
background-color: @color-list-selected-background;
}
&.droptarget {
background-color: @color-list-droptarget-background;
}
&.complete {
span.title {
color: @color-list-deleted;
}
.progressbar {
display: none;
}
}
}
& > div,
& > span {
border-bottom: 1px solid @color-list-border;
}
ul {
padding: 0;
border: 0;
li {
padding-left: 0;
.taskhead, .title { padding-left: (2 * @listing-treetoggle-width + .25rem); }
.childtoggle { left: @listing-treetoggle-width; }
li {
.taskhead, .title { padding-left: (3 * @listing-treetoggle-width + .25rem); }
.childtoggle { left: (2 * @listing-treetoggle-width); }
li {
.taskhead, .title { padding-left: (4 * @listing-treetoggle-width + .25rem); }
.childtoggle { left: (3 * @listing-treetoggle-width); }
li {
.taskhead, .title { padding-left: (5 * @listing-treetoggle-width + .25rem); }
.childtoggle { left: (4 * @listing-treetoggle-width); }
li {
.taskhead, .title { padding-left: (6 * @listing-treetoggle-width + .25rem); }
.childtoggle { left: (5 * @listing-treetoggle-width); }
}
}
}
}
}
}
}
.childtoggle {
position: absolute;
left: 0;
top: 0;
width: @listing-treetoggle-width;
padding: 0 0 0 .25rem;
height: @tasklist-record-height;
cursor: pointer;
z-index: 1;
.inner {
display: none;
}
&:before {
&:extend(.font-icon-class);
content: @fa-var-angle-right;
margin: 0;
width: 1em;
line-height: @tasklist-record-height;
}
&.expanded:before {
content: @fa-var-angle-down;
}
&.collapsed:before {
content: @fa-var-angle-right;
}
}
span.title {
position: absolute;
left: 0;
right: 0;
bottom: 0;
line-height: 2em;
padding: 0 0 0 .2em;
padding-left: (1 * @listing-treetoggle-width + .25rem);
margin-right: 2em;
- .overflow-ellipsis;
+ .overflow-ellipsis();
}
span.tags {
position: absolute;
right: 2em;
top: 0;
line-height: 2em;
text-align: right;
}
span.date {
position: absolute;
padding-left: .2em;
font-size: 90%;
line-height: 2.5;
color: @color-list-secondary;
cursor: pointer;
input {
line-height: 1;
padding: 0;
margin-top: -2px;
}
}
span.flagged {
position: absolute;
right: 0;
top: 0;
line-height: 1.8em;
cursor: pointer;
}
.taskhead:not(.flagged):hover span.flagged:before {
&:extend(.font-icon-class);
.font-icon-regular(@fa-var-flag);
}
.taskhead.flagged span.flagged:before {
&:extend(.font-icon-class);
content: @fa-var-flag;
}
.progressbar {
position: absolute;
bottom: 1px;
left: .2em;
right: .2em;
.progressvalue {
border-top: 2px solid @color-warning;
}
}
.custom-switch {
position: absolute;
top: 1.4rem;
z-index: 1;
height: 2.3em;
}
.actions {
display: none;
}
// Focus indicator
@media screen and (min-width: @screen-width-large) {
.taskhead {
border-left: 2px solid transparent;
}
.taskhead.focused {
border-left: 2px solid @color-list-focus-indicator;
outline: 0;
}
}
}
html.touch #tasklist {
li {
font-size: 1rem;
}
span.flagged,
input[type=checkbox],
.custom-switch {
display: none;
}
span.title {
margin-right: .5rem;
}
span.tags {
right: .5rem;
}
}
#taskshow {
& + .formbuttons {
button.disabled {
display: none;
}
}
.task-parent-title {
color: @color-black-shade-text;
font-size: 90%;
margin-bottom: .5rem;
}
.task-title {
font-size: 1.5rem;
font-weight: bold;
}
.task-description {
margin: 1rem 0;
}
&.status-completed h2 {
color: @color-list-deleted;
}
&.status-flagged h2:before {
&:extend(.font-icon-class);
content: @fa-var-flag;
color: @color-error;
font-size: .9em;
}
.attachmentslist li {
margin-right: 1em;
}
}
#taskedit-attachment-form {
// fixes redundant scrolling and height issue on task edit form
position: absolute;
}
.messagetasklinks {
& > i.icon:before {
content: @fa-var-calendar-check !important;
}
.tasklist {
list-style-type: none;
margin: 0;
padding: 0;
li {
display: flex;
align-items: center;
}
}
input {
height: auto !important;
}
}
#print-layout {
#tasklist {
padding: 0;
li {
list-style-type: none;
}
.description {
display: block;
white-space: pre-wrap;
}
.title {
position: relative;
font-weight: bold;
padding: 0;
margin: 0;
}
.taskhead {
height: auto;
}
}
}
.taskitem-draghelper {
- .overflow-ellipsis;
+ .overflow-ellipsis();
}
.quickview-active {
// TODO ?
}
#rootdroppable {
// TODO ?
}
-
diff --git a/plugins/libkolab/skins/elastic/libkolab.less b/plugins/libkolab/skins/elastic/libkolab.less
index adc30425..00b1b5ca 100644
--- a/plugins/libkolab/skins/elastic/libkolab.less
+++ b/plugins/libkolab/skins/elastic/libkolab.less
@@ -1,622 +1,630 @@
/**
* Kolab core library
*
* This file contains Elastic skin styles for various Kolab plugins.
*
* @author Aleksander Machniak <machniak@kolabsys.com>
*
* Copyright (C) 2012-2018, Kolab Systems AG <contact@kolabsys.com>
*
* This program 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.
*
* This program 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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@skin: "elastic";
@skin-path: "../../../../skins/@{skin}";
+// Disable dark mode support for compatibility with Roundcube 1.4.
+// The variable has been added to variables.less in Roundcube 1.5.
+@dark-mode-enabled: false;
+
@import (reference) "@{skin-path}/styles/variables";
@import (reference) "@{skin-path}/styles/mixins";
/*** Common folders list extensions ***/
.listing {
// Fix focus indicator, because we add div element in the list record
@media screen and (min-width: @screen-width-large) {
li > div > a {
border-left: 2px solid transparent;
}
li > div > a:focus {
border-left: 2px solid @color-list-focus-indicator;
outline: 0;
}
}
li {
& > div {
display: flex;
& > a:first-child {
- .overflow-ellipsis;
+ .overflow-ellipsis();
position: relative;
flex-grow: 1;
& + input {
position: initial;
}
}
.custom-switch {
position: relative;
}
&.folder .listname:before {
&:extend(.font-icon-class);
content: @fa-var-sticky-note;
margin-right: .5rem;
}
span.actions {
display: flex;
input + & {
padding-right: 2em;
}
a {
padding: 0;
margin: 0;
margin-right: .2rem;
cursor: pointer;
&:before {
margin: 0;
}
&.remove {
display: none;
}
}
html.touch & {
padding-left: .2rem;
a {
margin-right: .5rem;
}
}
}
a.quickview {
&:before {
content: @fa-var-eye;
opacity: .2;
color: @color-link;
}
&:after {
display: none !important;
}
}
&.focusview {
a.quickview:before {
content: @fa-var-eye;
opacity: 1;
}
}
.subscribed {
cursor: pointer;
// reset listing's link style
padding: 0 !important;
border-left: 0;
width: auto;
&:before {
.font-icon-regular(@fa-var-bookmark); // TODO: better icon
height: auto;
color: @color-link;
margin-right: .25rem;
}
}
// span.subscribed is used on addressbooks list, a.subscribed in other places
span.subscribed:before {
&:extend(.font-icon-class);
.font-icon-regular(@fa-var-bookmark); // TODO: better icon
}
&.subscribed {
.subscribed:before {
.font-icon-solid(@fa-var-bookmark); // TODO: better icon
}
}
}
&.selected > div > * {
color: @color-list-selected;
background-color: @color-list-selected-background;
}
& > div.readonly a:first-child,
&.readonly:not(.virtual) > div a:first-child {
&:after {
&:extend(.font-icon-class);
content: @fa-var-lock;
position: absolute;
left: 2.25rem;
- top: @listing-line-height / 2;
+ top: (@listing-line-height / 2);
font-size: .9em !important;
width: .9em;
line-height: 1;
height: 1em !important;
background-color: #fff;
border-radius: 50% 50% 0 0;
color: @color-font;
opacity: .9;
html.touch & {
- top: @listing-touch-line-height / 2;
+ top: (@listing-touch-line-height / 2);
left: 2.7rem;
}
}
}
& > div.other.user > .listname,
&.other.user > div a:first-child {
&:before {
.font-icon-solid(@fa-var-user);
}
}
& > div.virtual.user > .listname,
&.virtual.user > div a:first-child {
&:after {
display: none;
}
}
& > div.virtual.shared > .listname,
&.virtual.shared > div a:first-child {
&:before {
.font-icon-solid(@fa-var-share-alt);
}
&:after {
display: none;
}
}
&.virtual > div > a {
opacity: .5;
}
}
// Tree structure fix
&.treelist:not(.notree) {
& > li > div > a {
padding-left: @listing-treetoggle-width;
}
}
li.droptarget > div {
background-color: @color-list-droptarget-background;
}
li .count {
position: absolute;
top: 0;
right: 0;
min-width: 2em;
line-height: 1.4rem;
- margin: (@listing-line-height - 1.4 * @page-font-size)/2;
+ margin: ((@listing-line-height - 1.4 * @page-font-size) / 2);
padding: 0 .3em;
border-radius: .4em;
background: @color-list-secondary;
color: #fff;
text-align: center;
font-weight: bold;
html.touch & {
line-height: 2rem;
- margin: (@listing-touch-line-height - 2 * @page-font-size)/2;
+ margin: ((@listing-touch-line-height - 2 * @page-font-size) / 2);
}
}
}
@treelist-readonly-icon-margin: 1.7em;
.treelist {
ul {
li {
a:first-child:after {
margin-left: 1 * @treelist-readonly-icon-margin !important;
}
li {
a:first-child:after {
margin-left: 2 * @treelist-readonly-icon-margin !important;
}
li {
a:first-child:after {
margin-left: 3 * @treelist-readonly-icon-margin !important;
}
li {
a:first-child:after {
margin-left: 4 * @treelist-readonly-icon-margin !important;
}
li {
a:first-child:after {
margin-left: 5 * @treelist-readonly-icon-margin !important;
}
li {
a:first-child:after {
margin-left: 6 * @treelist-readonly-icon-margin !important;
}
}
}
}
}
}
}
}
&.notree {
li a:first-child:after {
left: 1.3rem !important;
}
}
}
.searchresults {
.boxtitle {
line-height: 2rem !important;
font-size: 80%;
padding: 0 .5rem;
margin: 0;
color: @color-popover-separator;
background-color: @color-popover-separator-background;
text-align: center;
border-bottom: 1px solid @color-layout-border;
}
}
.folderlist li.mailbox {
&.type-event > a:before {
.font-icon-solid(@fa-var-calendar);
}
&.type-task > a:before {
.font-icon-solid(@fa-var-calendar-check);
}
&.type-journal > a:before {
.font-icon-regular(@fa-var-calendar);
}
&.type-contact > a:before {
.font-icon-regular(@fa-var-address-book);
}
&.type-note > a:before {
.font-icon-regular(@fa-var-sticky-note);
}
&.type-configuration > a:before {
.font-icon-solid(@fa-var-cog);
}
&.type-freebusy > a:before {
.font-icon-regular(@fa-var-calendar);
}
&.type-file > a:before {
.font-icon-solid(@fa-var-folder);
}
}
.menu {
li.search {
padding: .25rem .5rem;
}
a.history:before {
content: @fa-var-history;
}
}
button.btn {
&.save.notify:before {
content: @fa-var-envelope;
}
&.print:before {
content: @fa-var-print;
}
}
// E.g. notes preview frame
.watermark {
background: url("@{skin-path}/images/logo.svg") center no-repeat #fff;
background-size: 30%;
background-blend-mode: luminosity;
width: 100%;
height: 100%;
& > * {
display: none;
}
// this is to blend the watermark image
&:before {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(255, 255, 255, .85);
}
&.formcontainer {
background: transparent !important;
&:before {
display: none;
}
& > * {
display: block;
}
html.layout-small &,
html.layout-phone & {
overflow-y: auto !important;
}
}
}
.form-group > .datetime {
display: flex;
white-space: nowrap;
input {
width: 10em;
}
input:first-child {
margin-right: .5rem;
width: 15em;
}
a {
margin-left: 1em;
text-align: right;
flex: 1;
line-height: 2.4;
}
}
.form-section.form-group.form-check {
display: flex;
padding: 0;
label {
order: 10;
}
}
.formcontent.text-only .faded * {
color: @color-black-shade-text;
}
.linkslist {
// Reset .attachmentslist style
border: 0 !important;
background: transparent !important;
li.link {
padding: 0;
&.message.eml:before {
content: @fa-var-envelope;
}
a.messagelink {
- .overflow-ellipsis;
+ .overflow-ellipsis();
}
a.delete .inner {
display: none;
}
}
}
.print-config {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 10000;
padding: .5em 1em;
background-color: @color-black-shade-bg;
button.print {
margin-right: 1rem;
}
.prop {
line-height: 2;
margin-left: .5rem;
display: inline-block;
vertical-align: middle;
label {
margin: 0;
}
}
@media print {
display: none;
}
& + .print-content {
position: relative;
top: 0;
left: 0;
height: auto;
margin: 5em auto 0 auto;
overflow: visible;
}
}
.selection-dialog {
.ui-dialog-content {
display: flex !important;
overflow: hidden !important;
}
.selection-list {
display: flex;
flex-direction: column;
border: 1px solid @color-layout-border;
justify-content: center;
}
.ui-dialog-content .popupmenu {
display: flex !important; // overwrites .popupmenu style
width: 100%;
}
.scroller {
flex: 1;
overflow-y: auto;
}
.header {
border-bottom: 1px solid @color-layout-border;
display: flex;
background-color: @color-layout-header-background;
font-size: @layout-header-font-size;
font-weight: bold;
line-height: @layout-header-height;
height: @layout-header-height;
min-height: @layout-header-height;
padding: 0 .25em;
position: relative; // for absolute positioning of searchbar
overflow: hidden;
white-space: nowrap;
a.button {
color: @color-toolbar-button;
margin: 0 .3rem;
&:before {
margin: 0;
}
}
}
.header-title {
width: 100%;
text-align: center;
margin: 0 2em;
}
.selection-content {
display: flex;
flex-direction: column;
}
.tab-content {
margin-top: 1rem;
height: 100%;
overflow-y: auto;
}
.form-addon {
margin: 0;
padding: .5rem 0;
width: 100%;
background-color: @color-black-shade-bg;
border-top: 1px solid @color-layout-border;
}
// overwrite .popupmenu colors
.listing {
ul {
background-color: @color-layout-list-background;
}
li.selected {
color: @color-font;
}
}
@media screen and (max-width: @screen-width-small) {
.ui-dialog-content {
padding: 0 !important;
}
.ui-dialog-titlebar {
display: none;
margin: 0;
}
.selection-list {
border: 0;
}
.selection-list,
.selection-content {
.header-title {
margin-left: 0;
}
}
.header {
a:before {
font-size: 1.75rem;
}
}
}
}
// Use icons-only on taskmenu with small screen height
-@media screen and (max-height: 640px) and (min-width: (@screen-width-small + 1px)) {
+@media screen and (max-height: 750px) and (min-width: (@screen-width-small + 1px)) {
#layout-menu .popover-header img,
#layout-menu {
width: @layout-menu-width-sm;
}
#taskmenu {
a {
height: @layout-menu-width-sm;
- width: 100%;
+ width: @layout-menu-width-sm;
font-size: 1.2rem !important;
}
.special-buttons {
width: @layout-menu-width-sm;
}
span.inner {
display: none;
}
}
}
@import "include/calendar";
@import "include/kolab_activesync";
@import "include/kolab_delegation";
@import "include/kolab_files";
@import "include/kolab_notes";
@import "include/kolab_tags";
@import "include/libcalendaring";
@import "include/tasklist";
+
+& when (@dark-mode-enabled = true) {
+ @import "include/darkmode";
+}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Jan 11, 1:30 AM (3 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
421945
Default Alt Text
(91 KB)

Event Timeline