From 5311c8ee7e75309e9d9c7672c8a86ae77bd71dd4 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Wed, 17 Nov 2021 13:49:34 +0000 Subject: [PATCH 01/41] save inputted test data --- .../builderStore/store/automation/index.js | 2 +- .../FlowChart/FlowItem.svelte | 7 +-- .../SetupPanel/AutomationBlockSetup.svelte | 44 +++++++++---------- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/packages/builder/src/builderStore/store/automation/index.js b/packages/builder/src/builderStore/store/automation/index.js index 16cc490bb2..50a1f476ef 100644 --- a/packages/builder/src/builderStore/store/automation/index.js +++ b/packages/builder/src/builderStore/store/automation/index.js @@ -87,7 +87,7 @@ const automationActions = store => ({ const response = await api.post(`/api/automations/${_id}/test`, testData) const json = await response.json() store.update(state => { - state.selectedAutomation.testResults = json + state.selectedAutomation.automation.testResults = json return state }) }, diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte index 7ddc5c3e48..5ce55437be 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte @@ -25,9 +25,10 @@ let resultsModal let setupToggled let blockComplete - $: testResult = $automationStore.selectedAutomation.testResults?.steps.filter( - step => step.stepId === block.stepId - ) + $: testResult = + $automationStore.selectedAutomation.automation.testResults?.steps.filter( + step => step.stepId === block.stepId + ) $: isTrigger = block.type === "TRIGGER" diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte index 874a0e68eb..e7208518d5 100644 --- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte +++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte @@ -51,31 +51,31 @@ : { schema: {} } $: schemaFields = table ? Object.values(table.schema) : [] - const onChange = debounce( - async function (e, key) { - if (isTestModal) { - // Special case for webhook, as it requires a body, but the schema already brings back the body's contents - if (stepId === "WEBHOOK") { - automationStore.actions.addTestDataToAutomation({ - body: { - [key]: e.detail, - ...$automationStore.selectedAutomation.automation.testData.body, - }, - }) - } + const onChange = debounce(async function (e, key) { + if (isTestModal) { + // Special case for webhook, as it requires a body, but the schema already brings back the body's contents + if (stepId === "WEBHOOK") { automationStore.actions.addTestDataToAutomation({ - [key]: e.detail, + body: { + [key]: e.detail, + ...$automationStore.selectedAutomation.automation.testData.body, + }, }) - testData[key] = e.detail - } else { - block.inputs[key] = e.detail - await automationStore.actions.save( - $automationStore.selectedAutomation?.automation - ) } - }, - isTestModal ? 0 : 800 - ) + automationStore.actions.addTestDataToAutomation({ + [key]: e.detail, + }) + testData[key] = e.detail + await automationStore.actions.save( + $automationStore.selectedAutomation?.automation + ) + } else { + block.inputs[key] = e.detail + await automationStore.actions.save( + $automationStore.selectedAutomation?.automation + ) + } + }, 800) function getAvailableBindings(block, automation) { if (!block || !automation) { From f237cd891e2bf5a7204bc3c23bf606a202464953 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Wed, 17 Nov 2021 14:28:14 +0000 Subject: [PATCH 02/41] fix animation issue with automation blocks --- .../automation/AutomationBuilder/FlowChart/FlowChart.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowChart.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowChart.svelte index fee8afd711..2d6881d652 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowChart.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowChart.svelte @@ -84,7 +84,6 @@ class="block" animate:flip={{ duration: 500 }} in:fly|local={{ x: 500, duration: 1500 }} - out:fly|local={{ x: 500, duration: 800 }} > From b902e017dd3b7fbc57befac08a2b011021ef95c7 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 18 Nov 2021 11:41:51 +0000 Subject: [PATCH 03/41] fix bug with test results --- .../builder/src/builderStore/store/automation/index.js | 4 +++- .../automation/AutomationBuilder/FlowChart/FlowItem.svelte | 7 +++---- .../automation/AutomationPanel/AutomationList.svelte | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/builder/src/builderStore/store/automation/index.js b/packages/builder/src/builderStore/store/automation/index.js index 50a1f476ef..7bd0ccca22 100644 --- a/packages/builder/src/builderStore/store/automation/index.js +++ b/packages/builder/src/builderStore/store/automation/index.js @@ -87,13 +87,15 @@ const automationActions = store => ({ const response = await api.post(`/api/automations/${_id}/test`, testData) const json = await response.json() store.update(state => { - state.selectedAutomation.automation.testResults = json + state.selectedAutomation.testResults = json return state }) }, select: automation => { store.update(state => { + let testResults = state.selectedAutomation?.testResults state.selectedAutomation = new Automation(cloneDeep(automation)) + state.selectedAutomation.testResults = testResults state.selectedBlock = null return state }) diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte index 5ce55437be..ba80e195ab 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte @@ -25,11 +25,10 @@ let resultsModal let setupToggled let blockComplete - $: testResult = - $automationStore.selectedAutomation.automation.testResults?.steps.filter( - step => step.stepId === block.stepId - ) + $: testResult = $automationStore.selectedAutomation.testResults?.steps.filter( + step => step.stepId === block.stepId + ) $: isTrigger = block.type === "TRIGGER" $: selected = $automationStore.selectedBlock?.id === block.id diff --git a/packages/builder/src/components/automation/AutomationPanel/AutomationList.svelte b/packages/builder/src/components/automation/AutomationPanel/AutomationList.svelte index 79de4bfbe6..aa3ab027a8 100644 --- a/packages/builder/src/components/automation/AutomationPanel/AutomationList.svelte +++ b/packages/builder/src/components/automation/AutomationPanel/AutomationList.svelte @@ -9,6 +9,7 @@ onMount(() => { automationStore.actions.fetch() }) + function selectAutomation(automation) { automationStore.actions.select(automation) $goto(`./${automation._id}`) From d16ea9108247bb8ffcf61bbcf38edd53b91e3531 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 18 Nov 2021 14:29:31 +0000 Subject: [PATCH 04/41] remove uneeded add action button --- .../AutomationBuilder/FlowChart/FlowItem.svelte | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte index ba80e195ab..7f379ba138 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/FlowItem.svelte @@ -150,15 +150,6 @@ >Finish and test automation {/if} - {/if} From 0b8c074b81ea8c793df51dc12fb541237664c0c9 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Thu, 18 Nov 2021 15:14:23 +0000 Subject: [PATCH 05/41] disable ability to rename external datasource --- .../backend/TableNavigator/popovers/EditTablePopover.svelte | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte b/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte index 04094b881a..64c6c0225a 100644 --- a/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte +++ b/packages/builder/src/components/backend/TableNavigator/popovers/EditTablePopover.svelte @@ -22,7 +22,7 @@ let templateScreens let willBeDeleted - $: external = table?.type === "external" + $: internal = table?.type === "internal" function showDeleteModal() { templateScreens = $allScreens.filter( @@ -66,7 +66,9 @@
- Edit + {#if internal} + Edit + {/if} Delete From f77f7c1e5f09a8dd95ad6c07f6b858d3e5af3903 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 18 Nov 2021 15:36:16 +0000 Subject: [PATCH 06/41] Add dynamic filter component --- .../design/AppPreview/componentStructure.json | 3 +- packages/client/manifest.json | 11 ++ .../app/dynamic-filter/DynamicFilter.svelte | 37 ++++ .../app/dynamic-filter/FilterModal.svelte | 176 ++++++++++++++++++ .../components/app/dynamic-filter/index.js | 1 + packages/client/src/components/app/index.js | 1 + 6 files changed, 228 insertions(+), 1 deletion(-) create mode 100644 packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte create mode 100644 packages/client/src/components/app/dynamic-filter/FilterModal.svelte create mode 100644 packages/client/src/components/app/dynamic-filter/index.js diff --git a/packages/builder/src/components/design/AppPreview/componentStructure.json b/packages/builder/src/components/design/AppPreview/componentStructure.json index 357ea5a7be..b237347c44 100644 --- a/packages/builder/src/components/design/AppPreview/componentStructure.json +++ b/packages/builder/src/components/design/AppPreview/componentStructure.json @@ -67,6 +67,7 @@ "icon", "embed" ] - } + }, + "dynamicfilter" ] diff --git a/packages/client/manifest.json b/packages/client/manifest.json index 050ac4a63a..ba7f95e42e 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -2623,6 +2623,17 @@ } ] }, + "dynamicfilter": { + "name": "Dynamic Filter", + "icon": "FilterEdit", + "settings": [ + { + "type": "dataProvider", + "label": "Provider", + "key": "dataProvider" + } + ] + }, "tableblock": { "block": true, "name": "Table block", diff --git a/packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte b/packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte new file mode 100644 index 0000000000..6cd0d2be5b --- /dev/null +++ b/packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte @@ -0,0 +1,37 @@ + + +
+ + + + + + +
diff --git a/packages/client/src/components/app/dynamic-filter/FilterModal.svelte b/packages/client/src/components/app/dynamic-filter/FilterModal.svelte new file mode 100644 index 0000000000..99b9a1a6f6 --- /dev/null +++ b/packages/client/src/components/app/dynamic-filter/FilterModal.svelte @@ -0,0 +1,176 @@ + + + +
+ + + {#if !filters?.length} + Add your first filter expression. + {:else} + Results are filtered to only those which match all of the following + constraints. + {/if} + + {#if filters?.length} +
+ {#each filters as filter, idx} + onOperatorChange(filter, e.detail)} + placeholder={null} + /> + {#if ["string", "longform", "number"].includes(filter.type)} + + {:else if ["options", "array"].includes(filter.type)} + + {:else if filter.type === "boolean"} + + {:else if filter.type === "datetime"} + + {:else} + + {/if} + duplicateFilter(filter.id)} + /> + removeFilter(filter.id)} + /> + {/each} +
+ {/if} +
+ +
+
+
+
+ + diff --git a/packages/client/src/components/app/dynamic-filter/index.js b/packages/client/src/components/app/dynamic-filter/index.js new file mode 100644 index 0000000000..5ac7d31730 --- /dev/null +++ b/packages/client/src/components/app/dynamic-filter/index.js @@ -0,0 +1 @@ +export { default as dynamicfilter } from "./DynamicFilter.svelte" diff --git a/packages/client/src/components/app/index.js b/packages/client/src/components/app/index.js index 92725f0738..f5d085e97b 100644 --- a/packages/client/src/components/app/index.js +++ b/packages/client/src/components/app/index.js @@ -33,6 +33,7 @@ export * from "./charts" export * from "./forms" export * from "./table" export * from "./blocks" +export * from "./dynamic-filter" // Deprecated component left for compatibility in old apps export { default as navigation } from "./deprecated/Navigation.svelte" From 34a00df86b5c3f9d523ef9d3ac22ed578f911250 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 18 Nov 2021 15:43:51 +0000 Subject: [PATCH 07/41] Add settings to dynamic filter to control button text and allowed filter fields --- packages/client/manifest.json | 12 +++++++++ .../app/dynamic-filter/DynamicFilter.svelte | 27 ++++++++++++++----- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/packages/client/manifest.json b/packages/client/manifest.json index ba7f95e42e..da1d87c5ab 100644 --- a/packages/client/manifest.json +++ b/packages/client/manifest.json @@ -2631,6 +2631,18 @@ "type": "dataProvider", "label": "Provider", "key": "dataProvider" + }, + { + "type": "multifield", + "label": "Allowed filter fields", + "key": "allowedFields", + "placeholder": "All fields" + }, + { + "type": "text", + "label": "Button text", + "key": "buttonText", + "defaultValue": "Edit filters" } ] }, diff --git a/packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte b/packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte index 6cd0d2be5b..80a1b919bb 100644 --- a/packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte +++ b/packages/client/src/components/app/dynamic-filter/DynamicFilter.svelte @@ -4,17 +4,32 @@ import FilterModal from "./FilterModal.svelte" export let dataProvider + export let allowedFields + export let buttonText const component = getContext("component") const { styleable } = getContext("sdk") - $: schema = dataProvider?.schema - $: schemaFields = Object.values(schema || {}) - let modal let tmpFilters = [] let filters = [] + $: schema = dataProvider?.schema + $: schemaFields = getSchemaFields(schema, allowedFields) + $: text = buttonText || "Edit filters" + + const getSchemaFields = (schema, allowedFields) => { + let clonedSchema = {} + if (!allowedFields?.length) { + clonedSchema = schema + } else { + allowedFields?.forEach(field => { + clonedSchema[field] = schema[field] + }) + } + return Object.values(clonedSchema || {}) + } + const openEditor = () => { tmpFilters = [...filters] modal.show() @@ -26,11 +41,11 @@
- - + From 33e5e198b7bb333017c30bc2f2e7f990f4f74d89 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 18 Nov 2021 18:41:37 +0000 Subject: [PATCH 08/41] Refactor how extending data provider queries works to support multiple extensions per key --- .../src/components/app/DataProvider.svelte | 17 +++++---- .../src/components/app/DateRangePicker.svelte | 38 ++++++++++++------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/packages/client/src/components/app/DataProvider.svelte b/packages/client/src/components/app/DataProvider.svelte index 08f2fb06cd..e9d306cc3b 100644 --- a/packages/client/src/components/app/DataProvider.svelte +++ b/packages/client/src/components/app/DataProvider.svelte @@ -275,11 +275,10 @@ allRows = res.rows } - const addQueryExtension = (key, operator, field, value) => { - if (!key || !operator || !field) { + const addQueryExtension = (key, extension) => { + if (!key || !extension) { return } - const extension = { operator, field, value } queryExtensions = { ...queryExtensions, [key]: extension } } @@ -295,11 +294,13 @@ const extendQuery = (defaultQuery, extensions) => { const extensionValues = Object.values(extensions || {}) let extendedQuery = { ...defaultQuery } - extensionValues.forEach(({ operator, field, value }) => { - extendedQuery[operator] = { - ...extendedQuery[operator], - [field]: value, - } + extensionValues.forEach(extension => { + Object.entries(extension || {}).forEach(([operator, fields]) => { + extendedQuery[operator] = { + ...extendedQuery[operator], + ...fields, + } + }) }) if (JSON.stringify(query) !== JSON.stringify(extendedQuery)) { diff --git a/packages/client/src/components/app/DateRangePicker.svelte b/packages/client/src/components/app/DateRangePicker.svelte index 651a19abc4..9f3207d4d2 100644 --- a/packages/client/src/components/app/DateRangePicker.svelte +++ b/packages/client/src/components/app/DateRangePicker.svelte @@ -13,15 +13,6 @@ const component = getContext("component") const { styleable, ActionTypes, getAction } = getContext("sdk") - - $: addExtension = getAction( - dataProvider?.id, - ActionTypes.AddDataProviderQueryExtension - ) - $: removeExtension = getAction( - dataProvider?.id, - ActionTypes.RemoveDataProviderQueryExtension - ) const options = [ "Last 1 day", "Last 7 days", @@ -32,10 +23,24 @@ ] let value = options.includes(defaultValue) ? defaultValue : "Last 30 days" - $: queryExtension = getQueryExtension(value) - $: addExtension?.($component.id, "range", field, queryExtension) + $: dataProviderId = dataProvider?.id + $: addExtension = getAction( + dataProviderId, + ActionTypes.AddDataProviderQueryExtension + ) + $: removeExtension = getAction( + dataProviderId, + ActionTypes.RemoveDataProviderQueryExtension + ) + $: queryExtension = getQueryExtension(field, value) + $: addExtension?.($component.id, queryExtension) + + const getQueryExtension = (field, value) => { + if (!field || !value) { + return null + } + console.log("getting extension for " + value) - const getQueryExtension = value => { let low = dayjs.utc().subtract(1, "year") let high = dayjs.utc().add(1, "day") @@ -51,7 +56,14 @@ low = dayjs.utc().subtract(6, "months") } - return { low: low.format(), high: high.format() } + return { + range: { + [field]: { + low: low.format(), + high: high.format(), + }, + }, + } } onDestroy(() => { From b7b424b7f89d8eaca2e02b1fc297b35b315c08b8 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 18 Nov 2021 20:31:00 +0000 Subject: [PATCH 09/41] Add modal container to top level of client apps --- packages/client/src/components/ClientApp.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/client/src/components/ClientApp.svelte b/packages/client/src/components/ClientApp.svelte index 119a26800f..98dec9667b 100644 --- a/packages/client/src/components/ClientApp.svelte +++ b/packages/client/src/components/ClientApp.svelte @@ -121,6 +121,9 @@ -->
+ + Autogenerated Screens - {#each $tables.list.filter(table => table.type !== "external" && table._id !== "ta_users") as table} + {#each $tables.list.filter(table => table._id !== "ta_users") as table}
x.name.includes(table.name))} From a0fd1993dca0b39d292e2f1496c5655ccad7e497 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Tue, 23 Nov 2021 15:02:10 +0000 Subject: [PATCH 30/41] remove log --- .../src/components/design/NavigationPanel/NewScreenModal.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte index 398ff72d23..e7c9ef6ff2 100644 --- a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte +++ b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte @@ -13,7 +13,6 @@ $: blankSelected = selectedScreens?.length === 1 $: autoSelected = selectedScreens?.length > 0 && !blankSelected let templates = getTemplates($store, $tables.list) - console.log($tables.list) const toggleScreenSelection = table => { if (selectedScreens.find(s => s.name.includes(table.name))) { selectedScreens = selectedScreens.filter( From 5ba6f4bd54bf5651990889c4b4feb1ac06671e48 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 23 Nov 2021 15:23:55 +0000 Subject: [PATCH 31/41] v0.9.185-alpha.16 --- 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 | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 34b27e7623..549dbfe8ff 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.185-alpha.15", + "version": "0.9.185-alpha.16", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 8c18da2881..801ba46825 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.185-alpha.15", + "version": "0.9.185-alpha.16", "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 c63b223dd6..bad57f07ba 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.185-alpha.15", + "version": "0.9.185-alpha.16", "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 2428e04229..ffa6191d88 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.185-alpha.15", + "version": "0.9.185-alpha.16", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.185-alpha.15", - "@budibase/client": "^0.9.185-alpha.15", + "@budibase/bbui": "^0.9.185-alpha.16", + "@budibase/client": "^0.9.185-alpha.16", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.185-alpha.15", + "@budibase/string-templates": "^0.9.185-alpha.16", "@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 b46d7b7a94..1036a1cdb4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.185-alpha.15", + "version": "0.9.185-alpha.16", "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 fe0710427b..bd823aff26 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.185-alpha.15", + "version": "0.9.185-alpha.16", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^0.9.185-alpha.15", + "@budibase/bbui": "^0.9.185-alpha.16", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.185-alpha.15", + "@budibase/string-templates": "^0.9.185-alpha.16", "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 58d95665df..25ec6c0835 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.185-alpha.15", + "version": "0.9.185-alpha.16", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -68,9 +68,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.185-alpha.15", - "@budibase/client": "^0.9.185-alpha.15", - "@budibase/string-templates": "^0.9.185-alpha.15", + "@budibase/auth": "^0.9.185-alpha.16", + "@budibase/client": "^0.9.185-alpha.16", + "@budibase/string-templates": "^0.9.185-alpha.16", "@bull-board/api": "^3.7.0", "@bull-board/koa": "^3.7.0", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 33e41b825d..2817c86a4f 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.185-alpha.15", + "version": "0.9.185-alpha.16", "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 239cd1231e..745ec328aa 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.185-alpha.15", + "version": "0.9.185-alpha.16", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -29,8 +29,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.185-alpha.15", - "@budibase/string-templates": "^0.9.185-alpha.15", + "@budibase/auth": "^0.9.185-alpha.16", + "@budibase/string-templates": "^0.9.185-alpha.16", "@koa/router": "^8.0.0", "@sentry/node": "^6.0.0", "@techpass/passport-openidconnect": "^0.3.0", From 24a700f3910cce2360268cd65f71f74cd53adfbd Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 23 Nov 2021 16:40:31 +0000 Subject: [PATCH 32/41] Add readonly prop to combobox --- packages/bbui/src/Form/Combobox.svelte | 2 ++ packages/bbui/src/Form/Core/Combobox.svelte | 2 ++ packages/bbui/src/Form/Core/TextField.svelte | 8 ++++---- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/bbui/src/Form/Combobox.svelte b/packages/bbui/src/Form/Combobox.svelte index 368e8bec4b..83927b05db 100644 --- a/packages/bbui/src/Form/Combobox.svelte +++ b/packages/bbui/src/Form/Combobox.svelte @@ -6,6 +6,7 @@ export let value = null export let label = undefined export let disabled = false + export let readonly = false export let labelPosition = "above" export let error = null export let placeholder = "Choose an option or type" @@ -33,6 +34,7 @@ {value} {options} {placeholder} + {readonly} {getOptionLabel} {getOptionValue} on:change={onChange} diff --git a/packages/bbui/src/Form/Core/Combobox.svelte b/packages/bbui/src/Form/Core/Combobox.svelte index 6a1390eeea..6a6423cccf 100644 --- a/packages/bbui/src/Form/Core/Combobox.svelte +++ b/packages/bbui/src/Form/Core/Combobox.svelte @@ -9,6 +9,7 @@ export let id = null export let placeholder = "Choose an option or type" export let disabled = false + export let readonly = false export let error = null export let options = [] export let getOptionLabel = option => option @@ -73,6 +74,7 @@ value={value || ""} placeholder={placeholder || ""} {disabled} + {readonly} class="spectrum-Textfield-input spectrum-InputGroup-input" />
diff --git a/packages/bbui/src/Form/Core/TextField.svelte b/packages/bbui/src/Form/Core/TextField.svelte index 85c71338f7..d2064ddde0 100644 --- a/packages/bbui/src/Form/Core/TextField.svelte +++ b/packages/bbui/src/Form/Core/TextField.svelte @@ -16,15 +16,15 @@ const dispatch = createEventDispatcher() let focus = false - const updateValue = value => { + const updateValue = newValue => { if (readonly) { return } if (type === "number") { - const float = parseFloat(value) - value = isNaN(float) ? null : float + const float = parseFloat(newValue) + newValue = isNaN(float) ? null : float } - dispatch("change", value) + dispatch("change", newValue) } const onFocus = () => { From 19d74d3fb6b8d08e1913febc9df8fdcb00518e66 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 23 Nov 2021 16:41:09 +0000 Subject: [PATCH 33/41] Set inputs to readonly when displaying the javascript function helper label to prevent accidentally setting explicit text --- .../common/bindings/DrawerBindableCombobox.svelte | 1 + .../components/common/bindings/DrawerBindableInput.svelte | 1 + .../components/common/bindings/ModalBindableInput.svelte | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte b/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte index 08845d1798..c8716352e5 100644 --- a/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte +++ b/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte @@ -55,6 +55,7 @@ onChange(e.detail, false)} on:pick={e => onChange(e.detail, true)} diff --git a/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte b/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte index 5b135e8778..073e575869 100644 --- a/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte +++ b/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte @@ -40,6 +40,7 @@ onChange(event.detail)} {placeholder} diff --git a/packages/builder/src/components/common/bindings/ModalBindableInput.svelte b/packages/builder/src/components/common/bindings/ModalBindableInput.svelte index fa46097142..3776f1dc84 100644 --- a/packages/builder/src/components/common/bindings/ModalBindableInput.svelte +++ b/packages/builder/src/components/common/bindings/ModalBindableInput.svelte @@ -6,6 +6,7 @@ } from "builderStore/dataBinding" import ServerBindingPanel from "components/common/bindings/ServerBindingPanel.svelte" import { createEventDispatcher } from "svelte" + import { isJSBinding } from "@budibase/string-templates" export let panel = ServerBindingPanel export let value = "" @@ -18,8 +19,10 @@ const dispatch = createEventDispatcher() let bindingModal let valid = true + $: readableValue = runtimeToReadableBinding(bindings, value) $: tempValue = readableValue + $: isJS = isJSBinding(value) const saveBinding = () => { onChange(tempValue) @@ -34,7 +37,8 @@
onChange(event.detail)} {placeholder} /> From 46bb498122a79e52c8793d730a091067cb1498a3 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 23 Nov 2021 16:57:51 +0000 Subject: [PATCH 34/41] Ensure CodeMirror hints are rendered on top of modals --- .../builder/src/components/common/CodeMirrorEditor.svelte | 8 ++++++-- .../src/components/common/bindings/BindingPanel.svelte | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/common/CodeMirrorEditor.svelte b/packages/builder/src/components/common/CodeMirrorEditor.svelte index e99fed0d41..84f6db74ef 100644 --- a/packages/builder/src/components/common/CodeMirrorEditor.svelte +++ b/packages/builder/src/components/common/CodeMirrorEditor.svelte @@ -1,6 +1,4 @@ -