Fixed vendor form issues IO-444
This commit is contained in:
@@ -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"));
|
||||||
|
|||||||
@@ -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"),
|
||||||
]}
|
]}
|
||||||
|
|||||||
@@ -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(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user