frontend/src/styles/components/tasks.scss
profi248 8fe362c267 Show an icon if a task has non-empty description (Kanban view and List view) (#360)
Add an icon to indicate that task has a description (similar to Trello). Would also be nice to add a counter for comments, but it's not possible to reasonably currently implement unless the API also gets changed.

Also add attachment icon to List view, and change the icon in Kanban view to be consistent with the rest of the icon set.

Reviewed-on: vikunja/frontend#360
Reviewed-by: konrad <konrad@kola-entertainments.de>
Co-authored-by: profi248 <kostal.david8@gmail.com>
Co-committed-by: profi248 <kostal.david8@gmail.com>
2020-12-30 21:20:33 +00:00

310 lines
5.2 KiB
SCSS

.tasks {
margin-top: 1rem;
padding: 0;
text-align: left;
@media screen and (min-width: $tablet) {
&.short {
max-width: 53vw;
}
}
@media screen and (max-width: $tablet) {
max-width: 100%;
}
&.noborder {
margin: 1rem -0.5rem;
}
.task {
display: flex;
padding: 0.5rem 1rem;
border-bottom: 1px solid darken(#fff, 10%);
transition: background-color $transition;
align-items: center;
cursor: pointer;
&:hover {
background-color: darken($light-background, 3);
}
.tasktext,
&.tasktext {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
display: inline-block;
width: 100%;
.overdue {
color: $red;
}
}
.task-list {
width: auto;
color: lighten($grey, 25%);
font-size: .9em;
white-space: nowrap;
}
.fancycheckbox span {
display: none;
}
.color-bubble {
height: 10px;
flex: 1 0 10px;
}
.tag {
margin: 0 0.5em;
}
.avatar {
border-radius: 50%;
vertical-align: bottom;
margin-left: 5px;
height: 27px;
width: 27px;
}
.list-task-icon {
margin-left: 6px;
&:not(:first-of-type) {
margin-left: 8px;
}
}
a {
color: $text;
transition: color ease $transition-duration;
&:hover {
color: darken($text, 40%);
}
}
.favorite {
opacity: 0;
text-align: center;
width: 27px;
transition: opacity $transition, color $transition;
&:hover {
color: $orange;
}
&.is-favorite {
opacity: 1;
color: $orange;
}
}
&:hover .favorite {
opacity: 1;
}
.fancycheckbox {
height: 18px;
padding-top: 0;
span {
display: none;
}
}
.tasktext.done {
text-decoration: line-through;
color: $grey;
}
span.parent-tasks {
color: lighten($dark, 50);
width: auto;
}
.remove {
color: $red;
}
input[type="checkbox"] {
vertical-align: middle;
}
.settings {
float: right;
width: 24px;
cursor: pointer;
}
&.loader-container.is-loading:after {
top: calc(50% - 1em);
left: calc(50% - 1em);
width: 2em;
height: 2em;
border-left-color: $grey-light;
border-bottom-color: $grey-light;
}
}
.task:last-child {
border-bottom: none;
}
}
.is-menu-enabled .tasks .task span:not(.tag) {
.tasktext, &.tasktext {
@media screen and (max-width: $desktop) {
max-width: calc(100vw - 27px - 2rem - 1.5rem - 3rem - #{$navbar-width}); // 1.5rem is the padding of the tasks container, 3rem is the padding of .app-container
}
// Duplicated rule to have it work properly in at least some browsers
// This should be fine as the ui doesn't work in rare edge cases to begin with
@media screen and (max-width: calc(#{$desktop} + #{$navbar-width})) {
max-width: calc(100vw - 27px - 2rem - 1.5rem - 3rem - #{$navbar-width}); // 1.5rem is the padding of the tasks container, 3rem is the padding of .app-container
}
}
}
.taskedit {
min-height: calc(100% - 1rem);
margin-top: 1rem;
.priority-select {
.select, select {
width: 100%;
}
}
ul.assingees {
list-style: none;
margin: 0;
li {
padding: 0.5em 0.5em 0;
a {
float: right;
color: $red;
transition: all $transition;
&:hover {
color: darken($red, 15);
}
}
}
}
.tag {
margin-right: 0.5em;
margin-bottom: 0.5em;
&:last-child {
margin-right: 0;
}
}
}
.show-tasks {
h3 {
text-align: left;
&.nothing {
text-align: center;
margin-top: 3em;
}
.input {
width: 190px;
vertical-align: middle;
margin: .5rem 0;
}
}
img {
margin-top: 2em;
}
.user img{
margin: 0;
}
.spinner.is-loading:after {
margin-left: calc(40% - 1em);
}
}
.defer-task {
$defer-task-max-width: 350px;
position: absolute;
width: 100%;
max-width: $defer-task-max-width;
border-radius: $radius;
border: 1px solid $grey-lighter;
padding: 1rem;
margin: 1rem;
background: $white;
color: $text;
cursor: default;
z-index: 10;
input.input {
display: none;
}
.flatpickr-calendar {
margin: 0 auto;
box-shadow: none;
span {
width: auto !important;
}
}
.defer-days {
justify-content: space-between;
display: flex;
margin: .5rem 0;
}
@media screen and (max-width: ($defer-task-max-width + 100px)) { // 100px is roughly the size the pane is pulled to the right
left: .5rem;
right: .5rem;
max-width: 100%;
width: calc(100vw - 1rem - 2rem);
.flatpickr-calendar {
max-width: 100%;
.flatpickr-innerContainer {
overflow: scroll;
}
}
}
}
.is-max-width-desktop .tasks .task {
width: 100%;
max-width: $desktop;
}
.tasktext {
:focus {
box-shadow: inset 0 0 0 2px rgba($primary, 0.5);
}
:focus:not(:focus-visible) {
outline: 0;
}
:focus-visible, :-moz-focusring {
box-shadow: inset 0 0 0 2px rgba($primary, 0.5);
}
}