import { html } from '@design.estate/dees-element'; import * as plugins from './00plugins.js'; import { DeesContextmenu } from './dees-contextmenu.js'; export const demoFunc = () => html`
{ DeesContextmenu.openContextMenuWithOptions(eventArg, [ { name: 'File', iconName: 'fileText', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'New', iconName: 'filePlus', shortcut: 'Cmd+N', action: async () => console.log('New file') }, { name: 'Open', iconName: 'folderOpen', shortcut: 'Cmd+O', action: async () => console.log('Open file') }, { name: 'Save', iconName: 'save', shortcut: 'Cmd+S', action: async () => console.log('Save') }, { divider: true }, { name: 'Export as PDF', iconName: 'download', action: async () => console.log('Export PDF') }, { name: 'Export as HTML', iconName: 'code', action: async () => console.log('Export HTML') }, ] }, { name: 'Edit', iconName: 'edit3', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'Cut', iconName: 'scissors', shortcut: 'Cmd+X', action: async () => console.log('Cut') }, { name: 'Copy', iconName: 'copy', shortcut: 'Cmd+C', action: async () => console.log('Copy') }, { name: 'Paste', iconName: 'clipboard', shortcut: 'Cmd+V', action: async () => console.log('Paste') }, { divider: true }, { name: 'Find', iconName: 'search', shortcut: 'Cmd+F', action: async () => console.log('Find') }, { name: 'Replace', iconName: 'repeat', shortcut: 'Cmd+H', action: async () => console.log('Replace') }, ] }, { name: 'View', iconName: 'eye', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'Zoom In', iconName: 'zoomIn', shortcut: 'Cmd++', action: async () => console.log('Zoom in') }, { name: 'Zoom Out', iconName: 'zoomOut', shortcut: 'Cmd+-', action: async () => console.log('Zoom out') }, { name: 'Reset Zoom', iconName: 'maximize2', shortcut: 'Cmd+0', action: async () => console.log('Reset zoom') }, { divider: true }, { name: 'Full Screen', iconName: 'maximize', shortcut: 'F11', action: async () => console.log('Full screen') }, ] }, { divider: true }, { name: 'Settings', iconName: 'settings', action: async () => console.log('Settings') }, { name: 'Help', iconName: 'helpCircle', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'Documentation', iconName: 'book', action: async () => console.log('Documentation') }, { name: 'Keyboard Shortcuts', iconName: 'keyboard', action: async () => console.log('Shortcuts') }, { divider: true }, { name: 'About', iconName: 'info', action: async () => console.log('About') }, ] } ]); }}>

Right-click anywhere in this area

A context menu with nested submenus will appear

{ DeesContextmenu.openContextMenuWithOptions(eventArg, [ { name: 'Button Actions', iconName: 'mousePointer', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'Click', iconName: 'mouse', action: async () => console.log('Click action') }, { name: 'Double Click', iconName: 'zap', action: async () => console.log('Double click') }, { name: 'Long Press', iconName: 'clock', action: async () => console.log('Long press') }, ] }, { name: 'Button State', iconName: 'toggleLeft', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'Enable', iconName: 'checkCircle', action: async () => console.log('Enable') }, { name: 'Disable', iconName: 'xCircle', action: async () => console.log('Disable') }, { divider: true }, { name: 'Show', iconName: 'eye', action: async () => console.log('Show') }, { name: 'Hide', iconName: 'eyeOff', action: async () => console.log('Hide') }, ] }, { divider: true }, { name: 'Disabled Action', iconName: 'ban', disabled: true, action: async () => console.log('This should not run'), }, { name: 'Properties', iconName: 'settings', action: async () => console.log('Button properties'), }, ]); }}>Right-click on this button
{ DeesContextmenu.openContextMenuWithOptions(eventArg, [ { name: 'Format', iconName: 'type', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'Bold', iconName: 'bold', shortcut: 'Cmd+B', action: async () => console.log('Bold') }, { name: 'Italic', iconName: 'italic', shortcut: 'Cmd+I', action: async () => console.log('Italic') }, { name: 'Underline', iconName: 'underline', shortcut: 'Cmd+U', action: async () => console.log('Underline') }, { divider: true }, { name: 'Font Size', iconName: 'type', action: async () => console.log('Font size menu') }, { name: 'Font Color', iconName: 'palette', action: async () => console.log('Font color menu') }, ] }, { name: 'Transform', iconName: 'shuffle', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'To Uppercase', iconName: 'arrowUp', action: async () => console.log('Uppercase') }, { name: 'To Lowercase', iconName: 'arrowDown', action: async () => console.log('Lowercase') }, { name: 'Capitalize', iconName: 'type', action: async () => console.log('Capitalize') }, ] }, { divider: true }, { name: 'Delete', iconName: 'trash2', action: async () => console.log('Delete') } ]); }}>

Advanced Nested Menu Example

This shows deeply nested submenus and various formatting options

{}, // Parent items with submenus still need an action submenu: [ { name: 'New Project', iconName: 'folderPlus', shortcut: 'Cmd+Shift+N', action: async () => console.log('New project') }, { name: 'Open Project', iconName: 'folderOpen', shortcut: 'Cmd+Shift+O', action: async () => console.log('Open project') }, { divider: true }, { name: 'Recent Projects', iconName: 'clock', action: async () => {}, submenu: [ { name: 'Project Alpha', action: async () => console.log('Open Alpha') }, { name: 'Project Beta', action: async () => console.log('Open Beta') }, { name: 'Project Gamma', action: async () => console.log('Open Gamma') }, ]}, ] }, { name: 'Tools', iconName: 'tool', action: async () => {}, // Parent items with submenus still need an action submenu: [ { name: 'Terminal', iconName: 'terminal', shortcut: 'Cmd+T', action: async () => console.log('Terminal') }, { name: 'Console', iconName: 'monitor', shortcut: 'Cmd+K', action: async () => console.log('Console') }, { divider: true }, { name: 'Extensions', iconName: 'package', action: async () => console.log('Extensions') }, ] }, { divider: true }, { name: 'Preferences', iconName: 'sliders', action: async () => console.log('Preferences'), }, ]} >
`;