import React, { useState } from 'react'; import Modal from 'react-modal'; import { useIntl } from 'react-intl'; import { Modal as BlueprintModal, TextInput } from '@box/blueprint-web'; import { CLASS_MODAL_CONTENT, CLASS_MODAL_OVERLAY, CLASS_MODAL, ERROR_CODE_ITEM_NAME_TOO_LONG, ERROR_CODE_ITEM_NAME_IN_USE, } from '../../../constants'; import messages from '../messages'; export interface CreateFolderDialogProps { appElement: HTMLElement; errorCode: string; isLoading: boolean; isOpen: boolean; onCancel: () => void; onCreate: (value: string) => void; parentElement: HTMLElement; } const CreateFolderDialog = ({ appElement, errorCode, isOpen, isLoading, onCancel, onCreate, parentElement, }: CreateFolderDialogProps) => { const { formatMessage } = useIntl(); const [value, setValue] = useState(''); let error; const handleChange = (e: React.ChangeEvent) => { setValue(e.target.value); }; const handleCreate = () => { if (value) { onCreate(value); } }; const handleKeyDown = ({ key }) => { switch (key) { case 'Enter': handleCreate(); break; default: break; } }; switch (errorCode) { case ERROR_CODE_ITEM_NAME_IN_USE: error = formatMessage(messages.createDialogErrorInUse); break; case ERROR_CODE_ITEM_NAME_TOO_LONG: error = formatMessage(messages.createDialogErrorTooLong); break; default: error = errorCode ? formatMessage(messages.createDialogErrorInvalid) : null; break; } return ( parentElement} portalClassName={`${CLASS_MODAL} be-modal-create-folder`} > {formatMessage(messages.cancel)} {formatMessage(messages.create)} ); }; export default CreateFolderDialog;