No Preview

Sorry, but you either have no stories or none are selected somehow.

If the problem persists, check the browser console, or the terminal you've run Storybook from.


  

DragAndDrop

Droppable

NameDescriptionDefaultControl
id*
ID del componente DragAndDrop.
string
-
children*
Hijos del componente.
Element | Element[]
-
RAW
children : {
  • $$typeof : Symbol(react.element)
  • type : {...} 4 keys
  • key : null
  • ref : null
  • props : {...} 3 keys
  • _owner : null
}
multipleDrags
Permite arrastrar múltiples elementos.
boolean
false
onValidate
Función de validación.
(({ validate, active }: { validate: string[]; active: boolean; }) => void)
-
validate
Indica si la validación está activa.
boolean
false
propValidate
Propiedad de validación.
string
"data-validation"
modifiers
Modificadores del DragAndDrop.
"restrictToVerticalAxis""restrictToHorizontalAxis"
-
screenReaderInstructions
Instrucciones para lectores de pantalla.
string
"Para recoger un elemento arrastrable, presiona la barra espaciadora o la tecla Enter. Mientras arrastras, usa las teclas de flecha para mover el elemento en cualquier dirección deseada. Presiona nuevamente la barra espaciadora o la tecla Enter para soltar el elemento en su nueva posición, o presiona escape para cancelar."
announcements
Anuncios ARIA.
Announcements
object
defaultState
Estado por defecto del DragAndDrop.
ItemType
-
defaultValidate
Validaciones por defecto.
string[]
-
onState
Función de actualización de estado.
(({ id, state, validateId }: { id: string; state: ItemType; validateId: string[]; }) => void)
--

Stories

Default

El componente DragAndDrop nos permite usar la HTML Drag and Drop API de una forma más sencilla e intuitiva. Construido a partir del paquete @dnd-kit, este componente provee diferentes funcionalidades, tales como la validación de los elementos arrastrables y todos los mecanismos necesarios para que sea accesible para personas con discapacidades. Para su implementación, solo necesitamos importar el componente <DragAndDrop/>. Este incluye los componentes <DragAndDrop.Container/>, <DragAndDrop.Drag/> y <DragAndDrop.Drop/>, necesarios para su uso. Haz clic en Show code en la parte inferior para ver y utilizar este ejemplo.

Droppable

Drag Validation

La funcionalidad de validación consta de diferentes propiedades necesarias para su funcionamiento. Cada elemento <DragAndDrop.Drag/> necesita una propiedad id. Ten en cuenta esto, ya que es importante para los siguientes pasos. El <DragAndDrop.Drop> recibe una propiedad validate, que es un array. En este array se colocan los id de los elementos <DragAndDrop.Drag/> que pertenecen a ese elemento <DragAndDrop.Drop/>. Para ejecutar la validación, el componente <DragAndDrop/> recibe la propiedad validate. Ten en cuenta que, una vez esta propiedad está en true, los demás componentes se bloquearán, impidiendo que sean arrastrados a otros <DragAndDrop.Drop/> o incluso al <DragAndDrop.Container/>.

Droppable B

Droppable A

Reset Drag

Continuando con el tema de validación, para reiniciar tu <DragAndDrop/>necesitas usar la función handleResetDnd proveniente del custom hook useDragAndDropContext.

Droppable B

Accesibility Drag

Con respecto al tema de accesibilidad (a11y), puedes utilizar las propiedades screenReaderInstructions y announcement. Cuando enfocamos un elemento <DragAndDrop.Drag/> utilizando un lector de pantalla, la propiedad screenReaderInstructions será leída por este. En otras palabras, esta propiedad se encarga de explicar al usuario con discapacidad cómo usar el componente a través del teclado. Por otro lado, cuando interactuamos con un <DragAndDrop.Drag/>, el lector de pantalla verbalizará los diferentes estados, tales como: onDragStart (cuando se agarra el elemento), onDragOver (cuando se mueve), onDragEnd (cuando se suelta) y onDragCancel (cuando se cancela el arrastre).

Droppable

Drag Styling

Si necesitas personalizar completamente la apariencia del componente, puedes pasarle tus clases personalizadas de CSS a través de la propiedad addClass, la cual es aceptada por los componentes <DragAndDrop.Container/>, <DragAndDrop.Drag/> y <DragAndDrop.Drop/>. En cuanto a la validación, puedes utilizar el valor de la propiedad propValidate. Durante la validación, cada elemento <DragAndDrop.Drag/> recibirá un valor true o false. Un valor true indica que el <DragAndDrop.Drag/> está en el <DragAndDrop.Drop/> correcto, mientras que false significa lo contrario. Por defecto, propValidate tiene el valor de 'data-validation', pero puedes modificarlo según tus necesidades.

Droppable