Skip to content
Snippets Groups Projects
Commit 5f3cc976 authored by Ray Schamp's avatar Ray Schamp
Browse files

Add edit menu

parent 7b80e443
No related branches found
No related tags found
No related merge requests found
...@@ -14,7 +14,14 @@ import {MenuItem, MenuSection} from '../menu/menu.jsx'; ...@@ -14,7 +14,14 @@ import {MenuItem, MenuSection} from '../menu/menu.jsx';
import SaveButton from '../../containers/save-button.jsx'; import SaveButton from '../../containers/save-button.jsx';
import {openFeedbackForm} from '../../reducers/modals'; import {openFeedbackForm} from '../../reducers/modals';
import {openFileMenu, closeFileMenu, MENU_FILE} from '../../reducers/menus'; import {
openFileMenu,
closeFileMenu,
fileMenuOpen,
openEditMenu,
closeEditMenu,
editMenuOpen
} from '../../reducers/menus';
import styles from './menu-bar.css'; import styles from './menu-bar.css';
...@@ -151,10 +158,29 @@ const MenuBar = props => ( ...@@ -151,10 +158,29 @@ const MenuBar = props => (
</MenuSection> </MenuSection>
</MenuBarMenu> </MenuBarMenu>
</div> </div>
<MenuBarItemTooltip id="edit-menu"> <div
<div className={classNames(styles.editMenu)}>Edit</div> className={classNames(styles.menuBarItem, styles.hoverable, {
</MenuBarItemTooltip> [styles.active]: props.editMenuOpen
<div className={classNames(styles.menuBarItem, styles.hoverable)}> })}
onClick={props.onClickEdit}
>
<div className={classNames(styles.editMenu)}>Edit</div>
<MenuBarMenu
open={props.editMenuOpen}
onRequestClose={props.onRequestCloseEdit}
>
<MenuItemTooltip id="undo">
<MenuItem>Undo</MenuItem>
</MenuItemTooltip>
<MenuItemTooltip id="redo">
<MenuItem>Redo</MenuItem>
</MenuItemTooltip>
<MenuSection>
<MenuItemTooltip id="turbo">
<MenuItem>Turbo mode</MenuItem>
</MenuItemTooltip>
</MenuSection>
</MenuBarMenu>
</div> </div>
</div> </div>
<div className={classNames(styles.divider)} /> <div className={classNames(styles.divider)} />
...@@ -249,26 +275,26 @@ const MenuBar = props => ( ...@@ -249,26 +275,26 @@ const MenuBar = props => (
); );
MenuBar.propTypes = { MenuBar.propTypes = {
editMenuOpen: PropTypes.bool,
fileMenuOpen: PropTypes.bool, fileMenuOpen: PropTypes.bool,
onClickEdit: PropTypes.func,
onClickFile: PropTypes.func, onClickFile: PropTypes.func,
onGiveFeedback: PropTypes.func.isRequired, onGiveFeedback: PropTypes.func.isRequired,
onRequestCloseEdit: PropTypes.func,
onRequestCloseFile: PropTypes.func onRequestCloseFile: PropTypes.func
}; };
const mapStateToProps = state => ({ const mapStateToProps = state => ({
fileMenuOpen: state.menus[MENU_FILE] fileMenuOpen: fileMenuOpen(state),
editMenuOpen: editMenuOpen(state)
}); });
const mapDispatchToProps = dispatch => ({ const mapDispatchToProps = dispatch => ({
onGiveFeedback: () => { onGiveFeedback: () => dispatch(openFeedbackForm()),
dispatch(openFeedbackForm()); onClickFile: () => dispatch(openFileMenu()),
}, onRequestCloseFile: () => dispatch(closeFileMenu()),
onClickFile: () => { onClickEdit: () => dispatch(openEditMenu()),
dispatch(openFileMenu()); onRequestCloseEdit: () => dispatch(closeEditMenu())
},
onRequestCloseFile: () => {
dispatch(closeFileMenu());
}
}); });
export default connect( export default connect(
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
background-color: $motion-primary; background-color: $motion-primary;
padding: 0; padding: 0;
margin: 0; margin: 0;
min-width: 186px;
max-width: 260px; max-width: 260px;
overflow: visible; overflow: visible;
color: $ui-white; color: $ui-white;
......
...@@ -70,7 +70,7 @@ const addDividerClassToFirstChild = (child, id) => ( ...@@ -70,7 +70,7 @@ const addDividerClassToFirstChild = (child, id) => (
const MenuSection = ({children}) => ( const MenuSection = ({children}) => (
<React.Fragment>{ <React.Fragment>{
children.map(addDividerClassToFirstChild) React.Children.map(children, addDividerClassToFirstChild)
}</React.Fragment> }</React.Fragment>
); );
......
...@@ -2,10 +2,12 @@ const OPEN_MENU = 'scratch-gui/menus/OPEN_MENU'; ...@@ -2,10 +2,12 @@ const OPEN_MENU = 'scratch-gui/menus/OPEN_MENU';
const CLOSE_MENU = 'scratch-gui/menus/CLOSE_MENU'; const CLOSE_MENU = 'scratch-gui/menus/CLOSE_MENU';
const MENU_FILE = 'fileMenu'; const MENU_FILE = 'fileMenu';
const MENU_EDIT = 'editMenu';
const initialState = { const initialState = {
[MENU_FILE]: false [MENU_FILE]: false,
[MENU_EDIT]: false
}; };
const reducer = function (state, action) { const reducer = function (state, action) {
...@@ -23,28 +25,27 @@ const reducer = function (state, action) { ...@@ -23,28 +25,27 @@ const reducer = function (state, action) {
return state; return state;
} }
}; };
const openMenu = function (menu) { const openMenu = menu => ({
return { type: OPEN_MENU,
type: OPEN_MENU, menu: menu
menu: menu });
}; const closeMenu = menu => ({
}; type: CLOSE_MENU,
const closeMenu = function (menu) { menu: menu
return { });
type: CLOSE_MENU, const openFileMenu = () => openMenu(MENU_FILE);
menu: menu const closeFileMenu = () => closeMenu(MENU_FILE);
}; const fileMenuOpen = state => state.menus[MENU_FILE];
}; const openEditMenu = () => openMenu(MENU_EDIT);
const openFileMenu = function () { const closeEditMenu = () => closeMenu(MENU_EDIT);
return openMenu(MENU_FILE); const editMenuOpen = state => state.menus[MENU_EDIT];
};
const closeFileMenu = function () {
return closeMenu(MENU_FILE);
};
export { export {
reducer as default, reducer as default,
openFileMenu, openFileMenu,
closeFileMenu, closeFileMenu,
MENU_FILE openEditMenu,
closeEditMenu,
fileMenuOpen,
editMenuOpen
}; };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment