import { Box, Button, ButtonGroup, Container, Flex, Heading, Stack, Text, useBreakpointValue, useMediaQuery, useToast, } from '@chakra-ui/react'; import { useMutation, useQueryClient } from '@tanstack/react-query'; import { __ } from '@wordpress/i18n'; import React from 'react'; import { FormProvider, useForm } from 'react-hook-form'; import { BiCog } from 'react-icons/bi'; import { useNavigate } from 'react-router'; import { Link, NavLink } from 'react-router-dom'; import BackButton from '../../../../../assets/js/back-end/components/common/BackButton'; import { Header, HeaderLeftSection, HeaderLogo, HeaderTop, } from '../../../../../assets/js/back-end/components/common/Header'; import { NavMenu, NavMenuItem, NavMenuLink, } from '../../../../../assets/js/back-end/components/common/Nav'; import { navActiveStyles } from '../../../../../assets/js/back-end/config/styles'; import { useWarnUnsavedChanges } from '../../../../../assets/js/back-end/hooks/useWarnUnSavedChanges'; import API from '../../../../../assets/js/back-end/utils/api'; import { deepClean } from '../../../../../assets/js/back-end/utils/utils'; import { urls } from '../constants/urls'; import { multipleCurrencyBackendRoutes } from '../routes/routes'; import { PriceZoneSchema } from '../types/multiCurrency'; import Countries from './components/Countries'; import Currency from './components/Currency'; import ExchangeRate from './components/ExchangeRate'; import Name from './components/Name'; import PriceZoneActionBtn from './components/PriceZoneActionBtn'; const headerTabStyles = { mr: '10', py: '6', d: 'flex', gap: 1, justifyContent: 'flex-start', alignItems: 'center', fontWeight: 'medium', fontSize: ['xs', null, 'sm'], }; const AddPriceZone: React.FC = () => { const toast = useToast(); const queryClient = useQueryClient(); const methods = useForm(); const navigate = useNavigate(); const pricingZoneAPI = new API(urls.pricingZones); const [isLargerThan992] = useMediaQuery('(min-width: 992px)'); const buttonSize = useBreakpointValue(['sm', 'md']); const addGroup = useMutation({ mutationFn: (data) => pricingZoneAPI.store(data), }); const onSubmit = (data: any) => { addGroup.mutate(deepClean(data), { onSuccess: (data) => { toast({ title: data.title + __(' has been added.', 'learning-management-system'), status: 'success', isClosable: true, }); queryClient.invalidateQueries({ queryKey: [`pricingZonesList`] }); navigate(multipleCurrencyBackendRoutes.list); }, onError: (error: any) => { const message: any = error?.message ? error?.message : error?.data?.message; toast({ title: __( 'Failed to create pricing zone.', 'learning-management-system', ), description: message ? `${message}` : undefined, status: 'error', isClosable: true, }); }, }); }; useWarnUnsavedChanges(methods.formState.isDirty); const FormButton = () => ( ); return (
{__('Add New Pricing Zone', 'learning-management-system')} } > {__('Settings', 'learning-management-system')}
{__( 'Add New Pricing Zone', 'learning-management-system', )} {isLargerThan992 ? : null} {!isLargerThan992 ? : null}
); }; export default AddPriceZone;