I have custom implementation within our internal system
onShow: function(args) { console.log(args); top.JsEvent('onShow','"_..wcsTab_"','"_..wcsId_"', args.source.data.id);return;}
On show call basically our internal method where I do own logic to determine which button have to be disabled /enabled.
Then calling internal method which triggering JS
Method disableContextMenuItem(ID As %String, disabled As %Boolean) {
SET dp = "T" _ ..wcsTab _ "_" _ ..wcsId
SET js = "var index = " _ dp _ ".contextMenu.items.findIndex((el) => el.id === '" _ ID _ "');" _
dp _ ".contextMenu.items[index].disabled = " _ $S(disabled:"true", 1:"false") _ ";" _
"var menuItems = document.getElementsByClassName('menu_default_main')[0];" _
"menuItems.children[index].children[0].className = '" _ $S(disabled:"menu_default_item_disabled", 1:"menu_default_item") _ "';"
&js<#(js)#>
QUIT $$$OK
}
I see correctly set enabled/disabled buttons but however, link is not working when should or working where should not. E.g where I click at the event where is 1st button enabled and then click to the 2nd event where the same button is disabled, even property is set to disabled, if you click it, function is called.
I tried to check from args.menu.items if disabled was set properly and it was. So problem must be somewhere else.