From 5192eefc169d5e6eef2dc17101761f4a0e33f382 Mon Sep 17 00:00:00 2001 From: adrinr Date: Fri, 14 Apr 2023 16:28:22 +0100 Subject: [PATCH 01/72] Remove unnecessary second build in pipeline --- .github/workflows/release-master.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-master.yml b/.github/workflows/release-master.yml index ab0771def5..5d51b080f0 100644 --- a/.github/workflows/release-master.yml +++ b/.github/workflows/release-master.yml @@ -75,7 +75,6 @@ jobs: - name: Build/release Docker images run: | docker login -u $DOCKER_USER -p $DOCKER_PASSWORD - yarn build yarn build:docker env: DOCKER_USER: ${{ secrets.DOCKER_USERNAME }} From 1e13c6562236508bdd6871c8d3b117b47376d5aa Mon Sep 17 00:00:00 2001 From: adrinr Date: Fri, 14 Apr 2023 16:28:34 +0100 Subject: [PATCH 02/72] Add kill-all in dev:built --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e944a5bf5e..29b7c7c723 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "dev": "yarn run kill-all && lerna link && lerna run --stream --parallel dev:builder --concurrency 1 --stream", "dev:noserver": "yarn run kill-builder && lerna link && lerna run --stream dev:stack:up && lerna run --stream --parallel dev:builder --concurrency 1 --ignore @budibase/backend-core --ignore @budibase/server --ignore @budibase/worker", "dev:server": "yarn run kill-server && lerna run --stream --parallel dev:builder --concurrency 1 --scope @budibase/backend-core --scope @budibase/worker --scope @budibase/server", - "dev:built": "cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream --parallel dev:built", + "dev:built": "yarn run kill-all && cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream --parallel dev:built", "test": "lerna run --stream test --stream", "test:pro": "bash scripts/pro/test.sh", "lint:eslint": "eslint packages && eslint qa-core", From e5227febd8b2d6257b4573d8f8bce341982fee77 Mon Sep 17 00:00:00 2001 From: adrinr Date: Mon, 17 Apr 2023 13:53:00 +0100 Subject: [PATCH 03/72] Use version from environment --- packages/backend-core/src/environment.ts | 5 +++++ packages/backend-core/src/events/identification.ts | 4 +--- .../src/events/processors/posthog/PosthogProcessor.ts | 3 +-- packages/backend-core/src/installation.ts | 7 +++---- packages/cli/src/index.ts | 4 ++-- packages/server/src/api/controllers/application.ts | 6 +++--- packages/server/src/api/controllers/dev.ts | 4 ++-- packages/server/src/api/index.ts | 5 ++--- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/backend-core/src/environment.ts b/packages/backend-core/src/environment.ts index 68f056c80c..d4a981b05c 100644 --- a/packages/backend-core/src/environment.ts +++ b/packages/backend-core/src/environment.ts @@ -45,6 +45,10 @@ function httpLogging() { return process.env.HTTP_LOGGING } +function findVersion() { + return "0.0.1" +} + const environment = { isTest, isJest, @@ -122,6 +126,7 @@ const environment = { ENABLE_SSO_MAINTENANCE_MODE: selfHosted ? process.env.ENABLE_SSO_MAINTENANCE_MODE : false, + VERSION: findVersion(), _set(key: any, value: any) { process.env[key] = value // @ts-ignore diff --git a/packages/backend-core/src/events/identification.ts b/packages/backend-core/src/events/identification.ts index 9534fb293d..a995cb7791 100644 --- a/packages/backend-core/src/events/identification.ts +++ b/packages/backend-core/src/events/identification.ts @@ -23,8 +23,6 @@ import * as installation from "../installation" import * as configs from "../configs" import { withCache, TTL, CacheKey } from "../cache/generic" -const pkg = require("../../package.json") - /** * An identity can be: * - account user (Self host) @@ -101,7 +99,7 @@ const identifyInstallationGroup = async ( const id = installId const type = IdentityType.INSTALLATION const hosting = getHostingFromEnv() - const version = pkg.version + const version = env.VERSION const environment = getDeploymentEnvironment() const group: InstallationGroup = { diff --git a/packages/backend-core/src/events/processors/posthog/PosthogProcessor.ts b/packages/backend-core/src/events/processors/posthog/PosthogProcessor.ts index 0dbe70d543..d37b85a9b8 100644 --- a/packages/backend-core/src/events/processors/posthog/PosthogProcessor.ts +++ b/packages/backend-core/src/events/processors/posthog/PosthogProcessor.ts @@ -4,7 +4,6 @@ import { EventProcessor } from "../types" import env from "../../../environment" import * as context from "../../../context" import * as rateLimiting from "./rateLimiting" -const pkg = require("../../../../package.json") const EXCLUDED_EVENTS: Event[] = [ Event.USER_UPDATED, @@ -49,7 +48,7 @@ export default class PosthogProcessor implements EventProcessor { properties = this.clearPIIProperties(properties) - properties.version = pkg.version + properties.version = env.VERSION properties.service = env.SERVICE properties.environment = identity.environment properties.hosting = identity.hosting diff --git a/packages/backend-core/src/installation.ts b/packages/backend-core/src/installation.ts index 64be6f3f43..4e7dc78028 100644 --- a/packages/backend-core/src/installation.ts +++ b/packages/backend-core/src/installation.ts @@ -6,8 +6,7 @@ import { Installation, IdentityType, Database } from "@budibase/types" import * as context from "./context" import semver from "semver" import { bustCache, withCache, TTL, CacheKey } from "./cache/generic" - -const pkg = require("../package.json") +import environment from "./environment" export const getInstall = async (): Promise => { return withCache(CacheKey.INSTALLATION, TTL.ONE_DAY, getInstallFromDB, { @@ -18,7 +17,7 @@ async function createInstallDoc(platformDb: Database) { const install: Installation = { _id: StaticDatabases.PLATFORM_INFO.docs.install, installId: newid(), - version: pkg.version, + version: environment.VERSION, } try { const resp = await platformDb.put(install) @@ -80,7 +79,7 @@ export const checkInstallVersion = async (): Promise => { const install = await getInstall() const currentVersion = install.version - const newVersion = pkg.version + const newVersion = environment.VERSION if (currentVersion !== newVersion) { const isUpgrade = semver.gt(newVersion, currentVersion) diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 77e4d6da8e..ce4babe633 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,17 +1,17 @@ #!/usr/bin/env node import "./prebuilds" import "./environment" +import { env } from "@budibase/backend-core" import { getCommands } from "./options" import { Command } from "commander" import { getHelpDescription } from "./utils" -const json = require("../package.json") // add hosting config async function init() { const program = new Command() .addHelpCommand("help", getHelpDescription("Help with Budibase commands.")) .helpOption(false) - .version(json.version) + .version(env.VERSION) // add commands for (let command of getCommands()) { command.configure(program) diff --git a/packages/server/src/api/controllers/application.ts b/packages/server/src/api/controllers/application.ts index 02404fdd24..ec68ca4c72 100644 --- a/packages/server/src/api/controllers/application.ts +++ b/packages/server/src/api/controllers/application.ts @@ -1,5 +1,4 @@ import env from "../../environment" -import packageJson from "../../../package.json" import { createLinkView, createRoutingView, @@ -24,6 +23,7 @@ import { migrations, objectStore, ErrorCode, + env as envCore, } from "@budibase/backend-core" import { USERS_TABLE_SCHEMA } from "../../constants" import { buildDefaultDocs } from "../../db/defaultData/datasource_bb_default" @@ -264,7 +264,7 @@ async function performAppCreate(ctx: UserCtx) { _rev: undefined, appId, type: "app", - version: packageJson.version, + version: envCore.VERSION, componentLibraries: ["@budibase/standard-components"], name: name, url: url, @@ -433,7 +433,7 @@ export async function updateClient(ctx: UserCtx) { } // Update versions in app package - const updatedToVersion = packageJson.version + const updatedToVersion = envCore.VERSION const appPackageUpdates = { version: updatedToVersion, revertableVersion: currentVersion, diff --git a/packages/server/src/api/controllers/dev.ts b/packages/server/src/api/controllers/dev.ts index 9dbbe90555..e80d9d7ea1 100644 --- a/packages/server/src/api/controllers/dev.ts +++ b/packages/server/src/api/controllers/dev.ts @@ -4,7 +4,7 @@ import { checkSlashesInUrl } from "../../utilities" import { request } from "../../utilities/workerRequests" import { clearLock as redisClearLock } from "../../utilities/redis" import { DocumentType } from "../../db/utils" -import { context } from "@budibase/backend-core" +import { context, env as envCore } from "@budibase/backend-core" import { events, db as dbCore, cache } from "@budibase/backend-core" async function redirect(ctx: any, method: string, path: string = "global") { @@ -121,7 +121,7 @@ export async function revert(ctx: any) { } export async function getBudibaseVersion(ctx: any) { - const version = require("../../../package.json").version + const version = envCore.VERSION ctx.body = { version, } diff --git a/packages/server/src/api/index.ts b/packages/server/src/api/index.ts index 656596a198..4d6026d0a3 100644 --- a/packages/server/src/api/index.ts +++ b/packages/server/src/api/index.ts @@ -1,9 +1,8 @@ import Router from "@koa/router" -import { auth, middleware } from "@budibase/backend-core" +import { auth, middleware, env as envCore } from "@budibase/backend-core" import currentApp from "../middleware/currentapp" import zlib from "zlib" import { mainRoutes, staticRoutes, publicRoutes } from "./routes" -import pkg from "../../package.json" import env from "../environment" import { middleware as pro } from "@budibase/pro" export { shutdown } from "./routes/public" @@ -12,7 +11,7 @@ const compress = require("koa-compress") export const router: Router = new Router() router.get("/health", ctx => (ctx.status = 200)) -router.get("/version", ctx => (ctx.body = pkg.version)) +router.get("/version", ctx => (ctx.body = envCore.VERSION)) router.use(middleware.errorHandling) From 8e95121ac82dee1b2b6bc4f9123fa9614c627e22 Mon Sep 17 00:00:00 2001 From: adrinr Date: Mon, 17 Apr 2023 14:07:49 +0100 Subject: [PATCH 04/72] Implement find version --- packages/backend-core/src/environment.ts | 29 +++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/backend-core/src/environment.ts b/packages/backend-core/src/environment.ts index d4a981b05c..0d413b8fa9 100644 --- a/packages/backend-core/src/environment.ts +++ b/packages/backend-core/src/environment.ts @@ -1,3 +1,5 @@ +import { existsSync, readFileSync } from "fs" + function isTest() { return isCypress() || isJest() } @@ -46,7 +48,32 @@ function httpLogging() { } function findVersion() { - return "0.0.1" + function findFileInAncestors( + fileName: string, + currentDir: string + ): string | null { + const filePath = `${currentDir}/${fileName}` + if (existsSync(filePath)) { + return filePath + } + + const parentDir = `${currentDir}/..` + if (parentDir === currentDir) { + // reached root directory + return null + } + + return findFileInAncestors(fileName, parentDir) + } + + try { + const packageJsonFile = findFileInAncestors("package.json", process.cwd()) + const content = readFileSync(packageJsonFile!, "utf-8") + const version = JSON.parse(content).version + return version + } catch { + throw new Error("Cannot find a valid version in its package.json") + } } const environment = { From eeb0daa98aebb76818caf7a3c9dd101c5733c343 Mon Sep 17 00:00:00 2001 From: adrinr Date: Mon, 17 Apr 2023 14:20:36 +0100 Subject: [PATCH 05/72] Update builds to exclude the package.json --- packages/backend-core/tsconfig.build.json | 10 +++------- packages/cli/tsconfig.json | 19 +++++-------------- packages/server/tsconfig.build.json | 8 +++----- packages/server/tsconfig.json | 2 +- packages/shared-core/tsconfig-base.build.json | 2 +- packages/shared-core/tsconfig-cjs.build.json | 2 +- packages/shared-core/tsconfig.build.json | 2 +- packages/worker/tsconfig.json | 11 +++-------- qa-core/tsconfig.json | 16 +++++----------- 9 files changed, 23 insertions(+), 49 deletions(-) diff --git a/packages/backend-core/tsconfig.build.json b/packages/backend-core/tsconfig.build.json index 12f8255a7c..bfbed31e23 100644 --- a/packages/backend-core/tsconfig.build.json +++ b/packages/backend-core/tsconfig.build.json @@ -10,15 +10,11 @@ "incremental": true, "sourceMap": true, "declaration": true, - "types": [ "node", "jest" ], + "types": ["node", "jest"], "outDir": "dist", "skipLibCheck": true }, - "include": [ - "**/*.js", - "**/*.ts", - "package.json" - ], + "include": ["**/*.js", "**/*.ts"], "exclude": [ "node_modules", "dist", @@ -26,4 +22,4 @@ "**/*.spec.js", "__mocks__" ] -} \ No newline at end of file +} diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index b60cb7eed3..0fa0bd8f5a 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -8,23 +8,14 @@ "paths": { "@budibase/types": ["../types/src"], "@budibase/backend-core": ["../backend-core/src"], - "@budibase/backend-core/*": ["../backend-core/*"], + "@budibase/backend-core/*": ["../backend-core/*"] } }, "ts-node": { "require": ["tsconfig-paths/register"], "swc": true }, - "references": [ - { "path": "../types" }, - { "path": "../backend-core" }, - ], - "include": [ - "src/**/*", - "package.json" - ], - "exclude": [ - "node_modules", - "dist" - ] -} \ No newline at end of file + "references": [{ "path": "../types" }, { "path": "../backend-core" }], + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/server/tsconfig.build.json b/packages/server/tsconfig.build.json index 9289b6f9da..136de776dd 100644 --- a/packages/server/tsconfig.build.json +++ b/packages/server/tsconfig.build.json @@ -8,13 +8,11 @@ "esModuleInterop": true, "resolveJsonModule": true, "incremental": true, - "types": [ "node", "jest" ], - "outDir": "dist", + "types": ["node", "jest"], + "outDir": "dist/src", "skipLibCheck": true }, - "include": [ - "src/**/*" - ], + "include": ["src/**/*"], "exclude": [ "node_modules", "dist", diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index 5f4ee1a701..7b2353d2db 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -23,6 +23,6 @@ { "path": "../shared-core" }, { "path": "../../../budibase-pro/packages/pro" } ], - "include": ["src/**/*", "specs", "package.json"], + "include": ["src/**/*", "specs"], "exclude": ["node_modules", "dist"] } diff --git a/packages/shared-core/tsconfig-base.build.json b/packages/shared-core/tsconfig-base.build.json index 9715eb06cf..6930e3cb99 100644 --- a/packages/shared-core/tsconfig-base.build.json +++ b/packages/shared-core/tsconfig-base.build.json @@ -14,7 +14,7 @@ "outDir": "dist", "skipLibCheck": true }, - "include": ["**/*.js", "**/*.ts", "package.json"], + "include": ["**/*.js", "**/*.ts"], "exclude": [ "node_modules", "dist", diff --git a/packages/shared-core/tsconfig-cjs.build.json b/packages/shared-core/tsconfig-cjs.build.json index 9b479b7b34..45e81e575c 100644 --- a/packages/shared-core/tsconfig-cjs.build.json +++ b/packages/shared-core/tsconfig-cjs.build.json @@ -2,7 +2,7 @@ "extends": "./tsconfig-base.build.json", "compilerOptions": { "module": "commonjs", - "outDir": "dist/cjs", + "outDir": "dist/cjs/src", "target": "es2015" } } diff --git a/packages/shared-core/tsconfig.build.json b/packages/shared-core/tsconfig.build.json index 4d3c9fc2e0..2a00a44dfe 100644 --- a/packages/shared-core/tsconfig.build.json +++ b/packages/shared-core/tsconfig.build.json @@ -2,7 +2,7 @@ "extends": "./tsconfig-base.build.json", "compilerOptions": { "module": "esnext", - "outDir": "dist/mjs", + "outDir": "dist/mjs/src", "target": "esnext" } } diff --git a/packages/worker/tsconfig.json b/packages/worker/tsconfig.json index 3c8500d248..0a5063574a 100644 --- a/packages/worker/tsconfig.json +++ b/packages/worker/tsconfig.json @@ -21,11 +21,6 @@ { "path": "../backend-core" }, { "path": "../../../budibase-pro/packages/pro" } ], - "include": [ - "src/**/*", - "package.json" - ], - "exclude": [ - "dist" - ] -} \ No newline at end of file + "include": ["src/**/*"], + "exclude": ["dist"] +} diff --git a/qa-core/tsconfig.json b/qa-core/tsconfig.json index 8cd0c30d46..227f60bd6f 100644 --- a/qa-core/tsconfig.json +++ b/qa-core/tsconfig.json @@ -16,7 +16,7 @@ "@budibase/types": ["../packages/types/src"], "@budibase/backend-core": ["../packages/backend-core/src"], "@budibase/backend-core/*": ["../packages/backend-core/*"], - "@budibase/server/*": ["../packages/server/src/*"], + "@budibase/server/*": ["../packages/server/src/*"] } }, "ts-node": { @@ -24,14 +24,8 @@ }, "references": [ { "path": "../packages/types" }, - { "path": "../packages/backend-core" }, + { "path": "../packages/backend-core" } ], - "include": [ - "src/**/*", - "package.json" - ], - "exclude": [ - "node_modules", - "dist" - ] -} \ No newline at end of file + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} From 401d64b0745fd371b8df8c024ef0d002684dac1b Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 19 Apr 2023 16:16:22 +0100 Subject: [PATCH 06/72] Fixing issue with SQL tables and using formulas that contain relationships as display columns. Also cleaning up imports in ExternalRequests a bit. --- .../api/controllers/row/ExternalRequest.ts | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/server/src/api/controllers/row/ExternalRequest.ts b/packages/server/src/api/controllers/row/ExternalRequest.ts index 44b38bbeac..b38d6bc227 100644 --- a/packages/server/src/api/controllers/row/ExternalRequest.ts +++ b/packages/server/src/api/controllers/row/ExternalRequest.ts @@ -1,31 +1,32 @@ import { + Datasource, + FieldSchema, + FieldType, FilterType, IncludeRelationship, Operation, PaginationJson, RelationshipsJson, + RelationshipTypes, + Row, SearchFilters, SortJson, - Datasource, - FieldSchema, - Row, - Table, - RelationshipTypes, - FieldType, SortType, + Table, } from "@budibase/types" import { + breakExternalTableId, breakRowIdField, + convertRowId, generateRowIdField, isRowId, - convertRowId, + isSQL, } from "../../../integrations/utils" import { getDatasourceAndQuery } from "./utils" import { FieldTypes } from "../../../constants" -import { breakExternalTableId, isSQL } from "../../../integrations/utils" import { processObjectSync } from "@budibase/string-templates" import { cloneDeep } from "lodash/fp" -import { processFormulas, processDates } from "../../../utilities/rowProcessor" +import { processDates, processFormulas } from "../../../utilities/rowProcessor" import { db as dbCore } from "@budibase/backend-core" import sdk from "../../../sdk" @@ -382,10 +383,17 @@ export class ExternalRequest { } const display = linkedTable.primaryDisplay for (let key of Object.keys(row[relationship.column])) { - const related: Row = row[relationship.column][key] + let relatedRow: Row = row[relationship.column][key] + // add this row as context for the relationship + for (let col of Object.values(linkedTable.schema)) { + if (col.type === FieldType.LINK && col.tableId === table._id) { + relatedRow[col.name] = [row] + } + } + relatedRow = processFormulas(linkedTable, relatedRow) row[relationship.column][key] = { - primaryDisplay: display ? related[display] : undefined, - _id: related._id, + primaryDisplay: display ? relatedRow[display] : undefined, + _id: relatedRow._id, } } } From 1aca5d6407b2264e5c373fb689c710afe6f8bf07 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 19 Apr 2023 17:17:37 +0100 Subject: [PATCH 07/72] Fixing an issue with creating relationships between existing tables, not using the correct type for the primary key in the foreign key relationship. --- .../api/controllers/row/ExternalRequest.ts | 3 ++- .../server/src/integrations/base/sqlTable.ts | 11 +++++++++-- .../src/utilities/rowProcessor/utils.ts | 19 +++++++++---------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/server/src/api/controllers/row/ExternalRequest.ts b/packages/server/src/api/controllers/row/ExternalRequest.ts index b38d6bc227..b13ec22cfd 100644 --- a/packages/server/src/api/controllers/row/ExternalRequest.ts +++ b/packages/server/src/api/controllers/row/ExternalRequest.ts @@ -391,8 +391,9 @@ export class ExternalRequest { } } relatedRow = processFormulas(linkedTable, relatedRow) + const relatedDisplay = display ? relatedRow[display] : undefined row[relationship.column][key] = { - primaryDisplay: display ? relatedRow[display] : undefined, + primaryDisplay: relatedDisplay || "Invalid display column", _id: relatedRow._id, } } diff --git a/packages/server/src/integrations/base/sqlTable.ts b/packages/server/src/integrations/base/sqlTable.ts index 58b2b7a3d1..3bdfb76c02 100644 --- a/packages/server/src/integrations/base/sqlTable.ts +++ b/packages/server/src/integrations/base/sqlTable.ts @@ -79,10 +79,17 @@ function generateSchema( if (!relatedTable) { throw "Referenced table doesn't exist" } - schema.integer(column.foreignKey).unsigned() + const relatedPrimary = relatedTable.primary[0] + const externalType = relatedTable.schema[relatedPrimary].externalType + if (externalType) { + schema.specificType(column.foreignKey, externalType) + } else { + schema.integer(column.foreignKey).unsigned() + } + schema .foreign(column.foreignKey) - .references(`${tableName}.${relatedTable.primary[0]}`) + .references(`${tableName}.${relatedPrimary}`) } break } diff --git a/packages/server/src/utilities/rowProcessor/utils.ts b/packages/server/src/utilities/rowProcessor/utils.ts index c22bc59419..66ca969663 100644 --- a/packages/server/src/utilities/rowProcessor/utils.ts +++ b/packages/server/src/utilities/rowProcessor/utils.ts @@ -1,11 +1,11 @@ import { - FieldTypes, - FormulaTypes, AutoFieldDefaultNames, AutoFieldSubTypes, + FieldTypes, + FormulaTypes, } from "../../constants" import { processStringSync } from "@budibase/string-templates" -import { FieldSchema, Table, Row } from "@budibase/types" +import { FieldSchema, FieldType, Row, Table } from "@budibase/types" /** * If the subtype has been lost for any reason this works out what @@ -50,6 +50,7 @@ export function processFormulas( const isStatic = schema.formulaType === FormulaTypes.STATIC if ( schema.type !== FieldTypes.FORMULA || + schema.formula == null || (dynamic && isStatic) || (!dynamic && !isStatic) ) { @@ -57,13 +58,11 @@ export function processFormulas( } // iterate through rows and process formula for (let i = 0; i < rowArray.length; i++) { - if (schema.formula) { - let row = rowArray[i] - let context = contextRows ? contextRows[i] : row - rowArray[i] = { - ...row, - [column]: processStringSync(schema.formula, context), - } + let row = rowArray[i] + let context = contextRows ? contextRows[i] : row + rowArray[i] = { + ...row, + [column]: processStringSync(schema.formula, context), } } } From 46b1180cd2927a1d046621245d5a0e7a73b05c34 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 20 Apr 2023 11:06:16 +0100 Subject: [PATCH 08/72] Fixing test case. --- packages/server/src/integration-test/postgres.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/server/src/integration-test/postgres.spec.ts b/packages/server/src/integration-test/postgres.spec.ts index fab1fcf618..36285e2831 100644 --- a/packages/server/src/integration-test/postgres.spec.ts +++ b/packages/server/src/integration-test/postgres.spec.ts @@ -921,6 +921,7 @@ describe("row api - postgres", () => { [m2mFieldName]: [ { _id: row._id, + primaryDisplay: "Invalid display column", }, ], }) @@ -929,6 +930,7 @@ describe("row api - postgres", () => { [m2mFieldName]: [ { _id: row._id, + primaryDisplay: "Invalid display column", }, ], }) From eabd57d20b1e2812c577c7f35fb725e09d275648 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Fri, 21 Apr 2023 10:26:55 +0100 Subject: [PATCH 09/72] Add FAB for adding rows and inline row creation --- .../grid/controls/FloatingAddRowButton.svelte | 28 +++++++++++++++++++ .../src/components/grid/layout/Grid.svelte | 6 ++++ .../components/grid/layout/NewRowTop.svelte | 5 ++-- 3 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 packages/frontend-core/src/components/grid/controls/FloatingAddRowButton.svelte diff --git a/packages/frontend-core/src/components/grid/controls/FloatingAddRowButton.svelte b/packages/frontend-core/src/components/grid/controls/FloatingAddRowButton.svelte new file mode 100644 index 0000000000..3353b55b57 --- /dev/null +++ b/packages/frontend-core/src/components/grid/controls/FloatingAddRowButton.svelte @@ -0,0 +1,28 @@ + + +
dispatch("add-row-inline")}> + +
+ + diff --git a/packages/frontend-core/src/components/grid/layout/Grid.svelte b/packages/frontend-core/src/components/grid/layout/Grid.svelte index e6bc3e05e4..0070ba2997 100644 --- a/packages/frontend-core/src/components/grid/layout/Grid.svelte +++ b/packages/frontend-core/src/components/grid/layout/Grid.svelte @@ -22,6 +22,8 @@ import HideColumnsButton from "../controls/HideColumnsButton.svelte" import AddRowButton from "../controls/AddRowButton.svelte" import RowHeightButton from "../controls/RowHeightButton.svelte" + import NewRowTop from "./NewRowTop.svelte" + import FloatingAddRowButton from "../controls/FloatingAddRowButton.svelte" import { MaxCellRenderHeight, MaxCellRenderWidthOverflow, @@ -128,9 +130,13 @@
+ + {#if allowAddRows} + + {/if}
diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index 5b92bc30fc..fcb8aca059 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -89,7 +89,7 @@ style="flex: 0 0 {width}px" class:scrolled={$scrollLeft > 0} > - +
1
{#if $config.allowExpandRows} @@ -106,11 +106,10 @@ {@const cellId = `new-${$stickyColumn.name}`} Date: Fri, 21 Apr 2023 10:27:33 +0100 Subject: [PATCH 10/72] Remove background colour from header cell for sorted column --- .../frontend-core/src/components/grid/cells/HeaderCell.svelte | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte b/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte index 890f314e2e..f712d5b89f 100644 --- a/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte @@ -100,7 +100,6 @@ style="flex: 0 0 {column.width}px;" bind:this={anchor} class:disabled={$isReordering || $isResizing} - class:sorted={sortedBy} > Date: Fri, 21 Apr 2023 10:38:07 +0100 Subject: [PATCH 11/72] Make delete rows button more prominent --- .../grid/controls/DeleteButton.svelte | 30 +++++++------------ .../src/components/grid/stores/ui.js | 6 +++- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte b/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte index 9380228f2c..53e0c46883 100644 --- a/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte @@ -1,10 +1,5 @@ - -
dispatch("add-row-inline")}> - -
- - diff --git a/packages/frontend-core/src/components/grid/layout/Grid.svelte b/packages/frontend-core/src/components/grid/layout/Grid.svelte index 0070ba2997..4d66acdd20 100644 --- a/packages/frontend-core/src/components/grid/layout/Grid.svelte +++ b/packages/frontend-core/src/components/grid/layout/Grid.svelte @@ -23,7 +23,6 @@ import AddRowButton from "../controls/AddRowButton.svelte" import RowHeightButton from "../controls/RowHeightButton.svelte" import NewRowTop from "./NewRowTop.svelte" - import FloatingAddRowButton from "../controls/FloatingAddRowButton.svelte" import { MaxCellRenderHeight, MaxCellRenderWidthOverflow, @@ -129,14 +128,11 @@
+
- - {#if allowAddRows} - - {/if}
diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index fcb8aca059..67ec552d4a 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -4,7 +4,7 @@ import { Icon, Button } from "@budibase/bbui" import GridScrollWrapper from "./GridScrollWrapper.svelte" import DataCell from "../cells/DataCell.svelte" - import { fly } from "svelte/transition" + import { fade } from "svelte/transition" import { GutterWidth } from "../lib/constants" const { @@ -14,11 +14,11 @@ scroll, config, dispatch, - visibleColumns, rows, showHScrollbar, tableId, subscribe, + renderedColumns, scrollLeft, } = getContext("grid") @@ -26,7 +26,7 @@ let newRow = {} let touched = false - $: firstColumn = $stickyColumn || $visibleColumns[0] + $: firstColumn = $stickyColumn || $renderedColumns[0] $: rowHovered = $hoveredRowId === "new" $: rowFocused = $focusedCellId?.startsWith("new-") $: width = GutterWidth + ($stickyColumn?.width || 0) @@ -52,11 +52,14 @@ const cancel = () => { isAdding = false + $focusedCellId = null + $hoveredRowId = null } const startAdding = () => { newRow = {} isAdding = true + $hoveredRowId = "new" if (firstColumn) { $focusedCellId = `new-${firstColumn.name}` } @@ -72,74 +75,78 @@ dispatch("add-row") } + const handleKeyPress = e => { + if (!isAdding) { + return + } + if (e.key === "Escape") { + cancel() + } + } + onMount(() => subscribe("add-row-inline", startAdding)) + onMount(() => { + document.addEventListener("keydown", handleKeyPress) + return () => { + document.removeEventListener("keydown", handleKeyPress) + } + }) {#if isAdding} -
-
-
($hoveredRowId = "new")} - on:mouseleave={() => ($hoveredRowId = null)} - > -
0} - > - -
-
1
- {#if $config.allowExpandRows} - - {/if} -
-
- {#if $stickyColumn} - {@const cellId = `new-${$stickyColumn.name}`} - +
+
0} + > + +
+
1
+ {#if $config.allowExpandRows} + {/if}
- - -
- {#each $visibleColumns as column} - {@const cellId = `new-${column.name}`} - {#key cellId} - - {/key} - {/each} -
-
-
+ + {#if $stickyColumn} + {@const cellId = `new-${$stickyColumn.name}`} + + {/if}
-
+
+ +
+ {#each $renderedColumns as column} + {@const cellId = `new-${column.name}`} + {#key cellId} + + {/key} + {/each} +
+
+
+
@@ -148,17 +155,22 @@ diff --git a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte index 4e82438b07..a5cc434e48 100644 --- a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte +++ b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte @@ -10,6 +10,7 @@ stickyColumn, focusedCellAPI, clipboard, + dispatch, } = getContext("grid") // Global key listener which intercepts all key events @@ -19,6 +20,9 @@ if (e.key === "Tab") { e.preventDefault() focusFirstCell() + } else if (e.key === "Enter" && (e.ctrlKey || e.metaKey)) { + e.preventDefault() + dispatch("add-row-inline") } return } @@ -58,6 +62,8 @@ clipboard.actions.paste() } break + case "Enter": + dispatch("add-row-inline") } } else { switch (e.key) { From 49f5aea19cc4dd55fd6a46acade6ec56cfcd421d Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Fri, 21 Apr 2023 18:43:01 +0100 Subject: [PATCH 20/72] Update new row top component to fix multiple z-index issues --- .../components/grid/layout/NewRowTop.svelte | 103 ++++++++++-------- 1 file changed, 55 insertions(+), 48 deletions(-) diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index 67ec552d4a..490bfddd8f 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -1,6 +1,6 @@ + + +
($hoveredRowId = rowId)} + on:mouseleave={() => ($hoveredRowId = null)} +> +
+ +
+
+ +
+ {#if $config.allowExpandRows} +
+ +
+ {/if} +
+
+ {#if $stickyColumn} + {@const cellId = `${rowId}-${$stickyColumn.name}`} + + {/if} +
+ +
+ {#each $renderedColumns as column} + {@const cellId = `${rowId}-${column.name}`} + {#key cellId} + + {/key} + {/each} +
+
+ {#if Object.keys(newRow || {}).length > 1} +
+ + +
+ {/if} +
+ + diff --git a/packages/frontend-core/src/components/grid/layout/NewRowBottom.svelte b/packages/frontend-core/src/components/grid/layout/NewRowBottom.svelte new file mode 100644 index 0000000000..709b7674c8 --- /dev/null +++ b/packages/frontend-core/src/components/grid/layout/NewRowBottom.svelte @@ -0,0 +1,25 @@ + + +
+ +
+ + diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index 18220c75d3..c2b9e6da61 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -1,6 +1,6 @@ @@ -153,7 +160,7 @@
- +
{/if} diff --git a/packages/frontend-core/src/components/grid/stores/ui.js b/packages/frontend-core/src/components/grid/stores/ui.js index cb7504b32e..48cb382dbb 100644 --- a/packages/frontend-core/src/components/grid/stores/ui.js +++ b/packages/frontend-core/src/components/grid/stores/ui.js @@ -50,14 +50,14 @@ export const deriveStores = context => { ([$focusedCellId, $rowLookupMap, $enrichedRows]) => { const rowId = $focusedCellId?.split("-")[0] - if (rowId === "new") { - // Edge case for new row + // Edge case for new rows (top and bottom row ID components have unique IDs) + if (rowId?.startsWith("new")) { return { _id: rowId } - } else { - // All normal rows - const index = $rowLookupMap[rowId] - return $enrichedRows[index] } + + // All normal rows + const index = $rowLookupMap[rowId] + return $enrichedRows[index] }, null ) From e54ea6661fcd248834bb83b551b4a70258d0f486 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Sat, 22 Apr 2023 16:40:00 +0100 Subject: [PATCH 23/72] Improve keyboard shortcuts for adding rows --- .../grid/cells/AttachmentCell.svelte | 1 + .../src/components/grid/cells/DataCell.svelte | 1 + .../components/grid/cells/LongFormCell.svelte | 1 + .../components/grid/cells/OptionsCell.svelte | 1 + .../grid/cells/RelationshipCell.svelte | 1 + .../src/components/grid/cells/TextCell.svelte | 1 + .../components/grid/layout/NewRowTop.svelte | 21 +++++++++++-------- .../grid/overlays/KeyboardManager.svelte | 5 ++++- 8 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packages/frontend-core/src/components/grid/cells/AttachmentCell.svelte b/packages/frontend-core/src/components/grid/cells/AttachmentCell.svelte index 2eb191e113..4d830723c2 100644 --- a/packages/frontend-core/src/components/grid/cells/AttachmentCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/AttachmentCell.svelte @@ -72,6 +72,7 @@ api = { focus: () => open(), blur: () => close(), + isActive: () => isOpen, onKeyDown, } }) diff --git a/packages/frontend-core/src/components/grid/cells/DataCell.svelte b/packages/frontend-core/src/components/grid/cells/DataCell.svelte index 8ba25ef31b..f205c0a74a 100644 --- a/packages/frontend-core/src/components/grid/cells/DataCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/DataCell.svelte @@ -50,6 +50,7 @@ const cellAPI = { focus: () => api?.focus(), blur: () => api?.blur(), + isActive: () => api?.isActive?.() ?? false, onKeyDown: (...params) => api?.onKeyDown(...params), isReadonly: () => readonly, getType: () => column.schema.type, diff --git a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte index f41e206d1d..891a19573a 100644 --- a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte @@ -43,6 +43,7 @@ api = { focus: () => open(), blur: () => close(), + isActive: () => isOpen, onKeyDown, } }) diff --git a/packages/frontend-core/src/components/grid/cells/OptionsCell.svelte b/packages/frontend-core/src/components/grid/cells/OptionsCell.svelte index 37c37fcd70..f3b6b9b59d 100644 --- a/packages/frontend-core/src/components/grid/cells/OptionsCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/OptionsCell.svelte @@ -73,6 +73,7 @@ api = { focus: open, blur: close, + isActive: () => isOpen, onKeyDown, } }) diff --git a/packages/frontend-core/src/components/grid/cells/RelationshipCell.svelte b/packages/frontend-core/src/components/grid/cells/RelationshipCell.svelte index 08dabe0fec..90182e9983 100644 --- a/packages/frontend-core/src/components/grid/cells/RelationshipCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/RelationshipCell.svelte @@ -235,6 +235,7 @@ api = { focus: open, blur: close, + isActive: () => isOpen, onKeyDown, } }) diff --git a/packages/frontend-core/src/components/grid/cells/TextCell.svelte b/packages/frontend-core/src/components/grid/cells/TextCell.svelte index 73fb83dfbf..533b030b5c 100644 --- a/packages/frontend-core/src/components/grid/cells/TextCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/TextCell.svelte @@ -33,6 +33,7 @@ api = { focus: () => input?.focus(), blur: () => input?.blur(), + isActive: () => active, onKeyDown, } }) diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index c2b9e6da61..8643ca6911 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -31,6 +31,10 @@ $: $tableId, (isAdding = false) const addRow = async () => { + // Blur the active cell and tick to let final value updates propagate + $focusedCellAPI?.blur() + await tick() + // Create row const savedRow = await rows.actions.addRow(newRow, 0) if (savedRow) { @@ -65,12 +69,6 @@ $hoveredRowId = rowId if (firstColumn) { $focusedCellId = `${rowId}-${firstColumn.name}` - - // Also focus the cell if it is a text-like cell - if (["string", "number"].includes(firstColumn.schema.type)) { - await tick() - $focusedCellAPI?.focus() - } } } @@ -89,8 +87,11 @@ return } if (e.key === "Escape") { - e.preventDefault() - clear() + // Only close the new row component if we aren't actively inside a cell + if (!$focusedCellAPI?.isActive()) { + e.preventDefault() + clear() + } } else if (e.key === "Enter" && (e.metaKey || e.ctrlKey)) { e.preventDefault() addRow() @@ -119,7 +120,9 @@ >
-
1
+
+ +
{#if $config.allowExpandRows} {/if} diff --git a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte index a5cc434e48..4da5cd2c0d 100644 --- a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte +++ b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte @@ -30,7 +30,10 @@ // Always intercept certain key presses const api = $focusedCellAPI if (e.key === "Escape") { - api?.blur?.() + // By setting a tiny timeout here we can ensure that other listeners + // which depend on being able to read cell state on an escape keypress + // get a chance to observe the true state before we blur + setTimeout(api?.blur, 10) } else if (e.key === "Tab") { api?.blur?.() changeFocusedColumn(1) From 0710a0c9518b0a8ca325b784727ab80f8efa3f80 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Sat, 22 Apr 2023 16:41:10 +0100 Subject: [PATCH 24/72] When focusing textarea cells, ensure the cursor is set to the end rather than the start --- .../frontend-core/src/components/grid/cells/LongFormCell.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte index 891a19573a..28d3f8766b 100644 --- a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte @@ -31,7 +31,6 @@ isOpen = true await tick() textarea.focus() - textarea.setSelectionRange(0, 0) } const close = () => { From ace9bca81db9ae84c7f932b2b2df165cad248a3a Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Sat, 22 Apr 2023 16:42:26 +0100 Subject: [PATCH 25/72] Update textarea focus again --- .../src/components/grid/cells/LongFormCell.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte index 28d3f8766b..00e12dc6a3 100644 --- a/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/LongFormCell.svelte @@ -31,6 +31,9 @@ isOpen = true await tick() textarea.focus() + if (value?.length > 100) { + textarea.setSelectionRange(0, 0) + } } const close = () => { From 0493fb5c03bf2954ddc5de2b760aac30bb5f3be3 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Sat, 22 Apr 2023 17:03:56 +0100 Subject: [PATCH 26/72] Add space keybind for selecting rows and allow bulk deleting of rows via keypress when rows are selected --- .../grid/controls/DeleteButton.svelte | 6 +++-- .../components/grid/layout/NewRowTop.svelte | 10 +++---- .../src/components/grid/lib/constants.js | 1 + .../src/components/grid/lib/events.js | 3 +++ .../grid/overlays/KeyboardManager.svelte | 25 ++++++++++++++++- .../src/components/grid/stores/rows.js | 3 ++- .../src/components/grid/stores/ui.js | 27 ++++++++++--------- 7 files changed, 52 insertions(+), 23 deletions(-) diff --git a/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte b/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte index 53e0c46883..8ca5f0920d 100644 --- a/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/DeleteButton.svelte @@ -1,8 +1,8 @@ {#if selectedRowCount} diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index 8643ca6911..4abbf41d24 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -6,6 +6,7 @@ import DataCell from "../cells/DataCell.svelte" import { fade } from "svelte/transition" import { GutterWidth } from "../lib/constants" + import { NewRowID } from "../lib/constants" const { hoveredRowId, @@ -21,10 +22,8 @@ renderedColumns, } = getContext("grid") - const rowId = "new" let isAdding = false let newRow = {} - let touched = false $: firstColumn = $stickyColumn || $renderedColumns[0] $: width = GutterWidth + ($stickyColumn?.width || 0) @@ -66,19 +65,18 @@ document.addEventListener("keydown", handleKeyPress) newRow = {} isAdding = true - $hoveredRowId = rowId + $hoveredRowId = NewRowID if (firstColumn) { - $focusedCellId = `${rowId}-${firstColumn.name}` + $focusedCellId = `${NewRowID}-${firstColumn.name}` } } const updateValue = (rowId, columnName, val) => { - touched = true newRow[columnName] = val } const addViaModal = () => { - isAdding = false + clear() dispatch("add-row") } diff --git a/packages/frontend-core/src/components/grid/lib/constants.js b/packages/frontend-core/src/components/grid/lib/constants.js index e5427106a7..2d059343c1 100644 --- a/packages/frontend-core/src/components/grid/lib/constants.js +++ b/packages/frontend-core/src/components/grid/lib/constants.js @@ -9,3 +9,4 @@ export const SmallRowHeight = 36 export const MediumRowHeight = 64 export const LargeRowHeight = 92 export const DefaultRowHeight = SmallRowHeight +export const NewRowID = "new" diff --git a/packages/frontend-core/src/components/grid/lib/events.js b/packages/frontend-core/src/components/grid/lib/events.js index 1c486858b2..950ed70332 100644 --- a/packages/frontend-core/src/components/grid/lib/events.js +++ b/packages/frontend-core/src/components/grid/lib/events.js @@ -21,7 +21,10 @@ export const createEventManagers = () => { // Return unsubscribe function return () => { + console.log("unsub", event) + console.log(subscribers[event].length) subscribers[event] = subscribers[event].filter(cb => cb !== callback) + console.log(subscribers[event].length) } } diff --git a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte index 4da5cd2c0d..eb034edf2d 100644 --- a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte +++ b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte @@ -1,6 +1,7 @@ + +
+ (open = !open)} + selected={open} + > + Column width + +
+ + +
+ {#each sizeOptions as option} + changeColumnWidth(option.size)} + selected={option.selected} + > + {option.label} + + {/each} + {#if custom} + Custom + {/if} +
+
+ + diff --git a/packages/frontend-core/src/components/grid/layout/Grid.svelte b/packages/frontend-core/src/components/grid/layout/Grid.svelte index e6f9baa33f..97b4b302bb 100644 --- a/packages/frontend-core/src/components/grid/layout/Grid.svelte +++ b/packages/frontend-core/src/components/grid/layout/Grid.svelte @@ -22,6 +22,7 @@ import HideColumnsButton from "../controls/HideColumnsButton.svelte" import AddRowButton from "../controls/AddRowButton.svelte" import RowHeightButton from "../controls/RowHeightButton.svelte" + import ColumnWidthButton from "../controls/ColumnWidthButton.svelte" import NewRowTop from "./NewRowTop.svelte" import { MaxCellRenderHeight, @@ -29,7 +30,6 @@ GutterWidth, DefaultRowHeight, } from "../lib/constants" - import NewRowBottom from "./NewRowBottom.svelte" export let API = null export let tableId = null @@ -112,6 +112,7 @@ + diff --git a/packages/frontend-core/src/components/grid/lib/events.js b/packages/frontend-core/src/components/grid/lib/events.js index 950ed70332..1c486858b2 100644 --- a/packages/frontend-core/src/components/grid/lib/events.js +++ b/packages/frontend-core/src/components/grid/lib/events.js @@ -21,10 +21,7 @@ export const createEventManagers = () => { // Return unsubscribe function return () => { - console.log("unsub", event) - console.log(subscribers[event].length) subscribers[event] = subscribers[event].filter(cb => cb !== callback) - console.log(subscribers[event].length) } } From 2972af6711a58ee79e5d59fa72db62d17d0e47ad Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Sun, 23 Apr 2023 12:18:43 +0100 Subject: [PATCH 28/72] Update column width button sizes --- .../src/components/grid/controls/ColumnWidthButton.svelte | 4 ++-- packages/frontend-core/src/components/grid/lib/constants.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte b/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte index c799bd4602..d5f82957f4 100644 --- a/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte @@ -1,10 +1,10 @@
@@ -14,6 +23,13 @@ {/each}
+
dispatch("add-column")} + > + +
diff --git a/packages/frontend-core/src/components/grid/stores/viewport.js b/packages/frontend-core/src/components/grid/stores/viewport.js index 9da3523480..5a2e22395b 100644 --- a/packages/frontend-core/src/components/grid/stores/viewport.js +++ b/packages/frontend-core/src/components/grid/stores/viewport.js @@ -45,11 +45,16 @@ export const deriveStores = context => { ) // Derive visible columns + const scrollLeftRounded = derived(scrollLeft, $scrollLeft => { + const interval = 50 + return Math.round($scrollLeft / interval) * interval + }) const renderedColumns = derived( - [visibleColumns, scrollLeft, width], - ([$visibleColumns, $scrollLeft, $width]) => { + [visibleColumns, scrollLeftRounded, width], + ([$visibleColumns, $scrollLeft, $width], set) => { if (!$visibleColumns.length) { - return [] + set([]) + return } let startColIdx = 0 let rightEdge = $visibleColumns[0].width @@ -69,16 +74,14 @@ export const deriveStores = context => { leftEdge += $visibleColumns[endColIdx].width endColIdx++ } - const nextRenderedColumns = $visibleColumns.slice(startColIdx, endColIdx) + const next = $visibleColumns.slice(startColIdx, endColIdx) - // Cautiously shrink the number of rendered columns. - // This is to avoid rapidly shrinking and growing the visible column count - // which results in remounting cells - const currentCount = get(renderedColumns).length - if (currentCount === nextRenderedColumns.length + 1) { - return $visibleColumns.slice(startColIdx, endColIdx + 1) - } else { - return nextRenderedColumns + // Only update if the column selection is actually different + const current = get(renderedColumns) + const currentKey = current.map(col => col.width).join("-") + const nextKey = next.map(col => col.width).join("-") + if (currentKey !== nextKey) { + set(next) } }, [] From 3bbf055401bf8b0dad01791cd0d64685e736ab7c Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 24 Apr 2023 08:09:18 +0100 Subject: [PATCH 31/72] Improve horizontal scrolling performance --- .../src/components/grid/layout/HeaderRow.svelte | 1 + .../src/components/grid/stores/viewport.js | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/frontend-core/src/components/grid/layout/HeaderRow.svelte b/packages/frontend-core/src/components/grid/layout/HeaderRow.svelte index 4dc7295132..2ec186a4d6 100644 --- a/packages/frontend-core/src/components/grid/layout/HeaderRow.svelte +++ b/packages/frontend-core/src/components/grid/layout/HeaderRow.svelte @@ -52,6 +52,7 @@ top: 0; border-left: var(--cell-border); border-right: var(--cell-border); + border-bottom: var(--cell-border); background: var(--spectrum-global-color-gray-100); } .add:hover { diff --git a/packages/frontend-core/src/components/grid/stores/viewport.js b/packages/frontend-core/src/components/grid/stores/viewport.js index 5a2e22395b..87a10a0330 100644 --- a/packages/frontend-core/src/components/grid/stores/viewport.js +++ b/packages/frontend-core/src/components/grid/stores/viewport.js @@ -2,6 +2,7 @@ import { derived, get } from "svelte/store" import { MaxCellRenderHeight, MaxCellRenderWidthOverflow, + MinColumnWidth, ScrollBarSize, } from "../lib/constants" @@ -46,7 +47,7 @@ export const deriveStores = context => { // Derive visible columns const scrollLeftRounded = derived(scrollLeft, $scrollLeft => { - const interval = 50 + const interval = MinColumnWidth return Math.round($scrollLeft / interval) * interval }) const renderedColumns = derived( @@ -74,17 +75,15 @@ export const deriveStores = context => { leftEdge += $visibleColumns[endColIdx].width endColIdx++ } - const next = $visibleColumns.slice(startColIdx, endColIdx) - - // Only update if the column selection is actually different + const next = $visibleColumns.slice( + Math.max(0, startColIdx - 1), + endColIdx + 1 + ) const current = get(renderedColumns) - const currentKey = current.map(col => col.width).join("-") - const nextKey = next.map(col => col.width).join("-") - if (currentKey !== nextKey) { + if (JSON.stringify(next) !== JSON.stringify(current)) { set(next) } - }, - [] + } ) const hiddenColumnsWidth = derived( From 5155727b56104ba7fee35f982bed6603f0e7cf11 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 24 Apr 2023 11:22:03 +0100 Subject: [PATCH 32/72] Update grid button text and refactor gutter cell into own component --- .../buttons/ManageAccessButton.svelte | 2 +- .../buttons/grid/GridCreateViewButton.svelte | 2 +- .../src/components/grid/cells/DataCell.svelte | 6 + .../components/grid/cells/GutterCell.svelte | 119 +++++++++ .../grid/controls/AddColumnButton.svelte | 2 +- .../grid/controls/AddRowButton.svelte | 2 +- .../grid/controls/ColumnWidthButton.svelte | 4 +- .../grid/controls/HideColumnsButton.svelte | 2 +- .../grid/controls/RowHeightButton.svelte | 4 +- .../components/grid/layout/GridBody.svelte | 37 ++- .../src/components/grid/layout/NewRow.svelte | 228 ------------------ .../grid/layout/NewRowBottom.svelte | 25 -- .../grid/layout/StickyColumn.svelte | 135 ++--------- .../src/components/grid/lib/constants.js | 1 + .../src/components/grid/stores/viewport.js | 2 + 15 files changed, 199 insertions(+), 372 deletions(-) create mode 100644 packages/frontend-core/src/components/grid/cells/GutterCell.svelte delete mode 100644 packages/frontend-core/src/components/grid/layout/NewRow.svelte delete mode 100644 packages/frontend-core/src/components/grid/layout/NewRowBottom.svelte diff --git a/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte b/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte index 4d5faca4c6..bc8e0c5318 100644 --- a/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte +++ b/packages/builder/src/components/backend/DataTable/buttons/ManageAccessButton.svelte @@ -16,7 +16,7 @@ - Manage access + Access - Create view + Add view diff --git a/packages/frontend-core/src/components/grid/cells/DataCell.svelte b/packages/frontend-core/src/components/grid/cells/DataCell.svelte index f205c0a74a..c41b015cf0 100644 --- a/packages/frontend-core/src/components/grid/cells/DataCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/DataCell.svelte @@ -27,6 +27,12 @@ // Get the error for this cell if the row is focused $: error = getErrorStore(rowFocused, cellId) + $: { + if ($error) { + console.log(cellId, $error) + } + } + // Determine if the cell is editable $: readonly = column.schema.autocolumn || diff --git a/packages/frontend-core/src/components/grid/cells/GutterCell.svelte b/packages/frontend-core/src/components/grid/cells/GutterCell.svelte new file mode 100644 index 0000000000..b5c3afc03b --- /dev/null +++ b/packages/frontend-core/src/components/grid/cells/GutterCell.svelte @@ -0,0 +1,119 @@ + + + +
+ {#if $$slots.default} + + {:else} +
+ +
+ {#if !disableNumber} +
+ {row.__idx + 1} +
+ {/if} + {/if} + {#if $config.allowExpandRows} +
+ +
+ {/if} +
+
+ + diff --git a/packages/frontend-core/src/components/grid/controls/AddColumnButton.svelte b/packages/frontend-core/src/components/grid/controls/AddColumnButton.svelte index e04c1ee627..6ad241eb65 100644 --- a/packages/frontend-core/src/components/grid/controls/AddColumnButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/AddColumnButton.svelte @@ -12,5 +12,5 @@ on:click={() => dispatch("add-column")} disabled={!$config.allowAddColumns} > - Create column + Add column diff --git a/packages/frontend-core/src/components/grid/controls/AddRowButton.svelte b/packages/frontend-core/src/components/grid/controls/AddRowButton.svelte index 3545cbbeed..71062d6a1a 100644 --- a/packages/frontend-core/src/components/grid/controls/AddRowButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/AddRowButton.svelte @@ -14,5 +14,5 @@ !$config.allowAddRows || (!$columns.length && !$stickyColumn)} > - Create row + Add row diff --git a/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte b/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte index d5f82957f4..9a4638efdf 100644 --- a/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/ColumnWidthButton.svelte @@ -52,13 +52,13 @@
(open = !open)} selected={open} > - Column width + Width
diff --git a/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte b/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte index 6c9d1be8ac..7d7c4664b6 100644 --- a/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte @@ -48,7 +48,7 @@ selected={open || anyHidden} disabled={!$columns.length} > - Hide columns + Columns
diff --git a/packages/frontend-core/src/components/grid/controls/RowHeightButton.svelte b/packages/frontend-core/src/components/grid/controls/RowHeightButton.svelte index 0fcbbed089..e9045ac5c7 100644 --- a/packages/frontend-core/src/components/grid/controls/RowHeightButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/RowHeightButton.svelte @@ -36,13 +36,13 @@
(open = !open)} selected={open} > - Row height + Height
diff --git a/packages/frontend-core/src/components/grid/layout/GridBody.svelte b/packages/frontend-core/src/components/grid/layout/GridBody.svelte index 5c61fde3ef..ba7bde0724 100644 --- a/packages/frontend-core/src/components/grid/layout/GridBody.svelte +++ b/packages/frontend-core/src/components/grid/layout/GridBody.svelte @@ -2,11 +2,25 @@ import { getContext, onMount } from "svelte" import GridScrollWrapper from "./GridScrollWrapper.svelte" import GridRow from "./GridRow.svelte" + import { BlankRowID } from "../lib/constants" - const { bounds, renderedRows, rowVerticalInversionIndex } = getContext("grid") + const { + bounds, + renderedRows, + renderedColumns, + rowVerticalInversionIndex, + config, + hoveredRowId, + dispatch, + } = getContext("grid") let body + $: renderColumnsWidth = $renderedColumns.reduce( + (total, col) => (total += col.width), + 0 + ) + onMount(() => { // Observe and record the height of the body const observer = new ResizeObserver(() => { @@ -24,6 +38,16 @@ {#each $renderedRows as row, idx} = $rowVerticalInversionIndex} /> {/each} + {#if $config.allowAddRows} +
($hoveredRowId = BlankRowID)} + on:mouseleave={() => ($hoveredRowId = null)} + on:click={() => dispatch("add-row-inline", true)} + /> + {/if}
@@ -35,4 +59,15 @@ overflow: hidden; flex: 1 1 auto; } + .blank { + height: var(--row-height); + background: var(--cell-background); + border-bottom: var(--cell-border); + border-right: var(--cell-border); + position: absolute; + } + .blank.highlighted { + background: var(--cell-background-hover); + cursor: pointer; + } diff --git a/packages/frontend-core/src/components/grid/layout/NewRow.svelte b/packages/frontend-core/src/components/grid/layout/NewRow.svelte deleted file mode 100644 index a40104b8d2..0000000000 --- a/packages/frontend-core/src/components/grid/layout/NewRow.svelte +++ /dev/null @@ -1,228 +0,0 @@ - - - -
($hoveredRowId = rowId)} - on:mouseleave={() => ($hoveredRowId = null)} -> -
- -
-
- -
- {#if $config.allowExpandRows} -
- -
- {/if} -
-
- {#if $stickyColumn} - {@const cellId = `${rowId}-${$stickyColumn.name}`} - - {/if} -
- -
- {#each $renderedColumns as column} - {@const cellId = `${rowId}-${column.name}`} - {#key cellId} - - {/key} - {/each} -
-
- {#if Object.keys(newRow || {}).length > 1} -
- - -
- {/if} -
- - diff --git a/packages/frontend-core/src/components/grid/layout/NewRowBottom.svelte b/packages/frontend-core/src/components/grid/layout/NewRowBottom.svelte deleted file mode 100644 index 709b7674c8..0000000000 --- a/packages/frontend-core/src/components/grid/layout/NewRowBottom.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - -
- -
- - diff --git a/packages/frontend-core/src/components/grid/layout/StickyColumn.svelte b/packages/frontend-core/src/components/grid/layout/StickyColumn.svelte index cbf74a0d22..02e962e8b1 100644 --- a/packages/frontend-core/src/components/grid/layout/StickyColumn.svelte +++ b/packages/frontend-core/src/components/grid/layout/StickyColumn.svelte @@ -1,11 +1,12 @@
0} >
- -
-
- {#if $config.allowDeleteRows} -
- -
- {/if} -
- {#if $config.allowExpandRows} -
- -
- {/if} -
-
- + {#if $stickyColumn} {/if} @@ -95,41 +64,7 @@ on:mouseenter={() => ($hoveredRowId = row._id)} on:mouseleave={() => ($hoveredRowId = null)} > - -
-
selectRow(row._id)} - class="checkbox" - class:visible={$config.allowDeleteRows && - (rowSelected || rowHovered || rowFocused)} - > - -
-
- {row.__idx + 1} -
- {#if $config.allowExpandRows} -
- { - dispatch("edit-row", row) - }} - /> -
- {/if} -
-
+ {#if $stickyColumn} {/each} + {#if $config.allowAddRows} +
($hoveredRowId = BlankRowID)} + on:mouseleave={() => ($hoveredRowId = null)} + on:click={() => dispatch("add-row-inline", true)} + > + + + + {#if $stickyColumn} + + {/if} +
+ {/if}
@@ -203,43 +156,7 @@ position: relative; flex: 1 1 auto; } - - /* Styles for gutter */ - .gutter { - flex: 1 1 auto; - display: grid; - align-items: center; - padding: var(--cell-padding); - grid-template-columns: 1fr auto; - gap: var(--cell-spacing); - } - .checkbox, - .number { - display: none; - flex-direction: row; - justify-content: center; - align-items: center; - } - .checkbox :global(.spectrum-Checkbox) { - min-height: 0; - height: 20px; - } - .checkbox :global(.spectrum-Checkbox-box) { - margin: 3px 0 0 0; - } - .number { - color: var(--spectrum-global-color-gray-500); - } - .checkbox.visible, - .number.visible { - display: flex; - } - .expand { - opacity: 0; - pointer-events: none; - } - .expand.visible { - opacity: 1; - pointer-events: all; + .row.new :global(*:hover) { + cursor: pointer; } diff --git a/packages/frontend-core/src/components/grid/lib/constants.js b/packages/frontend-core/src/components/grid/lib/constants.js index cfca89b2b6..86590c0562 100644 --- a/packages/frontend-core/src/components/grid/lib/constants.js +++ b/packages/frontend-core/src/components/grid/lib/constants.js @@ -10,3 +10,4 @@ export const MediumRowHeight = 64 export const LargeRowHeight = 92 export const DefaultRowHeight = SmallRowHeight export const NewRowID = "new" +export const BlankRowID = "blank" diff --git a/packages/frontend-core/src/components/grid/stores/viewport.js b/packages/frontend-core/src/components/grid/stores/viewport.js index 87a10a0330..bda56dc34f 100644 --- a/packages/frontend-core/src/components/grid/stores/viewport.js +++ b/packages/frontend-core/src/components/grid/stores/viewport.js @@ -75,6 +75,8 @@ export const deriveStores = context => { leftEdge += $visibleColumns[endColIdx].width endColIdx++ } + // Render an additional column on either side to account for + // debounce column updates based on scroll position const next = $visibleColumns.slice( Math.max(0, startColIdx - 1), endColIdx + 1 From 98430138fe39d30ef4fed47617354b434deddece Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 24 Apr 2023 11:36:48 +0100 Subject: [PATCH 33/72] Improve gutter cell usage --- .../src/components/grid/cells/GutterCell.svelte | 3 +++ .../src/components/grid/layout/NewRowTop.svelte | 16 +++++----------- .../components/grid/layout/StickyColumn.svelte | 7 ++++++- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/frontend-core/src/components/grid/cells/GutterCell.svelte b/packages/frontend-core/src/components/grid/cells/GutterCell.svelte index b5c3afc03b..218341e54e 100644 --- a/packages/frontend-core/src/components/grid/cells/GutterCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/GutterCell.svelte @@ -11,6 +11,7 @@ export let rowSelected export let disableExpand = false export let disableNumber = false + export let defaultHeight = false const { config, dispatch, selectedRows } = getContext("grid") const svelteDispatch = createEventDispatcher() @@ -44,6 +45,7 @@ width={GutterWidth} highlighted={rowFocused || rowHovered} selected={rowSelected} + {defaultHeight} >
{#if $$slots.default} @@ -111,6 +113,7 @@ .expand { opacity: 0; pointer-events: none; + margin-right: 4px; } .expand.visible { opacity: 1; diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index 4abbf41d24..ad4cadbb0b 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -7,6 +7,7 @@ import { fade } from "svelte/transition" import { GutterWidth } from "../lib/constants" import { NewRowID } from "../lib/constants" + import GutterCell from "../cells/GutterCell.svelte" const { hoveredRowId, @@ -116,16 +117,9 @@ transition:fade={{ duration: 130 }} style="flex: 0 0 {width}px" > - -
-
- -
- {#if $config.allowExpandRows} - - {/if} -
-
+ + + {#if $stickyColumn} {@const cellId = `new-${$stickyColumn.name}`} 0} >
- + {#if $stickyColumn} {/if} From 5cbaf2f58a5773e0436f3780dd0f7ebcf23fce64 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 24 Apr 2023 12:50:35 +0100 Subject: [PATCH 34/72] Update new row component to render inline where possible --- .../src/components/grid/cells/DataCell.svelte | 6 - .../components/grid/layout/GridBody.svelte | 2 +- .../components/grid/layout/NewRowTop.svelte | 106 ++++++++++-------- .../grid/layout/StickyColumn.svelte | 2 +- .../src/components/grid/lib/constants.js | 3 +- .../src/components/grid/stores/rows.js | 8 +- .../src/components/grid/stores/scroll.js | 4 +- 7 files changed, 74 insertions(+), 57 deletions(-) diff --git a/packages/frontend-core/src/components/grid/cells/DataCell.svelte b/packages/frontend-core/src/components/grid/cells/DataCell.svelte index c41b015cf0..f205c0a74a 100644 --- a/packages/frontend-core/src/components/grid/cells/DataCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/DataCell.svelte @@ -27,12 +27,6 @@ // Get the error for this cell if the row is focused $: error = getErrorStore(rowFocused, cellId) - $: { - if ($error) { - console.log(cellId, $error) - } - } - // Determine if the cell is editable $: readonly = column.schema.autocolumn || diff --git a/packages/frontend-core/src/components/grid/layout/GridBody.svelte b/packages/frontend-core/src/components/grid/layout/GridBody.svelte index ba7bde0724..de0b52c75b 100644 --- a/packages/frontend-core/src/components/grid/layout/GridBody.svelte +++ b/packages/frontend-core/src/components/grid/layout/GridBody.svelte @@ -45,7 +45,7 @@ style="width:{renderColumnsWidth}px" on:mouseenter={() => ($hoveredRowId = BlankRowID)} on:mouseleave={() => ($hoveredRowId = null)} - on:click={() => dispatch("add-row-inline", true)} + on:click={() => dispatch("add-row-inline")} /> {/if} diff --git a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte index ad4cadbb0b..5e12985762 100644 --- a/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte +++ b/packages/frontend-core/src/components/grid/layout/NewRowTop.svelte @@ -1,5 +1,4 @@ From 123c47c4d1d1f106ff43f684a030d06a8d3f49ab Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 25 Apr 2023 08:44:57 +0100 Subject: [PATCH 61/72] Fix real root issue --- packages/builder/src/api.js | 4 ++-- .../builder/portal/overview/[appId]/_layout.svelte | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/builder/src/api.js b/packages/builder/src/api.js index f3db05307a..37894d9bbc 100644 --- a/packages/builder/src/api.js +++ b/packages/builder/src/api.js @@ -5,12 +5,12 @@ import { } from "@budibase/frontend-core" import { store } from "./builderStore" import { get } from "svelte/store" -import { auth, overview } from "./stores/portal" +import { auth } from "./stores/portal" export const API = createAPIClient({ attachHeaders: headers => { // Attach app ID header from store - let appId = get(store).appId || get(overview).selectedAppId + let appId = get(store).appId if (appId) { headers["x-budibase-app-id"] = appId } diff --git a/packages/builder/src/pages/builder/portal/overview/[appId]/_layout.svelte b/packages/builder/src/pages/builder/portal/overview/[appId]/_layout.svelte index 56d76d3a4c..806589e421 100644 --- a/packages/builder/src/pages/builder/portal/overview/[appId]/_layout.svelte +++ b/packages/builder/src/pages/builder/portal/overview/[appId]/_layout.svelte @@ -47,6 +47,7 @@ let deletionModal let exportPublishedVersion = false let deletionConfirmationAppName + let loaded = false $: app = $overview.selectedApp $: appId = $overview.selectedAppId @@ -56,10 +57,12 @@ $: lockedByYou = $auth.user.email === app?.lockedBy?.email const initialiseApp = async appId => { + loaded = false try { const pkg = await API.fetchAppPackage(appId) await store.actions.initialise(pkg) await API.syncApp(appId) + loaded = true } catch (error) { notifications.error("Error initialising app overview") $goto("../../") @@ -111,10 +114,6 @@ onDestroy(() => { stopSyncing() store.actions.reset() - overview.update(state => ({ - ...state, - selectedAppId: null, - })) }) @@ -232,7 +231,9 @@ active={$isActive("./version")} /> - + {#if loaded} + + {/if} From 128411a61bb8bfd1814e3789661b8478528bc2f6 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 25 Apr 2023 08:58:41 +0100 Subject: [PATCH 62/72] Fix legacy delete button in edit row modal not doing anything --- .../modals/grid/GridCreateEditRowModal.svelte | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/modals/grid/GridCreateEditRowModal.svelte b/packages/builder/src/components/backend/DataTable/modals/grid/GridCreateEditRowModal.svelte index e45ffc586e..12ca61722f 100644 --- a/packages/builder/src/components/backend/DataTable/modals/grid/GridCreateEditRowModal.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/grid/GridCreateEditRowModal.svelte @@ -1,7 +1,7 @@ - rows.actions.refreshRow(e.detail)} /> + rows.actions.refreshRow(e.detail)} + on:deleteRows={deleteRow} + /> From 45ac7d185019c284b6f434cc066dd4df5eeed3d6 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 25 Apr 2023 09:04:51 +0100 Subject: [PATCH 63/72] Add hide column option to header cell menu --- .../src/components/grid/cells/HeaderCell.svelte | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte b/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte index 3979e1114a..165711c51f 100644 --- a/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/HeaderCell.svelte @@ -93,6 +93,16 @@ columns.actions.changePrimaryDisplay(column.name) open = false } + + const hideColumn = () => { + columns.update(state => { + const index = state.findIndex(col => col.name === column.name) + state[index].visible = false + return state.slice() + }) + columns.actions.saveChanges() + open = false + }
Move right + Hide column From 6c154717781fadb4ed2ed2177e0636da94effa62 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 25 Apr 2023 09:05:00 +0100 Subject: [PATCH 64/72] Fix tab browser behaviour --- .../src/components/grid/overlays/KeyboardManager.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte index 4b6d611757..e0e842dc16 100644 --- a/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte +++ b/packages/frontend-core/src/components/grid/overlays/KeyboardManager.svelte @@ -46,6 +46,7 @@ } return } else if (e.key === "Tab") { + e.preventDefault() api?.blur?.() changeFocusedColumn(1) return From 6ab03289c51da248bc38af4eed5fc75387f6af76 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 25 Apr 2023 09:13:42 +0100 Subject: [PATCH 65/72] Fix checkbox not having a blur method --- .../frontend-core/src/components/grid/cells/DataCell.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend-core/src/components/grid/cells/DataCell.svelte b/packages/frontend-core/src/components/grid/cells/DataCell.svelte index f205c0a74a..5a2e02340f 100644 --- a/packages/frontend-core/src/components/grid/cells/DataCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/DataCell.svelte @@ -48,8 +48,8 @@ } const cellAPI = { - focus: () => api?.focus(), - blur: () => api?.blur(), + focus: () => api?.focus?.(), + blur: () => api?.blur?.(), isActive: () => api?.isActive?.() ?? false, onKeyDown: (...params) => api?.onKeyDown(...params), isReadonly: () => readonly, From 8d21345d554633214d31b7e75e23daec0225c5fe Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 25 Apr 2023 09:22:30 +0100 Subject: [PATCH 66/72] Add sticky columns as a permanent, disabled option in hide columns buttons --- .../src/components/grid/controls/HideColumnsButton.svelte | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte b/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte index 7d7c4664b6..1d5db3691b 100644 --- a/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte @@ -2,7 +2,7 @@ import { getContext } from "svelte" import { ActionButton, Popover, Toggle } from "@budibase/bbui" - const { columns } = getContext("grid") + const { columns, stickyColumn } = getContext("grid") let open = false let anchor @@ -55,6 +55,10 @@
+ {#if $stickyColumn} + + {$stickyColumn.name} + {/if} {#each $columns as column} Date: Tue, 25 Apr 2023 09:23:16 +0100 Subject: [PATCH 67/72] Use friendly name where possible when configuring column visibility --- .../src/components/grid/controls/HideColumnsButton.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte b/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte index 1d5db3691b..30904fbebc 100644 --- a/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte +++ b/packages/frontend-core/src/components/grid/controls/HideColumnsButton.svelte @@ -57,7 +57,7 @@
{#if $stickyColumn} - {$stickyColumn.name} + {$stickyColumn.label} {/if} {#each $columns as column} toggleVisibility(column, e.detail)} /> - {column.name} + {column.label} {/each}
From 2f97787dfb79d6c47cf8967253b654970aeadf0a Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 25 Apr 2023 09:32:06 +0100 Subject: [PATCH 68/72] Fix hidden gutter cell expand icons still having a tooltip --- .../src/components/grid/cells/GutterCell.svelte | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/frontend-core/src/components/grid/cells/GutterCell.svelte b/packages/frontend-core/src/components/grid/cells/GutterCell.svelte index d7d197758d..d9fd09fb6c 100644 --- a/packages/frontend-core/src/components/grid/cells/GutterCell.svelte +++ b/packages/frontend-core/src/components/grid/cells/GutterCell.svelte @@ -113,11 +113,15 @@ } .expand { opacity: 0; - pointer-events: none; margin-right: 4px; } + .expand :global(.spectrum-Icon) { + pointer-events: none; + } .expand.visible { opacity: 1; + } + .expand.visible :global(.spectrum-Icon) { pointer-events: all; } From 0c38124f6ae24ea2774046e3f0db04fc30f4323e Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Tue, 25 Apr 2023 09:57:21 +0100 Subject: [PATCH 69/72] Form Block Improvements (#10404) * Form Block Improvements * PR Fixes * PR feedback --- .../design/settings/componentSettings.js | 2 + .../controls/FieldConfiguration.svelte | 91 ++++++++ .../FieldConfiguration/CellEditor.svelte | 26 +++ .../FieldConfiguration/ColumnDrawer.svelte | 202 ++++++++++++++++++ .../FieldConfiguration.svelte | 89 ++++++++ .../ValidationEditor/ValidationDrawer.svelte | 9 +- packages/client/manifest.json | 66 +++++- .../components/app/blocks/TableBlock.svelte | 13 +- .../app/blocks/form/FormBlock.svelte | 36 +++- .../app/blocks/form/InnerFormBlock.svelte | 24 ++- 10 files changed, 543 insertions(+), 15 deletions(-) create mode 100644 packages/builder/src/components/design/settings/controls/FieldConfiguration.svelte create mode 100644 packages/builder/src/components/design/settings/controls/FieldConfiguration/CellEditor.svelte create mode 100644 packages/builder/src/components/design/settings/controls/FieldConfiguration/ColumnDrawer.svelte create mode 100644 packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte diff --git a/packages/builder/src/components/design/settings/componentSettings.js b/packages/builder/src/components/design/settings/componentSettings.js index 65a21f368d..39a82c20dd 100644 --- a/packages/builder/src/components/design/settings/componentSettings.js +++ b/packages/builder/src/components/design/settings/componentSettings.js @@ -21,6 +21,7 @@ import DrawerBindableCombobox from "components/common/bindings/DrawerBindableCom import ColumnEditor from "./controls/ColumnEditor/ColumnEditor.svelte" import BasicColumnEditor from "./controls/ColumnEditor/BasicColumnEditor.svelte" import BarButtonList from "./controls/BarButtonList.svelte" +import FieldConfiguration from "./controls/FieldConfiguration/FieldConfiguration.svelte" const componentMap = { text: DrawerBindableCombobox, @@ -43,6 +44,7 @@ const componentMap = { section: SectionSelect, filter: FilterEditor, url: URLSelect, + fieldConfiguration: FieldConfiguration, columns: ColumnEditor, "columns/basic": BasicColumnEditor, "field/sortable": SortableFieldSelect, diff --git a/packages/builder/src/components/design/settings/controls/FieldConfiguration.svelte b/packages/builder/src/components/design/settings/controls/FieldConfiguration.svelte new file mode 100644 index 0000000000..59340d4898 --- /dev/null +++ b/packages/builder/src/components/design/settings/controls/FieldConfiguration.svelte @@ -0,0 +1,91 @@ + + +Configure columns + + + Configure the columns in your {subject.toLowerCase()}. + + + + diff --git a/packages/builder/src/components/design/settings/controls/FieldConfiguration/CellEditor.svelte b/packages/builder/src/components/design/settings/controls/FieldConfiguration/CellEditor.svelte new file mode 100644 index 0000000000..e70decc035 --- /dev/null +++ b/packages/builder/src/components/design/settings/controls/FieldConfiguration/CellEditor.svelte @@ -0,0 +1,26 @@ + + + + + + "{column.name}" field validation + + + +
+ +
+
+
diff --git a/packages/builder/src/components/design/settings/controls/FieldConfiguration/ColumnDrawer.svelte b/packages/builder/src/components/design/settings/controls/FieldConfiguration/ColumnDrawer.svelte new file mode 100644 index 0000000000..316bf56da3 --- /dev/null +++ b/packages/builder/src/components/design/settings/controls/FieldConfiguration/ColumnDrawer.svelte @@ -0,0 +1,202 @@ + + + +
+ + {#if columns?.length} + +
+
+ + +
+
+
+
+ {#each columns as column (column.id)} +
+
(dragDisabled = false)} + > + +
+ + + removeColumn(column.id)} + disabled={columns.length === 1} + /> +
+ {/each} +
+ + {:else} +
+
+ Add columns to be included in your form below. +
+
+ {/if} +
+
+ + + {#if columns?.length} + + {/if} +
+
+ +
+ + + diff --git a/packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte b/packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte new file mode 100644 index 0000000000..f9127460e2 --- /dev/null +++ b/packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte @@ -0,0 +1,89 @@ + + +Configure fields + + + Configure the fields in your form. + + + + diff --git a/packages/builder/src/components/design/settings/controls/ValidationEditor/ValidationDrawer.svelte b/packages/builder/src/components/design/settings/controls/ValidationEditor/ValidationDrawer.svelte index 8d9ca7e0cd..0bff2ccce6 100644 --- a/packages/builder/src/components/design/settings/controls/ValidationEditor/ValidationDrawer.svelte +++ b/packages/builder/src/components/design/settings/controls/ValidationEditor/ValidationDrawer.svelte @@ -16,6 +16,7 @@ import DrawerBindableInput from "components/common/bindings/DrawerBindableInput.svelte" import { generate } from "shortid" + export let fieldName = null export let rules = [] export let bindings = [] export let type @@ -124,7 +125,7 @@ } $: dataSourceSchema = getDataSourceSchema($currentAsset, $selectedComponent) - $: field = $selectedComponent?.field + $: field = fieldName || $selectedComponent?.field $: schemaRules = parseRulesFromSchema(field, dataSourceSchema || {}) $: fieldType = type?.split("/")[1] || "string" $: constraintOptions = getConstraintsForType(fieldType) @@ -140,8 +141,12 @@ const formParent = findClosestMatchingComponent( asset.props, component._id, - component => component._component.endsWith("/form") + component => + component._component.endsWith("/form") || + component._component.endsWith("/formblock") || + component._component.endsWith("/tableblock") ) + return getSchemaForDatasource(asset, formParent?.dataSource) } diff --git a/packages/client/manifest.json b/packages/client/manifest.json index f27d090617..84ffca314c 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -4435,6 +4435,48 @@ "key": "row" } ] + }, + { + "label": "Fields", + "type": "fieldConfiguration", + "key": "sidePanelFields", + "nested": true, + "dependsOn": { + "setting": "clickBehaviour", + "value": "details" + } + }, + { + "label": "Show delete", + "type": "boolean", + "key": "sidePanelShowDelete", + "nested": true, + "dependsOn": { + "setting": "clickBehaviour", + "value": "details" + } + }, + { + "label": "Save label", + "type": "text", + "key": "sidePanelSaveLabel", + "defaultValue": "Save", + "nested": true, + "dependsOn": { + "setting": "clickBehaviour", + "value": "details" + } + }, + { + "label": "Delete label", + "type": "text", + "key": "sidePanelDeleteLabel", + "defaultValue": "Delete", + "nested": true, + "dependsOn": { + "setting": "clickBehaviour", + "value": "details" + } } ] }, @@ -4979,7 +5021,7 @@ "name": "Fields", "settings": [ { - "type": "multifield", + "type": "fieldConfiguration", "label": "Fields", "key": "fields", "selectAllFields": true @@ -5028,6 +5070,17 @@ "invert": true } }, + { + "type": "text", + "key": "saveButtonLabel", + "label": "Save button label", + "nested": true, + "defaultValue": "Save", + "dependsOn": { + "setting": "showSaveButton", + "value": true + } + }, { "type": "boolean", "label": "Allow delete", @@ -5038,6 +5091,17 @@ "value": "Update" } }, + { + "type": "text", + "key": "deleteButtonLabel", + "label": "Delete button label", + "nested": true, + "defaultValue": "Delete", + "dependsOn": { + "setting": "showDeleteButton", + "value": true + } + }, { "type": "url", "label": "Navigate after button press", diff --git a/packages/client/src/components/app/blocks/TableBlock.svelte b/packages/client/src/components/app/blocks/TableBlock.svelte index 26e44922dd..e45b53880d 100644 --- a/packages/client/src/components/app/blocks/TableBlock.svelte +++ b/packages/client/src/components/app/blocks/TableBlock.svelte @@ -26,6 +26,10 @@ export let titleButtonClickBehaviour export let onClickTitleButton export let noRowsMessage + export let sidePanelFields + export let sidePanelShowDelete + export let sidePanelSaveLabel + export let sidePanelDeleteLabel const { fetchDatasourceSchema, API } = getContext("sdk") const stateKey = `ID_${generate()}` @@ -241,10 +245,12 @@ props={{ dataSource, showSaveButton: true, - showDeleteButton: true, + showDeleteButton: sidePanelShowDelete, + saveButtonLabel: sidePanelSaveLabel, + deleteButtonLabel: sidePanelDeleteLabel, actionType: "Update", rowId: `{{ ${safe("state")}.${safe(stateKey)} }}`, - fields: normalFields, + fields: sidePanelFields || normalFields, title: editTitle, labelPosition: "left", }} @@ -266,8 +272,9 @@ dataSource, showSaveButton: true, showDeleteButton: false, + saveButtonLabel: sidePanelSaveLabel, actionType: "Create", - fields: normalFields, + fields: sidePanelFields || normalFields, title: "Create Row", labelPosition: "left", }} diff --git a/packages/client/src/components/app/blocks/form/FormBlock.svelte b/packages/client/src/components/app/blocks/form/FormBlock.svelte index a05a7e141c..6874c23cf4 100644 --- a/packages/client/src/components/app/blocks/form/FormBlock.svelte +++ b/packages/client/src/components/app/blocks/form/FormBlock.svelte @@ -12,6 +12,8 @@ export let fields export let labelPosition export let title + export let saveButtonLabel + export let deleteButtonLabel export let showSaveButton export let showDeleteButton export let rowId @@ -20,10 +22,40 @@ const { fetchDatasourceSchema } = getContext("sdk") + const convertOldFieldFormat = fields => { + if (typeof fields?.[0] === "string") { + return fields.map(field => ({ name: field, displayName: field })) + } + + return fields + } + + const getDefaultFields = (fields, schema) => { + if (schema && (!fields || fields.length === 0)) { + const defaultFields = [] + + Object.values(schema).forEach(field => { + if (field.autocolumn) return + + defaultFields.push({ + name: field.name, + displayName: field.name, + }) + }) + + return defaultFields + } + + return fields + } + let schema let providerId let repeaterId + $: formattedFields = convertOldFieldFormat(fields) + $: fieldsOrDefault = getDefaultFields(formattedFields, schema) + $: fetchSchema(dataSource) $: dataProvider = `{{ literal ${safe(providerId)} }}` $: filter = [ @@ -46,9 +78,11 @@ actionType, size, disabled, - fields, + fields: fieldsOrDefault, labelPosition, title, + saveButtonLabel, + deleteButtonLabel, showSaveButton, showDeleteButton, schema, diff --git a/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte b/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte index da5345e6ad..b89ec4bcab 100644 --- a/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte +++ b/packages/client/src/components/app/blocks/form/InnerFormBlock.svelte @@ -11,6 +11,8 @@ export let fields export let labelPosition export let title + export let saveButtonLabel + export let deleteButtonLabel export let showSaveButton export let showDeleteButton export let schema @@ -33,6 +35,12 @@ let formId $: onSave = [ + { + "##eventHandlerType": "Validate Form", + parameters: { + componentId: formId, + }, + }, { "##eventHandlerType": "Save Row", parameters: { @@ -163,7 +171,7 @@ {#each fields as field, idx} - {#if getComponentForField(field)} + {#if getComponentForField(field.name)} From 5b4b3b6fd13d0d977f53e9d5953869564f10ad39 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 25 Apr 2023 09:11:46 +0000 Subject: [PATCH 70/72] v2.5.6-alpha.27 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 6 +++--- packages/builder/package.json | 12 ++++++------ packages/cli/package.json | 8 ++++---- packages/client/package.json | 12 ++++++------ packages/frontend-core/package.json | 6 +++--- packages/sdk/package.json | 2 +- packages/server/package.json | 12 ++++++------ packages/shared-core/package.json | 4 ++-- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 13 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index e29a909ce3..54628e2e9b 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "npmClient": "yarn", "useWorkspaces": true, "packages": ["packages/*"], diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 237e4a6fac..3d1cc20ad2 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.2", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.5.6-alpha.26", + "@budibase/types": "2.5.6-alpha.27", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 648090784b..c6e4e9af58 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,8 +38,8 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/shared-core": "2.5.6-alpha.26", - "@budibase/string-templates": "2.5.6-alpha.26", + "@budibase/shared-core": "2.5.6-alpha.27", + "@budibase/string-templates": "2.5.6-alpha.27", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index ce14a4982b..0bf4940d94 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,11 +58,11 @@ } }, "dependencies": { - "@budibase/bbui": "2.5.6-alpha.26", - "@budibase/client": "2.5.6-alpha.26", - "@budibase/frontend-core": "2.5.6-alpha.26", - "@budibase/shared-core": "2.5.6-alpha.26", - "@budibase/string-templates": "2.5.6-alpha.26", + "@budibase/bbui": "2.5.6-alpha.27", + "@budibase/client": "2.5.6-alpha.27", + "@budibase/frontend-core": "2.5.6-alpha.27", + "@budibase/shared-core": "2.5.6-alpha.27", + "@budibase/string-templates": "2.5.6-alpha.27", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 823953e68a..cef464ef36 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "dist/index.js", "bin": { @@ -29,9 +29,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.5.6-alpha.26", - "@budibase/string-templates": "2.5.6-alpha.26", - "@budibase/types": "2.5.6-alpha.26", + "@budibase/backend-core": "2.5.6-alpha.27", + "@budibase/string-templates": "2.5.6-alpha.27", + "@budibase/types": "2.5.6-alpha.27", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 0dc6f033fe..d7590a62a4 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,11 +19,11 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.5.6-alpha.26", - "@budibase/frontend-core": "2.5.6-alpha.26", - "@budibase/shared-core": "2.5.6-alpha.26", - "@budibase/string-templates": "2.5.6-alpha.26", - "@budibase/types": "2.5.6-alpha.26", + "@budibase/bbui": "2.5.6-alpha.27", + "@budibase/frontend-core": "2.5.6-alpha.27", + "@budibase/shared-core": "2.5.6-alpha.27", + "@budibase/string-templates": "2.5.6-alpha.27", + "@budibase/types": "2.5.6-alpha.27", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 887b143263..bc7003ef59 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,13 +1,13 @@ { "name": "@budibase/frontend-core", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.5.6-alpha.26", - "@budibase/shared-core": "2.5.6-alpha.26", + "@budibase/bbui": "2.5.6-alpha.27", + "@budibase/shared-core": "2.5.6-alpha.27", "dayjs": "^1.11.7", "lodash": "^4.17.21", "socket.io-client": "^4.6.1", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 673cb302bd..801a2d4005 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index afb69ae787..82d60aa280 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -45,12 +45,12 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.5.6-alpha.26", - "@budibase/client": "2.5.6-alpha.26", + "@budibase/backend-core": "2.5.6-alpha.27", + "@budibase/client": "2.5.6-alpha.27", "@budibase/pro": "2.5.6-alpha.26", - "@budibase/shared-core": "2.5.6-alpha.26", - "@budibase/string-templates": "2.5.6-alpha.26", - "@budibase/types": "2.5.6-alpha.26", + "@budibase/shared-core": "2.5.6-alpha.27", + "@budibase/string-templates": "2.5.6-alpha.27", + "@budibase/types": "2.5.6-alpha.27", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/shared-core/package.json b/packages/shared-core/package.json index 253ba37914..a3918dcbcf 100644 --- a/packages/shared-core/package.json +++ b/packages/shared-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/shared-core", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Shared data utils", "main": "dist/cjs/src/index.js", "types": "dist/mjs/src/index.d.ts", @@ -20,7 +20,7 @@ "dev:builder": "yarn prebuild && concurrently \"tsc -p tsconfig.build.json --watch\" \"tsc -p tsconfig-cjs.build.json --watch\"" }, "dependencies": { - "@budibase/types": "2.5.6-alpha.26" + "@budibase/types": "2.5.6-alpha.27" }, "devDependencies": { "concurrently": "^7.6.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 80b9c384f0..90b58552d2 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 5a25bfcfde..b56477e3a1 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Budibase types", "main": "dist/cjs/index.js", "types": "dist/mjs/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index a7f8e497cd..53b44363ba 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.5.6-alpha.26", + "version": "2.5.6-alpha.27", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -37,10 +37,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.5.6-alpha.26", + "@budibase/backend-core": "2.5.6-alpha.27", "@budibase/pro": "2.5.6-alpha.26", - "@budibase/string-templates": "2.5.6-alpha.26", - "@budibase/types": "2.5.6-alpha.26", + "@budibase/string-templates": "2.5.6-alpha.27", + "@budibase/types": "2.5.6-alpha.27", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From 2d2a368f23e2403df71a6930c13defb438fc6048 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 25 Apr 2023 10:50:10 +0000 Subject: [PATCH 71/72] v2.5.6-alpha.28 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 6 +++--- packages/builder/package.json | 12 ++++++------ packages/cli/package.json | 8 ++++---- packages/client/package.json | 12 ++++++------ packages/frontend-core/package.json | 6 +++--- packages/sdk/package.json | 2 +- packages/server/package.json | 12 ++++++------ packages/shared-core/package.json | 4 ++-- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 13 files changed, 40 insertions(+), 40 deletions(-) diff --git a/lerna.json b/lerna.json index 54628e2e9b..5016d729c0 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "npmClient": "yarn", "useWorkspaces": true, "packages": ["packages/*"], diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 3d1cc20ad2..53e14d15c7 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.2", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.5.6-alpha.27", + "@budibase/types": "2.5.6-alpha.28", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index c6e4e9af58..b46e5c3b7d 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,8 +38,8 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/shared-core": "2.5.6-alpha.27", - "@budibase/string-templates": "2.5.6-alpha.27", + "@budibase/shared-core": "2.5.6-alpha.28", + "@budibase/string-templates": "2.5.6-alpha.28", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index 0bf4940d94..4009a401e7 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,11 +58,11 @@ } }, "dependencies": { - "@budibase/bbui": "2.5.6-alpha.27", - "@budibase/client": "2.5.6-alpha.27", - "@budibase/frontend-core": "2.5.6-alpha.27", - "@budibase/shared-core": "2.5.6-alpha.27", - "@budibase/string-templates": "2.5.6-alpha.27", + "@budibase/bbui": "2.5.6-alpha.28", + "@budibase/client": "2.5.6-alpha.28", + "@budibase/frontend-core": "2.5.6-alpha.28", + "@budibase/shared-core": "2.5.6-alpha.28", + "@budibase/string-templates": "2.5.6-alpha.28", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index cef464ef36..321c9b6a35 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "dist/index.js", "bin": { @@ -29,9 +29,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.5.6-alpha.27", - "@budibase/string-templates": "2.5.6-alpha.27", - "@budibase/types": "2.5.6-alpha.27", + "@budibase/backend-core": "2.5.6-alpha.28", + "@budibase/string-templates": "2.5.6-alpha.28", + "@budibase/types": "2.5.6-alpha.28", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index d7590a62a4..b953eee349 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,11 +19,11 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.5.6-alpha.27", - "@budibase/frontend-core": "2.5.6-alpha.27", - "@budibase/shared-core": "2.5.6-alpha.27", - "@budibase/string-templates": "2.5.6-alpha.27", - "@budibase/types": "2.5.6-alpha.27", + "@budibase/bbui": "2.5.6-alpha.28", + "@budibase/frontend-core": "2.5.6-alpha.28", + "@budibase/shared-core": "2.5.6-alpha.28", + "@budibase/string-templates": "2.5.6-alpha.28", + "@budibase/types": "2.5.6-alpha.28", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index bc7003ef59..ff830b0cb5 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,13 +1,13 @@ { "name": "@budibase/frontend-core", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.5.6-alpha.27", - "@budibase/shared-core": "2.5.6-alpha.27", + "@budibase/bbui": "2.5.6-alpha.28", + "@budibase/shared-core": "2.5.6-alpha.28", "dayjs": "^1.11.7", "lodash": "^4.17.21", "socket.io-client": "^4.6.1", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 801a2d4005..a8dff3da10 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 82d60aa280..a9955358f0 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -45,12 +45,12 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.5.6-alpha.27", - "@budibase/client": "2.5.6-alpha.27", + "@budibase/backend-core": "2.5.6-alpha.28", + "@budibase/client": "2.5.6-alpha.28", "@budibase/pro": "2.5.6-alpha.26", - "@budibase/shared-core": "2.5.6-alpha.27", - "@budibase/string-templates": "2.5.6-alpha.27", - "@budibase/types": "2.5.6-alpha.27", + "@budibase/shared-core": "2.5.6-alpha.28", + "@budibase/string-templates": "2.5.6-alpha.28", + "@budibase/types": "2.5.6-alpha.28", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/shared-core/package.json b/packages/shared-core/package.json index a3918dcbcf..2d9ab33701 100644 --- a/packages/shared-core/package.json +++ b/packages/shared-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/shared-core", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Shared data utils", "main": "dist/cjs/src/index.js", "types": "dist/mjs/src/index.d.ts", @@ -20,7 +20,7 @@ "dev:builder": "yarn prebuild && concurrently \"tsc -p tsconfig.build.json --watch\" \"tsc -p tsconfig-cjs.build.json --watch\"" }, "dependencies": { - "@budibase/types": "2.5.6-alpha.27" + "@budibase/types": "2.5.6-alpha.28" }, "devDependencies": { "concurrently": "^7.6.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 90b58552d2..d9b9adcfbd 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index b56477e3a1..76ebca7e05 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Budibase types", "main": "dist/cjs/index.js", "types": "dist/mjs/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index 53b44363ba..082e14f230 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.5.6-alpha.27", + "version": "2.5.6-alpha.28", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -37,10 +37,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.5.6-alpha.27", + "@budibase/backend-core": "2.5.6-alpha.28", "@budibase/pro": "2.5.6-alpha.26", - "@budibase/string-templates": "2.5.6-alpha.27", - "@budibase/types": "2.5.6-alpha.27", + "@budibase/string-templates": "2.5.6-alpha.28", + "@budibase/types": "2.5.6-alpha.28", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From 3f22bbf50dd094d902596c04fd4ae212e76e623e Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 25 Apr 2023 10:51:34 +0000 Subject: [PATCH 72/72] Update pro version to 2.5.6-alpha.28 --- packages/server/package.json | 2 +- packages/worker/package.json | 2 +- yarn.lock | 58 ++++++++++++++++++++++++++++++++---- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index a9955358f0..1cd28f6829 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -47,7 +47,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.5.6-alpha.28", "@budibase/client": "2.5.6-alpha.28", - "@budibase/pro": "2.5.6-alpha.26", + "@budibase/pro": "2.5.6-alpha.28", "@budibase/shared-core": "2.5.6-alpha.28", "@budibase/string-templates": "2.5.6-alpha.28", "@budibase/types": "2.5.6-alpha.28", diff --git a/packages/worker/package.json b/packages/worker/package.json index 082e14f230..9a4411222a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -38,7 +38,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.5.6-alpha.28", - "@budibase/pro": "2.5.6-alpha.26", + "@budibase/pro": "2.5.6-alpha.28", "@budibase/string-templates": "2.5.6-alpha.28", "@budibase/types": "2.5.6-alpha.28", "@koa/router": "8.0.8", diff --git a/yarn.lock b/yarn.lock index 0d89d2cadf..8a77fcafc6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1386,6 +1386,45 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@budibase/backend-core@2.5.6-alpha.26": + version "2.5.6-alpha.26" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.5.6-alpha.26.tgz#72029afe5a85402fa996e92b84ad56cb8c6bde45" + integrity sha512-ktP2SWwLjaDzJYLnadU1BcZlrfQkvhRb3T+v1SEciTBWi0vF7MUa7k5OW0EKwECpGA3VA576sbI7FgGu7m7Sxw== + dependencies: + "@budibase/nano" "10.1.2" + "@budibase/pouchdb-replication-stream" "1.2.10" + "@budibase/types" "2.5.6-alpha.26" + "@shopify/jest-koa-mocks" "5.0.1" + "@techpass/passport-openidconnect" "0.3.2" + aws-cloudfront-sign "2.2.0" + aws-sdk "2.1030.0" + bcrypt "5.0.1" + bcryptjs "2.4.3" + bull "4.10.1" + correlation-id "4.0.0" + dotenv "16.0.1" + emitter-listener "1.1.2" + ioredis "4.28.0" + joi "17.6.0" + jsonwebtoken "9.0.0" + koa-passport "4.1.4" + koa-pino-logger "4.0.0" + lodash "4.17.21" + lodash.isarguments "3.1.0" + node-fetch "2.6.7" + passport-google-oauth "2.0.0" + passport-jwt "4.0.0" + passport-local "1.0.0" + passport-oauth2-refresh "^2.1.0" + posthog-node "1.3.0" + pouchdb "7.3.0" + pouchdb-find "7.2.2" + redlock "4.2.0" + sanitize-s3-objectkey "0.0.1" + semver "7.3.7" + tar-fs "2.1.1" + uuid "8.3.2" + "@budibase/bbui@^0.9.139": version "0.9.190" resolved "https://registry.yarnpkg.com/@budibase/bbui/-/bbui-0.9.190.tgz#e1ec400ac90f556bfbc80fc23a04506f1585ea81" @@ -1486,15 +1525,15 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.5.6-alpha.25": - version "2.5.6-alpha.25" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.5.6-alpha.25.tgz#bfe99536060422adb60da2f195acb05b24898c98" - integrity sha512-LEQec9N9gS+j5gt/eKwGzci5oKW1sRTIG8oUvH7faCoJjD7BWIhmNuQNFrNfg70C/zkxYy4CL/2s1P9oVR1B3g== +"@budibase/pro@2.5.6-alpha.26": + version "2.5.6-alpha.26" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.5.6-alpha.26.tgz#979f0de77db78ad4596e6295083047b71f7c7bcc" + integrity sha512-d0ZsggojThcg1m81UEPUHp7fuPaSVwG+HYXh3ElEXmeH7HJNOJrbD2K0U7zkaWzufLK9ay1H6qcaZ9ZHVg/z/Q== dependencies: - "@budibase/backend-core" "2.5.6-alpha.25" + "@budibase/backend-core" "2.5.6-alpha.26" "@budibase/shared-core" "2.4.44-alpha.1" "@budibase/string-templates" "2.4.44-alpha.1" - "@budibase/types" "2.5.6-alpha.25" + "@budibase/types" "2.5.6-alpha.26" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1547,6 +1586,13 @@ resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.4.44-alpha.1.tgz#1679657aa180d9c59afa1dffa611bff0638bd933" integrity sha512-Sq+8HfM75EBMoOvKYFwELdlxmVN6wNZMofDjT/2G+9aF+Zfe5Tzw69C+unmdBgcGGjGCHEYWSz4mF0v8FPAGbg== +"@budibase/types@2.5.6-alpha.26": + version "2.5.6-alpha.26" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.5.6-alpha.26.tgz#09ac8f1e4f4dfd5e7e109839cd9db36d5c563dc4" + integrity sha512-C1eHWj4tRwsQb2dJbMdukxRFVqiyzRBhwIMuCSIdJg763sbn9TXTqWTBbljyG7ppH+Dwge+py9KtiFP2MpMCfQ== + dependencies: + scim-patch "^0.7.0" + "@bull-board/api@3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-3.7.0.tgz#231f687187c0cb34e0b97f463917b6aaeb4ef6af"