From f5c7fc1c6aa985151cf9f151d2f3423772d6fc09 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 3 Jul 2018 20:09:24 +0200 Subject: client/RoomFinder: Refactor --- .../react/components/presentational/RoomFinder.js | 74 ++++++++++++++++++++++ .../components/presentational/RoomFinder.scss | 23 +++++++ 2 files changed, 97 insertions(+) create mode 100644 src/client/react/components/presentational/RoomFinder.js create mode 100644 src/client/react/components/presentational/RoomFinder.scss (limited to 'src/client/react/components/presentational') 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 . + * + */ + +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
; + } + + return ( +
+ + +
+ +
+ ); + } +} + +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; + } + } +} -- cgit v1.1