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

Splitter

Redimensiona paneles contiguos arrastrando o usando el teclado.

Categoría
Diseño y contenido
Import
@neural-ui/core/splitter
Selector
neu-splitter
import { NeuSplitterComponent } from '@neural-ui/core/splitter';

Uso

panes define una entrada por neu-splitter-pane proyectado, en el mismo orden. size es un porcentaje; min y max son límites en píxeles. Los tamaños omitidos comparten el porcentaje restante. orientation elige paneles contiguos o apilados. Define una altura para la distribución vertical. Acepta sizesChange actualizando size para conservar el cambio al terminar el arrastre.

Ejemplos

Prueba el comportamiento y abre Código para consultar la implementación.

Ejemplos

Usa las flechas sobre el separador para redimensionar un 2%.

Prueba y configura

Cambia las opciones y prueba el resultado. El template generado sigue tu configuración; Código contiene la implementación ejecutable completa.

Prueba y configura

Tamaños de panel: 40.0 / 60.0 % · Arrastres: 0

template.html
<neu-splitter
  orientation="horizontal"
  [panes]="panes()"
  (sizesChange)="accept($event)"
  (resizeStart)="starts.update(increment)"
  (resize)="resizes.update(increment)"
>
  <neu-splitter-pane>
    <section>Carpetas</section>
  </neu-splitter-pane>
  <neu-splitter-pane>
    <section>Detalles</section>
  </neu-splitter-pane>
</neu-splitter>
panes.ts
import type { NeuSplitterPane } from '@neural-ui/core/splitter';

readonly panes = signal<readonly NeuSplitterPane[]>([
  {
    "size": 40,
    "min": 40
  },
  {
    "size": 60,
    "min": 40
  }
]);

Datos y contenido

sizesChange propone porcentajes en el orden de panes. resizeStart comunica el inicio de un arrastre y resize sus avances válidos. El teclado emite sizesChange. El contenido se proyecta en elementos neu-splitter-pane; esta etiqueta es una zona de contenido, no un componente Angular exportado.

Accesibilidad y teclado

Cada tirador es un separador con foco, orientación y valores actual, mínimo y máximo. Izquierda y derecha redimensionan paneles horizontales y arriba y abajo los verticales en un 2%. El movimiento horizontal respeta RTL. Los límites deben dejar espacio utilizable para el contenido.

Tecla
Acción
Tab Enfoca un separador habilitado.
ArrowLeft / ArrowRight Redimensiona los paneles horizontales un 2%, respetando límites y RTL.
ArrowUp / ArrowDown Redimensiona los paneles verticales un 2%, respetando sus límites.

API

Inputs y Outputs corresponden al paquete fijado. Los tipos con nombre enlazan a sus definiciones; cada Template disponible tiene un ejemplo ejecutable.

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
orientationNeuSplitterDirection'horizontal'[orientation]horizontal dispone paneles contiguos; vertical los apila.
panesreadonly NeuSplitterPane[][][panes]Porcentajes y límites min/max en píxeles, en el orden de proyección.

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
resizereadonly number[](resize)="onResize($event)"Comunica un avance válido del redimensionamiento con puntero.
resizeStartreadonly number[](resizeStart)="onResizeStart($event)"Comunica tamaños aplicados al comenzar un arrastre.
sizesChangereadonly number[](sizesChange)="onSizesChange($event)"Propone porcentajes de panel; actualiza panes para aceptarlos.

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
neu-splitter-pane

Contenido de paneles contiguos

Ver ejemplo
Proyección de contenido

Proporciona un neu-splitter-pane por entrada de panes, en el mismo orden. La etiqueta es una zona de proyección.

<ng-content select="neu-splitter-pane" />

Contexto utilizado: —

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

Contenido de panel

neu-splitter-pane

Contenido de panel

Public Types

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

Estilos y tokens

Utiliza tokens públicos de espaciado, superficie, texto y foco. Comprueba el contenido proyectado y los controles en ambos temas y con anchos reducidos.

Tokens específicos

Token
Efecto
Estado / variante
Valor / origen
Alternativa
--neu-splitter-handle-size Valor del tema heredado que utiliza este componente Superficie del campo 4pxDeclaración raízSin alias de token

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-focus-ring Anillo normal del foco de teclado Compartido con otros consumidores de Core; limita el cambio a un ámbito. 0 0 0 var(--neu-focus-ring-width) rgba(0, 122, 255, 0.15)
--neu-primary Color de marca en controles activos y énfasis Compartido con otros consumidores de Core; limita el cambio a un ámbito. #007aff
--neu-border-color Valor del tema heredado que utiliza este componente Compartido con otros consumidores de Core; limita el cambio a un ámbito. var(--neu-border)
--neu-text-secondary Valor del tema heredado que utiliza este componente Compartido con otros consumidores de Core; limita el cambio a un ámbito. var(--neu-text-muted)