index.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. className="Modal"
  20. footer={null}
  21. onCancel={handleCancel}
  22. visible={isModalVisible}
  23. >
  24. {children}
  25. </Modal>
  26. </>
  27. )
  28. }
  29. export function Dropzone({ onLoad }) {
  30. const { acceptedFiles, getRootProps, getInputProps } = useDropzone()
  31. const files = acceptedFiles.map((file) => (
  32. <li key={file.path}>
  33. {file.path} - {file.size} bytes
  34. </li>
  35. ))
  36. console.log('acceptedFiles', acceptedFiles)
  37. useEffect(() => {
  38. acceptedFiles[0] && onLoad(acceptedFiles[0])
  39. }, [acceptedFiles])
  40. return (
  41. <section className="container">
  42. <div {...getRootProps({ className: 'Dropzone' })}>
  43. <input {...getInputProps()} />
  44. <Button type="default" size="medium" icon={<UploadOutlined />}>
  45. Drag 'n' drop some files here, or click to select files
  46. </Button>
  47. </div>
  48. </section>
  49. )
  50. }
  51. export const validation = (password) =>
  52. !/(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[0-9!@#$%^&*a-zA-Z]{8,}/g.test(
  53. password,
  54. )