Starter Lab Productions Play
Project Docs Github
Log in
ittf site docs t _js wz contextMenu.js.ittf Edit
  • /ittf/site/docs/t/_js/wz/contextMenu.js.ittf

/ittf/site/docs/t/_js/wz/contextMenu.js.ittf (primary)

edit
                                            
1 $group
2 if !window.wz
3 set window.wz = {}
4 class wz_ContextMenu
5 ctor
6 param options
7 set options = options || {}
8 set this.menusContainerId = options.menusContainerId || 'wz-menus-container'
9 set this.onClose
10 =>
11 m create
12 param meta
13 # log 'wz.ContextMenu.create'
14 set this.meta = meta
15 var menusContainer = wz.element('#' + this.menusContainerId)
16 if !menusContainer
17 set menusContainer = document.createElement('div')
18 _ menusContainer.setAttribute('id', this.menusContainerId)
19 _ document.body.appendChild(menusContainer)
20 set this.menuDiv
21 _ document.createElement("div")
22 _ this.menuDiv.setAttribute('id', meta.menu.id)
23 _ this.menuDiv.setAttribute('class', 'wz-context-menu')
24 var itemsDiv
25 _ this._createMenuItemsDiv
26 @ meta.menu
27 _ menusContainer.appendChild
28 @ this.menuDiv
29 _ this.menuDiv.appendChild
30 @ itemsDiv
31 set this.menuDiv.onclick
32 =>
33 param event
34 var command = event.target.dataset['command']
35 # log 'clickListener.target', event.target, command
36 if meta.onClick
37 _ meta.onClick
38 {
39 @ command command
40 @ payload this.payload
41 @ event event
42 _ wz.click
43 @ document
44 =>
45 # log 'document.onclick', meta.menu.id
46 _ this.handleClose
47 _ wz.global.on
48 @ 'wz.contextMenu.clear'
49 function
50 param target
51 # log 'wz.contextMenu.clear.target', target, meta.menu.id
52 if target !== meta.menu.id
53 _ this.handleClose
54 @ this
55 m replace
56 param menuMeta
57 # log 'wz.ContextMenu.replace'
58 # _createMenuItemsDiv removes the previous div
59 var itemsDiv
60 _ this._createMenuItemsDiv
61 @ menuMeta
62 _ this.menuDiv.appendChild
63 @ itemsDiv
64 m _createMenuItemsDiv
65 param menuMeta
66 var hb = new wzHtmlBuilder()
67 var hUl
68 _ hb.add
69 @ 'ul'
70 {
71 foreach item in menuMeta.items
72 var hLi
73 _ hUl.add
74 @ 'li'
75 {
76 _ hLi.add
77 @ 'a'
78 {
79 @ href '#'
80 @ ['data-command'] item.command || item.label
81 @ _text item.label
82 if this.menuItemsDiv
83 _ this.menuItemsDiv.parentNode.removeChild(this.menuItemsDiv)
84 set this.menuItemsDiv
85 _ document.createElement("div")
86 _ wz.html
87 @ this.menuItemsDiv
88 _ hb.toHtml('\n')
89 return this.menuItemsDiv
90 m handleRightClick
91 param evt
92 param payload
93 _ wz.global.emit
94 @ 'wz.contextMenu.clear'
95 @ this.meta.menu.id
96 set this.payload = payload
97 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 menu
101 _ wz.element
102 @ '#' + this.meta.menu.id
103 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 else
109 set evt.returnValue = false
110 m handleClose
111 _ wz.hide
112 @ '#' + this.meta.menu.id
113 # log 'handleClose', this.onClose
114 _ this.onClose
115 set wz.ContextMenu = wz_ContextMenu
Save
Save & Refresh
Cancel