Context Menu in trame.ListBrowser Element #443
-
Hello, I would like to create a custom context menu in ListBrowser Element I tried this :
And I load a js file to be able to remove the default context menu
But I do not know how to define a custom one and how to connect actions to items in menu Thx |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 13 replies
-
https://v2.vuetifyjs.com/en/components/menus/#absolute-without-activator |
Beta Was this translation helpful? Give feedback.
-
Thx |
Beta Was this translation helpful? Give feedback.
-
Well, you can't use the vuetify2 API on vuetify3 component. But a working example is here import os
from trame.app import get_server
from trame.ui.vuetify3 import SinglePageLayout
from trame.widgets import trame, vuetify3
server = get_server()
server.client_type = os.environ.get("VUE_VERSION", "vue3")
FILE_LISTING = [
{
"text": "Hello.txt",
"value": "hello.txt",
"type": "File",
"prependIcon": "mdi-file-document-outline",
}
]
PATH_HIERARCHY = []
server.state["menu_items"] = ["one", "two", "three"]
def on_click(e):
print(e)
def load_data(item):
print(item)
with SinglePageLayout(server) as layout:
layout.title.set_text("List Browser")
with layout.content:
trame.ListBrowser(
style="position: relative",
classes="pa-8",
location=("[100, 100]",),
handle_position="bottom",
filter=True,
list=("listing", FILE_LISTING),
path=("path", PATH_HIERARCHY),
click=(on_click, "[$event]"),
contextmenu="""
$event.preventDefault();
menuX = $event.clientX;
menuY = $event.clientY;
menuShow = true;
""",
)
with vuetify3.VMenu(
v_model=("menuShow", False),
style=("{ position: 'absolute', left: `${menuX}px`, top: `${menuY}px`}",),
) as menu:
print(menu)
with vuetify3.VList():
with vuetify3.VListItem(
v_for="(item, i) in menu_items",
key="i",
value=["item"],
):
vuetify3.VBtn(
"{{ item }}",
click=(load_data, "[item]"),
)
if __name__ == "__main__":
server.start() |
Beta Was this translation helpful? Give feedback.
https://github.com/Kitware/trame/blob/master/examples/validation/discussion/443.py