From cce36788ac20e137cbeecb99ef6d4575a595bd55 Mon Sep 17 00:00:00 2001 From: Loi Phan Date: Fri, 27 Oct 2023 14:15:47 +0700 Subject: [PATCH] Update name variable and optimzed code --- hotel-management/src/helpers/utils.ts | 15 +++++-- hotel-management/src/pages/User/Form.tsx | 57 +++++++++--------------- 2 files changed, 32 insertions(+), 40 deletions(-) diff --git a/hotel-management/src/helpers/utils.ts b/hotel-management/src/helpers/utils.ts index 6ba313c..954bb9f 100644 --- a/hotel-management/src/helpers/utils.ts +++ b/hotel-management/src/helpers/utils.ts @@ -28,10 +28,19 @@ const getPropValues = (stateSchema: TStateSchema, prop?: TPropValues) => { }, {} as TKeyValue); }; -const addValidator = (func: (input: string) => boolean, error: string) => { +type test = { + validatorFunc: (value: string) => boolean; + prop: string; + required?: boolean; +}; + +const addValidator = ({ validatorFunc, prop, required = true }: test) => { return { - func: func, - error: invalidFormatMessage(error), + required: required, + validator: { + func: validatorFunc, + error: invalidFormatMessage(prop), + }, }; }; diff --git a/hotel-management/src/pages/User/Form.tsx b/hotel-management/src/pages/User/Form.tsx index b455f04..c3d399a 100644 --- a/hotel-management/src/pages/User/Form.tsx +++ b/hotel-management/src/pages/User/Form.tsx @@ -11,7 +11,7 @@ import FormRow from '../../components/FormRow'; import Button from '../../commons/styles/Button.ts'; // Types -import { TKeyValue, TStateSchema } from '../../globals/types'; +import { TKeyValue, TStateSchema, TValidator } from '../../globals/types'; // Hooks import useForm from '../../hooks/useForm'; @@ -50,42 +50,25 @@ const UserForm = ({ onClose }: IUserFormProp) => { address: { value: '', error: '' }, }; - const stateValidatorSchema = { - fullName: { - required: true, - validator: addValidator( - (input: string) => isValidString(input), - 'full name', - ), - }, - identifiedCode: { - required: true, - validator: addValidator( - (input: string) => isValidNumber(input), - 'identified code', - ), - }, - phone: { - required: true, - validator: addValidator( - (input: string) => isValidPhoneNumber(input), - 'phone', - ), - }, - room: { - required: true, - validator: addValidator( - (input: string) => isValidNumber(input), - 'room number', - ), - }, - address: { - required: true, - validator: addValidator( - (input: string) => isValidAddress(input), - 'address', - ), - }, + // prettier-ignore + const stateValidatorSchema: TValidator = { + fullName: addValidator({ + validatorFunc: isValidString, + prop: 'full name' }), + identifiedCode: addValidator({ + validatorFunc: isValidNumber, + prop: 'identified code', + }), + phone: addValidator({ + validatorFunc: isValidPhoneNumber, + prop: 'phone number', + }), + room: addValidator({ + validatorFunc: isValidNumber, + prop: 'room number' }), + address: addValidator({ + validatorFunc: isValidAddress, + prop: 'address' }), }; // Submit form