From 89371c5f5f2224a1c5fd134344163f66a8f2c02f Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Thu, 14 Mar 2024 13:24:34 +0000 Subject: [PATCH] remove node collapsing magic string --- .../_components/ComponentList/ComponentTree.svelte | 4 ++-- .../src/stores/builder/componentTreeNodes.js | 7 +++++++ packages/builder/src/stores/builder/components.js | 14 +++++--------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentTree.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentTree.svelte index 3cacf3c096..d4d0e9e484 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentTree.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentTree.svelte @@ -63,11 +63,11 @@ } } - const isOpen = (component, openNodes) => { + const isOpen = (component) => { if (!component?._children?.length) { return false } - return openNodes[`nodeOpen-${component._id}`] + return componentTreeNodesStore.isNodeExpanded(component._id) } const isChildOfSelectedComponent = component => { diff --git a/packages/builder/src/stores/builder/componentTreeNodes.js b/packages/builder/src/stores/builder/componentTreeNodes.js index bffb1327b2..d23f6a232f 100644 --- a/packages/builder/src/stores/builder/componentTreeNodes.js +++ b/packages/builder/src/stores/builder/componentTreeNodes.js @@ -1,3 +1,4 @@ +import { get } from 'svelte/store' import { createSessionStorageStore } from "@budibase/frontend-core" const baseStore = createSessionStorageStore("openNodes", {}) @@ -36,12 +37,18 @@ const collapseNode = componentId => { }) } +const isNodeExpanded = componentId => { + const openNodes = get(baseStore); + return !!openNodes[`nodeOpen-${componentId}`] +} + const store = { subscribe: baseStore.subscribe, toggleNode, expandNode, expandNodes, collapseNode, + isNodeExpanded } export default store diff --git a/packages/builder/src/stores/builder/components.js b/packages/builder/src/stores/builder/components.js index 122b9fd0ff..64699a17c8 100644 --- a/packages/builder/src/stores/builder/components.js +++ b/packages/builder/src/stores/builder/components.js @@ -675,7 +675,6 @@ export class ComponentStore extends BudiStore { const screen = get(selectedScreen) const parent = findComponentParent(screen.props, componentId) const index = parent?._children.findIndex(x => x._id === componentId) - const componentTreeNodes = get(componentTreeNodesStore) // Check for screen and navigation component edge cases const screenComponentId = `${screen._id}-screen` @@ -696,12 +695,12 @@ export class ComponentStore extends BudiStore { const previousSibling = parent._children[index - 1] if ( previousSibling._children?.length && - componentTreeNodes[`nodeOpen-${previousSibling._id}`] + componentTreeNodesStore.isNodeExpanded(previousSibling._id) ) { let target = previousSibling while ( target._children?.length && - componentTreeNodes[`nodeOpen-${target._id}`] + componentTreeNodesStore.isNodeExpanded(target._id) ) { target = target._children[target._children.length - 1] } @@ -723,7 +722,6 @@ export class ComponentStore extends BudiStore { const screen = get(selectedScreen) const parent = findComponentParent(screen.props, componentId) const index = parent?._children.findIndex(x => x._id === componentId) - const componentTreeNodes = get(componentTreeNodesStore) // Check for screen and navigation component edge cases const screenComponentId = `${screen._id}-screen` @@ -736,7 +734,7 @@ export class ComponentStore extends BudiStore { if ( component._children?.length && (state.selectedComponentId === navComponentId || - componentTreeNodes[`nodeOpen-${component._id}`]) + componentTreeNodesStore.isNodeExpanded(component._id)) ) { return component._children[0]._id } else if (!parent) { @@ -796,7 +794,6 @@ export class ComponentStore extends BudiStore { await screenStore.patch(screen => { const componentId = component?._id const parent = findComponentParent(screen.props, componentId) - const componentTreeNodes = get(componentTreeNodesStore) // Check we aren't right at the top of the tree const index = parent?._children.findIndex(x => x._id === componentId) @@ -818,7 +815,7 @@ export class ComponentStore extends BudiStore { const definition = this.getDefinition(previousSibling._component) if ( definition.hasChildren && - componentTreeNodes[`nodeOpen-${previousSibling._id}`] + componentTreeNodesStore.isNodeExpanded(previousSibling._id) ) { previousSibling._children.push(originalComponent) } @@ -845,7 +842,6 @@ export class ComponentStore extends BudiStore { await screenStore.patch(screen => { const componentId = component?._id const parent = findComponentParent(screen.props, componentId) - const componentTreeNodes = get(componentTreeNodesStore) // Sanity check parent is found if (!parent?._children?.length) { @@ -874,7 +870,7 @@ export class ComponentStore extends BudiStore { const definition = this.getDefinition(nextSibling._component) if ( definition.hasChildren && - componentTreeNodes[`nodeOpen-${nextSibling._id}`] + componentTreeNodesStore.isNodeExpanded(nextSibling._id) ) { nextSibling._children.splice(0, 0, originalComponent) }