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
@@ -5,39 +5,45 @@ import useChallengesStepPresenter, {
IChallengesStepFields,
} from "./useChallengesStepPresenter";
const ChallengesStep = forwardRef((props, ref) => {
const {
errors,
handleSubmit,
onSubmit,
register,
fields,
append,
remove,
control,
getValues,
} = useChallengesStepPresenter();
interface ChallengesStepProps {
initialData?: IChallengesStepFields;
}
useImperativeHandle(ref, () => ({
getData: () => getValues(),
}));
const ChallengesStep = forwardRef<unknown, ChallengesStepProps>(
({ initialData }, ref) => {
const {
errors,
handleSubmit,
onSubmit,
register,
fields,
append,
remove,
control,
getValues,
} = useChallengesStepPresenter(initialData);
return (
<SectionStep<IChallengesStepFields>
title="Challenges"
fields={fields}
handleSubmit={handleSubmit}
onSubmit={onSubmit}
register={register}
errors={errors}
append={append}
remove={remove}
control={control}
fieldName="cards"
defaultValues={{ icon: "", title: "", description: "" }}
/>
);
});
useImperativeHandle(ref, () => ({
getData: () => getValues(),
}));
return (
<SectionStep<IChallengesStepFields>
title="Challenges"
fields={fields}
handleSubmit={handleSubmit}
onSubmit={onSubmit}
register={register}
errors={errors}
append={append}
remove={remove}
control={control}
fieldName="cards"
defaultValues={{ icon: "", title: "", description: "" }}
/>
);
},
);
ChallengesStep.displayName = "ChallengesStep";