Task Detail View (#37)
This commit is contained in:
66
src/styles/_animations.scss
Normal file
66
src/styles/_animations.scss
Normal file
@ -0,0 +1,66 @@
|
||||
|
||||
@-webkit-keyframes bounce {
|
||||
from,
|
||||
20%,
|
||||
53%,
|
||||
80%,
|
||||
to {
|
||||
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
40%,
|
||||
43% {
|
||||
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
-webkit-transform: translate3d(0, -30px, 0);
|
||||
transform: translate3d(0, -30px, 0);
|
||||
}
|
||||
|
||||
70% {
|
||||
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
-webkit-transform: translate3d(0, -15px, 0);
|
||||
transform: translate3d(0, -15px, 0);
|
||||
}
|
||||
|
||||
90% {
|
||||
-webkit-transform: translate3d(0, -4px, 0);
|
||||
transform: translate3d(0, -4px, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
from,
|
||||
20%,
|
||||
53%,
|
||||
80%,
|
||||
to {
|
||||
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
40%,
|
||||
43% {
|
||||
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
-webkit-transform: translate3d(0, -30px, 0);
|
||||
transform: translate3d(0, -30px, 0);
|
||||
}
|
||||
|
||||
70% {
|
||||
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
|
||||
-webkit-transform: translate3d(0, -15px, 0);
|
||||
transform: translate3d(0, -15px, 0);
|
||||
}
|
||||
|
||||
90% {
|
||||
-webkit-transform: translate3d(0, -4px, 0);
|
||||
transform: translate3d(0, -4px, 0);
|
||||
}
|
||||
}
|
@ -137,6 +137,12 @@ fieldset[disabled] .multiselect {
|
||||
|
||||
.multiselect__tags-wrap {
|
||||
display: inline;
|
||||
|
||||
.user {
|
||||
display: inline-block;
|
||||
min-height: 30px;
|
||||
margin: 0 0 .5em;
|
||||
}
|
||||
}
|
||||
|
||||
.multiselect__tags {
|
||||
|
48
src/styles/attachments.scss
Normal file
48
src/styles/attachments.scss
Normal file
@ -0,0 +1,48 @@
|
||||
.attachments {
|
||||
input[type=file] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.dropzone {
|
||||
position: fixed;
|
||||
background: rgba(250,250,250,0.8);
|
||||
top: 0;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
z-index: 100;
|
||||
text-align: center;
|
||||
|
||||
&.hidden {
|
||||
display:none;
|
||||
}
|
||||
|
||||
.drop-hint {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
|
||||
.icon {
|
||||
width: 100%;
|
||||
font-size: 5em;
|
||||
height: auto;
|
||||
text-shadow: 0 2px 2px rgba(0, 0, 0, .14), 0 3px 1px rgba(0, 0, 0, .2), 0 1px 5px rgba(0, 0, 0, .12);
|
||||
-moz-animation: bounce 2s infinite;
|
||||
-webkit-animation: bounce 2s infinite;
|
||||
animation: bounce 2s infinite;
|
||||
}
|
||||
|
||||
.hint {
|
||||
margin: .5em auto 2em;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12);
|
||||
background: $primary;
|
||||
padding: 1em;
|
||||
color: $white;
|
||||
width: 100%;
|
||||
max-width: 300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
28
src/styles/reminders.scss
Normal file
28
src/styles/reminders.scss
Normal file
@ -0,0 +1,28 @@
|
||||
.reminders {
|
||||
.reminder-input {
|
||||
margin: 0;
|
||||
|
||||
&.overdue input {
|
||||
color: $red;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $red;
|
||||
vertical-align: sub;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 90%;
|
||||
border: none;
|
||||
|
||||
&:focus {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
185
src/styles/task.scss
Normal file
185
src/styles/task.scss
Normal file
@ -0,0 +1,185 @@
|
||||
.task-view {
|
||||
.subtitle {
|
||||
color: $grey;
|
||||
|
||||
a {
|
||||
color: $grey-dark;
|
||||
}
|
||||
}
|
||||
|
||||
.has-top-border {
|
||||
border-top: 1px solid lighten($grey, 35%);
|
||||
padding-top: .5em;
|
||||
}
|
||||
|
||||
h3 .button {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.icon.is-grey {
|
||||
color: lighten($grey, 5%);
|
||||
}
|
||||
|
||||
.heading {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
text-transform: none;
|
||||
align-items: center;
|
||||
|
||||
.title {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.title.task-id {
|
||||
color: lighten($grey, 25%);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.input.title{
|
||||
font-size: 1.8rem;
|
||||
font-family: $vikunja-font;
|
||||
font-weight: 400 !important;
|
||||
background: transparent;
|
||||
border-color: transparent;
|
||||
margin: 0 .3em;
|
||||
height: 1.5em;
|
||||
padding: 0 .3em;
|
||||
|
||||
&:hover,&:active {
|
||||
background: $input-background-color;
|
||||
border-color: $input-border-color;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
background: $input-background-color;
|
||||
border-color: $input-focus-border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.is-done {
|
||||
background: $green;
|
||||
color: $white;
|
||||
padding: .5em;
|
||||
font-size: 1.5em;
|
||||
margin-left: .5em;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.date-input {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
a {
|
||||
color: $red;
|
||||
vertical-align: middle;
|
||||
padding-left: .5em;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.details {
|
||||
padding-bottom: 0.75em;
|
||||
flex-flow: row wrap;
|
||||
|
||||
.detail-title {
|
||||
display: block;
|
||||
color: lighten($grey, 15%);
|
||||
}
|
||||
|
||||
.none {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
// Break after the 4th element
|
||||
.column:nth-child(4n) {
|
||||
page-break-after: always; // CSS 2.1 syntax
|
||||
break-after: always; // New syntax
|
||||
}
|
||||
|
||||
&.labels-list, .assignees{
|
||||
.multiselect__tags {
|
||||
padding: 3px 0 0 3px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.multiselect__input, .multiselect__single {
|
||||
width: 100% !important;
|
||||
margin: 0;
|
||||
padding: .35em !important;
|
||||
position: relative !important;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
.multiselect__placeholder {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.multiselect__select {
|
||||
// We may need to enable this since it may also be responsable for showing the loading spinner
|
||||
display: none;
|
||||
}
|
||||
|
||||
.multiselect__content-wrapper {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.input:not(.has-defaults),
|
||||
.textarea,
|
||||
.select:not(.has-defaults) select {
|
||||
border-color: transparent;
|
||||
background: transparent;
|
||||
cursor: pointer;
|
||||
transition: all $transition-duration;
|
||||
|
||||
&::placeholder {
|
||||
color: $text-light;
|
||||
opacity: 1;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
border-color: $input-border-color;
|
||||
background: $input-background-color;
|
||||
}
|
||||
}
|
||||
|
||||
.textarea {
|
||||
&:hover {
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
border-color: $input-focus-border-color
|
||||
}
|
||||
}
|
||||
|
||||
.select:not(.has-defaults):after {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.select:not(.has-defaults):hover:after {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.attachments {
|
||||
margin-bottom: 0;
|
||||
|
||||
table tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.action-buttons {
|
||||
a.button {
|
||||
width: 100%;
|
||||
margin-bottom: .5em;
|
||||
justify-content: left;
|
||||
}
|
||||
}
|
||||
}
|
39
src/styles/taskRelations.scss
Normal file
39
src/styles/taskRelations.scss
Normal file
@ -0,0 +1,39 @@
|
||||
.task-relations {
|
||||
padding-bottom: 1em;
|
||||
|
||||
&.is-narrow .columns {
|
||||
display: block;
|
||||
|
||||
.column {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.related-tasks {
|
||||
margin-bottom: .75em;
|
||||
|
||||
.title {
|
||||
font-size: 1em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.tasks {
|
||||
margin: 0;
|
||||
|
||||
.task {
|
||||
padding: .5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.multiselect__input {
|
||||
width: 90% !important;
|
||||
padding-left: 5px !important;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.none {
|
||||
font-style: italic;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
@ -28,7 +28,7 @@
|
||||
padding: 0.5rem 1rem;
|
||||
border-bottom: 1px solid darken(#fff, 10%);
|
||||
|
||||
label{
|
||||
span:not(.tag) {
|
||||
width: 96%;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
@ -66,24 +66,21 @@
|
||||
height: 27px;
|
||||
width: 27px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $text;
|
||||
transition: color ease $transition-duration;
|
||||
|
||||
&:hover {
|
||||
color: darken($text, 40%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.remove {
|
||||
color: $red;
|
||||
}
|
||||
|
||||
.high-priority{
|
||||
color: $red;
|
||||
|
||||
.icon {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
&.not-so-high {
|
||||
color: $orange;
|
||||
}
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
vertical-align: middle;
|
||||
}
|
||||
@ -104,32 +101,6 @@
|
||||
min-height: calc(100% - 1rem);
|
||||
margin-top: 1rem;
|
||||
|
||||
.reminder-input{
|
||||
margin: 0;
|
||||
|
||||
&.overdue input{
|
||||
color: $red;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $red;
|
||||
vertical-align: sub;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 90%;
|
||||
border: none;
|
||||
|
||||
&:focus {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.priority-select{
|
||||
.select, select{
|
||||
@ -164,4 +135,16 @@
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.high-priority{
|
||||
color: $red;
|
||||
|
||||
.icon {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
&.not-so-high {
|
||||
color: $orange;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
@import url('/fonts/fonts.css');
|
||||
@import 'variables';
|
||||
@import "../../node_modules/bulma/bulma";
|
||||
@import '../../node_modules/bulma/bulma';
|
||||
|
||||
@import 'animations';
|
||||
|
||||
*, *:hover, *:active, *:focus{
|
||||
outline: none;
|
||||
@ -55,6 +57,10 @@
|
||||
&:focus:not(:active) {
|
||||
box-shadow: 0.1em 0.1em 0.7em lighten($color, 30) !important;
|
||||
}
|
||||
|
||||
&.is-outlined {
|
||||
border: 2px solid $color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,6 +76,10 @@
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.is-small {
|
||||
border-radius: $radius;
|
||||
}
|
||||
}
|
||||
|
||||
.input,
|
||||
@ -263,3 +273,18 @@ h1,h2,h3,h4,h5,h6{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.multiselect__tags {
|
||||
.remove-assignee {
|
||||
vertical-align: bottom;
|
||||
color: $red;
|
||||
margin-left: -1.8em;
|
||||
background: $white;
|
||||
padding: 0 4px;
|
||||
display: inline-block;
|
||||
border-radius: 100%;
|
||||
font-size: .8em;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user