mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Palette: Remember category open/close state across reloads.
This commit is contained in:
		| @@ -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 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user