diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js index 261b840577..8bda515fbc 100644 --- a/packages/builder/cypress/support/commands.js +++ b/packages/builder/cypress/support/commands.js @@ -37,9 +37,8 @@ Cypress.Commands.add("createApp", name => { cy.contains("Create app").click() }) .then(() => { - cy.get(".selected > .content", { - timeout: 20000, - }).should("be.visible") + cy.expandBudibaseConnection() + cy.get(".nav-item.selected > .content").should("be.visible") }) }) @@ -83,6 +82,7 @@ Cypress.Commands.add("createTable", tableName => { Cypress.Commands.add("addColumn", (tableName, columnName, type) => { // Select Table + cy.selectTable(tableName) cy.contains(".nav-item", tableName).click() cy.contains("Create column").click() @@ -161,3 +161,15 @@ Cypress.Commands.add("createScreen", (screenName, route) => { cy.get(".spectrum-Button--cta").click() }) }) + +Cypress.Commands.add("expandBudibaseConnection", () => { + if (Cypress.$(".nav-item > .content > .opened").length === 0) { + // expand the Budibase DB connection string + cy.get(".icon.arrow").eq(0).click() + } +}) + +Cypress.Commands.add("selectTable", tableName => { + cy.expandBudibaseConnection() + cy.contains(".nav-item", tableName).click() +}) diff --git a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte index 42ea30dbb0..84c737eb67 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte @@ -9,7 +9,10 @@ import TableNavigator from "components/backend/TableNavigator/TableNavigator.svelte" import ICONS from "./icons" + let openDataSources = [] + function selectDatasource(datasource) { + toggleNode(datasource) datasources.select(datasource._id) $goto(`./datasource/${datasource._id}`) } @@ -19,6 +22,15 @@ $goto(`./datasource/${query.datasourceId}/${query._id}`) } + function toggleNode(datasource) { + const isOpen = openDataSources.includes(datasource._id) + if (isOpen) { + openDataSources = openDataSources.filter(id => datasource._id !== id) + } else { + openDataSources = [...openDataSources, datasource._id] + } + } + onMount(() => { datasources.fetch() queries.fetch() @@ -31,8 +43,11 @@ 0} text={datasource.name} + opened={openDataSources.includes(datasource._id)} selected={$datasources.selected === datasource._id} + withArrow={true} on:click={() => selectDatasource(datasource)} + on:iconClick={() => toggleNode(datasource)} >
- + {#if openDataSources.includes(datasource._id)} + + {/if} {#each $queries.list.filter(query => query.datasourceId === datasource._id) as query} onClickQuery(query)} > diff --git a/packages/builder/src/components/common/NavItem.svelte b/packages/builder/src/components/common/NavItem.svelte index 977369299d..ec7994be84 100644 --- a/packages/builder/src/components/common/NavItem.svelte +++ b/packages/builder/src/components/common/NavItem.svelte @@ -1,5 +1,6 @@
{#if withArrow} -
+
{/if}