mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-02 04:39:54 -05:00
async component loading for model editor components
This commit is contained in:
@@ -1,44 +1,19 @@
|
||||
<template>
|
||||
<v-dialog max-width="600" activator="parent" v-model="dialog">
|
||||
<supermarket-category-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'SupermarketCategory'"></supermarket-category-editor>
|
||||
<unit-conversion-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'UnitConversion'" :disabled-fields="disabledFields"></unit-conversion-editor>
|
||||
<property-type-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'PropertyType'" :disabled-fields="disabledFields"></property-type-editor>
|
||||
<access-token-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'AccessToken'"></access-token-editor>
|
||||
<invite-link-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'InviteLink'"></invite-link-editor>
|
||||
<supermarket-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'Supermarket'"></supermarket-editor>
|
||||
<automation-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'Automation'"></automation-editor>
|
||||
<user-space-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'UserSpace'"></user-space-editor>
|
||||
<meal-type-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'MealType'"></meal-type-editor>
|
||||
<property-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'Property'"></property-editor>
|
||||
<food-editor :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false" v-if="model == 'Food'"></food-editor>
|
||||
<component :is="editorComponent" :item="item" @create="createEvent" @save="saveEvent" @delete="deleteEvent" dialog @close="dialog = false"></component>
|
||||
</v-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
|
||||
import {PropType, ref} from "vue";
|
||||
import AccessTokenEditor from "@/components/model_editors/AccessTokenEditor.vue";
|
||||
import {AccessToken, Food} from "@/openapi";
|
||||
import InviteLinkEditor from "@/components/model_editors/InviteLinkEditor.vue";
|
||||
import UserSpaceEditor from "@/components/model_editors/UserSpaceEditor.vue";
|
||||
import MealTypeEditor from "@/components/model_editors/MealTypeEditor.vue";
|
||||
import PropertyEditor from "@/components/model_editors/PropertyEditor.vue";
|
||||
import UnitConversionEditor from "@/components/model_editors/UnitConversionEditor.vue";
|
||||
import FoodEditor from "@/components/model_editors/FoodEditor.vue";
|
||||
import SupermarketEditor from "@/components/model_editors/SupermarketEditor.vue";
|
||||
import SupermarketCategoryEditor from "@/components/model_editors/SupermarketCategoryEditor.vue";
|
||||
import PropertyTypeEditor from "@/components/model_editors/PropertyTypeEditor.vue";
|
||||
import AutomationEditor from "@/components/model_editors/AutomationEditor.vue";
|
||||
import {defineAsyncComponent, PropType, ref, shallowRef} from "vue";
|
||||
import {EditorSupportedModels} from "@/types/Models";
|
||||
|
||||
const emit = defineEmits(['create', 'save', 'delete'])
|
||||
|
||||
const props = defineProps({
|
||||
model: {
|
||||
type: String as PropType<EditorSupportedModels>,
|
||||
required: true,
|
||||
},
|
||||
model: { type: String as PropType<EditorSupportedModels>, required: true, },
|
||||
item: {default: null},
|
||||
disabledFields: {default: []},
|
||||
closeAfterCreate: {default: true},
|
||||
@@ -46,6 +21,8 @@ const props = defineProps({
|
||||
closeAfterDelete: {default: true},
|
||||
})
|
||||
|
||||
const editorComponent = shallowRef(defineAsyncComponent(() => import(`@/components/model_editors/${props.model}Editor.vue`)))
|
||||
|
||||
const dialog = ref(false)
|
||||
|
||||
function createEvent(arg: any) {
|
||||
|
||||
Reference in New Issue
Block a user