Lista Sortable y Drag & Drop para Angular | ng-hub-ui-sortable

Utilidades sortable y drag-and-drop para Angular sobre arrays, FormArray, flujos con Signals y listas conectadas.

Referencia API

Aquí tienes el contrato completo de sortable: todo lo que puedes enlazar, escuchar, proyectar y personalizar, reunido en un solo sitio. Enlaza lo que necesites y dale el estilo que quieras — es standalone y reactivo con signals.

Inputs

Ajusta sortable a tu gusto con 39 inputs. Se enlazan como cualquier @Input de Angular.

NombreTipoPor defectoDescripción
hubSortableSortableData<T> | SortableBindings—Datos vinculados al contenedor ordenable: un array, un `FormArray` reactivo o una señal escribible. Se mantiene sincronizado con las operaciones de arrastrar y soltar. Es opcional: el atributo `hubSortable` a secas también activa la directiva, y entonces los outputs informan de cada movimiento sin que se mute nada.
optionsOptions—Objeto completo de opciones de SortableJS. Cada opción de SortableJS también puede enlazarse directamente como su propio input (por ejemplo `handle`, `animation` o `group`).
autoUpdateArraybooleantrueCon `true` (por defecto) la directiva muta el array enlazado automáticamente tras cada arrastre. Ponlo a `false` para control manual y actualiza tú mismo el array.
cloneFunction(item: T) => T—Función usada para clonar un elemento cuando el grupo está configurado en modo `pull: 'clone'`.
containerstring—Selector CSS del elemento anidado que debe volverse ordenable cuando el host envuelve la lista real.
keyboardSortingbooleantrueReordenación por teclado, activada por defecto. Cada elemento pasa a ser una parada de tabulación; `Enter` o `Espacio` lo agarra, las flechas lo mueven, `Inicio` y `Fin` lo llevan a los extremos y `Escape` lo devuelve a su sitio. Ponlo a `false` cuando la aplicación aporte su propio camino de teclado.
keyboardMessagesPartial<SortableKeyboardMessages>—Sustituye las frases que la reordenación por teclado anuncia en su región viva. Lo que no indiques conserva su texto en inglés.
groupOptions['group']—Nombre u objeto de configuración del grupo para conectar varias listas y controlar cuáles pueden ceder o recibir elementos.
sortboolean—Habilita o deshabilita el reordenamiento de elementos dentro de la lista.
delaynumber—Milisegundos que hay que mantener pulsado antes de que pueda empezar el arrastre. Por defecto `0`; súbelo en táctil para que una pulsación corta haga scroll en vez de arrastrar.
disabledboolean—Deshabilita el comportamiento ordenable sin retirar la directiva.
draggablestring—Selector CSS que restringe qué elementos hijos pueden arrastrarse.
handlestring—Selector CSS del elemento dentro de cada ítem que inicia el arrastre, dejando interactivo el resto.
animationnumber—Duración en milisegundos de la animación de reordenamiento.
ghostClassstring—Clase CSS aplicada al marcador de posición que se muestra durante el arrastre.
chosenClassstring—Clase CSS aplicada al elemento desde que se selecciona hasta que termina el arrastre. Por defecto `sortable-chosen`.
dragClassstring—Clase CSS aplicada al elemento que sigue al puntero durante el arrastre. Por defecto `sortable-drag`.
fallbackOnBodyboolean—Añade la vista previa del arrastre a `document.body` en vez de a la lista, para que ningún ancestro con `overflow: hidden` la recorte.
fallbackTolerancenumber—Píxeles que debe recorrer el puntero antes de que empiece el arrastre de reserva. Por defecto `0`; súbelo para que un toque no se lea como un arrastre.
fallbackClassstring—Clase CSS aplicada al clon de vista previa que se usa cuando se evita el drag-and-drop nativo de HTML5.
fallbackOffset{ x: number; y: number }—Desplazamiento en píxeles de la vista previa de reserva respecto al puntero.
forceFallbackboolean—Ignora el drag-and-drop nativo de HTML5 y arrastra siempre un clon, que se ve igual en todos los navegadores.
filterstring | ((event, target, sortable) => boolean)—Selector CSS (o predicado) que marca los elementos que no pueden arrastrarse.
preventOnFilterboolean—Llama a `preventDefault()` en el evento que disparó `filter`. Por defecto `true`; desactívalo cuando el elemento filtrado sea un control que aún necesita su propio clic.
direction'vertical' | 'horizontal' | ((event, target, dragEl) => 'vertical' | 'horizontal')—Eje según el que se dispone la lista. Se detecta automáticamente si no se indica; indícalo de forma explícita en rejillas y listas con salto de línea, donde la detección puede fallar.
swapThresholdnumber—Fracción del elemento de destino (de 0 a 1) que debe cubrir el puntero para que ambos se intercambien. Por defecto `1`; los valores más bajos intercambian antes.
invertSwapboolean—Usa siempre la zona de intercambio invertida, de modo que el intercambio ocurre cuando el puntero sale de un elemento en vez de cuando entra.
invertedSwapThresholdnumber—Umbral que se usa mientras la zona de intercambio está invertida. Si no se indica, se toma el de `swapThreshold`.
removeCloneOnHideboolean—Quita el clon del DOM mientras está oculto en vez de limitarse a ocultarlo. Por defecto `true`.
ignorestring—Selector CSS de los elementos dentro de un ítem que nunca deben iniciar un arrastre, como campos de formulario o enlaces.
touchStartThresholdnumber—Píxeles que puede moverse el dedo antes de cancelar un arrastre retardado: el margen entre arrastrar y hacer scroll.
emptyInsertThresholdnumber—Distancia en píxeles a una lista vacía a la que se inserta en ella el elemento arrastrado. Por defecto `5`; con `0` el puntero tiene que estar dentro de la lista.
dropBubbleboolean—Deja que el evento drop siga propagándose hacia los elementos ancestros.
dragoverBubbleboolean—Deja que el evento dragover siga propagándose hacia los elementos ancestros.
dataIdAttrstring—Atributo HTML que `Sortable.toArray()` y `store` leen como id de cada elemento. Por defecto `data-id`.
delayOnTouchOnlyboolean—Aplica `delay` solo a la entrada táctil, de modo que con ratón el arrastre sigue empezando de inmediato.
easingstring—Función de easing CSS para la animación de reordenación, por ejemplo `cubic-bezier(1, 0, 0, 1)`.
setData(dataTransfer: DataTransfer, draggedElement: HTMLElement) => void—Se llama al empezar el arrastre para escribir en el `DataTransfer` nativo: es el punto de enganche para arrastrar fuera de la página.
store{ get: (sortable: Sortable) => string[]; set: (sortable: Sortable) => void }—Par de callbacks `get`/`set` para persistir el orden y restaurarlo en la siguiente carga, usando `dataIdAttr` como clave.

Outputs

Reacciona a lo que hace sortable: 13 eventos a los que enganchar tu lógica.

NombreTipoDescripción
initSortableSe emite una vez creada la instancia subyacente de SortableJS.
startSortableEventSe emite cuando comienza una operación de arrastre.
endSortableEventSe emite cuando termina una operación de arrastre, sea cual sea el resultado.
addSortableEventSe emite cuando se suelta un elemento en esta lista procedente de otra.
updateSortableEventSe emite cuando un elemento cambia de posición dentro de la misma lista.
sortEventSortableEventSe emite cada vez que cambia el orden de la lista (tras `add` o `update`).
removeSortableEventSe emite cuando un elemento sale de esta lista hacia otra.
filterEventSortableEventSe emite al intentar arrastrar un elemento filtrado (no arrastrable).
changeSortableEventSe emite cuando la lista cambia por una operación de adición o eliminación.
chooseSortableEventSe emite cuando se elige un elemento (al pulsar el puntero).
unchooseSortableEventSe emite cuando se suelta un elemento sin haberlo arrastrado.
cloneSortableEventSe emite cuando se clona un elemento en modo clonación.
moveSortableMoveEventPayloadSe emite continuamente durante el arrastre; su valor de retorno puede controlar si el movimiento se permite.

Templates

Todavía no hay templates documentados.