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, {