SusContextMenu

Popup-меню по правому клику (или программно), привязанное к activator.
Пакет
SusKit · Молекулы (коммерческий)
SusKit · Molecules
Свойства
| Имя | Тип | По умолчанию | |
|---|---|---|---|
Model | Prop<bool> | false | v-model |
Disabled | Prop<bool> | false | v-model |
Слоты
| Имя |
|---|
activator |
(по умолчанию) |
События
| Имя | Поле | Payload |
|---|---|---|
Select | OnSelect | string |
Open | OnOpen | — |
Close | OnClose | — |
Хуки стиля
Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:
sus-context-menusus-context-menu__activatorsus-context-menu__dividersus-context-menu__iconsus-context-menu__itemsus-context-menu__item--disabledsus-context-menu__labelsus-context-menu__listsus-context-menu__popupsus-context-menu--opensus-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>| Prop | Role |
|---|---|
Items | List<ContextMenuItem> — строки / разделители |
Model | Открыто (true) / закрыто |
Disabled | Блокирует открытие |
Заметки
- Поля элемента:
Label,Value,Icon,Disabled,Divider. Open()/Close()отражаются наModel.