From d03f96ceb8327d46245700c404831e8afd9c3bbc Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Fri, 28 Apr 2023 09:03:09 +0100 Subject: [PATCH 01/59] Make all blindings global and improve client component performance --- .../builder/src/builderStore/dataBinding.js | 34 ++++++--- .../src/builderStore/store/frontend.js | 7 +- .../controls/DataProviderSelect.svelte | 9 +-- packages/client/manifest.json | 11 --- .../client/src/components/Component.svelte | 71 ++++++++++++++----- .../src/components/context/Provider.svelte | 6 +- packages/client/src/stores/context.js | 61 +++++++--------- packages/client/src/utils/componentProps.js | 16 +---- .../client/src/utils/enrichDataBinding.js | 1 + yarn.lock | 12 ++-- 10 files changed, 127 insertions(+), 101 deletions(-) diff --git a/packages/builder/src/builderStore/dataBinding.js b/packages/builder/src/builderStore/dataBinding.js index 0d41931a55..9f253f9f75 100644 --- a/packages/builder/src/builderStore/dataBinding.js +++ b/packages/builder/src/builderStore/dataBinding.js @@ -199,15 +199,7 @@ export const getContextProviderComponents = ( return [] } - // Get the component tree leading up to this component, ignoring the component - // itself - const path = findComponentPath(asset.props, componentId) - if (!options?.includeSelf) { - path.pop() - } - - // Filter by only data provider components - return path.filter(component => { + return findAllMatchingComponents(asset.props, component => { const def = store.actions.components.getDefinition(component._component) if (!def?.context) { return false @@ -222,6 +214,30 @@ export const getContextProviderComponents = ( const contexts = Array.isArray(def.context) ? def.context : [def.context] return contexts.find(context => context.type === type) != null }) + // + // // Get the component tree leading up to this component, ignoring the component + // // itself + // const path = findComponentPath(asset.props, componentId) + // if (!options?.includeSelf) { + // path.pop() + // } + // + // // Filter by only data provider components + // return path.filter(component => { + // const def = store.actions.components.getDefinition(component._component) + // if (!def?.context) { + // return false + // } + // + // // If no type specified, return anything that exposes context + // if (!type) { + // return true + // } + // + // // Otherwise only match components with the specific context type + // const contexts = Array.isArray(def.context) ? def.context : [def.context] + // return contexts.find(context => context.type === type) != null + // }) } /** diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index e264dc099b..fb3eb8f1d9 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -621,10 +621,9 @@ export const getFrontendStore = () => { else { if (setting.type === "dataProvider") { // Validate data provider exists, or else clear it - const treeId = parent?._id || component._id - const path = findComponentPath(screen?.props, treeId) - const providers = path.filter(component => - component._component?.endsWith("/dataprovider") + const providers = findAllMatchingComponents( + screen?.props, + component => component._component?.endsWith("/dataprovider") ) // Validate non-empty values const valid = providers?.some(dp => value.includes?.(dp._id)) diff --git a/packages/builder/src/components/design/settings/controls/DataProviderSelect.svelte b/packages/builder/src/components/design/settings/controls/DataProviderSelect.svelte index 83255ec325..9fd220e798 100644 --- a/packages/builder/src/components/design/settings/controls/DataProviderSelect.svelte +++ b/packages/builder/src/components/design/settings/controls/DataProviderSelect.svelte @@ -1,15 +1,16 @@ +
editTableNameModal.confirm()}> + +
Date: Fri, 19 Jan 2024 11:32:13 +0000 Subject: [PATCH 39/59] Support custom validation rules for ejected block fields (#12799) --- .../components/app/blocks/CardsBlock.svelte | 2 +- .../components/app/blocks/TableBlock.svelte | 2 +- .../src/components/app/forms/Form.svelte | 4 +-- .../src/components/app/forms/InnerForm.svelte | 35 +++++++++---------- 4 files changed, 21 insertions(+), 22 deletions(-) diff --git a/packages/client/src/components/app/blocks/CardsBlock.svelte b/packages/client/src/components/app/blocks/CardsBlock.svelte index 3e48247f92..e0985a8979 100644 --- a/packages/client/src/components/app/blocks/CardsBlock.svelte +++ b/packages/client/src/components/app/blocks/CardsBlock.svelte @@ -88,7 +88,7 @@ {#if title || enrichedSearchColumns?.length || showTitleButton} diff --git a/packages/client/src/components/app/forms/InnerForm.svelte b/packages/client/src/components/app/forms/InnerForm.svelte index 9d0db43bf4..55c9c938c3 100644 --- a/packages/client/src/components/app/forms/InnerForm.svelte +++ b/packages/client/src/components/app/forms/InnerForm.svelte @@ -11,7 +11,7 @@ export let size export let schema export let table - export let disableValidation = false + export let disableSchemaValidation = false export let editAutoColumns = false // We export this store so that when we remount the inner form we can still @@ -156,17 +156,16 @@ if (!field) { return } - // Create validation function based on field schema - const schemaConstraints = schema?.[field]?.constraints - const validator = disableValidation + const schemaConstraints = disableSchemaValidation ? null - : createValidatorFromConstraints( - schemaConstraints, - validationRules, - field, - table - ) + : schema?.[field]?.constraints + const validator = createValidatorFromConstraints( + schemaConstraints, + validationRules, + field, + table + ) // Sanitise the default value to ensure it doesn't contain invalid data defaultValue = sanitiseValue(defaultValue, schema?.[field], type) @@ -332,15 +331,15 @@ const { value, error } = fieldState // Create new validator - const schemaConstraints = schema?.[field]?.constraints - const validator = disableValidation + const schemaConstraints = disableSchemaValidation ? null - : createValidatorFromConstraints( - schemaConstraints, - validationRules, - field, - table - ) + : schema?.[field]?.constraints + const validator = createValidatorFromConstraints( + schemaConstraints, + validationRules, + field, + table + ) // Update validator fieldInfo.update(state => { From 2f410cf0b69d8913b7bf4ec50ada30032b0863b3 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 19 Jan 2024 11:34:43 +0000 Subject: [PATCH 40/59] Bump version to 2.15.1 --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index f058050495..5fe9a6b261 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.15.0", + "version": "2.15.1", "npmClient": "yarn", "packages": [ "packages/*", From 45fa40496fe3190d6fc6ae30281814879a728f03 Mon Sep 17 00:00:00 2001 From: Dean Date: Fri, 19 Jan 2024 14:53:39 +0000 Subject: [PATCH 41/59] Added default sizing for buttons in button group, swapped Multistep block component style props for consistency --- packages/client/manifest.json | 34 +++++++++---------- .../src/components/app/ButtonGroup.svelte | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/client/manifest.json b/packages/client/manifest.json index 676d161864..2a9bc6f258 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -6098,23 +6098,6 @@ } ] }, - { - "tag": "style", - "type": "select", - "label": "Size", - "key": "size", - "options": [ - { - "label": "Medium", - "value": "spectrum--medium" - }, - { - "label": "Large", - "value": "spectrum--large" - } - ], - "defaultValue": "spectrum--medium" - }, { "tag": "style", "type": "select", @@ -6131,6 +6114,23 @@ } ], "defaultValue": "bottom" + }, + { + "tag": "style", + "type": "select", + "label": "Size", + "key": "size", + "options": [ + { + "label": "Medium", + "value": "spectrum--medium" + }, + { + "label": "Large", + "value": "spectrum--large" + } + ], + "defaultValue": "spectrum--medium" } ], "actions": [ diff --git a/packages/client/src/components/app/ButtonGroup.svelte b/packages/client/src/components/app/ButtonGroup.svelte index 4954704b1b..3ee703e253 100644 --- a/packages/client/src/components/app/ButtonGroup.svelte +++ b/packages/client/src/components/app/ButtonGroup.svelte @@ -29,7 +29,7 @@ type, quiet, disabled, - size, + size: size || "M", }} /> {/each} From 50078f4f0f85b7a67bd549c9b73f7a165df62aa4 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 19 Jan 2024 14:59:08 +0000 Subject: [PATCH 42/59] Fix issue where flagClient could be undefined when running outside of test mode --- packages/server/src/utilities/redis.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/utilities/redis.ts b/packages/server/src/utilities/redis.ts index d833ed2c10..a4154b7b95 100644 --- a/packages/server/src/utilities/redis.ts +++ b/packages/server/src/utilities/redis.ts @@ -94,7 +94,7 @@ export async function setTestFlag(id: string) { } export async function checkTestFlag(id: string) { - const flag = await flagClient.get(id) + const flag = await flagClient?.get(id) return !!(flag && flag.testing) } From 6ad865aa2b3c10e1c0ead6eac164eec2a9af7c82 Mon Sep 17 00:00:00 2001 From: Dean Date: Fri, 19 Jan 2024 15:08:53 +0000 Subject: [PATCH 43/59] Updated submodules --- packages/account-portal | 2 +- packages/pro | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/account-portal b/packages/account-portal index 11469c40d7..05c90ce551 160000 --- a/packages/account-portal +++ b/packages/account-portal @@ -1 +1 @@ -Subproject commit 11469c40d73ea58f2aec80c12c1946289b67c6f2 +Subproject commit 05c90ce55144e260da6688335c16783eab79bf96 diff --git a/packages/pro b/packages/pro index 31f11bcd33..ce7722ed44 160000 --- a/packages/pro +++ b/packages/pro @@ -1 +1 @@ -Subproject commit 31f11bcd3323d2105a83ebfdee8facc2900bb879 +Subproject commit ce7722ed4474718596b465dcfd49bef36cab2e42 From 331a4e83a82a784ea653a502dd3f584db49372f3 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 19 Jan 2024 15:13:04 +0000 Subject: [PATCH 44/59] submodules --- packages/account-portal | 2 +- packages/pro | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/account-portal b/packages/account-portal index 11469c40d7..05c90ce551 160000 --- a/packages/account-portal +++ b/packages/account-portal @@ -1 +1 @@ -Subproject commit 11469c40d73ea58f2aec80c12c1946289b67c6f2 +Subproject commit 05c90ce55144e260da6688335c16783eab79bf96 diff --git a/packages/pro b/packages/pro index 31f11bcd33..ce7722ed44 160000 --- a/packages/pro +++ b/packages/pro @@ -1 +1 @@ -Subproject commit 31f11bcd3323d2105a83ebfdee8facc2900bb879 +Subproject commit ce7722ed4474718596b465dcfd49bef36cab2e42 From c48f71ab76a3fff26bc0afde62563ffe328b786e Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Fri, 19 Jan 2024 15:42:36 +0000 Subject: [PATCH 45/59] Bump version to 2.15.2 --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 5fe9a6b261..3ab56dc0b1 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.15.1", + "version": "2.15.2", "npmClient": "yarn", "packages": [ "packages/*", From 242dd3ea52e644f827f98f29803c26177e163eee Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Fri, 19 Jan 2024 16:04:44 +0000 Subject: [PATCH 46/59] ux tweaks to new automations setting page --- .../pages/builder/app/[application]/settings/_layout.svelte | 6 +++--- .../_components/HistoryDetailsPanel.svelte | 0 .../_components/StatusRenderer.svelte | 0 .../{automation-history => automations}/index.svelte | 6 +++--- .../pages/builder/app/[application]/settings/index.svelte | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename packages/builder/src/pages/builder/app/[application]/settings/{automation-history => automations}/_components/HistoryDetailsPanel.svelte (100%) rename packages/builder/src/pages/builder/app/[application]/settings/{automation-history => automations}/_components/StatusRenderer.svelte (100%) rename packages/builder/src/pages/builder/app/[application]/settings/{automation-history => automations}/index.svelte (97%) diff --git a/packages/builder/src/pages/builder/app/[application]/settings/_layout.svelte b/packages/builder/src/pages/builder/app/[application]/settings/_layout.svelte index 899b58ecf0..65a13f0bd9 100644 --- a/packages/builder/src/pages/builder/app/[application]/settings/_layout.svelte +++ b/packages/builder/src/pages/builder/app/[application]/settings/_layout.svelte @@ -15,9 +15,9 @@ Automations - See your automation history and edit advanced settings + See your automation history and edit advanced settings Chain automations - Allow automations to trigger from other automations + Allow automations to trigger from other automations
History - Free plan stores up to 1 day of automation history + Free plan stores up to 1 day of automation history