Dropzone UI es un pequeño set de componentes React para manejar cargas de archivo y vista previa de imágenes en la interfaz gráfica. Ya existen algunas buenas librerías; Sin embargo, inspirados en aquellas, hemos creado algo nuevo y más potente. Los principios de Google Material Design fueron considerados en el desarrollo. De hecho, todos los iconos vienen de Material design icons.
Es posible que, eventualmente, este archivo no tenga las últimas actualizaciones. De ser así, por favor revisa la version en inglés.
En operaciones Drag
, Drop
,Upload
, y vista previa en pantalla completa. (también cambiando el modo de vista de grid
a list
).
¿Te gustó el proyecto? No olvides regalarnos una ⭐ estrella en github :D
@dropzone-ui/react está disponible como un paquete npm.
Para subir archivos a un servidor, la dependencia peer axios debe ser instalada en conjunto con dropzone-ui
// con npm
npm i @dropzone-ui/react axios
// con yarn
yarn add @dropzone-ui/react axios
Aquí hay un ejemplo rápido para que te inicies, es todo lo que necesitas:
import React from "react";
import ReactDOM from "react-dom";
import { Dropzone, FileItem } from "@dropzone-ui/react";
Function App() {
const [files, setFiles] = useState([]);
const updateFiles = (incommingFiles) => {
setFiles(incommingFiles);
};
return (
<Dropzone onChange={updateFiles} value={files}>
{files.map((file) => (
<FileItem {...file} preview />
))}
</Dropzone>
);
}
ReactDOM.render(<App />, document.querySelector("#app"));
Si, esto es todo lo que necesitas para iniciarte como puedes observar en estos demos interactivos:
Nombre | Enlace a Codesandbox |
---|---|
Dropzone Ejemplo básico | |
Dropzone Ejemplo completo | |
props de FileItem | |
FileItem sin vista previa de imagen | |
InputFileButton & FileItemContainer | |
Ejemplo de localización |
|
Ejemplo de servidor de carga de archivos | https://github.com/dropzone-ui/file-upload-server-side/tree/main/expressjs |
Dropzone-ui está disponible en diferentes lenguajes. Hasta ahora, solo están disponibles Inglés
, Español
, Francés
y Portugués
. Sin embargo, pretendemos expandirnos a más idiomas.
Idioma | Código | Ejemplo |
---|---|---|
Inglés 🇺🇸 🇬🇧 | EN-en |
localization="EN-en " |
Español 🇵🇪 🇲🇽 🇦🇷 | ES-es |
localization="ES-es " |
Frances 🇫🇷 | FR-fr |
localization="FR-fr " |
Portugués 🇧🇷 🇵🇹 | PT-pt |
localization="PT-pt " |
Name | Type | Default | Description |
---|---|---|---|
imgSource | string |
undefined |
La representacionen string-url de la imagen |
onClose | Function |
undefined |
Funcion que describe el comportamiento al cerrar la vista previa. |
openImage | boolean |
false |
Flag que inica si abrir o cerrar la vista previa |
Name | Type | Default | Description |
---|---|---|---|
children | node |
true |
El contenido del componente. Normalmente una lista de FileItem components. Por defecto, el componente Dropzone ya utiliza este componente para contener la lista de componentes FileItem . |
view | "grid" | "list" |
"grid" |
grid mustra los archivos en una distribucion de grilla. list mostrará los items en una lista horizontal. Conveniente para guardar espacio en la página. |
Name | Type | Default | Description |
---|---|---|---|
accept | string |
undefined |
Es una cadena de caracteres que contiene una lista de mime types y extenciones de archivo (.extension ) separados por comas, el cual se compara con los atributos de un archivo para determinar si es válido o no. P.E.: "image/\*, application/pdf, .psd" |
color | string |
"#071e25" |
El color principal del botón. (p.e. "#FFFFFF", "rgb(255,12,45)") |
disabled | boolean |
false |
define si el botón estará deshabilitado o no. |
id | string |
undefined |
el id del componente |
label | string |
"Browse ..." | Si está presente, tomara este valor como la etiqueta del botón |
maxFileSize | number |
undefined |
Tamaño máximo de archivo permitido en bytes |
multiple | boolean |
false |
Si esta presente o es verdadero, aceptará multiples archivos. |
onChange | Function |
undefined |
Función que describe que hacer luego de seleccionar los archivos. Retorna un objeto File[] como primer parámetro |
style | React.CSSProperties |
{} | El estilo objeto de estilo in-line |
text | "uppercase" | "capitalize" | "lowercase" | "none" |
"capitalize" |
La transformación del texto dentro del botón. |
textColor | string |
"white" | El color de la letra en caso la variante (variant ) sea "contained" |
validator | (f: File ) => boolean |
undefined |
Debe ser una función que reciba como primer parámetro un objeto File y debe retornar un valor booleano. Esta función, si está presente, será usada en lugar de la función de validación por defecto. |
variant | "text" | "outlined" | "contained" |
"contained" |
La variante del botón |
Este proyecto está licenciado bajo los terminos de la Licencia MIT.