mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-04-06 05:55:28 +00:00
115 lines
3.2 KiB
Vue
115 lines
3.2 KiB
Vue
<template>
|
|
<div>
|
|
<ThemeConfigBlockSection
|
|
v-for="i in headings"
|
|
:key="i"
|
|
:title="$t('typographyThemeConfigBlock.headingLabel', { i })"
|
|
>
|
|
<template #default>
|
|
<FormGroup horizontal :label="$t('typographyThemeConfigBlock.size')">
|
|
<div
|
|
class="input__with-icon heading-theme-config-block__input-number"
|
|
>
|
|
<input
|
|
v-model="values[`heading_${i}_font_size`]"
|
|
type="number"
|
|
class="input remove-number-input-controls input--small"
|
|
:min="fontSizeMin"
|
|
:max="fontSizeMax"
|
|
:class="{
|
|
'input--error': $v.values[`heading_${i}_font_size`].$invalid,
|
|
}"
|
|
@blur="$v.values[`heading_${i}_font_size`].$touch()"
|
|
/>
|
|
<i>px</i>
|
|
</div>
|
|
<template #after-input>
|
|
<ResetButton
|
|
v-model="values"
|
|
:theme="theme"
|
|
:property="`heading_${i}_font_size`"
|
|
/>
|
|
</template>
|
|
</FormGroup>
|
|
<FormGroup horizontal :label="$t('typographyThemeConfigBlock.color')">
|
|
<ColorInput
|
|
v-model="values[`heading_${i}_text_color`]"
|
|
:color-variables="colorVariables"
|
|
:default-value="theme ? theme[`heading_${i}_text_color`] : null"
|
|
small
|
|
/>
|
|
<template #after-input>
|
|
<ResetButton
|
|
v-model="values"
|
|
:theme="theme"
|
|
:property="`heading_${i}_text_color`"
|
|
/>
|
|
</template>
|
|
</FormGroup>
|
|
</template>
|
|
<template #preview>
|
|
<component
|
|
:is="`h${i}`"
|
|
class="margin-bottom-2 theme-settings__section-ellipsis"
|
|
:class="`ab-heading--h${i}`"
|
|
>
|
|
{{ $t('typographyThemeConfigBlock.headingValue', { i }) }}
|
|
</component>
|
|
</template>
|
|
</ThemeConfigBlockSection>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { required, integer, minValue, maxValue } from 'vuelidate/lib/validators'
|
|
import themeConfigBlock from '@baserow/modules/builder/mixins/themeConfigBlock'
|
|
import ThemeConfigBlockSection from '@baserow/modules/builder/components/theme/ThemeConfigBlockSection'
|
|
import ResetButton from '@baserow/modules/builder/components/theme/ResetButton'
|
|
|
|
const fontSizeMin = 1
|
|
const fontSizeMax = 100
|
|
const headings = [1, 2, 3]
|
|
|
|
export default {
|
|
name: 'TypographyThemeConfigBlock',
|
|
components: { ThemeConfigBlockSection, ResetButton },
|
|
mixins: [themeConfigBlock],
|
|
data() {
|
|
return {
|
|
values: {},
|
|
allowedValues: headings
|
|
.map((level) => [
|
|
`heading_${level}_text_color`,
|
|
`heading_${level}_font_size`,
|
|
])
|
|
.flat(),
|
|
}
|
|
},
|
|
computed: {
|
|
headings() {
|
|
if (this.element?.level) {
|
|
return [this.element.level]
|
|
} else {
|
|
return headings
|
|
}
|
|
},
|
|
fontSizeMin() {
|
|
return fontSizeMin
|
|
},
|
|
fontSizeMax() {
|
|
return fontSizeMax
|
|
},
|
|
},
|
|
validations: {
|
|
values: headings.reduce((o, i) => {
|
|
o[`heading_${i}_font_size`] = {
|
|
required,
|
|
integer,
|
|
minValue: minValue(fontSizeMin),
|
|
maxValue: maxValue(fontSizeMax),
|
|
}
|
|
return o
|
|
}, {}),
|
|
},
|
|
}
|
|
</script>
|