mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-04-12 16:28:06 +00:00
74 lines
1.7 KiB
Vue
74 lines
1.7 KiB
Vue
<template>
|
|
<div
|
|
class="element"
|
|
:class="{ 'element--active': active }"
|
|
@click="$emit('selected')"
|
|
>
|
|
<InsertElementButton
|
|
v-if="active"
|
|
class="element__insert--top"
|
|
@click="$emit('insert', PLACEMENTS.BEFORE)"
|
|
/>
|
|
<ElementMenu
|
|
v-if="active"
|
|
:move-up-disabled="isFirstElement"
|
|
:move-down-disabled="isLastElement"
|
|
:is-copying="isCopying"
|
|
@delete="$emit('delete')"
|
|
@move="$emit('move', $event)"
|
|
@copy="$emit('copy')"
|
|
/>
|
|
<component
|
|
:is="elementType.component"
|
|
v-bind="elementType.getComponentProps(element)"
|
|
class="element__component"
|
|
></component>
|
|
<InsertElementButton
|
|
v-if="active"
|
|
class="element__insert--bottom"
|
|
@click="$emit('insert', PLACEMENTS.AFTER)"
|
|
/>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import ElementMenu from '@baserow/modules/builder/components/elements/ElementMenu'
|
|
import InsertElementButton from '@baserow/modules/builder/components/elements/InsertElementButton'
|
|
import { PLACEMENTS } from '@baserow/modules/builder/enums'
|
|
export default {
|
|
name: 'ElementPreview',
|
|
components: { ElementMenu, InsertElementButton },
|
|
props: {
|
|
element: {
|
|
type: Object,
|
|
required: true,
|
|
},
|
|
active: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
isLastElement: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
isFirstElement: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
isCopying: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
},
|
|
computed: {
|
|
PLACEMENTS: () => PLACEMENTS,
|
|
elementType() {
|
|
return this.$registry.get('element', this.element.type)
|
|
},
|
|
},
|
|
}
|
|
</script>
|