Added AllShortcutsModal into View menu, fixed visual bug with border-radius
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { Menu } from '@headlessui/react'
|
import { Menu } from '@headlessui/react'
|
||||||
import { useEffect, useState } from 'react'
|
import { createContext, useContext, useEffect, useState } from 'react'
|
||||||
import { useHotkeys } from 'react-hotkeys-hook'
|
import { useHotkeys } from 'react-hotkeys-hook'
|
||||||
import { makeStyles } from '@material-ui/core/styles'
|
import { makeStyles } from '@material-ui/core/styles'
|
||||||
import Dialog from '@material-ui/core/Dialog'
|
import Dialog from '@material-ui/core/Dialog'
|
||||||
@@ -14,19 +14,37 @@ const useStyles = makeStyles({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
interface ShortcutsModalContextType {
|
||||||
|
open: boolean
|
||||||
|
toggleOpen: () => any
|
||||||
|
}
|
||||||
|
|
||||||
|
export const ShortcutsModalContext = createContext<ShortcutsModalContextType>({
|
||||||
|
open: false,
|
||||||
|
toggleOpen: () => {},
|
||||||
|
})
|
||||||
|
|
||||||
|
export function useShortcutsModalContext() {
|
||||||
|
return useContext(ShortcutsModalContext)
|
||||||
|
}
|
||||||
|
|
||||||
const AllShortcutsModal = () => {
|
const AllShortcutsModal = () => {
|
||||||
const classes = useStyles()
|
const classes = useStyles()
|
||||||
const [open, setOpen] = useState(false)
|
const { open, toggleOpen } = useShortcutsModalContext()
|
||||||
useHotkeys(SHORTCUT, () => setOpen(!open), [open])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Dialog
|
<Dialog
|
||||||
open={open}
|
open={open}
|
||||||
onClose={() => setOpen(false)}
|
onClose={() => toggleOpen()}
|
||||||
className={classes.root}
|
className={classes.root + ' bg-transparent'}
|
||||||
|
PaperProps={{
|
||||||
|
style: {
|
||||||
|
backgroundColor: 'transparent',
|
||||||
|
},
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<div className="bg-ch-gray-700 font-fira-sans max-w-7xl rounded shadow-lg text-ch-gray-300 p-4">
|
<div className="bg-ch-gray-700 font-fira-sans shadow-lg text-ch-gray-300 p-4">
|
||||||
<h2 className="text-2xl mb-4">All Shortcuts</h2>
|
<h2 className="text-2xl mb-4">All Shortcuts</h2>
|
||||||
{editorMenuConfig
|
{editorMenuConfig
|
||||||
.filter((menu) => menu.items.length)
|
.filter((menu) => menu.items.length)
|
||||||
@@ -35,7 +53,7 @@ const AllShortcutsModal = () => {
|
|||||||
<h3 className="text-xl border-b-2 pb-2 mb-2">{menu.label}</h3>
|
<h3 className="text-xl border-b-2 pb-2 mb-2">{menu.label}</h3>
|
||||||
{menu.items.map((item) => (
|
{menu.items.map((item) => (
|
||||||
<div
|
<div
|
||||||
className="flex gap-8 justify-between"
|
className="flex gap-16 justify-between"
|
||||||
key={'allshortcuts-' + menu.name + '-' + item.label}
|
key={'allshortcuts-' + menu.name + '-' + item.label}
|
||||||
>
|
>
|
||||||
<p>{item.label}</p>
|
<p>{item.label}</p>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { useRender } from 'src/components/IdeWrapper/useRender'
|
|||||||
import { makeStlDownloadHandler, PullTitleFromFirstLine } from './helpers'
|
import { makeStlDownloadHandler, PullTitleFromFirstLine } from './helpers'
|
||||||
import { useSaveCode } from 'src/components/IdeWrapper/useSaveCode'
|
import { useSaveCode } from 'src/components/IdeWrapper/useSaveCode'
|
||||||
import { DropdownItem } from './Dropdowns'
|
import { DropdownItem } from './Dropdowns'
|
||||||
|
import { useShortcutsModalContext } from './AllShortcutsModal'
|
||||||
|
|
||||||
export function cmdOrCtrl() {
|
export function cmdOrCtrl() {
|
||||||
return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? '⌘' : 'Ctrl'
|
return /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? '⌘' : 'Ctrl'
|
||||||
@@ -83,8 +84,8 @@ const viewMenuConfig = {
|
|||||||
shortcutLabel: 'Ctrl Shift /',
|
shortcutLabel: 'Ctrl Shift /',
|
||||||
component: (props) => {
|
component: (props) => {
|
||||||
const { config } = props
|
const { config } = props
|
||||||
const [open, setOpen] = useShortcutModalContext()
|
const { toggleOpen } = useShortcutsModalContext()
|
||||||
config.callback = () => setOpen(true)
|
config.callback = toggleOpen
|
||||||
return <DropdownItem {...props} />
|
return <DropdownItem {...props} />
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import Svg from 'src/components/Svg/Svg'
|
|||||||
import { useIdeInit } from 'src/components/EncodedUrl/helpers'
|
import { useIdeInit } from 'src/components/EncodedUrl/helpers'
|
||||||
import { useIdeContext } from 'src/helpers/hooks/useIdeContext'
|
import { useIdeContext } from 'src/helpers/hooks/useIdeContext'
|
||||||
import { useSaveCode } from 'src/components/IdeWrapper/useSaveCode'
|
import { useSaveCode } from 'src/components/IdeWrapper/useSaveCode'
|
||||||
|
import { ShortcutsModalContext } from 'src/components/EditorMenu/AllShortcutsModal'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
cadPackage: string
|
cadPackage: string
|
||||||
@@ -22,18 +23,25 @@ const IdeWrapper = ({ cadPackage }: Props) => {
|
|||||||
saveCode({ code: state.code })
|
saveCode({ code: state.code })
|
||||||
}
|
}
|
||||||
useIdeInit(cadPackage, project?.code || state?.code)
|
useIdeInit(cadPackage, project?.code || state?.code)
|
||||||
|
const [shortcutModalOpen, setShortcutModalOpen] = useState(false)
|
||||||
|
const shortcutModalContextValues = {
|
||||||
|
open: shortcutModalOpen,
|
||||||
|
toggleOpen: () => setShortcutModalOpen(!shortcutModalOpen),
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full flex">
|
<div className="h-full flex">
|
||||||
<div className="w-16 bg-ch-gray-700 flex-shrink-0">
|
<ShortcutsModalContext.Provider value={shortcutModalContextValues}>
|
||||||
<IdeSideBar />
|
<div className="w-16 bg-ch-gray-700 flex-shrink-0">
|
||||||
</div>
|
<IdeSideBar />
|
||||||
<div className="h-full flex flex-grow flex-col">
|
</div>
|
||||||
<nav className="flex">
|
<div className="h-full flex flex-grow flex-col">
|
||||||
<IdeHeader handleRender={onRender} />
|
<nav className="flex">
|
||||||
</nav>
|
<IdeHeader handleRender={onRender} />
|
||||||
<IdeContainer />
|
</nav>
|
||||||
</div>
|
<IdeContainer />
|
||||||
|
</div>
|
||||||
|
</ShortcutsModalContext.Provider>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user