Skip to content

Commit 149b422

Browse files
Feature multi-level menu documentation update (#3266)
Co-authored-by: Jordan <jorr_dann@hotmail.co.uk>
1 parent ed29f16 commit 149b422

File tree

1 file changed

+60
-44
lines changed

1 file changed

+60
-44
lines changed

src/content/docs/learn/window-menu.mdx

Lines changed: 60 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -149,54 +149,70 @@ To create a multi-level menu, you can add some submenus to the menu item:
149149
<TabItem label="JavaScript">
150150

151151
```javascript
152-
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
153-
154-
use tauri::{image::Image, menu::{CheckMenuItemBuilder, IconMenuItemBuilder, MenuBuilder, SubmenuBuilder}};
155-
156-
fn main() {
157-
tauri::Builder::default()
158-
.setup(|app| {
159-
let text_menu = SubmenuBuilder::new(app, "File")
160-
.text("open", "Open")
161-
.text("quit", "Quit")
162-
.build()?;
163-
164-
let lang_str = "en";
165-
let check_sub_item_1 = CheckMenuItemBuilder::new("English")
166-
.id("en")
167-
.checked(lang_str == "en")
168-
.build(app)?;
169-
170-
let check_sub_item_2 = CheckMenuItemBuilder::new("Chinese")
171-
.id("en")
172-
.checked(lang_str == "en")
173-
.enabled(false)
174-
.build(app)?;
175-
176-
let icon_image = Image::from_bytes(include_bytes!("../icons/icon.png")).unwrap();
177-
178-
let icon_item = IconMenuItemBuilder::new("icon")
179-
.icon(icon_image)
180-
.build(app)?;
181-
182-
let check_menus = SubmenuBuilder::new(app, "language")
183-
.item(&check_sub_item_1)
184-
.item(&check_sub_item_2)
185-
.build()?;
152+
import { Menu, MenuItem, Submenu } from '@tauri-apps/api/menu';
186153

154+
const fileSubmenu = await Submenu.new({
155+
text: 'File',
156+
items: [
157+
await MenuItem.new({
158+
id: 'new',
159+
text: 'New',
160+
action: () => {
161+
console.log('New clicked');
162+
},
163+
}),
164+
await MenuItem.new({
165+
id: 'open',
166+
text: 'Open',
167+
action: () => {
168+
console.log('Open clicked');
169+
},
170+
}),
171+
await MenuItem.new({
172+
id: 'save_as',
173+
text: 'Save As...',
174+
action: () => {
175+
console.log('Save As clicked');
176+
},
177+
}),
178+
],
179+
});
187180

188-
let menu = MenuBuilder::new(app)
189-
.items(&[&text_menu, &check_menus, &icon_item])
190-
.build()?;
181+
const editSubmenu = await Submenu.new({
182+
text: 'Edit',
183+
items: [
184+
await MenuItem.new({
185+
id: 'undo',
186+
text: 'Undo',
187+
action: () => {
188+
console.log('Undo clicked');
189+
},
190+
}),
191+
await MenuItem.new({
192+
id: 'redo',
193+
text: 'Redo',
194+
action: () => {
195+
console.log('Redo clicked');
196+
},
197+
}),
198+
],
199+
});
191200

192-
app.set_menu(menu)?;
201+
const menu = await Menu.new({
202+
items: [
203+
fileSubmenu,
204+
editSubmenu,
205+
await MenuItem.new({
206+
id: 'quit',
207+
text: 'Quit',
208+
action: () => {
209+
console.log('Quit pressed');
210+
},
211+
}),
212+
],
213+
});
193214

194-
print!("Hello from setup");
195-
Ok(())
196-
})
197-
.run(tauri::generate_context!())
198-
.expect("error while running tauri application");
199-
}
215+
menu.setAsAppMenu();
200216
```
201217

202218
</TabItem>

0 commit comments

Comments
 (0)