Skip to content

Commit a4077bb

Browse files
authored
Added Edit Notebook Metadata Option (#6402)
Edit Notebook Metadata plugin added under Edit Menu for functionality similar to classic-notebook. Clicking on the option under the menu opens up the Notebook Tools widget in the right sidebar and expands the Additional Tools (which contains the Notebook Metadata editor) collapsible section (default: collapsed).
1 parent 9fa4a2c commit a4077bb

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

packages/notebook-extension/src/index.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,12 +478,65 @@ const trusted: JupyterFrontEndPlugin<void> = {
478478
},
479479
};
480480

481+
/**
482+
* Add a command to open right sidebar for Editing Notebook Metadata when clicking on "Edit Notebook Metadata" under Edit menu
483+
*/
484+
const editNotebookMetadata: JupyterFrontEndPlugin<void> = {
485+
id: '@jupyter-notebook/notebook-extension:edit-notebook-metadata',
486+
autoStart: true,
487+
requires: [IMainMenu],
488+
optional: [ITranslator, INotebookTools],
489+
activate: (
490+
app: JupyterFrontEnd,
491+
menu: IMainMenu,
492+
translator: ITranslator | null,
493+
notebookTools: INotebookTools | null
494+
) => {
495+
const { commands } = app;
496+
translator = translator ?? nullTranslator;
497+
const trans = translator.load('notebook');
498+
499+
const id = 'notebook:edit-metadata';
500+
commands.addCommand(id, {
501+
label: trans.__('Edit Notebook Metadata'),
502+
execute: async () => {
503+
const command = 'application:toggle-panel';
504+
const args = {
505+
side: 'right',
506+
title: `Show Notebook Tools`,
507+
id: 'notebook-tools',
508+
}
509+
510+
// Check if Show Notebook Tools (Right Sidebar) is open (expanded)
511+
if (!commands.isToggled(command, args)){
512+
await commands.execute(command, args).then(_ => {
513+
514+
// For expanding the 'Advanced Tools' section (default: collapsed)
515+
if (notebookTools){
516+
let tools = (notebookTools?.layout as any).widgets;
517+
tools.forEach((tool: any) => {
518+
if (tool.widget.title.label === 'Advanced Tools' && tool.collapsed){
519+
tool.toggle()
520+
}
521+
});
522+
}
523+
});
524+
}
525+
},
526+
});
527+
528+
// Add `Edit Notebook Metadata` option to Edit menu
529+
menu.editMenu.addItem({type: 'command', command: id, rank: 40})
530+
},
531+
};
532+
481533
/**
482534
* Export the plugins as default.
483535
*/
484536
const plugins: JupyterFrontEndPlugin<any>[] = [
485537
checkpoints,
486538
closeTab,
539+
editNotebookMetadata,
487540
kernelLogo,
488541
kernelStatus,
489542
notebookToolsWidget,

0 commit comments

Comments
 (0)