diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index 1f9dcfac3..006fd6ec4 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -715,30 +715,8 @@ RED.editor = (function() { } return result; } - function showIconPicker(container, node, iconPath, faOnly, done) { - var containerPos = container.offset(); - var pickerBackground = $('
').css({ - position: "absolute",top:0,bottom:0,left:0,right:0,zIndex:20 - }).appendTo("body"); - - var top = containerPos.top - 30; - - if (top+280 > $( window ).height()) { - top = $( window ).height() - 280; - } - var picker = $('
').css({ - top: top+"px", - left: containerPos.left+"px", - }).appendTo("#red-ui-editor"); - - var hide = function() { - pickerBackground.remove(); - picker.remove(); - RED.keyboard.remove("escape"); - } - RED.keyboard.add("*","escape",function(){hide()}); - pickerBackground.on("mousedown", hide); - + function showIconPicker(container, backgroundColor, iconPath, faOnly, done) { + var picker = $('
'); var searchDiv = $("
",{class:"red-ui-search-container"}).appendTo(picker); searchInput = $('').attr("placeholder",RED._("editor.searchIcons")).appendTo(searchDiv).searchBox({ delay: 50, @@ -766,99 +744,90 @@ RED.editor = (function() { var summary = $('').appendTo(metaRow); var resetButton = $('').appendTo(metaRow).on("click", function(e) { e.preventDefault(); - hide(); + iconPanel.hide(); done(null); }); - var iconSets = RED.nodes.getIconSets(); - var backgroundColor = node && RED.utils.getNodeColor(node.type, node._def); - if (!node && faOnly) { + if (!backgroundColor && faOnly) { iconList.addClass("red-ui-icon-list-dark"); } - Object.keys(iconSets).forEach(function(moduleName) { - if (faOnly && (moduleName !== "font-awesome")) { - return; - } - var icons = iconSets[moduleName]; - if (icons.length > 0) { - // selectIconModule.append($("").val(moduleName).text(moduleName)); - var header = $('
').text(moduleName).appendTo(iconList); - $('').prependTo(header); - icons.forEach(function(icon) { - var iconDiv = $('
',{class:"red-ui-icon-list-icon"}).appendTo(iconList); - var nodeDiv = $('
',{class:"red-ui-search-result-node"}).appendTo(iconDiv); - var icon_url = RED.settings.apiRootUrl+"icons/"+moduleName+"/"+icon; - iconDiv.data('icon',icon_url); - if (node) { - nodeDiv.css({ - 'backgroundColor': backgroundColor - }); - } - var iconContainer = $('
',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); - RED.utils.createIconElement(icon_url, iconContainer, true); + setTimeout(function() { + var iconSets = RED.nodes.getIconSets(); + Object.keys(iconSets).forEach(function(moduleName) { + if (faOnly && (moduleName !== "font-awesome")) { + return; + } + var icons = iconSets[moduleName]; + if (icons.length > 0) { + // selectIconModule.append($("").val(moduleName).text(moduleName)); + var header = $('
').text(moduleName).appendTo(iconList); + $('').prependTo(header); + icons.forEach(function(icon) { + var iconDiv = $('
',{class:"red-ui-icon-list-icon"}).appendTo(iconList); + var nodeDiv = $('
',{class:"red-ui-search-result-node"}).appendTo(iconDiv); + var icon_url = RED.settings.apiRootUrl+"icons/"+moduleName+"/"+icon; + iconDiv.data('icon',icon_url); + if (backgroundColor) { + nodeDiv.css({ + 'backgroundColor': backgroundColor + }); + } + var iconContainer = $('
',{class:"red-ui-palette-icon-container"}).appendTo(nodeDiv); + RED.utils.createIconElement(icon_url, iconContainer, true); - if (iconPath.module === moduleName && iconPath.file === icon) { - iconDiv.addClass("selected"); - } - iconDiv.on("mouseover", function() { - summary.text(icon); + if (iconPath.module === moduleName && iconPath.file === icon) { + iconDiv.addClass("selected"); + } + iconDiv.on("mouseover", function() { + summary.text(icon); + }) + iconDiv.on("mouseout", function() { + summary.html(" "); + }) + iconDiv.on("click", function() { + iconPanel.hide(); + done(moduleName+"/"+icon); + }) }) - iconDiv.on("mouseout", function() { - summary.html(" "); - }) - iconDiv.on("click", function() { - hide(); - done(moduleName+"/"+icon); - }) - }) - } - }); + } + }); + setTimeout(function() { + spinner.remove(); + },50); + },300); + var spinner = RED.utils.addSpinnerOverlay(iconList,true); + var iconPanel = RED.popover.panel(picker); + iconPanel.show({ + target: container + }) + + picker.slideDown(100); searchInput.trigger("focus"); } function createColorPicker(colorRow, color) { - var colorSpec = $("", { - class: "red-ui-subflow-color-spec" - }).appendTo(colorRow); - var colorButton = $("