mirror of https://github.com/hashicorp/consul
UI: CSS Additions (mainly %frames) (#4623)
* Move almost everything to use %frames * Fix pill styles of ACL types * Remove horizontal scrollbars from dom recycling scroller component * Make text areas look ok in Firefox * Remove ember-bulma-css * New form elements, break out %toggle * %button design tweaks * %form-element design tweaks * Better hashicorp logo * Small screen CSS improvements (#4624) 1. Reduce header size when there are no breadcrumbs 2. Make the filters toggleable, closed by default 3. Reduce the size of the footer on small screens 4. Hide all non-primary columns for forms 5. Slightly change the layout of various items, mainly buttons within forms 6. Make some confirmation dialogs work vertically on small screens. Guessing we might be better just using native confirmations on small screenspull/4707/head
parent
28421bffb3
commit
d0405ba8b9
|
@ -3,7 +3,7 @@ import { get } from '@ember/object';
|
||||||
import { assert } from '@ember/debug';
|
import { assert } from '@ember/debug';
|
||||||
export default Mixin.create({
|
export default Mixin.create({
|
||||||
resize: function(e) {
|
resize: function(e) {
|
||||||
assert('with-resizing.resize needs to be overridden', false);
|
assert('with-resizing.resize needs to be overridden', false);
|
||||||
},
|
},
|
||||||
win: window,
|
win: window,
|
||||||
init: function() {
|
init: function() {
|
||||||
|
@ -17,14 +17,14 @@ export default Mixin.create({
|
||||||
},
|
},
|
||||||
didInsertElement: function() {
|
didInsertElement: function() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
get(this, 'win').addEventListener('resize', this.handler);
|
get(this, 'win').addEventListener('resize', this.handler, false);
|
||||||
this.didAppear();
|
this.didAppear();
|
||||||
},
|
},
|
||||||
didAppear: function() {
|
didAppear: function() {
|
||||||
this.handler({ target: get(this, 'win') });
|
this.handler({ target: get(this, 'win') });
|
||||||
},
|
},
|
||||||
willDestroyElement: function() {
|
willDestroyElement: function() {
|
||||||
get(this, 'win').removeEventListener('resize', this.handler);
|
get(this, 'win').removeEventListener('resize', this.handler, false);
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
@import 'components/anchors';
|
@import 'components/anchors';
|
||||||
@import 'components/buttons';
|
@import 'components/buttons';
|
||||||
@import 'components/tabs';
|
@import 'components/tabs';
|
||||||
|
@import 'components/pill';
|
||||||
@import 'components/table';
|
@import 'components/table';
|
||||||
@import 'components/form-elements';
|
@import 'components/form-elements';
|
||||||
|
|
||||||
|
@ -38,3 +39,4 @@
|
||||||
@import 'routes/dc/nodes/index';
|
@import 'routes/dc/nodes/index';
|
||||||
@import 'routes/dc/intention/index';
|
@import 'routes/dc/intention/index';
|
||||||
@import 'routes/dc/kv/index';
|
@import 'routes/dc/kv/index';
|
||||||
|
@import 'routes/dc/acls/index';
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
%box-border-000 {
|
|
||||||
/* same as decor-border-000 - but need to think about being able to import color on its own*/
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 0;
|
|
||||||
}
|
|
||||||
%box-color-yellow-500 {
|
|
||||||
@extend %box-border-000;
|
|
||||||
background-color: $ui-yellow-050;
|
|
||||||
border-color: $ui-color-warning;
|
|
||||||
}
|
|
||||||
%box-color-gray-500 {
|
|
||||||
@extend %box-border-000;
|
|
||||||
background-color: $ui-gray-050;
|
|
||||||
border-color: $ui-gray-300;
|
|
||||||
color: $ui-gray-400;
|
|
||||||
}
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
/*TODO: Move this to the reset */
|
||||||
|
* {
|
||||||
|
border-width: 0;
|
||||||
|
}
|
||||||
|
%frame-border-000 {
|
||||||
|
/* same as decor-border-000 - but need to think about being able to import color on its own*/
|
||||||
|
border-style: solid;
|
||||||
|
// border-width: 0;
|
||||||
|
}
|
||||||
|
%frame-yellow-500 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-yellow-050;
|
||||||
|
border-color: $ui-color-warning;
|
||||||
|
}
|
||||||
|
%frame-green-500 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-green-050;
|
||||||
|
border-color: $ui-green-500;
|
||||||
|
color: $ui-green-500;
|
||||||
|
}
|
||||||
|
%frame-gray-500 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-gray-050;
|
||||||
|
border-color: $ui-gray-300;
|
||||||
|
color: $ui-gray-400;
|
||||||
|
}
|
||||||
|
%frame-blue-600 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-blue-200;
|
||||||
|
border-color: $ui-gray-400;
|
||||||
|
color: $ui-blue-050;
|
||||||
|
}
|
||||||
|
%frame-blue-700 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-blue-400;
|
||||||
|
border-color: $ui-blue-800;
|
||||||
|
color: $ui-white;
|
||||||
|
}
|
||||||
|
%frame-blue-800 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-blue-500;
|
||||||
|
border-color: $ui-blue-800;
|
||||||
|
color: $ui-white;
|
||||||
|
}
|
||||||
|
%frame-blue-900 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-blue-700;
|
||||||
|
border-color: $ui-blue-800;
|
||||||
|
color: $ui-white;
|
||||||
|
}
|
||||||
|
%frame-red-300 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-white;
|
||||||
|
border-color: $ui-red-500;
|
||||||
|
color: $ui-red-500;
|
||||||
|
}
|
||||||
|
%frame-red-500 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-red-050;
|
||||||
|
border-color: $ui-red-500;
|
||||||
|
color: $ui-red-800;
|
||||||
|
}
|
||||||
|
%frame-red-600 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-red-200;
|
||||||
|
border-color: $ui-gray-400;
|
||||||
|
color: $ui-white;
|
||||||
|
}
|
||||||
|
%frame-red-700 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-red-500;
|
||||||
|
border-color: $ui-red-800;
|
||||||
|
color: $ui-white;
|
||||||
|
}
|
||||||
|
%frame-red-900 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-red-700;
|
||||||
|
border-color: $ui-red-800;
|
||||||
|
color: $ui-white;
|
||||||
|
}
|
||||||
|
%frame-magenta-300 {
|
||||||
|
@extend %frame-border-000;
|
||||||
|
background-color: $ui-white;
|
||||||
|
border-color: $brand-magenta-600;
|
||||||
|
color: $brand-magenta-600;
|
||||||
|
}
|
|
@ -1,3 +1,3 @@
|
||||||
@import './base-variables';
|
@import './base-variables';
|
||||||
@import './semantic-variables';
|
@import './semantic-variables';
|
||||||
@import './box-placeholders';
|
@import './frame-placeholders';
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
$hashicorp-svg: url('data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 107 114" width="100%" height="100%" xmlns="http://www.w3.org/2000/svg"><path d="M44.54 0L0 25.69V87.41l16.73 9.66V35.35L44.54 19.3z"/><path d="M62.32 0v49.15H44.54V30.81L27.8 40.47v62.97l16.74 9.68V64.11h17.78v18.22l16.73-9.66V9.66z"/><path d="M62.32 113.14l44.54-25.69V25.73l-16.74-9.66v61.72l-27.8 16.05z"/></svg>');
|
||||||
|
|
||||||
$consul-color-svg: url('data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M8.693 10.707a1.862 1.862 0 1 1-.006-3.724 1.862 1.862 0 0 1 .006 3.724" fill="%23961D59"/><path d="M12.336 9.776a.853.853 0 1 1 0-1.707.853.853 0 0 1 0 1.707M15.639 10.556a.853.853 0 1 1 .017-.07c-.01.022-.01.044-.017.07M14.863 8.356a.855.855 0 0 1-.925-1.279.855.855 0 0 1 1.559.255c.024.11.027.222.009.333a.821.821 0 0 1-.642.691M17.977 10.467a.849.849 0 1 1-1.67-.296.849.849 0 0 1 .982-.692c.433.073.74.465.709.905a.221.221 0 0 0-.016.076M17.286 8.368a.853.853 0 1 1-.279-1.684.853.853 0 0 1 .279 1.684M16.651 13.371a.853.853 0 1 1-1.492-.828.853.853 0 0 1 1.492.828M16.325 5.631a.853.853 0 1 1-.84-1.485.853.853 0 0 1 .84 1.485" fill="%23D62783"/><path d="M8.842 17.534c-4.798 0-8.687-3.855-8.687-8.612C.155 4.166 4.045.31 8.842.31a8.645 8.645 0 0 1 5.279 1.77l-1.056 1.372a6.987 6.987 0 0 0-7.297-.709 6.872 6.872 0 0 0 0 12.356 6.987 6.987 0 0 0 7.297-.709l1.056 1.374a8.66 8.66 0 0 1-5.279 1.77z" fill="%23D62783" fill-rule="nonzero"/></g></svg>');
|
$consul-color-svg: url('data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M8.693 10.707a1.862 1.862 0 1 1-.006-3.724 1.862 1.862 0 0 1 .006 3.724" fill="%23961D59"/><path d="M12.336 9.776a.853.853 0 1 1 0-1.707.853.853 0 0 1 0 1.707M15.639 10.556a.853.853 0 1 1 .017-.07c-.01.022-.01.044-.017.07M14.863 8.356a.855.855 0 0 1-.925-1.279.855.855 0 0 1 1.559.255c.024.11.027.222.009.333a.821.821 0 0 1-.642.691M17.977 10.467a.849.849 0 1 1-1.67-.296.849.849 0 0 1 .982-.692c.433.073.74.465.709.905a.221.221 0 0 0-.016.076M17.286 8.368a.853.853 0 1 1-.279-1.684.853.853 0 0 1 .279 1.684M16.651 13.371a.853.853 0 1 1-1.492-.828.853.853 0 0 1 1.492.828M16.325 5.631a.853.853 0 1 1-.84-1.485.853.853 0 0 1 .84 1.485" fill="%23D62783"/><path d="M8.842 17.534c-4.798 0-8.687-3.855-8.687-8.612C.155 4.166 4.045.31 8.842.31a8.645 8.645 0 0 1 5.279 1.77l-1.056 1.372a6.987 6.987 0 0 0-7.297-.709 6.872 6.872 0 0 0 0 12.356 6.987 6.987 0 0 0 7.297-.709l1.056 1.374a8.66 8.66 0 0 1-5.279 1.77z" fill="%23D62783" fill-rule="nonzero"/></g></svg>');
|
||||||
$nomad-color-svg: url('data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 16 18" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero" fill="none"><path fill="%231F9967" d="M11.569 6.871v2.965l-2.064 1.192-1.443-.894v7.74l.04.002 7.78-4.47V4.48h-.145z"/><path fill="%2325BA81" d="M7.997 0L.24 4.481l5.233 3.074 1.06-.645 2.57 1.435v-2.98l2.465-1.481v2.987l4.314-2.391v-.011z"/><path fill="%2325BA81" d="M7.02 9.54v2.976l-2.347 1.488V8.05l.89-.548L.287 4.48.24 4.48v8.926l7.821 4.467v-7.74z"/></g></svg>');
|
$nomad-color-svg: url('data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 16 18" xmlns="http://www.w3.org/2000/svg"><g fill-rule="nonzero" fill="none"><path fill="%231F9967" d="M11.569 6.871v2.965l-2.064 1.192-1.443-.894v7.74l.04.002 7.78-4.47V4.48h-.145z"/><path fill="%2325BA81" d="M7.997 0L.24 4.481l5.233 3.074 1.06-.645 2.57 1.435v-2.98l2.465-1.481v2.987l4.314-2.391v-.011z"/><path fill="%2325BA81" d="M7.02 9.54v2.976l-2.347 1.488V8.05l.89-.548L.287 4.48.24 4.48v8.926l7.821 4.467v-7.74z"/></g></svg>');
|
||||||
$terraform-color-svg: url('data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 16 18" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="%235C4EE5" d="M5.51 3.15l4.886 2.821v5.644L5.509 8.792z"/><path fill="%234040B2" d="M10.931 5.971v5.644l4.888-2.823V3.15z"/><path fill="%235C4EE5" d="M.086 0v5.642l4.887 2.823V2.82zM5.51 15.053l4.886 2.823v-5.644l-4.887-2.82z"/></g></svg>');
|
$terraform-color-svg: url('data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 16 18" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="%235C4EE5" d="M5.51 3.15l4.886 2.821v5.644L5.509 8.792z"/><path fill="%234040B2" d="M10.931 5.971v5.644l4.888-2.823V3.15z"/><path fill="%235C4EE5" d="M.086 0v5.642l4.887 2.823V2.82zM5.51 15.053l4.886 2.823v-5.644l-4.887-2.82z"/></g></svg>');
|
|
@ -9,3 +9,9 @@
|
||||||
%button:not(:last-child) {
|
%button:not(:last-child) {
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
|
%button-compact {
|
||||||
|
// @extend %button;
|
||||||
|
padding-left: calc(1.75em - 1px);
|
||||||
|
padding-right: calc(1.75em - 1px);
|
||||||
|
height: 2.1em;
|
||||||
|
}
|
||||||
|
|
|
@ -4,87 +4,84 @@
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
%primary-button,
|
%button:disabled {
|
||||||
%secondary-button,
|
cursor: default;
|
||||||
%copy-button,
|
box-shadow: none;
|
||||||
%dangerous-button {
|
}
|
||||||
@extend %button;
|
%copy-button {
|
||||||
|
@extend %button, %with-clipboard;
|
||||||
}
|
}
|
||||||
%primary-button,
|
%primary-button,
|
||||||
%secondary-button,
|
%secondary-button,
|
||||||
%dangerous-button {
|
%dangerous-button {
|
||||||
border: $decor-border-100;
|
@extend %button;
|
||||||
|
border-width: 1px;
|
||||||
border-radius: $radius-small;
|
border-radius: $radius-small;
|
||||||
box-shadow: 0 3px 1px 0 rgba($ui-black, 0.12);
|
box-shadow: 0 3px 1px 0 rgba($ui-black, 0.12);
|
||||||
}
|
}
|
||||||
%primary-button,
|
|
||||||
%copy-button {
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
%copy-button {
|
|
||||||
@extend %with-clipboard;
|
|
||||||
}
|
|
||||||
/* color */
|
/* color */
|
||||||
%secondary-button,
|
|
||||||
%dangerous-button,
|
|
||||||
%copy-button {
|
|
||||||
border-color: currentColor;
|
|
||||||
}
|
|
||||||
%secondary-button {
|
|
||||||
color: $ui-gray-400;
|
|
||||||
}
|
|
||||||
%secondary-button:hover,
|
|
||||||
%secondary-button:focus {
|
|
||||||
color: $ui-gray-600;
|
|
||||||
}
|
|
||||||
%secondary-button:active {
|
|
||||||
color: $ui-gray-600;
|
|
||||||
}
|
|
||||||
%primary-button {
|
|
||||||
background-color: $ui-color-action;
|
|
||||||
color: $ui-white;
|
|
||||||
}
|
|
||||||
%primary-button:hover,
|
|
||||||
%primary-button:focus {
|
|
||||||
background-color: $ui-blue-700;
|
|
||||||
}
|
|
||||||
%primary-button:disabled {
|
|
||||||
color: rgba($ui-white, 0.5);
|
|
||||||
background-color: rgba($ui-blue-700, 0.5);
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
%primary-button:active {
|
|
||||||
background-color: $ui-blue-900;
|
|
||||||
}
|
|
||||||
%dangerous-button {
|
|
||||||
color: $ui-color-danger;
|
|
||||||
}
|
|
||||||
%dangerous-button:hover,
|
|
||||||
%dangerous-button:focus {
|
|
||||||
background-color: $ui-color-danger;
|
|
||||||
border-color: $ui-color-danger;
|
|
||||||
color: $ui-white;
|
|
||||||
}
|
|
||||||
%dangerous-button:disabled {
|
|
||||||
color: rgba($ui-color-danger, 0.5);
|
|
||||||
border-color: rgba($ui-color-danger, 0.5);
|
|
||||||
background-color: $ui-white;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
%dangerous-button:active {
|
|
||||||
background-color: $ui-red-700;
|
|
||||||
border-color: $ui-red-700;
|
|
||||||
color: $ui-white;
|
|
||||||
}
|
|
||||||
%copy-button {
|
%copy-button {
|
||||||
color: $ui-color-action;
|
color: $ui-color-action;
|
||||||
background-color: $ui-color-transparent;
|
background-color: $ui-color-transparent;
|
||||||
}
|
}
|
||||||
%copy-button:hover,
|
%copy-button:hover:not(:disabled):not(:active),
|
||||||
%copy-button:focus {
|
%copy-button:focus {
|
||||||
color: $ui-color-action;
|
color: $ui-color-action;
|
||||||
background-color: $ui-gray-050;
|
background-color: $ui-gray-050;
|
||||||
}
|
}
|
||||||
|
%copy-button:disabled {
|
||||||
|
}
|
||||||
%copy-button:active {
|
%copy-button:active {
|
||||||
background-color: $ui-gray-200;
|
background-color: $ui-gray-200;
|
||||||
}
|
}
|
||||||
|
%primary-button {
|
||||||
|
@extend %frame-blue-800;
|
||||||
|
}
|
||||||
|
%primary-button:hover:not(:disabled):not(:active),
|
||||||
|
%primary-button:focus {
|
||||||
|
@extend %frame-blue-700;
|
||||||
|
}
|
||||||
|
%primary-button:disabled {
|
||||||
|
@extend %frame-blue-600;
|
||||||
|
}
|
||||||
|
%primary-button:hover:active {
|
||||||
|
@extend %frame-blue-900;
|
||||||
|
}
|
||||||
|
/**/
|
||||||
|
%secondary-button {
|
||||||
|
/* %frame-gray-something */
|
||||||
|
color: $ui-gray-800;
|
||||||
|
background-color: $ui-gray-050;
|
||||||
|
border-color: $ui-gray-300;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
%secondary-button:hover:not(:disabled):not(:active),
|
||||||
|
%secondary-button:focus {
|
||||||
|
/* %frame-gray-something */
|
||||||
|
background-color: $ui-white;
|
||||||
|
color: $ui-gray-800;
|
||||||
|
border-color: $ui-gray-700;
|
||||||
|
}
|
||||||
|
%secondary-button:disabled {
|
||||||
|
color: $ui-gray-600;
|
||||||
|
}
|
||||||
|
%secondary-button:active {
|
||||||
|
/* %frame-gray-something */
|
||||||
|
background-color: $ui-gray-200;
|
||||||
|
color: $ui-gray-800;
|
||||||
|
border-color: $ui-gray-700;
|
||||||
|
}
|
||||||
|
/**/
|
||||||
|
%dangerous-button {
|
||||||
|
@extend %frame-red-300;
|
||||||
|
}
|
||||||
|
%dangerous-button:hover:not(:disabled):not(:active),
|
||||||
|
%dangerous-button:focus {
|
||||||
|
@extend %frame-red-700;
|
||||||
|
}
|
||||||
|
%dangerous-button:disabled {
|
||||||
|
@extend %frame-red-600;
|
||||||
|
}
|
||||||
|
%dangerous-button:hover:active {
|
||||||
|
@extend %frame-red-900;
|
||||||
|
}
|
||||||
|
|
|
@ -2,3 +2,19 @@
|
||||||
div.with-confirmation {
|
div.with-confirmation {
|
||||||
@extend %confirmation-dialog, %confirmation-dialog-inline;
|
@extend %confirmation-dialog, %confirmation-dialog-inline;
|
||||||
}
|
}
|
||||||
|
table div.with-confirmation.confirming {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
@media #{$--lt-wide-form} {
|
||||||
|
%confirmation-dialog {
|
||||||
|
float: none;
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
%confirmation-dialog-inline {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
%confirmation-dialog-inline p {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,3 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
}
|
}
|
||||||
table div.with-confirmation.confirming {
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,3 +2,13 @@
|
||||||
main .with-feedback {
|
main .with-feedback {
|
||||||
@extend %feedback-dialog-inline;
|
@extend %feedback-dialog-inline;
|
||||||
}
|
}
|
||||||
|
@media #{$--lt-spacious-page-header} {
|
||||||
|
.actions .with-feedback p {
|
||||||
|
bottom: auto;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
.actions .with-feedback p::after {
|
||||||
|
bottom: auto;
|
||||||
|
top: -5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,27 +1,16 @@
|
||||||
|
%flash-message p {
|
||||||
|
border-width: 1px;
|
||||||
|
border-radius: $decor-radius-100;
|
||||||
|
}
|
||||||
%flash-message p.success strong {
|
%flash-message p.success strong {
|
||||||
@extend %with-passing;
|
@extend %with-passing;
|
||||||
}
|
}
|
||||||
%flash-message p.error strong {
|
%flash-message p.error strong {
|
||||||
@extend %with-critical;
|
@extend %with-critical;
|
||||||
}
|
}
|
||||||
%flash-message p {
|
|
||||||
border: $decor-border-100;
|
|
||||||
border-radius: $radius-small;
|
|
||||||
}
|
|
||||||
%flash-message p.success {
|
%flash-message p.success {
|
||||||
border-color: $ui-color-success;
|
@extend %frame-green-500;
|
||||||
background-color: $ui-green-050;
|
|
||||||
}
|
|
||||||
%flash-message p {
|
|
||||||
color: $ui-color-success;
|
|
||||||
}
|
}
|
||||||
%flash-message p.error {
|
%flash-message p.error {
|
||||||
border-color: $ui-color-failure;
|
@extend %frame-red-500;
|
||||||
background-color: $ui-red-050;
|
|
||||||
}
|
|
||||||
%flash-message p.error {
|
|
||||||
color: $ui-color-failure;
|
|
||||||
}
|
|
||||||
%flash-message p strong {
|
|
||||||
color: inherit;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
@import './form-elements/index';
|
@import './form-elements/index';
|
||||||
|
@import './toggle/index';
|
||||||
.type-toggle {
|
.type-toggle {
|
||||||
@extend %toggle;
|
@extend %toggle;
|
||||||
}
|
}
|
||||||
|
@ -8,3 +9,10 @@ label span {
|
||||||
.has-error {
|
.has-error {
|
||||||
@extend %form-element-error;
|
@extend %form-element-error;
|
||||||
}
|
}
|
||||||
|
%app-content .type-text,
|
||||||
|
%app-content .type-toggle {
|
||||||
|
@extend %form-element;
|
||||||
|
}
|
||||||
|
%app-content [role='radiogroup'] {
|
||||||
|
@extend %radio-group;
|
||||||
|
}
|
||||||
|
|
|
@ -1,94 +1,76 @@
|
||||||
%toggle {
|
%form-element,
|
||||||
float: right;
|
%form-element > em,
|
||||||
margin-bottom: 0 !important;
|
%form-element > span,
|
||||||
|
%form-element textarea {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
%form-element > em > code {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
%form-element [type='text'],
|
||||||
|
%form-element [type='password'] {
|
||||||
|
display: inline-flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
%form-element textarea {
|
||||||
|
resize: vertical;
|
||||||
}
|
}
|
||||||
%form-element > span {
|
%form-element > span {
|
||||||
display: block;
|
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
}
|
}
|
||||||
%form-element textarea {
|
%form-element textarea {
|
||||||
display: block;
|
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
min-height: 70px;
|
min-height: 70px;
|
||||||
padding: 0.625em 15px;
|
padding: 0.625em 15px;
|
||||||
resize: vertical;
|
|
||||||
}
|
}
|
||||||
%form-element [type='text'],
|
%form-element [type='text'],
|
||||||
%form-element [type='password'] {
|
%form-element [type='password'] {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: inline-flex;
|
|
||||||
justify-content: flex-start;
|
|
||||||
height: 2.25em;
|
height: 2.25em;
|
||||||
}
|
}
|
||||||
%form-element,
|
|
||||||
%form-element > em {
|
%form-element > em {
|
||||||
display: block;
|
margin-top: 2px;
|
||||||
}
|
}
|
||||||
%form-element > em {
|
%form-element > em > code {
|
||||||
margin-left: 8px;
|
padding: 0 4px;
|
||||||
margin-top: 10px;
|
}
|
||||||
|
%form-element [type='text'],
|
||||||
|
%form-element [type='password'],
|
||||||
|
%form-element textarea {
|
||||||
|
padding: 17px 13px;
|
||||||
|
}
|
||||||
|
%form-element textarea {
|
||||||
|
padding: 6px 13px;
|
||||||
|
}
|
||||||
|
%form-element > span {
|
||||||
|
margin-bottom: 0.4em !important;
|
||||||
}
|
}
|
||||||
%form-element,
|
%form-element,
|
||||||
%radio-group {
|
%radio-group {
|
||||||
margin-bottom: 1.55em;
|
margin-bottom: 1.55em;
|
||||||
}
|
}
|
||||||
%form-element > span {
|
|
||||||
margin-bottom: 0.4em !important;
|
|
||||||
}
|
|
||||||
%radio-group {
|
%radio-group {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding-left: 1px;
|
|
||||||
}
|
}
|
||||||
%radio-group label {
|
%radio-group label {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
%radio-group label > span {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
%radio-group {
|
||||||
|
padding-left: 1px;
|
||||||
|
}
|
||||||
%radio-group label:not(:last-child) {
|
%radio-group label:not(:last-child) {
|
||||||
margin-right: 25px;
|
margin-right: 25px;
|
||||||
}
|
}
|
||||||
%radio-group label > span {
|
%radio-group label > span {
|
||||||
margin-left: 1em;
|
margin-left: 1em;
|
||||||
margin-top: 0.2em;
|
margin-top: 0.2em;
|
||||||
float: right;
|
|
||||||
}
|
}
|
||||||
%radio-group label,
|
%radio-group label,
|
||||||
%radio-group label > span {
|
%radio-group label > span {
|
||||||
margin-bottom: 0 !important;
|
margin-bottom: 0 !important;
|
||||||
}
|
}
|
||||||
%form-element [type='text'],
|
|
||||||
%form-element [type='password'] {
|
|
||||||
padding: 17px 15px;
|
|
||||||
}
|
|
||||||
%toggle {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
%toggle input {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
%toggle span {
|
|
||||||
display: inline-block;
|
|
||||||
padding-left: 25px;
|
|
||||||
}
|
|
||||||
%toggle span::before,
|
|
||||||
%toggle span::after {
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
content: '';
|
|
||||||
top: 50%;
|
|
||||||
}
|
|
||||||
%toggle span::before {
|
|
||||||
left: 0px;
|
|
||||||
width: 20px;
|
|
||||||
height: 12px;
|
|
||||||
margin-top: -8px;
|
|
||||||
}
|
|
||||||
%toggle span::after {
|
|
||||||
left: 2px;
|
|
||||||
margin-top: -6px;
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
}
|
|
||||||
%toggle input:checked + span::after {
|
|
||||||
left: 10px;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,55 +1,40 @@
|
||||||
|
%radio-group label {
|
||||||
|
@extend %form-element;
|
||||||
|
}
|
||||||
%form-element-error > input,
|
%form-element-error > input,
|
||||||
%form-element-error > textarea {
|
%form-element-error > textarea {
|
||||||
border: $decor-border-100;
|
border: $decor-border-100;
|
||||||
}
|
}
|
||||||
%radio-group label {
|
|
||||||
@extend %form-element;
|
|
||||||
}
|
|
||||||
[type='radio'],
|
|
||||||
%toggle span::before,
|
|
||||||
%toggle span::after {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
%form-element [type='text'],
|
%form-element [type='text'],
|
||||||
%form-element [type='password'] {
|
%form-element [type='password'],
|
||||||
border: $decor-border-100;
|
%form-element textarea {
|
||||||
-moz-appearance: none;
|
-moz-appearance: none;
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
}
|
box-shadow: inset 0 4px 1px rgba(0, 0, 0, .06);
|
||||||
%form-element [type='text'],
|
border-radius: $decor-radius-100;
|
||||||
%form-element [type='password'] {
|
border: $decor-border-100;
|
||||||
box-shadow: none;
|
|
||||||
border-radius: $radius-small;
|
|
||||||
}
|
}
|
||||||
%form-element [type='text']:focus,
|
%form-element [type='text']:focus,
|
||||||
%form-element [type='password']:focus,
|
%form-element [type='password']:focus,
|
||||||
%form-element textarea:focus {
|
%form-element textarea:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
box-shadow: none;
|
}
|
||||||
border-color: $ui-gray-400;
|
%form-element > em > code {
|
||||||
|
border-radius: $decor-radius-100;
|
||||||
}
|
}
|
||||||
%form-element-error > input {
|
%form-element-error > input {
|
||||||
border-color: $ui-color-failure !important;
|
border-color: $ui-color-failure !important;
|
||||||
}
|
}
|
||||||
%toggle input:checked + span::before {
|
|
||||||
background-color: $ui-color-success;
|
|
||||||
}
|
|
||||||
%toggle span {
|
|
||||||
color: $ui-gray-900;
|
|
||||||
}
|
|
||||||
%form-element > em {
|
%form-element > em {
|
||||||
color: $ui-gray-400;
|
color: $ui-gray-400;
|
||||||
}
|
}
|
||||||
%toggle span::after {
|
%form-element > em > code {
|
||||||
border-radius: 100%;
|
background-color: $ui-gray-200;
|
||||||
background-color: $ui-white;
|
color: $brand-magenta-600;
|
||||||
}
|
border-radius: $decor-radius-100;
|
||||||
%toggle span::before {
|
|
||||||
background-color: $ui-gray-300;
|
|
||||||
border-radius: 7px;
|
|
||||||
}
|
}
|
||||||
%form-element > span {
|
%form-element > span {
|
||||||
color: $ui-gray-500;
|
color: $ui-black;
|
||||||
}
|
}
|
||||||
%form-element [type='text'],
|
%form-element [type='text'],
|
||||||
%form-element [type='password'],
|
%form-element [type='password'],
|
||||||
|
@ -58,16 +43,16 @@
|
||||||
}
|
}
|
||||||
%form-element [type='text'],
|
%form-element [type='text'],
|
||||||
%form-element [type='password'],
|
%form-element [type='password'],
|
||||||
%form-element textarea {
|
|
||||||
background-color: $ui-gray-050;
|
|
||||||
}
|
|
||||||
%form-element [type='text'],
|
|
||||||
%form-element [type='password'],
|
|
||||||
%form-element textarea {
|
%form-element textarea {
|
||||||
border-color: $ui-gray-300;
|
border-color: $ui-gray-300;
|
||||||
}
|
}
|
||||||
%form-element [type='text']:hover,
|
%form-element [type='text']:hover,
|
||||||
%form-element [type='password']:hover,
|
%form-element [type='password']:hover,
|
||||||
%form-element textarea:hover {
|
%form-element textarea:hover {
|
||||||
border-color: $ui-color-action;
|
border-color: $ui-gray-500;
|
||||||
|
}
|
||||||
|
%form-element [type='text']:focus,
|
||||||
|
%form-element [type='password']:focus,
|
||||||
|
%form-element textarea:focus {
|
||||||
|
border-color: $ui-blue-500;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,3 +12,24 @@
|
||||||
%healthcheck-status.critical {
|
%healthcheck-status.critical {
|
||||||
@extend %with-critical;
|
@extend %with-critical;
|
||||||
}
|
}
|
||||||
|
@media #{$--lt-spacious-healthcheck-status} {
|
||||||
|
.healthcheck-status button.copy-btn {
|
||||||
|
margin-top: -11px;
|
||||||
|
margin-right: -18px;
|
||||||
|
padding: 0;
|
||||||
|
width: 20px;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
%healthcheck-status {
|
||||||
|
padding-left: 30px;
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 15px;
|
||||||
|
padding-right: 13px;
|
||||||
|
}
|
||||||
|
%healthcheck-status::before {
|
||||||
|
width: 15px !important;
|
||||||
|
height: 15px !important;
|
||||||
|
left: 9px;
|
||||||
|
top: 13px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
%healthcheck-status {
|
%healthcheck-status {
|
||||||
border: $decor-border-100;
|
border-width: 1px;
|
||||||
}
|
}
|
||||||
%healthcheck-status,
|
%healthcheck-status,
|
||||||
%healthcheck-status pre {
|
%healthcheck-status pre {
|
||||||
border-radius: $radius-small;
|
border-radius: $decor-radius-100;
|
||||||
}
|
}
|
||||||
%healthcheck-status dd:first-of-type {
|
%healthcheck-status dd:first-of-type {
|
||||||
color: $ui-gray-400;
|
color: $ui-gray-400;
|
||||||
|
@ -13,19 +13,23 @@
|
||||||
color: $ui-white;
|
color: $ui-white;
|
||||||
}
|
}
|
||||||
%healthcheck-status.passing {
|
%healthcheck-status.passing {
|
||||||
|
/* TODO: this should be a gray frame */
|
||||||
|
// @extend %frame-green-500;
|
||||||
|
color: $ui-gray-900;
|
||||||
border-color: $ui-gray-200;
|
border-color: $ui-gray-200;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
%healthcheck-status.warning {
|
||||||
|
@extend %frame-yellow-500;
|
||||||
|
color: $ui-gray-900;
|
||||||
|
}
|
||||||
|
%healthcheck-status.critical {
|
||||||
|
@extend %frame-red-500;
|
||||||
|
color: $ui-gray-900;
|
||||||
}
|
}
|
||||||
%healthcheck-status.passing::before {
|
%healthcheck-status.passing::before {
|
||||||
background-color: $ui-color-success !important;
|
background-color: $ui-color-success !important;
|
||||||
}
|
}
|
||||||
%healthcheck-status.critical {
|
|
||||||
border-color: $ui-color-danger;
|
|
||||||
background-color: rgba($ui-color-danger, 0.1);
|
|
||||||
}
|
|
||||||
%healthcheck-status.critical::before {
|
%healthcheck-status.critical::before {
|
||||||
background-color: $ui-color-danger !important;
|
background-color: $ui-color-danger !important;
|
||||||
}
|
}
|
||||||
%healthcheck-status.warning {
|
|
||||||
border-color: $ui-color-alert;
|
|
||||||
background-color: rgba($ui-color-alert, 0.1);
|
|
||||||
}
|
|
||||||
|
|
|
@ -58,13 +58,18 @@
|
||||||
padding-left: 10px;
|
padding-left: 10px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
%with-hashicorp {
|
||||||
|
background-color: $ui-white;
|
||||||
|
}
|
||||||
%with-hashicorp::before {
|
%with-hashicorp::before {
|
||||||
@extend %pseudo-icon;
|
@extend %pseudo-icon;
|
||||||
background-image: url('data:image/svg+xml;charset=UTF-8,<svg width="23" height="22" xmlns="http://www.w3.org/2000/svg"><g fill="%23a5b0b7"><path d="M9.753 1L1 5.541v10.911l3.288 1.707V7.25l5.465-2.837z"/><path d="M13.247 1v8.688H9.753V6.446l-3.29 1.708v11.131l3.29 1.711v-8.663h3.494v3.22l3.288-1.707V2.708z"/><path d="M13.247 21L22 16.459V5.548l-3.29-1.707v10.91l-5.463 2.837z"/></g></svg>');
|
opacity: .45;
|
||||||
width: 23px;
|
background-image: $hashicorp-svg;
|
||||||
height: 22px;
|
background-size: cover;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
left: -25px;
|
left: -25px;
|
||||||
margin-top: -11px;
|
margin-top: -10px;
|
||||||
background-color: $ui-color-transparent;
|
background-color: $ui-color-transparent;
|
||||||
}
|
}
|
||||||
%with-clipboard {
|
%with-clipboard {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
%notice {
|
%notice {
|
||||||
border-radius: $radius-small;
|
border-radius: $radius-small;
|
||||||
|
border-width: 1px;
|
||||||
}
|
}
|
||||||
%notice-success,
|
%notice-success,
|
||||||
%notice-info,
|
%notice-info,
|
||||||
|
@ -26,8 +27,7 @@
|
||||||
color: $ui-color-action; /* change to info */
|
color: $ui-color-action; /* change to info */
|
||||||
}
|
}
|
||||||
%notice-warning {
|
%notice-warning {
|
||||||
@extend %box-color-yellow-500, %with-warning;
|
@extend %frame-yellow-500, %with-warning;
|
||||||
border-width: 1px;
|
|
||||||
}
|
}
|
||||||
%notice-error {
|
%notice-error {
|
||||||
@extend %with-critical;
|
@extend %with-critical;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
@import './product/index';
|
@import './product/index';
|
||||||
@import './filter-bar';
|
@import './filter-bar';
|
||||||
@import './form-elements/index';
|
|
||||||
html body > svg {
|
html body > svg {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
@ -19,12 +18,10 @@ main {
|
||||||
%app-view header form {
|
%app-view header form {
|
||||||
@extend %filter-bar;
|
@extend %filter-bar;
|
||||||
}
|
}
|
||||||
%app-content .type-text,
|
@media #{$--lt-spacious-page-header} {
|
||||||
%app-content .type-toggle {
|
%app-view header .actions {
|
||||||
@extend %form-element;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
%app-content [role='radiogroup'] {
|
|
||||||
@extend %radio-group;
|
|
||||||
}
|
}
|
||||||
%loader circle {
|
%loader circle {
|
||||||
fill: $brand-magenta-100;
|
fill: $brand-magenta-100;
|
||||||
|
@ -49,3 +46,37 @@ main {
|
||||||
#wrapper > footer {
|
#wrapper > footer {
|
||||||
@extend %footer;
|
@extend %footer;
|
||||||
}
|
}
|
||||||
|
/*TODO: This should go in reset, and probably needs select etc adding */
|
||||||
|
@media (max-width: 420px) and (-webkit-min-device-pixel-ratio: 0) {
|
||||||
|
input {
|
||||||
|
font-size: 16px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* toggleable toolbar for short screens */
|
||||||
|
[for='toolbar-toggle'] {
|
||||||
|
@extend %with-magnifier;
|
||||||
|
color: $ui-blue-500;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
margin-left: 15px;
|
||||||
|
top: -3px;
|
||||||
|
}
|
||||||
|
#toolbar-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
@media #{$--expanded-filters} {
|
||||||
|
[for='toolbar-toggle'] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media #{$--lt-expanded-filters} {
|
||||||
|
%app-view header h1 {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#toolbar-toggle + * {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#toolbar-toggle:checked + * {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -48,8 +48,7 @@
|
||||||
}
|
}
|
||||||
%app-view header .actions a,
|
%app-view header .actions a,
|
||||||
%app-view header .actions button {
|
%app-view header .actions button {
|
||||||
padding: calc(0.375em - 1px) calc(2.2em - 1px);
|
@extend %button-compact;
|
||||||
height: 2.25em;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// content
|
// content
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
border-top: $decor-border-100;
|
border-top: $decor-border-100;
|
||||||
}
|
}
|
||||||
%footer {
|
%footer {
|
||||||
border-color: $keyline-mid;
|
border-color: $ui-gray-200;
|
||||||
background-color: $ui-white;
|
background-color: $ui-white;
|
||||||
}
|
}
|
||||||
%footer > * {
|
%footer > * {
|
||||||
|
@ -16,9 +16,31 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
padding: 25px;
|
|
||||||
}
|
}
|
||||||
%footer > * {
|
%footer > * {
|
||||||
display: block;
|
display: block;
|
||||||
padding: 11px;
|
}
|
||||||
|
@media #{$--tall-footer} {
|
||||||
|
%footer {
|
||||||
|
padding-top: 25px;
|
||||||
|
padding-bottom: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media #{$--wide-footer} {
|
||||||
|
%footer {
|
||||||
|
padding-left: 25px;
|
||||||
|
padding-right: 25px;
|
||||||
|
}
|
||||||
|
%footer > * {
|
||||||
|
padding: 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media #{$--lt-wide-footer} {
|
||||||
|
%footer > :first-child {
|
||||||
|
padding: 5px;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
%footer > :not(:first-child) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,8 @@ table td a {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
tbody {
|
tbody {
|
||||||
overflow-x: visible !important;
|
/* important required as ember-collection will inline an overflow: visible*/
|
||||||
|
overflow-x: hidden !important;
|
||||||
}
|
}
|
||||||
th,
|
th,
|
||||||
td:not(.actions),
|
td:not(.actions),
|
||||||
|
@ -124,3 +125,32 @@ td dd {
|
||||||
margin-left: 22px;
|
margin-left: 22px;
|
||||||
padding-right: 10px;
|
padding-right: 10px;
|
||||||
}
|
}
|
||||||
|
/* hide actions on narrow screens, you can always click in do everything from there */
|
||||||
|
@media #{$--lt-wide-table} {
|
||||||
|
tr > .actions {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* ideally these would be in route css files, but left here as they */
|
||||||
|
/* accomplish the same thing (hide non-essential columns for tables) */
|
||||||
|
@media #{$--lt-wide-table} {
|
||||||
|
html.template-intention.template-list tr > :nth-last-child(2) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
html.template-service.template-list tr > :last-child {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
html.template-node.template-show #services tr > :last-child {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
html.template-node.template-show #lock-sessions tr >
|
||||||
|
:not(:first-child):not(:last-child) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
html.template-node.template-show #lock-sessions td:last-child {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
html.template-node.template-show #lock-sessions td:last-child button {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
@import './tabs/index';
|
@import './tabs/index';
|
||||||
main header nav:last-child {
|
main header nav:last-of-type:not(:first-of-type) {
|
||||||
@extend %tab-nav;
|
@extend %tab-nav;
|
||||||
}
|
}
|
||||||
.tab-section {
|
.tab-section {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
%tab-section {
|
%tab-section {
|
||||||
|
/* this keeps in-tab-section toolbars flush to the top, see Node Detail > Services */
|
||||||
margin-top: 0 !important;
|
margin-top: 0 !important;
|
||||||
}
|
}
|
||||||
@media #{$--horizontal-tabs} {
|
@media #{$--horizontal-tabs} {
|
||||||
|
@ -6,12 +7,9 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
%tab-nav ul li:not(:first-child) {
|
|
||||||
margin-left: 37px;
|
|
||||||
}
|
|
||||||
%tab-nav a {
|
%tab-nav a {
|
||||||
padding-left: 5px;
|
padding-left: 16px;
|
||||||
padding-right: 5px;
|
padding-right: 16px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@media #{$--lt-horizontal-tabs} {
|
@media #{$--lt-horizontal-tabs} {
|
||||||
|
@ -21,10 +19,9 @@
|
||||||
}
|
}
|
||||||
%tab-nav a {
|
%tab-nav a {
|
||||||
display: block;
|
display: block;
|
||||||
padding-top: 12px;
|
padding-top: 13px;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 13px;
|
||||||
}
|
}
|
||||||
%tab-nav input[type='radio'],
|
|
||||||
%tab-section > input[type='radio'],
|
%tab-section > input[type='radio'],
|
||||||
%tab-section > input[type='radio'] + * {
|
%tab-section > input[type='radio'] + * {
|
||||||
display: none;
|
display: none;
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
%tab-nav label {
|
%tab-nav label {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
%tab-nav ul {
|
%tab-nav a {
|
||||||
border: 0;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
%tab-nav a {
|
%tab-nav a {
|
||||||
border-bottom: $decor-border-300;
|
border-bottom: $decor-border-200;
|
||||||
}
|
}
|
||||||
%tab-nav a {
|
%tab-nav a {
|
||||||
border-color: $ui-color-transparent;
|
border-color: $ui-color-transparent;
|
||||||
color: $ui-gray-500;
|
color: $ui-gray-500;
|
||||||
}
|
}
|
||||||
%tab-nav a:hover,
|
%tab-nav li:not(.selected) a:hover,
|
||||||
%tab-nav a:focus,
|
%tab-nav li:not(.selected) a:focus,
|
||||||
%tab-nav a:active,
|
%tab-nav li:not(.selected) a:active {
|
||||||
|
/* %frame-gray-something */
|
||||||
|
border-color: $ui-color-transparent;
|
||||||
|
background-color: $ui-gray-100;
|
||||||
|
}
|
||||||
%tab-nav .selected a {
|
%tab-nav .selected a {
|
||||||
border-color: $brand-magenta-600;
|
@extend %frame-magenta-300;
|
||||||
color: $brand-magenta-600;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
%tab-nav a {
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
@import './skin';
|
||||||
|
@import './layout';
|
|
@ -0,0 +1,33 @@
|
||||||
|
%toggle {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
%toggle input {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
%toggle span {
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 25px;
|
||||||
|
}
|
||||||
|
%toggle span::before,
|
||||||
|
%toggle span::after {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
content: '';
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
|
%toggle span::before {
|
||||||
|
left: 0px;
|
||||||
|
width: 20px;
|
||||||
|
height: 12px;
|
||||||
|
margin-top: -8px;
|
||||||
|
}
|
||||||
|
%toggle span::after {
|
||||||
|
left: 2px;
|
||||||
|
margin-top: -6px;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
%toggle input:checked + span::after {
|
||||||
|
left: 10px;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/* TODO: Maybe move this to reset? */
|
||||||
|
[type='radio'],
|
||||||
|
%toggle span::before,
|
||||||
|
%toggle span::after {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
%toggle span::after {
|
||||||
|
border-radius: $decor-radius-full;
|
||||||
|
}
|
||||||
|
%toggle span::before {
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
%toggle input:checked + span::before {
|
||||||
|
background-color: $ui-color-success;
|
||||||
|
}
|
||||||
|
%toggle span {
|
||||||
|
color: $ui-gray-900;
|
||||||
|
}
|
||||||
|
%toggle span::after {
|
||||||
|
background-color: $ui-white;
|
||||||
|
}
|
||||||
|
%toggle span::before {
|
||||||
|
background-color: $ui-gray-300;
|
||||||
|
}
|
||||||
|
|
|
@ -20,8 +20,26 @@ main,
|
||||||
html.template-edit main {
|
html.template-edit main {
|
||||||
@extend %content-container-restricted;
|
@extend %content-container-restricted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media #{$--lt-spacious-page-header} {
|
||||||
|
html.template-list:not(.template-kv) main {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media #{$--lt-spacious-page-header} {
|
||||||
|
.actions button.copy-btn {
|
||||||
|
margin-top: -42px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
/* TODO: keep margin below forms, move elsewhere */
|
/* TODO: keep margin below forms, move elsewhere */
|
||||||
main form,
|
main form,
|
||||||
main form + div .with-confirmation {
|
main form + div .with-confirmation {
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
}
|
}
|
||||||
|
@media #{$--lt-wide-form} {
|
||||||
|
main form [type="reset"] {
|
||||||
|
float: right;
|
||||||
|
margin-right: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -37,11 +37,13 @@ h2,
|
||||||
%healthchecked-resource header span,
|
%healthchecked-resource header span,
|
||||||
%healthcheck-status dt,
|
%healthcheck-status dt,
|
||||||
%copy-button,
|
%copy-button,
|
||||||
%form-element > span,
|
|
||||||
%app-content div > dl > dt,
|
%app-content div > dl > dt,
|
||||||
td a {
|
td a {
|
||||||
font-weight: $typo-weight-semibold;
|
font-weight: $typo-weight-semibold;
|
||||||
}
|
}
|
||||||
|
%form-element > span {
|
||||||
|
font-weight: $typo-weight-semibold;
|
||||||
|
}
|
||||||
%button {
|
%button {
|
||||||
font-weight: $typo-weight-semibold !important;
|
font-weight: $typo-weight-semibold !important;
|
||||||
}
|
}
|
||||||
|
@ -63,12 +65,6 @@ td:first-child em,
|
||||||
%healthchecked-resource header em {
|
%healthchecked-resource header em {
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
%form-element > span {
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
%form-element > span > * {
|
|
||||||
text-transform: none;
|
|
||||||
}
|
|
||||||
%footer > * {
|
%footer > * {
|
||||||
font-size: inherit;
|
font-size: inherit;
|
||||||
}
|
}
|
||||||
|
@ -87,6 +83,7 @@ td {
|
||||||
font-size: $typo-size-600;
|
font-size: $typo-size-600;
|
||||||
}
|
}
|
||||||
th,
|
th,
|
||||||
|
%form-element > span,
|
||||||
%with-tooltip::before,
|
%with-tooltip::before,
|
||||||
%healthchecked-resource strong,
|
%healthchecked-resource strong,
|
||||||
%footer {
|
%footer {
|
||||||
|
@ -100,9 +97,8 @@ th,
|
||||||
%app-view > div.disabled > div,
|
%app-view > div.disabled > div,
|
||||||
.template-error > div,
|
.template-error > div,
|
||||||
%button,
|
%button,
|
||||||
.with-confirmation p,
|
|
||||||
%form-element > em,
|
%form-element > em,
|
||||||
%form-element > span,
|
.with-confirmation p,
|
||||||
%feedback-dialog-inline p {
|
%feedback-dialog-inline p {
|
||||||
font-size: $typo-size-800;
|
font-size: $typo-size-800;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
@media #{$--lt-wide-form} {
|
||||||
|
html.template-acl.template-edit main header .actions {
|
||||||
|
float: none;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
html.template-acl.template-edit main header .actions .with-feedback {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
html.template-acl.template-edit main header .actions .with-confirmation {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,3 +2,7 @@ html.template-kv.template-edit div > .with-confirmation {
|
||||||
float: none;
|
float: none;
|
||||||
margin-top: 1.7em;
|
margin-top: 1.7em;
|
||||||
}
|
}
|
||||||
|
html.template-kv.template-edit .type-toggle {
|
||||||
|
float: right;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
|
@ -16,3 +16,24 @@ $--lt-horizontal-session-list: '(max-width: 899px)';
|
||||||
|
|
||||||
$--min-padding: '(max-width: 600px)';
|
$--min-padding: '(max-width: 600px)';
|
||||||
$--max-padding: '(min-width: 1260px)';
|
$--max-padding: '(min-width: 1260px)';
|
||||||
|
|
||||||
|
$--tall-footer: '(min-height: 815px)';
|
||||||
|
$--lt-tall-footer: '(max-height: 814px)';
|
||||||
|
|
||||||
|
$--wide-footer: '(min-width: 421px)';
|
||||||
|
$--lt-wide-footer: '(max-width: 420px)';
|
||||||
|
|
||||||
|
$--expanded-filters: '(min-width: 421px) (min-height: 815px)';
|
||||||
|
$--lt-expanded-filters: '(max-width: 420px) (max-height: 814px)';
|
||||||
|
|
||||||
|
$--spacious-page-header: '(min-width: 421px) (min-height: 815px)';
|
||||||
|
$--lt-spacious-page-header: '(max-width: 420px) (max-height: 814px)';
|
||||||
|
|
||||||
|
$--spacious-healthcheck-status: '(min-width: 421px)';
|
||||||
|
$--lt-spacious-healthcheck-status: '(max-width: 420px)';
|
||||||
|
|
||||||
|
$--wide-form: '(min-width: 421px)';
|
||||||
|
$--lt-wide-form: '(max-width: 420px)';
|
||||||
|
|
||||||
|
$--wide-table: '(min-width: 421px)';
|
||||||
|
$--lt-wide-table: '(max-width: 420px)';
|
||||||
|
|
|
@ -19,7 +19,10 @@
|
||||||
{{#yield-slot 'header'}}{{yield}}{{/yield-slot}}
|
{{#yield-slot 'header'}}{{yield}}{{/yield-slot}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{#yield-slot 'toolbar'}}{{yield}}{{/yield-slot}}
|
{{#yield-slot 'toolbar'}}
|
||||||
|
<input type="checkbox" id="toolbar-toggle" />
|
||||||
|
{{yield}}
|
||||||
|
{{/yield-slot}}
|
||||||
</header>
|
</header>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<div>
|
<div>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<div role="radiogroup" class={{if item.error.Type ' has-error'}}>
|
<div role="radiogroup" class={{if item.error.Type ' has-error'}}>
|
||||||
{{#each types as |type|}}
|
{{#each types as |type|}}
|
||||||
<label>
|
<label>
|
||||||
<span>{{type}}</span>
|
<span>{{capitalize type}}</span>
|
||||||
<input type="radio" name="Type" value="{{type}}" checked={{if (eq item.Type type) 'checked'}} onchange={{ action 'change' }}/>
|
<input type="radio" name="Type" value="{{type}}" checked={{if (eq item.Type type) 'checked'}} onchange={{ action 'change' }}/>
|
||||||
</label>
|
</label>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<h1>
|
<h1>
|
||||||
ACL Tokens
|
ACL Tokens
|
||||||
</h1>
|
</h1>
|
||||||
|
<label for="toolbar-toggle"></label>
|
||||||
{{/block-slot}}
|
{{/block-slot}}
|
||||||
{{#block-slot 'actions'}}
|
{{#block-slot 'actions'}}
|
||||||
<a data-test-create href="{{href-to 'dc.acls.create'}}" class="type-create">Create</a>
|
<a data-test-create href="{{href-to 'dc.acls.create'}}" class="type-create">Create</a>
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
<div role="radiogroup" class={{if item.error.Action ' has-error'}}>
|
<div role="radiogroup" class={{if item.error.Action ' has-error'}}>
|
||||||
{{#each intents as |intent|}}
|
{{#each intents as |intent|}}
|
||||||
<label>
|
<label>
|
||||||
<span>{{intent}}</span>
|
<span>{{ capitalize intent }}</span>
|
||||||
<input type="radio" name="Action" value="{{intent}}" checked={{if (eq item.Action intent) 'checked'}} onchange={{ action 'change' }}/>
|
<input type="radio" name="Action" value="{{intent}}" checked={{if (eq item.Action intent) 'checked'}} onchange={{ action 'change' }}/>
|
||||||
</label>
|
</label>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
<h1>
|
<h1>
|
||||||
Intentions
|
Intentions
|
||||||
</h1>
|
</h1>
|
||||||
|
<label for="toolbar-toggle"></label>
|
||||||
{{/block-slot}}
|
{{/block-slot}}
|
||||||
{{#block-slot 'actions'}}
|
{{#block-slot 'actions'}}
|
||||||
<a data-test-create href="{{href-to 'dc.intentions.create'}}" class="type-create">Create</a>
|
<a data-test-create href="{{href-to 'dc.intentions.create'}}" class="type-create">Create</a>
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
{{ take 1 (drop 1 (reverse (split parent.Key '/'))) }}
|
{{ take 1 (drop 1 (reverse (split parent.Key '/'))) }}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</h1>
|
</h1>
|
||||||
|
<label for="toolbar-toggle"></label>
|
||||||
{{/block-slot}}
|
{{/block-slot}}
|
||||||
{{#block-slot 'toolbar'}}
|
{{#block-slot 'toolbar'}}
|
||||||
{{#if (gt items.length 0) }}
|
{{#if (gt items.length 0) }}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{{#if (gt items.length 0) }}
|
{{#if (gt items.length 0) }}
|
||||||
|
<input type="checkbox" id="toolbar-toggle" />
|
||||||
<form class="filter-bar">
|
<form class="filter-bar">
|
||||||
{{freetext-filter onchange=(action 'filter') value=filter.s placeholder="Search by name/port"}}
|
{{freetext-filter onchange=(action 'filter') value=filter.s placeholder="Search by name/port"}}
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
<h1>
|
<h1>
|
||||||
Nodes
|
Nodes
|
||||||
</h1>
|
</h1>
|
||||||
|
<label for="toolbar-toggle"></label>
|
||||||
{{/block-slot}}
|
{{/block-slot}}
|
||||||
{{#block-slot 'toolbar'}}
|
{{#block-slot 'toolbar'}}
|
||||||
{{#if (gt items.length 0) }}
|
{{#if (gt items.length 0) }}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<h1>
|
<h1>
|
||||||
{{ item.Node }}
|
{{ item.Node }}
|
||||||
</h1>
|
</h1>
|
||||||
|
<label for="toolbar-toggle"></label>
|
||||||
{{tab-nav
|
{{tab-nav
|
||||||
items=(compact
|
items=(compact
|
||||||
(array
|
(array
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
<h1>
|
<h1>
|
||||||
Services
|
Services
|
||||||
</h1>
|
</h1>
|
||||||
|
<label for="toolbar-toggle"></label>
|
||||||
{{/block-slot}}
|
{{/block-slot}}
|
||||||
{{#block-slot 'toolbar'}}
|
{{#block-slot 'toolbar'}}
|
||||||
{{#if (gt items.length 0) }}
|
{{#if (gt items.length 0) }}
|
||||||
|
|
|
@ -18,6 +18,9 @@ module.exports = function(defaults) {
|
||||||
'ember-cli-babel': {
|
'ember-cli-babel': {
|
||||||
includePolyfill: true
|
includePolyfill: true
|
||||||
},
|
},
|
||||||
|
'ember-cli-string-helpers': {
|
||||||
|
only: ['capitalize']
|
||||||
|
},
|
||||||
'babel': {
|
'babel': {
|
||||||
plugins: [
|
plugins: [
|
||||||
'transform-object-rest-spread'
|
'transform-object-rest-spread'
|
||||||
|
|
|
@ -38,7 +38,6 @@
|
||||||
"ember-ajax": "^3.0.0",
|
"ember-ajax": "^3.0.0",
|
||||||
"ember-block-slots": "^1.1.11",
|
"ember-block-slots": "^1.1.11",
|
||||||
"ember-browserify": "^1.2.2",
|
"ember-browserify": "^1.2.2",
|
||||||
"ember-bulma-css": "^0.2.1",
|
|
||||||
"ember-changeset-validations": "^1.2.11",
|
"ember-changeset-validations": "^1.2.11",
|
||||||
"ember-cli": "~2.18.2",
|
"ember-cli": "~2.18.2",
|
||||||
"ember-cli-app-version": "^3.0.0",
|
"ember-cli-app-version": "^3.0.0",
|
||||||
|
|
|
@ -1944,10 +1944,6 @@ builtins@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
|
resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88"
|
||||||
|
|
||||||
bulma@^0.6.2:
|
|
||||||
version "0.6.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/bulma/-/bulma-0.6.2.tgz#f4b1d11d5acc51a79644eb0a2b0b10649d3d71f5"
|
|
||||||
|
|
||||||
bytes@1:
|
bytes@1:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8"
|
resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8"
|
||||||
|
@ -3022,14 +3018,6 @@ ember-browserify@^1.2.2:
|
||||||
through2 "^2.0.0"
|
through2 "^2.0.0"
|
||||||
walk-sync "^0.2.7"
|
walk-sync "^0.2.7"
|
||||||
|
|
||||||
ember-bulma-css@^0.2.1:
|
|
||||||
version "0.2.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/ember-bulma-css/-/ember-bulma-css-0.2.1.tgz#4b168a74191c127d5bfec21dd3ceb0b279c72b1c"
|
|
||||||
dependencies:
|
|
||||||
bulma "^0.6.2"
|
|
||||||
ember-cli-babel "^6.6.0"
|
|
||||||
ember-cli-sass "^7.2.0"
|
|
||||||
|
|
||||||
ember-changeset-validations@^1.2.11:
|
ember-changeset-validations@^1.2.11:
|
||||||
version "1.2.11"
|
version "1.2.11"
|
||||||
resolved "https://registry.yarnpkg.com/ember-changeset-validations/-/ember-changeset-validations-1.2.11.tgz#b769c3557f42fae05398869f3904200e21a005d7"
|
resolved "https://registry.yarnpkg.com/ember-changeset-validations/-/ember-changeset-validations-1.2.11.tgz#b769c3557f42fae05398869f3904200e21a005d7"
|
||||||
|
@ -3335,15 +3323,6 @@ ember-cli-sass@^7.1.4:
|
||||||
broccoli-sass-source-maps "^2.1.0"
|
broccoli-sass-source-maps "^2.1.0"
|
||||||
ember-cli-version-checker "^2.1.0"
|
ember-cli-version-checker "^2.1.0"
|
||||||
|
|
||||||
ember-cli-sass@^7.2.0:
|
|
||||||
version "7.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/ember-cli-sass/-/ember-cli-sass-7.2.0.tgz#293d1a94c43c1fdbb3835378e43d255e8ad5c961"
|
|
||||||
dependencies:
|
|
||||||
broccoli-funnel "^1.0.0"
|
|
||||||
broccoli-merge-trees "^1.1.0"
|
|
||||||
broccoli-sass-source-maps "^2.1.0"
|
|
||||||
ember-cli-version-checker "^2.1.0"
|
|
||||||
|
|
||||||
ember-cli-shims@^1.2.0:
|
ember-cli-shims@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/ember-cli-shims/-/ember-cli-shims-1.2.0.tgz#0f53aff0aab80b5f29da3a9731bac56169dd941f"
|
resolved "https://registry.yarnpkg.com/ember-cli-shims/-/ember-cli-shims-1.2.0.tgz#0f53aff0aab80b5f29da3a9731bac56169dd941f"
|
||||||
|
|
Loading…
Reference in New Issue