import { defineAsyncComponent, defineComponent, toRefs } from 'vue'; import { ref, reactive, computed } from 'vue'; import { AddStockUnitDocument, AddStockUnitMutation, AddStockUnitMutationVariables, EditStockUnitDocument, EditStockUnitMutation, EditStockUnitMutationVariables } from '@/graphql/operations/inventory.mutations'; import { useInventoryStore } from '@/stores/inventory'; import useApiUtil from '@/composables/api_util'; import { IStockUnit } from '@/models/inventory'; const Modal = defineAsyncComponent( () => import('@/components/ui/FelModal.vue') ) const StockUnit = defineComponent({ name: 'stock-unit', setup(props, ctx) { const inventoryStore = useInventoryStore(); const { withClientMutation } = useApiUtil(); let showModal = ref(false); let formTitle = ref(''); let form = reactive({} as IStockUnit); const formAction = ref(true); inventoryStore.fetchUnits(); const stockUnits = computed(() => inventoryStore.getUnits); function addStockUnit(): void { const payload = { ...form }; withClientMutation(AddStockUnitDocument, { payload }, 'createStockUnit').then(result => inventoryStore.addUnit(result)); } function editStockUnit(): void { const payload = { name: form.name, }; withClientMutation(EditStockUnitDocument, { uid: form.uid, payload }, 'updateStockUnit').then(result => inventoryStore.updateUnit(result) ); } function FormManager(create: boolean, obj: IStockUnit | null): void { formAction.value = create; formTitle.value = (create ? 'CREATE' : 'EDIT') + ' ' + 'STOCK UNIT'; showModal.value = true; if (create) { Object.assign(form, {} as IStockUnit); } else { Object.assign(form, { ...obj }); } } function saveForm(): void { if (formAction.value === true) addStockUnit(); if (formAction.value === false) editStockUnit(); showModal.value = false; } return { form, FormManager, saveForm, stockUnits, showModal, formTitle, }; }, render() { return (


{this.stockUnits.map(unit => { return ( ); })}
Unit Name
{unit?.name}
{/* StockUnit Form Modal */} {this.showModal ? ( (this.showModal = false)} contentWidth="w-1/4"> {{ header: () =>

{this.formTitle}

, body: () => { return (

); }, }}
) : null}
); }, }); export { StockUnit }; export default StockUnit