added push-on-open option to browse item constructor...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2017-01-04 06:37:23 +03:00
parent 1ff33f8f77
commit a2aee39c5a
2 changed files with 37 additions and 8 deletions

View File

@ -1161,7 +1161,10 @@ var BrowseActionsActions = actions.Actions({
} else if(actions.config['browse-actions-settings'].showEmpty } else if(actions.config['browse-actions-settings'].showEmpty
|| (cur[key] != null || (cur[key] != null
&& Object.keys(cur[key]).length > 0)){ && Object.keys(cur[key]).length > 0)){
make(text + '/') make(text + '/',
{
push_on_open: true
})
// item: line... // item: line...
} else if(text == '---'){ } else if(text == '---'){

View File

@ -810,20 +810,33 @@ var BrowserPrototype = {
// //
// options format: // options format:
// { // {
// traversable: .., // // If true make the element traversable...
// disabled: .., // traversable: <bool>,
// buttons: .., //
// // If true disable the element...
// disabled: <bool>,
//
// // If true hide the element...
// hidden: <bool>,
//
// // If true the open event will also pass the element to open...
// //
// // This is useful for opening traversable elements both on
// // pressing Enter or Left keys...
// push_on_open: <bool>,
//
// // element button spec...
// buttons: <bottons>,
// } // }
// //
// buttons format (optional): // <buttons> format (optional):
// [ // [
// [<html>, <func>], // [<html>, <func>],
// ... // ...
// ] // ]
// //
// NOTE: buttons will override .options.itemButtons, if this is not // NOTE: buttons will override .options.itemButtons, if this is not
// desired simply append the custom buttons to a copy of // desired simply copy .itemButtons and modify it...
// .itemButtons
// //
// //
// Finalize the dialog (optional)... // Finalize the dialog (optional)...
@ -1006,7 +1019,9 @@ var BrowserPrototype = {
traversable = opts.traversable traversable = opts.traversable
disabled = opts.disabled disabled = opts.disabled
buttons = opts.buttons buttons = opts.buttons
hidden = opts.hidden hidden = opts.hidden
push_on_open = opts.push_on_open
} }
buttons = buttons buttons = buttons
@ -1092,6 +1107,7 @@ var BrowserPrototype = {
!traversable && res.addClass('not-traversable') !traversable && res.addClass('not-traversable')
disabled && res.addClass('disabled') disabled && res.addClass('disabled')
hidden && res.addClass('hidden') hidden && res.addClass('hidden')
push_on_open && res.attr('push-on-open', 'on')
// buttons... // buttons...
// action (open)... // action (open)...
@ -2201,6 +2217,9 @@ var BrowserPrototype = {
// The .options.open(..), if defined, will always get the full path // The .options.open(..), if defined, will always get the full path
// as first argument. // as first argument.
// //
// If 'push-on-open' attribute is set on an element, then this will
// also pass the element to .push(..)
//
// NOTE: if nothing is selected this will do nothing... // NOTE: if nothing is selected this will do nothing...
// NOTE: internally this is never called directly, instead a pre-open // NOTE: internally this is never called directly, instead a pre-open
// stage is used to execute default behavior not directly // stage is used to execute default behavior not directly
@ -2254,7 +2273,7 @@ var BrowserPrototype = {
var res = m ? m.apply(this, args) : this var res = m ? m.apply(this, args) : this
res = res || this res = res || this
// XXX do we strigify the path??? // XXX do we stringify the path???
// XXX should we use .strPath here??? // XXX should we use .strPath here???
path = this.options.pathPrefix + path.join('/') path = this.options.pathPrefix + path.join('/')
@ -2266,6 +2285,13 @@ var BrowserPrototype = {
source: this, source: this,
}, path) }, path)
// push an element if attr is set...
// NOTE: a good way to do this is to check if we have any
// handlers bound, but so var I've found no non-hack-ish
// ways to do this...
elem.attr('push-on-open') == 'on'
&& this.push(elem)
} else { } else {
this.trigger('open', path) this.trigger('open', path)
} }