mirror of
https://github.com/nasa/openmct.git
synced 2024-12-18 20:57:53 +00:00
Markup / scss refactor mobile styles WIP
- Layout, panes mobile styling WIP
This commit is contained in:
parent
02afd44dd1
commit
4e0dcb68bf
146
src/styles-new/_constants-mobile.scss
Normal file
146
src/styles-new/_constants-mobile.scss
Normal file
@ -0,0 +1,146 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT, Copyright (c) 2014-2018, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
|
||||
/* REQUIRES /platform/commonUI/general/res/sass/_constants.scss */
|
||||
|
||||
/************************** MOBILE REPRESENTATION ITEMS DIMENSIONS */
|
||||
$mobileListIconSize: 30px;
|
||||
$mobileTitleDescH: 35px;
|
||||
$mobileOverlayMargin: 20px;
|
||||
$phoneItemH: floor($ueBrowseGridItemLg/4);
|
||||
$tabletItemH: floor($ueBrowseGridItemLg/3);
|
||||
|
||||
/************************** MOBILE TREE MENU DIMENSIONS */
|
||||
$mobileTreeItemH: 35px;
|
||||
$mobileTreeItemIndent: 15px;
|
||||
$mobileTreeRightArrowW: 30px;
|
||||
|
||||
/************************** DEVICE WIDTHS */
|
||||
// IMPORTANT! Usage assumes that ranges are mutually exclusive and have no gaps
|
||||
$phoMaxW: 767px;
|
||||
$tabMinW: 768px;
|
||||
$tabMaxW: 1024px;
|
||||
$desktopMinW: 1025px;
|
||||
|
||||
/************************** MEDIA QUERIES: WINDOW CHECKS FOR SPECIFIC ORIENTATIONS FOR EACH DEVICE */
|
||||
$screenPortrait: "(orientation: portrait)";
|
||||
$screenLandscape: "(orientation: landscape)";
|
||||
|
||||
//$mobileDevice: "(max-device-width: #{$tabMaxW})";
|
||||
|
||||
$phoneCheck: "(max-device-width: #{$phoMaxW})";
|
||||
$tabletCheck: "(min-device-width: #{$tabMinW}) and (max-device-width: #{$tabMaxW})";
|
||||
$desktopCheck: "(min-device-width: #{$desktopMinW}) and (-webkit-min-device-pixel-ratio: 1)";
|
||||
|
||||
/************************** MEDIA QUERIES: WINDOWS FOR SPECIFIC ORIENTATIONS FOR EACH DEVICE */
|
||||
$phonePortrait: "only screen and #{$screenPortrait} and #{$phoneCheck}";
|
||||
$phoneLandscape: "only screen and #{$screenLandscape} and #{$phoneCheck}";
|
||||
|
||||
$tabletPortrait: "only screen and #{$screenPortrait} and #{$tabletCheck}";
|
||||
$tabletLandscape: "only screen and #{$screenLandscape} and #{$tabletCheck}";
|
||||
|
||||
$desktop: "only screen and #{$desktopCheck}";
|
||||
|
||||
/************************** DEVICE PARAMETERS FOR MENUS/REPRESENTATIONS */
|
||||
$proporMenuOnly: 90%;
|
||||
$proporMenuWithView: 40%;
|
||||
|
||||
// Phones in any orientation
|
||||
@mixin phone {
|
||||
@media #{$phonePortrait},
|
||||
#{$phoneLandscape} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
//Phones in portrait orientation
|
||||
@mixin phonePortrait {
|
||||
@media #{$phonePortrait} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Phones in landscape orientation
|
||||
@mixin phoneLandscape {
|
||||
@media #{$phoneLandscape} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Tablets in any orientation
|
||||
@mixin tablet {
|
||||
@media #{$tabletPortrait},
|
||||
#{$tabletLandscape} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Tablets in portrait orientation
|
||||
@mixin tabletPortrait {
|
||||
@media #{$tabletPortrait} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Tablets in landscape orientation
|
||||
@mixin tabletLandscape {
|
||||
@media #{$tabletLandscape} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Phones and tablets in any orientation
|
||||
@mixin phoneandtablet {
|
||||
@media #{$phonePortrait},
|
||||
#{$phoneLandscape},
|
||||
#{$tabletPortrait},
|
||||
#{$tabletLandscape} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Desktop monitors in any orientation
|
||||
@mixin desktopandtablet {
|
||||
// Keeping only for legacy - should not be used moving forward
|
||||
// Use body.desktop, body.tablet instead.
|
||||
@media #{$tabletPortrait},
|
||||
#{$tabletLandscape},
|
||||
#{$desktop} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Desktop monitors in any orientation
|
||||
@mixin desktop {
|
||||
// Keeping only for legacy - should not be used moving forward
|
||||
// Use body.desktop instead.
|
||||
@media #{$desktop} {
|
||||
@content
|
||||
}
|
||||
}
|
||||
|
||||
// Transition used for the slide menu
|
||||
@mixin slMenuTransitions {
|
||||
@include transition-duration(.35s);
|
||||
transition-timing-function: ease;
|
||||
backface-visibility: hidden;
|
||||
}
|
@ -41,12 +41,28 @@
|
||||
// Selectors here
|
||||
|
||||
> .l-pane__resize-handle {
|
||||
//background: red;
|
||||
cursor: col-resize;
|
||||
width: $splitterHandleD;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
|
||||
&--before {
|
||||
left: 0;
|
||||
[class*="collapse-button"] {
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&--after {
|
||||
right: 0;
|
||||
[class*="collapse-button"] {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
body.desktop & {
|
||||
cursor: col-resize;
|
||||
width: $splitterHandleD;
|
||||
|
||||
&:before {
|
||||
// Extended hit area
|
||||
top: 0;
|
||||
@ -66,25 +82,27 @@
|
||||
|
||||
&--before {
|
||||
// Handle at left edge of containing pane
|
||||
left: 0;
|
||||
// left: 0;
|
||||
|
||||
[class*="collapse-button"] {
|
||||
left: 0;
|
||||
// left: 0;
|
||||
transform: scaleX(-1);
|
||||
}
|
||||
}
|
||||
|
||||
&--after {
|
||||
// Handle at right edge of containing pane
|
||||
right: 0;
|
||||
// right: 0;
|
||||
|
||||
[class*="collapse-button"] {
|
||||
/*[class*="collapse-button"] {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
[class*="collapse-button"] {
|
||||
background: $colorSplitterGrippy;
|
||||
color: $colorSplitterFg;
|
||||
font-size: 0.6em;
|
||||
height: nth($splitterCollapseBtnD, 2);
|
||||
width: nth($splitterCollapseBtnD, 1);
|
||||
|
||||
@ -94,11 +112,6 @@
|
||||
}
|
||||
|
||||
&.l-pane--collapsed {
|
||||
padding-left: 0 !important;
|
||||
padding-right: 0 !important;
|
||||
width: 0px;
|
||||
min-width: 0px;
|
||||
|
||||
> .l-pane__resize-handle {
|
||||
&--before {
|
||||
transform: translateX($splitterHandleD * -1) scaleX(-1);
|
||||
@ -110,6 +123,17 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
&.l-pane--collapsed {
|
||||
padding-left: 0 !important;
|
||||
padding-right: 0 !important;
|
||||
width: 0px;
|
||||
min-width: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
&--vertical {
|
||||
// Pane adjusts size vertically, handles run horizontally
|
||||
@ -167,10 +191,12 @@
|
||||
// Selectors for handle in any context
|
||||
z-index: 1;
|
||||
display: block;
|
||||
background: $colorSplitterBg;
|
||||
position: absolute;
|
||||
transition: $transOut;
|
||||
|
||||
|
||||
body.desktop & {
|
||||
background: $colorSplitterBg;
|
||||
transition: $transOut;
|
||||
&:before {
|
||||
// Extended hit area
|
||||
content: '';
|
||||
@ -201,6 +227,7 @@
|
||||
background: $colorSplitterHover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/************************ COLLAPSE BUTTONS */
|
||||
&__collapse-button {
|
||||
@ -209,7 +236,8 @@
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
background: $colorSplitterGrippy;
|
||||
|
||||
body.desktop & {
|
||||
transition: $transOut;
|
||||
|
||||
&:active, &:hover {
|
||||
@ -223,11 +251,10 @@
|
||||
&:active {
|
||||
background: $colorSplitterActive;
|
||||
}
|
||||
}
|
||||
|
||||
&:before {
|
||||
color: $colorSplitterFg;
|
||||
display: block;
|
||||
font-size: 0.6em;
|
||||
font-family: symbolsfont;
|
||||
}
|
||||
}
|
||||
|
@ -59,7 +59,6 @@
|
||||
border-top: 1px solid $colorInteriorBorder;
|
||||
height: 24px;
|
||||
padding: $interiorMarginSm;
|
||||
|
||||
}
|
||||
|
||||
/********** MAIN AREA */
|
||||
@ -116,7 +115,24 @@
|
||||
$m: $interiorMargin;
|
||||
background: $colorTreeBg;
|
||||
padding: $m $m + ($splitterD) $m $m; // TODO: move this into pane.vue
|
||||
width: 300px
|
||||
width: 300px;
|
||||
|
||||
body.mobile & {
|
||||
[class*="collapse-button"] {
|
||||
// For mobile, collapse button becomes menu icon
|
||||
$d: 32px;
|
||||
height: $d;
|
||||
width: $d;
|
||||
transform: translateX(100%);
|
||||
|
||||
&:before {
|
||||
content: $glyph-icon-menu-hamburger;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
&__pane-main {
|
||||
@ -124,7 +140,14 @@
|
||||
}
|
||||
|
||||
&__pane-inspector {
|
||||
width: 200px
|
||||
// Mobile-first
|
||||
display: none;
|
||||
}
|
||||
|
||||
body.desktop & {
|
||||
&__pane-inspector {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
Loading…
Reference in New Issue
Block a user