import { forwardRef } from 'react'; import { Modal, Popover, ModalBody, IconButton, PopoverBody, ModalOverlay, ModalContent, PopoverArrow, PopoverTrigger, PopoverContent, ModalCloseButton, PopoverCloseButton, } from '@chakra-ui/react'; import { FiSearch } from '@meronex/icons/fi'; import { useFormContext } from 'react-hook-form'; import { If, ResolvedTarget } from '~/components'; import { useMobile, useColorValue } from '~/context'; import { useFormState } from '~/hooks'; import type { IconButtonProps } from '@chakra-ui/react'; import type { SubmitButtonProps, ResponsiveSubmitButtonProps } from './types'; const _SubmitIcon: React.ForwardRefRenderFunction< HTMLButtonElement, Omit > = (props: Omit, ref) => { const { isLoading, ...rest } = props; return ( } title="Submit Query" colorScheme="primary" isLoading={isLoading} aria-label="Submit Query" {...rest} /> ); }; const SubmitIcon = forwardRef>(_SubmitIcon); /** * Mobile Submit Button */ const MSubmitButton = (props: ResponsiveSubmitButtonProps): JSX.Element => { const { children, isOpen, onClose } = props; const bg = useColorValue('white', 'gray.900'); return ( <> {children} {isOpen && } ); }; /** * Desktop Submit Button */ const DSubmitButton = (props: ResponsiveSubmitButtonProps): JSX.Element => { const { children, isOpen, onClose } = props; const bg = useColorValue('white', 'gray.900'); return ( {children} {isOpen && } ); }; export const SubmitButton = (props: SubmitButtonProps): JSX.Element => { const isMobile = useMobile(); const loading = useFormState(s => s.loading); const { resolvedIsOpen, resolvedClose, reset: resetForm, } = useFormState(({ resolvedIsOpen, resolvedClose, reset }) => ({ resolvedIsOpen, resolvedClose, reset, })); const { reset } = useFormContext(); function handleClose(): void { reset(); resetForm(); resolvedClose(); } return ( <> ); };