diff --git a/client/src/components/content-block-form/ContentElement.vue b/client/src/components/content-block-form/ContentElement.vue
new file mode 100644
index 00000000..e2607729
--- /dev/null
+++ b/client/src/components/content-block-form/ContentElement.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
diff --git a/client/src/components/content-block-form/ContentsForm.vue b/client/src/components/content-block-form/ContentsForm.vue
index d48ed0f2..3a287d87 100644
--- a/client/src/components/content-block-form/ContentsForm.vue
+++ b/client/src/components/content-block-form/ContentsForm.vue
@@ -27,37 +27,10 @@
:key="index"
class="contents-form__element"
v-for="(element, index) in localContentBlock.contents">
-
-
-
-
+
import {meQuery} from '@/graphql/queries';
- const ContentBlockElementChooserWidget = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/ContentBlockElementChooserWidget');
const ModalInput = () => import(/* webpackChunkName: "content-forms" */'@/components/ModalInput');
const AddContentElement = () => import(/* webpackChunkName: "content-forms" */'@/components/AddContentElement');
- const LinkForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/LinkForm');
- const VideoForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/VideoForm');
- const ImageForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/ImageForm');
- const DocumentForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/DocumentForm');
- const AssignmentForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/AssignmentForm');
- const TextForm = () => import(/* webpackChunkName: "content-forms" */'@/components/content-forms/TextForm');
+ const ContentElement = () => import(/* webpackChunkName: "content-forms" */'@/components/content-block-form/ContentElement');
const Modal = () => import('@/components/Modal');
- const TrashIcon = () => import(/* webpackChunkName: "icons" */'@/components/icons/TrashIcon');
const Checkbox = () => import('@/components/ui/Checkbox');
export default {
props: {
- 'content-block': Object,
- 'block-type': {
+ contentBlock: Object,
+ blockType: {
type: String,
default: 'ContentBlock',
},
- 'show-task-selection': {
+ showTaskSelection: {
type: Boolean,
default: false,
},
- 'disable-save': {
+ disableSave: {
type: Boolean,
default: false,
},
},
components: {
+ ContentElement,
Modal,
- ContentBlockElementChooserWidget,
ModalInput,
AddContentElement,
- LinkForm,
- VideoForm,
- ImageForm,
- DocumentForm,
- AssignmentForm,
- TextForm,
- TrashIcon,
Checkbox,
},
@@ -157,119 +116,11 @@
},
methods: {
- type(element) {
- switch (element.type) {
- case 'link_block':
- return 'link-form';
- case 'video_block':
- return 'video-form';
- case 'image_url_block':
- return 'image-form';
- case 'text_block':
- return 'text-form';
- case 'assignment':
- return 'assignment-form';
- case 'document_block':
- return 'document-form';
- }
- return 'content-block-element-chooser-widget';
+ setContentBlockType(checked, localContentBlock) {
+ this.localContentBlock.isAssignment = checked;
},
- _updateProperty(value, index, key) {
- const content = this.localContentBlock.contents[index];
- this.localContentBlock.contents.splice(index, 1, {
- ...content,
- value: {
- ...content.value,
- [key]: value,
- },
- });
- },
- changeLinkUrl(value, index) {
- this._updateProperty(value, index, 'url');
- },
- changeLinkText(value, index) {
- this._updateProperty(value, index, 'text');
- },
- changeVideoUrl(value, index) {
- this._updateProperty(value, index, 'url');
- },
- changeImageUrl(value, index) {
- this._updateProperty(value, index, 'url');
- },
- changeDocumentUrl(value, index) {
- this._updateProperty(value, index, 'url');
- },
- changeTextValue(value, index) {
- this._updateProperty(value, index, 'text');
- },
- changeAssignmentTitle(value, index) {
- this._updateProperty(value, index, 'title');
- },
- changeAssignmentAssignment(value, index) {
- this._updateProperty(value, index, 'assignment');
- },
- removeElement(index) {
- this.localContentBlock.contents.splice(index, 1);
- },
- addElement(index) {
- this.localContentBlock.contents.splice(index + 1, 0, {
- hideAssignment: this.blockType !== 'ContentBlock',
- });
- },
- updateTitle(title) {
- this.localContentBlock.title = title;
- this.error = false;
- },
- changeType(index, type, value) {
- let el = {
- type: type,
- value: Object.assign({}, value),
- };
- switch (type) {
- case 'text_block':
- el = {
- ...el,
- value: {
- text: '',
- },
- };
- break;
- case 'link_block':
- el = {
- ...el,
- value: {
- text: '',
- url: '',
- },
- };
- break;
- case 'video_block':
- el = {
- ...el,
- value: {
- url: '',
- },
- };
- break;
- case 'document_block':
- el = {
- ...el,
- value: Object.assign({
- url: '',
- }, value),
- };
- break;
- case 'image_url_block':
- el = {
- ...el,
- value: {
- url: '',
- },
- };
- break;
- }
-
- this.localContentBlock.contents.splice(index, 1, el);
+ update(index, element) {
+ this.localContentBlock.contents.splice(index, 1, element);
},
save() {
if (!this.disableSave) {
@@ -280,27 +131,31 @@
this.$emit('save', this.localContentBlock);
}
},
- setContentBlockType(checked, localContentBlock) {
- this.localContentBlock.isAssignment = checked;
+ updateTitle(title) {
+ this.localContentBlock.title = title;
+ this.error = false;
},
- switchToDocument(index, value) {
- this.changeType(index, 'document_block', value);
+ addElement(index) {
+ this.localContentBlock.contents.splice(index + 1, 0, {
+ hideAssignment: this.blockType !== 'ContentBlock',
+ });
},
+ remove(index) {
+ this.localContentBlock.contents.splice(index, 1);
+ },
+
},
};