Skip to content

Commit e430652

Browse files
committed
♻️ make dropdown left/rightable
1 parent 8da6497 commit e430652

File tree

5 files changed

+27
-47
lines changed

5 files changed

+27
-47
lines changed

client/components/Dropdown.jsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ const DropdownWrapper = styled.ul`
1313
color: ${prop('primaryTextColor')};
1414
1515
position: absolute;
16-
top: ${remSize(64)};
17-
right: ${remSize(16)};
16+
right: ${props => (props.right ? 0 : 'initial')};
17+
left: ${props => (props.left ? 0 : 'initial')};
18+
1819
1920
text-align: left;
2021
width: ${remSize(180)};
@@ -56,8 +57,8 @@ const DropdownWrapper = styled.ul`
5657
// TODO: Add Icon to the left of the items in the menu
5758
// const MaybeIcon = (Element, label) => Element && <Element aria-label={label} />;
5859

59-
const Dropdown = ({ items }) => (
60-
<DropdownWrapper>
60+
const Dropdown = ({ items, right, left }) => (
61+
<DropdownWrapper right={right} left={left}>
6162
{/* className="nav__items-left" */}
6263
{items && items.map(({ title, icon, href }) => (
6364
<li key={`nav-${title && title.toLowerCase()}`}>
@@ -72,6 +73,8 @@ const Dropdown = ({ items }) => (
7273
);
7374

7475
Dropdown.propTypes = {
76+
right: PropTypes.bool,
77+
left: PropTypes.bool,
7578
items: PropTypes.arrayOf(PropTypes.shape({
7679
action: PropTypes.func,
7780
icon: PropTypes.func,
@@ -81,6 +84,8 @@ Dropdown.propTypes = {
8184

8285
Dropdown.defaultProps = {
8386
items: [],
87+
right: false,
88+
left: false,
8489
};
8590

8691
export default Dropdown;

client/components/OverlayManager.jsx

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,8 @@
1-
import React, { useRef, useEffect } from 'react';
1+
import React from 'react';
22
import PropTypes from 'prop-types';
33
import { createPortal } from 'react-dom';
44

5-
import Dropdown from './Dropdown';
6-
7-
import { PreferencesIcon } from '../common/icons';
8-
import { useModalBehavior } from '../utils/custom-hooks';
9-
10-
115
const OverlayManager = ({ overlay, hideOverlay }) => {
12-
const headerNavOptions = [
13-
{
14-
icon: PreferencesIcon,
15-
title: 'Preferences',
16-
href: '/mobile/preferences',
17-
},
18-
{ icon: PreferencesIcon, title: 'Examples', href: '/mobile/examples' },
19-
{
20-
icon: PreferencesIcon,
21-
title: 'Original Editor',
22-
href: '/mobile/preferences',
23-
},
24-
];
25-
26-
// const setRef = useModalBehavior(hideOverlay);
276
// const [visible, trigger, setRef] = useModalBehavior();
287

298
const jsx = (

client/components/mobile/Header.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ const HeaderDiv = styled.div`
3131

3232
const IconContainer = styled.div`
3333
margin-left: ${props => (props.leftButton ? remSize(32) : remSize(4))};
34+
list-style: none;
3435
display: flex;
36+
flex-direction: horizontal;
3537
`;
3638

3739

client/modules/App/App.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ class App extends React.Component {
3434
render() {
3535
return (
3636
<div className="app">
37-
{this.state.isMounted && !window.devToolsExtension && getConfig('NODE_ENV') === 'development' && <DevTools />}
37+
{/* FIXME: remove false */}
38+
{false && this.state.isMounted && !window.devToolsExtension && getConfig('NODE_ENV') === 'development' && <DevTools />}
3839
{this.props.children}
3940
</div>
4041
);

client/modules/IDE/pages/MobileIDEView.jsx

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,9 @@ const MobileIDEView = (props) => {
6767
} = props;
6868

6969
const [tmController, setTmController] = useState(null); // eslint-disable-line
70-
const [overlayName, setOverlay] = useState(null); // eslint-disable-line
7170

72-
// TODO: Move this to OverlayController (?)
73-
const hideOverlay = () => setOverlay(null);
74-
// const overlayRef = useRef({});
7571

76-
const [triggerNavDropdown, NavDropDown] = useAsModal(<Dropdown items={headerNavOptions} />);
72+
const [triggerNavDropdown, NavDropDown] = useAsModal(<Dropdown right items={headerNavOptions} />);
7773

7874
return (
7975
<Screen fullscreen>
@@ -84,12 +80,17 @@ const MobileIDEView = (props) => {
8480
<IconButton to="/mobile" icon={ExitIcon} aria-label="Return to original editor" />
8581
}
8682
>
87-
<IconButton
88-
onClick={triggerNavDropdown}
89-
icon={MoreIcon}
90-
aria-label="Options"
91-
/>
92-
<IconButton to="/mobile/preview" onClick={() => { startSketch(); }} icon={PlayIcon} aria-label="Run sketch" />
83+
<li style={{ position: 'relative' }}>
84+
<IconButton
85+
onClick={triggerNavDropdown}
86+
icon={MoreIcon}
87+
aria-label="Options"
88+
/>
89+
<NavDropDown />
90+
</li>
91+
<li>
92+
<IconButton to="/mobile/preview" onClick={() => { startSketch(); }} icon={PlayIcon} aria-label="Run sketch" />
93+
</li>
9394
</Header>
9495

9596
<IDEWrapper>
@@ -107,9 +108,7 @@ const MobileIDEView = (props) => {
107108
editorOptionsVisible={ide.editorOptionsVisible}
108109
showEditorOptions={showEditorOptions}
109110
closeEditorOptions={closeEditorOptions}
110-
showKeyboardShortcutModal={showKeyboardShortcutModal}
111-
setUnsavedChanges={setUnsavedChanges}
112-
isPlaying={ide.isPlaying}
111+
showKeyboard={ide.isPlaying}
113112
theme={preferences.theme}
114113
startRefreshSketch={startRefreshSketch}
115114
stopSketch={stopSketch}
@@ -133,12 +132,6 @@ const MobileIDEView = (props) => {
133132
{ide.consoleIsExpanded && <Expander expanded><Console /></Expander>}
134133
<ActionStrip />
135134
</Footer>
136-
<NavDropDown />
137-
{/* <OverlayManager
138-
// ref={overlayRef}
139-
overlay={overlayName}
140-
hideOverlay={hideOverlay}
141-
/> */}
142135
</Screen>
143136
);
144137
};

0 commit comments

Comments
 (0)