diff --git a/lerna.json b/lerna.json
index 53305f80d8..ea77c165ec 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "2.0.34-alpha.10",
+ "version": "2.0.39",
"npmClient": "yarn",
"packages": [
"packages/*"
@@ -15,4 +15,4 @@
]
}
}
-}
+}
\ No newline at end of file
diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json
index 310672b39e..c89b8bdf94 100644
--- a/packages/backend-core/package.json
+++ b/packages/backend-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@budibase/backend-core",
- "version": "2.0.34-alpha.10",
+ "version": "2.0.39",
"description": "Budibase backend core libraries used in server and worker",
"main": "dist/src/index.js",
"types": "dist/src/index.d.ts",
@@ -20,7 +20,7 @@
"test:watch": "jest --watchAll"
},
"dependencies": {
- "@budibase/types": "2.0.34-alpha.10",
+ "@budibase/types": "^2.0.39",
"@shopify/jest-koa-mocks": "5.0.1",
"@techpass/passport-openidconnect": "0.3.2",
"aws-sdk": "2.1030.0",
@@ -86,4 +86,4 @@
"typescript": "4.7.3"
},
"gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc"
-}
+}
\ No newline at end of file
diff --git a/packages/bbui/package.json b/packages/bbui/package.json
index 915dac1036..30cbb724cc 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.0.34-alpha.10",
+ "version": "2.0.39",
"license": "MPL-2.0",
"svelte": "src/index.js",
"module": "dist/bbui.es.js",
@@ -38,7 +38,7 @@
],
"dependencies": {
"@adobe/spectrum-css-workflow-icons": "^1.2.1",
- "@budibase/string-templates": "2.0.34-alpha.10",
+ "@budibase/string-templates": "^2.0.39",
"@spectrum-css/actionbutton": "^1.0.1",
"@spectrum-css/actiongroup": "^1.0.1",
"@spectrum-css/avatar": "^3.0.2",
@@ -86,4 +86,4 @@
"svelte-portal": "^1.0.0"
},
"gitHead": "d1836a898cab3f8ab80ee6d8f42be1a9eed7dcdc"
-}
+}
\ No newline at end of file
diff --git a/packages/bbui/src/ColorPicker/ColorPicker.svelte b/packages/bbui/src/ColorPicker/ColorPicker.svelte
index 331de38371..9a70134fb6 100644
--- a/packages/bbui/src/ColorPicker/ColorPicker.svelte
+++ b/packages/bbui/src/ColorPicker/ColorPicker.svelte
@@ -139,7 +139,7 @@
{#if open}
diff --git a/packages/bbui/src/Form/Core/Multiselect.svelte b/packages/bbui/src/Form/Core/Multiselect.svelte
index eb39e39042..784cee70dc 100644
--- a/packages/bbui/src/Form/Core/Multiselect.svelte
+++ b/packages/bbui/src/Form/Core/Multiselect.svelte
@@ -1,6 +1,6 @@
-
+
@@ -27,12 +27,15 @@
top: var(--spacing-l);
right: var(--spacing-xl);
}
-
- .title {
+ .nav {
+ overflow-y: auto;
+ background: var(--background);
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
position: relative;
+ border-right: var(--border-light);
+ padding-bottom: 60px;
}
diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte
index bb70938dfe..4fd2f40391 100644
--- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte
+++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte
@@ -120,7 +120,7 @@
allSteps[idx]?.stepId === ActionStepID.LOOP &&
allSteps.find(x => x.blockToLoop === block.id)
- // If the previous block was a loop block, decerement the index so the following
+ // If the previous block was a loop block, decrement the index so the following
// steps are in the correct order
if (wasLoopBlock) {
loopBlockCount++
diff --git a/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte b/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte
index c72acc252a..e5a5b2af8c 100644
--- a/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte
+++ b/packages/builder/src/components/automation/SetupPanel/RowSelector.svelte
@@ -14,6 +14,12 @@
export let block
export let isTestModal
+ $: parsedBindings = bindings.map(binding => {
+ let clone = Object.assign({}, binding)
+ clone.icon = "ShareAndroid"
+ return clone
+ })
+
let table
let schemaFields
@@ -79,6 +85,10 @@
return [value]
}
+ if (type === "json") {
+ return value.value
+ }
+
return value
}
@@ -109,7 +119,7 @@
{isTestModal}
{field}
{schema}
- {bindings}
+ bindings={parsedBindings}
{value}
{onChange}
/>
@@ -124,7 +134,7 @@
on:change={e => onChange(e, field, schema.type)}
label={field}
type="string"
- {bindings}
+ bindings={parsedBindings}
fillWidth={true}
allowJS={true}
updateOnChange={false}
diff --git a/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte b/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte
index f3abad6e25..0e5e13ce1e 100644
--- a/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte
+++ b/packages/builder/src/components/automation/SetupPanel/RowSelectorTypes.svelte
@@ -5,11 +5,13 @@
DatePicker,
Multiselect,
TextArea,
+ Label,
} from "@budibase/bbui"
import LinkedRowSelector from "components/common/LinkedRowSelector.svelte"
import DrawerBindableInput from "../../common/bindings/DrawerBindableInput.svelte"
import ModalBindableInput from "../../common/bindings/ModalBindableInput.svelte"
import AutomationBindingPanel from "../../common/bindings/ServerBindingPanel.svelte"
+ import Editor from "components/integration/QueryEditor.svelte"
export let onChange
export let field
@@ -18,6 +20,12 @@
export let bindings
export let isTestModal
+ $: parsedBindings = bindings.map(binding => {
+ let clone = Object.assign({}, binding)
+ clone.icon = "ShareAndroid"
+ return clone
+ })
+
function schemaHasOptions(schema) {
return !!schema.constraints?.inclusion?.length
}
@@ -50,6 +58,20 @@
/>
{:else if schema.type === "longform"}
+{:else if schema.type === "json"}
+
+
+ {
+ if (e.detail?.value !== value[field]) {
+ onChange(e, field, schema.type)
+ }
+ }}
+ value={value[field]}
+ />
+
{:else if schema.type === "link"}
{:else if schema.type === "string" || schema.type === "number"}
@@ -60,7 +82,7 @@
on:change={e => onChange(e, field)}
label={field}
type="string"
- {bindings}
+ bindings={parsedBindings}
fillWidth={true}
allowJS={true}
updateOnChange={false}
diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte
index a67330efa7..d18e8783d2 100644
--- a/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte
+++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditUser.svelte
@@ -70,7 +70,11 @@
.map(([key, error]) => ({ dataPath: key, message: error }))
.flat()
}
- } else if (error.status === 400) {
+ } else if (error.status === 400 && response?.validationErrors) {
+ errors = Object.keys(response.validationErrors).map(field => ({
+ message: `${field} ${response.validationErrors[field][0]}`,
+ }))
+ } else {
errors = [{ message: response?.message || "Unknown error" }]
}
} else {
diff --git a/packages/builder/src/components/common/bindings/BindingPanel.svelte b/packages/builder/src/components/common/bindings/BindingPanel.svelte
index 1a1714967d..d105253e14 100644
--- a/packages/builder/src/components/common/bindings/BindingPanel.svelte
+++ b/packages/builder/src/components/common/bindings/BindingPanel.svelte
@@ -247,7 +247,7 @@
return
}
hoverTarget = {
- title: binding.display?.name || binding.fieldSchema.name,
+ title: binding.display?.name || binding.fieldSchema?.name,
description: binding.description,
}
popover.show()
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 081e748caf..2624c28e7f 100644
--- a/packages/builder/src/components/design/settings/controls/ValidationEditor/ValidationDrawer.svelte
+++ b/packages/builder/src/components/design/settings/controls/ValidationEditor/ValidationDrawer.svelte
@@ -305,6 +305,9 @@
getOptionLabel={x => x}
getOptionValue={x => x}
value={rule.value}
+ on:change={e => {
+ rule.value = e.detail
+ }}
/>
{:else if rule.type === "boolean"}