2019-08-20 08:18:23 +12:00
|
|
|
<script>
|
2020-11-19 08:18:18 +13:00
|
|
|
import { getContext } from "svelte"
|
2021-08-13 23:22:35 +12:00
|
|
|
import "@spectrum-css/button/dist/index-vars.css"
|
2020-11-19 08:18:18 +13:00
|
|
|
|
2021-10-29 03:29:48 +13:00
|
|
|
const { styleable, builderStore } = getContext("sdk")
|
2020-11-25 00:02:10 +13:00
|
|
|
const component = getContext("component")
|
2020-11-18 01:08:24 +13:00
|
|
|
|
2020-02-03 22:50:30 +13:00
|
|
|
export let disabled = false
|
2021-01-14 22:45:09 +13:00
|
|
|
export let text = ""
|
2020-11-25 22:50:51 +13:00
|
|
|
export let onClick
|
2021-06-17 05:14:23 +12:00
|
|
|
export let size = "M"
|
|
|
|
export let type = "primary"
|
2021-07-05 21:19:27 +12:00
|
|
|
export let quiet = false
|
2021-10-29 03:29:48 +13:00
|
|
|
|
|
|
|
let node
|
|
|
|
|
|
|
|
$: $component.editing && node?.focus()
|
|
|
|
$: componentText = getComponentText(text, $builderStore, $component)
|
|
|
|
|
|
|
|
const getComponentText = (text, builderState, componentState) => {
|
|
|
|
if (!builderState.inBuilder || componentState.editing) {
|
|
|
|
return text || " "
|
|
|
|
}
|
|
|
|
return text || componentState.name || "Placeholder text"
|
|
|
|
}
|
|
|
|
|
|
|
|
const updateText = e => {
|
2021-11-19 09:32:57 +13:00
|
|
|
builderStore.actions.updateProp("text", e.target.textContent.trim())
|
2021-10-29 03:29:48 +13:00
|
|
|
}
|
2019-08-20 08:18:23 +12:00
|
|
|
</script>
|
|
|
|
|
2020-11-25 00:02:10 +13:00
|
|
|
<button
|
2021-06-17 05:14:23 +12:00
|
|
|
class={`spectrum-Button spectrum-Button--size${size} spectrum-Button--${type}`}
|
2021-07-05 21:19:27 +12:00
|
|
|
class:spectrum-Button--quiet={quiet}
|
2021-10-29 03:29:48 +13:00
|
|
|
{disabled}
|
2020-11-25 22:50:51 +13:00
|
|
|
use:styleable={$component.styles}
|
2021-05-04 22:04:42 +12:00
|
|
|
on:click={onClick}
|
2021-10-29 03:29:48 +13:00
|
|
|
contenteditable={$component.editing}
|
|
|
|
on:blur={$component.editing ? updateText : null}
|
2021-11-17 02:22:31 +13:00
|
|
|
bind:this={node}
|
2021-05-04 22:04:42 +12:00
|
|
|
>
|
2021-10-29 03:29:48 +13:00
|
|
|
{componentText}
|
2021-06-17 10:27:38 +12:00
|
|
|
</button>
|
2021-06-25 19:55:45 +12:00
|
|
|
|
|
|
|
<style>
|
|
|
|
button {
|
|
|
|
width: fit-content;
|
|
|
|
width: -moz-fit-content;
|
2021-11-05 00:30:43 +13:00
|
|
|
white-space: nowrap;
|
|
|
|
overflow: hidden;
|
|
|
|
text-overflow: ellipsis;
|
2021-06-25 19:55:45 +12:00
|
|
|
}
|
2021-08-13 23:22:35 +12:00
|
|
|
.spectrum-Button--overBackground:hover {
|
|
|
|
color: #555;
|
|
|
|
}
|
2021-09-20 23:14:40 +12:00
|
|
|
.spectrum-Button::after {
|
|
|
|
display: none;
|
|
|
|
}
|
2021-06-25 19:55:45 +12:00
|
|
|
</style>
|