add section file context menu

pull/5370/head
yann300 2 years ago
parent 011b4d54ce
commit fbdcd928f1
  1. 9
      libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx
  2. 6
      libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx
  3. 5
      libs/remix-ui/workspace/src/lib/types/index.ts
  4. 88
      libs/remix-ui/workspace/src/lib/utils/index.ts

@ -72,12 +72,15 @@ export const FileExplorerContextMenu = (props: FileExplorerContextMenuProps) =>
} }
const menu = () => { const menu = () => {
let group = 0
return actions.filter(item => filterItem(item)).map((item, index) => { return actions.filter(item => filterItem(item)).map((item, index) => {
const className = `remixui_liitem ${group !== item.group ? 'border-top': ''}`
group = item.group
if(item.name === "Upload File"){ if(item.name === "Upload File"){
return <li return <li
id={`menuitem${item.name.toLowerCase()}`} id={`menuitem${item.name.toLowerCase()}`}
key={index} key={index}
className='remixui_liitem' className={className}
onClick={()=>{ onClick={()=>{
_paq.push(['trackEvent', 'fileExplorer', 'contextMenu', 'uploadFile']) _paq.push(['trackEvent', 'fileExplorer', 'contextMenu', 'uploadFile'])
setShowFileExplorer(true) setShowFileExplorer(true)
@ -89,7 +92,7 @@ export const FileExplorerContextMenu = (props: FileExplorerContextMenuProps) =>
return <li return <li
id={`menuitem${item.name.toLowerCase()}`} id={`menuitem${item.name.toLowerCase()}`}
key={index} key={index}
className='remixui_liitem' className={className}
onClick={()=>{ onClick={()=>{
_paq.push(['trackEvent', 'fileExplorer', 'contextMenu', 'uploadFile']) _paq.push(['trackEvent', 'fileExplorer', 'contextMenu', 'uploadFile'])
setShowFileExplorer(true) setShowFileExplorer(true)
@ -99,7 +102,7 @@ export const FileExplorerContextMenu = (props: FileExplorerContextMenuProps) =>
return <li return <li
id={`menuitem${item.name.toLowerCase()}`} id={`menuitem${item.name.toLowerCase()}`}
key={index} key={index}
className='remixui_liitem' className={className}
onClick={(e) => { onClick={(e) => {
e.stopPropagation() e.stopPropagation()
switch (item.name) { switch (item.name) {

@ -76,7 +76,8 @@ export function Workspace () {
extension: [], extension: [],
pattern: [], pattern: [],
multiselect: false, multiselect: false,
label: '' label: '',
group: 4
}]) }])
} else { } else {
removeMenuItems([{ removeMenuItems([{
@ -87,7 +88,8 @@ export function Workspace () {
extension: [], extension: [],
pattern: [], pattern: [],
multiselect: false, multiselect: false,
label: '' label: '',
group: 4
}]) }])
} }
}, [canPaste]) }, [canPaste])

@ -5,7 +5,7 @@ import { fileDecoration } from '@remix-ui/file-decorators'
import { RemixAppManager } from 'libs/remix-ui/plugin-manager/src/types' import { RemixAppManager } from 'libs/remix-ui/plugin-manager/src/types'
import { ViewPlugin } from '@remixproject/engine-web' import { ViewPlugin } from '@remixproject/engine-web'
export type action = { name: string, type?: Array<'folder' | 'gist' | 'file' | 'workspace'>, path?: string[], extension?: string[], pattern?: string[], id: string, multiselect: boolean, label: string, sticky?: boolean } export type action = { name: string, type?: Array<'folder' | 'gist' | 'file' | 'workspace'>, path?: string[], extension?: string[], pattern?: string[], id: string, multiselect: boolean, label: string, sticky?: boolean, group: number }
export interface JSONStandardInput { export interface JSONStandardInput {
language: "Solidity"; language: "Solidity";
settings?: any, settings?: any,
@ -176,7 +176,8 @@ export interface WorkSpaceState {
extension?: string[] extension?: string[]
pattern?: string[] pattern?: string[]
multiselect: boolean multiselect: boolean
label: string label: string,
group: number
}[] }[]
focusContext: FileFocusContextType focusContext: FileFocusContextType
focusEdit: { focusEdit: {

@ -5,96 +5,112 @@ export const contextMenuActions: MenuItems = [{
name: 'New File', name: 'New File',
type: ['folder', 'gist', 'workspace'], type: ['folder', 'gist', 'workspace'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 0
}, { }, {
id: 'newFolder', id: 'newFolder',
name: 'New Folder', name: 'New Folder',
type: ['folder', 'gist', 'workspace'], type: ['folder', 'gist', 'workspace'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 0
}, { }, {
id: 'rename', id: 'rename',
name: 'Rename', name: 'Rename',
type: ['file', 'folder'], type: ['file', 'folder'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 0
}, { }, {
id: 'delete', id: 'delete',
name: 'Delete', name: 'Delete',
type: ['file', 'folder', 'gist'], type: ['file', 'folder', 'gist'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 0
},{
id: 'deleteAll',
name: 'Delete All',
type: ['folder', 'file'],
multiselect: true,
label: '',
group: 0
},{ },{
id: 'download', id: 'download',
name: 'Download', name: 'Download',
type: ['file', 'folder', 'workspace'], type: ['file', 'folder', 'workspace'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 1
}, { }, {
id: 'run', id: 'run',
name: 'Run', name: 'Run',
extension: ['.js', '.ts'], extension: ['.js', '.ts'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 2
},{ },{
id: 'pushChangesToGist', id: 'pushChangesToGist',
name: 'Push changes to gist', name: 'Push changes to gist',
type: ['gist'], type: ['gist'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 3
}, { }, {
id: 'publishFolderToGist', id: 'publishFolderToGist',
name: 'Publish folder to gist', name: 'Publish folder to gist',
type: ['folder'], type: ['folder'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 3
}, { }, {
id: 'publishFileToGist', id: 'publishFileToGist',
name: 'Publish file to gist', name: 'Publish file to gist',
type: ['file'], type: ['file'],
multiselect: false, multiselect: false,
label: '' label: '',
}, { group: 3
id: 'copy',
name: 'Copy',
type: ['folder', 'file'],
multiselect: false,
label: ''
}, {
id: 'copyFileName',
name: 'Copy name',
type: ['file'],
multiselect: false,
label: ''
}, {
id: 'copyFilePath',
name: 'Copy path',
type: ['file'],
multiselect: false,
label: ''
}, { }, {
id: 'deleteAll',
name: 'Delete All',
type: ['folder', 'file'],
multiselect: true,
label: ''
},{
id: 'uploadFile', id: 'uploadFile',
name: 'Load a Local File', name: 'Load a Local File',
type: ['folder', 'gist', 'workspace'], type: ['folder', 'gist', 'workspace'],
multiselect: false, multiselect: false,
label: 'Load a Local File' label: 'Load a Local File',
group: 3
}, { }, {
id: 'publishToGist', id: 'publishToGist',
name: 'Push changes to gist', name: 'Push changes to gist',
type: ['folder', 'gist'], type: ['folder', 'gist'],
multiselect: false, multiselect: false,
label: 'Publish all to Gist' label: 'Publish all to Gist',
group: 3
}, },
{ {
id: 'publishWorkspace', id: 'publishWorkspace',
name: 'Publish Workspace to Gist', name: 'Publish Workspace to Gist',
type: ['workspace'], type: ['workspace'],
multiselect: false, multiselect: false,
label: '' label: '',
group: 3
}, {
id: 'copy',
name: 'Copy',
type: ['folder', 'file'],
multiselect: false,
label: '',
group: 4
}, {
id: 'copyFileName',
name: 'Copy name',
type: ['file'],
multiselect: false,
label: '',
group: 4
}, {
id: 'copyFilePath',
name: 'Copy path',
type: ['file'],
multiselect: false,
label: '',
group: 4
}] }]
Loading…
Cancel
Save