openmct/src/styles/_forms.scss
Charles Hacskaylo fa66289d5c Misc UI 10 (#2441)
* Misc UI 10

- Add .c-input--sm CSS class for VISTA auto-clear input;

* Misc UI 10

- WIP!
- Add new glyohs: suitcase and clear data;
- Change icon-database to icon-suitcase;
- Need to unit test!

* Misc UI 10

- Refinements to shell__head Indicators layout;
- Refinements to collapse-buttons;
- Better color for Snow theme caution;

* Misc UI 10

- Better Open MCT logo for Snow theme;
- Renamed logo-app.svg to logo-openmct.svg;
- Removed unused image files;

* Misc UI 10

- Remove title attr from Angular indicator, interferes with hover
element;

* Misc UI 10

- Fix favicons, updated art;
- Removed favicon.ico;

* Misc UI 10

- Rebuild of Icomoon JSON file, which appeared to have gotten
damaged, probably due to merging;
- Font files updated, added .svg font back to repo;
- Font metrics modified to now use 20% baseline height;

* Misc UI 10

- Fix class in plot for control-bar element;
- Fix CSS in ObjectFrame.vue;

* Misc UI 10

- Rename folder styles-new to styles;

* Misc UI 10

- Remove unused src/fonts folder;

* Misc UI 10

- Symbols font now using baseline of 20%;
2019-08-30 15:51:52 -07:00

375 lines
9.1 KiB
SCSS

/*****************************************************************************
* Open MCT, Copyright (c) 2014-2018, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
.c-form {
display: flex;
flex-direction: column;
&__section {
display: inherit;
flex-direction: column;
}
&__row {
display: flex;
}
&__header {
border-radius: $basicCr;
background: $colorFormSectionHeaderBg;
color: $colorFormSectionHeaderFg;
font-size: inherit;
font-weight: normal;
margin: $interiorMargin 0;
padding: $formTBPad $formLRPad;
text-transform: uppercase;
}
}
/***************************************************** LEGACY */
.section-header {
border-radius: $basicCr;
color: lighten($colorBodyFg, 20%);
font-size: inherit;
margin: $interiorMargin 0;
padding: $formTBPad $formLRPad;
text-transform: uppercase;
.view-control {
display: inline-block;
margin-right: $interiorMargin;
width: 1em;
height: 1em;
}
}
.form {
color: $colorFormText;
height: 100%;
width: 100%;
.l-form-section {
margin-bottom: $interiorMarginLg * 2;
position: relative;
&.grows {
.l-section-body,
.form-row {
flex: 1 1 auto;
.wrapper {
height: 100%;
}
}
}
}
.form-row {
$m: $interiorMargin;
box-sizing: border-box;
border-top: 1px solid $colorFormLines;
padding: $formTBPad 0;
position: relative;
&.first {
border-top: none;
}
>.label,
>.controls {
box-sizing: border-box;
font-size: 0.8rem;
}
>.label {
// Only style this way for immediate children of .form-row; prevents problems when .label is used in .controls section of a form
min-width: 120px;
order: 1;
position: relative;
width: $formLabelW;
}
.value {
color: $colorInputFg;
}
.controls {
order: 2;
position: relative;
flex: 1 1 auto;
.l-composite-control {
&.l-checkbox {
display: inline-block;
line-height: $formRowCtrlsH;
margin-right: 5px;
}
}
.l-input-lg { // LEGACY FORM SUPPORT
input[type=text],
input[type=search],
input[type=number] {
width: 100%;
}
}
select {
margin-right: $interiorMargin;
}
}
.hint, .field-hints { color: $colorFieldHint; }
}
}
.selector-list {
// Displays tree view in dialogs
@include nice-input();
padding: $interiorMargin;
position: relative;
min-height: 0; // Chrome 73 overflow bug fix
height: 100%;
>.wrapper {
$p: $interiorMargin;
box-sizing: border-box;
overflow: auto;
}
}
.l-controls-first .form .form-row,
.form .form-row.l-controls-first {
>.label,
>.controls {
line-height: inherit;
min-height: inherit;
}
>.label {
flex: 1 1 auto;
min-width: 0;
width: auto;
order: 2;
}
>.control,
>.controls {
flex: 0 0 auto;
margin-right: $interiorMargin;
order: 1;
}
}
.l-controls-under.l-flex-row {
// Change to use column layout
flex-direction: column;
.flex-elem {
margin-bottom: $interiorMarginLg;
}
}
.l-composite-control {
vertical-align: middle;
&:not(.l-inline) {
margin-bottom: $interiorMargin;
}
&.l-inline {
display: inline-block;
}
&.l-checkbox {
.composite-control-label {
line-height: 18px;
}
}
}
.autocomplete {
input {
width: 226px;
padding: 5px 0px 5px 7px;
}
.icon-arrow-down {
position: absolute;
top: 8px;
left: 210px;
font-size: 10px;
cursor: pointer;
}
.autocompleteOptions {
border: 1px solid $colorFormLines;
border-radius: 5px;
width: 224px;
max-height: 170px;
overflow-y: auto;
overflow-x: hidden;
li {
border: 1px solid $colorFormLines;
padding: 8px 0px 8px 5px;
.optionText {
cursor: pointer;
}
}
.optionPreSelected {
background-color: $colorInspectorSectionHeaderBg;
color: $colorInspectorSectionHeaderFg;
}
}
}
/********* COMPACT FORM */
// ul > li > label, control
// Make a new UL for each form section
// Allow control-first, controls-below
// 3/8/19: Used by Summary Widgets edit UI
.l-compact-form .tree ul li,
.l-compact-form ul li {
padding: 2px 0;
}
.l-compact-form {
$h: $btnStdH;
$labelW: 40%;
$minW: $labelW;
ul {
li {
display: flex;
align-items: stretch;
padding: $interiorMargin 0;
label,
.control {
display: flex;
}
label {
line-height: $h;
width: $labelW;
}
.controls {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
flex-grow: 1;
margin-left: $interiorMargin;
min-height: $h;
line-height: $h;
input[type="text"],
input[type="search"],
input[type="number"],
button,
select {
min-height: $h;
}
> * + * {
margin-left: $interiorMarginSm;
}
}
&.connects-to-previous {
padding-top: 0;
}
&.section-header {
margin-top: $interiorMarginLg;
border-top: 1px solid $colorFormLines;
}
&.controls-first {
.control {
flex-grow: 0;
margin-right: $interiorMargin;
min-width: 0;
order: 1;
width: auto;
}
label {
flex-grow: 1;
order: 2;
width: auto;
}
}
&.controls-under {
display: block;
.control, label {
display: block;
width: auto;
}
ul li {
border-top: none !important;
padding: 0;
}
}
}
}
}
/******** VALIDATION */
.form-error {
// Block element that visually flags an error and contains a message
background-color: $colorFormFieldErrorBg;
color: $colorFormFieldErrorFg;
border-radius: $basicCr;
display: block;
padding: 1px 6px;
&:before {
content: $glyph-icon-alert-triangle;
display: inline-block;
font-family: symbolsfont;
margin-right: $interiorMarginSm;
}
}
@mixin labelValidate($sym, $c) {
> .label {
@include glyphAfter($sym);
&:after {
color: $c;
margin-left: $interiorMargin;
}
}
}
mct-form.validates {
.form-row.validates {
> .label {
padding-right: 1em; // Keep room for validation element
&:after {
font-size: .8em;
}
}
&.invalid,
&.invalid.req { @include labelValidate($glyph-icon-x, $colorFormInvalid); }
&.valid,
&.valid.req { @include labelValidate($glyph-icon-check, $colorFormValid); }
&.req { @include labelValidate($glyph-icon-asterisk, $colorFormRequired); }
}
}
body.desktop .form-row.validates > .label {
&:after {
position: absolute;
right: $interiorMargin;
height: 100%;
line-height: 200%;
}
}