diff --git a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/file-jupyterlab-linux.png b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/file-jupyterlab-linux.png index 0e92a45be489..4ea17e5dc868 100644 Binary files a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/file-jupyterlab-linux.png and b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/file-jupyterlab-linux.png differ diff --git a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/folder-jupyterlab-linux.png b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/folder-jupyterlab-linux.png index 0db9ddd10f4f..de85c6cfd98b 100644 Binary files a/galata/test/jupyterlab/contextmenu.test.ts-snapshots/folder-jupyterlab-linux.png and b/galata/test/jupyterlab/contextmenu.test.ts-snapshots/folder-jupyterlab-linux.png differ diff --git a/packages/application/src/frontend.ts b/packages/application/src/frontend.ts index 760ad45dbe9c..24cba6eeb8b4 100644 --- a/packages/application/src/frontend.ts +++ b/packages/application/src/frontend.ts @@ -50,7 +50,9 @@ export abstract class JupyterFrontEnd< // render context menu/submenus with inline svg icon tweaks this.contextMenu = new ContextMenuSvg({ commands: this.commands, - renderer: options.contextMenuRenderer + renderer: options.contextMenuRenderer, + groupByTarget: false, + sortBySelector: false }); // The default restored promise if one does not exist in the options. @@ -289,7 +291,7 @@ export namespace JupyterFrontEnd { * @param path - Full URL of JupyterLab * @param paths - The current IPaths object hydrated from PageConfig. */ - export function inDocMode(path: string, paths: IPaths) { + export function inDocMode(path: string, paths: IPaths): boolean { const docPattern = new RegExp(`^${paths.urls.doc}`); const match = path.match(docPattern); if (match) { diff --git a/packages/console-extension/schema/foreign.json b/packages/console-extension/schema/foreign.json index d032041acde5..6357e0855252 100644 --- a/packages/console-extension/schema/foreign.json +++ b/packages/console-extension/schema/foreign.json @@ -5,7 +5,8 @@ "context": [ { "command": "console:toggle-show-all-kernel-activity", - "selector": ".jp-CodeConsole" + "selector": ".jp-CodeConsole", + "rank": 20 } ] }, diff --git a/packages/console-extension/schema/tracker.json b/packages/console-extension/schema/tracker.json index 8f77a2cd8e3e..762d7c320f85 100644 --- a/packages/console-extension/schema/tracker.json +++ b/packages/console-extension/schema/tracker.json @@ -61,11 +61,13 @@ "context": [ { "command": "console:clear", - "selector": ".jp-CodeConsole-content" + "selector": ".jp-CodeConsole-content", + "rank": 10 }, { "command": "console:restart-kernel", - "selector": ".jp-CodeConsole" + "selector": ".jp-CodeConsole", + "rank": 30 } ] }, diff --git a/packages/docmanager-extension/schema/plugin.json b/packages/docmanager-extension/schema/plugin.json index 2a4271195138..fdc47d080b8a 100644 --- a/packages/docmanager-extension/schema/plugin.json +++ b/packages/docmanager-extension/schema/plugin.json @@ -73,22 +73,22 @@ { "command": "docmanager:rename", "selector": "[data-type=\"document-title\"]", - "rank": 1 + "rank": 20 }, { "command": "docmanager:delete", "selector": "[data-type=\"document-title\"]", - "rank": 2 + "rank": 21 }, { "command": "docmanager:clone", "selector": "[data-type=\"document-title\"]", - "rank": 3 + "rank": 22 }, { "command": "docmanager:show-in-file-browser", "selector": "[data-type=\"document-title\"]", - "rank": 4 + "rank": 23 } ] }, diff --git a/packages/filebrowser-extension/schema/browser.json b/packages/filebrowser-extension/schema/browser.json index 69471069c0e5..7cd7f63399c3 100644 --- a/packages/filebrowser-extension/schema/browser.json +++ b/packages/filebrowser-extension/schema/browser.json @@ -57,31 +57,11 @@ "selector": ".jp-DirListing-content", "rank": 0 }, - { - "command": "filebrowser:create-new-directory", - "selector": ".jp-DirListing-content", - "rank": 1 - }, { "command": "filebrowser:open", "selector": ".jp-DirListing-item[data-isdir]", "rank": 1 }, - { - "command": "filebrowser:create-new-file", - "selector": ".jp-DirListing-content", - "rank": 2 - }, - { - "command": "filebrowser:create-new-markdown-file", - "selector": ".jp-DirListing-content", - "rank": 3 - }, - { - "command": "filebrowser:paste", - "selector": ".jp-DirListing-content", - "rank": 4 - }, { "type": "separator", "selector": ".jp-DirListing-item[data-isdir]", @@ -107,6 +87,11 @@ "selector": ".jp-DirListing-item[data-isdir=\"false\"]", "rank": 8 }, + { + "command": "filebrowser:paste", + "selector": ".jp-DirListing-content", + "rank": 8.5 + }, { "command": "filebrowser:duplicate", "selector": ".jp-DirListing-item[data-isdir=\"false\"]", @@ -141,6 +126,21 @@ "command": "filebrowser:share-main", "selector": ".jp-DirListing-item[data-isdir]", "rank": 15 + }, + { + "type": "separator", + "selector": ".jp-DirListing-item[data-isdir]", + "rank": 50 + }, + { + "command": "filebrowser:create-new-file", + "selector": ".jp-DirListing-content", + "rank": 51 + }, + { + "command": "filebrowser:create-new-directory", + "selector": ".jp-DirListing-content", + "rank": 55 } ] }, diff --git a/packages/filebrowser-extension/schema/open-browser-tab.json b/packages/filebrowser-extension/schema/open-browser-tab.json index 3a26863b2d38..bc034291ed6f 100644 --- a/packages/filebrowser-extension/schema/open-browser-tab.json +++ b/packages/filebrowser-extension/schema/open-browser-tab.json @@ -6,7 +6,7 @@ { "command": "filebrowser:open-browser-tab", "selector": ".jp-DirListing-item[data-isdir=\"false\"]", - "rank": 3 + "rank": 1.6 } ] }, diff --git a/packages/filebrowser-extension/schema/open-with.json b/packages/filebrowser-extension/schema/open-with.json index 58ab03780581..8038dd40fa7c 100644 --- a/packages/filebrowser-extension/schema/open-with.json +++ b/packages/filebrowser-extension/schema/open-with.json @@ -6,7 +6,7 @@ { "type": "submenu", "selector": ".jp-DirListing-item[data-isdir=\"false\"]", - "rank": 2, + "rank": 1.3, "submenu": { "id": "jp-contextmenu-open-with", "label": "Open With", diff --git a/packages/fileeditor-extension/schema/plugin.json b/packages/fileeditor-extension/schema/plugin.json index 7b9935d74e03..b9e2605897d1 100644 --- a/packages/fileeditor-extension/schema/plugin.json +++ b/packages/fileeditor-extension/schema/plugin.json @@ -102,14 +102,6 @@ } ], "context": [ - { - "command": "fileeditor:create-console", - "selector": ".jp-FileEditor" - }, - { - "command": "fileeditor:markdown-preview", - "selector": ".jp-FileEditor" - }, { "command": "fileeditor:undo", "selector": ".jp-FileEditor", @@ -139,6 +131,16 @@ "command": "fileeditor:select-all", "selector": ".jp-FileEditor", "rank": 6 + }, + { + "command": "fileeditor:create-console", + "selector": ".jp-FileEditor", + "rank": 10 + }, + { + "command": "fileeditor:markdown-preview", + "selector": ".jp-FileEditor", + "rank": 11 } ] }, diff --git a/packages/inspector-extension/schema/consoles.json b/packages/inspector-extension/schema/consoles.json index 2394d7c25a71..006fbd5e2bc6 100644 --- a/packages/inspector-extension/schema/consoles.json +++ b/packages/inspector-extension/schema/consoles.json @@ -5,7 +5,8 @@ "context": [ { "command": "inspector:open", - "selector": ".jp-CodeConsole-promptCell" + "selector": ".jp-CodeConsole-promptCell", + "rank": 5 } ] }, diff --git a/packages/inspector-extension/schema/notebooks.json b/packages/inspector-extension/schema/notebooks.json index 950ccb006e00..75b3747b782e 100644 --- a/packages/inspector-extension/schema/notebooks.json +++ b/packages/inspector-extension/schema/notebooks.json @@ -6,7 +6,7 @@ { "command": "inspector:open", "selector": ".jp-Notebook", - "rank": 10 + "rank": 50 } ] }, diff --git a/packages/logconsole-extension/schema/plugin.json b/packages/logconsole-extension/schema/plugin.json index fb9bb68e2a6f..e5c27871af10 100644 --- a/packages/logconsole-extension/schema/plugin.json +++ b/packages/logconsole-extension/schema/plugin.json @@ -18,7 +18,9 @@ ] } ], - "context": [{ "command": "logconsole:open", "selector": ".jp-Notebook" }] + "context": [ + { "command": "logconsole:open", "selector": ".jp-Notebook", "rank": 60 } + ] }, "title": "Log Console", "description": "Log Console settings.", diff --git a/packages/mainmenu-extension/schema/plugin.json b/packages/mainmenu-extension/schema/plugin.json index 0dbfc118a13c..4b3354212f22 100644 --- a/packages/mainmenu-extension/schema/plugin.json +++ b/packages/mainmenu-extension/schema/plugin.json @@ -227,7 +227,7 @@ { "command": "filemenu:create-console", "selector": "[data-type=\"document-title\"].jp-mod-current", - "rank": 6 + "rank": 10 } ] }, diff --git a/packages/notebook-extension/schema/tracker.json b/packages/notebook-extension/schema/tracker.json index 3c5315f45e86..15b6c148db6c 100644 --- a/packages/notebook-extension/schema/tracker.json +++ b/packages/notebook-extension/schema/tracker.json @@ -308,52 +308,60 @@ { "command": "notebook:clear-all-cell-outputs", "selector": ".jp-Notebook", - "rank": 0 + "rank": 13 }, { "type": "separator", "selector": ".jp-Notebook", - "rank": 1 + "rank": 20 }, { "command": "notebook:enable-output-scrolling", "selector": ".jp-Notebook", - "rank": 2 + "rank": 21 }, { "command": "notebook:disable-output-scrolling", "selector": ".jp-Notebook", - "rank": 3 + "rank": 22 }, { "type": "separator", "selector": ".jp-Notebook", - "rank": 4 + "rank": 30 }, { "command": "notebook:undo-cell-action", "selector": ".jp-Notebook", - "rank": 5 + "rank": 31 }, { "command": "notebook:redo-cell-action", "selector": ".jp-Notebook", - "rank": 6 + "rank": 32 }, { "command": "notebook:restart-kernel", "selector": ".jp-Notebook", - "rank": 7 + "rank": 33 }, { "type": "separator", "selector": ".jp-Notebook", - "rank": 8 + "rank": 40 }, { "command": "notebook:create-console", "selector": ".jp-Notebook", - "rank": 9 + "rank": 41 + }, + { + "command": "notebook:create-new", + "selector": ".jp-DirListing-content", + "rank": 52, + "args": { + "isContextMenu": true + } } ] }, diff --git a/packages/notebook-extension/src/index.ts b/packages/notebook-extension/src/index.ts index 90393baaa12f..b5b2a2835e2f 100644 --- a/packages/notebook-extension/src/index.ts +++ b/packages/notebook-extension/src/index.ts @@ -1439,7 +1439,7 @@ function activateNotebookHandler( '' ); } - if (args['isPalette']) { + if (args['isPalette'] || args['isContextMenu']) { return trans.__('New Notebook'); } return trans.__('Notebook'); diff --git a/packages/toc-extension/schema/plugin.json b/packages/toc-extension/schema/plugin.json index 8be1baff3aa9..e249d1313126 100644 --- a/packages/toc-extension/schema/plugin.json +++ b/packages/toc-extension/schema/plugin.json @@ -3,6 +3,14 @@ "jupyter.lab.setting-icon-label": "Table of Contents", "title": "Table of Contents", "description": "Table of contents settings.", + "jupyter.lab.menus": { + "context": [ + { + "command": "toc:run-cells", + "selector": ".jp-tocItem" + } + ] + }, "properties": { "numberingH1": { "title": "Enable h1 numbering", diff --git a/packages/toc-extension/src/index.ts b/packages/toc-extension/src/index.ts index 3b2ab09c4918..334a5a2a2dcc 100644 --- a/packages/toc-extension/src/index.ts +++ b/packages/toc-extension/src/index.ts @@ -129,11 +129,6 @@ async function activateTOC( label: trans.__('Run Cell(s)') }); - app.contextMenu.addItem({ - selector: '.jp-tocItem', - command: CommandIDs.runCells - }); - if (restorer) { // Add the ToC widget to the application restorer: restorer.add(toc, '@jupyterlab/toc:plugin');