diff --git a/packages/bbui/src/Table/CellRenderer.svelte b/packages/bbui/src/Table/CellRenderer.svelte index 4ad6e22d7e..6f6e210fe1 100644 --- a/packages/bbui/src/Table/CellRenderer.svelte +++ b/packages/bbui/src/Table/CellRenderer.svelte @@ -12,6 +12,7 @@ export let schema export let value export let customRenderers = [] + export let snippets let renderer const typeMap = { @@ -32,6 +33,8 @@ $: renderer = customRenderer?.component ?? typeMap[type] ?? StringRenderer $: cellValue = getCellValue(value, schema.template) + $: console.log(snippets) + const getType = schema => { // Use a string renderer for dates if we use a custom template if (schema?.type === "datetime" && schema?.template) { @@ -44,7 +47,7 @@ if (!template) { return value } - return processStringSync(template, { value }) + return processStringSync(template, { value, snippets }) } diff --git a/packages/bbui/src/Table/Table.svelte b/packages/bbui/src/Table/Table.svelte index 33b9bd9a7e..868f7b3a0b 100644 --- a/packages/bbui/src/Table/Table.svelte +++ b/packages/bbui/src/Table/Table.svelte @@ -42,6 +42,7 @@ export let customPlaceholder = false export let showHeaderBorder = true export let placeholderText = "No rows found" + export let snippets = [] const dispatch = createEventDispatcher() @@ -425,6 +426,7 @@ { ...bindingByCategory[catKey].reduce((acc, binding) => { let displayType = binding.fieldSchema?.type || binding.display?.type acc.push({ - label: binding.display?.name || "NO NAME", + label: binding.display?.name || binding.readableBinding || "NO NAME", info: completion => { return buildBindingInfoNode(completion, binding) }, diff --git a/packages/builder/src/components/common/bindings/ClientBindingPanel.svelte b/packages/builder/src/components/common/bindings/ClientBindingPanel.svelte index cb65d2bbe4..4e5789b563 100644 --- a/packages/builder/src/components/common/bindings/ClientBindingPanel.svelte +++ b/packages/builder/src/components/common/bindings/ClientBindingPanel.svelte @@ -8,6 +8,7 @@ export let allowJS = false export let allowHelpers = true export let autofocusEditor = false + export let context = null $: enrichedBindings = enrichBindings(bindings) @@ -27,7 +28,7 @@ @@ -41,6 +44,9 @@ icon: "TableColumnMerge", }, ]} + context={{ + value: columnValue, + }} /> diff --git a/packages/client/src/components/app/deprecated/table/Table.svelte b/packages/client/src/components/app/deprecated/table/Table.svelte index fd2e7c030c..ac3d88d29c 100644 --- a/packages/client/src/components/app/deprecated/table/Table.svelte +++ b/packages/client/src/components/app/deprecated/table/Table.svelte @@ -16,8 +16,15 @@ export let noRowsMessage const component = getContext("component") - const { styleable, getAction, ActionTypes, rowSelectionStore } = - getContext("sdk") + const context = getContext("context") + const { + styleable, + getAction, + ActionTypes, + rowSelectionStore, + generateGoldenSample, + } = getContext("sdk") + const customColumnKey = `custom-${Math.random()}` const customRenderers = [ { @@ -28,6 +35,7 @@ let selectedRows = [] + $: snippets = $context.snippets $: hasChildren = $component.children $: loading = dataProvider?.loading ?? false $: data = dataProvider?.rows || [] @@ -61,6 +69,16 @@ selectedRows, } + // Provide additional data context for live binding eval + export const getAdditionalDataContext = () => { + const goldenRow = generateGoldenSample(data) + return { + eventContext: { + row: goldenRow, + }, + } + } + const getFields = ( schema, customColumns, @@ -178,6 +196,7 @@ {quiet} {compact} {customRenderers} + {snippets} allowSelectRows={allowSelectRows && table} bind:selectedRows allowEditRows={false}