Visão geral Web Components ComboBox
Web Components ComboBox é um editor leve que permite aos usuários selecionar, filtrar e agrupar facilmente diferentes opções predefinidas em uma lista fornecida. O componente também suporta opções para navegação de teclado Web Components ComboBox, modelos para personalizar como os itens, cabeçalho e rodapé são exibidos.
O componente ComboBox do Ignite UI for Web Components fornece uma lista de opções das quais os usuários podem fazer uma seleção. Ele exibe todas as opções em uma lista virtualizada de itens, o que significa que o ComboBox pode mostrar simultaneamente milhares de registros, onde uma ou mais opções podem ser selecionadas. Além disso, o componente apresenta filtragem com diferenciação entre maiúsculas e minúsculas, agrupamento, vinculação de dados complexos e muito mais.
Web Components ComboBox Example
Getting Started with Web Components ComboBox
Primeiro, você precisa instalar o Ignite UI for Web Components executando o seguinte comando:
npm install igniteui-webcomponents
Antes de usar oIgcComboComponent componente, você precisa registrá-lo junto com seus componentes adicionais e o CSS necessário:
import { defineComponents, IgcComboComponent }
from 'igniteui-webcomponents';
import 'igniteui-webcomponents/themes/light/bootstrap.css';
defineComponents(IgcComboComponent);
Para uma introdução completa ao Ignite UI for Web Components, leia o tópico Comecando.
Warning
The IgcComboComponent component doesn't work with the standard <form> element. Use Form instead.
Em seguida, vincularemos uma matriz de objetos à fonte de dados combinada usada para criar a lista de opções.
interface City {
id: string;
name: string;
}
const cities: City[] = [
{ name: 'London', id: 'UK01' },
{ name: 'Sofia', id: 'BG01'},
{ name: 'New York', id: 'NY01'}
];
export class Sample {
private combo: IgcComboComponent<City>;
constructor() {
this.combo = document.getElementById('basic-combo') as IgcComboComponent<City>;
this.combo.data = cities;
}
}
<igc-combo id='basic-combo' display-key='name' value-key='id' value='["BG01"]'></igc-combo>
Data value and display properties
Quando o combo é vinculado a uma lista de dados complexos (ou seja, objetos), precisamos especificar uma propriedade que o controle usará para manipular a seleção de itens. O componente expõe as seguintes propriedades:
T-required, sevalueKeyfor omitido, isso deve ser definido como "object", caso contrário isso precisa corresponder ao tipo de propriedade devalueKey.
valueKey-Opcional, necessário para objeto de dados complexo - Determina qual campo da fonte de dados será usado para fazer seleções. SevalueKeyfor omitida, a API de seleção usará referências a objetos para selecionar itens.displayKey- Opcional, recomendado para objetos de dados complexos - Determina qual campo na fonte de dados é usado como valor de exibição. Se nenhum valor for especificado,displayKeya combinação usará o especificadovalueKey(se houver). No nosso caso, queremos que a combinação mostre onamede cada cidade e use oidcampo para seleção de itens e como valor subjacente para cada item. Portanto, fornecemos essas propriedades para as combinaçõesvalueKeyedisplayKeyrespectivamente.
Note
When the data source consists of primitive types (e.g. strings, numbers, etc.), do not specify a valueKey and/or displayKey.
Setting Value
O componente ComboBox expõe umvalue getter e um setter além de um atributo, que também é chamado de valor. Você pode usar o atributo valor para definir os itens selecionados na inicialização dos componentes.
Se quiser ler o valor, ou seja, a lista de itens atualmente selecionados, ou atualizar o valor, use respectivamente o value getter e o setter. O que recebe o valor retornará uma lista de todos os itens selecionados conforme representado por.valueKey Da mesma forma, se você quiser atualizar a lista de itens selecionados usando o valor, deve fornecer uma lista de itens por elevalueKey.
Exemplo:
const combo = document.getElementById('basic-combo') as IgcComboComponent<City>;
// Given the overview example from above this will return ['BG01']
console.log(combo.value);
// Change the selected items to New York and London
combo.value = ['NY01', 'UK01'];
Selection API
O componente combo expõe APIs que permitem alterar os itens selecionados no momento.
Além de selecionar itens da lista de opções por interação do usuário, você pode selecionar itens programaticamente. Isso é feito pelosselect métodos e (edeselect methods). Você pode passar uma variedade de itens para ambos os métodos. Se os métodos forem chamados sem argumentos, todos os itens serão selecionados/desselecionados dependendo de qual método for chamado. Se você especificou avalueKey para seu componente de combo, então deve passar as chaves de valor dos itens que gostaria de selecionar/desselecionar:
Selecione/desmarque alguns itens
// Select/deselect items by their IDs as valueKey is set to 'id'
combo.select(['BG01', 'BG02', 'BG03', 'BG04']);
combo.deselect(['BG01', 'BG02', 'BG03', 'BG04']);
Selecione/desmarque todos os itens
// Select/deselect all items
combo.select();
combo.deselect();
Se avalueKey propriedade for omitida, você terá que listar os itens que deseja selecionar/desmarcar como referências a objetos:
// Select/deselect values by object references when no valueKey is provided
combo.select([cities[1], cities[5]]);
combo.deselect([cities[1], cities[5]]);
Validation
O componente Ignite UI for Web Components Combo suporta a maioria dasIgcInputComponent propriedades, comorequired,disabled,autofocus,invalid, etc. O componente também expõe dois métodos vinculados à sua validação:
reportValidity- verifica a validade e retorna verdadeiro se o componente satisfaz as restrições de validação.checkValidity- um wrapper ao redor do reportValidity para cumprir a API nativa de entrada.
Keyboard Navigation
Quando o componente combo está em foco e a lista de opções não está visível:
- Abra a lista de opções usando as teclas Baixo/Alt + Baixo.
Quando o componente combo está em foco e a lista de opções está visível:
- Usar a tecla Para baixo ativará o próximo item na lista.
- Usar a tecla Up ativará o item anterior na lista. Se o primeiro item já estiver ativo, ele focará a entrada.
- Usar as HOME teclas ou END ativará o primeiro ou o último item da lista.
- Usando a SPACE chave selecionará o item ativo.
- Usando a ENTER chave, selecionará o item ativo e fechará a lista de opções.
- Usar as ESC teclas ou TAB/SHIFT + TAB fechará a lista de opções.
Styling
Você pode alterar a aparência doIgcComboComponent componente e seus itens usando as partes CSS expostas listadas abaixo:
| Nome da peça | Descrição |
|---|---|
label |
O rótulo de texto encapsulado. |
input |
O campo de entrada principal. |
native-input |
A entrada nativa do campo de entrada principal. |
prefix |
O wrapper de prefixo. |
suffix |
O wrapper de sufixo. |
toggle-icon |
O wrapper do ícone de alternância. |
clear-icon |
O wrapper de ícone transparente. |
case-icon |
Um wrapper de ícone de caso que renderiza conteúdo dentro do sufixo da entrada do filtro. |
helper-text |
O wrapper de texto auxiliar. |
search-input |
O campo de entrada de pesquisa. |
list-wrapper |
A lista de opções do wrapper. |
list |
A caixa de lista de opções. |
item |
Representa cada item na lista de opções. |
group-header |
Representa cada cabeçalho na lista de opções. |
active |
Acrescentado à lista de peças do item quando o item está ativo. |
selected |
Acrescentado à lista de peças do item quando o item é selecionado. |
checkbox |
Representa cada caixa de seleção de cada item da lista. |
checkbox-indicator |
Representa o indicador de caixa de seleção de cada item da lista. |
checked |
Acrescentado à lista de peças da caixa de seleção quando a caixa de seleção está marcada. |
header |
O contêiner que contém o conteúdo do cabeçalho. |
footer |
O contêiner que contém o conteúdo do rodapé. |
empty |
O recipiente que contém o conteúdo vazio. |
Usando as partes CSS, temos controle total sobre o estilo Combo.
igc-combo::part(search-input) {
background-color: var(--ig-gray-100);
border-radius: 2px;
}
igc-combo::part(input) {
background-color: var(--ig-gray-100);
}
igc-combo::part(prefix) {
background-color: var(--ig-secondary-50);
color: var(--ig-primary-500);
}
igc-combo::part(toggle-icon) {
color: var(--ig-primary-500);
}