Refactor content element component

This commit is contained in:
Ramon Wenger 2022-01-20 17:23:22 +01:00
parent b9ccf1700f
commit 1a87dbb788
1 changed files with 57 additions and 11 deletions

View File

@ -1,9 +1,10 @@
<template>
<div class="content-element">
<component
:class="['content-element__component', {'content-element__chooser': type(element) === 'content-block-element-chooser-widget'}]"
<content-block-element-chooser-widget
:class="['content-element__component', 'content-element__chooser']"
v-bind="element"
:is="type(element)"
v-if="isChooser"
@change-type="changeType"
/>
<content-form-section
@ -51,6 +52,8 @@
const AssignmentForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/AssignmentForm');
const TextForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/TextForm');
const CHOOSER = 'content-block-element-chooser-widget';
export default {
props: {
element: {
@ -71,23 +74,66 @@
TextForm,
},
computed: {
isChooser() {
return this.component === CHOOSER;
},
type() {
return this.getType(this.element);
},
component() {
return this.type.component;
},
title() {
return this.type.title;
}
},
methods: {
type(element) {
getType(element) {
switch (element.type) {
case 'link_block':
return 'link-form';
return {
component: 'link-form',
title: 'Link',
icon: 'link-icon'
};
case 'video_block':
return 'video-form';
return {
component: 'video-form',
title: 'Video',
icon: 'video-icon'
};
case 'image_url_block':
return 'image-form';
return {
component: 'image-form',
title: 'Bild',
icon: 'image-icon'
};
case 'text_block':
return 'text-form';
return {
component: 'text-form',
title: 'Text',
icon: 'text-icon'
};
case 'assignment':
return 'assignment-form';
return {
component: 'assignment-form',
title: 'Aufgabe & Ergebnis',
icon: 'speech-bubble-icon'
};
case 'document_block':
return 'document-form';
return {
component: 'document-form',
title: 'Dokument',
icon: 'document-icon'
};
}
return 'content-block-element-chooser-widget';
return {
component: CHOOSER,
title: '',
icon: ''
};
},
_updateProperty(value, key) {
// const content = this.localContentBlock.contents[index];