import useForm, { CommonUseFormResult } from "@dashboard/hooks/useForm"; import useHandleFormSubmit from "@dashboard/hooks/useHandleFormSubmit"; import React from "react"; export enum CustomerChangeActionEnum { KEEP_ADDRESS = "keepAddress", CHANGE_ADDRESS = "changeAddress", } export interface OrderCustomerChangeData { changeActionOption: CustomerChangeActionEnum; } type UseOrderCustomerChangeFormResult = CommonUseFormResult; export interface OrderCustomerChangeFormProps { children: (props: UseOrderCustomerChangeFormResult) => React.ReactNode; initial?: Partial; onSubmit: (data: OrderCustomerChangeData) => void; } const defaultInitialFormData: OrderCustomerChangeData = { changeActionOption: CustomerChangeActionEnum.KEEP_ADDRESS, }; function useOrderCustomerChangeForm( initial: Partial = {}, onSubmit: (data: OrderCustomerChangeData) => void, ): UseOrderCustomerChangeFormResult { const { handleChange, data } = useForm({ ...initial, ...defaultInitialFormData, }); const handleFormSubmit = useHandleFormSubmit({ onSubmit, }); const handleSubmit = () => handleFormSubmit(data); const submit = (event: React.FormEvent) => { event.stopPropagation(); event.preventDefault(); return handleSubmit(); }; return { change: handleChange, submit, data, }; } const OrderCustomerChangeForm: React.FC = ({ children, initial, onSubmit, }) => { const props = useOrderCustomerChangeForm(initial, onSubmit); return
{children(props)}
; }; OrderCustomerChangeForm.displayName = "OrderCustomerChangeForm"; export default OrderCustomerChangeForm;