refactor(marketing): Standardize marketing wizard steps with initial data support

- Add support for initial data in all marketing wizard step components
- Update step presenters to accept and handle initial data
- Modify forwardRef implementations to include initialData prop
- Add TypeScript interfaces for step component props
- Improve type safety and data handling across marketing wizard steps
- Prepare components for edit and create workflows with consistent data management
This commit is contained in:
AmirReza Jamali
2025-11-11 10:43:32 +03:30
parent b444f6a08f
commit bd79b7ed14
19 changed files with 842 additions and 688 deletions
+12 -4
View File
@@ -7,8 +7,13 @@ import { FormErrorMessages } from "@/constants/Texts";
import { forwardRef, useImperativeHandle } from "react";
import useHeroStepPresenter from "./useHeroStepPresenter";
const HeroStep = forwardRef((props, ref) => {
const { errors, handleSubmit, onSubmit, register, getValues } = useHeroStepPresenter();
interface HeroStepProps {
initialData?: any;
}
const HeroStep = forwardRef<unknown, HeroStepProps>(({ initialData }, ref) => {
const { errors, handleSubmit, onSubmit, register, getValues } =
useHeroStepPresenter(initialData);
useImperativeHandle(ref, () => ({
getData: () => getValues(),
@@ -16,7 +21,7 @@ const HeroStep = forwardRef((props, ref) => {
return (
<form
className=" items-start gap-9 rounded-xl bg-gray-1 p-10 dark:bg-gray-7 sm:grid-cols-2"
className="items-start gap-9 rounded-xl bg-gray-1 p-10 dark:bg-gray-7 sm:grid-cols-2"
onSubmit={handleSubmit(onSubmit)}
>
<div className="flex flex-col gap-9">
@@ -114,7 +119,10 @@ const HeroStep = forwardRef((props, ref) => {
<InputGroup
{...register("gifFile", {
required: { message: FormErrorMessages.required, value: true },
pattern: {message: FormErrorMessages.invalidPattern, value: REGEX.URL}
pattern: {
message: FormErrorMessages.invalidPattern,
value: REGEX.URL,
},
})}
label="GIF File URL"
name="gifFile"