From 88b789c466c079a7b02cb0acb30f680b91dc8880 Mon Sep 17 00:00:00 2001 From: Terry Truong Date: Thu, 30 Jun 2022 15:42:59 +1000 Subject: For large screens, place tutorial-pane on bottom-right --- src/App.vue | 54 +++++++++++++++++++++++++++++++++++++++++------------- src/lib.ts | 10 +++++++--- 2 files changed, 48 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/App.vue b/src/App.vue index 0cf2df0..f54cb31 100644 --- a/src/App.vue +++ b/src/App.vue @@ -23,7 +23,7 @@
- @@ -48,16 +48,18 @@
- + + :nodeName="infoModalNodeName" :infoResponse="infoModalData" :tolMap="tolMap" :lytOpts="lytOpts" + :uiOpts="uiOpts" class="z-10" @close="infoModalNodeName = null"/> - + @@ -189,13 +191,39 @@ export default defineComponent({ }; }, tutPaneContainerStyles(): Record { - return { - minHeight: (this.tutPaneOpen ? this.uiOpts.tutPaneSz : 0) + 'px', - maxHeight: (this.tutPaneOpen ? this.uiOpts.tutPaneSz : 0) + 'px', - transitionDuration: this.uiOpts.transitionDuration + 'ms', - transitionProperty: 'max-height, min-height', - overflow: 'hidden', - }; + if (this.uiOpts.breakpoint != 'lg'){ + return { + minHeight: (this.tutPaneOpen ? this.uiOpts.tutPaneSz : 0) + 'px', + maxHeight: (this.tutPaneOpen ? this.uiOpts.tutPaneSz : 0) + 'px', + transitionProperty: 'max-height, min-height', + transitionDuration: this.uiOpts.transitionDuration + 'ms', + overflow: 'hidden', + }; + } else { + return { + position: 'absolute', + bottom: '0.5cm', + right: '0.5cm', + zIndex: '1', + visibility: this.tutPaneOpen ? 'visible' : 'hidden', + transitionProperty: 'visibility', + transitionDuration: this.uiOpts.transitionDuration + 'ms', + }; + } + }, + tutPaneStyles(): Record { + if (this.uiOpts.breakpoint != 'lg'){ + return { + height: this.uiOpts.tutPaneSz + 'px', + } + } else { + return { + height: this.uiOpts.tutPaneSz + 'px', + maxWidth: '10cm', + borderRadius: this.uiOpts.borderRadius + 'px', + boxShadow: '0 0 3px black', + }; + } }, ancestryBarContainerStyles(): Record { let ancestryBarBreadth = this.detachedAncestors == null ? 0 : this.uiOpts.ancestryBarBreadth; diff --git a/src/lib.ts b/src/lib.ts index de8c560..bbeb02a 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -4,7 +4,7 @@ import {TolNode} from './tol'; import {LayoutOptions} from './layout'; -import {getBreakpoint, getScrollBarWidth, onTouchDevice} from './util'; +import {getBreakpoint, Breakpoint, getScrollBarWidth, onTouchDevice} from './util'; // For server requests const SERVER_URL = 'http://localhost:8000/cgi-bin/data.py' @@ -102,6 +102,9 @@ export type UiOptions = { transitionDuration: number, // ms animationDelay: number, // Time between updates during transitions/resizes/etc, in ms autoActionDelay: number, // Time between auto-mode actions (incl transitions), in ms + // Device-info-like + touchDevice: boolean, + breakpoint: Breakpoint, // Other useReducedTree: boolean, searchSuggLimit: number, // Max number of search suggestions @@ -109,7 +112,6 @@ export type UiOptions = { tutorialSkip: boolean, disabledActions: Set, disableShortcuts: boolean, - touchDevice: boolean, }; // Option defaults export function getDefaultLytOpts(): LayoutOptions { @@ -163,6 +165,9 @@ export function getDefaultUiOpts(lytOpts: LayoutOptions): UiOptions { transitionDuration: 300, // ms animationDelay: 100, // ms autoActionDelay: 500, // ms + // Device-info-like + touchDevice: onTouchDevice(), + breakpoint: getBreakpoint(), // Other useReducedTree: false, searchSuggLimit: 10, @@ -170,7 +175,6 @@ export function getDefaultUiOpts(lytOpts: LayoutOptions): UiOptions { tutorialSkip: false, disabledActions: new Set() as Set, disableShortcuts: false, - touchDevice: onTouchDevice(), }; } // Used in Settings.vue, and when saving to localStorage -- cgit v1.2.3