|
@using Syncfusion.Blazor.Navigations
@inject IJSRuntime JSRuntime;
<div>
<div id="one" class="menu" style="color: red" @onclick="@(()=> ShowMenu("one"))"> Red </div>
<div id="two" class="menu" style="color: green" @onclick="@(()=> ShowMenu("two"))"> Green </div>
<div id="three" class="menu" style="color: blue" @onclick="@(()=> ShowMenu("three"))"> Blue </div>
<div id="four" class="menu" style="color: deeppink" @onclick="@(()=> ShowMenu("four"))"> Deeppink </div>
</div>
<SfContextMenu @ref=@menu Items=@ContextMenuItems>
<ContextMenuEvents TValue="ContextItem" Opened="BeforeMenuOpened" />
</SfContextMenu>
@code {
protected SfContextMenu<ContextItem> menu;
protected List<ContextItem> ContextMenuItems = new List<ContextItem>
{
new ContextItem { Text = "Toggle Disabled", IconCss="e-icons bullet-tick" } ,
new ContextItem { Text = "Click To Add Item", IconCss="e-icons bullet-arrow" }
};
protected async Task ShowMenu(string id)
{
Position ButtonPos = await JSRuntime.InvokeAsync<Position>("getPosition", id);
menu.Open(ButtonPos.Left, ButtonPos.Top);
}
} |
|
<script>
function getPosition(id) {
var element = document.getElementById(id);
return { Left: element.offsetLeft, Top: element.offsetTop + 20 };
}
</script> |