diff --git a/charts/budibase/README.md b/charts/budibase/README.md index 342011bdb1..dea7d1dbae 100644 --- a/charts/budibase/README.md +++ b/charts/budibase/README.md @@ -140,7 +140,7 @@ $ helm install --create-namespace --namespace budibase budibase . -f values.yaml | ingress.className | string | `""` | What ingress class to use. | | ingress.enabled | bool | `true` | Whether to create an Ingress resource pointing to the Budibase proxy. | | ingress.hosts | list | `[]` | Standard hosts block for the Ingress resource. Defaults to pointing to the Budibase proxy. | -| nameOverride | string | `""` | Override the name of the deploymen. Defaults to {{ .Chart.Name }}. | +| nameOverride | string | `""` | Override the name of the deployment. Defaults to {{ .Chart.Name }}. | | service.port | int | `10000` | Port to expose on the service. | | service.type | string | `"ClusterIP"` | Service type for the service that points to the main Budibase proxy pod. | | serviceAccount.annotations | object | `{}` | Annotations to add to the service account | diff --git a/charts/budibase/values.yaml b/charts/budibase/values.yaml index 09262df463..19b6c22d6c 100644 --- a/charts/budibase/values.yaml +++ b/charts/budibase/values.yaml @@ -1,6 +1,6 @@ # -- Passed to all pods created by this chart. Should not ordinarily need to be changed. imagePullSecrets: [] -# -- Override the name of the deploymen. Defaults to {{ .Chart.Name }}. +# -- Override the name of the deployment. Defaults to {{ .Chart.Name }}. nameOverride: "" serviceAccount: diff --git a/packages/builder/src/helpers/components.js b/packages/builder/src/helpers/components.js index 4f4f3ed380..a03ebfdfa7 100644 --- a/packages/builder/src/helpers/components.js +++ b/packages/builder/src/helpers/components.js @@ -279,3 +279,11 @@ export const buildContextTreeLookupMap = rootComponent => { }) return map } + +// Get a flat list of ids for all descendants of a component +export const getChildIdsForComponent = component => { + return [ + component._id, + ...(component?._children ?? []).map(getChildIdsForComponent).flat(1), + ] +} diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte index 95e7a66be9..e74a05ff99 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte @@ -10,6 +10,7 @@ navigationStore, selectedScreen, hoverStore, + componentTreeNodesStore, snippets, } from "stores/builder" import ConfirmDialog from "components/common/ConfirmDialog.svelte" @@ -132,6 +133,7 @@ error = event.error || "An unknown error occurred" } else if (type === "select-component" && data.id) { componentStore.select(data.id) + componentTreeNodesStore.makeNodeVisible(data.id) } else if (type === "hover-component") { hoverStore.hover(data.id, false) } else if (type === "update-prop") { diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentKeyHandler.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentKeyHandler.svelte index f6bbac39a5..7e9c113a77 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentKeyHandler.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentKeyHandler.svelte @@ -4,12 +4,12 @@ selectedScreen, componentStore, selectedComponent, + componentTreeNodesStore, } from "stores/builder" - import { findComponent } from "helpers/components" + import { findComponent, getChildIdsForComponent } from "helpers/components" import { goto, isActive } from "@roxi/routify" import { notifications } from "@budibase/bbui" import ConfirmDialog from "components/common/ConfirmDialog.svelte" - import componentTreeNodesStore from "stores/portal/componentTreeNodesStore" let confirmDeleteDialog let confirmEjectDialog @@ -63,38 +63,25 @@ componentStore.selectNext() }, ["ArrowRight"]: component => { - componentTreeNodesStore.expandNode(component._id) + componentTreeNodesStore.expandNodes([component._id]) }, ["ArrowLeft"]: component => { - componentTreeNodesStore.collapseNode(component._id) + // Select the collapsing root component to ensure the currently selected component is not + // hidden in a collapsed node + componentStore.select(component._id) + componentTreeNodesStore.collapseNodes([component._id]) }, ["Ctrl+ArrowRight"]: component => { - componentTreeNodesStore.expandNode(component._id) - - const expandChildren = component => { - const children = component._children ?? [] - - children.forEach(child => { - componentTreeNodesStore.expandNode(child._id) - expandChildren(child) - }) - } - - expandChildren(component) + const childIds = getChildIdsForComponent(component) + componentTreeNodesStore.expandNodes(childIds) }, ["Ctrl+ArrowLeft"]: component => { - componentTreeNodesStore.collapseNode(component._id) + // Select the collapsing root component to ensure the currently selected component is not + // hidden in a collapsed node + componentStore.select(component._id) - const collapseChildren = component => { - const children = component._children ?? [] - - children.forEach(child => { - componentTreeNodesStore.collapseNode(child._id) - collapseChildren(child) - }) - } - - collapseChildren(component) + const childIds = getChildIdsForComponent(component) + componentTreeNodesStore.collapseNodes(childIds) }, ["Escape"]: () => { if ($isActive(`./:componentId/new`)) { 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 f24235ad07..0219dc304d 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 @@ -7,8 +7,8 @@ componentStore, userSelectedResourceMap, selectedComponent, - selectedComponentPath, hoverStore, + componentTreeNodesStore, } from "stores/builder" import { findComponentPath, @@ -17,7 +17,6 @@ } from "helpers/components" import { get } from "svelte/store" import { dndStore } from "./dndStore" - import componentTreeNodesStore from "stores/portal/componentTreeNodesStore" export let components = [] export let level = 0 @@ -64,14 +63,11 @@ } } - const isOpen = (component, selectedComponentPath, openNodes) => { + const isOpen = component => { if (!component?._children?.length) { return false } - if (selectedComponentPath.slice(0, -1).includes(component._id)) { - return true - } - return openNodes[`nodeOpen-${component._id}`] + return componentTreeNodesStore.isNodeExpanded(component._id) } const isChildOfSelectedComponent = component => { @@ -83,6 +79,11 @@ return findComponentPath($selectedComponent, component._id)?.length > 0 } + const handleIconClick = componentId => { + componentStore.select(componentId) + componentTreeNodesStore.toggleNode(componentId) + } + const hover = hoverStore.hover @@ -90,7 +91,7 @@