diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/menu.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/menu.js
index e73c82293..7ebe659c9 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/menu.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/menu.js
@@ -158,7 +158,7 @@ RED.menu = (function() {
activeMenu = null;
topMenu.hide();
});
- $(".red-ui-menu").hide();
+ $(".red-ui-menu.red-ui-menu-dropdown").hide();
topMenu.show();
}
})
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/popover.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/popover.js
index 6f8724a8a..6a9148896 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/popover.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/popover.js
@@ -278,6 +278,85 @@ RED.popover = (function() {
delay: { show: 750, hide: 50 }
});
},
+ menu: function(options) {
+ var list = $('
');
+ if (options.style === 'compact') {
+ list.addClass("red-ui-menu-compact");
+ }
+ var menuOptions = options.options || [];
+ var first;
+ menuOptions.forEach(function(opt) {
+ var item = $('').appendTo(list);
+ var link = $('').text(opt.label).appendTo(item);
+ link.on("click", function(evt) {
+ evt.preventDefault();
+ if (opt.onselect) {
+ opt.onselect();
+ }
+ menu.hide();
+ })
+ if (!first) { first = link}
+ })
+ var container = RED.popover.panel(list);
+ var menu = {
+ show: function(opts) {
+ $(document).on("keydown.red-ui-menu", function(evt) {
+ var currentItem = list.find(":focus").parent();
+ if (evt.keyCode === 40) {
+ evt.preventDefault();
+ // DOWN
+ if (currentItem.length > 0) {
+ if (currentItem.index() === menuOptions.length-1) {
+ console.log("WARP TO TOP")
+ // Wrap to top of list
+ list.children().first().children().first().focus();
+ } else {
+ console.log("GO DOWN ONE")
+ currentItem.next().children().first().focus();
+ }
+ } else {
+ list.children().first().children().first().focus();
+ }
+ } else if (evt.keyCode === 38) {
+ evt.preventDefault();
+ // UP
+ if (currentItem.length > 0) {
+ if (currentItem.index() === 0) {
+ console.log("WARP TO BOTTOM")
+ // Wrap to bottom of list
+ list.children().last().children().first().focus();
+ } else {
+ console.log("GO UP ONE")
+ currentItem.prev().children().first().focus();
+ }
+ } else {
+ list.children().last().children().first().focus();
+ }
+ } else if (evt.keyCode === 27) {
+ // ESCAPE
+ evt.preventDefault();
+ menu.hide(true);
+ }
+ evt.stopPropagation();
+ })
+ opts.onclose = function() {
+ $(document).off("keydown.red-ui-menu");
+ if (options.onclose) {
+ options.onclose(true);
+ }
+ }
+ container.show(opts);
+ },
+ hide: function(cancelled) {
+ $(document).off("keydown.red-ui-menu");
+ container.hide(options.disposeOnClose);
+ if (options.onclose) {
+ options.onclose(cancelled);
+ }
+ }
+ }
+ return menu;
+ },
panel: function(content) {
var panel = $('');
panel.css({ display: "none" });
@@ -285,18 +364,20 @@ RED.popover = (function() {
content.appendTo(panel);
var closeCallback;
- function hide() {
+ function hide(dispose) {
$(document).off("mousedown.red-ui-popover-panel-close");
panel.hide();
panel.css({
height: "auto"
});
- panel.remove();
+ if (dispose !== false) {
+ panel.remove();
+ }
}
function show(options) {
var closeCallback = options.onclose;
var target = options.target;
- var align = options.align || "left";
+ var align = options.align || "right";
var offset = options.offset || [0,0];
var pos = target.offset();
@@ -313,12 +394,12 @@ RED.popover = (function() {
panelHeight.height(panelHeight+top)
top = 0;
}
- if (align === "left") {
+ if (align === "right") {
panel.css({
top: top+"px",
left: (pos.left+offset[0])+"px",
});
- } else if(align === "right") {
+ } else if (align === "left") {
panel.css({
top: top+"px",
left: (pos.left-panelWidth+offset[0])+"px",
@@ -331,7 +412,7 @@ RED.popover = (function() {
if (closeCallback) {
closeCallback();
}
- hide();
+ hide(options.dispose);
}
// if ($(event.target).closest(target).length) {
// event.preventDefault();
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js
index 249d7daa7..f23def3c2 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/tabs.js
@@ -153,7 +153,7 @@ RED.tabs = (function() {
if (collapsibleMenu.is(":visible")) {
$(document).off("click.red-ui-tabmenu");
} else {
- $(".red-ui-menu").hide();
+ $(".red-ui-menu.red-ui-menu-dropdown").hide();
$(document).on("click.red-ui-tabmenu", function(evt) {
$(document).off("click.red-ui-tabmenu");
collapsibleMenu.hide();
diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js
index 74346c30f..037e8e454 100644
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/common/typedInput.js
@@ -913,7 +913,7 @@
panel.show({
target:that.optionExpandButton,
onclose:content.onclose,
- align: "right"
+ align: "left"
});
}
})
diff --git a/packages/node_modules/@node-red/editor-client/src/sass/dropdownMenu.scss b/packages/node_modules/@node-red/editor-client/src/sass/dropdownMenu.scss
index 658094571..bb91846bb 100644
--- a/packages/node_modules/@node-red/editor-client/src/sass/dropdownMenu.scss
+++ b/packages/node_modules/@node-red/editor-client/src/sass/dropdownMenu.scss
@@ -175,3 +175,38 @@
.red-ui-menu-dropdown-submenu.disabled > a:before {
border-right-color: $menuCaret;
}
+
+
+// Menu NG
+ul.red-ui-menu:not(.red-ui-menu-dropdown) {
+ font-family: $primary-font;
+ font-size: 12px;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+ li a {
+ display: block;
+ padding: 4px 8px 4px 16px;
+ clear: both;
+ font-weight: normal;
+ line-height: 20px;
+ color: $menuColor;
+ white-space: nowrap;
+ text-decoration: none;
+
+ &:hover,&:focus {
+ color: $menuHoverColor;
+ text-decoration: none;
+ background-color: $menuHoverBackground;
+ border: none;
+ outline: none;
+ }
+ }
+ &.red-ui-menu-compact {
+ font-size: 12px;
+ li a {
+ line-height: 16px;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/packages/node_modules/@node-red/editor-client/src/sass/tab-info.scss b/packages/node_modules/@node-red/editor-client/src/sass/tab-info.scss
index f51622b89..d401e0c70 100644
--- a/packages/node_modules/@node-red/editor-client/src/sass/tab-info.scss
+++ b/packages/node_modules/@node-red/editor-client/src/sass/tab-info.scss
@@ -501,7 +501,7 @@ div.red-ui-info-table {
position: absolute;
top: 6px;
right: 8px;
- width: calc(100% - 150px);
+ width: calc(100% - 130px);
max-width: 250px;
background: $palette-header-background;
}