import { Button, Flex, Modal, TextControl } from '@wordpress/components'; import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { vfAPI } from '../../../lib/vfAPI'; import { Vendor } from '../../../../../app/models/Vendor'; import { apiURL } from '../../../data/apiURL'; import { Spinner } from '../../../../../resources/js/Shared/Spinner'; export const VendorForm = (props) => { const baseURL = apiURL.VENDORS; const [hasResolved, setResolved] = useState(false); const [isOpen, setOpen] = useState(false); const [vendor, setVendor] = useState(new Vendor()); const closeModal = () => setOpen(false); const destroyVendor = () => { const url = `${baseURL}/${vendor.id}`; vfAPI.delete(url).then((response) => { location.assign(location.href.replace(`/${vendor.id}`, '')); }); }; const handleChange = (change) => { setVendor((prev) => { return { ...prev, ...change, }; }); }; const handleDelete = () => { setOpen(true); }; const handleSubmit = (e) => { e.preventDefault(); if (props.isNew) { storeVendor(); } else { updateVendor(); } }; const showVendor = (id: number) => { const url = `${baseURL}/${id}`; vfAPI.get(url).then((response) => { if (response.data.vendor) { setVendor(response.data.vendor); } }); }; const storeVendor = () => { const url = `${baseURL}`; vfAPI.post(url, vendor).then((response) => { if (response.data.vendor) { location.assign( location.href.replace( 'create', response.data.vendor.id.toString() ) ); } }); }; const updateVendor = () => { const url = `${baseURL}/${vendor.id}`; vfAPI.put(url, vendor).then(() => {}); }; useEffect(() => { if (props.id) { showVendor(props.id); } }, [props.id]); useEffect(() => { if (props.isNew) { setVendor(new Vendor()); props.setBreadcrumbs((prev) => [ ...prev, { name: 'Add new', href: '?page=vendorfuel#!/purchasing/vendors/create', }, ]); } }, [props.isNew]); useEffect(() => { setResolved(true); if (vendor.id) { props.setBreadcrumbs((prev) => { const breadcrumbs = [...prev]; breadcrumbs.push({ label: vendor.name, href: `?page=vendorfuel#!/purchasing/vendors/${vendor.id}`, }); return breadcrumbs; }); } }, [vendor]); return ( <> {hasResolved ? (
{ handleChange({ name }); }} /> { handleChange({ lead_time }); }} /> { handleChange({ location }); }} />
) : ( )} {isOpen && (

This will delete this vendor.

)} ); }; VendorForm.propTypes = { id: PropTypes.number, isNew: PropTypes.bool, setBreadcrumbs: PropTypes.func, };