Fixed vendor form issues IO-444

This commit is contained in:
Patrick Fic
2020-12-08 11:28:36 -08:00
parent bb8343f966
commit 83a90779a8
3 changed files with 27 additions and 12 deletions

View File

@@ -2,12 +2,11 @@ import i18n from "i18next";
import phone from "phone"; import phone from "phone";
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import PhoneInput from "react-phone-input-2"; import PhoneInput from "react-phone-input-2";
import "./phone-form-item.styles.scss";
import "react-phone-input-2/lib/high-res.css"; import "react-phone-input-2/lib/high-res.css";
import "./phone-form-item.styles.scss";
function FormItemPhone(props, ref) { function FormItemPhone(props, ref) {
return ( return (
<PhoneInput <PhoneInput
country={"ca"}
onlyCountries={["ca", "us"]} onlyCountries={["ca", "us"]}
ref={ref} ref={ref}
className="ant-input" className="ant-input"
@@ -30,10 +29,9 @@ export default forwardRef(FormItemPhone);
export const PhoneItemFormatterValidation = (getFieldValue, name) => ({ export const PhoneItemFormatterValidation = (getFieldValue, name) => ({
async validator(rule, value) { async validator(rule, value) {
console.log("getFieldValue(name)", getFieldValue(name)); const p = phone(getFieldValue(name), "us");
const p2 = phone(getFieldValue(name), "ca");
const p = phone(getFieldValue(name), "ca"); if (p.length > 0 || p2.length > 0) {
if (p.length > 0) {
return Promise.resolve(); return Promise.resolve();
} else { } else {
return Promise.reject(i18n.t("general.validation.invalidphone")); return Promise.reject(i18n.t("general.validation.invalidphone"));

View File

@@ -6,14 +6,14 @@ import {
InputNumber, InputNumber,
Select, Select,
Space, Space,
Typography Typography,
} from "antd"; } from "antd";
import React from "react"; import React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component"; import InputNumberCalculator from "../form-input-number-calculator/form-input-number-calculator.component";
import FormItemEmail from "../form-items-formatted/email-form-item.component"; import FormItemEmail from "../form-items-formatted/email-form-item.component";
import PhoneFormItem, { import PhoneFormItem, {
PhoneItemFormatterValidation PhoneItemFormatterValidation,
} from "../form-items-formatted/phone-form-item.component"; } from "../form-items-formatted/phone-form-item.component";
import LayoutFormRow from "../layout-form-row/layout-form-row.component"; import LayoutFormRow from "../layout-form-row/layout-form-row.component";
@@ -23,6 +23,7 @@ export default function VendorsFormComponent({
handleDelete, handleDelete,
responsibilityCenters, responsibilityCenters,
}) { }) {
console.log("🚀 ~ file: vendors-form.component.jsx ~ line 26 ~ formLoading", formLoading)
const { t } = useTranslation(); const { t } = useTranslation();
const { getFieldValue } = form; const { getFieldValue } = form;
return ( return (
@@ -40,7 +41,13 @@ export default function VendorsFormComponent({
</Button> </Button>
</Space> </Space>
<LayoutFormRow grow> <LayoutFormRow grow>
<Form.Item label={t("vendors.fields.name")} name="name"> <Form.Item
label={t("vendors.fields.name")}
name="name"
rules={[
{ required: true, message: t("general.validation.required") },
]}
>
<Input /> <Input />
</Form.Item> </Form.Item>
<Form.Item <Form.Item
@@ -59,6 +66,7 @@ export default function VendorsFormComponent({
label={t("vendors.fields.phone")} label={t("vendors.fields.phone")}
name="phone" name="phone"
rules={[ rules={[
{ required: true, message: t("general.validation.required") },
({ getFieldValue }) => ({ getFieldValue }) =>
PhoneItemFormatterValidation(getFieldValue, "phone"), PhoneItemFormatterValidation(getFieldValue, "phone"),
]} ]}

View File

@@ -38,20 +38,24 @@ function VendorsFormContainer({ refetch, bodyshop }) {
const [deleteVendor] = useMutation(DELETE_VENDOR); const [deleteVendor] = useMutation(DELETE_VENDOR);
const handleDelete = () => { const handleDelete = () => {
setFormLoading(true); setFormLoading(true);
deleteVendor({ variables: { id: selectedvendor } }) deleteVendor({
variables: { id: selectedvendor },
refetchQueries: ["QUERY_ALL_VENDORS"],
})
.then((r) => { .then((r) => {
notification["success"]({ notification["success"]({
message: t("vendors.successes.deleted"), message: t("vendors.successes.deleted"),
}); });
//TODO Better way to reset the field decorators? //TODO Better way to reset the field decorators?
if (refetch) refetch().then((r) => form.resetFields()); if (refetch) refetch().then((r) => form.resetFields());
setFormLoading(false);
}) })
.catch((error) => { .catch((error) => {
notification["error"]({ notification["error"]({
message: t("vendors.errors.deleting"), message: t("vendors.errors.deleting"),
}); });
setFormLoading(false);
}); });
setFormLoading(false);
}; };
const handleFinish = (values) => { const handleFinish = (values) => {
@@ -60,6 +64,7 @@ function VendorsFormContainer({ refetch, bodyshop }) {
//It's a vendor to update. //It's a vendor to update.
updateVendor({ updateVendor({
variables: { id: selectedvendor, vendor: values }, variables: { id: selectedvendor, vendor: values },
refetchQueries: ["QUERY_ALL_VENDORS"],
}) })
.then((r) => { .then((r) => {
notification["success"]({ notification["success"]({
@@ -67,17 +72,20 @@ function VendorsFormContainer({ refetch, bodyshop }) {
}); });
//TODO Better way to reset the field decorators? //TODO Better way to reset the field decorators?
if (refetch) refetch().form.resetFields(); if (refetch) refetch().form.resetFields();
setFormLoading(false);
}) })
.catch((error) => { .catch((error) => {
notification["error"]({ notification["error"]({
message: t("vendors.errors.saving"), message: t("vendors.errors.saving"),
}); });
console.log("error", error); console.log("error", error);
setFormLoading(false);
}); });
} else { } else {
//It's a new vendor to insert. //It's a new vendor to insert.
insertvendor({ insertvendor({
variables: { vendorInput: [{ ...values, bodyshopid: bodyshop.id }] }, variables: { vendorInput: [{ ...values, bodyshopid: bodyshop.id }] },
refetchQueries: ["QUERY_ALL_VENDORS"],
}) })
.then((r) => { .then((r) => {
notification["success"]({ notification["success"]({
@@ -86,14 +94,15 @@ function VendorsFormContainer({ refetch, bodyshop }) {
//TODO Better way to reset the field decorators? //TODO Better way to reset the field decorators?
if (refetch) refetch(); if (refetch) refetch();
form.resetFields(); form.resetFields();
setFormLoading(false);
}) })
.catch((error) => { .catch((error) => {
notification["error"]({ notification["error"]({
message: t("vendors.errors.saving"), message: t("vendors.errors.saving"),
}); });
setFormLoading(false);
}); });
} }
setFormLoading(false);
}; };
useEffect(() => { useEffect(() => {