Skip to content

Commit d1d1e02

Browse files
committed
fix: applied a temp fix for errors related to using menuitems on mobile
1 parent c26b8c9 commit d1d1e02

File tree

1 file changed

+43
-31
lines changed

1 file changed

+43
-31
lines changed

client/modules/IDE/components/Header/MobileNav.jsx

Lines changed: 43 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { ParentMenuContext } from '../../../../components/Menubar/contexts';
99
import Menubar from '../../../../components/Menubar/Menubar';
1010
import { useMenuProps } from '../../../../components/Menubar/MenubarSubmenu';
1111
import NavMenuItem from '../../../../components/Menubar/MenubarItem';
12+
import ButtonOrLink from '../../../../common/ButtonOrLink';
1213
import { prop, remSize } from '../../../../theme';
1314
import AsteriskIcon from '../../../../images/p5-asterisk.svg';
1415
import IconButton from '../../../../common/IconButton';
@@ -200,6 +201,15 @@ const LanguageSelect = styled.div`
200201
}
201202
`;
202203

204+
// TO DO: replace with a more robust component for mobile menu items; this is a temp fix
205+
// because of context-related errors when using MenubarItem in mobile configurations
206+
// eslint-disable-next-line react/prop-types
207+
const MobileMenuItem = ({ children, ...props }) => (
208+
<li>
209+
<ButtonOrLink {...props}>{children}</ButtonOrLink>
210+
</li>
211+
);
212+
203213
const MobileNav = () => {
204214
const project = useSelector((state) => state.project);
205215
const user = useSelector((state) => state.user);
@@ -294,12 +304,12 @@ const StuffMenu = () => {
294304
<IconButton icon={AddIcon} {...handlers} />
295305
<ul className={isOpen ? 'opened' : ''}>
296306
<ParentMenuContext.Provider value="stuff">
297-
<NavMenuItem onClick={() => newSketch()}>
307+
<MobileMenuItem onClick={() => newSketch()}>
298308
{t('DashboardView.NewSketch')}
299-
</NavMenuItem>
300-
<NavMenuItem onClick={() => setCreateCollectionVisible(true)}>
309+
</MobileMenuItem>
310+
<MobileMenuItem onClick={() => setCreateCollectionVisible(true)}>
301311
{t('DashboardView.CreateCollection')}
302-
</NavMenuItem>
312+
</MobileMenuItem>
303313
</ParentMenuContext.Provider>
304314
</ul>
305315
{createCollectionVisible && (
@@ -326,13 +336,13 @@ const AccountMenu = () => {
326336
<ul className={isOpen ? 'opened' : ''}>
327337
<ParentMenuContext.Provider value="account">
328338
<li className="user">{user.username}</li>
329-
<NavMenuItem href={`/${user.username}/sketches`}>
339+
<MobileMenuItem href={`/${user.username}/sketches`}>
330340
My Stuff
331-
</NavMenuItem>
332-
<NavMenuItem href="/account">Settings</NavMenuItem>
333-
<NavMenuItem onClick={() => dispatch(logoutUser())}>
341+
</MobileMenuItem>
342+
<MobileMenuItem href="/account">Settings</MobileMenuItem>
343+
<MobileMenuItem onClick={() => dispatch(logoutUser())}>
334344
Log Out
335-
</NavMenuItem>
345+
</MobileMenuItem>
336346
</ParentMenuContext.Provider>
337347
</ul>
338348
</div>
@@ -397,48 +407,50 @@ const MoreMenu = () => {
397407
<ul className={isOpen ? 'opened' : ''}>
398408
<ParentMenuContext.Provider value="more">
399409
<b>{t('Nav.File.Title')}</b>
400-
<NavMenuItem onClick={newSketch}>{t('Nav.File.New')}</NavMenuItem>
410+
<MobileMenuItem onClick={newSketch}>
411+
{t('Nav.File.New')}
412+
</MobileMenuItem>
401413

402-
<NavMenuItem onClick={() => saveSketch(cmRef.current)}>
414+
<MobileMenuItem onClick={() => saveSketch(cmRef.current)}>
403415
{t('Common.Save')}
404-
</NavMenuItem>
405-
<NavMenuItem href="/p5/sketches">
416+
</MobileMenuItem>
417+
<MobileMenuItem href="/p5/sketches">
406418
{t('Nav.File.Examples')}
407-
</NavMenuItem>
419+
</MobileMenuItem>
408420
<b>{t('Nav.Edit.Title')}</b>
409-
<NavMenuItem onClick={cmRef.current?.tidyCode}>
421+
<MobileMenuItem onClick={cmRef.current?.tidyCode}>
410422
{t('Nav.Edit.TidyCode')}
411-
</NavMenuItem>
412-
<NavMenuItem onClick={cmRef.current?.showFind}>
423+
</MobileMenuItem>
424+
<MobileMenuItem onClick={cmRef.current?.showFind}>
413425
{t('Nav.Edit.Find')}
414-
</NavMenuItem>
426+
</MobileMenuItem>
415427
<b>{t('Nav.Sketch.Title')}</b>
416-
<NavMenuItem onClick={() => dispatch(newFile(rootFile.id))}>
428+
<MobileMenuItem onClick={() => dispatch(newFile(rootFile.id))}>
417429
{t('Nav.Sketch.AddFile')}
418-
</NavMenuItem>
419-
<NavMenuItem onClick={() => dispatch(newFolder(rootFile.id))}>
430+
</MobileMenuItem>
431+
<MobileMenuItem onClick={() => dispatch(newFolder(rootFile.id))}>
420432
{t('Nav.Sketch.AddFolder')}
421-
</NavMenuItem>
433+
</MobileMenuItem>
422434
{/* TODO: Add Translations */}
423435
<b>Settings</b>
424-
<NavMenuItem
436+
<MobileMenuItem
425437
onClick={() => {
426438
dispatch(openPreferences());
427439
}}
428440
>
429441
Preferences
430-
</NavMenuItem>
431-
<NavMenuItem onClick={() => setIsLanguageModalVisible(true)}>
442+
</MobileMenuItem>
443+
<MobileMenuItem onClick={() => setIsLanguageModalVisible(true)}>
432444
Language
433-
</NavMenuItem>
445+
</MobileMenuItem>
434446
<b>{t('Nav.Help.Title')}</b>
435-
<NavMenuItem onClick={() => dispatch(showKeyboardShortcutModal())}>
447+
<MobileMenuItem onClick={() => dispatch(showKeyboardShortcutModal())}>
436448
{t('Nav.Help.KeyboardShortcuts')}
437-
</NavMenuItem>
438-
<NavMenuItem href="https://p5js.org/reference/">
449+
</MobileMenuItem>
450+
<MobileMenuItem href="https://p5js.org/reference/">
439451
{t('Nav.Help.Reference')}
440-
</NavMenuItem>
441-
<NavMenuItem href="/about">{t('Nav.Help.About')}</NavMenuItem>
452+
</MobileMenuItem>
453+
<MobileMenuItem href="/about">{t('Nav.Help.About')}</MobileMenuItem>
442454
</ParentMenuContext.Provider>
443455
</ul>
444456
</div>

0 commit comments

Comments
 (0)