diff --git a/plugins/libkolab/skins/elastic/include/kolab_files.less b/plugins/libkolab/skins/elastic/include/kolab_files.less index 34b89205..d88e8ef4 100644 --- a/plugins/libkolab/skins/elastic/include/kolab_files.less +++ b/plugins/libkolab/skins/elastic/include/kolab_files.less @@ -1,521 +1,521 @@ /** * Kolab core library * * This file contains Elastic skin styles for kolab_files 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 . */ 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; } .toolbarmenu.listing li a.mount.storage:before { content: @fa-var-database; } .toolbar a.button.open:before { content: @fa-var-eye; } .toolbar a.button.rename:before { content: @fa-var-pen-square; } .toolbar a.button.cancel:before { content: @fa-var-times; } .listing li 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; + 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; } #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; } .header-title { margin: 0 !important; } 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; &: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/libkolab.less b/plugins/libkolab/skins/elastic/libkolab.less index 0aefa0cc..221628cd 100644 --- a/plugins/libkolab/skins/elastic/libkolab.less +++ b/plugins/libkolab/skins/elastic/libkolab.less @@ -1,564 +1,564 @@ /** * 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 . */ @skin: "elastic"; @skin-path: "../../../../skins/@{skin}"; @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; 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; } } .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; } } } 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; + 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 { padding-right: 1.6em; &:after { &:extend(.font-icon-class); content: @fa-var-lock; } } & > 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.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; } } a.history { &:before { &:extend(.font-icon-class); content: @fa-var-history; display: inline; float: none; } } // 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: 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; } } .form-section.form-group.form-check { display: flex; padding: 0; label { order: 10; } } button.btn.save.notify:before { content: @fa-var-envelope; } button.btn.print:before { content: @fa-var-print; } .formcontent.text-only .faded * { color: @color-black-shade-text; } .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; } .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; } .selection-list { border: 0; } .ui-dialog-titlebar { display: none; margin: 0; } .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)) { body > #layout > .menu { width: 2.5rem; } #taskmenu { a { height: auto; width: 100%; &:before { height: 2.1rem; width: 100%; } } .special-buttons { width: 2.5rem; } 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";