From f368b401dc2a1028c8f44de74d3d22d24f9c2f52 Mon Sep 17 00:00:00 2001 From: Nigel Breslaw Date: Fri, 5 Sep 2025 15:50:59 +0300 Subject: [PATCH] material: PopupMenu: Changes (https://github.com/slint-ui/material-components/issues/158) Imported from https://github.com/slint-ui/material-components/commit/81415330ff86ba282977d6e92ce4d8657616fa3a --- .../src/content/collections/structs/MenuItem.md | 14 ++++++++++++++ .../docs/components/{menu.mdx => popup_menu.mdx} | 12 ++++++------ .../docs/reference/global-structs-enums.mdx | 4 ++++ .../examples/gallery/ui/views/main_view.slint | 6 +++--- .../gallery/ui/views/navigation_view.slint | 4 ++-- ui-libraries/material/material.slint | 2 +- .../material/ui/components/drop_down_menu.slint | 2 +- ui-libraries/material/ui/components/menu.slint | 12 ++++++------ 8 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 ui-libraries/material/docs/src/content/collections/structs/MenuItem.md rename ui-libraries/material/docs/src/content/docs/components/{menu.mdx => popup_menu.mdx} (81%) diff --git a/ui-libraries/material/docs/src/content/collections/structs/MenuItem.md b/ui-libraries/material/docs/src/content/collections/structs/MenuItem.md new file mode 100644 index 000000000..208b46bd3 --- /dev/null +++ b/ui-libraries/material/docs/src/content/collections/structs/MenuItem.md @@ -0,0 +1,14 @@ +--- + +title: MenuItem +description: MenuItem content +--- + +`MenuItem` + +This structure represents a MenuItem with an icon, text, trailing text, and enabled state. + +- **`icon`** (_image_): The icon to display in the item. +- **`text`** (_string_): The text to display in the item. +- **`trailing_text`** (_string_): The trailing text to display in the item. +- **`enabled`** (_bool_): Whether the item is enabled. diff --git a/ui-libraries/material/docs/src/content/docs/components/menu.mdx b/ui-libraries/material/docs/src/content/docs/components/popup_menu.mdx similarity index 81% rename from ui-libraries/material/docs/src/content/docs/components/menu.mdx rename to ui-libraries/material/docs/src/content/docs/components/popup_menu.mdx index 6c1f3b9b4..b00b73d2a 100644 --- a/ui-libraries/material/docs/src/content/docs/components/menu.mdx +++ b/ui-libraries/material/docs/src/content/docs/components/popup_menu.mdx @@ -1,7 +1,7 @@ --- -title: Menu -description: Menu API. +title: PopupMenu +description: PopupMenu API. --- import CodeSnippetMD from '/src/components/CodeSnippetMD.astro'; @@ -9,12 +9,12 @@ import SlintProperty from '/src/components/SlintProperty.astro'; ```slint -import { Menu } from "./material.slint"; +import { PopupMenu } from "./material.slint"; export component Example inherits Window { width: 400px; height: 300px; background: transparent; - Menu { + PopupMenu { width: 280px; height: parent.height; items: [ @@ -27,7 +27,7 @@ export component Example inherits Window { ``` -A `Menu` display a list of choices on a temporary surface. +A `PopupMenu` to display a list of choices on a temporary surface. ## Properties @@ -38,5 +38,5 @@ An array of menu items, each containing an icon, a text, and a trailing text. ## Callbacks -### item_clicked(index: int) +### activated(index: int) Invoked when a menu item is clicked diff --git a/ui-libraries/material/docs/src/content/docs/reference/global-structs-enums.mdx b/ui-libraries/material/docs/src/content/docs/reference/global-structs-enums.mdx index 27719bae4..e859694b7 100644 --- a/ui-libraries/material/docs/src/content/docs/reference/global-structs-enums.mdx +++ b/ui-libraries/material/docs/src/content/docs/reference/global-structs-enums.mdx @@ -7,6 +7,7 @@ import IconButtonItem from "../../collections/structs/IconButtonItem.md" import ListItem from "../../collections/structs/ListItem.md" import SegmentedItem from "../../collections/structs/SegmentedItem.md" import Time from "../../collections/structs/Time.md" +import MenuItem from "../../collections/structs/MenuItem.md" import NavigationItem from "../../collections/structs/NavigationItem.md" import NavigationGroup from "../../collections/structs/NavigationGroup.md" @@ -23,6 +24,9 @@ import ScrollBarPolicy from "../../collections/enums/ScrollBarPolicy.md" ### ListItem +### MenuItem + + ### NavigationItem diff --git a/ui-libraries/material/examples/gallery/ui/views/main_view.slint b/ui-libraries/material/examples/gallery/ui/views/main_view.slint index 45d658191..a033b36c7 100644 --- a/ui-libraries/material/examples/gallery/ui/views/main_view.slint +++ b/ui-libraries/material/examples/gallery/ui/views/main_view.slint @@ -15,7 +15,7 @@ import { NavigationItem, NavigationBar, SmallAppBar, - Menu, + PopupMenu, MenuItem, MaterialStyleMetrics } from "../../../../material.slint"; @@ -71,12 +71,12 @@ export component MainView { } } - color_menu := Menu { + color_menu := PopupMenu { x: root.width - MaterialStyleMetrics.size_200 - MaterialStyleMetrics.padding_16; y: app_bar.height / 2; items: MainViewAdapter.palettes; - item_clicked(index) => { + activated(index) => { MainViewAdapter.load_palette(index); color_menu.close(); } diff --git a/ui-libraries/material/examples/gallery/ui/views/navigation_view.slint b/ui-libraries/material/examples/gallery/ui/views/navigation_view.slint index 0b5d69df0..dd2e6cb8a 100644 --- a/ui-libraries/material/examples/gallery/ui/views/navigation_view.slint +++ b/ui-libraries/material/examples/gallery/ui/views/navigation_view.slint @@ -31,7 +31,7 @@ import { Slider, TextField, RadioButtonTile, - Menu, + PopupMenu, DropDownMenu, MenuItem, DatePickerPopup @@ -439,7 +439,7 @@ export component NavigationView { } - menu := Menu { + menu := PopupMenu { x: menu_button.x + menu_button.width / 2; y: menu_button.y + menu_button.height / 2; items: [ diff --git a/ui-libraries/material/material.slint b/ui-libraries/material/material.slint index 6dee0a3fd..e2417a586 100644 --- a/ui-libraries/material/material.slint +++ b/ui-libraries/material/material.slint @@ -30,7 +30,7 @@ export { Avatar, ListTile } from "./ui/components/list.slint"; export { ListView } from "./ui/components/list_view.slint"; export { MaterialText } from "./ui/components/material_text.slint"; export { MaterialWindow, MaterialWindowAdapter } from "./ui/components/material_window.slint"; -export { Menu } from "./ui/components/menu.slint"; +export { PopupMenu } from "./ui/components/menu.slint"; export { NavigationBar } from "./ui/components/navigation_bar.slint"; export { NavigationDrawer, ModalNavigationDrawer } from "./ui/components/navigation_drawer.slint"; export { NavigationRail } from "./ui/components/navigation_rail.slint"; diff --git a/ui-libraries/material/ui/components/drop_down_menu.slint b/ui-libraries/material/ui/components/drop_down_menu.slint index a7bad0fa3..7f961015d 100644 --- a/ui-libraries/material/ui/components/drop_down_menu.slint +++ b/ui-libraries/material/ui/components/drop_down_menu.slint @@ -93,7 +93,7 @@ export component DropDownMenu { current_index: root.current_index; items: root.items; - item_clicked(index) => { + activated(index) => { root.update_selection(index); } } diff --git a/ui-libraries/material/ui/components/menu.slint b/ui-libraries/material/ui/components/menu.slint index ec3d0e9df..5fa23be1e 100644 --- a/ui-libraries/material/ui/components/menu.slint +++ b/ui-libraries/material/ui/components/menu.slint @@ -82,7 +82,7 @@ export component MenuInner { in property <[MenuItem]> items; in_out property current_index: -1; - callback item_clicked(index: int); + callback activated(index: int); // used to fix clipping of shadows out property elevation: 2; @@ -107,17 +107,17 @@ export component MenuInner { selected: index == root.current_index; clicked => { - root.item_clicked(index); + root.activated(index); } } } } } -export component Menu inherits PopupWindow { +export component PopupMenu inherits PopupWindow { in property <[MenuItem]> items; - callback item_clicked(index: int); + callback activated(index: int); width: MaterialStyleMetrics.size_200; close_policy: close_on_click_outside; @@ -128,8 +128,8 @@ export component Menu inherits PopupWindow { inner := MenuInner { items: root.items; - item_clicked(index) => { - root.item_clicked(index); + activated(index) => { + root.activated(index); } } }