";
+ // if (item.children && item.hasOwnProperty('selected')) {
+ // labelNodeType = "
";
+ // }
+ var label = $(labelNodeType,{class:"red-ui-treeList-label"}).appendTo(container);
item.treeList.label = label;
if (item.class) {
label.addClass(item.class);
@@ -110,13 +198,25 @@
})
label.on('mouseover',function(e) { that._trigger('itemmouseover',e,item); })
label.on('mouseout',function(e) { that._trigger('itemmouseout',e,item); })
+ label.on('mouseenter',function(e) { that._trigger('itemmouseenter',e,item); })
+ label.on('mouseleave',function(e) { that._trigger('itemmouseleave',e,item); })
if (item.children) {
- item.treeList.addChild = function(newItem) {
+ item.treeList.addChild = function(newItem,select) {
item.treeList.childList.editableList('addItem',newItem)
+ newItem.parent = item;
item.children.push(newItem);
+ if (select) {
+ setTimeout(function() {
+ that.select(newItem)
+ },100);
+ }
}
- item.treeList.expand = function() {
+ item.treeList.expand = function(done) {
+ if (container.hasClass("expanded")) {
+ done && done();
+ return;
+ }
if (!container.hasClass("built") && typeof item.children === 'function') {
container.addClass('built');
var childrenAdded = false;
@@ -139,6 +239,7 @@
spinner.remove();
}
}
+ done && done();
that._trigger("childrenloaded",null,item)
});
if (!childrenAdded) {
@@ -150,9 +251,9 @@
} else {
item.treeList.childList.slideDown('fast');
+ done && done();
}
container.addClass("expanded");
-
}
item.treeList.collapse = function() {
item.treeList.childList.slideUp('fast');
@@ -163,7 +264,9 @@
// $('
').appendTo(label);
label.click(function(e) {
if (container.hasClass("expanded")) {
- item.treeList.collapse();
+ if (item.hasOwnProperty('selected') || label.hasClass("selected")) {
+ item.treeList.collapse();
+ }
} else {
item.treeList.expand();
}
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/library.js b/packages/node_modules/@node-red/editor-client/src/js/ui/library.js
index b78a31a8b..c2c68a510 100755
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/library.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/library.js
@@ -61,6 +61,7 @@ RED.library = (function() {
if (!selectedPath.children) {
selectedPath = selectedPath.parent;
}
+
var queryArgs = [];
var data = {};
for (var i=0; i
").css({width: "100%", height: "100%"}).appendTo(panes)
.treeList({}).on('treelistselect', function(event, item) {
- if (addButton) {
- if (item.writable === false) {
- addButton.prop('disabled', true);
- } else {
- addButton.prop('disabled', false);
- }
- }
if (options.onselect) {
options.onselect(item);
}
});
- var addButton;
- if (options.addFolderButton) {
- var tools = $("
").css({position: "absolute",bottom:"3px",right:"25px"}).appendTo(panes)
- addButton= $('
').appendTo(tools).click(function(e) {
- var defaultFolderName = "new-folder";
- var defaultFolderNameMatches = {};
+ var itemTools = $("
").css({position: "absolute",bottom:"6px",right:"8px"});
+ var menuButton = $('')
+ .click(function(evt) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ var elementPos = menuButton.offset();
- var selected = dirList.treeList('selected');
- if (!selected.children) {
- selected = selected.parent;
- }
- selected.children.forEach(function(c) {
- if (/^new-folder/.test(c.label)) {
- defaultFolderNameMatches[c.label] = true
- }
- });
- var folderIndex = 2;
- while(defaultFolderNameMatches[defaultFolderName]) {
- defaultFolderName = "new-folder-"+(folderIndex++)
- }
+ var menuOptionMenu = RED.menu.init({id:"red-ui-library-browser-menu",
+ options: [
+ {id:"red-ui-library-browser-menu-addFolder",label:"New folder", onselect: function() {
+ var defaultFolderName = "new-folder";
+ var defaultFolderNameMatches = {};
- selected.treeList.expand();
- var input = $('').val(defaultFolderName);
- var newItem = {
- icon: "fa fa-folder-o",
- children:[],
- path: selected.path,
- element: input
- }
- var confirmAdd = function() {
- var val = input.val().trim();
- if (val === "") {
- cancelAdd();
- return;
- } else {
- for (var i=0;i').val(defaultFolderName);
+ var newItem = {
+ icon: "fa fa-folder-o",
+ children:[],
+ path: selected.path,
+ element: input
+ }
+ var confirmAdd = function() {
+ var val = input.val().trim();
+ if (val === "") {
+ cancelAdd();
+ return;
+ } else {
+ for (var i=0;i