Saltar al contenido principal
Neural UIv2.0.0Documentación
Ver v1 GitHub

PickList

Transfiere elementos entre listas de disponibles y seleccionados con arrays controlados.

Categoría
Formularios y selección
Import
@neural-ui/core/pick-list
Selector
neu-pick-list
import { NeuPickListComponent } from '@neural-ui/core/pick-list';

Uso

Aplica itemsChange.source e itemsChange.target juntos para no duplicar un elemento entre listas. sourceChange y targetChange aportan propuestas individuales; itemsChange contiene la transferencia completa. moveAllScope="filtered" mueve los elementos visibles habilitados; "all" utiliza la colección completa habilitada. No se mueven elementos disabled.

Ejemplos

Prueba esta interacción gestionada por la aplicación. Código incluye los eventos y los datos iniciales.

Ejemplos

Disponibles

Seleccionados

Sin proyectos coincidentes

Eventos: 0

Prueba y configura

Cambia las opciones públicas, prueba el resultado y consulta el template actualizado. Código contiene la implementación ejecutable completa.

Prueba y configura

Disponibles

Seleccionados

Sin proyectos coincidentes

Eventos: 0

template.html
<neu-pick-list
  [source]="available()"
  [target]="chosen()"
  [filter]="true"
  [dragDrop]="false"
  (itemsChange)="
    available.set($event.source);
    chosen.set($event.target);
    record('itemsChange', $event)
  "
  [emptyFilterLabel]="'Sin proyectos coincidentes'"
  [filterPlaceholder]="'Buscar proyectos'"
  [sourceFilterLabel]="'Filtrar proyectos disponibles'"
  [sourceHeader]="'Disponibles'"
  [targetFilterLabel]="'Filtrar proyectos seleccionados'"
  [targetHeader]="'Seleccionados'"
></neu-pick-list>

Estado y eventos

Aplica itemsChange.source e itemsChange.target juntos para no duplicar un elemento entre listas. sourceChange y targetChange aportan propuestas individuales; itemsChange contiene la transferencia completa. moveAllScope="filtered" mueve los elementos visibles habilitados; "all" utiliza la colección completa habilitada. No se mueven elementos disabled.

Accesibilidad y teclado

Usa Tab para alcanzar los elementos y botones de transferencia. Intro o Espacio selecciona un elemento o activa un botón de transferencia. Estos controles siguen disponibles sin dragDrop.

Tecla
Acción
Tab Recorre los botones de elementos y los controles disponibles para ordenar o transferir.
Enter Selecciona el elemento enfocado o activa el botón de ordenar o transferir. No es necesario arrastrar.
Space Selecciona el elemento enfocado o activa el botón de ordenar o transferir. No es necesario arrastrar.

API

Inputs, modelos y Outputs se extraen del paquete Core instalado. Los tipos públicos enlazan a sus definiciones. Los Templates incluyen ejemplos ejecutables.

Inputs

Configura el componente con [propiedad]="valor". Tu aplicación proporciona estos valores; el componente no debe reemplazar el estado que le pasas.

Nombre
Tipo
Por defecto
Uso en el template
Descripción
dragDropbooleanfalse[dragDrop]Habilita el arrastre opcional; teclado y botones siguen disponibles.
emptyFilterLabelstring'No matching items'[emptyFilterLabel]Texto que se muestra cuando no hay entradas coincidentes con el filtro.
filterbooleanfalse[filter]Consulta de búsqueda original modificada por el usuario.
filterConfigReadonly<NeuOptionFilterConfig<T>>{}[filterConfig]Campos, modo de comparación, idioma y estrategia de filtrado local o remoto.
filterPlaceholderstring'Filter items'[filterPlaceholder]Nombre accesible o texto de ayuda del filtro de la lista correspondiente.
moveAllScopeNeuPickListMoveAllScope'filtered'[moveAllScope]Elige si mover todo transfiere las entradas visibles filtradas o todas las habilitadas.
optionDisabledNeuOptionDisabledAccessor<T> | nullnull[optionDisabled]Nombre de campo o función que indica si una opción está deshabilitada.
optionLabelNeuOptionLabelAccessor<T> | nullnull[optionLabel]Nombre de campo o función que obtiene la etiqueta visible de la opción.
optionValueNeuOptionValueAccessor<T, V> | nullnull[optionValue]Nombre de campo o función que obtiene el valor guardado de la opción.
sourcereadonly T[][][source]Colección aplicada en el lado correspondiente de disponibles o seleccionados.
sourceFilterLabelstring'Filter available items'[sourceFilterLabel]Nombre accesible o texto de ayuda del filtro de la lista correspondiente.
sourceFilterValuestring | nullnull[sourceFilterValue]Filtro de texto aplicado; null deja su gestión al componente.
sourceHeaderstring'Available'[sourceHeader]Título visible de la lista de transferencia correspondiente.
sourceSelectionKeysreadonly V[] | undefinedundefined[sourceSelectionKeys]Valores estables aplicados de las opciones seleccionadas. undefined usa selección local.
targetreadonly T[][][target]Colección aplicada en el lado correspondiente de disponibles o seleccionados.
targetFilterLabelstring'Filter selected items'[targetFilterLabel]Nombre accesible o texto de ayuda del filtro de la lista correspondiente.
targetFilterValuestring | nullnull[targetFilterValue]Filtro de texto aplicado; null deja su gestión al componente.
targetHeaderstring'Selected'[targetHeader]Título visible de la lista de transferencia correspondiente.
targetSelectionKeysreadonly V[] | undefinedundefined[targetSelectionKeys]Valores estables aplicados de las opciones seleccionadas. undefined usa selección local.

Outputs

Escucha un evento con (evento)="handler($event)". La tabla indica qué datos recibe tu función y cómo utilizarlos.

Nombre
Valor emitido
Uso en el template
Descripción
itemDropNeuPickListDropEvent<T>(itemDrop)="onItemDrop($event)"Informa del drop por puntero/teclado con elemento, listas e índices. Aplica la propuesta de estado para aceptarlo.
itemsChange{ source: T[]; target: T[]; }(itemsChange)="onItemsChange($event)"Propone los arrays source y target. Aplícalos juntos para aceptar una transferencia atómica.
sourceChangeT[](sourceChange)="onSourceChange($event)"Propone la colección de reemplazo del lado correspondiente de PickList.
sourceFilterChangestring(sourceFilterChange)="onSourceFilterChange($event)"Propone el filtro de texto de la lista correspondiente.
sourceSelectionChangeT[](sourceSelectionChange)="onSourceSelectionChange($event)"Informa de los objetos seleccionados en la lista correspondiente.
targetChangeT[](targetChange)="onTargetChange($event)"Propone la colección de reemplazo del lado correspondiente de PickList.
targetFilterChangestring(targetFilterChange)="onTargetFilterChange($event)"Propone el filtro de texto de la lista correspondiente.
targetSelectionChangeT[](targetSelectionChange)="onTargetSelectionChange($event)"Informa de los objetos seleccionados en la lista correspondiente.

Templates

ng-content proyecta contenido dentro del componente. Los inputs TemplateRef reciben un template; las directivas ng-template identifican templates con un contexto tipado. Una directiva compartida en el entrypoint no es necesariamente un slot de este componente.

Nombre
Mecanismo
Contrato
NeuPickListItemDirectiveVer ejemplo Directiva pública de templateng-template[neuPickListItem]

Cada ejemplo muestra un template diferente. Alterna entre Demo y Código para consultar su implementación, imports y estado.

NeuPickListItemDirective

NeuPickListItemDirective

NeuPickListItemDirective

Disponibles

Seleccionados

Sin proyectos coincidentes

Eventos: 0

Public Types

Abre un tipo para consultar su definición y los campos de sus interfaces.

Estilos y tokens

Usa los tokens públicos de la referencia. El diseño del contenedor pertenece a tu aplicación; comprueba el resultado en modo claro y oscuro y en espacios estrechos.

Tokens específicos

Este componente utiliza tokens compartidos del tema en lugar de tokens específicos.

Tokens compartidos utilizados

Sobrescríbelos en un contenedor local para afectar a este ejemplo. Una modificación en :root afecta a los demás componentes que utilizan el mismo token.

Token
Efecto aquí
Otros efectos
Valor / alternativa
--neu-border Bordes normales de controles y celdas Compartido con otros consumidores de Core; limita el cambio a un ámbito. rgba(15, 23, 42, 0.08)
--neu-border-hover Bordes de controles al pasar el puntero Compartido con otros consumidores de Core; limita el cambio a un ámbito. rgba(15, 23, 42, 0.16)
--neu-primary Color de marca en controles activos y énfasis Compartido con otros consumidores de Core; limita el cambio a un ámbito. #007aff
--neu-surface Superficie principal del campo, cabecera o control Compartido con otros consumidores de Core; limita el cambio a un ámbito. #ffffff
--neu-surface-2 Superficies secundarias y filas alternas Compartido con otros consumidores de Core; limita el cambio a un ámbito. #f1f5f9
--neu-text Color del texto principal y de los iconos que lo heredan Compartido con otros consumidores de Core; limita el cambio a un ámbito. #0f172a
--neu-transition Duración de los cambios de estado Compartido con otros consumidores de Core; limita el cambio a un ámbito. 200ms ease