mirror of https://github.com/Budibase/budibase.git
5 changed files with 165 additions and 128 deletions
|
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 228 B |
@ -0,0 +1,54 @@ |
|||
<script> |
|||
import getIcon from "./icon"; |
|||
export let value; |
|||
</script> |
|||
|
|||
<style> |
|||
.select-container { |
|||
padding-bottom: 10px; |
|||
font-size: 0.9rem; |
|||
color: var(--secondary50); |
|||
font-weight: bold; |
|||
position: relative; |
|||
} |
|||
|
|||
select { |
|||
display: block; |
|||
font-size: 16px; |
|||
font-family: sans-serif; |
|||
font-weight: 700; |
|||
color: #444; |
|||
line-height: 1.3; |
|||
padding: 1em 2.6em 0.9em 1.4em; |
|||
width: 100%; |
|||
max-width: 100%; |
|||
box-sizing: border-box; |
|||
margin: 0; |
|||
border-radius: 0.5em; |
|||
-moz-appearance: none; |
|||
-webkit-appearance: none; |
|||
appearance: none; |
|||
background-color: #fafafa; |
|||
} |
|||
|
|||
.arrow { |
|||
position: absolute; |
|||
right: 10px; |
|||
top: 0; |
|||
bottom: 0; |
|||
margin: auto; |
|||
width: 30px; |
|||
height: 30px; |
|||
pointer-events: none; |
|||
color: var(--primary100); |
|||
} |
|||
</style> |
|||
|
|||
<div class="select-container"> |
|||
<select on:change {value}> |
|||
<slot /> |
|||
</select> |
|||
<span class="arrow"> |
|||
{@html getIcon('chevron-down', '24')} |
|||
</span> |
|||
</div> |
|||
@ -1,49 +1,95 @@ |
|||
<script> |
|||
import Modal from "../../common/Modal.svelte"; |
|||
import EventSelector from "../EventSelector.svelte"; |
|||
import HandlerSelector from "./HandlerSelector.svelte"; |
|||
import IconButton from "../../common/IconButton.svelte"; |
|||
import Select from "../../common/Select.svelte"; |
|||
|
|||
export let event; |
|||
export let events; |
|||
export let open; |
|||
export let closeModal; |
|||
export let changeEventHandler; |
|||
export let removeEventHandler; |
|||
export let addEventHandler; |
|||
|
|||
$: action = open && event ? "Edit" : "Create"; |
|||
|
|||
let newEventType = "onClick"; |
|||
</script> |
|||
|
|||
<Modal isOpen={open} onClosed={closeModal}> |
|||
<h2>{action} Event</h2> |
|||
<EventSelector |
|||
onChanged={console.log} |
|||
onRemoved={console.log} |
|||
{event} |
|||
/> |
|||
</Modal> |
|||
|
|||
<style> |
|||
h3 { |
|||
text-transform: uppercase; |
|||
h2 { |
|||
color: var(--primary100); |
|||
font-size: 20px; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
h4 { |
|||
font-size: 0.7em; |
|||
} |
|||
|
|||
/* TODO: Should be it's own component */ |
|||
input { |
|||
font-size: 12px; |
|||
font-weight: 700; |
|||
color: #8997ab; |
|||
margin-bottom: 10px; |
|||
color: #163057; |
|||
opacity: 0.7; |
|||
padding: 5px 10px; |
|||
box-sizing: border-box; |
|||
border: 1px solid #dbdbdb; |
|||
border-radius: 2px; |
|||
outline: none; |
|||
} |
|||
|
|||
.root { |
|||
font-size: 10pt; |
|||
width: 100%; |
|||
.event-action { |
|||
background: #fafafa; |
|||
} |
|||
|
|||
.form-root { |
|||
.event-options { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
} |
|||
</style> |
|||
|
|||
.prop-container { |
|||
flex: 1 1 auto; |
|||
min-width: 250px; |
|||
} |
|||
|
|||
.edit-icon:hover { |
|||
cursor: pointer; |
|||
} |
|||
</style> |
|||
<Modal bind:isOpen={open} onClosed={closeModal}> |
|||
{#if event} |
|||
<h2>{event.name}</h2> |
|||
{:else} |
|||
<h2>Create a New Component Event</h2> |
|||
{/if} |
|||
<span>Click here to learn more about component events</span> |
|||
|
|||
<div class="event-options"> |
|||
<div> |
|||
<h5>Event Name</h5> |
|||
<input type="text" /> |
|||
</div> |
|||
|
|||
<div> |
|||
<h5>Event Type</h5> |
|||
<Select bind:value={newEventType}> |
|||
{#each events as [name]} |
|||
<option value={name}>{name}</option> |
|||
{/each} |
|||
</Select> |
|||
</div> |
|||
</div> |
|||
|
|||
<h5>Event Action(s)</h5> |
|||
{#if event.handlers} |
|||
{#each event.handlers as handler, index} |
|||
<HandlerSelector |
|||
{index} |
|||
onChanged={changeEventHandler} |
|||
onRemoved={() => removeEventHandler(index)} |
|||
{handler} /> |
|||
<hr /> |
|||
{/each} |
|||
{/if} |
|||
<div |
|||
class="addelement-container" |
|||
on:click={() => addEventHandler(newEventType)}> |
|||
<IconButton icon="plus" size="12" /> |
|||
Add Handler |
|||
</div> |
|||
</Modal> |
|||
|
|||
Loading…
Reference in new issue