mirror of
https://gitlab.com/bramw/baserow.git
synced 2025-04-13 00:38:06 +00:00
91 lines
2.1 KiB
Vue
91 lines
2.1 KiB
Vue
<template>
|
|
<div
|
|
class="element-preview"
|
|
:class="{
|
|
'element-preview--active': active,
|
|
'element-preview--in-error': inError,
|
|
}"
|
|
@click="$emit('selected')"
|
|
>
|
|
<InsertElementButton
|
|
v-if="active"
|
|
class="element-preview__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)"
|
|
@duplicate="$emit('duplicate')"
|
|
/>
|
|
<PageRootElement
|
|
:element="element"
|
|
:builder="builder"
|
|
:page="page"
|
|
:mode="mode"
|
|
/>
|
|
<InsertElementButton
|
|
v-if="active"
|
|
class="element-preview__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 PageRootElement from '@baserow/modules/builder/components/page/PageRootElement'
|
|
import { PLACEMENTS } from '@baserow/modules/builder/enums'
|
|
|
|
export default {
|
|
name: 'ElementPreview',
|
|
components: { ElementMenu, InsertElementButton, PageRootElement },
|
|
inject: ['builder', 'mode'],
|
|
props: {
|
|
element: {
|
|
type: Object,
|
|
required: true,
|
|
},
|
|
page: {
|
|
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)
|
|
},
|
|
inError() {
|
|
return this.elementType.isInError({
|
|
element: this.element,
|
|
builder: this.builder,
|
|
})
|
|
},
|
|
},
|
|
}
|
|
</script>
|