@@ -529,6 +529,9 @@ def create(cls, *children, **props) -> BaseUIComponent:
529529class HighLevelMenu (MenuRoot ):
530530 """High level wrapper for the Menu component."""
531531
532+ # The trigger component to use for the menu
533+ trigger : Var [Component | None ]
534+
532535 # The list of items to display in the menu dropdown - can be strings or tuples of (label, on_click_handler)
533536 items : Var [list [str | tuple [str , EventHandler ]]]
534537
@@ -577,6 +580,7 @@ def create(cls, *children, **props) -> BaseUIComponent:
577580 }
578581 portal_props = {k : props .pop (k ) for k in cls ._portal_props & props .keys ()}
579582
583+ trigger = props .pop ("trigger" , None )
580584 items = props .pop ("items" , [])
581585 size = trigger_props .get ("size" , "md" )
582586 trigger_label = trigger_props .get ("placeholder" , "Open Menu" )
@@ -593,6 +597,7 @@ def create_menu_item(item: str | tuple[str, EventHandler]) -> BaseUIComponent:
593597 on_click = on_click_handler ,
594598 size = size ,
595599 ),
600+ key = label ,
596601 ** item_props ,
597602 )
598603 return MenuItem .create (
@@ -603,6 +608,7 @@ def create_menu_item(item: str | tuple[str, EventHandler]) -> BaseUIComponent:
603608 disabled = props .get ("disabled" , False ),
604609 size = size ,
605610 ),
611+ key = item ,
606612 ** item_props ,
607613 )
608614
@@ -613,13 +619,17 @@ def create_menu_item(item: str | tuple[str, EventHandler]) -> BaseUIComponent:
613619
614620 return MenuRoot .create (
615621 MenuTrigger .create (
616- render_ = button (
617- trigger_label ,
618- select_arrow (class_name = "size-4 text-secondary-9" ),
619- variant = "outline" ,
620- class_name = ClassNames .TRIGGER ,
621- disabled = props .get ("disabled" , False ),
622- size = size ,
622+ render_ = (
623+ trigger
624+ if trigger
625+ else button (
626+ trigger_label ,
627+ select_arrow (class_name = "size-4 text-secondary-9" ),
628+ variant = "outline" ,
629+ class_name = ClassNames .TRIGGER ,
630+ disabled = props .get ("disabled" , False ),
631+ size = size ,
632+ )
623633 ),
624634 ),
625635 MenuPortal .create (
0 commit comments