wire BindingPanel correctly to PropertyControl
This commit is contained in:
parent
98c0e2dc42
commit
7b474fef1e
|
@ -0,0 +1,113 @@
|
||||||
|
<script>
|
||||||
|
import groupBy from "lodash/fp/groupBy"
|
||||||
|
import {
|
||||||
|
Button,
|
||||||
|
TextArea,
|
||||||
|
Drawer,
|
||||||
|
Heading,
|
||||||
|
Spacer,
|
||||||
|
} from "@budibase/bbui"
|
||||||
|
import { createEventDispatcher } from "svelte"
|
||||||
|
|
||||||
|
const dispatch = createEventDispatcher()
|
||||||
|
export let bindableProperties
|
||||||
|
export let value = ""
|
||||||
|
export let bindingDrawer
|
||||||
|
|
||||||
|
function addToText(readableBinding) {
|
||||||
|
value = value + `{{ ${readableBinding} }}`
|
||||||
|
}
|
||||||
|
let originalValue = value
|
||||||
|
|
||||||
|
$: dispatch("update", value)
|
||||||
|
|
||||||
|
export function cancel() {
|
||||||
|
dispatch("update", originalValue)
|
||||||
|
bindingDrawer.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
$: ({ instance, context } = groupBy("type", bindableProperties))
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="drawer-contents">
|
||||||
|
<div class="container" data-cy="binding-dropdown-modal">
|
||||||
|
<div class="list">
|
||||||
|
<Heading extraSmall>Objects</Heading>
|
||||||
|
<Spacer medium />
|
||||||
|
{#if context}
|
||||||
|
<Heading extraSmall>Tables</Heading>
|
||||||
|
<ul>
|
||||||
|
{#each context as { readableBinding }}
|
||||||
|
<li on:click={() => addToText(readableBinding)}>{readableBinding}</li>
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
{/if}
|
||||||
|
{#if instance}
|
||||||
|
<Heading extraSmall>Components</Heading>
|
||||||
|
<ul>
|
||||||
|
{#each instance as { readableBinding }}
|
||||||
|
<li on:click={() => addToText(readableBinding)}>{readableBinding}</li>
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
|
<div class="text">
|
||||||
|
<TextArea
|
||||||
|
thin
|
||||||
|
bind:value
|
||||||
|
placeholder="Add text, or click the objects on the left to add them to the
|
||||||
|
textbox." />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.container {
|
||||||
|
height: 100%;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
}
|
||||||
|
.list {
|
||||||
|
width: 150px;
|
||||||
|
border-right: 1.5px solid var(--grey-4);
|
||||||
|
padding: var(--spacing-s);
|
||||||
|
}
|
||||||
|
.text {
|
||||||
|
padding: var(--spacing-s);
|
||||||
|
font-family: var(--font-sans);
|
||||||
|
}
|
||||||
|
.text :global(p) {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
padding-left: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: flex;
|
||||||
|
font-family: var(--font-sans);
|
||||||
|
font-size: var(--font-size-xs);
|
||||||
|
color: var(--grey-7);
|
||||||
|
padding: var(--spacing-s) 0;
|
||||||
|
margin: auto 0px;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:hover {
|
||||||
|
color: var(--ink);
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:active {
|
||||||
|
color: var(--blue);
|
||||||
|
}
|
||||||
|
|
||||||
|
.drawer-contents {
|
||||||
|
height: 40vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,5 +1,5 @@
|
||||||
<script>
|
<script>
|
||||||
import { Icon } from "@budibase/bbui"
|
import { Button, Icon, Drawer } from "@budibase/bbui"
|
||||||
import Input from "./PropertyPanelControls/Input.svelte"
|
import Input from "./PropertyPanelControls/Input.svelte"
|
||||||
import { store, backendUiStore, currentAsset } from "builderStore"
|
import { store, backendUiStore, currentAsset } from "builderStore"
|
||||||
import fetchBindableProperties from "builderStore/fetchBindableProperties"
|
import fetchBindableProperties from "builderStore/fetchBindableProperties"
|
||||||
|
@ -7,7 +7,7 @@
|
||||||
readableToRuntimeBinding,
|
readableToRuntimeBinding,
|
||||||
runtimeToReadableBinding,
|
runtimeToReadableBinding,
|
||||||
} from "builderStore/replaceBindings"
|
} from "builderStore/replaceBindings"
|
||||||
import BindingDrawer from "components/userInterface/BindingDrawer.svelte"
|
import BindingPanel from "components/userInterface/BindingPanel.svelte"
|
||||||
|
|
||||||
export let label = ""
|
export let label = ""
|
||||||
export let bindable = true
|
export let bindable = true
|
||||||
|
@ -18,14 +18,15 @@
|
||||||
export let props = {}
|
export let props = {}
|
||||||
export let onChange = () => {}
|
export let onChange = () => {}
|
||||||
|
|
||||||
|
let bindingDrawer
|
||||||
|
|
||||||
let temporaryBindableValue = value
|
let temporaryBindableValue = value
|
||||||
let bindableProperties = []
|
let bindableProperties = []
|
||||||
let anchor
|
let anchor
|
||||||
let showDrawer = false
|
|
||||||
|
|
||||||
function handleClose() {
|
function handleClose() {
|
||||||
handleChange(key, temporaryBindableValue)
|
handleChange(key, temporaryBindableValue)
|
||||||
showDrawer = false
|
bindingDrawer.hide()
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBindableProperties() {
|
function getBindableProperties() {
|
||||||
|
@ -95,17 +96,24 @@
|
||||||
<div
|
<div
|
||||||
class="icon"
|
class="icon"
|
||||||
data-cy={`${key}-binding-button`}
|
data-cy={`${key}-binding-button`}
|
||||||
on:click={() => showDrawer = true}>
|
on:click={bindingDrawer.show}>
|
||||||
<Icon name="edit" />
|
<Icon name="edit" />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<BindingDrawer
|
|
||||||
{...handlevalueKey(value)}
|
<Drawer bind:this={bindingDrawer} title="Bindings">
|
||||||
|
<div slot="description">This describes the drawer!</div>
|
||||||
|
<heading slot="buttons">
|
||||||
|
<Button thin blue on:click={handleClose}>Save</Button>
|
||||||
|
</heading>
|
||||||
|
<div slot="body">
|
||||||
|
<BindingPanel {...handlevalueKey(value)}
|
||||||
close={handleClose}
|
close={handleClose}
|
||||||
show={showDrawer}
|
|
||||||
on:update={e => (temporaryBindableValue = e.detail)}
|
on:update={e => (temporaryBindableValue = e.detail)}
|
||||||
{bindableProperties} />
|
{bindableProperties} />
|
||||||
|
</div>
|
||||||
|
</Drawer>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.property-control {
|
.property-control {
|
||||||
|
@ -154,8 +162,4 @@
|
||||||
color: var(--ink);
|
color: var(--ink);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.drawer-contents {
|
|
||||||
height: 40vh;
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue