diff --git a/plugins/libkolab/skins/elastic/include/tasklist.less b/plugins/libkolab/skins/elastic/include/tasklist.less index 74725b7e..8501838e 100644 --- a/plugins/libkolab/skins/elastic/include/tasklist.less +++ b/plugins/libkolab/skins/elastic/include/tasklist.less @@ -1,367 +1,366 @@ /** * Kolab core library * * This file contains Elastic skin styles for tasklist plugin. * * @author Aleksander Machniak * * Copyright (C) 2012-2018, Kolab Systems AG * * 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 . */ +#taskmenu a.tasklist:before { + content: @fa-var-calendar-check; +} + .toolbarmenu.listing li { a.tasklistlink:before, a.taskaddlink:before { .font-icon-regular(@fa-var-calendar-check); } } -.folderlist li.type-task > a::before, -#taskmenu a.tasklist: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; } } & > 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; } &.complete { span.title { text-decoration: line-through; } .progressbar { display: none; } } } 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; } 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; } } input + label, input.complete { position: absolute; right: .25rem; bottom: 0; top: auto; line-height: 2em; padding: 0 .2em 0 0; cursor: pointer; z-index: 1; line-height: 1.8; } .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], .icon-checkbox + label { 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 { text-decoration: line-through; } &.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; } input { height: auto !important; } } #print-layout { #tasklist { padding: 0; li { list-style-type: none; } .description { display: block; white-space: pre; } .title { position: relative; font-weight: bold; padding: 0; margin: 0; } .taskhead { height: auto; } } } .taskitem-draghelper { .overflow-ellipsis; } .quickview-active { // TODO ? } #rootdroppable { // TODO ? } diff --git a/plugins/libkolab/skins/elastic/libkolab.less b/plugins/libkolab/skins/elastic/libkolab.less index 0222ef18..d6f89b7b 100644 --- a/plugins/libkolab/skins/elastic/libkolab.less +++ b/plugins/libkolab/skins/elastic/libkolab.less @@ -1,392 +1,419 @@ /** * Kolab core library * * This file contains Elastic skin styles for various Kolab plugins. * * @author Aleksander Machniak * * Copyright (C) 2012-2018, Kolab Systems AG * * 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 . */ @import (reference) "../../../../skins/elastic/styles/variables"; @import (reference) "../../../../skins/elastic/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; position: relative; flex-grow: 1; &:after { color: #ccc; position: absolute; top: 0; right: 0; height: @listing-line-height !important; font-size: 1.1em !important; } & + input { position: initial; } } &.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; } } } 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; 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; } /* &.shared > div a:first-child { padding-right: 1.6em; &:after { &:extend(.font-icon-class); content: @fa-var-share-alt; } } &.user > div a:first-child { padding-right: 1.6em; &:after { &:extend(.font-icon-class); content: @fa-var-user; } } */ & > div.readonly a:first-child, &.readonly:not(.virtual) > div a:first-child { padding-right: 1.6em; &:after { &:extend(.font-icon-class); content: @fa-var-lock; } } & > div.virtual.user > .listname, &.virtual.user > div a:first-child { &:before { .font-icon-solid(@fa-var-user); } &: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; } } input.flex-checkbox { position: relative !important; margin: 0 0 0 .25em !important; & + label { position: relative !important; margin: 0 .3em 0 -1em !important; right: 0 !important; font-size: 1.15em; } } 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.4rem)/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 - 2rem)/2; } } } html.touch .listing { li { & > div { a:after { height: @listing-touch-line-height !important; } } .actions { margin-left: .2rem; a { margin-right: .5rem; } } } } .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); + } +} + .toolbarmenu.listing li { &.search { padding: .25rem .5rem; .input-group { i.icon { font-size: 80%; padding: .5rem; } input { font-size: 100%; } } } a.history:before { content: @fa-var-history; } } .formbuttons-secondary-kolab { display: inline; } a.history { &.disabled { display: none; } &:before { &:extend(.font-icon-class); content: @fa-var-history; display: inline; float: none; } } // E.g. notes preview frame .watermark { & > * { display: none; } &.formcontainer { background: transparent !important; & > * { display: initial; } } } .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; } } button.btn.save.notify:before { content: @fa-var-envelope; } button.btn.print:before { content: @fa-var-print; } .print-config { position: fixed; top: 0; left: 0; width: 100%; z-index: 10000; padding: .5em 1em; background-color: @color-black-shade-bg; .prop { margin-left: .5rem; } @media print { display: none; } & + .print-content { position: relative; top: 0; left: 0; height: auto; margin: 5em auto 0 auto; overflow: visible; } } @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";