From c12b366994eeb2cd960ede1948e6e99f1127c292 Mon Sep 17 00:00:00 2001 From: Noah Loomans Date: Tue, 26 Jun 2018 22:40:40 +0200 Subject: Menu: Split presentational and container --- src/client/react/components/presentational/Menu.js | 96 ++++++++++++++++++++++ .../react/components/presentational/Menu.scss | 25 ++++++ 2 files changed, 121 insertions(+) create mode 100644 src/client/react/components/presentational/Menu.js create mode 100644 src/client/react/components/presentational/Menu.scss (limited to 'src/client/react/components/presentational') diff --git a/src/client/react/components/presentational/Menu.js b/src/client/react/components/presentational/Menu.js new file mode 100644 index 0000000..d43c1d3 --- /dev/null +++ b/src/client/react/components/presentational/Menu.js @@ -0,0 +1,96 @@ +/** + * 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 { SimpleMenu, MenuItem } from 'rmwc/Menu'; +import { Icon } from 'rmwc/Icon'; +import users from '../../users'; + +import './Menu.scss'; + +class Menu extends React.Component { + static propTypes = { + user: PropTypes.string, + setUser: PropTypes.func.isRequired, + showRoomFinder: PropTypes.func.isRequired, + } + + static defaultProps = { + user: null, + } + + onItemSelected(index) { + switch (index) { + case 'room_finder': { + const { setUser, user, showRoomFinder } = this.props; + + if (user == null || users.byId[user].type !== 'r') { + // We are not currently viewing a room, correct the situation. + setUser(users.allRoomIds[0]); + } + + showRoomFinder(); + break; + } + default: + // No default + } + } + + render() { + return ( +
+ + + + )} + onSelected={(event) => { + // Send the `data-type` of the selected + this.onItemSelected(event.detail.item.dataset.type); + }} + > + + + Voeg label toe + + + + Maak favoriet + +
+ + + Lokaal zoeken + + + + Oud rooster gebruiken + + +
+ ); + } +} + +export default Menu; diff --git a/src/client/react/components/presentational/Menu.scss b/src/client/react/components/presentational/Menu.scss new file mode 100644 index 0000000..3d84507 --- /dev/null +++ b/src/client/react/components/presentational/Menu.scss @@ -0,0 +1,25 @@ +.Menu { + .mdc-menu-anchor { + height: 100%; + } + + .mdc-button { + height: 100%; + min-width: unset; + color: black; + + &::before, &::after { + background-color: black; + } + + i { + font-size: 24px; + } + } + + .mdc-list-item { + i { + padding-right: 8px; + } + } +} -- cgit v1.1