Use patch when deleting components
This commit is contained in:
parent
6368a2aaac
commit
5a12e30f91
1 changed files with 23 additions and 28 deletions
|
@ -431,7 +431,7 @@ export const getFrontendStore = () => {
|
|||
return
|
||||
}
|
||||
|
||||
// Create screen patch function
|
||||
// Patch screen
|
||||
const patch = screen => {
|
||||
// Find the selected component
|
||||
const currentComponent = findComponent(
|
||||
|
@ -492,39 +492,34 @@ export const getFrontendStore = () => {
|
|||
if (!component) {
|
||||
return
|
||||
}
|
||||
const asset = get(currentAsset)
|
||||
if (!asset) {
|
||||
return
|
||||
const state = get(store)
|
||||
let parentId
|
||||
|
||||
// Patch screen
|
||||
const patch = screen => {
|
||||
// Check component exists
|
||||
component = findComponent(screen.props, component._id)
|
||||
if (!component) {
|
||||
return false
|
||||
}
|
||||
|
||||
// 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"
|
||||
// Check component has a valid parent
|
||||
const parent = findComponentParent(screen.props, component._id)
|
||||
if (!parent) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Ensure we aren't deleting something that contains the screen slot
|
||||
const screenslot = findComponentType(
|
||||
component,
|
||||
"@budibase/standard-components/screenslot"
|
||||
)
|
||||
if (screenslot != null) {
|
||||
throw "You can't delete a component that contains the screen slot"
|
||||
}
|
||||
|
||||
const parent = findComponentParent(asset.props, component._id)
|
||||
if (parent) {
|
||||
parentId = parent._id
|
||||
parent._children = parent._children.filter(
|
||||
child => child._id !== component._id
|
||||
)
|
||||
}
|
||||
await store.actions.screens.patch(state.selectedScreenId, patch)
|
||||
|
||||
// Select the deleted component's parent
|
||||
store.update(state => {
|
||||
state.selectedComponentId = parent._id
|
||||
state.selectedComponentId = parentId
|
||||
return state
|
||||
})
|
||||
}
|
||||
await store.actions.preview.saveSelected()
|
||||
},
|
||||
copy: (component, cut = false, selectParent = true) => {
|
||||
const selectedAsset = get(currentAsset)
|
||||
|
|
Loading…
Reference in a new issue