import { useWatch } from "react-hook-form" import { useNavigate } from "react-router-dom" import { useTranslation } from "react-i18next" import MetadataForm from "../../../../components/forms/general/metadata-form" import Button from "../../../../components/fundamentals/button" import CrossIcon from "../../../../components/fundamentals/icons/cross-icon" import FocusModal from "../../../../components/molecules/modal/focus-modal" import Accordion from "../../../../components/organisms/accordion" import useNotification from "../../../../hooks/use-notification" import { getErrorMessage } from "../../../../utils/error-messages" import { nestedForm } from "../../../../utils/nested-form" import { DiscountRuleType } from "../../types" import { useDiscountForm } from "./form/discount-form-context" import { DiscountFormValues } from "./form/mappers" import { useFormActions } from "./form/use-form-actions" import DiscountNewConditions from "./sections/conditions" import Configuration from "./sections/configuration" import DiscountAllocation from "./sections/discount-allocation" import DiscountType from "./sections/discount-type" import General from "./sections/general" type DiscountFormProps = { closeForm?: () => void } const DiscountForm = ({ closeForm }: DiscountFormProps) => { const navigate = useNavigate() const notification = useNotification() const { handleSubmit, handleReset, control, form } = useDiscountForm() const { t } = useTranslation() const { onSaveAsActive, onSaveAsInactive } = useFormActions() const closeFormModal = () => { if (closeForm) { closeForm() } else { navigate("/a/discounts") } handleReset() } const submitGhost = async (data: DiscountFormValues) => { onSaveAsInactive(data) .then(() => { closeFormModal() handleReset() }) .catch((error) => { notification( t("discount-form-error", "Error"), getErrorMessage(error), "error" ) }) } const submitCTA = async (data: DiscountFormValues) => { try { await onSaveAsActive(data) closeFormModal() handleReset() } catch (error) { notification( t("discount-form-error", "Error"), getErrorMessage(error), "error" ) } } const discountType = useWatch({ control, name: "rule.type", }) return (

{t("discount-form-create-new-discount", "Create new discount")}

{discountType === DiscountRuleType.FIXED && (

{t("discount-form-allocation", "Allocation")} *

)}
) } export default DiscountForm