mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	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; | ||||
| @@ -405,10 +423,15 @@ RED.palette = (function() { | ||||
|             } | ||||
|             setLabel(nt,d,label,nodeInfo); | ||||
|  | ||||
|             var categoryNode = $("#red-ui-palette-container-"+rootCategory); | ||||
|             if (categoryNode.find(".red-ui-palette-node").length === 1) { | ||||
|                 categoryContainers[rootCategory].open(); | ||||
|             } | ||||
| 						var categoryNode = $("#red-ui-palette-container-"+rootCategory); | ||||
| 						if (categoryNode.find(".red-ui-palette-node").length === 1) { | ||||
| 							const closedCategoriesStr = localStorage.getItem('closedCategories'); | ||||
| 							const closedCategories = closedCategoriesStr ? JSON.parse(closedCategoriesStr) : []; | ||||
| 							if (closedCategories.indexOf(rootCategory) < 0) | ||||
| 								categoryContainers[rootCategory].open(); | ||||
| 							else | ||||
| 								categoryContainers[rootCategory].close(); | ||||
| 						} | ||||
|  | ||||
|         } | ||||
|     } | ||||
| @@ -640,8 +663,6 @@ RED.palette = (function() { | ||||
|             } | ||||
|         }); | ||||
|         RED.popover.tooltip(paletteCollapseAll,RED._('palette.actions.collapse-all')); | ||||
|         // collapse at startup | ||||
|         setTimeout(() => { paletteCollapseAll.trigger('click') }, 0); | ||||
|  | ||||
|         var paletteExpandAll = $('<button type="button" class="red-ui-footer-button"><i class="fa fa-angle-double-down"></i></button>').appendTo(paletteFooterButtons); | ||||
|         paletteExpandAll.on("click", function(e) { | ||||
| @@ -654,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