Reduce state updates when selecting layouts
This commit is contained in:
parent
da41c6d96a
commit
fa42acaaf8
|
@ -331,10 +331,23 @@ export const getFrontendStore = () => {
|
||||||
},
|
},
|
||||||
layouts: {
|
layouts: {
|
||||||
select: layoutId => {
|
select: layoutId => {
|
||||||
|
// Check this layout exists
|
||||||
|
const state = get(store)
|
||||||
|
const layout = store.actions.layouts.find(layoutId)
|
||||||
|
if (!layout) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check layout isn't already selected
|
||||||
|
if (
|
||||||
|
state.selectedLayoutId === layout._id &&
|
||||||
|
state.selectedComponentId === layout.props?._id
|
||||||
|
) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select new layout
|
||||||
store.update(state => {
|
store.update(state => {
|
||||||
const layout =
|
|
||||||
store.actions.layouts.find(layoutId) || get(store).layouts[0]
|
|
||||||
if (!layout) return
|
|
||||||
state.selectedLayoutId = layout._id
|
state.selectedLayoutId = layout._id
|
||||||
state.selectedComponentId = layout.props?._id
|
state.selectedComponentId = layout.props?._id
|
||||||
return state
|
return state
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
indentLevel={0}
|
indentLevel={0}
|
||||||
selected={$store.selectedLayoutId === layout._id}
|
selected={$store.selectedLayoutId === layout._id}
|
||||||
text={layout.name}
|
text={layout.name}
|
||||||
on:click={() => ($store.selectedLayoutId = layout._id)}
|
on:click={() => store.actions.layouts.select(layout._id)}
|
||||||
>
|
>
|
||||||
<LayoutDropdownMenu {layout} />
|
<LayoutDropdownMenu {layout} />
|
||||||
</NavItem>
|
</NavItem>
|
||||||
|
|
Loading…
Reference in New Issue