index.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { Modal,Button } from 'antd'
  2. import { useDropzone } from 'react-dropzone'
  3. import React, {useEffect } from 'react'
  4. import { UploadOutlined } from '@ant-design/icons'
  5. export const ConstructorModal = ({
  6. title,
  7. children,
  8. isModalVisible,
  9. setIsModalVisible,
  10. }) => {
  11. const handleCancel = () => {
  12. setIsModalVisible(false)
  13. }
  14. return (
  15. <>
  16. <Modal
  17. title={title}
  18. centered
  19. bodyStyle={{ padding:'0px'}}
  20. className="Modal"
  21. footer={null}
  22. onCancel={handleCancel}
  23. visible={isModalVisible}
  24. >
  25. {children}
  26. </Modal>
  27. </>
  28. )
  29. }
  30. export function Dropzone({ onLoad }) {
  31. const { acceptedFiles, getRootProps, getInputProps } = useDropzone()
  32. const files = acceptedFiles.map((file) => (
  33. <li key={file.path}>
  34. {file.path} - {file.size} bytes
  35. </li>
  36. ))
  37. console.log('acceptedFiles', acceptedFiles)
  38. useEffect(() => {
  39. acceptedFiles[0] && onLoad(acceptedFiles[0])
  40. }, [acceptedFiles])
  41. return (
  42. <section className="container">
  43. <div {...getRootProps({ className: 'Dropzone' })}>
  44. <input {...getInputProps()} />
  45. <Button type="default" size="medium" icon={<UploadOutlined />}>
  46. Drag 'n' drop some files here, or click to select files
  47. </Button>
  48. </div>
  49. </section>
  50. )
  51. }
  52. export const validation = (password) =>
  53. !/(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[0-9!@#$%^&*a-zA-Z]{8,}/g.test(
  54. password,
  55. )