Descripción general de la lista React
The Ignite UI for React List element is extremely useful when presenting a group of items. You can create a simple list of textual items, or a more complex one, containing an array of different layout elements. The IgrList component displays rows of items and supports one or more headers as well. Each list item is completely templatable and will support any valid HTML or other components.
React List Example
The following example represents a list populated with contacts with a name and a phone number properties. The IgrList component demonstrated below uses the IgrAvatar and IgrButton elements to enrich the user experience and expose the capabilities of setting avatar picture and buttons for text and call actions.
Usage
En esencia, el componente web de lista le permite mostrar fácilmente una lista vertical de elementos.
Primero, debes instalar el paquete npm Ignite UI for React correspondiente ejecutando el siguiente comando:
npm install igniteui-react
Entonces tendrás que importar elIgrList CSS necesario y su contenido, así:
import { IgrList, IgrListHeader, IgrListItem } from 'igniteui-react';
import 'igniteui-webcomponents/themes/light/bootstrap.css';
Para una introducción completa al Ignite UI for React, lee el tema Empezar.
Add List Items
Ahora podemos agregar el siguiente código para obtener una lista simple de elementos:
<IgrList>
<IgrListHeader>
<span>Header</span>
</IgrListHeader>
<IgrListItem>
<h2 slot="title">Item 1</h2>
</IgrListItem>
<IgrListItem>
<h2 slot="title">Item 2</h2>
</IgrListItem>
<IgrListItem>
<h2 slot="title">Item 3</h2>
</IgrListItem>
</IgrList>
Si todo ha ido bien deberías ver lo siguiente en tu navegador:
Mejoremos un poco nuestro juego y mejoremos los elementos de nuestra lista. Digamos que queremos crear una lista de contactos con un nombre y un número de teléfono debajo del nombre. Para lograrlo, podemos usar algunas de las ranuras que vienen con los elementos de la lista, como se muestra en el siguiente ejemplo:
<IgrList>
<IgrListHeader>
<span>Contacts</span>
</IgrListHeader>
<IgrListItem>
<h2 slot="title">Terrance Orta</h2>
<span slot="subtitle">770-504-2217</span>
</IgrListItem>
<IgrListItem>
<h2 slot="title">Richard Mahoney</h2>
<span slot="subtitle">423-676-2869</span>
</IgrListItem>
<IgrListItem>
<h2 slot="title">Donna Price</h2>
<span slot="subtitle">859-496-2817</span>
</IgrListItem>
</IgrList>
Después de implementar el código anterior, nuestro componente de lista ahora debería verse como el siguiente:
Adding Avatar and Buttons
We can use some of our other components in conjunction with the IgrList component to enrich the experience and add some functionality. We can have a nice picture avatar to the left of the name and phone values. Additionally, we can add some buttons to the right of them to allow the user to text and call contacts, so let's update our contacts list component to show the avatar and the buttons. We can do that by using some of the list item's slots.
<IgrList>
<IgrListHeader>
<span>Contacts</span>
</IgrListHeader>
<IgrListItem>
<div slot="start">
<IgrAvatar src="https://static.infragistics.com/xplatform/images/avatars/8.jpg" shape="circle" />
</div>
<h2 slot="title">Terrance Orta</h2>
<span slot="subtitle">770-504-2217</span>
<div slot="end">
<IgrButton variant="outlined">
<span>Text</span>
</IgrButton>
</div>
<div slot="end">
<IgrButton variant="outlined">
<span>Call</span>
</IgrButton>
</div>
</IgrListItem>
<IgrListItem>
<div slot="start">
<IgrAvatar src="https://static.infragistics.com/xplatform/images/avatars/17.jpg" shape="circle" />
</div>
<h2 slot="title">Richard Mahoney</h2>
<span slot="subtitle">423-676-2869</span>
<div slot="end">
<IgrButton variant="outlined">
<span>Text</span>
</IgrButton>
</div>
<div slot="end">
<IgrButton variant="outlined">
<span>Call</span>
</IgrButton>
</div>
</IgrListItem>
<IgrListItem>
<div slot="start">
<IgrAvatar src="https://static.infragistics.com/xplatform/images/avatars/9.jpg" shape="circle" />
</div>
<h2 slot="title">Donna Price</h2>
<span slot="subtitle">859-496-2817</span>
<div slot="end">
<IgrButton variant="outlined">
<span>Text</span>
</IgrButton>
</div>
<div slot="end">
<IgrButton variant="outlined">
<span>Call</span>
</IgrButton>
</div>
</IgrListItem>
</IgrList>
The start slot is meant to be used for adding some kind of media before all other content of our list items. The target element, in our case the IgrAvatar component, will also be provided with a default position and spacing.
The end slot is meant to be used for list items that have some kind of action or metadata, represented, for example, by a switch, a button, a checkbox, etc. We will use IgrButton components.
Let's also allow the user to change the size of the list using the --ig-size CSS variable. We will add some radio buttons to display all size values. This way whenever one gets selected, we will change the size of the list.
<IgrRadioGroup alignment="horizontal" style={{marginBottom: '10px'}}>
<IgrRadio name="size" value="small" labelPosition="after" checked={this.state.listSize === "small" } onChange={this.onRadioChange}>
<span>Small</span>
</IgrRadio>
<IgrRadio name="size" value="medium" labelPosition="after" checked={this.state.listSize === "medium" } onChange={this.onRadioChange}>
<span>Medium</span>
</IgrRadio>
<IgrRadio name="size" value="large" labelPosition="after" checked={ this.state.listSize === "large" } onChange={this.onRadioChange}>
<span>Large</span>
</IgrRadio>
</IgrRadioGroup>
<IgrList size={this.state.listSize} />
public onRadioChange(e: any) {
if (e.detail.checked == true) {
this.setState({ listSize: e.detail.value });
}
}
El resultado de implementar el código anterior debería verse similar al siguiente:
Styling
The IgrList exposes several CSS parts, giving you full control over its style:
| Nombre | Descripción |
|---|---|
start |
El contenedor de inicio. |
end |
El contenedor final. |
content |
El encabezado y el contenedor de contenido personalizado. |
header |
El contenedor de títulos y subtítulos. |
title |
El contenedor de títulos. |
subtitle |
El contenedor de subtítulos. |
igc-list-header {
font-size: 20px;
font-weight: 700;
color: var(--ig-primary-700);
}
igc-list-item::part(title) {
font-size: 18px;
color: var(--ig-primary-600);
}
igc-list-item::part(subtitle) {
color: var(--ig-primary-300);
}
In this article we covered a lot of ground with the IgrList component. First, we created a simple list with text items. Then, we created a list of contact items and added functionality to them by using some additional Ignite UI for React components, like the IgrAvatar and IgrButton. Finally, we changed the component's appearance through the exposed CSS parts.