Studio: revises general layout/styling of import view and adds in detail progress feedback after import (WIP)

Studio: removes import progress bar HTML and Sass; hides import status by default

Studio: revises import file upload success copy; sets up showing/hiding states for import status and additional messages

Studio: revises iconography and adds in success step in import status feedback

Studio: adds hidden styling back into import status UI
This commit is contained in:
Brian Talbot
2013-09-23 15:36:48 -04:00
committed by Julian Arni
parent a108827564
commit 59af44574c
2 changed files with 327 additions and 161 deletions

View File

@@ -1,165 +1,241 @@
// studio - views - course import
// ====================
@-webkit-keyframes opacity {
0% { opacity: 1; }
100% { opacity: 0; }
}
@-moz-keyframes opacity {
0% { opacity: 1; }
100% { opacity: 0; }
}
.view-import {
.import-overview {
@extend %ui-window;
@include clearfix;
padding: 30px 40px;
}
.description {
float: left;
width: 62%;
margin-right: 3%;
font-size: 14px;
h2 {
font-weight: 700;
font-size: 19px;
margin-bottom: 20px;
}
strong {
font-weight: 700;
}
p + p {
margin-top: 20px;
}
}
.import-form {
float: left;
width: 35%;
padding: 25px 30px 35px;
.content-primary, .content-supplementary {
@include box-sizing(border-box);
border: 1px solid $mediumGrey;
border-radius: 3px;
background: $lightGrey;
text-align: center;
float: left;
}
h2 {
margin-bottom: 30px;
font-size: 26px;
font-weight: 300;
.content-primary {
width: flex-grid(9,12);
margin-right: flex-gutter();
}
.content-supplementary {
width: flex-grid(3,12);
}
// UI: import form
.import-form {
@include box-sizing(border-box);
@extend .ui-window;
padding: $baseline ($baseline*1.5) ($baseline*1.5) ($baseline*1.5);
> .title {
@extend .t-title4;
}
.file-name-block,
.error-block {
display: none;
margin-bottom: 15px;
font-size: 13px;
margin-bottom: $baseline;
}
.error-block {
color: $error-red;
}
.status-block {
display: none;
font-size: 13px;
}
.choose-file-button {
@include blue-button;
padding: 10px 50px 11px;
font-size: 17px;
}
.choose-file-button-inline {
display: block;
}
.file-input {
display: none;
}
}
// ====================
// UI: default
.action-choose-file {
@extend .btn-primary-blue;
@extend .t-action1;
display: block;
margin: $baseline 0;
padding: ($baseline*0.75) $baseline;
}
// ====================
// UI: elem - file selection
.wrapper-file-name {
@extend .ui-well;
margin: $baseline 0;
padding: $baseline ($baseline*1.5);
background-color: $gray-l4;
.title {
@extend .t-copy-lead1;
margin-bottom: ($baseline*0.75);
overflow-x: hidden;
text-overflow: ellipsis;
.label {
margin-right: ($baseline/2);
}
.file-name {
font-weight: bold;
}
}
// artifact styling needed for current page behavior logic
.submit-button {
@include orange-button;
@extend .btn-primary-green;
@extend .t-action1;
display: none;
max-width: 100%;
padding: 8px 20px 10px;
white-space: normal;
width: 100%;
padding: ($baseline*0.75) $baseline;
}
}
// ====================
// UI: upload progress
.wrapper-status {
@include transition(opacity $tmg-f2 ease-in-out 0);
opacity: 1.0;
// STATE: hidden
&.is-hidden {
opacity: 0.0;
display: none;
}
> .title {
@extend .t-title4;
margin-bottom: $baseline;
border-bottom: 1px solid $gray-l3;
padding-bottom: ($baseline/2);
}
// elem - progress list
.list-progress {
width: flex-grid(9, 9);
.status-visual {
position: relative;
float: left;
width: flex-grid(1,9);
*[class^="icon-"] {
@include transition(opacity $tmg-f1 ease-in-out 0);
@include font-size(22);
position: absolute;
top: ($baseline/2);
left: $baseline;
}
}
.status-detail {
float: left;
width: flex-grid(8,9);
margin-left: ($baseline*3);
.title {
@extend .t-title5;
font-weight: 600;
}
.copy {
@extend .t-copy-base;
color: $gray-l2;
}
}
.item-progresspoint {
@include clearfix();
@include transition(opacity $tmg-f1 ease-in-out 0);
margin-bottom: $baseline;
border-bottom: 1px solid $gray-l4;
padding-bottom: $baseline;
&:last-child {
margin-bottom: 0;
border-bottom: none;
padding-bottom: 0;
}
// TYPE: success
&.item-progresspoint-success {
}
.progress-bar {
display: none;
width: 350px;
height: 30px;
margin: 30px auto 10px;
border: 1px solid $blue;
// STATE: not started
&.is-not-started {
opacity: 0.5;
&.loaded {
border-color: #66b93d;
.icon-warning-sign {
visibility: hidden;
opacity: 0.0;
}
.progress-fill {
background: #66b93d;
.icon-cog {
visibility: visible;
opacity: 1.0;
}
.icon-check {
opacity: 0.3;
}
}
// STATE: started
&.is-started {
.icon-warning-sign {
visibility: hidden;
opacity: 0.0;
}
.icon-cog {
visibility: visible;
opacity: 1.0;
}
}
// STATE: completed
&.is-complete {
.icon-cog {
visibility: visible;
opacity: 1.0;
}
.icon-warning-sign {
visibility: hidden;
opacity: 0.0;
}
*[class^="icon-"] {
color: $green;
}
.status-detail .title {
color: $green;
}
}
// STATE: error
&.has-error {
.icon-cog {
visibility: hidden;
opacity: 0.0;
}
.icon-warning-sign {
visibility: visible;
opacity: 1.0;
}
*[class^="icon-"] {
color: $red;
}
.status-detail .title, .status-detail .copy {
color: $red;
}
}
}
}
}
.progress-fill {
width: 0%;
height: 30px;
background: $blue;
color: #fff;
line-height: 48px;
}
}
div.status-info-block {
display: none;
text-align: left;
}
.not-started {
opacity: 0.4;
}
.not-started span {
display: none;
}
.done {
opacity: 0.7;
}
.done span {
display: none;
}
.in-progress span {
-webkit-animation-name: opacity;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: infinite;
-moz-animation-name: opacity;
-moz-animation-duration: 1s;
-moz-animation-iteration-count: infinite;
}
.in-progress span:nth-child(2) {
-webkit-animation-delay: 300ms;
-moz-animation-delay: 300ms;
}
.in-progress span:nth-child(3) {
-webkit-animation-delay: 600ms;
-moz-animation-delay: 600ms;
}