mirror of https://github.com/Budibase/budibase.git
6 changed files with 123 additions and 1009 deletions
@ -0,0 +1,59 @@ |
|||||
|
<script> |
||||
|
import "@spectrum-css/tag/dist/index-vars.css" |
||||
|
import { ClearButton } from "@budibase/bbui" |
||||
|
import { getContext } from "svelte" |
||||
|
|
||||
|
export let onClick |
||||
|
export let text = "" |
||||
|
export let color |
||||
|
export let closable = false |
||||
|
export let size = "M" |
||||
|
|
||||
|
const component = getContext("component") |
||||
|
const { styleable, builderStore } = getContext("sdk") |
||||
|
|
||||
|
// Add color styles to main styles object, otherwise the styleable helper |
||||
|
// overrides the color when it's passed as inline style. |
||||
|
$: styles = enrichStyles($component.styles, color) |
||||
|
$: componentText = getComponentText(text, $builderStore, $component) |
||||
|
|
||||
|
const getComponentText = (text, builderState, componentState) => { |
||||
|
if (!builderState.inBuilder || componentState.editing) { |
||||
|
return text || " " |
||||
|
} |
||||
|
return text || componentState.name || "Placeholder text" |
||||
|
} |
||||
|
|
||||
|
const enrichStyles = (styles, color) => { |
||||
|
if (!color) { |
||||
|
return styles |
||||
|
} |
||||
|
return { |
||||
|
...styles, |
||||
|
normal: { |
||||
|
...styles?.normal, |
||||
|
"background-color": color, |
||||
|
"border-color": color, |
||||
|
color: "white", |
||||
|
"--spectrum-clearbutton-medium-icon-color": "white", |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<div class="spectrum-Tag spectrum-Tag--size{size}" use:styleable={styles}> |
||||
|
<span class="spectrum-Tag-label">{componentText}</span> |
||||
|
{#if closable} |
||||
|
<ClearButton on:click={onClick} /> |
||||
|
{/if} |
||||
|
</div> |
||||
|
|
||||
|
<style> |
||||
|
.spectrum-Tag--sizeS, |
||||
|
.spectrum-Tag--sizeM { |
||||
|
padding: 0 var(--spectrum-global-dimension-size-100); |
||||
|
} |
||||
|
.spectrum-Tag--sizeL { |
||||
|
padding: 0 var(--spectrum-global-dimension-size-150); |
||||
|
} |
||||
|
</style> |
||||
File diff suppressed because it is too large
Loading…
Reference in new issue