convert selectedLayout derived store
This commit is contained in:
parent
8047ff99c6
commit
7c36d8dac5
|
@ -1,7 +1,7 @@
|
|||
import { derived, get } from "svelte/store"
|
||||
import { componentStore } from "@/stores/builder"
|
||||
import { API } from "@/api"
|
||||
import { BudiStore } from "../BudiStore"
|
||||
import { BudiStore, DerivedBudiStore } from "../BudiStore"
|
||||
import { Layout } from "@budibase/types"
|
||||
|
||||
interface LayoutState {
|
||||
|
@ -9,6 +9,10 @@ interface LayoutState {
|
|||
selectedLayoutId: string | null
|
||||
}
|
||||
|
||||
interface DerivedLayoutState extends LayoutState {
|
||||
selectedLayout: Layout | null
|
||||
}
|
||||
|
||||
export const INITIAL_LAYOUT_STATE: LayoutState = {
|
||||
layouts: [],
|
||||
selectedLayoutId: null,
|
||||
|
@ -62,10 +66,10 @@ export class LayoutStore extends BudiStore<LayoutState> {
|
|||
}
|
||||
|
||||
async deleteLayout(layout: Layout) {
|
||||
if (!layout?._id) {
|
||||
if (!layout?._id || !layout?._rev) {
|
||||
return
|
||||
}
|
||||
await API.deleteLayout(layout._id, layout._rev!)
|
||||
await API.deleteLayout(layout._id, layout._rev)
|
||||
this.update(state => {
|
||||
state.layouts = state.layouts.filter(x => x._id !== layout._id)
|
||||
return state
|
||||
|
@ -75,6 +79,24 @@ export class LayoutStore extends BudiStore<LayoutState> {
|
|||
|
||||
export const layoutStore = new LayoutStore()
|
||||
|
||||
export const selectedLayout = derived(layoutStore, $store => {
|
||||
return $store.layouts?.find(layout => layout._id === $store.selectedLayoutId)
|
||||
})
|
||||
export class SelectedLayoutStore extends DerivedBudiStore<
|
||||
LayoutState,
|
||||
DerivedLayoutState
|
||||
> {
|
||||
constructor(layoutStore: LayoutStore) {
|
||||
const makeDerivedStore = () => {
|
||||
return derived(layoutStore, $store => {
|
||||
return {
|
||||
...$store,
|
||||
selectedLayout:
|
||||
$store.layouts?.find(
|
||||
layout => layout._id === $store.selectedLayoutId
|
||||
) || null,
|
||||
}
|
||||
})
|
||||
}
|
||||
super(INITIAL_LAYOUT_STATE, makeDerivedStore)
|
||||
}
|
||||
}
|
||||
|
||||
export const selectedLayout = new SelectedLayoutStore(layoutStore)
|
||||
|
|
Loading…
Reference in New Issue