create-metadata-modal.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React from 'react'
  4. import type { Props as CreateContentProps } from './create-content'
  5. import CreateContent from './create-content'
  6. import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger } from '../../../base/portal-to-follow-elem'
  7. type Props = {
  8. open: boolean
  9. setOpen: (open: boolean) => void
  10. onSave: (data: any) => void
  11. trigger: React.ReactNode
  12. popupLeft?: number
  13. } & CreateContentProps
  14. const CreateMetadataModal: FC<Props> = ({
  15. open,
  16. setOpen,
  17. trigger,
  18. popupLeft = 20,
  19. ...createContentProps
  20. }) => {
  21. return (
  22. <PortalToFollowElem
  23. open={open}
  24. onOpenChange={setOpen}
  25. placement='left-start'
  26. offset={{
  27. mainAxis: popupLeft,
  28. crossAxis: -38,
  29. }}
  30. >
  31. <PortalToFollowElemTrigger
  32. onClick={() => setOpen(!open)}
  33. >
  34. {trigger}
  35. </PortalToFollowElemTrigger>
  36. <PortalToFollowElemContent className='z-[1000]'>
  37. <CreateContent {...createContentProps} onClose={() => setOpen(false)} />
  38. </PortalToFollowElemContent>
  39. </PortalToFollowElem >
  40. )
  41. }
  42. export default React.memo(CreateMetadataModal)