/* * @copyright Copyright (c) 2016 Julius Härtl * * @author Julius Härtl * @author Artem Anufrij * @author Marin Treselj * * @license GNU AGPL version 3 or any later version * * 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 . * */ /** * Variables */ $color-main-background: #fff; $color-primary-text: #fff; $color-error: #e9322d; $color-warning: #fbd850; $color-warning-light: nc-lighten($color-warning, 15%); $color-success: #46ba61; $color-lightgrey: nc-darken($color-main-background, 4%); $color-grey: nc-darken($color-main-background, 7%); $color-darkgrey: nc-darken($color-main-background, 32%); /** * General styles */ button, .button, .app-deck .icon { display: flex; &.button-inline { border: 0; background-color: transparent; } &.button-inline:hover { border: 0; background-color: transparent; } } input.input-inline { font-size: inherit !important; font-weight: inherit; background-color: transparent; padding: 0; border: none; width: 100%; -webkit-border-radius: 0; } #searchbox { display: flex !important; } .editable-inline { cursor: text; } /** * Navigation sidebar */ .app-navigation-entry-menu { ul { flex-direction: row; } } #app-navigation { .app-navigation-entry-edit { height: auto; .colorselect div{ height: 32px; } form { display: flex; } } .board-bullet { position: absolute; margin-left: 17px; margin-top: 16px; width: 12px; height: 12px; border: none; border-radius: 50%; cursor: pointer; } .app-navigation-entry-utils { .app-navigation-entry-utils-menu-button { display: block !important; // TODO: is this needed? } .app-navigation-entry-utils-menu-share { display: flex !important; padding: 14px; opacity: 0.5; } } .app-navigation-entry-menu ul { flex-direction: row; } } /** * Board view */ #board-status { position: absolute; z-index: 999; width: 100%; height: 100%; background-color: $color-main-background; } #board { position: absolute; white-space: nowrap; overflow: auto; z-index: 100; width: 100%; bottom: 0px; top: 44px; &.as-sortable-un-selectable { .card-list { min-height: 96px; } } } #innerBoard { padding: 10px; > .as-sortable-placeholder { display: inline-block !important; margin-top: 0; margin-left: 0; } } #controls { width: inherit; z-index: 120; display: flex; align-items: center; font-size: 14pt; position: inherit; width: 100% !important; padding-left: 44px; .crumb, #controls a { top: 12px; } > h2 { white-space: nowrap; padding: 8px 7px 5px; margin: 0; } button { height: inherit; } input[type='text'] { padding: 6px; border: 0px none transparent; min-height: initial; background-color: transparent; height: inherit; } .icon-home { // TODO: deprecate this background-position: 8px center; padding: 10px 24px 10px 14px; } } #app-navigation-toggle { width: 44px; height: 44px; cursor: pointer; opacity: 1; display: inline-block !important; position: fixed; } .board-header-controls { margin-left: auto; align-items: center; &.app-popover-menu-utils { display: flex; #popover-controls { display: flex; align-items: center; } .popovermenu { margin-top: 35px; margin-right: 6px; } } > button { padding: 16px 20px; } } .filter-select { position: absolute; right: auto; top: 42px; left: -21%; li { padding: 3px; overflow: hidden; width: auto; span { display: block; float: left; width: 20px; height: 20px; margin-right: 5px; } } } #stack-add { background-color: $color-lightgrey; border-radius: 3px; margin: 3px; display: flex; align-content: center; > form { display: flex; align-content: center; } input { &:invalid, &:-moz-submit-invalid, &:-moz-ui-invalid { box-shadow: none; } } } .stack { width: 100%; vertical-align: top; h3 { padding: 10px 10px 8px; margin: 0; font-size: 12pt; font-weight: normal; overflow: hidden; display: flex; min-height: 40px; &:hover button { display: flex; } input { padding: 0; width: 100%; margin: 0; font-size: 12pt; font-weight: 700; border: 0; background-color: $color-main-background; min-height: initial; } span { white-space: normal; overflow: hidden; text-overflow: ellipsis; } button { margin-left: auto; display: flex; opacity: 0.3; padding-right: 0; } } form { width: 100%; } .as-sortable-placeholder { margin: 10px 10px 20px 10px; border: 1px dashed $color-darkgrey; &:last-child { margin: 10px; } } } .card { background-color: $color-main-background; margin: 10px 10px 20px 10px; white-space: normal; position: relative; opacity: 1.0; -webkit-box-shadow: 0 0 5px $color-darkgrey; &:last-child { margin: 10px; } &.archived .card-upper { opacity: 0.5; } .card-upper { overflow: hidden; position: relative; padding: 5px; } .card-controls { padding: 10px; background: $color-lightgrey; display: flex; position: relative; .card-options { opacity: 0.3; position: absolute; right: 10px; top: 8px; } &:hover .card-options { opacity: 1; } .icon-filetype-text { margin-right: 10px; } button { padding: 0px; margin-right: 0px; } } a { display: block; } h4 { font-weight: normal; font-size: 10pt; padding: 0; margin: 5px; overflow: hidden; text-overflow: ellipsis; } &.has-labels h4 { margin-top: 15px; } .labels { position: absolute; top: -5px; left: 10px; li { padding: 0; width: 15px; height: 20px; -webkit-border-radius: 3px; font-size: 80%; border: none transparent; float: left; span { display: none; } &:hover span { position: absolute; padding: 3px; background-color: inherit; } } } &.create { text-align: center; padding: 10px; margin: 10px; border: none; overflow: hidden; -webkit-box-shadow: none; &:hover { text-align: center; opacity: 1; } h4 { width: 100%; padding: 0; margin: 0 0 1px; input { width: 100%; border: 0; font-weight: bold; font-size: 10pt; margin: 0; padding: 0; border-bottom: 1px solid $color-primary-text; border-radius: 0; color: $color-primary-text; background-color: transparent !important; min-height: initial; } } } } .app-popover-menu-utils { margin-left: auto; min-height: 16px; } .popovermenu { z-index: 999; opacity: 1; display: block; margin-top: 25px; margin-right: 0px; &.hidden { display: none; } ul { display: flex !important; flex-direction: column; } } .info { padding-left: 5px; padding-right: 5px; display: inline-block; opacity: 0.5; i { margin-left: 2px; } span { margin-right: 2px; } } .due { border-radius: 3px; margin: -4px 4px -4px -4px; padding: 0px 4px; font-size: 90%; opacity: 0.5; display: flex; align-items: center; .icon { background-size: contain; } &.overdue { background-color: $color-error; color: $color-primary-text; .icon-badge { background-image: url('../img/calendar-white.svg'); } } &.now { background-color: $color-warning; } &.next { background-color: $color-warning-light; } span { margin-left: 3px; } } /** * App sidebar */ #app-sidebar { right: -500px; max-width: 100%; width: 500px; display:flex; flex-direction: column; &.details-visible { right: 0; } } #sidebar-header { h3 { font-size: 14pt; padding: 9px 10px; margin: 0; overflow: hidden; background-color: $color-lightgrey; input { min-height: 0px; margin: 0px; } } .icon-close { position: absolute; top: 0px; right: 0px; padding: 14px; height: 44px; width: 44px; } } #card-meta { // TODO: use .card-block instead? height: 100%; display: flex; flex-direction: column; padding: 15px; .duedate { display: flex; align-content: center; min-height: 38px; .timepicker-input { width: 50px; border-left: 0; border-radius: 0px 3px 3px 0px; } .datepicker-input { width: 85px; margin: 3px 0px; border-radius: 3px 0px 0px 3px; } .icon { opacity: 0.5; &:hover { opacity: 1; } } } .select2-container { margin: 0px; } h4 { border-bottom: 1px solid $color-lightgrey; padding: 15px 0px 5px 0px; margin: 0 0 10px 0; font-size: 15px; > div { display: inline-flex; align-content: center; justify-content: space-between; } } .save-indicator { background-color: $color-success; color: $color-primary-text; border-radius: 3px; float: right; padding: 0px 10px; font-size: 8pt !important; display: none; align-self: flex-end; } .icon-help { opacity: 0.5; padding: 5px 15px; display: inline; } #card-dates { font-size: 80%; opacity: 0.5; text-align: right; } #card-tag-label { padding-top: 0px !important; margin-top: 0px; } #card-description { height: 100%; display: flex; flex-direction: column; > div { height: 100%; } textarea { width: 100%; height: 200px; border: none; margin: 0; padding: 0; } .container { background-color: $color-main-background; } } } #card-attachments { ul { margin: 5px; } .details { font-size: 8pt; padding-left: 15px; } } #app-content { overflow: hidden; display: flex; flex-direction: column; &.details-visible { margin-right: 500px; } } .labels { display: block; overflow: hidden; li { padding: 0px 0px 5px 0px; -webkit-border-radius: 3px; margin: 1px; color: $color-primary-text; min-width: 20px; display: flex; } } /** * Color selection */ .colorselect { overflow: hidden; border-radius:3px; flex-direction: row; display: flex; .color { opacity: 0.7; height: 100%; flex-grow: 1; border: none; } .selected { background-image: url('../../../core/img/actions/checkmark.svg'); background-position: center center; background-repeat: no-repeat; opacity: 1; &.selected { background-image: url('../../../core/img/actions/checkmark-white.svg'); } } } .labels { .colorselect { padding: 0; clear: none; overflow: visible; .color { width: 26px; height: 26px; } } .label-edit { display: flex; width: 100%; .colorselect { margin: 0px 0px 0px 3px; } input { border-bottom: 1px solid $color-lightgrey; padding: 5px 5px 4px 5px !important; } } } /** * Board list main screen area */ #boardlist { position: absolute; overflow: auto; width: 100%; bottom: 0px; top: 44px; thead td { opacity: .5; padding: 15px; } td { padding: 0 10px; border-bottom: 1px solid $color-grey; .board-bullet { width: 32px; height: 32px; border-radius: 50%; cursor: pointer; margin: 6px; } form { display: flex; width: 100%; } .colorselect { flex-grow: 1; div { min-width: 32px; } } input[type=text] { flex-grow: 2; } input[type=submit] { width: 32px; } .app-popover-menu-utils { position: relative; button { opacity: 0.5; } &:hover button { opacity: 1; } } } .icon { padding: 25px; margin: 0 0 0 auto; } tr.deleted td *, tbody .board-create td { opacity: 0.5; } .popovermenu { margin-top: 5px; } .board-edit-controls { display: flex; } input { margin: 0px; } #assigned-users { display: flex; .avatardiv { margin: 6px; } } } /** * Board details */ #shareWithList { list-style-type: none; padding: 0 0 16px; li { padding-top: 5px; padding-bottom: 5px; font-weight: bold; white-space: normal; display: flex; align-items: center; } .username { padding-right: 8px; padding-left: 8px; white-space: nowrap; text-overflow: ellipsis; display: inline-block; overflow: hidden; vertical-align: middle; } .icon-delete { display: inline-block; background-size: 16px 16px; width: 16px; height: 16px; padding: 0; margin-top: 10px; } .sharingOptionsGroup { margin-right:10px; } .shareOption { margin-top: 5px; } .avatardiv { background-color: $color-lightgrey; border-radius: 16px; width: 32px; height: 32px; .icon-group { padding: 16px; opacity: 0.5; } } } #board-detail-labels { ul li { input { margin: 0px; padding: 5px; min-height: 0px; } .label-title { width: 100%; padding: 4px; border: none; border-radius: 0px 0px 5px 5px; } a.icon { padding: 5px; opacity: 0.5; &:hover { opacity: 1; } } } .color { width: 28px; height: 100%; } } .label-create { width: 100%; padding: 0px 56px 0px 0px !important; a { margin: 0px; } .icon { margin-right: 10px; } } .tabHeaders { clear: both; overflow: hidden; margin-bottom: 0; } .tabsContainer { margin-top: 15px; } .ui-select-offscreen { display: none; } .ui-select-match-item { padding: 0; float: left !important; display: block; border-radius: 0px 0px 5px 5px !important; .select-label { color: $color-primary-text; padding: 6px 23px 6px 6px; margin-right: -23px !important; } .select2-search-choice-close { z-index: 100; position: relative; display: inline-flex !important; margin-right: 7px; vertical-align: top; } } .select2-container-multi .select2-choices .select2-search-choice { padding: 3px 0 !important; border: 0 !important; overflow: hidden; } .ui-select-container[disabled] .ui-select-match-item { margin-right: 0 !important; .select-label { padding: 4px; min-width: 26px !important; height: 100%; display: inline-block; } } .select2-search input { width: 100% !important; } .select2-result-label { padding: 0px !important; span { display: flex; padding: 6px; } } /** * Markdown rendering */ #markdown { width: 100% !important; p { margin-bottom: 15px; } * { white-space: normal; word-wrap: break-word; overflow-wrap: break-word; } a { opacity: 0.5; text-decoration: underline; } ol, ul { margin-left: 20px; margin-bottom: 10px; } ul { list-style-type: disc; } h1 { font-size: 18px; font-weight: 600; margin-bottom: 5px; } h2 { font-size: 16px; font-weight: 600; } h3 { font-size: 14px; font-weight: 600; } h4 { font-size: 13px; font-weight: 600; } h6 { font-size: 12px; font-weight: 600; } pre { background-color: $color-lightgrey; padding: 3px; overflow: auto; code { white-space: pre; } } } /** * Mobile optimizations */ @media (min-width: 481px) { /* hide board actions on mobile */ .board-header-controls { display: flex; &.app-popover-menu-utils { display: none; } } #innerBoard { display: flex; align-items: flex-start; } .stack { width: 320px; min-width: 320px; display: inline-block; border-right: 1px solid $color-lightgrey; margin-right: 10px; padding-right: 10px; &:last-child { border-right: 1px solid transparent; } h3 button { display: none; } h2:hover button { display: inline-flex; } } } /** * Custom icons */ .icon-deck { background-image: url('../img/deck-dark.svg'); } .icon-group { background-image: url('../../../settings/img/users.svg'); } .icon-help { background-image: url('../../../settings/img/help.svg'); } .icon-add-white { background-image: url('../img/add-white.svg'); } .icon-archive { background-image: url('../img/archive.svg'); } .icon-archive-white { background-image: url('../img/archive-white.svg'); } .icon-details { background-image: url('../img/details.svg'); } .icon-details-white { background-image: url('../img/details-white.svg'); } .icon-home { background-image: url('../../../core/img/places/home.svg'); } .icon-badge { background-image: url('../../../core/img/places/calendar-dark.svg'); } /** * Hotfix for https://github.com/angular-ui/ui-select/issues/1652 */ .ui-select-dropdown.select2-drop-active { opacity: 1 !important; }