diff --git a/apps/remix-ide-e2e/src/tests/plugin_api.ts b/apps/remix-ide-e2e/src/tests/plugin_api.ts index 333a81fe1e..79cc466c76 100644 --- a/apps/remix-ide-e2e/src/tests/plugin_api.ts +++ b/apps/remix-ide-e2e/src/tests/plugin_api.ts @@ -217,7 +217,7 @@ module.exports = { .rightClickCustom('[data-id="treeViewLitreeViewItemcontracts/1_Storage.sol"]').useXpath().waitForElementVisible('//*[@id="menuitemtestcommand"]').click('//*[@id="menuitemtestcommand"]', async () => { // @ts-ignore browser.click('//*[@data-id="verticalIconsKindlocalPlugin"]').frame(0, async () => { - await clickAndCheckLog(browser, null, { id: 'localPlugin', name: 'testCommand', label: 'testCommand', type: [], extension: ['.sol'], path: ['contracts/1_Storage.sol'], pattern: [] }, null, null) + await clickAndCheckLog(browser, null, { id: 'localPlugin', name: 'testCommand', label: 'testCommand', type: [], extension: ['.sol'], path: ['contracts/1_Storage.sol'], pattern: [], group: 99 }, null, null) }) }) }) diff --git a/apps/remix-ide-e2e/src/tests/remixd.test.ts b/apps/remix-ide-e2e/src/tests/remixd.test.ts index 1d9493016d..a1a617f645 100644 --- a/apps/remix-ide-e2e/src/tests/remixd.test.ts +++ b/apps/remix-ide-e2e/src/tests/remixd.test.ts @@ -104,7 +104,7 @@ module.exports = { }) .addFile('test_import_node_modules_with_github_import.sol', sources[4]['test_import_node_modules_with_github_import.sol']) .clickLaunchIcon('solidity') - .setSolidityCompilerVersion('soljson-v0.8.0+commit.c7dfd78e.js') // open-zeppelin moved to pragma ^0.8.0 + .setSolidityCompilerVersion('soljson-v0.8.19+commit.7dd6d404.js') // open-zeppelin moved to pragma ^0.8.0 .testContracts('test_import_node_modules_with_github_import.sol', sources[4]['test_import_node_modules_with_github_import.sol'], ['ERC20', 'test11']) }, 'Static Analysis run with remixd #group3': '' + function (browser) { diff --git a/apps/remix-ide-e2e/src/tests/solidityImport.test.ts b/apps/remix-ide-e2e/src/tests/solidityImport.test.ts index 115119e996..79bddb5ed5 100644 --- a/apps/remix-ide-e2e/src/tests/solidityImport.test.ts +++ b/apps/remix-ide-e2e/src/tests/solidityImport.test.ts @@ -38,7 +38,7 @@ module.exports = { 'Test GitHub Import - from master branch #group1': function (browser: NightwatchBrowser) { browser - .setSolidityCompilerVersion('soljson-v0.8.0+commit.c7dfd78e.js') // open-zeppelin moved to pragma ^0.8.0 (master branch) + .setSolidityCompilerVersion('soljson-v0.8.19+commit.7dd6d404.js') // open-zeppelin moved to pragma ^0.8.19 (master branch) .addFile('Untitled4.sol', sources[3]['Untitled4.sol']) .clickLaunchIcon('filePanel') .verifyContracts(['test7', 'ERC20'], { wait: 10000 }) @@ -54,7 +54,7 @@ module.exports = { 'Test GitHub Import - no branch specified #group2': function (browser: NightwatchBrowser) { browser - .setSolidityCompilerVersion('soljson-v0.8.0+commit.c7dfd78e.js') // open-zeppelin moved to pragma ^0.8.0 (master branch) + .setSolidityCompilerVersion('soljson-v0.8.19+commit.7dd6d404.js') // open-zeppelin moved to pragma ^0.8.19 (master branch) .clickLaunchIcon('filePanel') .click('li[data-id="treeViewLitreeViewItemREADME.txt"') .addFile('Untitled6.sol', sources[5]['Untitled6.sol']) @@ -64,6 +64,7 @@ module.exports = { 'Test GitHub Import - raw URL #group4': function (browser: NightwatchBrowser) { browser + .setSolidityCompilerVersion('soljson-v0.8.19+commit.7dd6d404.js') // open-zeppelin moved to pragma ^0.8.0 (master branch) .clickLaunchIcon('filePanel') .click('li[data-id="treeViewLitreeViewItemREADME.txt"') .addFile('Untitled7.sol', sources[6]['Untitled7.sol']) diff --git a/apps/remix-ide/src/app/panels/file-panel.js b/apps/remix-ide/src/app/panels/file-panel.js index ccd9e4cec7..b391daf5bd 100644 --- a/apps/remix-ide/src/app/panels/file-panel.js +++ b/apps/remix-ide/src/app/panels/file-panel.js @@ -66,6 +66,15 @@ module.exports = class Filepanel extends ViewPlugin { /** * @param item { id: string, name: string, type?: string[], path?: string[], extension?: string[], pattern?: string[] } + * typically: + * group 0 for file manipulations + * group 1 for download operations + * group 2 for running operations (script for instance) + * group 3 for publishing operations (gist) + * group 4 for copying operations + * group 5 for solidity file operations (flatten for instance) + * group 6 for compiling operations + * group 7 for generating resource files (UML, documentation, ...) * @param callback (...args) => void */ registerContextMenuItem (item) { diff --git a/apps/remix-ide/src/app/tabs/compile-tab.js b/apps/remix-ide/src/app/tabs/compile-tab.js index d7fdc499e9..8531f2ead2 100644 --- a/apps/remix-ide/src/app/tabs/compile-tab.js +++ b/apps/remix-ide/src/app/tabs/compile-tab.js @@ -123,7 +123,8 @@ class CompileTab extends CompilerApiMixin(ViewPlugin) { // implements ICompilerA type: [], extension: ['.sol'], path: [], - pattern: [] + pattern: [], + group: 6 }) }) try { diff --git a/apps/remix-ide/src/remixAppManager.js b/apps/remix-ide/src/remixAppManager.js index 66f2b92bc3..73e4c755c0 100644 --- a/apps/remix-ide/src/remixAppManager.js +++ b/apps/remix-ide/src/remixAppManager.js @@ -192,7 +192,8 @@ export class RemixAppManager extends PluginManager { extension: ['.sol'], path: [], pattern: [], - sticky: true + sticky: true, + group: 5 }) await this.call('filePanel', 'registerContextMenuItem', { id: 'nahmii-compiler', @@ -202,7 +203,8 @@ export class RemixAppManager extends PluginManager { extension: ['.sol'], path: [], pattern: [], - sticky: true + sticky: true, + group: 6 }) await this.call('filePanel', 'registerContextMenuItem', { id: 'solidityumlgen', @@ -212,7 +214,8 @@ export class RemixAppManager extends PluginManager { extension: ['.sol'], path: [], pattern: [], - sticky: true + sticky: true, + group: 7 }) await this.call('filePanel', 'registerContextMenuItem', { id: 'doc-gen', @@ -222,7 +225,8 @@ export class RemixAppManager extends PluginManager { extension: ['.sol'], path: [], pattern: [], - sticky: true + sticky: true, + group: 7 }) } } diff --git a/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx b/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx index 825d66667d..b5e748a81d 100644 --- a/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx +++ b/libs/remix-ui/workspace/src/lib/components/file-explorer-context-menu.tsx @@ -72,12 +72,23 @@ export const FileExplorerContextMenu = (props: FileExplorerContextMenuProps) => } const menu = () => { - return actions.filter(item => filterItem(item)).map((item, index) => { + let group = 0 + const groupedActions = actions.filter(item => filterItem(item)).reduce((acc, item) => { + if (item.group === undefined || item.group === null) item.group = 99 + if (!acc[item.group]) acc[item.group] = [] + acc[item.group].push(item) + return acc; + }, []) + let key = -1 + return groupedActions.map((groupItem, groupIndex) => groupItem.map((item, index) => { + key++ + const className = `remixui_liitem ${group !== item.group ? 'border-top': ''}` + group = item.group if(item.name === "Upload File"){ return