remove items that are not sticky

targets
filip mertens 4 years ago
parent 41174d15da
commit 619a8f179e
  1. 4
      apps/remix-ide/src/app/panels/file-panel.js
  2. 93
      libs/remix-ui/file-explorer/src/lib/file-explorer.tsx

@ -73,6 +73,7 @@ module.exports = class Filepanel extends ViewPlugin {
} }
renderComponent () { renderComponent () {
console.log("render", this.registeredMenuItems)
ReactDOM.render( ReactDOM.render(
<Workspace <Workspace
createWorkspace={this.createWorkspace.bind(this)} createWorkspace={this.createWorkspace.bind(this)}
@ -112,8 +113,9 @@ module.exports = class Filepanel extends ViewPlugin {
removePluginActions (plugin) { removePluginActions (plugin) {
this.registeredMenuItems = this.registeredMenuItems.filter((item) => { this.registeredMenuItems = this.registeredMenuItems.filter((item) => {
return item.id !== plugin.name return item.id !== plugin.name || item.sticky === true
}) })
this.renderComponent()
} }
async getCurrentWorkspace () { async getCurrentWorkspace () {

@ -17,6 +17,50 @@ import './css/file-explorer.css'
const queryParams = new QueryParams() const queryParams = new QueryParams()
const initialActions = [{
id: 'newFile',
name: 'New File',
type: ['folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'newFolder',
name: 'New Folder',
type: ['folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'rename',
name: 'Rename',
type: ['file', 'folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'delete',
name: 'Delete',
type: ['file', 'folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'pushChangesToGist',
name: 'Push changes to gist',
type: [],
path: [],
extension: [],
pattern: ['^browser/gists/([0-9]|[a-z])*$']
}, {
id: 'run',
name: 'Run',
type: [],
path: [],
extension: ['.js'],
pattern: []
}]
export const FileExplorer = (props: FileExplorerProps) => { export const FileExplorer = (props: FileExplorerProps) => {
const { name, registry, plugin, focusRoot, contextMenuItems, displayInput, externalUploads } = props const { name, registry, plugin, focusRoot, contextMenuItems, displayInput, externalUploads } = props
const [state, setState] = useState({ const [state, setState] = useState({
@ -29,49 +73,7 @@ export const FileExplorer = (props: FileExplorerProps) => {
fileManager: null, fileManager: null,
ctrlKey: false, ctrlKey: false,
newFileName: '', newFileName: '',
actions: [{ actions: initialActions,
id: 'newFile',
name: 'New File',
type: ['folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'newFolder',
name: 'New Folder',
type: ['folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'rename',
name: 'Rename',
type: ['file', 'folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'delete',
name: 'Delete',
type: ['file', 'folder'],
path: [],
extension: [],
pattern: []
}, {
id: 'pushChangesToGist',
name: 'Push changes to gist',
type: [],
path: [],
extension: [],
pattern: ['^browser/gists/([0-9]|[a-z])*$']
}, {
id: 'run',
name: 'Run',
type: [],
path: [],
extension: ['.js'],
pattern: []
}],
focusContext: { focusContext: {
element: null, element: null,
x: null, x: null,
@ -173,10 +175,7 @@ export const FileExplorer = (props: FileExplorerProps) => {
useEffect(() => { useEffect(() => {
if (contextMenuItems) { if (contextMenuItems) {
setState(prevState => { setState(prevState => {
// filter duplicate items return { ...prevState, actions: [...initialActions, ...contextMenuItems] }
const items = contextMenuItems.filter(({ name }) => prevState.actions.findIndex(action => action.name === name) === -1)
return { ...prevState, actions: [...prevState.actions, ...items] }
}) })
} }
}, [contextMenuItems]) }, [contextMenuItems])

Loading…
Cancel
Save