diff --git a/lerna.json b/lerna.json
index 0e026aefc5..4940336b29 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "2.19.3",
+ "version": "2.19.4",
"npmClient": "yarn",
"packages": [
"packages/*",
diff --git a/package.json b/package.json
index 499952a441..4407fd33f3 100644
--- a/package.json
+++ b/package.json
@@ -58,7 +58,7 @@
"lint": "yarn run lint:eslint && yarn run lint:prettier",
"lint:fix:eslint": "eslint --fix --max-warnings=0 packages qa-core",
"lint:fix:prettier": "prettier --write \"packages/**/*.{js,ts,svelte}\" && prettier --write \"examples/**/*.{js,ts,svelte}\" && prettier --write \"qa-core/**/*.{js,ts,svelte}\"",
- "lint:fix": "yarn run lint:fix:prettier && yarn run lint:fix:eslint",
+ "lint:fix": "yarn run lint:fix:eslint && yarn run lint:fix:prettier",
"build:specs": "lerna run --stream specs",
"build:docker:airgap": "node hosting/scripts/airgapped/airgappedDockerBuild",
"build:docker:airgap:single": "SINGLE_IMAGE=1 node hosting/scripts/airgapped/airgappedDockerBuild",
diff --git a/packages/account-portal b/packages/account-portal
index 485ec16a9e..8c446c4ba3 160000
--- a/packages/account-portal
+++ b/packages/account-portal
@@ -1 +1 @@
-Subproject commit 485ec16a9eed48c548a5f1239772139f3319f028
+Subproject commit 8c446c4ba385592127fa31755d3b64467b291882
diff --git a/packages/builder/assets/n8n_square.png b/packages/builder/assets/n8n_square.png
new file mode 100644
index 0000000000..23b75ee688
Binary files /dev/null and b/packages/builder/assets/n8n_square.png differ
diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte
index a8711d220b..72cedb2b21 100644
--- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte
+++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte
@@ -128,10 +128,10 @@
>
diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ExternalActions.js b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ExternalActions.js
index c6f8d25640..d5d382485c 100644
--- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ExternalActions.js
+++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ExternalActions.js
@@ -1,5 +1,6 @@
import DiscordLogo from "assets/discord.svg"
import ZapierLogo from "assets/zapier.png"
+import n8nLogo from "assets/n8n_square.png"
import MakeLogo from "assets/make.svg"
import SlackLogo from "assets/slack.svg"
@@ -8,4 +9,5 @@ export const externalActions = {
discord: { name: "discord", icon: DiscordLogo },
slack: { name: "slack", icon: SlackLogo },
integromat: { name: "integromat", icon: MakeLogo },
+ n8n: { name: "n8n", icon: n8nLogo },
}
diff --git a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte
index 7ba1c8a4b1..707317f9e6 100644
--- a/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte
+++ b/packages/builder/src/components/automation/SetupPanel/AutomationBlockSetup.svelte
@@ -79,6 +79,7 @@
disableWrapping: true,
})
$: editingJs = codeMode === EditorModes.JS
+ $: requiredProperties = block.schema.inputs.required || []
$: stepCompletions =
codeMode === EditorModes.Handlebars
@@ -359,6 +360,11 @@
)
}
+ function getFieldLabel(key, value) {
+ const requiredSuffix = requiredProperties.includes(key) ? "*" : ""
+ return `${value.title || (key === "row" ? "Table" : key)} ${requiredSuffix}`
+ }
+
onMount(async () => {
try {
await environment.loadVariables()
@@ -376,7 +382,7 @@
{getFieldLabel(key, value)}
{/if}
diff --git a/packages/builder/src/components/integration/RestQueryViewer.svelte b/packages/builder/src/components/integration/RestQueryViewer.svelte
index 7ff0bb7f4c..33946d16dc 100644
--- a/packages/builder/src/components/integration/RestQueryViewer.svelte
+++ b/packages/builder/src/components/integration/RestQueryViewer.svelte
@@ -159,7 +159,7 @@
newQuery.fields.queryString = queryString
newQuery.fields.authConfigId = authConfigId
newQuery.fields.disabledHeaders = restUtils.flipHeaderState(enabledHeaders)
- newQuery.schema = schema
+ newQuery.schema = schema || {}
return newQuery
}
diff --git a/packages/builder/src/constants/backend/automations.js b/packages/builder/src/constants/backend/automations.js
index 6981418fa7..7c3e17e225 100644
--- a/packages/builder/src/constants/backend/automations.js
+++ b/packages/builder/src/constants/backend/automations.js
@@ -27,6 +27,7 @@ export const ActionStepID = {
slack: "slack",
zapier: "zapier",
integromat: "integromat",
+ n8n: "n8n",
}
export const Features = {
diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentDropdownMenu.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentDropdownMenu.svelte
index 4645ee0d41..baaa561679 100644
--- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentDropdownMenu.svelte
+++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentDropdownMenu.svelte
@@ -3,6 +3,7 @@
import { ActionMenu, MenuItem, Icon } from "@budibase/bbui"
export let component
+ export let opened
$: definition = componentStore.getDefinition(component?._component)
$: noPaste = !$componentStore.componentToPaste
@@ -85,6 +86,39 @@
>
Paste
+
+ {#if component?._children?.length}
+
+
+
+
+ {/if}