diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml
index c8bdfe9655..ea9da5ea8c 100644
--- a/.github/workflows/budibase_ci.yml
+++ b/.github/workflows/budibase_ci.yml
@@ -186,7 +186,7 @@ jobs:
id: dotenv
uses: falti/dotenv-action@v1.1.3
with:
- path: ./packages/server/datasource-sha.env
+ path: ./packages/server/images-sha.env
- name: Pull testcontainers images
run: |
@@ -213,6 +213,7 @@ jobs:
docker pull redis &
docker pull testcontainers/ryuk:0.5.1 &
docker pull budibase/couchdb:v3.3.3-sqs-v2.1.1 &
+ docker pull ${{ steps.dotenv.outputs.KEYCLOAK_IMAGE }} &
wait $(jobs -p)
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 2f4072a188..9db2f17f9c 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -47,6 +47,9 @@ export default [
parserOptions: {
allowImportExportEverywhere: true,
+ svelteFeatures: {
+ experimentalGenerics: true,
+ },
},
},
diff --git a/packages/bbui/src/ActionMenu/ActionMenu.svelte b/packages/bbui/src/ActionMenu/ActionMenu.svelte
index c7427e12d1..529e0285fb 100644
--- a/packages/bbui/src/ActionMenu/ActionMenu.svelte
+++ b/packages/bbui/src/ActionMenu/ActionMenu.svelte
@@ -1,25 +1,26 @@
-
-
+
{body}
diff --git a/packages/builder/src/components/integration/RestQueryViewer.svelte b/packages/builder/src/components/integration/RestQueryViewer.svelte
index 372d435033..5fa77ea5d6 100644
--- a/packages/builder/src/components/integration/RestQueryViewer.svelte
+++ b/packages/builder/src/components/integration/RestQueryViewer.svelte
@@ -1,5 +1,5 @@
@@ -642,15 +681,12 @@
@@ -853,10 +889,6 @@
justify-content: space-between;
}
- .auth-select {
- width: 200px;
- }
-
.pagination {
display: grid;
grid-template-columns: 1fr 1fr;
diff --git a/packages/builder/src/components/integration/rest/AuthPicker.svelte b/packages/builder/src/components/integration/rest/AuthPicker.svelte
new file mode 100644
index 0000000000..2b4cb1416a
--- /dev/null
+++ b/packages/builder/src/components/integration/rest/AuthPicker.svelte
@@ -0,0 +1,71 @@
+
+
+
+
+
+ {#if !authConfig}
+ Authentication
+ {:else}
+ Auth: {authConfig.label}
+ {/if}
+
+
+
+
+ Basic & Bearer Authentication
+
+
+ {#if authConfigs.length}
+
+ {#each authConfigs as config}
+ selectConfiguration(config.value)}
+ selected={config.value === authConfigId}
+ />
+ {/each}
+
+ {/if}
+
+
+
+
diff --git a/packages/builder/src/helpers/confirm.ts b/packages/builder/src/helpers/confirm.ts
new file mode 100644
index 0000000000..59c9d21490
--- /dev/null
+++ b/packages/builder/src/helpers/confirm.ts
@@ -0,0 +1,41 @@
+import ConfirmDialog from "@/components/common/ConfirmDialog.svelte"
+
+export enum ConfirmOutput {}
+
+export async function confirm(props: {
+ title: string
+ body?: string
+ okText?: string
+ cancelText?: string
+ size?: "S" | "M" | "L" | "XL"
+ onConfirm?: () => void
+ onCancel?: () => void
+ onClose?: () => void
+}) {
+ return await new Promise(resolve => {
+ const dialog = new ConfirmDialog({
+ target: document.body,
+ props: {
+ title: props.title,
+ body: props.body,
+ okText: props.okText,
+ cancelText: props.cancelText,
+ size: props.size,
+ warning: false,
+ onOk: () => {
+ dialog.$destroy()
+ resolve(props.onConfirm?.() || true)
+ },
+ onCancel: () => {
+ dialog.$destroy()
+ resolve(props.onCancel?.() || false)
+ },
+ onClose: () => {
+ dialog.$destroy()
+ resolve(props.onClose?.() || false)
+ },
+ },
+ })
+ dialog.show()
+ })
+}
diff --git a/packages/builder/src/helpers/index.ts b/packages/builder/src/helpers/index.ts
index 0e61eeb9c6..717d9cdd85 100644
--- a/packages/builder/src/helpers/index.ts
+++ b/packages/builder/src/helpers/index.ts
@@ -11,3 +11,4 @@ export {
} from "./helpers"
export * as featureFlag from "./featureFlags"
export * as bindings from "./bindings"
+export * from "./confirm"
diff --git a/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/index.svelte b/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/index.svelte
index 9aa0c5b7e8..4e08d0786e 100644
--- a/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/index.svelte
+++ b/packages/builder/src/pages/builder/app/[application]/data/datasource/[datasourceId]/index.svelte
@@ -1,4 +1,5 @@