diff --git a/packages/builder/src/dataBinding.js b/packages/builder/src/dataBinding.js index a7e98e1c3f..3eefb373ca 100644 --- a/packages/builder/src/dataBinding.js +++ b/packages/builder/src/dataBinding.js @@ -57,6 +57,7 @@ export const getBindableProperties = (asset, componentId) => { const stateBindings = getStateBindings() const selectedRowsBindings = getSelectedRowsBindings(asset) const roleBindings = getRoleBindings() + const embedBindings = getEmbedBindings() return [ ...contextBindings, ...urlBindings, @@ -65,6 +66,7 @@ export const getBindableProperties = (asset, componentId) => { ...deviceBindings, ...selectedRowsBindings, ...roleBindings, + ...embedBindings, ] } @@ -813,6 +815,25 @@ export const getActionBindings = (actions, actionId) => { return bindings } +/** + * Gets all device bindings for embeds. + */ +const getEmbedBindings = () => { + let bindings = [] + const safeEmbed = makePropSafe("embed") + + bindings = [ + { + type: "context", + runtimeBinding: `${safeEmbed}`, + readableBinding: `ParentWindow`, + category: "Embed", + icon: "DistributeVertically", + }, + ] + return bindings +} + /** * Gets the schema for a certain datasource plus. * The options which can be passed in are: diff --git a/packages/client/src/components/ClientApp.svelte b/packages/client/src/components/ClientApp.svelte index 2f8ba36cf7..f1e4f10403 100644 --- a/packages/client/src/components/ClientApp.svelte +++ b/packages/client/src/components/ClientApp.svelte @@ -42,6 +42,7 @@ import FreeFooter from "components/FreeFooter.svelte" import MaintenanceScreen from "components/MaintenanceScreen.svelte" import SnippetsProvider from "./context/SnippetsProvider.svelte" + import EmbedProvider from "./context/EmbedProvider.svelte" // Provide contexts setContext("sdk", SDK) @@ -160,116 +161,119 @@ {#if $environmentStore.maintenance.length > 0} {:else} - - - - - - - - - {#key $builderStore.selectedComponentId} - {#if $builderStore.inBuilder} - - {/if} - {/key} - - -
- -
- {#if showDevTools} - + + + + + + + + + + {#key $builderStore.selectedComponentId} + {#if $builderStore.inBuilder} + {/if} + {/key} -
- {#if permissionError} -
- - - {@html ErrorSVG} - - You don't have permission to use this app - - - Ask your administrator to grant you access - - -
- {:else if !$screenStore.activeLayout} -
- - - {@html ErrorSVG} - - Something went wrong rendering your app - - - Get in touch with support if this issue persists - - -
- {:else if embedNoScreens} -
- - - {@html ErrorSVG} - - This Budibase app is not publicly accessible - - -
- {:else} - - {#key $screenStore.activeLayout._id} - - {/key} - - - - - - + +
+ +
+ {#if showDevTools} + {/if} - {#if showDevTools} - +
+ {#if permissionError} +
+ + + {@html ErrorSVG} + + You don't have permission to use this app + + + Ask your administrator to grant you access + + +
+ {:else if !$screenStore.activeLayout} +
+ + + {@html ErrorSVG} + + Something went wrong rendering your app + + + Get in touch with support if this issue + persists + + +
+ {:else if embedNoScreens} +
+ + + {@html ErrorSVG} + + This Budibase app is not publicly accessible + + +
+ {:else} + + {#key $screenStore.activeLayout._id} + + {/key} + + + + + + + {/if} + + {#if showDevTools} + + {/if} +
+ + {#if !$builderStore.inBuilder && $featuresStore.logoEnabled} + {/if}
- {#if !$builderStore.inBuilder && $featuresStore.logoEnabled} - + + {#if $appStore.isDevApp} + + {/if} + {#if $builderStore.inBuilder || $devToolsStore.allowSelection} + + {/if} + {#if $builderStore.inBuilder} + + {/if}
- - - {#if $appStore.isDevApp} - - {/if} - {#if $builderStore.inBuilder || $devToolsStore.allowSelection} - - {/if} - {#if $builderStore.inBuilder} - - - {/if} -
-
-
-
-
-
-
+ + + + + + +
{/if}
diff --git a/packages/client/src/components/context/EmbedProvider.svelte b/packages/client/src/components/context/EmbedProvider.svelte new file mode 100644 index 0000000000..5c402ec75d --- /dev/null +++ b/packages/client/src/components/context/EmbedProvider.svelte @@ -0,0 +1,43 @@ + + + + +