diff --git a/ui (gen4)/lib/widget/browse2.html b/ui (gen4)/lib/widget/browse2.html
index 5c94620a..7ad41ec9 100755
--- a/ui (gen4)/lib/widget/browse2.html
+++ b/ui (gen4)/lib/widget/browse2.html
@@ -260,6 +260,7 @@ requirejs([
'buttonAction: item button focused -- example button action...'],
['□',
function(){ console.log('BUTTON:', ...arguments) }],
+ 'ToggleDisabled',
],
})
diff --git a/ui (gen4)/lib/widget/browse2.js b/ui (gen4)/lib/widget/browse2.js
index 7b0a75be..7f4c7fd1 100755
--- a/ui (gen4)/lib/widget/browse2.js
+++ b/ui (gen4)/lib/widget/browse2.js
@@ -160,6 +160,35 @@ Items.nest = function(item, list, options){
+//---------------------------------------------------------------------
+// Buttons...
+var buttons = Items.buttons = {}
+
+
+buttons.ToggleDisabled = [
+ function(item){
+ return item.disabled ?
+ '☐'
+ : '☑' },
+ 'toggleDisabled: item',
+ true]
+
+buttons.ToggleHidden = [
+ function(item){
+ return item.hidden ?
+ '☐'
+ : '☑' },
+ 'toggleHidden: item']
+
+buttons.ToggleSelected = [
+ function(item){
+ return item.selected ?
+ '☐'
+ : '☑' },
+ 'toggleSelect: item']
+
+
+
//---------------------------------------------------------------------
// wrappers...
@@ -2682,6 +2711,7 @@ var BaseBrowserPrototype = {
&& (item.focused = true) },
default_item: function(){ return this.get(0) },
options: {
+ // XXX get this from options...
skipDisabled: true,
},
getter: 'get' }),
@@ -3114,9 +3144,13 @@ var BrowserPrototype = {
// // - number/string/list/object
// // - any values...
// //
+ // // (optional, bool), of true the button will
+ // // be active while the item is disabled...
+ // //
// // NOTE: for more doc see keyboard.Keyboard.parseStringHandler(..)
// ['html',
- // ': .. -- comment'],
+ // ': .. -- comment',
+ // ],
//
// ...
// ]
@@ -3695,17 +3729,27 @@ var BrowserPrototype = {
// buttons...
// XXX migrate the default buttons functionality and button inheritance...
var buttons = (item.buttons || options.itemButtons || [])
+ // resolve buttons from library...
+ .map(function(button){
+ return button instanceof Array ?
+ button
+ : Items.buttons[button] || button })
.slice()
// NOTE: keep the order unsurprising...
.reverse()
var stopPropagation = function(evt){ evt.stopPropagation() }
buttons
- .forEach(function([html, handler]){
+ // XXX add option to use a shortcut key...
+ // XXX use keyword to inherit buttons...
+ .forEach(function([html, handler, force, keyword]){
var button = document.createElement('div')
button.classList.add('button')
- button.innerHTML = html
- // XXX should buttons be active in disabled state???
- if(!item.disabled){
+
+ button.innerHTML = html instanceof Function ?
+ html.call(that, item)
+ : html
+
+ if(force || !item.disabled){
button.setAttribute('tabindex', '0')
// events to keep in buttons...
;(options.buttonLocalEvents || options.localEvents || [])
@@ -3747,7 +3791,7 @@ var BrowserPrototype = {
var k = keyboard.event2key(evt)
if(k.includes('Enter')){
event.stopPropagation()
- func.call(that, evt) } }) }
+ func.call(that, evt, item) } }) }
}
elem.appendChild(button)
})