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 { useLGState, useLGMethods } from '~/hooks'; import type { IconButtonProps } from '@chakra-ui/react'; import type { TSubmitButton, TRSubmitButton } 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: React.FC = (props: TRSubmitButton) => { const { children, isOpen, onClose, onChange } = props; const bg = useColorValue('white', 'gray.900'); return ( <> {children} {isOpen && } ); }; /** * Desktop Submit Button */ const DSubmitButton: React.FC = (props: TRSubmitButton) => { const { children, isOpen, onClose, onChange } = props; const bg = useColorValue('white', 'gray.900'); return ( {children} {isOpen && } ); }; export const SubmitButton: React.FC = (props: TSubmitButton) => { const { handleChange } = props; const isMobile = useMobile(); const { resolvedIsOpen, btnLoading } = useLGState(); const { resolvedClose, resetForm } = useLGMethods(); const { reset } = useFormContext(); function handleClose(): void { reset(); resetForm(); resolvedClose(); } return ( <> ); };