From a780e720912d9b33600e3c7c927a8cdcfe99c31b Mon Sep 17 00:00:00 2001 From: Jessie Keck <jessie.keck@gmail.com> Date: Thu, 28 Feb 2019 20:15:34 -0800 Subject: [PATCH] Map maximize/minimize window action dispatches to WindowTopBar props. --- src/components/WindowTopBar.js | 24 +++++++++++++----------- src/containers/WindowTopBar.js | 3 +++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/components/WindowTopBar.js b/src/components/WindowTopBar.js index ff47ee710..fdddf9677 100644 --- a/src/components/WindowTopBar.js +++ b/src/components/WindowTopBar.js @@ -5,6 +5,7 @@ import IconButton from '@material-ui/core/IconButton'; import MenuIcon from '@material-ui/icons/MenuSharp'; import CloseIcon from '@material-ui/icons/CloseSharp'; import FullscreenIcon from '@material-ui/icons/FullscreenSharp'; +import FullscreenExitIcon from '@material-ui/icons/FullscreenExitSharp'; import Toolbar from '@material-ui/core/Toolbar'; import AppBar from '@material-ui/core/AppBar'; import classNames from 'classnames'; @@ -18,21 +19,14 @@ import ns from '../config/css-ns'; * WindowTopBar */ export class WindowTopBar extends Component { - /** - * maximizeWindow - * @return - */ - maximizeWindow() { - console.log('maximized!'); - } - /** * render * @return */ render() { const { - closeWindow, windowId, classes, toggleWindowSideBar, t, manifestTitle, + closeWindow, windowId, classes, toggleWindowSideBar, + t, manifestTitle, maximizeWindow, maximized, minimizeWindow, } = this.props; return ( <AppBar position="relative"> @@ -54,9 +48,11 @@ export class WindowTopBar extends Component { color="inherit" className={ns('window-maximize')} aria-label={t('maximizeWindow')} - onClick={this.maximizeWindow} + onClick={(maximized ? minimizeWindow : maximizeWindow)} > - <FullscreenIcon /> + {maximized + ? <FullscreenExitIcon /> + : <FullscreenIcon />} </IconButton> <IconButton color="inherit" @@ -74,6 +70,9 @@ export class WindowTopBar extends Component { WindowTopBar.propTypes = { manifestTitle: PropTypes.string, + maximizeWindow: PropTypes.func, + maximized: PropTypes.bool, + minimizeWindow: PropTypes.func, closeWindow: PropTypes.func.isRequired, windowId: PropTypes.string.isRequired, classes: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types @@ -83,5 +82,8 @@ WindowTopBar.propTypes = { WindowTopBar.defaultProps = { manifestTitle: '', + maximizeWindow: () => {}, + maximized: false, + minimizeWindow: () => {}, t: key => key, }; diff --git a/src/containers/WindowTopBar.js b/src/containers/WindowTopBar.js index 871a76678..a082a6e57 100644 --- a/src/containers/WindowTopBar.js +++ b/src/containers/WindowTopBar.js @@ -10,6 +10,7 @@ import { WindowTopBar } from '../components/WindowTopBar'; /** mapStateToProps */ const mapStateToProps = (state, { windowId }) => ({ manifestTitle: getManifestTitle(getWindowManifest(state, windowId)), + maximized: state.windows[windowId].maximized, }); /** @@ -19,6 +20,8 @@ const mapStateToProps = (state, { windowId }) => ({ */ const mapDispatchToProps = (dispatch, { windowId }) => ({ closeWindow: () => dispatch(actions.closeWindow(windowId)), + maximizeWindow: () => dispatch(actions.maximizeWindow(windowId)), + minimizeWindow: () => dispatch(actions.minimizeWindow(windowId)), toggleWindowSideBar: () => dispatch(actions.toggleWindowSideBar(windowId)), }); -- GitLab