/ittf/site/docs/t/_js/wz/contextMenu.js.ittf (primary)
1 $group2 if !window.wz3 set window.wz = {}4 class wz_ContextMenu5 ctor6 param options7 set options = options || {}8 set this.menusContainerId = options.menusContainerId || 'wz-menus-container'9 set this.onClose10 =>11 m create12 param meta13 # log 'wz.ContextMenu.create'14 set this.meta = meta15 var menusContainer = wz.element('#' + this.menusContainerId)16 if !menusContainer17 set menusContainer = document.createElement('div')18 _ menusContainer.setAttribute('id', this.menusContainerId)19 _ document.body.appendChild(menusContainer)20 set this.menuDiv21 _ document.createElement("div")22 _ this.menuDiv.setAttribute('id', meta.menu.id)23 _ this.menuDiv.setAttribute('class', 'wz-context-menu')24 var itemsDiv25 _ this._createMenuItemsDiv26 @ meta.menu27 _ menusContainer.appendChild28 @ this.menuDiv29 _ this.menuDiv.appendChild30 @ itemsDiv31 set this.menuDiv.onclick32 =>33 param event34 var command = event.target.dataset['command']35 # log 'clickListener.target', event.target, command36 if meta.onClick37 _ meta.onClick38 {39 @ command command40 @ payload this.payload41 @ event event42 _ wz.click43 @ document44 =>45 # log 'document.onclick', meta.menu.id46 _ this.handleClose47 _ wz.global.on48 @ 'wz.contextMenu.clear'49 function50 param target51 # log 'wz.contextMenu.clear.target', target, meta.menu.id52 if target !== meta.menu.id53 _ this.handleClose54 @ this55 m replace56 param menuMeta57 # log 'wz.ContextMenu.replace'58 # _createMenuItemsDiv removes the previous div59 var itemsDiv60 _ this._createMenuItemsDiv61 @ menuMeta62 _ this.menuDiv.appendChild63 @ itemsDiv64 m _createMenuItemsDiv65 param menuMeta66 var hb = new wzHtmlBuilder()67 var hUl68 _ hb.add69 @ 'ul'70 {71 foreach item in menuMeta.items72 var hLi73 _ hUl.add74 @ 'li'75 {76 _ hLi.add77 @ 'a'78 {79 @ href '#'80 @ ['data-command'] item.command || item.label81 @ _text item.label82 if this.menuItemsDiv83 _ this.menuItemsDiv.parentNode.removeChild(this.menuItemsDiv)84 set this.menuItemsDiv85 _ document.createElement("div")86 _ wz.html87 @ this.menuItemsDiv88 _ hb.toHtml('\n')89 return this.menuItemsDiv90 m handleRightClick91 param evt92 param payload93 _ wz.global.emit94 @ 'wz.contextMenu.clear'95 @ this.meta.menu.id96 set this.payload = payload97 set evt = (evt) ? evt : ((event) ? event : null)98 var posnX = (evt.pageX) ? evt.pageX : ((evt.offsetX) ? evt.offsetX + 10 : null)99 var posnY = (evt.pageY) ? evt.pageY : ((evt.offsetY) ? evt.offsetY + 10 : null)100 var menu101 _ wz.element102 @ '#' + this.meta.menu.id103 set menu.style.left = posnX + 'px'104 set menu.style.top = posnY + 'px'105 set menu.style.display = 'block'106 if typeof evt.preventDefault != "undefined"107 _ evt.preventDefault()108 else109 set evt.returnValue = false110 m handleClose111 _ wz.hide112 @ '#' + this.meta.menu.id113 # log 'handleClose', this.onClose114 _ this.onClose115 set wz.ContextMenu = wz_ContextMenu