Your IP : 216.73.217.77


Current Path : /home/users/unlimited/www/whatsapp-crm/resources/js/Composables/
Upload File :
Current File : /home/users/unlimited/www/whatsapp-crm/resources/js/Composables/useTableFormData.js

import { ref } from 'vue';
import axios from 'axios';

export function useTableFormData(props, initialForm, initialFormInputs) {
    const currentUrl = window.location.href;
    const formUrl = ref(currentUrl);
    const isOpenFormModal = ref(false);

    const form = ref(initialForm);
    const formInputs = initialFormInputs;

    const deleteAction = async (key) => {
        try {
            await axios.delete(`${currentUrl}/${key}`);
            const idx = props.rows.data.findIndex((i) => i.id === key);
            props.rows.data.splice(idx, 1);
        } catch (error) {
            // Handle error
        }
    };

    function openModal(key, formData = {}) {
        formUrl.value = key ? `${currentUrl}/${key}` : currentUrl;

        if (key) {
            getRow();
        }

        for (const key in formData) {
            if (form.hasOwnProperty(key)) {
                form[key] = formData[key];
            }
        }

        isOpenFormModal.value = true;
    }

    function getRow() {
        axios
        .get(formUrl.value)
        .then((response) => {
            const { data } = response;
            for (const key in data.item) {
                if (form.value.hasOwnProperty(key)) {
                    form.value[key] = data.item[key];
                }
            }
        })
        .catch((error) => {
            // console.error('Error:', error);
        });
    }

    return { currentUrl, props, formUrl, isOpenFormModal, form, formInputs, deleteAction, openModal, getRow };
}