From edcfa129fce5a70b2d135275a87102c9de13510c Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Fri, 8 Feb 2019 21:21:36 +0300 Subject: [PATCH] more tweaking... Signed-off-by: Alex A. Naanou --- ui (gen4)/lib/widget/browse2.js | 52 +++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/ui (gen4)/lib/widget/browse2.js b/ui (gen4)/lib/widget/browse2.js index bbe54d5d..a051f629 100755 --- a/ui (gen4)/lib/widget/browse2.js +++ b/ui (gen4)/lib/widget/browse2.js @@ -467,7 +467,7 @@ var BrowserPrototype = { var that = this options = options || this.options - // dialog... + // dialog (container)... var dialog = document.createElement('div') dialog.classList.add('browse-widget') dialog.setAttribute('tab-index', '0') @@ -493,13 +493,11 @@ var BrowserPrototype = { var header = document.createElement('div') header.classList.add('path', 'v-block') - // XXX path... + // XXX path/search... var dir = document.createElement('div') dir.classList.add('dir', 'cur') header.appendChild(dir) - // XXX search... - return header }, renderNested: function(header, sublist, item, options){ @@ -539,18 +537,25 @@ var BrowserPrototype = { return null } - var e = document.createElement('div') + var elem = document.createElement('div') // classes... - e.classList.add('item') - ;(options.cls || []) - .forEach(function(cls){ - e.classList.add(cls) }) + elem.classList.add(...['item'] + // user classes... + .concat(options.cls || []) + // special classes... + .concat([ + //'focused', + 'selected', + 'disabled', + 'hidden', + ].filter(function(cls){ + return !!options[cls] }))) // attrs... Object.entries(options.attrs || {}) .forEach(function({key, value}){ - e.setAttribute(key, value) }) + elem.setAttribute(key, value) }) // values... ;(item.value instanceof Array ? item.value : [item.value]) @@ -558,21 +563,30 @@ var BrowserPrototype = { var value = document.createElement('span') value.classList.add('text') value.innerHTML = v || item || '' - e.appendChild(value) + elem.appendChild(value) }) + // events... + // XXX will the events survive attaching??? + var _elem = $(elem) + Object.entries(options.events || {}) + // special events... + .concat([ + 'click', + ].map(function(evt){ return [evt, options[evt]] })) + // setup the handlers... + .forEach(function({event, handler}){ + handler + && _elem.on(event, handler) }) + + // XXX buttons... // XXX - // special stuff... - options.focused && e.classList.add('focused') - options.selected && e.classList.add('selected') - options.disabled && e.classList.add('disabled') - options.hidden && e.classList.add('hidden') + item.dom = elem - item.dom = e - - return e }, + return elem + }, // save the rendered state to .dom render: function(context, options){