diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 7be4f68f25..87a46e4a91 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -83,19 +83,19 @@ export const getFrontendStore = () => { }, }, screens: { - select: async screenId => { - let promise + select: screenId => { store.update(state => { - const screen = get(allScreens).find(screen => screen._id === screenId) + const screens = get(allScreens) + let selectedScreen = screens.find(screen => screen._id === screenId) + if (!selectedScreen) { + selectedScreen = screens[0] + } state.currentFrontEndType = FrontendTypes.SCREEN - state.currentAssetId = screenId + state.currentAssetId = selectedScreen._id state.currentView = "detail" - - promise = store.actions.screens.regenerateCss(screen) - state.selectedComponentId = screen.props._id + state.selectedComponentId = selectedScreen.props._id return state }) - await promise }, create: async screen => { screen = await store.actions.screens.save(screen) @@ -133,16 +133,6 @@ export const getFrontendStore = () => { }) return screen }, - regenerateCss: async asset => { - const response = await api.post("/api/css/generate", asset) - asset._css = (await response.json())?.css - }, - regenerateCssForCurrentScreen: async () => { - const asset = get(currentAsset) - if (asset) { - await store.actions.screens.regenerateCss(asset) - } - }, delete: async screens => { const screensToDelete = Array.isArray(screens) ? screens : [screens] @@ -176,29 +166,18 @@ export const getFrontendStore = () => { }, }, layouts: { - select: async layoutId => { + select: layoutId => { store.update(state => { const layout = store.actions.layouts.find(layoutId) - state.currentFrontEndType = FrontendTypes.LAYOUT state.currentView = "detail" - state.currentAssetId = layout._id state.selectedComponentId = layout.props._id - return state }) - let cssPromises = [] - cssPromises.push(store.actions.screens.regenerateCssForCurrentScreen()) - - for (let screen of get(allScreens)) { - cssPromises.push(store.actions.screens.regenerateCss(screen)) - } - await Promise.all(cssPromises) }, save: async layout => { const layoutToSave = cloneDeep(layout) - delete layoutToSave._css const response = await api.post(`/api/layouts`, layoutToSave) @@ -368,7 +347,6 @@ export const getFrontendStore = () => { const index = mode === "above" ? targetIndex : targetIndex + 1 parent._children.splice(index, 0, cloneDeep(componentToPaste)) - promises.push(store.actions.screens.regenerateCssForCurrentScreen()) promises.push(store.actions.preview.saveSelected()) store.actions.components.select(componentToPaste) @@ -386,8 +364,6 @@ export const getFrontendStore = () => { } selected._styles[type][name] = value - promises.push(store.actions.screens.regenerateCssForCurrentScreen()) - // save without messing with the store promises.push(store.actions.preview.saveSelected()) return state @@ -472,13 +448,9 @@ export const getFrontendStore = () => { }).props } - // Save layout and regenerate all CSS because otherwise weird things happen + // Save layout nav._children = [...nav._children, newLink] state.currentAssetId = layout._id - promises.push(store.actions.screens.regenerateCss(layout)) - for (let screen of get(allScreens)) { - promises.push(store.actions.screens.regenerateCss(screen)) - } promises.push(store.actions.layouts.save(layout)) } return state diff --git a/packages/builder/src/components/backend/DataTable/Table.svelte b/packages/builder/src/components/backend/DataTable/Table.svelte index 3787c05a1b..e43a4f7408 100644 --- a/packages/builder/src/components/backend/DataTable/Table.svelte +++ b/packages/builder/src/components/backend/DataTable/Table.svelte @@ -56,6 +56,9 @@ } $: { + // Reset selection every time data changes + selectedRows = [] + let result = [] if (allowEditing) { result = [ diff --git a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte index b4ac25bdd5..4699a8e415 100644 --- a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte +++ b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte @@ -6,6 +6,7 @@ import CategoryTab from "./CategoryTab.svelte" import DesignView from "./DesignView.svelte" import SettingsView from "./SettingsView.svelte" + import { setWith } from "lodash" let flattenedPanel = flattenComponents(panelStructure.categories) let categories = [ @@ -69,7 +70,7 @@ ) { selectedAsset.props._instanceName = value } else { - selectedAsset[name] = value + setWith(selectedAsset, name.split("."), value, Object) } return state }) diff --git a/packages/builder/src/components/userInterface/SettingsView.svelte b/packages/builder/src/components/userInterface/SettingsView.svelte index dd4644882c..f90e071b08 100644 --- a/packages/builder/src/components/userInterface/SettingsView.svelte +++ b/packages/builder/src/components/userInterface/SettingsView.svelte @@ -1,4 +1,5 @@