openmct/src/styles/_table.scss
2024-01-09 13:31:51 -08:00

273 lines
5.7 KiB
SCSS

/*****************************************************************************
* Open MCT, Copyright (c) 2014-2024, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/******************************************************** TABLE */
table {
$minW: 50px;
width: 100%;
thead {
th {
background: $colorTabHeaderBg;
+ th {
border-left: 1px solid $colorTabHeaderBorder;
}
}
}
tbody {
tr + tr {
border-top: 1px solid $colorTabBorder;
}
}
th,
td {
white-space: nowrap;
min-width: $minW;
padding: $tabularTdPadTB $tabularTdPadLR;
}
td {
vertical-align: top;
}
}
.is-editing {
td.is-selectable {
&:hover {
background: rgba($editUIColorBg, 0.1);
box-shadow: inset rgba($editUIColorBg, 0.8) 0 0 0 1px;
}
&[s-selected] {
background: $editUIColorBg !important;
border: 1px solid $editUIColorFg !important;
color: $editUIColorFg !important;
box-shadow: $editFrameSelectedShdw;
z-index: 2;
}
}
}
/******************************************************** C-TABLE */
div.c-table {
// When c-table is used as a wrapper element in more complex table views
height: 100%;
}
.c-table-wrapper {
// Wraps .c-control-bar and .c-table
display: flex;
flex-direction: column;
overflow: hidden;
// Using absolute here because sizing table can't calc width properly if padding is used
$p: $mainViewPad;
position: absolute;
top: $p;
right: $p;
bottom: $p;
left: $p;
> .c-table {
height: auto;
flex: 1 1 auto;
}
&.is-stale {
@include isStaleHolder();
}
.--width-less-than-600 & {
&:not(.is-paused) {
.c-table-control-bar {
display: none;
}
}
.c-table-control-bar {
.c-icon-button,
.c-click-icon,
.c-button {
&__label {
display: none;
}
}
}
}
}
.c-table-control-bar {
display: flex;
flex: 0 0 auto;
//margin-bottom: $interiorMarginSm; // This approach to allow margin to go away when control bar is hidden
padding: $interiorMarginSm 0;
> * + * {
margin-left: $interiorMarginSm;
}
}
.c-table {
// Can be used by any type of table, scrolling, LAD, etc.
$min-w: 50px;
width: 100%;
&__headers-w {
flex: 0 0 auto;
}
/******************************* ELEMENTS */
thead tr,
&.c-table__headers {
background: $colorTabHeaderBg;
th {
&:not(:first-child) {
border-left: 1px solid $colorTabHeaderBorder;
}
}
}
tbody,
&__body {
tr:not(.c-table__group-header) + tr:not(.c-table__group-header) {
border-top: 1px solid $colorTabBorder;
}
transition: $transOut;
}
&__selectable-row {
cursor: pointer;
&:hover {
background: $colorListItemBgHov;
filter: $filterHov;
transition: $transIn;
}
}
&__group-header {
// tr element found in LAD Table Sets
border-top: 1px solid $colorTabHeaderBorder;
background: $colorTabGroupHeaderBg;
td {
color: $colorTabGroupHeaderFg;
}
}
&--sortable {
.is-sorting {
&:after {
color: $colorIconAlias;
content: $glyph-icon-arrow-tall-up;
font-family: symbolsfont;
font-size: 8px;
display: inline-block;
margin-left: $interiorMarginSm;
}
&.desc:after {
content: $glyph-icon-arrow-tall-down;
}
}
.is-sortable {
cursor: pointer;
}
}
}
.c-lad-table-wrapper {
width: 100%;
height: 100%;
padding: $mainViewPad;
&.is-stale {
@include isStaleHolder();
}
}
.c-lad-table {
&.fixed-layout {
table-layout: fixed;
td {
overflow: hidden;
text-overflow: ellipsis;
}
}
th,
td {
width: 33%; // Needed to prevent size jumping as values dynamically update
overflow: hidden;
text-overflow: ellipsis;
}
tbody tr {
&:hover {
background: $colorItemTreeHoverBg;
}
}
td {
user-select: none; // Table supports context-click to display Actions menu, don't allow text selection.
&.is-stale {
@include isStaleElement();
}
}
}
/************************************** 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;
}
}
}