diff --git a/packages/builder/package.json b/packages/builder/package.json
index 835a9812af..ba1ff617e5 100644
--- a/packages/builder/package.json
+++ b/packages/builder/package.json
@@ -55,7 +55,7 @@
]
},
"dependencies": {
- "@budibase/bbui": "^1.14.0",
+ "@budibase/bbui": "^1.15.0",
"@budibase/client": "^0.0.32",
"@nx-js/compiler-util": "^2.0.0",
"codemirror": "^5.51.0",
diff --git a/packages/builder/rollup.config.js b/packages/builder/rollup.config.js
index 08973e6195..575939ac19 100644
--- a/packages/builder/rollup.config.js
+++ b/packages/builder/rollup.config.js
@@ -185,7 +185,11 @@ export default {
svelte({
// enable run-time checks when not in production
dev: !production,
- include: ["src/**/*.svelte", "node_modules/**/*.svelte"],
+ include: [
+ "src/**/*.svelte",
+ "node_modules/**/*.svelte",
+ "../../../bbui/src/**/*.svelte",
+ ],
// we'll extract any component CSS out into
// a separate file — better for performance
css: css => {
diff --git a/packages/builder/src/builderStore/store/backend.js b/packages/builder/src/builderStore/store/backend.js
index 7f156e8c39..12e94aea60 100644
--- a/packages/builder/src/builderStore/store/backend.js
+++ b/packages/builder/src/builderStore/store/backend.js
@@ -27,9 +27,6 @@ export const getBackendUiStore = () => {
const views = await viewsResponse.json()
store.update(state => {
state.selectedDatabase = db
- if (models && models.length > 0) {
- store.actions.models.select(models[0])
- }
state.models = models
state.views = views
return state
diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js
index 11f2ed365e..a6386c29c2 100644
--- a/packages/builder/src/builderStore/store/index.js
+++ b/packages/builder/src/builderStore/store/index.js
@@ -109,8 +109,8 @@ const setPackage = (store, initial) => async pkg => {
initial.builtins = [getBuiltin("##builtin/screenslot")]
initial.appInstances = pkg.application.instances
initial.appId = pkg.application._id
-
store.set(initial)
+ await backendUiStore.actions.database.select(initial.appInstances[0])
return initial
}
diff --git a/packages/builder/src/components/nav/ModelNavigator/ModelNavigator.svelte b/packages/builder/src/components/nav/ModelNavigator/ModelNavigator.svelte
index 55a6610243..abb1ad7906 100644
--- a/packages/builder/src/components/nav/ModelNavigator/ModelNavigator.svelte
+++ b/packages/builder/src/components/nav/ModelNavigator/ModelNavigator.svelte
@@ -25,7 +25,7 @@
function selectModel(model, fieldId) {
backendUiStore.actions.models.select(model)
-
+ $goto(`./model/${model._id}`)
if (fieldId) {
backendUiStore.update(state => {
state.selectedField = fieldId
diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte
index 6de3fe11c2..fbe9121623 100644
--- a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte
+++ b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte
@@ -24,7 +24,7 @@
const changeScreen = screen => {
store.setCurrentScreen(screen.props._instanceName)
- $goto(`./:page/${screen.title}`)
+ $goto(`./:page/${screen.props._instanceName}`)
}
diff --git a/packages/builder/src/components/userInterface/DesignView.svelte b/packages/builder/src/components/userInterface/DesignView.svelte
index 5cc65ec214..408dc54d06 100644
--- a/packages/builder/src/components/userInterface/DesignView.svelte
+++ b/packages/builder/src/components/userInterface/DesignView.svelte
@@ -11,6 +11,7 @@
let selectedCategory = "normal"
let propGroup = null
+ let currentGroup
const getProperties = name => panelDefinition[name]
@@ -33,6 +34,7 @@
]
$: propertyGroupNames = Object.keys(panelDefinition)
+
@@ -51,7 +53,9 @@
styleCategory={selectedCategory}
{onStyleChanged}
{componentDefinition}
- {componentInstance} />
+ {componentInstance}
+ open={currentGroup === groupName}
+ on:open={() => currentGroup = groupName} />
{/each}
{:else}
diff --git a/packages/builder/src/components/userInterface/PropertyGroup.svelte b/packages/builder/src/components/userInterface/PropertyGroup.svelte
index b181b406a7..511807b2e6 100644
--- a/packages/builder/src/components/userInterface/PropertyGroup.svelte
+++ b/packages/builder/src/components/userInterface/PropertyGroup.svelte
@@ -8,11 +8,12 @@
export let properties = []
export let componentInstance = {}
export let onStyleChanged = () => {}
+ export let open = false
$: style = componentInstance["_styles"][styleCategory] || {}
-
+
{#each properties as props}
() => {
+ const activeTopNav = $layout.children.find(c => $isActive(c.path))
+ if (!activeTopNav) return
+ store.update(state => {
+ if (!state.previousTopNavPath) state.previousTopNavPath = {}
+ state.previousTopNavPath[activeTopNav.path] = window.location.pathname.replace("/_builder", "")
+ $goto(state.previousTopNavPath[path] || path)
+ return state
+ })
+ }
@@ -46,7 +62,7 @@
$goto(path)}>
+ on:click={topItemNavigate(path)}>
{title}
{/each}
diff --git a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/_layout.svelte b/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/_layout.svelte
deleted file mode 100644
index 4fa864ce7a..0000000000
--- a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/_layout.svelte
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/packages/builder/src/pages/[application]/backend/database/_layout.svelte b/packages/builder/src/pages/[application]/backend/database/_layout.svelte
deleted file mode 100644
index 94453e3943..0000000000
--- a/packages/builder/src/pages/[application]/backend/database/_layout.svelte
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
diff --git a/packages/builder/src/pages/[application]/backend/database/index.svelte b/packages/builder/src/pages/[application]/backend/database/index.svelte
deleted file mode 100644
index 09c7c773f8..0000000000
--- a/packages/builder/src/pages/[application]/backend/database/index.svelte
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-Please select a database
diff --git a/packages/builder/src/pages/[application]/backend/index.svelte b/packages/builder/src/pages/[application]/backend/index.svelte
index 82c0f9e069..488c67ff0e 100644
--- a/packages/builder/src/pages/[application]/backend/index.svelte
+++ b/packages/builder/src/pages/[application]/backend/index.svelte
@@ -1,6 +1,6 @@
diff --git a/packages/builder/src/pages/[application]/backend/model/[selectedModel]/_layout.svelte b/packages/builder/src/pages/[application]/backend/model/[selectedModel]/_layout.svelte
new file mode 100644
index 0000000000..a3ce7c6bf9
--- /dev/null
+++ b/packages/builder/src/pages/[application]/backend/model/[selectedModel]/_layout.svelte
@@ -0,0 +1,14 @@
+
+
+
diff --git a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte b/packages/builder/src/pages/[application]/backend/model/[selectedModel]/index.svelte
similarity index 95%
rename from packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte
rename to packages/builder/src/pages/[application]/backend/model/[selectedModel]/index.svelte
index a9f5589caf..232a569caa 100644
--- a/packages/builder/src/pages/[application]/backend/database/[selectedDatabase]/index.svelte
+++ b/packages/builder/src/pages/[application]/backend/model/[selectedModel]/index.svelte
@@ -3,7 +3,7 @@
import { Button } from "@budibase/bbui"
import EmptyModel from "components/nav/ModelNavigator/EmptyModel.svelte"
import ModelDataTable from "components/database/ModelDataTable"
- import { store, backendUiStore } from "builderStore"
+ import { backendUiStore } from "builderStore"
import ActionButton from "components/common/ActionButton.svelte"
import * as api from "components/database/ModelDataTable/api"
import { CreateEditRecordModal } from "components/database/ModelDataTable/modals"
diff --git a/packages/builder/src/pages/[application]/backend/model/_layout.svelte b/packages/builder/src/pages/[application]/backend/model/_layout.svelte
new file mode 100644
index 0000000000..ee17644f3a
--- /dev/null
+++ b/packages/builder/src/pages/[application]/backend/model/_layout.svelte
@@ -0,0 +1,35 @@
+
+
+
+
+
diff --git a/packages/builder/src/pages/[application]/backend/model/index.svelte b/packages/builder/src/pages/[application]/backend/model/index.svelte
new file mode 100644
index 0000000000..15a08b1d09
--- /dev/null
+++ b/packages/builder/src/pages/[application]/backend/model/index.svelte
@@ -0,0 +1,24 @@
+
+
+{#if $backendUiStore.models.length === 0}
+Please create a model
+{:else}
+Please select a model
+{/if}
diff --git a/packages/builder/src/pages/[application]/frontend/[page]/[screen]/_layout.svelte b/packages/builder/src/pages/[application]/frontend/[page]/[screen]/_layout.svelte
index 8dcdc0ed41..f35626a1f5 100644
--- a/packages/builder/src/pages/[application]/frontend/[page]/[screen]/_layout.svelte
+++ b/packages/builder/src/pages/[application]/frontend/[page]/[screen]/_layout.svelte
@@ -14,7 +14,7 @@
if ($leftover) {
// Get the correct screen children.
const screenChildren = $store.pages[$params.page]._screens.find(
- screen => screen.name === $params.screen
+ screen => screen.props._instanceName === $params.screen
).props._children
findComponent(componentIds, screenChildren)
}
diff --git a/packages/client/src/state/stateManager.js b/packages/client/src/state/stateManager.js
index 5c5f198956..ac417f32fa 100644
--- a/packages/client/src/state/stateManager.js
+++ b/packages/client/src/state/stateManager.js
@@ -59,7 +59,7 @@ const _setup = ({ handlerTypes, getCurrentState, bb, store }) => node => {
const propValue = props[propName]
// A little bit of a hack - won't bind if the string doesn't start with {{
- const isBound = typeof propValue === "string" && propValue.startsWith("{{")
+ const isBound = typeof propValue === "string" && propValue.includes("{{")
if (isBound) {
initialProps[propName] = mustache.render(propValue, {