use-contact-us-modal.tsx 970 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. import importOverleafModules from '../../../macros/import-overleaf-module.macro'
  2. import {
  3. JSXElementConstructor,
  4. useCallback,
  5. useState,
  6. type UIEvent,
  7. } from 'react'
  8. const [contactUsModalModules] = importOverleafModules('contactUsModal')
  9. const ContactUsModal: JSXElementConstructor<{
  10. show: boolean
  11. handleHide: () => void
  12. autofillProjectUrl: boolean
  13. }> = contactUsModalModules?.import.default
  14. export const useContactUsModal = (options = { autofillProjectUrl: true }) => {
  15. const [show, setShow] = useState(false)
  16. const hideModal = useCallback((event?: Event) => {
  17. event?.preventDefault()
  18. setShow(false)
  19. }, [])
  20. const showModal = useCallback((event?: Event | UIEvent) => {
  21. event?.preventDefault()
  22. setShow(true)
  23. }, [])
  24. const modal = ContactUsModal && (
  25. <ContactUsModal
  26. show={show}
  27. handleHide={hideModal}
  28. autofillProjectUrl={options.autofillProjectUrl}
  29. />
  30. )
  31. return { modal, hideModal, showModal }
  32. }