From b6e3c537e919b64570d0275788a109e6335b26e2 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 16 Aug 2021 11:24:25 +0100 Subject: [PATCH 01/12] Add ability for select options to be loaded from a data provider --- .../ComponentSettingsSection.svelte | 24 ++++++++- packages/standard-components/manifest.json | 49 +++++++++++++++++++ .../src/forms/OptionsField.svelte | 45 ++++++++++++++++- 3 files changed, 115 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/ComponentSettingsSection.svelte b/packages/builder/src/components/design/PropertiesPanel/ComponentSettingsSection.svelte index 972a2bb7f..6944163f2 100644 --- a/packages/builder/src/components/design/PropertiesPanel/ComponentSettingsSection.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/ComponentSettingsSection.svelte @@ -32,9 +32,29 @@ if (!control) { return false } - if (setting.dependsOn && isEmpty(componentInstance[setting.dependsOn])) { - return false + + // Parse dependant settings + if (setting.dependsOn) { + let dependantSetting = setting.dependsOn + let dependantValue = null + if (typeof setting.dependsOn === "object") { + dependantSetting = setting.dependsOn.setting + dependantValue = setting.dependsOn.value + } + if (!dependantSetting) { + return false + } + + // If no specific value is depended upon, check if a value exists at all + // for the dependent setting + if (dependantValue == null) { + return !isEmpty(componentInstance[dependantSetting]) + } + + // Otherwise check the value matches + return componentInstance[dependantSetting] === dependantValue } + return true } diff --git a/packages/standard-components/manifest.json b/packages/standard-components/manifest.json index a45283d63..ede9bdd2b 100644 --- a/packages/standard-components/manifest.json +++ b/packages/standard-components/manifest.json @@ -1893,6 +1893,7 @@ "type": "select", "label": "Type", "key": "optionsType", + "defaultValue": "select", "placeholder": "Pick an options type", "options": [ { @@ -1915,6 +1916,54 @@ "label": "Disabled", "key": "disabled", "defaultValue": false + }, + { + "type": "select", + "label": "Options source", + "key": "optionsSource", + "defaultValue": "schema", + "placeholder": "Pick an options source", + "options": [ + { + "label": "Schema", + "value": "schema" + }, + { + "label": "Data provider", + "value": "provider" + }, + { + "label": "Custom", + "value": "custom" + } + ] + }, + { + "type": "dataProvider", + "label": "Options Provider", + "key": "dataProvider", + "dependsOn": { + "setting": "optionsSource", + "value": "provider" + } + }, + { + "type": "field", + "label": "Label Column", + "key": "labelColumn", + "dependsOn": { + "setting": "optionsSource", + "value": "provider" + } + }, + { + "type": "field", + "label": "Value Column", + "key": "valueColumn", + "dependsOn": { + "setting": "optionsSource", + "value": "provider" + } } ] }, diff --git a/packages/standard-components/src/forms/OptionsField.svelte b/packages/standard-components/src/forms/OptionsField.svelte index 18debfb23..f745e0701 100644 --- a/packages/standard-components/src/forms/OptionsField.svelte +++ b/packages/standard-components/src/forms/OptionsField.svelte @@ -8,10 +8,51 @@ export let disabled = false export let optionsType = "select" export let defaultValue + export let optionsSource = "schema" + export let dataProvider + export let labelColumn + export let valueColumn let fieldState let fieldApi let fieldSchema + + $: flatOptions = optionsSource == null || optionsSource === "schema" + $: options = getOptions( + optionsSource, + fieldSchema, + dataProvider, + labelColumn, + valueColumn + ) + + const getOptions = ( + optionsSource, + fieldSchema, + dataProvider, + labelColumn, + valueColumn + ) => { + // Take options from schema + if (optionsSource == null || optionsSource === "schema") { + return fieldSchema?.constraints?.inclusion ?? [] + } + + // Extract options from data provider + if (optionsSource === "provider" && valueColumn) { + let optionsSet = {} + dataProvider?.rows?.forEach(row => { + const value = row?.[valueColumn] + if (value) { + const label = row[labelColumn] || value + optionsSet[value] = { value, label } + } + }) + return Object.values(optionsSet) + } + + return [] + } fieldApi.setValue(e.detail)} + getOptionLabel={flatOptions ? x => x : x => x.label} + getOptionValue={flatOptions ? x => x : x => x.value} /> {:else if optionsType === "radio"} Date: Mon, 16 Aug 2021 17:01:34 +0100 Subject: [PATCH 02/12] Fix screen settings not being saved --- .../design/PropertiesPanel/ScreenSettingsSection.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte b/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte index 81c18d9f1..cfe225e0f 100644 --- a/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte @@ -53,7 +53,7 @@ label={def.label} key={def.key} value={deepGet($currentAsset, def.key)} - on:change={event => setAssetProps(def.key, event.detail, def.parser)} + onChange={val => setAssetProps(def.key, val, def.parser)} {bindings} /> {/each} From 8dfef0d3427922fd40d8c53970f4bc7360937973 Mon Sep 17 00:00:00 2001 From: Maurits Lourens Date: Mon, 16 Aug 2021 21:15:15 +0200 Subject: [PATCH 03/12] return validation errors --- .../components/backend/DataTable/modals/CreateEditRow.svelte | 5 ++++- packages/server/src/api/controllers/row/internal.js | 4 ++-- packages/server/src/api/index.js | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte index 06ab8fd4a..e99f29438 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte @@ -31,7 +31,10 @@ .flat() // Prevent modal closing if there were errors return false - } else if (rowResponse.status === 400 || rowResponse.status === 500) { + } else if (rowResponse.status === 400 && rowResponse.validationErrors) { + errors = Object.keys(rowResponse.validationErrors).map(field => ({message: `${field} ${rowResponse.validationErrors[field][0]}`})) + return false + } else if (rowResponse.status === 500) { errors = [{ message: rowResponse.message }] return false } diff --git a/packages/server/src/api/controllers/row/internal.js b/packages/server/src/api/controllers/row/internal.js index 28c88c1ea..e39bc2aff 100644 --- a/packages/server/src/api/controllers/row/internal.js +++ b/packages/server/src/api/controllers/row/internal.js @@ -57,7 +57,7 @@ exports.patch = async ctx => { }) if (!validateResult.valid) { - throw validateResult.errors + throw { validation: validateResult.errors } } // returned row is cleaned and prepared for writing to DB @@ -105,7 +105,7 @@ exports.save = async function (ctx) { }) if (!validateResult.valid) { - throw validateResult.errors + throw { validation: validateResult.errors } } // make sure link rows are up to date diff --git a/packages/server/src/api/index.js b/packages/server/src/api/index.js index 81601eea1..f6e5648a2 100644 --- a/packages/server/src/api/index.js +++ b/packages/server/src/api/index.js @@ -58,6 +58,7 @@ router.use(async (ctx, next) => { ctx.body = { message: err.message, status: ctx.status, + validationErrors: err.validation } if (env.NODE_ENV !== "jest") { ctx.log.error(err) From a2e7fe91dd1d29b25ccec6157e4db3eda5cc1488 Mon Sep 17 00:00:00 2001 From: Maurits Lourens Date: Mon, 16 Aug 2021 22:07:15 +0200 Subject: [PATCH 04/12] fix lint issues --- .../components/backend/DataTable/modals/CreateEditRow.svelte | 4 +++- packages/server/src/api/index.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte index e99f29438..ce52287c9 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditRow.svelte @@ -32,7 +32,9 @@ // Prevent modal closing if there were errors return false } else if (rowResponse.status === 400 && rowResponse.validationErrors) { - errors = Object.keys(rowResponse.validationErrors).map(field => ({message: `${field} ${rowResponse.validationErrors[field][0]}`})) + errors = Object.keys(rowResponse.validationErrors).map(field => ({ + message: `${field} ${rowResponse.validationErrors[field][0]}`, + })) return false } else if (rowResponse.status === 500) { errors = [{ message: rowResponse.message }] diff --git a/packages/server/src/api/index.js b/packages/server/src/api/index.js index f6e5648a2..c473bf619 100644 --- a/packages/server/src/api/index.js +++ b/packages/server/src/api/index.js @@ -58,7 +58,7 @@ router.use(async (ctx, next) => { ctx.body = { message: err.message, status: ctx.status, - validationErrors: err.validation + validationErrors: err.validation, } if (env.NODE_ENV !== "jest") { ctx.log.error(err) From 70600ca43894f512b47ea4b8e62718f45c90b7f4 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Mon, 16 Aug 2021 20:54:33 +0000 Subject: [PATCH 05/12] v0.9.105-alpha.13 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 8 ++++---- packages/server/package.json | 10 +++++----- packages/standard-components/package.json | 4 ++-- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lerna.json b/lerna.json index 39bf5529e..8f7438419 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 67f729ff4..a2df17e7f 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 0c8205239..4ee11689d 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": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index ab4bae464..e07dd88d0 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.12", - "@budibase/client": "^0.9.105-alpha.12", + "@budibase/bbui": "^0.9.105-alpha.13", + "@budibase/client": "^0.9.105-alpha.13", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.105-alpha.12", + "@budibase/string-templates": "^0.9.105-alpha.13", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 1e1828796..289fad1e2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index b53341c98..5036b04ee 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -18,9 +18,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.12", - "@budibase/standard-components": "^0.9.105-alpha.12", - "@budibase/string-templates": "^0.9.105-alpha.12", + "@budibase/bbui": "^0.9.105-alpha.13", + "@budibase/standard-components": "^0.9.105-alpha.13", + "@budibase/string-templates": "^0.9.105-alpha.13", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index acd4b1618..dfb069c7d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -62,9 +62,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.105-alpha.12", - "@budibase/client": "^0.9.105-alpha.12", - "@budibase/string-templates": "^0.9.105-alpha.12", + "@budibase/auth": "^0.9.105-alpha.13", + "@budibase/client": "^0.9.105-alpha.13", + "@budibase/string-templates": "^0.9.105-alpha.13", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", @@ -117,7 +117,7 @@ "devDependencies": { "@babel/core": "^7.14.3", "@babel/preset-env": "^7.14.4", - "@budibase/standard-components": "^0.9.105-alpha.12", + "@budibase/standard-components": "^0.9.105-alpha.13", "@jest/test-sequencer": "^24.8.0", "@types/bull": "^3.15.1", "@types/jest": "^26.0.23", diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json index b94e1f9a0..9b2954f06 100644 --- a/packages/standard-components/package.json +++ b/packages/standard-components/package.json @@ -29,11 +29,11 @@ "keywords": [ "svelte" ], - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "license": "MIT", "gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc", "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.12", + "@budibase/bbui": "^0.9.105-alpha.13", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 5ecfe78d5..cce6f893d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index b96a5c6da..f43098f15 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.105-alpha.12", + "version": "0.9.105-alpha.13", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -23,8 +23,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.105-alpha.12", - "@budibase/string-templates": "^0.9.105-alpha.12", + "@budibase/auth": "^0.9.105-alpha.13", + "@budibase/string-templates": "^0.9.105-alpha.13", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0", From a39c4b9d31c4c0eec465bb56add3c34631ee04e1 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 17 Aug 2021 08:36:18 +0000 Subject: [PATCH 06/12] v0.9.105-alpha.14 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 8 ++++---- packages/server/package.json | 10 +++++----- packages/standard-components/package.json | 4 ++-- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lerna.json b/lerna.json index 8f7438419..db3377067 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index a2df17e7f..cd20294ed 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 4ee11689d..71199b780 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": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index e07dd88d0..ee84d7ff6 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.13", - "@budibase/client": "^0.9.105-alpha.13", + "@budibase/bbui": "^0.9.105-alpha.14", + "@budibase/client": "^0.9.105-alpha.14", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.105-alpha.13", + "@budibase/string-templates": "^0.9.105-alpha.14", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 289fad1e2..ef8b3d527 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 5036b04ee..624471f34 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -18,9 +18,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.13", - "@budibase/standard-components": "^0.9.105-alpha.13", - "@budibase/string-templates": "^0.9.105-alpha.13", + "@budibase/bbui": "^0.9.105-alpha.14", + "@budibase/standard-components": "^0.9.105-alpha.14", + "@budibase/string-templates": "^0.9.105-alpha.14", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index dfb069c7d..c10f9122f 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -62,9 +62,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.105-alpha.13", - "@budibase/client": "^0.9.105-alpha.13", - "@budibase/string-templates": "^0.9.105-alpha.13", + "@budibase/auth": "^0.9.105-alpha.14", + "@budibase/client": "^0.9.105-alpha.14", + "@budibase/string-templates": "^0.9.105-alpha.14", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", @@ -117,7 +117,7 @@ "devDependencies": { "@babel/core": "^7.14.3", "@babel/preset-env": "^7.14.4", - "@budibase/standard-components": "^0.9.105-alpha.13", + "@budibase/standard-components": "^0.9.105-alpha.14", "@jest/test-sequencer": "^24.8.0", "@types/bull": "^3.15.1", "@types/jest": "^26.0.23", diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json index 9b2954f06..32b5197eb 100644 --- a/packages/standard-components/package.json +++ b/packages/standard-components/package.json @@ -29,11 +29,11 @@ "keywords": [ "svelte" ], - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "license": "MIT", "gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc", "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.13", + "@budibase/bbui": "^0.9.105-alpha.14", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index cce6f893d..6caaffe7e 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index f43098f15..6b4f2c1fa 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.105-alpha.13", + "version": "0.9.105-alpha.14", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -23,8 +23,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.105-alpha.13", - "@budibase/string-templates": "^0.9.105-alpha.13", + "@budibase/auth": "^0.9.105-alpha.14", + "@budibase/string-templates": "^0.9.105-alpha.14", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0", From 4c3736554922c73384736094ccdfc6ab086dfc42 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Tue, 17 Aug 2021 10:32:01 +0100 Subject: [PATCH 07/12] Allow users to define custom picker options --- .../OptionsEditor/OptionsDrawer.svelte | 83 +++++++++++++++++++ .../OptionsEditor/OptionsEditor.svelte | 29 +++++++ .../PropertyControls/componentSettings.js | 3 + packages/standard-components/manifest.json | 8 ++ .../src/forms/OptionsField.svelte | 6 ++ 5 files changed, 129 insertions(+) create mode 100644 packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte create mode 100644 packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte new file mode 100644 index 000000000..e3b3fa1ab --- /dev/null +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte @@ -0,0 +1,83 @@ + + + +
+ + + {#if !options.length} + Add a custom option. + {/if} + + +
+ {#each options as option (option.id)} + + + removeOption(option.id)} + /> + {/each} +
+
+ +
+
+
+
+ + diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte new file mode 100644 index 000000000..78d2dc530 --- /dev/null +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte @@ -0,0 +1,29 @@ + + +Define Options + + + Add custom picker otpions + + + + diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js index 843597171..641ae9edb 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js @@ -20,6 +20,8 @@ import LongFormFieldSelect from "./LongFormFieldSelect.svelte" import DateTimeFieldSelect from "./DateTimeFieldSelect.svelte" import AttachmentFieldSelect from "./AttachmentFieldSelect.svelte" import RelationshipFieldSelect from "./RelationshipFieldSelect.svelte" +import OptionsEditor from "./OptionsEditor/OptionsEditor.svelte" + const componentMap = { text: Input, @@ -34,6 +36,7 @@ const componentMap = { icon: IconSelect, field: FieldSelect, multifield: MultiFieldSelect, + options: OptionsEditor, schema: SchemaSelect, section: SectionSelect, navigation: NavigationEditor, diff --git a/packages/standard-components/manifest.json b/packages/standard-components/manifest.json index ede9bdd2b..283ef1e05 100644 --- a/packages/standard-components/manifest.json +++ b/packages/standard-components/manifest.json @@ -1964,7 +1964,15 @@ "setting": "optionsSource", "value": "provider" } + }, + { + "type": "options", + "key": "customOptions", + "dependsOn": { + "setting": "optionsSource", + "value": "custom" } + } ] }, "booleanfield": { diff --git a/packages/standard-components/src/forms/OptionsField.svelte b/packages/standard-components/src/forms/OptionsField.svelte index f745e0701..607898499 100644 --- a/packages/standard-components/src/forms/OptionsField.svelte +++ b/packages/standard-components/src/forms/OptionsField.svelte @@ -12,6 +12,7 @@ export let dataProvider export let labelColumn export let valueColumn + export let customOptions let fieldState let fieldApi @@ -51,6 +52,11 @@ return Object.values(optionsSet) } + // Extract custom options + if (optionsSource === "custom" && customOptions) { + return customOptions + } + return [] } From ac850fdc19b5652d49f7c25e45f291e6c905f0dd Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Tue, 17 Aug 2021 11:17:03 +0100 Subject: [PATCH 08/12] text updates --- .../PropertyControls/OptionsEditor/OptionsDrawer.svelte | 2 +- .../PropertyControls/OptionsEditor/OptionsEditor.svelte | 2 +- .../PropertiesPanel/PropertyControls/componentSettings.js | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte index e3b3fa1ab..52fe51912 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte @@ -32,7 +32,7 @@ {#if !options.length} - Add a custom option. + Add an option to get started. {/if} diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte index 78d2dc530..3ab3f9a24 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte @@ -22,7 +22,7 @@ Define Options - Add custom picker otpions + Add custom picker options diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js index 641ae9edb..edea13ddf 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/componentSettings.js @@ -22,7 +22,6 @@ import AttachmentFieldSelect from "./AttachmentFieldSelect.svelte" import RelationshipFieldSelect from "./RelationshipFieldSelect.svelte" import OptionsEditor from "./OptionsEditor/OptionsEditor.svelte" - const componentMap = { text: Input, select: Select, From e274eeffce37ed200d58ac8d2250bfe7f5bb0824 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 17 Aug 2021 11:33:09 +0100 Subject: [PATCH 09/12] Tidy up options drawer styles --- .../OptionsEditor/OptionsDrawer.svelte | 67 +++++++++---------- .../OptionsEditor/OptionsEditor.svelte | 2 +- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte index 52fe51912..340c1eb10 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsDrawer.svelte @@ -29,39 +29,38 @@
- - - {#if !options.length} - Add an option to get started. - {/if} - - -
- {#each options as option (option.id)} - - - removeOption(option.id)} - /> - {/each} -
+ + {#if !options.length} + Add an option to get started. + {/if} + {#if options?.length} +
+ {#each options as option (option.id)} + + + removeOption(option.id)} + /> + {/each} +
+ {/if}
- +
@@ -70,7 +69,7 @@ diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte index 3ab3f9a24..e486312fe 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte @@ -22,7 +22,7 @@ Define Options - Add custom picker options + Define the options for this picker. From e92455dc88c77f2bdff4c897c972e514260e58eb Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 17 Aug 2021 11:34:46 +0100 Subject: [PATCH 10/12] Ensure both label and value are set when defining custom options --- .../PropertyControls/OptionsEditor/OptionsEditor.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte index e486312fe..aa3d8c69c 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte @@ -12,7 +12,7 @@ const saveFilter = async () => { // Filter out null objects - tempValue = tempValue.filter(optionValue => optionValue.value) + tempValue = tempValue.filter(option => option.value && option.label) dispatch("change", tempValue) notifications.success("Options saved.") drawer.hide() From 8a12aaf27a2a8189b8ad0ce6435859a9d6fdac7c Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 17 Aug 2021 11:36:33 +0100 Subject: [PATCH 11/12] Remove notification when saving custom options --- .../PropertyControls/OptionsEditor/OptionsEditor.svelte | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte index aa3d8c69c..4d74ea994 100644 --- a/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/PropertyControls/OptionsEditor/OptionsEditor.svelte @@ -1,5 +1,5 @@ From 34edf4fb14aea768e14f6e7ed745eec456a165ce Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 17 Aug 2021 12:16:22 +0000 Subject: [PATCH 12/12] v0.9.105-alpha.15 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 8 ++++---- packages/server/package.json | 10 +++++----- packages/standard-components/package.json | 4 ++-- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/lerna.json b/lerna.json index db3377067..4b95c2bf7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index cd20294ed..c851e49f5 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 71199b780..b90efde5c 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": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index ee84d7ff6..bd7fa1693 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.14", - "@budibase/client": "^0.9.105-alpha.14", + "@budibase/bbui": "^0.9.105-alpha.15", + "@budibase/client": "^0.9.105-alpha.15", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.105-alpha.14", + "@budibase/string-templates": "^0.9.105-alpha.15", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index ef8b3d527..957bec2ff 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 624471f34..bd3d06879 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -18,9 +18,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.14", - "@budibase/standard-components": "^0.9.105-alpha.14", - "@budibase/string-templates": "^0.9.105-alpha.14", + "@budibase/bbui": "^0.9.105-alpha.15", + "@budibase/standard-components": "^0.9.105-alpha.15", + "@budibase/string-templates": "^0.9.105-alpha.15", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index c10f9122f..0f170a32f 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -62,9 +62,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.105-alpha.14", - "@budibase/client": "^0.9.105-alpha.14", - "@budibase/string-templates": "^0.9.105-alpha.14", + "@budibase/auth": "^0.9.105-alpha.15", + "@budibase/client": "^0.9.105-alpha.15", + "@budibase/string-templates": "^0.9.105-alpha.15", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", @@ -117,7 +117,7 @@ "devDependencies": { "@babel/core": "^7.14.3", "@babel/preset-env": "^7.14.4", - "@budibase/standard-components": "^0.9.105-alpha.14", + "@budibase/standard-components": "^0.9.105-alpha.15", "@jest/test-sequencer": "^24.8.0", "@types/bull": "^3.15.1", "@types/jest": "^26.0.23", diff --git a/packages/standard-components/package.json b/packages/standard-components/package.json index 32b5197eb..771297e80 100644 --- a/packages/standard-components/package.json +++ b/packages/standard-components/package.json @@ -29,11 +29,11 @@ "keywords": [ "svelte" ], - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "license": "MIT", "gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc", "dependencies": { - "@budibase/bbui": "^0.9.105-alpha.14", + "@budibase/bbui": "^0.9.105-alpha.15", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 6caaffe7e..e29c4510c 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 6b4f2c1fa..91ab9594b 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.105-alpha.14", + "version": "0.9.105-alpha.15", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -23,8 +23,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.105-alpha.14", - "@budibase/string-templates": "^0.9.105-alpha.14", + "@budibase/auth": "^0.9.105-alpha.15", + "@budibase/string-templates": "^0.9.105-alpha.15", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0",