forked from tsai/budibase
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> |
<script> |
||||
import Modal from "../../common/Modal.svelte"; |
import Modal from "../../common/Modal.svelte"; |
||||
import EventSelector from "../EventSelector.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 event; |
||||
|
export let events; |
||||
export let open; |
export let open; |
||||
export let closeModal; |
export let closeModal; |
||||
|
export let changeEventHandler; |
||||
|
export let removeEventHandler; |
||||
|
export let addEventHandler; |
||||
|
|
||||
$: action = open && event ? "Edit" : "Create"; |
let newEventType = "onClick"; |
||||
|
|
||||
</script> |
</script> |
||||
|
|
||||
<Modal isOpen={open} onClosed={closeModal}> |
|
||||
<h2>{action} Event</h2> |
|
||||
<EventSelector |
|
||||
onChanged={console.log} |
|
||||
onRemoved={console.log} |
|
||||
{event} |
|
||||
/> |
|
||||
</Modal> |
|
||||
|
|
||||
<style> |
<style> |
||||
h3 { |
h2 { |
||||
text-transform: uppercase; |
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-size: 12px; |
||||
font-weight: 700; |
font-weight: 700; |
||||
color: #8997ab; |
color: #163057; |
||||
margin-bottom: 10px; |
opacity: 0.7; |
||||
|
padding: 5px 10px; |
||||
|
box-sizing: border-box; |
||||
|
border: 1px solid #dbdbdb; |
||||
|
border-radius: 2px; |
||||
|
outline: none; |
||||
} |
} |
||||
|
|
||||
.root { |
.event-action { |
||||
font-size: 10pt; |
background: #fafafa; |
||||
width: 100%; |
|
||||
} |
} |
||||
|
|
||||
.form-root { |
.event-options { |
||||
display: flex; |
display: flex; |
||||
flex-wrap: wrap; |
align-items: center; |
||||
|
justify-content: space-between; |
||||
} |
} |
||||
|
</style> |
||||
|
|
||||
.prop-container { |
<Modal bind:isOpen={open} onClosed={closeModal}> |
||||
flex: 1 1 auto; |
{#if event} |
||||
min-width: 250px; |
<h2>{event.name}</h2> |
||||
} |
{:else} |
||||
|
<h2>Create a New Component Event</h2> |
||||
.edit-icon:hover { |
{/if} |
||||
cursor: pointer; |
<span>Click here to learn more about component events</span> |
||||
} |
|
||||
</style> |
<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