diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/palette.js b/packages/node_modules/@node-red/editor-client/src/js/ui/palette.js index 9f20cc674..38bc640d9 100755 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/palette.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/palette.js @@ -65,12 +65,14 @@ RED.palette = (function() { catDiv.addClass("red-ui-palette-closed"); $("#red-ui-palette-base-category-"+category).slideUp(); $("#red-ui-palette-header-"+category+" i").removeClass("expanded"); + rememberCategoryState(category, false) }, open: function() { catDiv.addClass("red-ui-palette-open"); catDiv.removeClass("red-ui-palette-closed"); $("#red-ui-palette-base-category-"+category).slideDown(); $("#red-ui-palette-header-"+category+" i").addClass("expanded"); + rememberCategoryState(category, true) }, toggle: function() { if (catDiv.hasClass("red-ui-palette-open")) { @@ -85,6 +87,22 @@ RED.palette = (function() { categoryContainers[category].toggle(); }); } + function rememberCategoryState(cat, open) { + const stateStr = localStorage.getItem('closedCategories'); + if (!stateStr && open) return; + const state = stateStr ? JSON.parse(stateStr) : []; + const idx = state.indexOf(cat); + if (open && idx >= 0) + state.splice(idx, 1); + else if (!open && idx < 0) + state.push(cat); + else + return; + if (state.length <= 0) + localStorage.removeItem('closedCategories'); + else + localStorage.setItem('closedCategories', JSON.stringify(state)); + } function setLabel(type, el,label, info) { var nodeWidth = 82; @@ -407,7 +425,12 @@ RED.palette = (function() { var categoryNode = $("#red-ui-palette-container-"+rootCategory); if (categoryNode.find(".red-ui-palette-node").length === 1) { - categoryContainers[rootCategory].open(); + const closedCategoriesStr = localStorage.getItem('closedCategories'); + const closedCategories = closedCategoriesStr ? JSON.parse(closedCategoriesStr) : []; + if (closedCategories.indexOf(rootCategory) < 0) + categoryContainers[rootCategory].open(); + else + categoryContainers[rootCategory].close(); } } @@ -652,7 +675,7 @@ RED.palette = (function() { }); RED.popover.tooltip(paletteExpandAll,RED._('palette.actions.expand-all')); - RED.actions.add("core:toggle-palette", function(state) { + RED.actions.add("core:toggle-palette", function(state) { if (state === undefined) { RED.menu.toggleSelected("menu-item-palette"); } else {