siam-ui-utils 2.1.10 → 2.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/eslint.config.js +36 -23
  2. package/index.d.ts +73 -14
  3. package/index.html +3 -3
  4. package/package.json +13 -30
  5. package/src/App.css +47 -0
  6. package/src/App.jsx +82 -39
  7. package/src/CustomSelectInput.jsx +1 -1
  8. package/src/IntlMessages.jsx +7 -6
  9. package/src/archivos-adjuntos/dropzone-uploader-dni-digital/index.jsx +152 -0
  10. package/src/{dropzone-uploader → archivos-adjuntos}/index.jsx +57 -61
  11. package/src/archivos-adjuntos/simple-line-icons.css +778 -0
  12. package/src/assets/css/sass/_gogo.style.scss +9012 -0
  13. package/src/assets/css/sass/_mixins.scss +118 -0
  14. package/src/assets/css/sass/_plugins.scss +1 -0
  15. package/src/assets/css/sass/ampf_style.scss +182 -0
  16. package/src/assets/css/sass/main.scss +11 -0
  17. package/src/assets/css/sass/plugins/react-table.scss +311 -0
  18. package/src/assets/css/sass/themes/gogo.light.redruby.scss +40 -0
  19. package/src/bridges/index.js +1 -0
  20. package/src/bridges/{index.jsx → with-router-bridge.jsx} +2 -0
  21. package/src/constants.js +0 -9
  22. package/src/iconos/icon-button-svg.jsx +2 -1
  23. package/src/iconos/index.js +2 -3
  24. package/src/iconos/styled-icon.jsx +1 -1
  25. package/src/index.css +74 -0
  26. package/src/index.js +3 -2
  27. package/src/main.jsx +6 -6
  28. package/src/tomar-foto/index.jsx +66 -63
  29. package/src/video-call-room/index.jsx +10 -0
  30. package/tsconfig.json +24 -25
  31. package/vite.config.ts +19 -10
  32. package/.eslintrc +0 -73
  33. package/.eslintrc.mjs +0 -53
  34. package/.prettierrc.js +0 -5
  35. package/.storybook/main.ts +0 -17
  36. package/.storybook/preview.ts +0 -16
  37. package/src/stories/DropzoneUploader.stories.tsx +0 -34
  38. package/src/stories/TomarFoto.stories.tsx +0 -29
  39. /package/src/{dropzone-uploader → archivos-adjuntos}/dropzone-uploader.css +0 -0
  40. /package/{.storybook/css → src/assets/css/vendor}/bootstrap.min.css +0 -0
  41. /package/{.storybook/css → src/assets/css/vendor}/bootstrap.rtl.only.min.css +0 -0
  42. /package/src/{constants-svg.js → iconos/constants-svg.js} +0 -0
package/eslint.config.js CHANGED
@@ -1,28 +1,41 @@
1
1
  import js from '@eslint/js'
2
2
  import globals from 'globals'
3
+ import react from 'eslint-plugin-react'
3
4
  import reactHooks from 'eslint-plugin-react-hooks'
4
5
  import reactRefresh from 'eslint-plugin-react-refresh'
5
- import tseslint from 'typescript-eslint'
6
6
 
7
- export default tseslint.config(
8
- { ignores: ['dist'] },
9
- {
10
- extends: [js.configs.recommended, ...tseslint.configs.recommended],
11
- files: ['**/*.{ts,tsx}'],
12
- languageOptions: {
13
- ecmaVersion: 2020,
14
- globals: globals.browser,
15
- },
16
- plugins: {
17
- 'react-hooks': reactHooks,
18
- 'react-refresh': reactRefresh,
19
- },
20
- rules: {
21
- ...reactHooks.configs.recommended.rules,
22
- 'react-refresh/only-export-components': [
23
- 'warn',
24
- { allowConstantExport: true },
25
- ],
26
- },
27
- },
28
- )
7
+ export default [
8
+ { ignores: ['build'] },
9
+ {
10
+ files: ['**/*.{js,jsx,ts,tsx}'],
11
+ languageOptions: {
12
+ ecmaVersion: 2020,
13
+ globals: globals.browser,
14
+ parserOptions: {
15
+ ecmaVersion: 'latest',
16
+ ecmaFeatures: { jsx: true },
17
+ sourceType: 'module',
18
+ },
19
+ },
20
+ settings: { react: { version: '18.3' } },
21
+ plugins: {
22
+ react,
23
+ 'react-hooks': reactHooks,
24
+ 'react-refresh': reactRefresh,
25
+ },
26
+ rules: {
27
+ ...js.configs.recommended.rules,
28
+ ...react.configs.recommended.rules,
29
+ ...react.configs['jsx-runtime'].rules,
30
+ ...reactHooks.configs.recommended.rules,
31
+ 'react/jsx-no-target-blank': 'off',
32
+ 'react-refresh/only-export-components': [
33
+ 'off',
34
+ { allowConstantExport: true },
35
+ ],
36
+ 'react/prop-types': 'off',
37
+ '@/no-default-export': 'off',
38
+ 'no-unused-vars': 'warn',
39
+ },
40
+ },
41
+ ]
package/index.d.ts CHANGED
@@ -1,20 +1,79 @@
1
- declare module "siam-ui-utils" {
2
- //BRIDGES
3
- export function withRouter(props);
1
+ declare module 'siam-ui-utils' {
2
+ //BRIDGES
3
+ export function withRouter(props);
4
4
 
5
- //CUSTOMBOOSTRAP
6
- export function Colxx(props);
7
- export function Separator(props);
5
+ //CUSTOMBOOSTRAP
6
+ export function Colxx(props);
7
+ export function Separator(props);
8
8
 
9
- //CUSTOMSELECTINPUT
10
- export function CustomSelectInput(props);
9
+ //CUSTOMSELECTINPUT
10
+ export function CustomSelectInput(props);
11
11
 
12
- //DROPZONEUploader
13
- export function DropzoneUploader(props);
12
+ //DROPZONEUploader
13
+ export function DropzoneUploader(props);
14
14
 
15
- //INTLMESSAGES
16
- export function IntlMessages(props);
15
+ //DropzoneUploaderDniDigital
16
+ export function DropzoneUploaderDniDigital(props);
17
17
 
18
- //TOMAR FOTO
19
- export function TomarFoto(props);
18
+ //INTLMESSAGES
19
+ export function IntlMessages(props);
20
+
21
+ //ICONOS
22
+ export function AnularAyudaIcon(props);
23
+ export function AsesoriaBurbujaButton(props);
24
+ export function AsesoriaBurbujaIcon(props);
25
+ export function AtencionPresencial(props);
26
+ export function AtencionTelefonica(props);
27
+ export function AtencionTurnoTelefonico(props);
28
+ export function AtencionVirtual(props);
29
+ export function BibliotecaBurbujaButton(props);
30
+ export function BibliotecaBurbujaIcon(props);
31
+ export function CancelarTurnoIcon(props);
32
+ export function CodigoVerificacionIcon(props);
33
+ export const passwordEyeSvg;
34
+ export const passwordEyeOpenSvg;
35
+ export const contactoBarraSup;
36
+ export const pagosMenuLateral;
37
+ export const delegacionMenuLateral;
38
+ export const delegacionesVerde;
39
+ export const telefonoCeleste;
40
+ export const mailRojo;
41
+ export const whatAppIcon;
42
+ export const telefonoEmergencia;
43
+ export const telefonoConsulta;
44
+ export const telefonoExequial;
45
+ export const telefonoSalud;
46
+ export const descarga;
47
+ export const descargaOver;
48
+ export const anularAyuda;
49
+ export const continuar;
50
+ export const pdfImage;
51
+ export function CursoAutogestionadoColor(props);
52
+ export function CursoAutogestionado(props);
53
+ export function CursoBurbujaButton(props);
54
+ export function CursoBurbujaIcon(props);
55
+ export function CursoPresencialColor(props);
56
+ export function CursoPresencial(props);
57
+ export function CursoVirtualColor(props);
58
+ export function CursoVirtual(props);
59
+ export function DelegacionesIcon(props);
60
+ export function ForgotDniIcon(props);
61
+ export function ForgotPasswordIcon(props);
62
+ export function IconButtonSvg(props);
63
+ export function LabelTimer(props);
64
+ export function LapizActContactoPerfilButton(props);
65
+ export function Icon(props);
66
+ export function UserIcon(props);
67
+ export function VerificarSinVerificarIcon(props);
68
+ export function VerificarVerificadoIcon(props);
69
+ export function WhatsappIconButton(props);
70
+
71
+ //ICONOS/USER
72
+ export function UserIcon(props);
73
+
74
+ //TOMAR FOTO
75
+ export function TomarFoto(props);
76
+
77
+ //VIDEO CALL ROOM
78
+ export function VideoCallRoom(props);
20
79
  }
package/index.html CHANGED
@@ -1,9 +1,9 @@
1
- <!doctype html>
2
- <html lang="en">
1
+ <!doctype html><html lang="en">
3
2
  <head>
4
3
  <meta charset="UTF-8" />
4
+ <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Firma digital</title>
6
+ <title>Siam - UI - utils</title>
7
7
  </head>
8
8
  <body>
9
9
  <div id="root"></div>
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
2
  "name": "siam-ui-utils",
3
- "version": "2.1.10",
3
+ "version": "2.1.11",
4
4
  "keywords": [
5
5
  "ampf-react",
6
6
  "ampf-utils",
7
7
  "siam-ui-utils"
8
8
  ],
9
- "type": "module",
10
9
  "author": "Ampf Development Team",
11
10
  "license": "MIT",
12
11
  "description": "Conjunto de librerias de componentes utiles para AMPF",
@@ -21,17 +20,12 @@
21
20
  "moduleResolution": "nodenext",
22
21
  "scripts": {
23
22
  "start": "vite",
24
- "publish-npm": "npm publish",
25
- "storybook": "storybook dev -p 6006",
26
- "build-storybook": "storybook build"
23
+ "publish-npm": "npm publish"
27
24
  },
28
25
  "dependencies": {
29
- "@storybook/cli": "^8.3.2",
30
26
  "@types/react-intl": "^3.0.0",
31
- "eslint-plugin-react-hooks": "^4.6.2",
32
- "eslint-plugin-react-refresh": "^0.4.12",
27
+ "events": "^3.3.0",
33
28
  "html5-file-selector": "^2.1.0",
34
- "init": "^0.1.2",
35
29
  "prop-types": "^15.8.1",
36
30
  "react": "^18.3.1",
37
31
  "react-dropzone-uploader": "^2.11.0",
@@ -48,40 +42,29 @@
48
42
  "vite-plugin-commonjs": "^0.10.3"
49
43
  },
50
44
  "devDependencies": {
51
- "@chromatic-com/storybook": "^1.9.0",
52
- "@storybook/addon-essentials": "^8.3.2",
53
- "@storybook/addon-interactions": "^8.3.2",
54
- "@storybook/addon-links": "^8.3.2",
55
- "@storybook/addon-onboarding": "^8.3.2",
56
- "@storybook/blocks": "^8.3.2",
57
- "@storybook/react": "^8.3.2",
58
- "@storybook/react-vite": "^8.3.2",
59
- "@storybook/test": "^8.3.2",
45
+ "@eslint/js": "^9.9.0",
60
46
  "@testing-library/dom": "^10.4.0",
61
47
  "@testing-library/jest-dom": "^6.4.8",
62
48
  "@testing-library/react": "^16.0.0",
49
+ "@types/react": "^18.3.3",
50
+ "@types/react-dom": "^18.3.0",
63
51
  "@types/react-router-dom": "^5.3.3",
64
- "@typescript-eslint/eslint-plugin": "^5.0.0",
65
- "@typescript-eslint/parser": "^5.0.0",
52
+ "@typescript-eslint/parser": "^8.2.0",
66
53
  "@vitejs/plugin-react": "^4.3.1",
67
54
  "copyfiles": "^2.4.1",
68
- "eslint": "^8.57.1",
55
+ "eslint": "^9.9.0",
69
56
  "eslint-config-airbnb": "^19.0.4",
70
57
  "eslint-config-prettier": "^8.8.0",
71
58
  "eslint-config-react-app": "^7.0.1",
72
59
  "eslint-plugin-import": "^2.27.5",
73
60
  "eslint-plugin-jsx-a11y": "^6.7.1",
74
- "eslint-plugin-prettier": "^5.0.0-alpha.1",
61
+ "eslint-plugin-prettier": "^4.2.1",
75
62
  "eslint-plugin-react": "^7.33.0",
76
- "eslint-plugin-storybook": "^0.8.0",
77
- "storybook": "^8.3.2",
63
+ "eslint-plugin-react-hooks": "^5.1.0-rc.0",
64
+ "eslint-plugin-react-refresh": "^0.4.9",
65
+ "sass-embedded": "^1.79.4",
78
66
  "vite": "^5.3.4",
79
- "vite-plugin-eslint": "^1.1.0",
67
+ "vite-plugin-eslint": "^1.8.1",
80
68
  "vitest": "^2.0.5"
81
- },
82
- "eslintConfig": {
83
- "extends": [
84
- "plugin:storybook/recommended"
85
- ]
86
69
  }
87
70
  }
package/src/App.css ADDED
@@ -0,0 +1,47 @@
1
+ #root {
2
+ max-width: 1280px;
3
+ margin: 0 auto;
4
+ padding: 2rem;
5
+ text-align: center;
6
+ }
7
+
8
+ .logo {
9
+ height: 6em;
10
+ padding: 1.5em;
11
+ will-change: filter;
12
+ transition: filter 300ms;
13
+ }
14
+ .logo:hover {
15
+ filter: drop-shadow(0 0 2em #646cffaa);
16
+ }
17
+ .logo.react:hover {
18
+ filter: drop-shadow(0 0 2em #61dafbaa);
19
+ }
20
+
21
+ @keyframes logo-spin {
22
+ from {
23
+ transform: rotate(0deg);
24
+ }
25
+ to {
26
+ transform: rotate(360deg);
27
+ }
28
+ }
29
+
30
+ @media (prefers-reduced-motion: no-preference) {
31
+ a:nth-of-type(2) .logo {
32
+ animation: logo-spin infinite 20s linear;
33
+ }
34
+ }
35
+
36
+ .card {
37
+ padding: 2em;
38
+ }
39
+
40
+ .read-the-docs {
41
+ color: #888;
42
+ }
43
+
44
+
45
+ .custom-dropzone-uploader-dni-digital{
46
+ display: flex;
47
+ }
package/src/App.jsx CHANGED
@@ -1,43 +1,86 @@
1
- import React, { useState } from "react";
2
- import { TomarFoto } from './tomar-foto'
3
- import { LABEL_BUTTONS } from "./constants";
1
+ import React, { useState } from 'react';
2
+ import {
3
+ Accordion,
4
+ AccordionBody,
5
+ AccordionHeader,
6
+ AccordionItem,
7
+ Modal,
8
+ } from 'reactstrap';
9
+ import { TomarFoto, DropzoneUploader, DropzoneUploaderDniDigital } from './';
10
+ import './index.css';
11
+ import './App.css';
12
+ import './assets/css/vendor/bootstrap.min.css';
13
+ import { VideoCallRoom } from './video-call-room';
4
14
 
5
- const { TOMAR_FOTO_CELULAR, TOMAR_FOTO_WEB } = LABEL_BUTTONS
6
-
7
- function App() {
8
- const [componentReference, setComponentReference] = useState(undefined);
9
-
10
- const handleLinkClick = (e) => {
11
- const { target: { innerText } } = e;
12
- setComponentReference(innerText);
15
+ const App = () => {
16
+ const [open, setOpen] = useState('0');
17
+ const toggle = (id) => {
18
+ if (open === id) {
19
+ setOpen();
20
+ } else {
21
+ setOpen(id);
13
22
  }
23
+ };
14
24
 
15
- return (
16
- <div className="d-flex">
17
- <div id="menu">
18
- <button onClick={handleLinkClick}>{TOMAR_FOTO_CELULAR}</button>
19
- <button onClick={handleLinkClick}>{TOMAR_FOTO_WEB}</button>
20
-
21
- </div>
22
-
23
- <div id="content">
24
- {componentReference === TOMAR_FOTO_CELULAR && <TomarFoto isMobile={true} />}
25
- {componentReference===TOMAR_FOTO_WEB && <TomarFoto isMobile={false} />}
26
- </div>
27
- </div>
28
-
29
-
30
- // <AnularAyudaIcon
31
- // cbuPago='1234'
32
- // codDelegacion='AMPF'
33
- // fechaAcreditacion='10/10/2025'
34
- // fechaVtoTramite='10/10/2025'
35
- // netoFinal={124}
36
- // nroSolicitud='1234'
37
- // size='3.5rem'
38
- // title='Botón de arrepentimiento'
39
- // />
40
- )
41
- }
25
+ return (
26
+ <div>
27
+ <Accordion open={open} toggle={toggle}>
28
+ <AccordionItem>
29
+ <AccordionHeader targetId="1">Tomar Foto</AccordionHeader>
30
+ <AccordionBody accordionId="1">
31
+ <TomarFoto isMobile={true} />
32
+ <DropzoneUploader
33
+ totalFiles={4}
34
+ onChangeFiles={() => alert('onChange')}
35
+ maxFiles={3}
36
+ nameFileLabel="file"
37
+ />
38
+ </AccordionBody>
39
+ </AccordionItem>
40
+ <AccordionItem>
41
+ <AccordionHeader targetId="2">
42
+ DropzoneUploader Firma Digital
43
+ </AccordionHeader>
44
+ <AccordionBody accordionId="2">
45
+ <DropzoneUploader
46
+ totalFiles={0}
47
+ onChangeFiles={() => {
48
+ console.log('onChange');
49
+ }}
50
+ maxFiles={7}
51
+ nameFileLabel="Subir archivos"
52
+ capture="environment"
53
+ onFilesSelectedSelfie
54
+ />
55
+ </AccordionBody>
56
+ </AccordionItem>
57
+ <AccordionItem>
58
+ <AccordionHeader targetId="3">
59
+ DropzoneUploader DNI Digital
60
+ </AccordionHeader>
61
+ <AccordionBody accordionId="3">
62
+ <DropzoneUploaderDniDigital
63
+ totalFiles={0}
64
+ maxFiles={2}
65
+ onChangeFiles={() => {
66
+ console.log('onChange');
67
+ }}
68
+ classNames="custom-dropzone-uploader-dni-digital"
69
+ />
70
+ </AccordionBody>
71
+ </AccordionItem>
72
+ <AccordionItem>
73
+ <AccordionHeader targetId="4">Video Call Room</AccordionHeader>
74
+ <AccordionBody accordionId="4">
75
+ <VideoCallRoom
76
+ url="https://whereby.com/test-ampf-room"
77
+ title="Videollamada de ejemplo"
78
+ />
79
+ </AccordionBody>
80
+ </AccordionItem>
81
+ </Accordion>
82
+ </div>
83
+ );
84
+ };
42
85
 
43
- export default App
86
+ export default App;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { components } from 'react-select';
3
3
 
4
- export const CustomSelectInput = (props) => {
4
+ const CustomSelectInput = (props) => {
5
5
  const customProps = { ...props };
6
6
  delete customProps.autoCorrect;
7
7
  delete customProps.autoCapitalize;
@@ -1,7 +1,8 @@
1
- import React from 'react'
2
- import { FormattedMessage, injectIntl } from 'react-intl'
3
- const _InjectMassage = (props) => <FormattedMessage {...props} />
1
+ import React from 'react';
2
+ import { FormattedMessage, injectIntl } from 'react-intl';
4
3
 
5
- export const IntlMessages = injectIntl(_InjectMassage, {
6
- withRef: false,
7
- })
4
+ const InjectMassage = (props) => <FormattedMessage {...props} />;
5
+
6
+ export default injectIntl(InjectMassage, {
7
+ withRef: false,
8
+ });
@@ -0,0 +1,152 @@
1
+ /* eslint-disable react/prop-types */
2
+ import { useState } from 'react';
3
+ import { Button } from 'reactstrap';
4
+ import { getDroppedOrSelectedFiles } from 'html5-file-selector';
5
+ import Dropzone from 'react-dropzone-uploader';
6
+ import 'react-dropzone-uploader/dist/styles.css';
7
+ import { pdfImage, IconButtonSvg } from '../../iconos';
8
+ import '../dropzone-uploader.css';
9
+
10
+ export const DropzoneUploaderDniDigital = ({
11
+ accept = 'image/*, application/pdf',
12
+ classNames = '',
13
+ onChangeFiles,
14
+ totalFiles,
15
+ label = 'Cargar Dni',
16
+ maxFiles = 2,
17
+ maxSize = 2,
18
+ onMaxFileSizeError = () => {
19
+ alert('El archivo supera el tamaño máximo');
20
+ },
21
+ }) => {
22
+ const [files, setFiles] = useState([]);
23
+
24
+ const handleChangeStatus = ({ file }, status) => {
25
+ if (status === 'done') {
26
+ const filesTemp = [...files];
27
+ filesTemp.push(file);
28
+ setFiles(filesTemp);
29
+ onChangeFiles(filesTemp);
30
+ } else if (status === 'removed') {
31
+ const filesTemp = [...files];
32
+ const index = filesTemp.indexOf(file);
33
+ if (index > -1) {
34
+ filesTemp.splice(index, 1);
35
+ }
36
+ setFiles(filesTemp);
37
+ onChangeFiles(filesTemp);
38
+ }
39
+ };
40
+
41
+ const getFilesFromEvent = (e) => {
42
+ return new Promise((resolve) => {
43
+ getDroppedOrSelectedFiles(e).then((chosenFiles) => {
44
+ resolve(chosenFiles.map((f) => f.fileObject));
45
+ });
46
+ });
47
+ };
48
+
49
+ const CustomPreview = ({ fileWithMeta }) => {
50
+ const { meta, remove } = fileWithMeta;
51
+ if (meta.size / (1024 * 1024) > maxSize) {
52
+ onMaxFileSizeError();
53
+ remove();
54
+ }
55
+ return (
56
+ <div
57
+ className="dropzone-upload-previewContainer"
58
+ style={{ width: '100%', display: 'flex', alignItems: 'center' }}
59
+ >
60
+ {meta.type === 'application/pdf' ? (
61
+ <>
62
+ <IconButtonSvg
63
+ className="form-control flex"
64
+ svg={pdfImage}
65
+ svgOver={pdfImage}
66
+ height="1.6rem"
67
+ width="1.6rem"
68
+ title={meta.name}
69
+ />
70
+ <p style={{ paddingRight: '1rem' }}>
71
+ {meta.name.length > 17
72
+ ? meta.name.substring(0, 17) + '...'
73
+ : meta.name}
74
+ </p>
75
+ </>
76
+ ) : (
77
+ <>
78
+ <img
79
+ className="dropzone-upload-previewImage mt-1"
80
+ src={meta.previewUrl}
81
+ alt={meta.name}
82
+ style={{
83
+ width: '110px',
84
+ height: '110px',
85
+ objectFit: 'cover',
86
+ marginRight: '0.5rem',
87
+ }}
88
+ />
89
+ <div className="dropzone-upload-file-name-container">
90
+ <p className="dropzone-upload-file-name" title={meta.name}>
91
+ {meta.name}
92
+ </p>
93
+ </div>
94
+ </>
95
+ )}
96
+ <button
97
+ style={{ marginTop: '0rem' }}
98
+ onClick={remove}
99
+ className="dropzone-upload-delete-btn simple-icon-trash"
100
+ ></button>
101
+ </div>
102
+ );
103
+ };
104
+
105
+ const Input = ({ accept, onFiles, getFilesFromEvent }) => {
106
+ const text =
107
+ totalFiles > 0 ? `${maxFiles - totalFiles} archivos más` : `${label}`;
108
+ return (
109
+ <>
110
+ <Button
111
+ outline
112
+ block
113
+ size="xs"
114
+ className="mt-5 ml-5"
115
+ onClick={() => document.getElementById('fileInput').click()}
116
+ >
117
+ {text}
118
+ <input
119
+ id="fileInput"
120
+ style={{ display: 'none' }}
121
+ type="file"
122
+ accept={accept}
123
+ multiple
124
+ onChange={(e) => {
125
+ getFilesFromEvent(e).then((chosenFiles) => {
126
+ onFiles(chosenFiles);
127
+ });
128
+ }}
129
+ />
130
+ </Button>
131
+ </>
132
+ );
133
+ };
134
+
135
+ return (
136
+ <div className={classNames}>
137
+ <Dropzone
138
+ disableUpload={false}
139
+ maxFiles={totalFiles < maxFiles ? maxFiles : 0}
140
+ maxSize={maxSize} // en megas
141
+ InputComponent={Input}
142
+ PreviewComponent={CustomPreview}
143
+ classNames={{ dropzone: 'dropzone-upload-frame' }}
144
+ onChangeStatus={handleChangeStatus}
145
+ getFilesFromEvent={getFilesFromEvent}
146
+ accept={accept}
147
+ />
148
+ </div>
149
+ );
150
+ };
151
+
152
+ export default DropzoneUploaderDniDigital;