import _ from 'lodash' import form from '@baserow/modules/core/mixins/form' export default { props: { element: { type: Object, required: true, }, parentElement: { type: Object, required: false, default: null, }, }, mixins: [form], data() { const allowedValues = this.getAllowedValues() return { allowedValues, values: this.getValuesFromElement(allowedValues), boxStyles: Object.fromEntries( ['top', 'bottom'].map((pos) => [pos, this.getBoxStyleValue(pos)]) ), } }, watch: { boxStyles: { deep: true, handler(newValue) { Object.entries(newValue).forEach(([prop, value]) => { this.setBoxStyleValue(prop, value) }) }, }, }, methods: { isStyleAllowed(style) { return this.allowedValues.includes(style) }, getBoxStyleValue(pos) { return { padding: this.defaultValues[`style_padding_${pos}`] } }, setBoxStyleValue(pos, newValue) { if (newValue.padding !== undefined) { this.values[`style_padding_${pos}`] = newValue.padding } }, getAllowedValues() { const elementType = this.$registry.get('element', this.element.type) const parentElementType = this.parentElement ? this.$registry.get('element', this.parentElement?.type) : null if (!parentElementType) { return elementType.styles } return _.difference( elementType.styles, parentElementType.childStylesForbidden ) }, getValuesFromElement(allowedValues) { return allowedValues.reduce((obj, value) => { obj[value] = this.element[value] || null return obj }, {}) }, }, }