tweaking events...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2019-02-12 05:19:57 +03:00
parent a314131066
commit b60bb38fbe

View File

@ -520,6 +520,7 @@ var BrowserPrototype = {
this.__dom = value }, this.__dom = value },
// Element renderers...
// //
// Foramt: // Foramt:
// <div class="browse-widget" tabindex="0"> // <div class="browse-widget" tabindex="0">
@ -534,6 +535,7 @@ var BrowserPrototype = {
// </div> // </div>
// //
// XXX instrument interactions... // XXX instrument interactions...
// XXX register event handlers...
renderList: function(items, context){ renderList: function(items, context){
var that = this var that = this
var options = context.options || this.options var options = context.options || this.options
@ -557,6 +559,9 @@ var BrowserPrototype = {
: item) }) : item) })
dialog.appendChild(list) dialog.appendChild(list)
// XXX event handlers...
// XXX
return dialog return dialog
}, },
// //
@ -592,6 +597,7 @@ var BrowserPrototype = {
// </div> // </div>
// //
// XXX can we influence how the options are passed to the header??? // XXX can we influence how the options are passed to the header???
// XXX register event handlers...
renderNested: function(header, sublist, item, context){ renderNested: function(header, sublist, item, context){
var that = this var that = this
var options = context.options || this.options var options = context.options || this.options
@ -613,11 +619,9 @@ var BrowserPrototype = {
&& header.classList.add('collapsed') && header.classList.add('collapsed')
// collapse action handler... // collapse action handler...
// XXX STUB: make this overloadable... // XXX make this overloadable...
// XXX handle the 'open' event... $(header).on('open', function(evt){
header.addEventListener('click', function(evt){
item.collapsed = !item.collapsed item.collapsed = !item.collapsed
// XXX need to pass the root context here...
that.render(context) that.render(context)
}) })
@ -634,6 +638,9 @@ var BrowserPrototype = {
e.appendChild(item) }) e.appendChild(item) })
: null : null
// XXX event handlers... (???)
// XXX
item.dom = e item.dom = e
return e return e
@ -677,6 +684,7 @@ var BrowserPrototype = {
if(options.hidden && !options.renderHidden){ if(options.hidden && !options.renderHidden){
return null return null
} }
var text = JSON.stringify(item.value)
var elem = document.createElement('div') var elem = document.createElement('div')
// classes... // classes...
@ -697,7 +705,7 @@ var BrowserPrototype = {
Object.entries(item.attrs || {}) Object.entries(item.attrs || {})
.forEach(function([key, value]){ .forEach(function([key, value]){
elem.setAttribute(key, value) }) elem.setAttribute(key, value) })
elem.setAttribute('value', JSON.stringify(item.value)) elem.setAttribute('value', text)
// values... // values...
;(item.value instanceof Array ? item.value : [item.value]) ;(item.value instanceof Array ? item.value : [item.value])
@ -710,6 +718,10 @@ var BrowserPrototype = {
}) })
// events... // events...
// XXX revise signature...
elem.addEventListener('click',
function(){ $(elem).trigger('open', [text, item, elem]) })
//elem.addEventListener('tap', function(){ $(elem).trigger('open', [text, item, elem]) })
Object.entries(item.events || {}) Object.entries(item.events || {})
// shorthand events... // shorthand events...
.concat([ .concat([
@ -749,7 +761,9 @@ var BrowserPrototype = {
return elem return elem
}, },
// save the rendered state to .dom and wrap a list of nodes in a div... // This does tow additional things:
// - save the rendered state to .dom
// - wrap a list of nodes (nested list) in a div
render: function(options){ render: function(options){
var d = object.parent(BrowserPrototype.render, this).call(this, ...arguments) var d = object.parent(BrowserPrototype.render, this).call(this, ...arguments)
@ -760,10 +774,19 @@ var BrowserPrototype = {
c.appendChild(e) }) c.appendChild(e) })
d = c d = c
} }
this.dom = d this.dom = d
return this.dom return this.dom
}, },
// Custom events...
// XXX do we use jQuery event handling or vanilla?
// ...feels like jQuery here wins as it provides a far simpler
// API + it's a not time critical area...
open: function(func){
},
filter: function(){}, filter: function(){},