From df6de5a32b9ee26eaf6cc964c4179330b5b9cb59 Mon Sep 17 00:00:00 2001 From: Michael Ochmann <michael.ochmann@propeller.de> Date: Fri, 30 Sep 2022 19:51:58 +0200 Subject: [PATCH] added "no file" screen on start --- src/ui/src/assets/css/_noFile.scss | 26 ++++++++++++++++++++++++++ src/ui/src/assets/css/ation.scss | 5 +++++ src/ui/src/components/Ation.js | 9 +++++++-- src/ui/src/components/NoFile.js | 21 +++++++++++++++++++++ src/ui/src/shared/SlideContext.js | 1 + 5 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/ui/src/assets/css/_noFile.scss create mode 100644 src/ui/src/components/NoFile.js diff --git a/src/ui/src/assets/css/_noFile.scss b/src/ui/src/assets/css/_noFile.scss new file mode 100644 index 0000000..445720e --- /dev/null +++ b/src/ui/src/assets/css/_noFile.scss @@ -0,0 +1,26 @@ +.no-file { + width: 100vw; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + + .inner { + width: 60%; + height: auto; + opacity: 0.4; + background: color(sidebarBackground); + border-radius: 1rem; + border: dashed 6px color(scrollbar); + padding: 2rem 4rem; + text-align: center; + max-width: 500px; + max-height: 300px; + + svg { + &.big { + font-size: 4rem; + } + } + } +} \ No newline at end of file diff --git a/src/ui/src/assets/css/ation.scss b/src/ui/src/assets/css/ation.scss index 48ee027..d7ac640 100644 --- a/src/ui/src/assets/css/ation.scss +++ b/src/ui/src/assets/css/ation.scss @@ -2,8 +2,11 @@ @import "variables"; @import "mixins"; @import "scrollbars"; +@import "forms"; +@import "toolbar"; @import "window"; +@import "noFile"; @import "slidesList"; @import "slide"; @import "blackout"; @@ -20,4 +23,6 @@ body { margin: 0; padding: 0; background: color(background); + color: color(foreground); + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; } \ No newline at end of file diff --git a/src/ui/src/components/Ation.js b/src/ui/src/components/Ation.js index b4dae99..d3e7b36 100644 --- a/src/ui/src/components/Ation.js +++ b/src/ui/src/components/Ation.js @@ -5,6 +5,8 @@ import Mode from "../models/Mode"; import Slide from "./Slide"; import KeyboardControl from "./KeyboardControl"; import Blackout from "./Blackout"; +import NoFile from "./NoFile"; +import Toolbar from "./Toolbar"; import SlideContext from "../shared/SlideContext"; @@ -21,13 +23,16 @@ const Ation = () => { setDeck(slideDeck); } + if (deck.length < 1) + return <NoFile openFile={openFile} />; + return ( - <SlideContext.Provider value={{slide, setSlide, mode}}> + <SlideContext.Provider value={{slide, setSlide, mode, setMode}}> <section className={`window${mode === Mode.PRESENT ? " fullscreen" : ""}`}> + <Toolbar openFile={openFile} /> <SlidesList deck={deck} /> <main className="main"> <Slide data={deck[slide] || null} /> - <button onClick={openFile}>open</button> </main> </section> <Blackout show={mode === Mode.BLACKOUT} /> diff --git a/src/ui/src/components/NoFile.js b/src/ui/src/components/NoFile.js new file mode 100644 index 0000000..ca8ba86 --- /dev/null +++ b/src/ui/src/components/NoFile.js @@ -0,0 +1,21 @@ +import React from "react"; + +import {Easel, Folder2Open} from "react-bootstrap-icons"; + +const NoFile = ({openFile}) => { + return ( + <section className="no-file"> + <section className="inner"> + <p> + <Easel className="big" /> + </p> + <i>No presentation loaded</i><br /> + <p> + <button onClick={openFile}><Folder2Open /> open</button> + </p> + </section> + </section> + ); +}; + +export default NoFile; \ No newline at end of file diff --git a/src/ui/src/shared/SlideContext.js b/src/ui/src/shared/SlideContext.js index 05a0529..6584d40 100644 --- a/src/ui/src/shared/SlideContext.js +++ b/src/ui/src/shared/SlideContext.js @@ -5,6 +5,7 @@ import Mode from "../models/Mode"; const SlideContext = createContext({ slide : 0, mode : Mode.NORMAL, + setMode : () => {}, setSlide : () => {} });