1
0
Fork 0
mirror of synced 2024-09-20 11:27:56 +12:00
budibase/packages/builder/src/components/userInterface/LayoutEditor.svelte

172 lines
3.7 KiB
Svelte
Raw Normal View History

<script>
2020-02-03 22:50:30 +13:00
import InputGroup from "../common/Inputs/InputGroup.svelte"
2020-03-28 05:58:32 +13:00
import LayoutTemplateControls from "./LayoutTemplateControls.svelte"
2020-02-03 22:50:30 +13:00
export let onStyleChanged = () => {}
export let component
const tbrl = [
2020-02-03 22:50:30 +13:00
{ placeholder: "T" },
{ placeholder: "R" },
{ placeholder: "B" },
{ placeholder: "L" },
]
2020-02-03 22:50:30 +13:00
const se = [{ placeholder: "START" }, { placeholder: "END" }]
2020-02-03 22:50:30 +13:00
const single = [{ placeholder: "" }]
2020-02-03 22:50:30 +13:00
$: layout = {
...component._styles.position,
...component._styles.layout,
2020-02-03 22:50:30 +13:00
}
$: layouts = {
2020-02-03 22:50:30 +13:00
templaterows: ["Grid Rows", single],
templatecolumns: ["Grid Columns", single],
}
2020-03-07 06:00:54 +13:00
$: display = {
direction: ["Direction", single],
align: ["Align", single],
justify: ["Justify", single],
}
$: positions = {
2020-02-03 22:50:30 +13:00
column: ["Column", se],
row: ["Row", se],
}
$: spacing = {
2020-02-03 22:50:30 +13:00
margin: ["Margin", tbrl, "small"],
padding: ["Padding", tbrl, "small"],
}
$: size = {
height: ["Height", single],
width: ["Width", single],
}
$: zindex = {
2020-02-03 22:50:30 +13:00
zindex: ["Z-Index", single],
}
2020-02-03 22:50:30 +13:00
const newValue = n => Array(n).fill("")
</script>
2020-01-23 00:21:42 +13:00
<h3>Layout</h3>
<div class="layout-pos">
2020-03-07 06:00:54 +13:00
{#each Object.entries(display) as [key, [name, meta, size]] (component._id + key)}
<div class="grid">
<h5>{name}:</h5>
2020-03-28 05:58:32 +13:00
<LayoutTemplateControls
onStyleChanged={_value => onStyleChanged('layout', key, _value)}
values={layout[key] || newValue(meta.length)}
propertyName={name}
{meta}
{size}
type="text" />
</div>
{/each}
</div>
2020-01-23 00:21:42 +13:00
2020-03-07 06:00:54 +13:00
<!-- <h4>Positioning</h4>
2020-01-23 00:21:42 +13:00
<div class="layout-pos">
{#each Object.entries(positions) as [key, [name, meta, size]] (component._id + key)}
<div class="grid">
<h5>{name}:</h5>
2020-02-03 22:50:30 +13:00
<InputGroup
onStyleChanged={_value => onStyleChanged('position', key, _value)}
values={layout[key] || newValue(meta.length)}
{meta}
{size} />
</div>
{/each}
2020-03-07 06:00:54 +13:00
</div> -->
2020-01-23 00:21:42 +13:00
<h3>Spacing</h3>
2020-01-23 00:21:42 +13:00
<div class="layout-spacing">
{#each Object.entries(spacing) as [key, [name, meta, size]] (component._id + key)}
<div class="grid">
<h5>{name}:</h5>
2020-02-03 22:50:30 +13:00
<InputGroup
onStyleChanged={_value => onStyleChanged('position', key, _value)}
values={layout[key] || newValue(meta.length)}
{meta}
{size}
type="text" />
</div>
{/each}
</div>
<h3>Size</h3>
<div class="layout-layer">
{#each Object.entries(size) as [key, [name, meta, size]] (component._id + key)}
<div class="grid">
<h5>{name}:</h5>
<InputGroup
onStyleChanged={_value => onStyleChanged('position', key, _value)}
values={layout[key] || newValue(meta.length)}
type="text"
{meta}
2020-02-03 22:50:30 +13:00
{size} />
</div>
{/each}
2020-01-23 00:21:42 +13:00
</div>
<h3>Order</h3>
2020-01-23 00:21:42 +13:00
<div class="layout-layer">
{#each Object.entries(zindex) as [key, [name, meta, size]] (component._id + key)}
<div class="grid">
<h5>{name}:</h5>
2020-02-03 22:50:30 +13:00
<InputGroup
onStyleChanged={_value => onStyleChanged('position', key, _value)}
values={layout[key] || newValue(meta.length)}
{meta}
{size} />
</div>
{/each}
2020-01-23 00:21:42 +13:00
</div>
<style>
h3 {
text-transform: uppercase;
font-size: 12px;
font-weight: 700;
2020-03-24 23:56:48 +13:00
color: #000333;
opacity: 0.6;
2020-01-23 00:21:42 +13:00
margin-bottom: 10px;
}
h4 {
text-transform: uppercase;
font-size: 10px;
font-weight: 600;
2020-03-24 23:56:48 +13:00
color: #000333;
opacity: 0.4;
letter-spacing: 1px;
2020-03-28 05:58:01 +13:00
margin-bottom: 10px;
2020-01-23 00:21:42 +13:00
}
h5 {
font-size: 12px;
2020-03-24 23:56:48 +13:00
font-weight: 400;
color: #000333;
opacity: 0.8;
2020-01-23 00:21:42 +13:00
padding-top: 12px;
margin-bottom: 0;
2020-01-23 00:21:42 +13:00
}
div > div {
display: grid;
grid-template-rows: 1fr;
grid-gap: 10px;
height: 40px;
margin-bottom: 15px;
}
.grid {
grid-template-columns: 70px 2fr;
2020-01-23 00:21:42 +13:00
}
</style>