diff options
author | Noah Loomans <noahloomans@gmail.com> | 2018-07-03 20:09:24 +0200 |
---|---|---|
committer | Noah Loomans <noahloomans@gmail.com> | 2018-07-03 20:14:11 +0200 |
commit | f5c7fc1c6aa985151cf9f151d2f3423772d6fc09 (patch) | |
tree | f91072de9c3a7067c037109e68e0880113624baf /src/client/react/components/presentational | |
parent | 8f7bcf27d6ad8e3d13114bd60c942fa8cce279f8 (diff) |
client/RoomFinder: Refactor
Diffstat (limited to 'src/client/react/components/presentational')
-rw-r--r-- | src/client/react/components/presentational/RoomFinder.js | 74 | ||||
-rw-r--r-- | src/client/react/components/presentational/RoomFinder.scss | 23 |
2 files changed, 97 insertions, 0 deletions
diff --git a/src/client/react/components/presentational/RoomFinder.js b/src/client/react/components/presentational/RoomFinder.js new file mode 100644 index 0000000..cbcf837 --- /dev/null +++ b/src/client/react/components/presentational/RoomFinder.js @@ -0,0 +1,74 @@ +/** + * Copyright (C) 2018 Noah Loomans + * + * This file is part of rooster.hetmml.nl. + * + * rooster.hetmml.nl is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * rooster.hetmml.nl is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with rooster.hetmml.nl. If not, see <http://www.gnu.org/licenses/>. + * + */ + +import React from 'react'; +import PropTypes from 'prop-types'; +import { Button, ButtonIcon } from 'rmwc/Button'; +import users from '../../users'; + +import './RoomFinder.scss'; + +class RoomFinder extends React.Component { + static propTypes = { + // redux + isVisible: PropTypes.bool.isRequired, + onHide: PropTypes.func.isRequired, + + // react-router + user: PropTypes.string.isRequired, + shiftRoom: PropTypes.func.isRequired, + } + + componentDidMount() { + const { isVisible, user, onHide } = this.props; + + if (isVisible && users.byId[user].type !== 'r') { + // We are not currently viewing a room, so just hide. + onHide(); + } + } + + render() { + const { isVisible, shiftRoom, onHide } = this.props; + if (!isVisible) { + return <div />; + } + + return ( + <div className="RoomFinder"> + <Button onClick={() => shiftRoom(-1)}> + Vorige + </Button> + <Button onClick={() => shiftRoom(+1)}> + Volgende + </Button> + <div className="grow" /> + <Button + className="closeButton" + onClick={onHide} + > + <ButtonIcon use="close" /> + </Button> + </div> + ); + } +} + +export default RoomFinder; diff --git a/src/client/react/components/presentational/RoomFinder.scss b/src/client/react/components/presentational/RoomFinder.scss new file mode 100644 index 0000000..d4b16d9 --- /dev/null +++ b/src/client/react/components/presentational/RoomFinder.scss @@ -0,0 +1,23 @@ +.RoomFinder { + display: flex; + margin: 8px; + padding: 8px; + border-radius: 2px; + background-color: #D32F2F; + + .mdc-button { + color: white; + + &::before, &::after { + background-color: white; + } + } + + .closeButton { + min-width: 48px; + + .mdc-button__icon { + margin-right: 0; + } + } +} |