|
|
|
@ -1,10 +1,26 @@ |
|
|
|
<script> |
|
|
|
import { Label, Select, Body } from "@budibase/bbui" |
|
|
|
import { tables } from "stores/backend" |
|
|
|
import { findAllMatchingComponents } from "builderStore/componentUtils" |
|
|
|
import { currentAsset } from "builderStore" |
|
|
|
import { onMount } from "svelte" |
|
|
|
|
|
|
|
export let parameters |
|
|
|
$: tableOptions = $tables.list || [] |
|
|
|
|
|
|
|
$: tables = findAllMatchingComponents($currentAsset?.props, component => |
|
|
|
component._component.endsWith("table") |
|
|
|
).map(table => ({ |
|
|
|
label: table._instanceName, |
|
|
|
value: table._id, |
|
|
|
})) |
|
|
|
|
|
|
|
$: tableBlocks = findAllMatchingComponents($currentAsset?.props, component => |
|
|
|
component._component.endsWith("tableblock") |
|
|
|
).map(block => ({ |
|
|
|
label: block._instanceName, |
|
|
|
value: `${block._id}-table`, |
|
|
|
})) |
|
|
|
|
|
|
|
$: componentOptions = tables.concat(tableBlocks) |
|
|
|
|
|
|
|
const FORMATS = [ |
|
|
|
{ |
|
|
|
@ -26,21 +42,20 @@ |
|
|
|
|
|
|
|
<div class="root"> |
|
|
|
<Body size="S"> |
|
|
|
Choose the table that you would like to export your row selection from. |
|
|
|
Choose the table component that you would like to export your row selection |
|
|
|
from. |
|
|
|
<br /> |
|
|
|
Please ensure you have enabled row selection in the table settings |
|
|
|
Please ensure you have enabled row selection in the table settings. |
|
|
|
</Body> |
|
|
|
|
|
|
|
<div class="params"> |
|
|
|
<Label small>Table</Label> |
|
|
|
<Select |
|
|
|
bind:value={parameters.tableId} |
|
|
|
options={tableOptions} |
|
|
|
getOptionLabel={option => option.name} |
|
|
|
getOptionValue={option => option._id} |
|
|
|
bind:value={parameters.tableComponentId} |
|
|
|
options={componentOptions} |
|
|
|
/> |
|
|
|
|
|
|
|
<Label small>Type</Label> |
|
|
|
<Label small>Export as</Label> |
|
|
|
<Select bind:value={parameters.type} options={FORMATS} /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -48,7 +63,7 @@ |
|
|
|
<style> |
|
|
|
.root { |
|
|
|
width: 100%; |
|
|
|
max-width: 800px; |
|
|
|
max-width: 500px; |
|
|
|
margin: 0 auto; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
@ -63,9 +78,9 @@ |
|
|
|
|
|
|
|
.params { |
|
|
|
display: grid; |
|
|
|
column-gap: var(--spacing-l); |
|
|
|
column-gap: var(--spacing-xs); |
|
|
|
row-gap: var(--spacing-s); |
|
|
|
grid-template-columns: 100px 1fr; |
|
|
|
grid-template-columns: 70px 1fr; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|