mirror of https://github.com/Budibase/budibase.git
4 changed files with 100 additions and 3 deletions
@ -0,0 +1,75 @@ |
|||
<script> |
|||
import { Button, Drawer, Spacer } from "@budibase/bbui" |
|||
import { createEventDispatcher } from "svelte" |
|||
import { notifier } from "builderStore/store/notifications" |
|||
import { |
|||
getDatasourceForProvider, |
|||
getSchemaForDatasource, |
|||
} from "builderStore/dataBinding" |
|||
import SaveFields from "./EventsEditor/actions/SaveFields.svelte" |
|||
|
|||
const dispatch = createEventDispatcher() |
|||
|
|||
export let value = {} |
|||
export let componentInstance |
|||
let drawer |
|||
let tempValue = value |
|||
|
|||
$: schemaFields = getSchemaFields(componentInstance) |
|||
|
|||
const getSchemaFields = component => { |
|||
const datasource = getDatasourceForProvider(component) |
|||
const { schema } = getSchemaForDatasource(datasource) |
|||
return Object.values(schema || {}) |
|||
} |
|||
|
|||
const saveFilter = async () => { |
|||
dispatch("change", tempValue) |
|||
notifier.success("Filters saved.") |
|||
drawer.hide() |
|||
} |
|||
|
|||
const onFieldsChanged = event => { |
|||
tempValue = event.detail |
|||
} |
|||
</script> |
|||
|
|||
<Button secondary wide on:click={drawer.show}>Define Filters</Button> |
|||
<Drawer bind:this={drawer} title={'Filtering'}> |
|||
<heading slot="buttons"> |
|||
<Button thin blue on:click={saveFilter}>Save</Button> |
|||
</heading> |
|||
<div slot="body"> |
|||
<div class="root"> |
|||
{#if !Object.keys(tempValue || {}).length} |
|||
<p>Add your first filter column.</p> |
|||
<Spacer small /> |
|||
{/if} |
|||
<div class="fields"> |
|||
<SaveFields |
|||
parameterFields={value} |
|||
{schemaFields} |
|||
on:fieldschanged={onFieldsChanged} /> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</Drawer> |
|||
|
|||
<style> |
|||
.root { |
|||
padding: var(--spacing-m); |
|||
min-height: 40vh; |
|||
} |
|||
|
|||
p { |
|||
margin: 0 0 var(--spacing-s) 0; |
|||
} |
|||
|
|||
.fields { |
|||
display: grid; |
|||
column-gap: var(--spacing-s); |
|||
row-gap: var(--spacing-s); |
|||
grid-template-columns: auto 1fr auto 1fr auto; |
|||
align-items: baseline; |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue