Files
edx-platform/cms/static/sass/elements/_forms.scss
David Baumgold a3887e951c Courseware license (Creative Commons): FED
Use native checkboxes for courseware license options
In Studio settings editor for video module, don't show license if feature-flagged off
Don't let Scope.contents fields leak to Studio editor
JS gettext() must all be on the same line for i18n
Add docstrings for bok-choy tests
Remove LicenseMixin from HTMLDescriptor
Responding to UX review feedback
Add aria-pressed attribute
Use https links instead of protocol-relative links for links to creativecommons.org
Remove license from course outline page in Studio
2015-05-18 14:36:04 -04:00

497 lines
8.6 KiB
SCSS

// studio - elements - forms
// ====================
// Table of Contents
// * +Forms - General
// * +Field - Is Editable
// * +Field - With Error
// * +Forms - Additional UI
// * +Form - Create New
// * +Form - Inline Name Edit
// * +Form - Create New Wrapper
// * +Form - Grandfathered
// +Forms - General
// ====================
// element-specific utilities
// --------------------
// UI: checkbox/radio inputs
%input-tickable {
~ label {
color: $color-copy-base;
}
// STATE: checked/selected
&:checked ~ label {
@extend %t-strong;
color: $ui-action-primary-color-focus;
}
}
input[type="text"],
input[type="email"],
input[type="password"],
textarea.text {
@include box-sizing(border-box);
@include linear-gradient($gray-l5, $white);
@extend %t-copy-sub2;
@extend %t-demi-strong;
padding: 6px 8px 8px;
border: 1px solid $gray-l2;
border-radius: 2px;
background-color: $gray-l5;
box-shadow: inset 0 1px 2px $shadow-l1;
font-family: 'Open Sans', sans-serif;
color: $color-copy-emphasized;
outline: 0;
&::-webkit-input-placeholder,
&:-moz-placeholder,
&:-ms-input-placeholder {
color: $gray-l2;
}
&:focus {
@include linear-gradient($paleYellow, tint($paleYellow, 90%));
outline: 0;
}
}
// +Fields - Not Editable
// ====================
.field.is-not-editable {
& label.is-focused {
color: $gray-d2;
}
label, input, textarea {
pointer-events: none;
}
}
// +Fields - With Error
// ====================
.field.error {
input, textarea {
border-color: $red;
}
}
// +Forms - Additional UI
// ====================
form {
// CASE: cosmetic checkbox input
.checkbox-cosmetic {
.input-checkbox-checked, .input-checkbox-unchecked, .label {
display: inline-block;
vertical-align: middle;
}
.input-checkbox-checked, .input-checkbox-unchecked {
width: ($baseline*0.75);
}
.input-checkbox {
@extend %cont-text-sr;
// CASE: unchecked
~ label .input-checkbox-checked {
display: none;
}
~ label .input-checkbox-unchecked {
display: inline-block;
}
// CASE: checked
&:checked {
~ label .input-checkbox-checked {
display: inline-block;
}
~ label .input-checkbox-unchecked {
display: none;
}
}
}
}
// CASE: checkbox input
.field-checkbox .input-checkbox {
@extend %input-tickable;
}
// CASE: radio input
.field-radio .input-radio {
@extend %input-tickable;
}
// CASE: file input
input[type="file"] {
@extend %t-copy-sub1;
}
.note {
@include box-sizing(border-box);
.title {
}
.copy {
}
// note with actions
&.has-actions {
@include clearfix();
.title {
}
.copy {
}
.list-actions {
}
}
}
.note-promotion {
}
}
// +Form - Create New
// ====================
// form styling for creating a new content item (course, user, textbook)
// TODO: refactor this into a placeholder to extend.
.form-create {
@extend %ui-window;
.title {
@extend %t-title4;
@extend %t-strong;
padding: $baseline ($baseline*1.5) 0 ($baseline*1.5);
}
fieldset {
padding: $baseline ($baseline*1.5);
}
.list-input {
@extend %cont-no-list;
.field {
margin: 0 0 ($baseline*0.75) 0;
&:last-child {
margin-bottom: 0;
}
&.required {
label {
@extend %t-strong;
}
label:after {
margin-left: ($baseline/4);
content: "*";
}
}
label, input, textarea {
display: block;
}
label {
@extend %t-copy-sub1;
@include transition(color $tmg-f3 ease-in-out 0s);
margin: 0 0 ($baseline/4) 0;
&.is-focused {
color: $blue;
}
}
input, textarea {
@extend %t-copy-base;
@include transition(all $tmg-f2 ease-in-out 0s);
height: 100%;
width: 100%;
padding: ($baseline/2);
&.long {
width: 100%;
}
&.short {
width: 25%;
}
/*@include placeholder {
color: $gray-l3;
}*/
&:focus {
+ .tip {
color: $gray;
}
}
}
textarea.long {
height: ($baseline*5);
}
input[type="checkbox"] {
display: inline-block;
margin-right: ($baseline/4);
width: auto;
height: auto;
& + label {
display: inline-block;
}
}
.tip {
@extend %t-copy-sub2;
@include transition(color 0.15s ease-in-out);
display: block;
margin-top: ($baseline/4);
color: $gray-l3;
}
.tip-note {
display: block;
margin-top: ($baseline/4);
}
.tip-error {
display: none;
float: none;
}
&.error {
label {
color: $red;
}
.is-showing {
@extend %anim-fadeIn;
}
.is-hiding {
@extend %anim-fadeOut;
}
.tip-error {
display: block;
color: $red;
}
input {
border-color: $red;
}
}
}
.field-inline {
input, textarea, select {
width: 62%;
display: inline-block;
}
.tip-stacked {
display: inline-block;
float: right;
width: 35%;
margin-top: 0;
}
&.error {
.tip-error {
}
}
}
.field-group {
@include clearfix();
margin: 0 0 ($baseline/2) 0;
.field {
display: block;
width: 47%;
border-bottom: none;
margin: 0 ($baseline*0.75) 0 0;
padding: ($baseline/4) 0 0 0;
float: left;
position: relative;
&:nth-child(odd) {
float: left;
}
&:nth-child(even) {
float: right;
margin-right: 0;
}
input, textarea {
width: 100%;
}
}
}
}
.actions {
box-shadow: inset 0 1px 2px $shadow;
margin-top: ($baseline*0.75);
border-top: 1px solid $gray-l1;
padding: ($baseline*0.75) ($baseline*1.5);
background: $gray-l6;
.action {
@include transition(all $tmg-f2 linear 0s);
@extend %t-strong;
display: inline-block;
padding: ($baseline/5) $baseline;
text-transform: uppercase;
}
.action-primary {
@include blue-button;
@extend %t-action2;
}
.action-secondary {
@include grey-button;
@extend %t-action2;
}
}
}
// +Form - Inline Name Edit
// ====================
// form - inline xblock name edit on unit, container, outline
// TODO: abstract this out into a Sass placeholder
.incontext-editor.is-editable {
.incontext-editor-value,
.incontext-editor-action-wrapper {
@extend %cont-truncated;
display: inline-block;
vertical-align: middle;
max-width: 80%;
}
.incontext-editor-open-action {
@extend %ui-btn-non-blue;
@extend %t-copy-base;
padding-top: ($baseline/10);
.icon.icon {
vertical-align: baseline;
}
}
.incontext-editor-form {
display: none;
}
&.is-editing {
.incontext-editor-value,
.incontext-editor-action-wrapper {
display: none;
}
.incontext-editor-form {
display: inline-block;
}
}
}
// +Form - Create New Wrapper
// ====================
.wrapper-create-element {
height: auto;
opacity: 1.0;
pointer-events: auto;
overflow: hidden;
display: none;
&.animate {
@include transition(opacity $tmg-f1 ease-in-out 0s, height $tmg-f1 ease-in-out 0s);
}
&.is-shown {
display: block;
}
}
// +Form - Grandfathered
// ====================
input.search {
padding: 6px 15px 8px 30px;
@include box-sizing(border-box);
border: 1px solid $darkGrey;
border-radius: 20px;
background: url(../images/search-icon.png) no-repeat 8px 7px #edf1f5;
font-family: 'Open Sans', sans-serif;
color: $baseFontColor;
outline: 0;
&::-webkit-input-placeholder {
color: #979faf;
}
}
label {
@extend %t-copy-sub2;
}
code {
padding: 0 4px;
border-radius: 3px;
background: #eee;
font-family: Monaco, monospace;
}
.CodeMirror {
@extend %t-copy-sub1;
background: $white;
font-family: $f-monospace;
}
.text-editor {
width: 100%;
min-height: 80px;
padding: 10px;
@include box-sizing(border-box);
border: 1px solid $mediumGrey;
@include linear-gradient(top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.3));
background-color: #edf1f5;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
font-family: Monaco, monospace;
}