Descripción general del componente paso a paso Angular
La Ignite UI for Angular Stepper es un componente altamente personalizable que visualiza el contenido como un proceso y muestra su progreso dividiendo el contenido en pasos sucesivos. Aparece como una línea vertical u horizontal. Proporcionado por la Ignite UI para Biblioteca de componentes Angular, el componente paso a paso ofrece un flujo de trabajo similar a un asistente y múltiples funciones como validación de pasos, estilo, orientación y navegación con el teclado.
Angular Stepper Example
En este ejemplo Angular Stepper, puede ver cómo los usuarios tienen la oportunidad de personalizar su tarjeta de crédito y pasan por el proceso en cinco pasos lógicos: seleccionar el tipo de tarjeta, agregar información comercial, completar información personal, proporcionar detalles de envío y confirmación. Tenga en cuenta que el cuarto paso de nuestra demostración paso a paso Angular se habilita solo si el usuario marca la casilla de verificación en el segundo paso, lo que significa que su dirección postal es diferente de la dirección física de la empresa.
A continuación, se muestra un ejemplo que demuestra cómo lograr la funcionalidad anterior utilizando Angular formularios reactivos.
Getting Started with Ignite UI for Angular Stepper
Para comenzar con el componente Ignite UI for Angular Stepper, primero debe instalar Ignite UI for Angular. En una aplicación Angular existente, escriba el siguiente comando:
ng add igniteui-angular
Para obtener una introducción completa a la Ignite UI for Angular, lea el tema de introducción.
El siguiente paso es importar IgxStepperModule
en su archivo app.module.ts.
// app.module.ts
...
import { IgxStepperModule } from 'igniteui-angular';
// import { IgxStepperModule } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
...
imports: [..., IgxStepperModule],
...
})
export class AppModule {}
Alternativamente, a partir de 16.0.0
, puede importar IgxStepperComponent
como una dependencia independiente o usar el token IGX_STEPPER_DIRECTIVES
para importar el componente y todos sus componentes y directivas de soporte.
// home.component.ts
import { HammerModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { IGX_STEPPER_DIRECTIVES } from 'igniteui-angular';
// import { IGX_STEPPER_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package
@Component({
selector: 'app-home',
template: `<igx-stepper>
<igx-step>
<p igxStepTitle>Step 1</p>
</igx-step>
<igx-step>
<p igxStepTitle>Step 2</p>
</igx-step>
</igx-stepper>`,
styleUrls: ['home.component.scss'],
standalone: true,
imports: [IGX_STEPPER_DIRECTIVES, FormsModule, HammerModule]
/* or imports: [IgxStepperComponent, FormsModule, HammerModule] */
})
export class HomeComponent {
public task: Task;
}
Ahora que ha importado el módulo o las directivas Angular Stepper, puede comenzar con una configuración básica del igx-stepper
y sus pasos. Ahora que ha importado el módulo o las directivas Angular Stepper, puede comenzar con una configuración básica del igx-stepper
y sus pasos.
Using the Angular Stepper
IgxStepComponent es la representación de cada paso que pertenece al IgxStepperComponent. Los pasos proporcionan propiedades isValid, active, opcional, deshabilitado y completado, que le brindan la posibilidad de configurar los estados de los pasos según los requisitos de su negocio.
Declaring a Stepper
Ahora que hemos importado el módulo paso a paso, comencemos con su configuración.
Los pasos se pueden declarar utilizando uno de los siguientes enfoques.
- Iterando a través de un conjunto de datos
<igx-stepper>
<igx-step *ngFor="let step of stepsData" [disabled]=”step.disabled”>
<igx-icon igxStepIndicator>
{{step.indicator}}
</igx-icon>
<p igxStepTitle>
{{step.title}}
</p>
</igx-step>
</igx-stepper>
- Creando pasos estáticos
<igx-stepper>
<igx-step>
<p igxStepTitle>Step 1</p>
</igx-step>
<igx-step>
<p igxStepTitle>Step 2</p>
</igx-step>
</igx-stepper>
Para cada paso, el usuario tiene la capacidad de configurar el indicador, título, subtítulo y contenido usando las directivas igxStepIndicator
, igxStepTitle
, igxStepSubtitle
e igxStepContent
de la siguiente manera:
<igx-stepper>
<igx-step>
<igx-icon igxStepIndicator>home</igx-icon>
<p igxStepTitle>Home</p>
<p igxStepSubtitle>Home Sub Title</p>
<div igxStepContent>
...
</div>
</igx-step>
</igx-stepper>
Changing the Stepper Orientation
Puede personalizar la orientación del paso a paso a través de la propiedad de orientación expuesta. Se necesita un miembro de la enumeración IgxStepperOrientation
: Horizontal
(valor predeterminado) o Vertical
.
Orientación paso a paso horizontal
horizontal
es el valor predeterminado para el igx-stepper
orientación propiedad. Cuando el paso a paso está orientado horizontalmente, tiene la oportunidad de determinar si el contenido de los pasos se mostrará encima o debajo de los encabezados de los pasos. Esto podría lograrse estableciendo el Componente IgxStepper contenidoarriba propiedad booleana, cuyo valor predeterminado es false
. En caso de que esté habilitado, el contenido de los pasos se mostrará encima de los encabezados de los pasos.
Orientación vertical del paso a paso
Puede cambiar fácilmente del diseño horizontal al vertical. Para cambiar la orientación predeterminada, debe establecer la propiedad de orientación en vertical
.
<igx-stepper [orientation]="'vertical'">
<igx-step>
…
</igx-step>
<igx-step>
…
</igx-step>
</igx-stepper>
El siguiente ejemplo demuestra cómo se puede cambiar la orientación del paso a paso y la posición de los títulos en tiempo de ejecución.
Step States
IgxStepperComponent admite cuatro estados de pasos y cada uno de ellos aplica estilos diferentes de forma predeterminada:
- activo: determina si el paso es el que se muestra actualmente. Por diseño, si el usuario no establece explícitamente el atributo activo de algún paso en
true
, el paso activo inicial sería el primer paso no deshabilitado. - deshabilitado: determina si se puede interactuar con el paso. De forma predeterminada, el atributo deshabilitado de un paso se establece en
false
. - Opcional: de forma predeterminada, el atributo opcional de un paso se establece en
false
. Si no se requiere la validez de un paso en el paso a paso lineal, entonces se puede habilitar el atributo opcional para poder avanzar independientemente de la validez del paso. - completado: de forma predeterminada, el atributo completado de un paso devuelve
false
. Sin embargo, el usuario puede anular este comportamiento de finalización predeterminado estableciendo el atributo de finalización según sea necesario. Cuando el paso se marca como completado, no solo se cambia el estilo del encabezado del paso de forma predeterminada, sino también el estilo de la línea de progreso entre el paso completado y el siguiente. Ambos estilos podrían modificarse utilizando las variables CSS expuestas.
IgxStepperComponent le brinda la oportunidad de configurar la lógica de validación para cada paso a través de la propiedad isValid vinculable bidireccional. En función de su valor, se decide si el usuario tendrá la capacidad de avanzar en el modo paso a paso lineal. De forma predeterminada, la propiedad isValid de un paso se establece en true
.
Linear Stepper
El igx-stepper
le brinda la oportunidad de establecer el flujo de sus pasos utilizando la propiedad lineal. De forma predeterminada, lineal se establece en false
y el usuario puede seleccionar cualquier paso no deshabilitado en IgxStepperComponent.
Cuando la propiedad lineal se establece en true
, el paso a paso requerirá que el paso no opcional actual sea válido antes de continuar con el siguiente.
Si el paso no opcional actual no es válido, no podrá avanzar al siguiente paso hasta que valide el actual.
Note
La validez de los pasos opcionales no se tiene en cuenta para seguir adelante.
El siguiente ejemplo demuestra cómo configurar un paso a paso lineal:
Step Interactions
IgxStepperComponent proporciona los siguientes métodos API para interacciones de pasos:
- navegar a– activa el paso por índice dado.
- siguiente: activa el siguiente paso no deshabilitado.
- prev: activa el paso anterior no deshabilitado.
- restablecer: restablece el paso a paso a su estado inicial.
Note
El método de reinicio no borrará el contenido del paso. Esto debe hacerse manualmente.
Customizing the Steps
La Ignite UI for Angular Stepper le brinda la posibilidad de configurar diferentes opciones para títulos, indicadores y más.
Esto podría lograrse mediante la propiedad stepType de IgxStepperComponent. Se necesita un miembro de la enumeración IgxStepType
:
- Completo (valor predeterminado)
- Indicador
- Título
Lleno
Si se definen títulos y subtítulos, con esta configuración se representarán tanto los indicadores como los títulos.
El usuario también tendría la capacidad de definir la posición del título de los pasos, de modo que podría colocarse antes, después, encima o debajo del indicador de paso. El usuario puede configurar la posición del título utilizando la propiedad titlePosition. Ambas propiedades son miembros de la enumeración IgxStepperTitlePosition
:
- fin
- comenzar
- abajo
- arriba
Cuando el igx-stepper
está orientado horizontalmente, el valor predeterminado de la posición del título es bottom
.
Cuando la orientación se establece en diseño vertical, la posición del título por defecto es end
.
Note
La propiedad titlePosition solo se aplica cuando la propiedad stepType stepper está configurada en full
.
Indicador
Si desea mostrar solo indicadores para los pasos, configure la opción stepType en indicator
.
El indicador de pasos admite cualquier contenido, pero con la restricción de que su tamaño será siempre de 24 píxeles. Teniendo esto en cuenta, recomendamos utilizar IgxIconComponent o IgxAvatarComponent como indicadores de pasos.
Título
Si desea mostrar solo títulos para los pasos, configure la opción stepType en title
.
De esta manera, si se definen subtítulos, también aparecerán debajo del título del paso.
Note
Este contenedor se puede cambiar de plantilla según sus necesidades sin restricciones de tamaño. Por ejemplo, podría agregar un indicador con un tamaño superior a 24 píxeles en su interior.
El siguiente ejemplo muestra todos los tipos de pasos expuestos y cómo podrían cambiarse:
IgxStepperComponent también le permite personalizar los indicadores representados para pasos activos, no válidos y completados. Esto podría lograrse mediante las directivas igxStepActiveIndicator
, igxStepInvalidIndicator
e igxStepCompletedIndicator
:
<igx-stepper>
<ng-template igxStepActiveIndicator>
<igx-icon>edit</igx-icon>
</ng-template>
<ng-template igxStepInvalidIndicator>
<igx-icon>error</igx-icon>
</ng-template>
<ng-template igxStepCompletedIndicator>
<igx-icon>check</igx-icon>
</ng-template>
...
</igx-stepper>
Note
Estas plantillas se aplicarían para todos los pasos con el estado correspondiente.
Angular Stepper Animations
Las animaciones Angular paso a paso brindan a los usuarios finales una hermosa experiencia al interactuar con los pasos definidos. Las opciones de animación disponibles difieren según la orientación del paso a paso.
Cuando el paso a paso está orientado horizontalmente, está configurado para usar la animación slide
de forma predeterminada. También admite fade
como alternativa. Las animaciones se configuran a través de la entrada horizontalAnimationType.
En un diseño orientado verticalmente, el tipo de animación se puede definir utilizando la propiedad verticalAnimationType. De forma predeterminada, su valor grow
y el usuario también tiene la capacidad de configurarlo para que se fade
.
Establecer none
en ambas entradas de tipo de animación deshabilita las animaciones paso a paso.
IgxStepperComponent le brinda la posibilidad de configurar la duración de la transición entre los pasos. Esto podría lograrse mediante la propiedad AnimationDuration, que toma un número como argumento y es común para ambas orientaciones.
Keyboard Navigation
Angular Stepper proporciona una rica variedad de interacciones de teclado al usuario final. Esta funcionalidad está habilitada de forma predeterminada y permite a los usuarios finales navegar fácilmente por los pasos. La navegación de IgxStepperComponent cumple con los estándares de accesibilidad W3 y es fácil de usar.
Combinaciones de teclas
- Tabulador: mueve el foco al siguiente elemento tabulado
- Shift + Tab: mueve el foco al elemento tabable anterior
- Flecha hacia abajo: mueve el foco al encabezado del siguiente paso accesible cuando el
igx-stepper
está orientado verticalmente. - Flecha hacia arriba: mueve el foco al encabezado del paso accesible anterior cuando el
igx-stepper
está orientado verticalmente. - Flecha hacia la izquierda: mueve el foco al encabezado del paso accesible anterior en ambas orientaciones.
- Flecha hacia la derecha: mueve el foco al encabezado del siguiente paso accesible en ambas orientaciones.
- Inicio: mueve el foco al encabezado del PRIMER paso habilitado en
igx-stepper
- Fin: mueve el foco al encabezado del ÚLTIMO paso habilitado en
igx-stepper
- Intro/Espacio: activa el paso actualmente enfocado
Note
Por diseño, cuando el usuario presiona la tecla Tab sobre el encabezado del paso, el foco se moverá al contenedor de contenido del paso. En caso de que se deba omitir el contenedor, el desarrollador debe configurar el contenedor de contenido [tabIndex]="-1"
.
El componente Stepper también está disponible en App Builder ™ de código bajo, arrastrar y soltar.
Angular Stepper Styling
Usando la Ignite UI for Angular Theming, podemos alterar en gran medida la apariencia igx-stepper
.
Primero, para utilizar las funciones expuestas por el motor de temas, necesitamos importar el archivo index
en nuestro archivo de estilo:
@import '~igniteui-angular/lib/core/styles/themes/index';
Siguiendo el enfoque más simple, creamos un nuevo tema que extiende el tema paso a paso y pasamos los parámetros que nos gustaría cambiar:
$custom-stepper-theme: stepper-theme(
$current-title-color: #351e65,
$current-subtitle-color: #5f4691,
$step-separator-style: "solid"
);
Using CSS Variables
El último paso es incluir el tema del componente.
:host {
@include css-vars($custom-stepper-theme);
}
Using Theme Overrides
Para diseñar componentes para navegadores más antiguos, como IE11, tenemos que utilizar un enfoque diferente, ya que allí no se admiten variables CSS.
Si el componente utiliza Emulated ViewEncapsulation, es necesario penetrate
esta encapsulación usando::ng-deep
. Para evitar que el tema personalizado se filtre a otros componentes, asegúrese de incluir el selector:host
antes de::ng-deep
:
:host {
::ng-deep {
@include stepper($custom-stepper-theme);
}
}
Demo
El siguiente ejemplo muestra un estilo simple aplicado a través de la Ignite UI for Angular Theming.
API Reference
Additional Resources
Nuestra comunidad es activa y siempre da la bienvenida a nuevas ideas.