К содержимому

SusContextMenu

SusContextMenu

Popup-меню по правому клику (или программно), привязанное к activator.

Пакет

SusKit · Молекулы (коммерческий)

Открыть в песочнице

SusKit · Molecules

Свойства

ИмяТипПо умолчанию
ModelProp<bool>falsev-model
DisabledProp<bool>falsev-model

Слоты

Имя
activator
(по умолчанию)

События

ИмяПолеPayload
SelectOnSelectstring
OpenOnOpen
CloseOnClose

Хуки стиля

Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:

  • 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

Использование

Items задаются в коде (List<ContextMenuItem>). Подключите контент в слот activator; ПКМ открывает 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> — строки / разделители
ModelОткрыто (true) / закрыто
DisabledБлокирует открытие

Заметки

  • Поля элемента: Label, Value, Icon, Disabled, Divider.
  • Open() / Close() отражаются на Model.