* Style fixes for Inspector and location elements

- Code cleanup;
- Remove legacy styles;

* Tab styling WIP, for VISTA Venue dialog

* Add new c-tabs styles, replaces c-compact-button

- Remove c-compact-button and mixin;
- Refactor to use c-tabs in Tabs View;
- New notched look for tabs;

* Tweaks to c-tabs

* Misc various

- Increased mouse wheel zoom and changed to use const;
- Fixed squishy grippys in Elements pool;
- Fixed Time Conductor to prevent overrunning right pane when main pane
is very small;
- Changed message text when leaving Layout editing;
- Fixed z-index problem with splitter bars and VISTA Indicator hover
bubbles;
- Restored support for legacy `l-input-lg` to allow large text input
fields in form generation;
- Modded styles in Properties dialog to fix issue with label column
colliding with inputs when the label text is long;

* Restore hover hide/show to local controls in Summary Widgets

- Also fixed rotation transition for disclosure controls;

* Refinement to overflow hidden for Time Conductor UI

* Fix Time Conductor layout in mobile

* Fix Filter tree items in Inspector

* Move .selector-list out from within .form .form-row to allow more
flexible usage;

* Significant theme updates; table layout and Summary styling added

- Reorganized status constants;
- Added base styles for selected and active styles;
- Added styling for selected and active buttons;
- c-table changed from absolute pos to relative;
- Added c-table-and-summary styling;

* Tweaks to Location component
This commit is contained in:
Charles Hacskaylo 2019-03-26 11:38:38 -07:00 committed by Andrew Henry
parent 6c479d6d59
commit c0ce448dc3
21 changed files with 382 additions and 288 deletions

View File

@ -5,11 +5,11 @@
<span class="c-disclosure-triangle is-enabled flex-elem" <span class="c-disclosure-triangle is-enabled flex-elem"
:class="{'c-disclosure-triangle--expanded': expanded}"></span> :class="{'c-disclosure-triangle--expanded': expanded}"></span>
<div class="c-tree__item__label"> <div class="c-tree__item__label">
<div class="t-object-label l-flex-row flex-elem grows"> <div class="c-object-label">
<div class="t-item-icon flex-elem" <div class="c-object-label__type-icon"
:class="objectCssClass"> :class="objectCssClass">
</div> </div>
<div class="t-title-label flex-elem grows">{{ filterObject.name }}</div> <div class="c-object-label__name flex-elem grows">{{ filterObject.name }}</div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -315,6 +315,7 @@ define([
}; };
MCTPlotController.prototype.wheelZoom = function (event) { MCTPlotController.prototype.wheelZoom = function (event) {
const ZOOM_AMT = 0.1;
event.preventDefault(); event.preventDefault();
if (!this.positionOverPlot) { if (!this.positionOverPlot) {
@ -349,24 +350,24 @@ define([
if (event.wheelDelta < 0) { if (event.wheelDelta < 0) {
this.$scope.xAxis.set('displayRange', { this.$scope.xAxis.set('displayRange', {
min: xDisplayRange.min + ((xAxisDist * 0.01) * xAxisMinDist), min: xDisplayRange.min + ((xAxisDist * ZOOM_AMT) * xAxisMinDist),
max: xDisplayRange.max - ((xAxisDist * 0.01) * xAxisMaxDist) max: xDisplayRange.max - ((xAxisDist * ZOOM_AMT) * xAxisMaxDist)
}); });
this.$scope.yAxis.set('displayRange', { this.$scope.yAxis.set('displayRange', {
min: yDisplayRange.min + ((yAxisDist * 0.01) * yAxisMinDist), min: yDisplayRange.min + ((yAxisDist * ZOOM_AMT) * yAxisMinDist),
max: yDisplayRange.max - ((yAxisDist * 0.01) * yAxisMaxDist) max: yDisplayRange.max - ((yAxisDist * ZOOM_AMT) * yAxisMaxDist)
}); });
} else if (event.wheelDelta >= 0) { } else if (event.wheelDelta >= 0) {
this.$scope.xAxis.set('displayRange', { this.$scope.xAxis.set('displayRange', {
min: xDisplayRange.min - ((xAxisDist * 0.01) * xAxisMinDist), min: xDisplayRange.min - ((xAxisDist * ZOOM_AMT) * xAxisMinDist),
max: xDisplayRange.max + ((xAxisDist * 0.01) * xAxisMaxDist) max: xDisplayRange.max + ((xAxisDist * ZOOM_AMT) * xAxisMaxDist)
}); });
this.$scope.yAxis.set('displayRange', { this.$scope.yAxis.set('displayRange', {
min: yDisplayRange.min - ((yAxisDist * 0.01) * yAxisMinDist), min: yDisplayRange.min - ((yAxisDist * ZOOM_AMT) * yAxisMinDist),
max: yDisplayRange.max + ((yAxisDist * 0.01) * yAxisMaxDist) max: yDisplayRange.max + ((yAxisDist * ZOOM_AMT) * yAxisMaxDist)
}); });
} }

View File

@ -4,7 +4,7 @@
<span class="t-configuration"> </span> <span class="t-configuration"> </span>
<span class="t-value-inputs"> </span> <span class="t-value-inputs"> </span>
</span> </span>
<span class="flex-elem local-control local-controls-hidden l-condition-action-buttons-wrapper"> <span class="flex-elem c-local-controls--show-on-hover l-condition-action-buttons-wrapper">
<a class="s-icon-button icon-duplicate t-duplicate" title="Duplicate this condition"></a> <a class="s-icon-button icon-duplicate t-duplicate" title="Duplicate this condition"></a>
<a class="s-icon-button icon-trash t-delete" title="Delete this condition"></a> <a class="s-icon-button icon-trash t-delete" title="Delete this condition"></a>
</span> </span>

View File

@ -1,5 +1,5 @@
<div class="c-sw-rule"> <div class="c-sw-rule">
<div class="c-sw-rule__ui l-compact-form has-local-controls l-widget-rule s-widget-rule"> <div class="c-sw-rule__ui l-compact-form l-widget-rule s-widget-rule has-local-controls">
<div class="c-sw-rule__ui__header widget-rule-header"> <div class="c-sw-rule__ui__header widget-rule-header">
<div class="c-sw-rule__grippy-wrapper"> <div class="c-sw-rule__grippy-wrapper">
<div class="c-sw-rule__grippy t-grippy local-control local-controls-hidden"></div> <div class="c-sw-rule__grippy t-grippy local-control local-controls-hidden"></div>
@ -11,7 +11,7 @@
</div> </div>
<div class="flex-elem rule-title">Default Title</div> <div class="flex-elem rule-title">Default Title</div>
<div class="flex-elem rule-description grows">Rule description goes here</div> <div class="flex-elem rule-description grows">Rule description goes here</div>
<div class="flex-elem local-control local-controls-hidden l-rule-action-buttons-wrapper"> <div class="flex-elem c-local-controls--show-on-hover l-rule-action-buttons-wrapper">
<a class="s-icon-button icon-duplicate t-duplicate" title="Duplicate this rule"></a> <a class="s-icon-button icon-duplicate t-duplicate" title="Duplicate this rule"></a>
<a class="s-icon-button icon-trash t-delete" title="Delete this rule"></a> <a class="s-icon-button icon-trash t-delete" title="Delete this rule"></a>
</div> </div>

View File

@ -7,7 +7,7 @@
<span class="equal-to hidden"> equal to </span> <span class="equal-to hidden"> equal to </span>
<span class="t-value-inputs"></span> <span class="t-value-inputs"></span>
</span> </span>
<span class="flex-elem local-control local-controls-hidden l-widget-test-data-item-action-buttons-wrapper"> <span class="flex-elem c-local-controls--show-on-hover l-widget-test-data-item-action-buttons-wrapper">
<a class="s-icon-button icon-duplicate t-duplicate" title="Duplicate this test value"></a> <a class="s-icon-button icon-duplicate t-duplicate" title="Duplicate this test value"></a>
<a class="s-icon-button icon-trash t-delete" title="Delete this test value"></a> <a class="s-icon-button icon-trash t-delete" title="Delete this test value"></a>
</span> </span>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="c-tabs-view"> <div class="c-tabs-view">
<div class="c-tabs-view__tabs-holder c-compact-button-holder" <div class="c-tabs-view__tabs-holder c-tabs"
:class="{ :class="{
'is-dragging': isDragging, 'is-dragging': isDragging,
'is-mouse-over': allowDrop 'is-mouse-over': allowDrop
@ -11,7 +11,7 @@
</div> </div>
<div class="c-tabs-view__empty-message" <div class="c-tabs-view__empty-message"
v-if="!tabsList.length > 0">Drag objects here to add them to this view.</div> v-if="!tabsList.length > 0">Drag objects here to add them to this view.</div>
<button class="c-tabs-view__tab c-compact-button" <button class="c-tabs-view__tab c-tab"
v-for="(tab,index) in tabsList" v-for="(tab,index) in tabsList"
:key="index" :key="index"
:class="[ :class="[
@ -53,11 +53,16 @@
} }
&__tabs-holder { &__tabs-holder {
@include userSelectNone();
flex: 0 0 auto;
min-height: $h; min-height: $h;
} }
&__tab {
&:before {
margin-right: $interiorMarginSm;
opacity: 0.7;
}
}
&__object-holder { &__object-holder {
flex: 1 1 auto; flex: 1 1 auto;
display: flex; display: flex;

View File

@ -23,6 +23,7 @@
<div class="c-conductor" <div class="c-conductor"
:class="[isFixed ? 'is-fixed-mode' : 'is-realtime-mode']"> :class="[isFixed ? 'is-fixed-mode' : 'is-realtime-mode']">
<form class="u-contents" ref="conductorForm" @submit.prevent="updateTimeFromConductor"> <form class="u-contents" ref="conductorForm" @submit.prevent="updateTimeFromConductor">
<div class="c-conductor__time-bounds">
<button class="c-input--submit" type="submit" ref="submitButton"></button> <button class="c-input--submit" type="submit" ref="submitButton"></button>
<ConductorModeIcon class="c-conductor__mode-icon"></ConductorModeIcon> <ConductorModeIcon class="c-conductor__mode-icon"></ConductorModeIcon>
@ -90,6 +91,8 @@
class="c-conductor__ticks" class="c-conductor__ticks"
:bounds="rawBounds" :bounds="rawBounds"
@panAxis="setViewFromBounds"></conductor-axis> @panAxis="setViewFromBounds"></conductor-axis>
</div>
<div class="c-conductor__controls"> <div class="c-conductor__controls">
<!-- Mode, time system menu buttons and duration slider --> <!-- Mode, time system menu buttons and duration slider -->
<ConductorMode class="c-conductor__mode-select"></ConductorMode> <ConductorMode class="c-conductor__mode-select"></ConductorMode>
@ -113,17 +116,18 @@
/*********************************************** CONDUCTOR LAYOUT */ /*********************************************** CONDUCTOR LAYOUT */
.c-conductor { .c-conductor {
&__time-bounds {
display: grid; display: grid;
grid-column-gap: $interiorMargin; grid-column-gap: $interiorMargin;
grid-row-gap: $interiorMargin; grid-row-gap: $interiorMargin;
align-items: center; align-items: center;
// Default: fixed mode, desktop // Default: fixed mode, desktop
grid-template-rows: 1fr 1fr; grid-template-rows: 1fr;
grid-template-columns: 20px auto 1fr auto; grid-template-columns: 20px auto 1fr auto;
grid-template-areas: grid-template-areas: "tc-mode-icon tc-start tc-ticks tc-end";
"tc-mode-icon tc-start tc-ticks tc-end" overflow: hidden;
"tc-controls tc-controls tc-controls tc-controls"; }
&__mode-icon { &__mode-icon {
grid-area: tc-mode-icon; grid-area: tc-mode-icon;
@ -163,10 +167,10 @@
} }
&.is-realtime-mode { &.is-realtime-mode {
.c-conductor__time-bounds {
grid-template-columns: 20px auto 1fr auto auto; grid-template-columns: 20px auto 1fr auto auto;
grid-template-areas: grid-template-areas: "tc-mode-icon tc-start tc-ticks tc-updated tc-end";
"tc-mode-icon tc-start tc-ticks tc-updated tc-end" }
"tc-controls tc-controls tc-controls tc-controls tc-controls";
.c-conductor__end-fixed { .c-conductor__end-fixed {
grid-area: tc-updated; grid-area: tc-updated;
@ -174,9 +178,15 @@
} }
body.phone.portrait & { body.phone.portrait & {
.c-conductor__time-bounds {
grid-row-gap: $interiorMargin; grid-row-gap: $interiorMargin;
grid-template-rows: auto auto auto; grid-template-rows: auto auto;
grid-template-columns: 20px auto auto; grid-template-columns: 20px auto auto;
}
.c-conductor__controls {
padding-left: 25px; // Line up visually with other controls
}
&__mode-icon { &__mode-icon {
grid-row: 1; grid-row: 1;
@ -200,17 +210,19 @@
justify-content: flex-start; justify-content: flex-start;
} }
.c-conductor__time-bounds {
grid-template-areas: grid-template-areas:
"tc-mode-icon tc-start tc-start" "tc-mode-icon tc-start tc-start"
"tc-mode-icon tc-end tc-end" "tc-mode-icon tc-end tc-end"
"tc-mode-icon tc-controls tc-controls"; }
} }
&.is-realtime-mode { &.is-realtime-mode {
.c-conductor__time-bounds {
grid-template-areas: grid-template-areas:
"tc-mode-icon tc-start tc-updated" "tc-mode-icon tc-start tc-updated"
"tc-mode-icon tc-end tc-end" "tc-mode-icon tc-end tc-end";
"tc-mode-icon tc-controls tc-controls"; }
.c-conductor__end-fixed { .c-conductor__end-fixed {
justify-content: flex-end; justify-content: flex-end;

View File

@ -83,6 +83,9 @@ $uiColor: #00b2ff; // Resize bars, splitter bars, etc.
$colorInteriorBorder: rgba($colorBodyFg, 0.2); $colorInteriorBorder: rgba($colorBodyFg, 0.2);
$colorA: #ccc; $colorA: #ccc;
$colorAHov: #fff; $colorAHov: #fff;
$filterHov: brightness(1.3); // Tree, location items
$colorSelectedBg: pushBack($colorKey, 10%);
$colorSelectedFg: pullForward($colorBodyFg, 20%);
// Layout // Layout
$shellMainPad: 4px 0; $shellMainPad: 4px 0;
@ -98,6 +101,20 @@ $colorStatusAlertFilter: invert(78%) sepia(26%) saturate(1160%) hue-rotate(324de
$colorStatusError: #da0004; $colorStatusError: #da0004;
$colorStatusErrorFilter: invert(10%) sepia(96%) saturate(4360%) hue-rotate(351deg) brightness(111%) contrast(115%); $colorStatusErrorFilter: invert(10%) sepia(96%) saturate(4360%) hue-rotate(351deg) brightness(111%) contrast(115%);
$colorStatusBtnBg: #666; // Where is this used? $colorStatusBtnBg: #666; // Where is this used?
$colorAlert: #ff3c00;
$colorAlertFg: #fff;
$colorWarningHi: #990000;
$colorWarningHiFg: #FF9594;
$colorWarningLo: #ff9900;
$colorWarningLoFg: #523400;
$colorDiagnostic: #a4b442;
$colorDiagnosticFg: #39461A;
$colorCommand: #3693bd;
$colorCommandFg: #fff;
$colorInfo: #2294a2;
$colorInfoFg: #fff;
$colorOk: #33cc33;
$colorOkFg: #fff;
// States // States
$colorPausedBg: #ff9900; $colorPausedBg: #ff9900;
@ -173,6 +190,10 @@ $colorBtnMajorFgHov: pushBack($colorBtnMajorFg, 10%);
$colorBtnCautionBg: #f16f6f; $colorBtnCautionBg: #f16f6f;
$colorBtnCautionBgHov: #f1504e; $colorBtnCautionBgHov: #f1504e;
$colorBtnCautionFg: $colorBtnFg; $colorBtnCautionFg: $colorBtnFg;
$colorBtnActiveBg: $colorOk;
$colorBtnActiveFg: $colorOkFg;
$colorBtnSelectedBg: $colorSelectedBg;
$colorBtnSelectedFg: $colorSelectedFg;
$colorClickIconButton: $colorKey; $colorClickIconButton: $colorKey;
$colorClickIconButtonBgHov: rgba($colorKey, 0.6); $colorClickIconButtonBgHov: rgba($colorKey, 0.6);
$colorClickIconButtonFgHov: $colorKeyHov; $colorClickIconButtonFgHov: $colorKeyHov;
@ -265,26 +286,9 @@ $colorLimitRedBg: #940000;
$colorLimitRedFg: #ffa489; $colorLimitRedFg: #ffa489;
$colorLimitRedIc: #ff4222; $colorLimitRedIc: #ff4222;
// Status
$colorAlert: #ff3c00;
$colorAlertFg: #fff;
$colorWarningHi: #990000;
$colorWarningHiFg: #FF9594;
$colorWarningLo: #ff9900;
$colorWarningLoFg: #523400;
$colorDiagnostic: #a4b442;
$colorDiagnosticFg: #39461A;
$colorCommand: #3693bd;
$colorCommandFg: #fff;
$colorInfo: #2294a2;
$colorInfoFg: #fff;
$colorOk: #33cc33;
$colorOkFg: #fff;
// Bubble colors // Bubble colors
$colorInfoBubbleBg: #dddddd; $colorInfoBubbleBg: #dddddd;
$colorInfoBubbleFg: #666; $colorInfoBubbleFg: #666;
$colorInfoBubbleFg: #666;
$colorThumbsBubbleFg: pullForward($colorBodyFg, 10%); $colorThumbsBubbleFg: pullForward($colorBodyFg, 10%);
$colorThumbsBubbleBg: pullForward($colorBodyBg, 10%); $colorThumbsBubbleBg: pullForward($colorBodyBg, 10%);
@ -306,6 +310,9 @@ $colorTabHeaderFg: $colorBodyFg;
$colorTabHeaderBorder: $colorBodyBg; $colorTabHeaderBorder: $colorBodyBg;
$colorTabGroupHeaderBg: pullForward($colorBodyBg, 5%); $colorTabGroupHeaderBg: pullForward($colorBodyBg, 5%);
$colorTabGroupHeaderFg: pushBack($colorTabHeaderFg, 10%); $colorTabGroupHeaderFg: pushBack($colorTabHeaderFg, 10%);
$colorSummaryBg: #2c2c2c;
$colorSummaryFg: rgba($colorBodyFg, 0.7);
$colorSummaryFgEm: $colorBodyFg;
// Plot // Plot
$colorPlotBg: rgba(black, 0.05); $colorPlotBg: rgba(black, 0.05);
@ -324,7 +331,7 @@ $colorItemTreeHoverFg: pullForward($colorBodyFg, 20%);
$colorItemTreeIcon: $colorKey; // Used $colorItemTreeIcon: $colorKey; // Used
$colorItemTreeIconHover: $colorItemTreeIcon; // Used $colorItemTreeIconHover: $colorItemTreeIcon; // Used
$colorItemTreeFg: $colorBodyFg; $colorItemTreeFg: $colorBodyFg;
$colorItemTreeSelectedBg: pushBack($colorKey, 15%); $colorItemTreeSelectedBg: $colorSelectedBg;
$colorItemTreeSelectedFg: $colorItemTreeHoverFg; $colorItemTreeSelectedFg: $colorItemTreeHoverFg;
$colorItemTreeSelectedIcon: $colorItemTreeSelectedFg; $colorItemTreeSelectedIcon: $colorItemTreeSelectedFg;
$colorItemTreeEditingBg: pushBack($editUIColor, 20%); $colorItemTreeEditingBg: pushBack($editUIColor, 20%);

View File

@ -87,6 +87,9 @@ $uiColor: #00b2ff; // Resize bars, splitter bars, etc.
$colorInteriorBorder: rgba($colorBodyFg, 0.2); $colorInteriorBorder: rgba($colorBodyFg, 0.2);
$colorA: #ccc; $colorA: #ccc;
$colorAHov: #fff; $colorAHov: #fff;
$filterHov: brightness(1.3); // Tree, location items
$colorSelectedBg: pushBack($colorKey, 10%);
$colorSelectedFg: pullForward($colorBodyFg, 20%);
// Layout // Layout
$shellMainPad: 4px 0; $shellMainPad: 4px 0;
@ -102,6 +105,20 @@ $colorStatusAlertFilter: invert(78%) sepia(26%) saturate(1160%) hue-rotate(324de
$colorStatusError: #da0004; $colorStatusError: #da0004;
$colorStatusErrorFilter: invert(10%) sepia(96%) saturate(4360%) hue-rotate(351deg) brightness(111%) contrast(115%); $colorStatusErrorFilter: invert(10%) sepia(96%) saturate(4360%) hue-rotate(351deg) brightness(111%) contrast(115%);
$colorStatusBtnBg: #666; // Where is this used? $colorStatusBtnBg: #666; // Where is this used?
$colorAlert: #ff3c00;
$colorAlertFg: #fff;
$colorWarningHi: #990000;
$colorWarningHiFg: #FF9594;
$colorWarningLo: #ff9900;
$colorWarningLoFg: #523400;
$colorDiagnostic: #a4b442;
$colorDiagnosticFg: #39461A;
$colorCommand: #3693bd;
$colorCommandFg: #fff;
$colorInfo: #2294a2;
$colorInfoFg: #fff;
$colorOk: #33cc33;
$colorOkFg: #fff;
// States // States
$colorPausedBg: #ff9900; $colorPausedBg: #ff9900;
@ -177,6 +194,10 @@ $colorBtnMajorFgHov: pushBack($colorBtnMajorFg, 10%);
$colorBtnCautionBg: #f16f6f; $colorBtnCautionBg: #f16f6f;
$colorBtnCautionBgHov: #f1504e; $colorBtnCautionBgHov: #f1504e;
$colorBtnCautionFg: $colorBtnFg; $colorBtnCautionFg: $colorBtnFg;
$colorBtnActiveBg: $colorOk;
$colorBtnActiveFg: $colorOkFg;
$colorBtnSelectedBg: $colorSelectedBg;
$colorBtnSelectedFg: $colorSelectedFg;
$colorClickIconButton: $colorKey; $colorClickIconButton: $colorKey;
$colorClickIconButtonBgHov: rgba($colorKey, 0.6); $colorClickIconButtonBgHov: rgba($colorKey, 0.6);
$colorClickIconButtonFgHov: $colorKeyHov; $colorClickIconButtonFgHov: $colorKeyHov;
@ -269,26 +290,9 @@ $colorLimitRedBg: #940000;
$colorLimitRedFg: #ffa489; $colorLimitRedFg: #ffa489;
$colorLimitRedIc: #ff4222; $colorLimitRedIc: #ff4222;
// Status
$colorAlert: #ff3c00;
$colorAlertFg: #fff;
$colorWarningHi: #990000;
$colorWarningHiFg: #FF9594;
$colorWarningLo: #ff9900;
$colorWarningLoFg: #523400;
$colorDiagnostic: #a4b442;
$colorDiagnosticFg: #39461A;
$colorCommand: #3693bd;
$colorCommandFg: #fff;
$colorInfo: #2294a2;
$colorInfoFg: #fff;
$colorOk: #33cc33;
$colorOkFg: #fff;
// Bubble colors // Bubble colors
$colorInfoBubbleBg: #dddddd; $colorInfoBubbleBg: #dddddd;
$colorInfoBubbleFg: #666; $colorInfoBubbleFg: #666;
$colorInfoBubbleFg: #666;
$colorThumbsBubbleFg: pullForward($colorBodyFg, 10%); $colorThumbsBubbleFg: pullForward($colorBodyFg, 10%);
$colorThumbsBubbleBg: pullForward($colorBodyBg, 10%); $colorThumbsBubbleBg: pullForward($colorBodyBg, 10%);
@ -310,6 +314,9 @@ $colorTabHeaderFg: $colorBodyFg;
$colorTabHeaderBorder: $colorBodyBg; $colorTabHeaderBorder: $colorBodyBg;
$colorTabGroupHeaderBg: pullForward($colorBodyBg, 5%); $colorTabGroupHeaderBg: pullForward($colorBodyBg, 5%);
$colorTabGroupHeaderFg: pushBack($colorTabHeaderFg, 10%); $colorTabGroupHeaderFg: pushBack($colorTabHeaderFg, 10%);
$colorSummaryBg: #2c2c2c;
$colorSummaryFg: rgba($colorBodyFg, 0.7);
$colorSummaryFgEm: $colorBodyFg;
// Plot // Plot
$colorPlotBg: rgba(black, 0.05); $colorPlotBg: rgba(black, 0.05);
@ -328,7 +335,7 @@ $colorItemTreeHoverFg: pullForward($colorBodyFg, 20%);
$colorItemTreeIcon: $colorKey; // Used $colorItemTreeIcon: $colorKey; // Used
$colorItemTreeIconHover: $colorItemTreeIcon; // Used $colorItemTreeIconHover: $colorItemTreeIcon; // Used
$colorItemTreeFg: $colorBodyFg; $colorItemTreeFg: $colorBodyFg;
$colorItemTreeSelectedBg: pushBack($colorKey, 15%); $colorItemTreeSelectedBg: $colorSelectedBg;
$colorItemTreeSelectedFg: $colorItemTreeHoverFg; $colorItemTreeSelectedFg: $colorItemTreeHoverFg;
$colorItemTreeSelectedIcon: $colorItemTreeSelectedFg; $colorItemTreeSelectedIcon: $colorItemTreeSelectedFg;
$colorItemTreeEditingBg: pushBack($editUIColor, 20%); $colorItemTreeEditingBg: pushBack($editUIColor, 20%);
@ -375,7 +382,7 @@ $colorMobilePaneLeftTreeItemFg: $colorItemTreeFg;
$colorMobileSelectListTreeItemBg: rgba(#000, 0.05); $colorMobileSelectListTreeItemBg: rgba(#000, 0.05);
// About Screen // About Screen
$colorAboutLink: $colorKeySubtle; $colorAboutLink: #9bb5ff;
// Loading // Loading
$colorLoadingFg: #776ba2; $colorLoadingFg: #776ba2;

View File

@ -83,6 +83,9 @@ $uiColor: #289fec; // Resize bars, splitter bars, etc.
$colorInteriorBorder: rgba($colorBodyFg, 0.2); $colorInteriorBorder: rgba($colorBodyFg, 0.2);
$colorA: #999; $colorA: #999;
$colorAHov: $colorKey; $colorAHov: $colorKey;
$filterHov: brightness(1.3); // Tree, location items
$colorSelectedBg: pushBack($colorKey, 40%);
$colorSelectedFg: pullForward($colorBodyFg, 10%);
// Layout // Layout
$shellMainPad: 4px 0; $shellMainPad: 4px 0;
@ -98,6 +101,20 @@ $colorStatusAlertFilter: invert(89%) sepia(26%) saturate(5035%) hue-rotate(316de
$colorStatusError: #da0004; $colorStatusError: #da0004;
$colorStatusErrorFilter: invert(8%) sepia(96%) saturate(4511%) hue-rotate(352deg) brightness(136%) contrast(114%); $colorStatusErrorFilter: invert(8%) sepia(96%) saturate(4511%) hue-rotate(352deg) brightness(136%) contrast(114%);
$colorStatusBtnBg: #666; // Where is this used? $colorStatusBtnBg: #666; // Where is this used?
$colorAlert: #ff3c00;
$colorAlertFg: #fff;
$colorWarningHi: #990000;
$colorWarningHiFg: #FF9594;
$colorWarningLo: #ff9900;
$colorWarningLoFg: #523400;
$colorDiagnostic: #a4b442;
$colorDiagnosticFg: #39461A;
$colorCommand: #3693bd;
$colorCommandFg: #fff;
$colorInfo: #2294a2;
$colorInfoFg: #fff;
$colorOk: #33cc33;
$colorOkFg: #fff;
// States // States
$colorPausedBg: #ff9900; $colorPausedBg: #ff9900;
@ -173,6 +190,10 @@ $colorBtnMajorFgHov: pushBack($colorBtnMajorFg, 10%);
$colorBtnCautionBg: #f16f6f; $colorBtnCautionBg: #f16f6f;
$colorBtnCautionBgHov: #f1504e; $colorBtnCautionBgHov: #f1504e;
$colorBtnCautionFg: $colorBtnFg; $colorBtnCautionFg: $colorBtnFg;
$colorBtnActiveBg: $colorOk;
$colorBtnActiveFg: $colorOkFg;
$colorBtnSelectedBg: $colorBtnMajorBg;
$colorBtnSelectedFg: $colorBtnMajorFg;
$colorClickIconButton: $colorKey; $colorClickIconButton: $colorKey;
$colorClickIconButtonBgHov: rgba($colorKey, 0.2); $colorClickIconButtonBgHov: rgba($colorKey, 0.2);
$colorClickIconButtonFgHov: $colorKeyHov; $colorClickIconButtonFgHov: $colorKeyHov;
@ -265,22 +286,6 @@ $colorLimitRedBg: #ff0000;
$colorLimitRedFg: #fff; $colorLimitRedFg: #fff;
$colorLimitRedIc: #ffa99a; $colorLimitRedIc: #ffa99a;
// Status
$colorAlert: #ff3c00;
$colorAlertFg: #fff;
$colorWarningHi: #990000;
$colorWarningHiFg: #FF9594;
$colorWarningLo: #ff9900;
$colorWarningLoFg: #523400;
$colorDiagnostic: #a4b442;
$colorDiagnosticFg: #39461A;
$colorCommand: #3693bd;
$colorCommandFg: #fff;
$colorInfo: #2294a2;
$colorInfoFg: #fff;
$colorOk: #33cc33;
$colorOkFg: #fff;
// Bubble colors // Bubble colors
$colorInfoBubbleBg: $colorMenuBg; $colorInfoBubbleBg: $colorMenuBg;
$colorInfoBubbleFg: #666; $colorInfoBubbleFg: #666;
@ -305,6 +310,9 @@ $colorTabHeaderFg: pullForward($colorBodyFg, 20%);
$colorTabHeaderBorder: $colorBodyBg; $colorTabHeaderBorder: $colorBodyBg;
$colorTabGroupHeaderBg: pullForward($colorBodyBg, 5%); $colorTabGroupHeaderBg: pullForward($colorBodyBg, 5%);
$colorTabGroupHeaderFg: pullForward($colorTabGroupHeaderBg, 40%); $colorTabGroupHeaderFg: pullForward($colorTabGroupHeaderBg, 40%);
$colorSummaryBg: #999;
$colorSummaryFg: rgba($colorBodyBg, 0.7);
$colorSummaryFgEm: white;
// Plot // Plot
$colorPlotBg: rgba(black, 0.05); $colorPlotBg: rgba(black, 0.05);
@ -323,8 +331,8 @@ $colorItemTreeHoverFg: pullForward($colorBodyFg, 10%);
$colorItemTreeIcon: $colorKey; // Used $colorItemTreeIcon: $colorKey; // Used
$colorItemTreeIconHover: $colorItemTreeIcon; // Used $colorItemTreeIconHover: $colorItemTreeIcon; // Used
$colorItemTreeFg: $colorBodyFg; $colorItemTreeFg: $colorBodyFg;
$colorItemTreeSelectedBg: pushBack($colorKey, 15%); $colorItemTreeSelectedBg: $colorSelectedBg;
$colorItemTreeSelectedFg: $colorBodyBg; $colorItemTreeSelectedFg: $colorItemTreeHoverFg;
$colorItemTreeSelectedIcon: $colorItemTreeSelectedFg; $colorItemTreeSelectedIcon: $colorItemTreeSelectedFg;
$colorItemTreeEditingBg: pushBack($editUIColor, 20%); $colorItemTreeEditingBg: pushBack($editUIColor, 20%);
$colorItemTreeEditingFg: $editUIColor; $colorItemTreeEditingFg: $editUIColor;
@ -347,6 +355,7 @@ $scrollbarThumbColorMenuHov: darken($scrollbarThumbColorMenu, 2%);
// Splitter // Splitter
$splitterHandleD: 2px; $splitterHandleD: 2px;
$splitterD: $splitterHandleD;
$splitterHandleHitMargin: 4px; $splitterHandleHitMargin: 4px;
$colorSplitterBaseBg: $colorBodyBg; $colorSplitterBaseBg: $colorBodyBg;
$colorSplitterBg: pullForward($colorSplitterBaseBg, 20%); $colorSplitterBg: pullForward($colorSplitterBaseBg, 20%);

View File

@ -48,10 +48,16 @@ button {
height: $d; width: $d; height: $d; width: $d;
} }
} }
}
.c-compact-button { &.is-active {
@include cCompactButtons($bg: $colorBtnBg, $fg: $colorBtnFg, $bgHov: $colorBtnBgHov); background: $colorBtnActiveBg;
color: $colorBtnActiveFg;
}
&.is-selected {
background: $colorBtnSelectedBg;
color: $colorBtnSelectedFg;
}
} }
/********* Icon Buttons */ /********* Icon Buttons */
@ -143,7 +149,7 @@ button {
font-family: symbolsfont; font-family: symbolsfont;
font-size: 1rem * $s; font-size: 1rem * $s;
transform-origin: center; transform-origin: center;
transition: transform 100ms ease-in-out; transition: $transOut;
} }
} }
@ -270,6 +276,63 @@ select {
} }
} }
/******************************************************** TABS */
.c-tabs {
// Single horizontal strip of tabs, with a bottom divider line
@include userSelectNone();
display: flex;
flex: 0 0 auto;
flex-wrap: wrap;
position: relative; // Required in case this is applied to a <ul>
&:before {
// Separator line at bottom of tabs
content: '';
display: block;
height: 1px;
width: 100%;
background: $colorBtnReverseBg;
position: absolute;
bottom: 0px;
z-index: 1;
}
}
.c-tab {
// Used in Tab View, generic tabs
background: $colorBtnBg;
color: $colorBtnFg;
cursor: pointer;
display: flex;
align-items: center;
flex: 1 1 auto;
margin: 1px 1px 0 0;
padding: $interiorMargin $interiorMarginLg;
white-space: nowrap;
--notchSize: 7px;
clip-path:
polygon(
0% 0%,
calc(100% - var(--notchSize)) 0%,
100% var(--notchSize),
100% calc(100% - var(--notchSize)),
100% 100%,
0% 100%
);
@include hover() {
background: $colorBtnBgHov;
}
&.is-current {
background: $colorBtnReverseBg;
color: $colorBtnReverseFg;
pointer-events: none;
}
}
/******************************************************** HYPERLINKS AND HYPERLINK BUTTONS */ /******************************************************** HYPERLINKS AND HYPERLINK BUTTONS */
.c-hyperlink { .c-hyperlink {
&--link { &--link {
@ -658,7 +721,6 @@ input[type="range"] {
} }
} }
/***************************************************** LOCAL CONTROLS */
.h-local-controls { .h-local-controls {
// Holder for local controls // Holder for local controls
&--horz { &--horz {

View File

@ -101,7 +101,6 @@
min-width: 120px; min-width: 120px;
order: 1; order: 1;
position: relative; position: relative;
white-space: nowrap;
width: $formLabelW; width: $formLabelW;
} }
@ -121,15 +120,26 @@
margin-right: 5px; margin-right: 5px;
} }
} }
.select {
.l-input-lg { // LEGACY FORM SUPPORT
input[type=text],
input[type=search],
input[type=number] {
width: 100%;
}
}
select {
margin-right: $interiorMargin; margin-right: $interiorMargin;
} }
} }
.hint, .field-hints { color: $colorFieldHint; } .hint, .field-hints { color: $colorFieldHint; }
}
}
.selector-list { .selector-list {
// Used in create overlay to display tree view // Displays tree view in dialogs
@include nice-input(); @include nice-input();
padding: $interiorMargin; padding: $interiorMargin;
position: relative; position: relative;
@ -140,8 +150,6 @@
box-sizing: border-box; box-sizing: border-box;
overflow: auto; overflow: auto;
} }
}
}
} }
.l-controls-first .form .form-row, .l-controls-first .form .form-row,

View File

@ -804,7 +804,9 @@ mct-indicators mct-include {
} }
.label { .label {
// Hover bubbles that appear when hovering on an Indicator
display: inline-block; display: inline-block;
a, a,
button, button,
s-button, s-button,
@ -851,8 +853,6 @@ mct-indicators mct-include {
} }
&:not(.no-collapse) { &:not(.no-collapse) {
z-index: 0;
&:before { &:before {
margin-right: 0 !important; margin-right: 0 !important;
} }
@ -870,6 +870,8 @@ mct-indicators mct-include {
transform-origin: 10px 100%; transform-origin: 10px 100%;
transform: scale(0.0); transform: scale(0.0);
white-space: nowrap; white-space: nowrap;
z-index: 50;
&:before { &:before {
// Infobubble-style arrow element // Infobubble-style arrow element
content: ''; content: '';
@ -880,9 +882,9 @@ mct-indicators mct-include {
} }
} }
&:hover { @include hover() {
background: $bg; background: $bg;
z-index: 1;
.label { .label {
opacity: 1; opacity: 1;
transform: scale(1.0); transform: scale(1.0);
@ -1314,7 +1316,7 @@ body.desktop {
.grid-properties { .grid-properties {
display: grid; display: grid;
grid-row-gap: 0; grid-row-gap: 0;
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr 2fr;
} }
.grid-span-all, .grid-span-all,

View File

@ -467,50 +467,6 @@
} }
} }
@mixin cCompactButtons($bg, $fg, $bgHov) {
// Used in Tab view
// To be used in indicators popups?
$m: 1px;
$btnM: $m;
&-holder {
background: $colorTabsHolderBg;
border-radius: $controlCr;
padding: $m ($m - $btnM) ($m - $btnM) $m;
display: flex;
flex-flow: row wrap;
justify-content: stretch;
> * {
margin: 0 $btnM $btnM 0;
}
}
background: $colorBtnBg;
color: $colorBtnFg;
flex: 1 1 auto;
padding: $interiorMargin;
&:before {
opacity: 0.5;
}
> * {
margin-left: $interiorMarginSm;
}
@include hover() {
background: $bgHov;
}
&.is-current {
background: $colorBtnReverseBg;
color: $colorBtnReverseFg;
pointer-events: none;
}
}
@mixin cSelect($bg, $fg, $arwClr, $shdw) { @mixin cSelect($bg, $fg, $arwClr, $shdw) {
$svgArwClr: str-slice(inspect($arwClr), 2, str-length(inspect($arwClr))); // Remove initial # in color value $svgArwClr: str-slice(inspect($arwClr), 2, str-length(inspect($arwClr))); // Remove initial # in color value
background: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3e%3cpath fill='%23#{$svgArwClr}' d='M5 5l5-5H0z'/%3e%3c/svg%3e"), $bg; background: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3e%3cpath fill='%23#{$svgArwClr}' d='M5 5l5-5H0z'/%3e%3c/svg%3e"), $bg;

View File

@ -19,7 +19,6 @@
* this source code distribution or the Licensing information page available * this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information. * at runtime from the About dialog for additional information.
*****************************************************************************/ *****************************************************************************/
/******************************************************** TABLE */ /******************************************************** TABLE */
table { table {
$minW: 50px; $minW: 50px;
@ -53,8 +52,7 @@ table {
// Can be used by any type of table, scrolling, LAD, etc. // Can be used by any type of table, scrolling, LAD, etc.
$min-w: 50px; $min-w: 50px;
position: absolute; height: 100%;
top: 0; right: 0; bottom: 0; left: 0;
width: 100%; width: 100%;
&__control-bar, &__control-bar,
@ -118,3 +116,35 @@ table {
width: 33%; // Needed to prevent size jumping as values dynamically update width: 33%; // Needed to prevent size jumping as values dynamically update
} }
} }
/************************************** TABLE AND SUMMARY VIEWS */
// Displays summary values above a table.
.c-table-and-summary {
height: 100%;
width: 100%;
overflow: auto;
display: flex;
flex-direction: column;
> * + * { margin-top: $interiorMargin; }
&__summary {
display: flex;
justify-items: stretch;
> * + * { margin-left: 1px; }
}
&__summary-item {
background: $colorSummaryBg;
color: $colorSummaryFg;
flex: 1 1 auto;
padding: $interiorMargin $interiorMarginLg;
em {
font-weight: bold;
color: $colorSummaryFgEm;
}
}
}

View File

@ -55,6 +55,7 @@
&__grippy { &__grippy {
$d: 8px; $d: 8px;
@include grippy($c: $colorItemTreeVC, $dir: 'y'); @include grippy($c: $colorItemTreeVC, $dir: 'y');
flex: 0 0 auto;
margin-right: $interiorMarginSm; margin-right: $interiorMarginSm;
transform: translateY(-2px); transform: translateY(-2px);
width: $d; height: $d; width: $d; height: $d;

View File

@ -22,7 +22,6 @@
min-height: 50px; min-height: 50px;
+ [class*="__"] { + [class*="__"] {
// Margin between elements
margin-top: $interiorMargin; margin-top: $interiorMargin;
} }
@ -37,9 +36,7 @@
} }
&__elements { &__elements {
// LEGACY TODO: Refactor when markup is updated, fix scrolling height: 200px; // Initial height
// so that only tree holder handles overflow
height: 200px;
.tree-item { .tree-item {
.t-object-label { .t-object-label {
@ -64,48 +61,6 @@
} }
/************************************************************** LEGACY */ /************************************************************** LEGACY */
// TODO: refactor when legacy properties markup can be converted
.inspector-location {
display: inline-block;
.location-item {
$h: 1.2em;
box-sizing: border-box;
cursor: pointer;
display: inline-block;
line-height: $h;
position: relative;
padding: 2px 4px;
.t-object-label {
.t-item-icon {
height: $h;
margin-right: $interiorMarginSm;
}
}
&:hover {
background: $colorItemTreeHoverBg;
color: $colorItemTreeHoverFg;
.icon {
color: $colorItemTreeIconHover;
}
}
}
&:not(.last) .t-object-label .t-title-label:after {
color: pushBack($colorInspectorFg, 15%);
content: '\e904';
display: inline-block;
font-family: symbolsfont;
font-size: 8px;
font-style: normal !important;
line-height: inherit;
margin-left: $interiorMarginSm;
width: 4px;
}
}
.l-inspector-part { .l-inspector-part {
display: contents; display: contents;
} }
@ -116,8 +71,8 @@
grid-column: 1 / 3; grid-column: 1 / 3;
} }
.tree .grid-properties { .c-tree .grid-properties {
margin-left: $treeItemIndent + $interiorMarginLg; margin-left: $treeItemIndent;
} }
} }
@ -143,7 +98,6 @@
} }
+ .c-properties { + .c-properties {
// Margin between components
margin-top: $interiorMarginLg; margin-top: $interiorMarginLg;
} }

View File

@ -3,14 +3,14 @@
<div class="c-properties__header" title="The location of this linked object.">Original Location</div> <div class="c-properties__header" title="The location of this linked object.">Original Location</div>
<ul class="c-properties__section"> <ul class="c-properties__section">
<li class="c-properties__row" v-if="originalPath.length"> <li class="c-properties__row" v-if="originalPath.length">
<ul class="c-properties__value"> <ul class="c-properties__value c-location">
<li v-for="pathObject in orderedOriginalPath" <li v-for="pathObject in orderedOriginalPath"
class="c-location__item"
:key="pathObject.key"> :key="pathObject.key">
<object-label <object-label
:domainObject="pathObject.domainObject" :domainObject="pathObject.domainObject"
:objectPath="pathObject.objectPath"> :objectPath="pathObject.objectPath">
</object-label> </object-label>
<span class="c-disclosure-triangle"></span>
</li> </li>
</ul> </ul>
</li> </li>
@ -18,8 +18,50 @@
</div> </div>
</template> </template>
<script> <style lang="scss">
@import "~styles/sass-base";
.c-location {
display: flex;
flex-wrap: wrap;
&__item {
$m: $interiorMarginSm;
cursor: pointer;
display: flex;
align-items: center;
margin: 0 $m $m 0;
&:not(:last-child) {
&:after {
color: $colorInspectorPropName;
content: $glyph-icon-arrow-right;
font-family: symbolsfont;
font-size: 0.7em;
margin-left: $m;
opacity: 0.8;
}
}
.c-object-label {
padding: 0;
transition: $transOut;
&__type-icon {
width: auto;
font-size: 1em;
}
&:hover {
transition: $transIn;
filter: $filterHov;
}
}
}
}
</style>
<script>
import ObjectLabel from '../components/ObjectLabel.vue'; import ObjectLabel from '../components/ObjectLabel.vue';
export default { export default {

View File

@ -112,7 +112,7 @@ const PLACEHOLDER_OBJECT = {};
promptUserandCancelEditing() { promptUserandCancelEditing() {
let dialog = this.openmct.overlays.dialog({ let dialog = this.openmct.overlays.dialog({
iconClass: 'alert', iconClass: 'alert',
message: 'Are you sure you want to continue? All unsaved changes will be lost!', message: 'Any unsaved changes will be lost. Are you sure you want to continue?',
buttons: [ buttons: [
{ {
label: 'Ok', label: 'Ok',

View File

@ -186,7 +186,6 @@
// Wrapper for main views // Wrapper for main views
flex: 1 1 auto !important; flex: 1 1 auto !important;
overflow: auto; overflow: auto;
//font-size: 16px; // TEMP FOR LEGACY STYLING
} }
&__tree { &__tree {

View File

@ -128,7 +128,6 @@
background: $colorSplitterBg; background: $colorSplitterBg;
display: block; display: block;
position: absolute; position: absolute;
z-index: 10;
transition: $transOut; transition: $transOut;
&:before { &:before {