1 $group
2 #
3 # params
4 # { ctx
5 # { clickHandler
6 # { options
7 # string container
8 # string class
9 # string dataField
10 # optional
11 function setupClickListener
12 param ctx
13 param options
14 var el = wz.element('#' + options.containerId)
15 if !el
16 throw new Error('wz.setupClickHandler requires an existing `options.containerId` html element. Received: ' + options.container)
17 _ wz.click
18 @ el
19 @ create_clickListener(ctx, options)
20 function create_clickListener
21 param ctx
22 param options
23 return
24 function clickListener
25 param event
26 # log 'clickListener.target', event.target
27 var dataValue = null
28 if options.dataField
29 if Array.isArray(options.dataField)
30 set dataValue = {}
31 foreach item in options.dataField
32 set dataValue[item] = event.target.dataset[item]
33 else
34 set dataValue = event.target.dataset[options.dataField]
35 # log 'clickListener.target.dataValue', dataValue
36 # log 'has class ' + options.targetClass, wz.hasClass(event.target, options.targetClass)
37 if wz.hasClass(event.target, options.targetClass)
38 _ ctx.clickHandler.handleClick
39 @ event.target
40 @ dataValue
41 _ event.preventDefault()
42 _ event.stopPropagation()
43 else
44 if ctx.clickHandler.checkClick(event.target)
45 _ event.preventDefault()
46 _ event.stopPropagation()