Skip to content

SusContextMenu

SusContextMenu

Right-click (or programmatic) popup menu anchored to an activator.

Package

SusKit · Molecules (commercial)

Open in Playground

SusKit · Molecules

Props

NameTypeDefault
ModelProp<bool>falsev-model
DisabledProp<bool>falsev-model

Slots

Name
activator
(default)

Events

NameFieldPayload
SelectOnSelectstring
OpenOnOpen
CloseOnClose

Style hooks

USS class contract — override appearance without touching C#. States toggle via these classes:

  • sus-context-menu
  • sus-context-menu__activator
  • sus-context-menu__divider
  • sus-context-menu__icon
  • sus-context-menu__item
  • sus-context-menu__item--disabled
  • sus-context-menu__label
  • sus-context-menu__list
  • sus-context-menu__popup
  • sus-context-menu--open
  • sus-slot

Usage

Items are set in code (List<ContextMenuItem>). Wire content into the activator slot; RMB opens the popup.

csharp
var menu = new SusContextMenu();
menu.Items.Value = new List<SusContextMenu.ContextMenuItem>
{
    new() { Label = "Inspect", Value = "inspect", Icon = "search" },
    new() { Label = "Trade", Value = "trade", Icon = "shop" },
    new() { Divider = true },
    new() { Label = "Report", Value = "report", Disabled = true },
};
menu.OnSelect += value => { /* … */ };
menu.Slot("activator")?.Add(new Label("Right-click me"));
menu.Open(); // or menu.Model.Value = true;
xml
<template>
  <sus:SusContextMenu :Model="Open.Value"
                      @select="OnSelect"
                      @open="OnOpen"
                      @close="OnClose">
    <template #activator>
      <ui:Label text="Right-click me" />
    </template>
  </sus:SusContextMenu>
</template>

<script>
public Prop<bool> Open = new(false);
void OnSelect(string value) { /* … */ }
void OnOpen() { }
void OnClose() { }
// Populate Items in code.
</script>
PropRole
ItemsList<ContextMenuItem> — rows / dividers
ModelOpen (true) / closed
DisabledBlock open

Notes

  • Item fields: Label, Value, Icon, Disabled, Divider.
  • Open() / Close() mirror Model.