Browse Source

Use patch when deleting components

master
Andrew Kingston 4 years ago
parent
commit
64ca62f8d8
  1. 51
      packages/builder/src/builderStore/store/frontend.js

51
packages/builder/src/builderStore/store/frontend.js

@ -431,7 +431,7 @@ export const getFrontendStore = () => {
return return
} }
// Create screen patch function // Patch screen
const patch = screen => { const patch = screen => {
// Find the selected component // Find the selected component
const currentComponent = findComponent( const currentComponent = findComponent(
@ -492,39 +492,34 @@ export const getFrontendStore = () => {
if (!component) { if (!component) {
return return
} }
const asset = get(currentAsset) const state = get(store)
if (!asset) { let parentId
return
}
// Fetch full definition
component = findComponent(asset.props, component._id)
// Ensure we aren't deleting the screen slot
if (component._component?.endsWith("/screenslot")) {
throw "You can't delete the screen slot"
}
// Ensure we aren't deleting something that contains the screen slot // Patch screen
const screenslot = findComponentType( const patch = screen => {
component, // Check component exists
"@budibase/standard-components/screenslot" component = findComponent(screen.props, component._id)
) if (!component) {
if (screenslot != null) { return false
throw "You can't delete a component that contains the screen slot" }
}
const parent = findComponentParent(asset.props, component._id) // Check component has a valid parent
if (parent) { const parent = findComponentParent(screen.props, component._id)
if (!parent) {
return false
}
parentId = parent._id
parent._children = parent._children.filter( parent._children = parent._children.filter(
child => child._id !== component._id child => child._id !== component._id
) )
store.update(state => {
state.selectedComponentId = parent._id
return state
})
} }
await store.actions.preview.saveSelected() await store.actions.screens.patch(state.selectedScreenId, patch)
// Select the deleted component's parent
store.update(state => {
state.selectedComponentId = parentId
return state
})
}, },
copy: (component, cut = false, selectParent = true) => { copy: (component, cut = false, selectParent = true) => {
const selectedAsset = get(currentAsset) const selectedAsset = get(currentAsset)

Loading…
Cancel
Save