diff --git a/src/components/helpers/preview/Preview.jsx b/src/components/helpers/preview/Preview.jsx new file mode 100644 index 00000000..b66fe53d --- /dev/null +++ b/src/components/helpers/preview/Preview.jsx @@ -0,0 +1,11 @@ +import './preview.scss'; + +export default function Preview(props) { + return ( +
+

NOTICE

+

You are currently in preview mode. Settings will be reset on closing this tab.

+ +
+ ); +} diff --git a/src/components/helpers/preview/preview.scss b/src/components/helpers/preview/preview.scss new file mode 100644 index 00000000..2bcc4099 --- /dev/null +++ b/src/components/helpers/preview/preview.scss @@ -0,0 +1,15 @@ +.preview { + position: absolute; + bottom: 20px; + right: 20px; + padding: 15px; + color: var(--modal-text); + background: var(--background); + max-width: 300px; + border-radius: 0.7em; + z-index: 999; + + h1 { + font-size: 1rem; + } +} diff --git a/src/components/modals/Modals.jsx b/src/components/modals/Modals.jsx index f1c38986..2c543304 100644 --- a/src/components/modals/Modals.jsx +++ b/src/components/modals/Modals.jsx @@ -5,6 +5,7 @@ import Hotkeys from 'react-hot-keys'; import Main from './main/Main'; import Navbar from '../widgets/navbar/Navbar'; +import Preview from '../helpers/preview/Preview'; import EventBus from 'modules/helpers/eventbus'; @@ -20,7 +21,8 @@ export default class Modals extends PureComponent { mainModal: false, updateModal: false, welcomeModal: false, - feedbackModal: false + feedbackModal: false, + preview: false }; } @@ -49,10 +51,20 @@ export default class Modals extends PureComponent { this.setState({ welcomeModal: false }); + EventBus.dispatch('refresh', 'widgetsWelcomeDone'); EventBus.dispatch('refresh', 'widgets'); EventBus.dispatch('refresh', 'backgroundwelcome'); } + previewWelcome() { + localStorage.setItem('showWelcome', false); + this.setState({ + welcomeModal: false, + preview: true + }); + EventBus.dispatch('refresh', 'widgetsWelcome'); + } + toggleModal(type, action) { this.setState({ [type]: action @@ -72,9 +84,10 @@ export default class Modals extends PureComponent { this.closeWelcome()} isOpen={this.state.welcomeModal} className='Modal welcomemodal mainModal' overlayClassName='Overlay welcomeoverlay' shouldCloseOnOverlayClick={false} ariaHideApp={false}> - this.closeWelcome()}/> + this.closeWelcome()} modalSkip={() => this.previewWelcome()}/> + {this.state.preview ? window.location.reload()}/> : null} {variables.keybinds.toggleModal && variables.keybinds.toggleModal !== '' ? this.toggleModal('mainModal', (this.state.mainModal === true ? false : true))}/> : null} ); diff --git a/src/components/modals/welcome/Welcome.jsx b/src/components/modals/welcome/Welcome.jsx index 3ea518a3..6b4b0526 100644 --- a/src/components/modals/welcome/Welcome.jsx +++ b/src/components/modals/welcome/Welcome.jsx @@ -99,6 +99,7 @@ export default class WelcomeModal extends PureComponent { this.switchTab(tab)}/>
+ {(this.state.currentTab === 0) ? : null} {(this.state.currentTab !== 0) ? : null}
diff --git a/src/components/widgets/Widgets.jsx b/src/components/widgets/Widgets.jsx index a50b7bf7..eef4aac0 100644 --- a/src/components/widgets/Widgets.jsx +++ b/src/components/widgets/Widgets.jsx @@ -18,7 +18,8 @@ export default class Widgets extends PureComponent { constructor() { super(); this.state = { - order: JSON.parse(localStorage.getItem('order')) + order: JSON.parse(localStorage.getItem('order')), + welcome: localStorage.getItem('showWelcome') }; // widgets we can re-order this.widgets = { @@ -42,12 +43,29 @@ export default class Widgets extends PureComponent { order: JSON.parse(localStorage.getItem('order')) }); } + + if (data === 'widgetsWelcome') { + this.setState({ + welcome: localStorage.getItem('showWelcome') + }); + localStorage.setItem('showWelcome', true); + window.onbeforeunload = () => { + localStorage.clear(); + } + } + + if (data === 'widgetsWelcomeDone') { + this.setState({ + welcome: localStorage.getItem('showWelcome') + }); + window.onbeforeunload = null; + } }); } render() { // don't show when welcome is there - if (localStorage.getItem('showWelcome') !== 'false') { + if (this.state.welcome !== 'false') { return
; }