|
| 1 | +import * as React from 'react'; |
| 2 | +import Modal from 'react-modal'; |
| 3 | +import { useIntl } from 'react-intl'; |
| 4 | +import ContentUploader from '../../content-uploader'; |
| 5 | +import messages from '../messages'; |
| 6 | +import { CLASS_MODAL_CONTENT_FULL_BLEED, CLASS_MODAL_OVERLAY, CLASS_MODAL } from '../../../constants'; |
| 7 | +import type { Token } from '../../../common/types/core'; |
| 8 | +import type { ContentUploaderProps } from '../../content-uploader/ContentUploader'; |
| 9 | + |
| 10 | +export interface UploadDialogProps { |
| 11 | + apiHost: string; |
| 12 | + appElement: HTMLElement; |
| 13 | + contentUploaderProps: ContentUploaderProps; |
| 14 | + currentFolderId?: string; |
| 15 | + isOpen: boolean; |
| 16 | + onClose: () => void; |
| 17 | + onUpload?: (items: unknown[]) => void; |
| 18 | + parentElement: HTMLElement; |
| 19 | + requestInterceptor?: Function; |
| 20 | + responseInterceptor?: Function; |
| 21 | + sharedLink?: string; |
| 22 | + sharedLinkPassword?: string; |
| 23 | + token: Token; |
| 24 | + uploadHost: string; |
| 25 | +} |
| 26 | + |
| 27 | +const UploadDialog = ({ |
| 28 | + isOpen, |
| 29 | + currentFolderId, |
| 30 | + token, |
| 31 | + sharedLink, |
| 32 | + sharedLinkPassword, |
| 33 | + apiHost, |
| 34 | + uploadHost, |
| 35 | + onClose, |
| 36 | + parentElement, |
| 37 | + appElement, |
| 38 | + onUpload, |
| 39 | + contentUploaderProps, |
| 40 | + requestInterceptor, |
| 41 | + responseInterceptor, |
| 42 | +}: UploadDialogProps) => { |
| 43 | + const { formatMessage } = useIntl(); |
| 44 | + |
| 45 | + return ( |
| 46 | + <Modal |
| 47 | + appElement={appElement} |
| 48 | + className={CLASS_MODAL_CONTENT_FULL_BLEED} |
| 49 | + contentLabel={formatMessage(messages.upload)} |
| 50 | + isOpen={isOpen} |
| 51 | + onRequestClose={onClose} |
| 52 | + overlayClassName={CLASS_MODAL_OVERLAY} |
| 53 | + parentSelector={() => parentElement} |
| 54 | + portalClassName={`${CLASS_MODAL} be-modal-upload`} |
| 55 | + > |
| 56 | + <ContentUploader |
| 57 | + {...contentUploaderProps} |
| 58 | + apiHost={apiHost} |
| 59 | + onClose={onClose} |
| 60 | + onComplete={onUpload} |
| 61 | + requestInterceptor={requestInterceptor} |
| 62 | + responseInterceptor={responseInterceptor} |
| 63 | + rootFolderId={currentFolderId} |
| 64 | + sharedLink={sharedLink} |
| 65 | + sharedLinkPassword={sharedLinkPassword} |
| 66 | + token={token} |
| 67 | + uploadHost={uploadHost} |
| 68 | + /> |
| 69 | + </Modal> |
| 70 | + ); |
| 71 | +}; |
| 72 | + |
| 73 | +export default UploadDialog; |
0 commit comments