diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js index e93fbe473..153cba784 100644 --- a/packages/builder/src/builderStore/store/backend.js +++ b/packages/builder/src/builderStore/store/backend.js @@ -13,6 +13,8 @@ import { constructHierarchy, templateApi, isIndex, + canDeleteIndex, + canDeleteRecord } from "../../common/core" export const getBackendUiStore = () => { @@ -202,14 +204,27 @@ export const deleteCurrentNode = store => () => { ? state.hierarchy.children.find(node => node !== state.currentNode) : nodeToDelete.parent() - const recordOrIndexKey = hierarchyFunctions.isRecord(nodeToDelete) ? "children" : "indexes"; + const isRecord = hierarchyFunctions.isRecord(nodeToDelete) + + const check = isRecord + ? canDeleteRecord(nodeToDelete) + : canDeleteIndex(nodeToDelete) + + if (!check.canDelete) { + state.errors = check.errors.map(e => ({ error: e })) + return state + } + + const recordOrIndexKey = isRecord ? "children" : "indexes" // remove the selected record or index - nodeToDelete.parent()[recordOrIndexKey] = remove( - nodeToDelete.parent()[recordOrIndexKey], - node => node.nodeId === nodeToDelete.nodeId + const newCollection = remove( + node => node.nodeId === nodeToDelete.nodeId, + nodeToDelete.parent()[recordOrIndexKey] ) + nodeToDelete.parent()[recordOrIndexKey] = newCollection + state.errors = [] saveBackend(state) return state diff --git a/packages/builder/src/common/ErrorsBox.svelte b/packages/builder/src/common/ErrorsBox.svelte index 9ddea77a4..117f3aae5 100644 --- a/packages/builder/src/common/ErrorsBox.svelte +++ b/packages/builder/src/common/ErrorsBox.svelte @@ -5,25 +5,14 @@ {#if hasErrors} -