budibase/packages/standard-components/src/Text.svelte

82 lines
1.4 KiB
Svelte
Raw Normal View History

<script>
import { getContext } from "svelte"
2021-06-11 12:37:05 +02:00
const { styleable, builderStore } = getContext("sdk")
const component = getContext("component")
2021-06-11 12:37:05 +02:00
export let text
export let color
export let align
export let bold
export let italic
export let underline
export let size
2021-06-11 12:37:05 +02:00
$: placeholder = $builderStore.inBuilder && !text
$: componentText = $builderStore.inBuilder
? text || "Placeholder text"
: text || ""
// Add color styles to main styles object, otherwise the styleable helper
// overrides the color when it's passed as inline style.
$: styles = {
...$component.styles,
normal: {
...$component.styles?.normal,
color,
},
}
</script>
<p
use:styleable={styles}
class:placeholder
class:bold
class:italic
class:underline
class="align--{align || 'left'} size--{size || 'M'}"
>
2021-06-11 12:37:05 +02:00
{componentText}
</p>
<style>
2021-02-23 11:04:07 +01:00
p {
display: inline-block;
2021-02-23 11:04:07 +01:00
white-space: pre-wrap;
}
2021-06-11 12:37:05 +02:00
.placeholder {
font-style: italic;
2021-06-11 12:37:05 +02:00
color: var(--grey-6);
}
.bold {
font-weight: 600;
}
.italic {
font-style: italic;
}
.underline {
text-decoration: underline;
}
.size--S {
font-size: 14px;
}
.size--M {
font-size: 16px;
}
.size--L {
font-size: 18px;
}
.align--left {
text-align: left;
}
.align--center {
text-align: center;
}
.align--right {
text-align: right;
}
.align-justify {
text-align: justify;
}
</style>