Skip to content

Commit

Permalink
Add defineQuestionComponent function
Browse files Browse the repository at this point in the history
  • Loading branch information
dk981234 committed May 18, 2023
1 parent 9b91e47 commit dcbb539
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 86 deletions.
19 changes: 2 additions & 17 deletions packages/survey-vue-ui/src/Checkbox.vue
Original file line number Diff line number Diff line change
Expand Up @@ -70,29 +70,14 @@

<script lang="ts">
import { QuestionCheckboxModel } from "survey-core";
import { defineSurveyComponent } from "./base";
import { defineQuestionComponent } from "./base";
export default defineSurveyComponent({
export default defineQuestionComponent({
// eslint-disable-next-line
name: "survey-checkbox",
props: {
question: QuestionCheckboxModel,
css: Object,
},
data: (vm: any) => {
return {
getModel: () => { return vm.question; }
}
},
mounted() {
if (this.question) {
this.question.afterRenderQuestionElement(this.$el as HTMLElement);
}
},
unmounted() {
if (this.question) {
this.question.beforeDestroyQuestionElement(this.$el as HTMLElement);
}
}
});
Expand Down
20 changes: 5 additions & 15 deletions packages/survey-vue-ui/src/Imagepicker.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,22 +37,12 @@ export default defineSurveyComponent({
data: (vm: any) => {
return {
getModel: () => { return vm.question; },
getItemClass(item: any) {
return vm.question.getItemClass(item);
}
}
};
},
mounted() {
if (this.question) {
this.question.afterRenderQuestionElement(this.$el as HTMLElement);
}
methods: {
getItemClass(item: any) {
return this.question.getItemClass(item);
},
},
unmounted() {
if (this.question) {
this.question.beforeDestroyQuestionElement(this.$el as HTMLElement);
}
}
});
</script>

19 changes: 2 additions & 17 deletions packages/survey-vue-ui/src/Radiogroup.vue
Original file line number Diff line number Diff line change
Expand Up @@ -70,30 +70,15 @@

<script lang="ts">
import { QuestionRadiogroupModel } from "survey-core";
import { defineSurveyComponent } from "./base";
import { defineQuestionComponent } from "./base";
export default defineSurveyComponent({
export default defineQuestionComponent({
// eslint-disable-next-line
name: "survey-radiogroup",
props: {
question: QuestionRadiogroupModel,
css: Object,
},
data: (vm: any) => {
return {
getModel: () => { return vm.question; },
}
},
mounted() {
if (this.question) {
this.question.afterRenderQuestionElement(this.$el as HTMLElement);
}
},
unmounted() {
if (this.question) {
this.question.beforeDestroyQuestionElement(this.$el as HTMLElement);
}
}
});
</script>
21 changes: 2 additions & 19 deletions packages/survey-vue-ui/src/Signaturepad.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,32 +36,15 @@

<script lang="ts">
import { QuestionSignaturePadModel } from "survey-core";
import { defineSurveyComponent } from "./base";
import { defineQuestionComponent } from "./base";
export default defineSurveyComponent({
export default defineQuestionComponent({
// eslint-disable-next-line
name: "survey-signaturepad",
props: {
question: QuestionSignaturePadModel,
css: Object,
},
data: (vm: any) => {
return {
getModel: () => { return vm.question; },
}
},
computed: {
},
mounted() {
if (this.question) {
this.question.afterRenderQuestionElement(this.$el as HTMLElement);
}
},
unmounted() {
if (this.question) {
this.question.beforeDestroyQuestionElement(this.$el as HTMLElement);
}
}
});
</script>
19 changes: 2 additions & 17 deletions packages/survey-vue-ui/src/Text.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,15 @@

<script lang="ts">
import { QuestionTextModel } from "survey-core";
import { defineSurveyComponent } from "./base";
import { defineQuestionComponent } from "./base";
export default defineSurveyComponent({
export default defineQuestionComponent({
// eslint-disable-next-line
name: "survey-text",
props: {
question: QuestionTextModel,
css: Object,
},
data: (vm: any) => {
return {
getModel: () => { return vm.question; }
}
},
mounted() {
if (this.question) {
this.question.afterRenderQuestionElement(this.$el as HTMLElement);
}
},
unmounted() {
if (this.question) {
this.question.beforeDestroyQuestionElement(this.$el as HTMLElement);
}
}
});
</script>
37 changes: 36 additions & 1 deletion packages/survey-vue-ui/src/base.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Base } from "survey-core";
import { Base, Question } from "survey-core";
import {
ref,
defineComponent,
Expand Down Expand Up @@ -53,3 +53,38 @@ export function defineSurveyComponent(componentDefinition: ComponentOptions) {
};
return defineComponent(componentDefinition);
}

export function defineQuestionComponent(componentDefinition: ComponentOptions) {
componentDefinition.data = (vm: any) => {
return {
getModel: () => {
return vm.question;
},
};
};
const mounted = componentDefinition.mounted;
componentDefinition.mounted = function () {
if (this.question) {
this.question.afterRenderQuestionElement(this.$el);
}
if (mounted) mounted.call(this);
};
const beforeUnmount = componentDefinition.beforeUnmount;
componentDefinition.beforeUnmount = function () {
if (this.question) {
this.question.beforeDestroyQuestionElement(this.$el);
}
if (beforeUnmount) beforeUnmount.call(this);
};
return defineSurveyComponent(componentDefinition);
}

export function getComponentName(question: Question): string {
if (question.customWidget) return "survey-customwidget";
if (
(question.isDefaultRendering && question.isDefaultRendering()) ||
question.isPanel
)
return "survey-" + question.getTemplate();
return question.getComponentName();
}

0 comments on commit dcbb539

Please sign in to comment.