Skip to content

MultiSelect

Visão geral

Permite o usuário pesquisar e selecionar uma opção ou mais em uma lista.

Selecione
Selecione
Clique para exibir o código
vue
<script setup>
import { ref } from 'vue';
import { LxMultiSelect } from '@lde/lxcomponents';

const objSelecionado = ref();
const tecnologias = ref([
	{ Nome: 'Vue.js', Id: 'vu' },
	{ Nome: 'Javascript', Id: 'js' },
	{ Nome: 'Open Source', Id: 'os' },
	{ Nome: 'CSS', Id: 'css' },
	{ Nome: '.NET', Id: 'net' },
	{ Nome: 'HTML', Id: 'ht' }
]);

const statusSelecionado = ref();
const status = ref(['Análise', 'Processando', 'Finalizado', 'Cancelado']);
</script>

<template>
	<div class="row">
		<div class="col-6">
			<LxMultiSelect
				v-model="objSelecionado"
				label="Exemplo MultiSelect (objetos)"
				:options="tecnologias"
				:options-label="({ Nome, Id }) => `${Nome} (Cód: ${Id})`"
				options-key="Id"
			/>
		</div>

		<div class="col-6">
			<LxMultiSelect v-model="statusSelecionado" label="Exemplo MultiSelect (valores)" :options="status" />
		</div>
	</div>
</template>

Variações

VariaçãoDescrição
MultiSelectPermite o usuário pesquisar e selecionar uma opção ou mais em uma lista.
ComboBoxPermite o usuário pesquisar e selecionar uma opção em uma lista. Ele também permite o usuário criar uma nova opção

Propriedades

NomeDescriçãoTipoPadrão
id⚠️ obr Define o identificado único(id) que o input irá receberString-
disabledDefine se o campo está desabilitado
labelDefine a label do inputString-
placeholderDefine o placeholder (texto quando não se há nenhuma opção selecionada) do inputString"Selecione"
error-textMensagem de erro quando o campo é inválidoString-
help-textDefine uma mensagem abaixo do campo para fornecer uma ajuda adicionalString-
options*⚠️ obr Define quais serão as opções disponíveis para seleção. Quando for objetos, defina também as propriedades track-by e options-labelArray-
options-keyDefine qual a chave unica em uma lista de objetosString-
options-labelDefine qual a propriedade do Objeto que será exibido no combo. Também pode ser passada uma Function em casos de label customizado (ex: :customLabel="({ id, descricao }) => ``${id} - ${descricao}`)String Function-
group-labelDefine qual a propriedade do objeto será exibida em caso de agrupamento de opçõesString-
group-valuesDefine qual a propriedade do objeto será exibida como 'options' do agrupamentoString-
mega-optionsHabilita a opção descrica no ComboBox.Booleanfalse

Playground

Selecione
options: [ { "Nome": "Vue.js", "Id": "vu" }, { "Nome": "Javascript", "Id": "js" }, { "Nome": "Open Source", "Id": "os" }, { "Nome": "CSS", "Id": "css" }, { "Nome": ".NET", "Id": "net" }, { "Nome": "HTML", "Id": "ht" } ]
modelValue:
NomeControle
Selecione
options: [ { "Tipo": "Front-end", "Tecs": [ { "Nome": "Vue.js", "Id": "vu" }, { "Nome": "Javascript", "Id": "js" }, { "Nome": "CSS", "Id": "css" }, { "Nome": "HTML", "Id": "ht" } ] }, { "Tipo": "Back-end", "Tecs": [ { "Nome": ".NET", "Id": "net" }, { "Nome": "Java", "Id": "java" } ] } ]
modelValue:
Clique para exibir o código
vue
<script setup>
import { ref } from 'vue';
import { LxMultiSelect } from '@lde/lxcomponents';

const objSelecionado = ref();
const tecnologias = ref([
	{ Nome: 'Vue.js', Id: 'vu' },
	{ Nome: 'Javascript', Id: 'js' },
	{ Nome: 'Open Source', Id: 'os' },
	{ Nome: 'CSS', Id: 'css' },
	{ Nome: '.NET', Id: 'net' },
	{ Nome: 'HTML', Id: 'ht' }
]);

const objSelecionadoGrupo = ref();
const stacks = ref([
	{
		Tipo: 'Front-end',
		Tecs: [
			{ Nome: 'Vue.js', Id: 'vu' },
			{ Nome: 'Javascript', Id: 'js' },
			{ Nome: 'CSS', Id: 'css' },
			{ Nome: 'HTML', Id: 'ht' }
		]
	},
	{
		Tipo: 'Back-end',
		Tecs: [
			{ Nome: '.NET', Id: 'net' },
			{ Nome: 'Java', Id: 'java' }
		]
	}
]);

const disabled = ref(false);
const errorText = ref('');
const helpText = ref('');
const placeholder = ref('Selecione');
const label = ref('Combo exemplo');
</script>

<template>
	<div class="row">
		<div class="col-12">
			<LxMultiSelect
				v-model="objSelecionado"
				label="Exemplo MultiSelect (objetos)"
				options-key="Id"
				:options="tecnologias"
				:options-label="({ Nome, Id }) => `${Nome} (Cód: ${Id})`"
				:error-text="errorText"
				:help-text="helpText"
				:placeholder="placeholder"
				:disabled="disabled"
			/>
		</div>
	</div>

	<div class="row">
		<div class="col-12">
			<strong>options: </strong>
			<small>{{ tecnologias }}</small>
		</div>
	</div>

	<div class="row">
		<div class="col-12">
			<strong>modelValue: </strong>
			<small>{{ objSelecionado }}</small>
		</div>
	</div>

	<!-- playground controls -->
	<table style="max-height: 50vh">
		<thead>
			<tr>
				<th style="width: 140px">Nome</th>
				<th class="">Controle</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td>
					<label class="form-label m-0"> disabled </label>
				</td>
				<td>
					<input v-model="disabled" class="form-check-input" type="checkbox" />
				</td>
			</tr>
			<tr>
				<td>
					<label class="form-label m-0">label</label>
				</td>
				<td>
					<input v-model="label" type="text" class="form-control" />
				</td>
			</tr>
			<tr>
				<td>
					<label class="form-label m-0">error-text</label>
				</td>
				<td>
					<input v-model="errorText" type="text" class="form-control" />
				</td>
			</tr>
			<tr>
				<td>
					<label class="form-label m-0">help-text</label>
				</td>
				<td>
					<input v-model="helpText" type="text" class="form-control" />
				</td>
			</tr>
			<tr>
				<td>
					<label class="form-label m-0">placeholder</label>
				</td>
				<td>
					<input v-model="placeholder" type="text" class="form-control" />
				</td>
			</tr>
		</tbody>
	</table>

	<div class="row">
		<div class="col-12">
			<LxMultiSelect
				v-model="objSelecionadoGrupo"
				label="Exemplo MultiSelect (grupos)"
				options-key="Id"
				group-label="Tipo"
				group-values="Tecs"
				:options="stacks"
				:options-label="({ Nome, Id }) => `${Nome} (Cód: ${Id})`"
			/>
		</div>
	</div>

	<div class="row">
		<div class="col-12">
			<strong>options: </strong>
			<small>{{ stacks }}</small>
		</div>
	</div>

	<div class="row">
		<div class="col-12">
			<strong>modelValue: </strong>
			<small>{{ objSelecionadoGrupo }}</small>
		</div>
	</div>
</template>