LocaleSelect

SelectMenuGitLab
Um Select para alternar entre locales.

Uso

O componente LocaleSelect estende o componente SelectMenu, então você pode passar qualquer propriedade como color, variant, size, etc.

Este componente foi feito para ser usado com o sistema de i18n. Saiba mais sobre ele no guia.
Este componente foi feito para ser usado com o sistema de i18n. Saiba mais sobre ele no guia.
As bandeiras são exibidas usando caracteres Unicode. Isso pode resultar em uma exibição diferente; por exemplo, o Microsoft Edge no Windows exibe o código ISO 3166-1 alpha-2 no lugar, já que nenhum ícone de bandeira acompanha as fontes do sistema operacional.

Locales

Use a prop locales com um array de locales de @nitro/ui/locale.

Você pode passar apenas os locales que precisa na sua aplicação:

<script setup lang="ts">
import { en, es, fr } from '@nitro/ui/locale'

const locale = ref('en')
</script>

<template>
  <NLocaleSelect v-model="locale" :locales="[en, es, fr]" />
</template>

Locale dinâmico

Você pode usá-lo com o Nuxt i18n:

<script setup lang="ts">
import * as locales from '@nitro/ui/locale'

const { locale, setLocale } = useI18n()
</script>

<template>
  <NLocaleSelect
    :model-value="locale"
    :locales="Object.values(locales)"
    @update:model-value="setLocale($event)"
  />
</template>

Você pode usá-lo com o Vue i18n:

<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import * as locales from '@nitro/ui/locale'

const { locale, setLocale } = useI18n()
</script>

<template>
  <NLocaleSelect
    :model-value="locale"
    :locales="Object.values(locales)"
    @update:model-value="setLocale($event)"
  />
</template>

API

Props

Prop Default Type
modelValuestring
locales Locale<any>[]
name string

The name of the field. Submitted with its owning form as part of a name/value pair.

avatar AvatarProps

Display an avatar on the left side.

size'md' "md" | "xs" | "sm" | "lg" | "xl"
loadingboolean

When true, the loading icon will be displayed.

iconany

Display an icon based on the leading and trailing props.

color'primary' "error" | "neutral" | "primary" | "secondary" | "accent" | "success" | "info" | "warning"
autofocusboolean
disabledboolean

When true, prevents the user from interacting with listbox

openboolean

The controlled open state of the Combobox. Can be binded with v-model:open.

defaultOpenboolean

The open state of the combobox when it is initially rendered.
Use when you do not need to control its open state.

resetSearchTermOnBlur`true`boolean

Whether to reset the searchTerm when the Combobox input blurred

resetSearchTermOnSelect`true`boolean

Whether to reset the searchTerm when the Combobox value is selected

resetModelValueOnClearboolean

When true the modelValue will be reset to null (or [] if multiple)

highlightOnHoverboolean

When true, hover over item will trigger highlight

by string | (a: Locale<any>[], b: Locale<any>[]): boolean

Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared.

defaultValue string

The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu.

multiple false

Whether multiple options can be selected or not.

requiredboolean
id string
placeholder string

The placeholder text when the select is empty.

searchInputfalseboolean | Omit<InputProps<AcceptableValue, ModelModifiers>, "modelValue" | "defaultValue">

Whether to display the search input or not. Can be an object to pass additional props to the input. { placeholder: 'Search...', variant: 'none' }

variant'outline' "outline" | "soft" | "subtle" | "ghost" | "none"
trailingIconappConfig.ui.icons.chevronDownany

The icon displayed to open the menu.

selectedIconappConfig.ui.icons.checkany

The icon displayed when an item is selected.

clearfalse false | false & Partial<Omit<ButtonProps, LinkPropsKeys>>

Display a clear button to reset the model value. Can be an object to pass additional props to the Button.

clearIconappConfig.ui.icons.closeany

The icon displayed in the clear button.

content{ side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' } ComboboxContentProps & Partial<EmitsToProps<DismissableLayerEmits>>

The content of the menu.

arrowfalseboolean | ComboboxArrowProps

Display an arrow alongside the menu. { rounded: true }

portaltrue string | false | true | HTMLElement

Render the menu in a portal.

virtualizefalseboolean | { overscan?: number ; estimateSize?: number | ((index: number) => number) | undefined; } | undefined

Enable virtualization for large lists. Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885).

valueKey'code' "code"

When items is an array of objects, select the field to use as the value instead of the object itself.

labelKey'name' "name" | "code" | "dir" | "messages"

When items is an array of objects, select the field to use as the label.

descriptionKey'description' "name" | "code" | "dir" | "messages"

When items is an array of objects, select the field to use as the description.

modelModifiers Omit<ModelModifiers, "lazy">
highlightboolean

Highlight the ring color like a focus state.

createItemfalseboolean | "always" | { position?: "top" | "bottom" ; when?: "empty" | "always" | undefined; } | undefined

Determines if custom user input that does not exist in options can be added.

filterFields[labelKey] string[]

Fields to filter items by.

ignoreFilterfalseboolean

When true, disable the default filters, useful for custom filtering (useAsyncData, useFetch, etc.).

autofocusDelay number
leadingboolean

When true, the icon will be displayed on the left side.

leadingIconany

Display an icon on the left side.

trailingboolean

When true, the icon will be displayed on the right side.

loadingIconappConfig.ui.icons.loadingany

The icon when the loading prop is true.

ui { base?: SlotClass; leading?: SlotClass; leadingIcon?: SlotClass; leadingAvatar?: SlotClass; leadingAvatarSize?: SlotClass; trailing?: SlotClass; trailingIcon?: SlotClass; value?: SlotClass; placeholder?: SlotClass; arrow?: SlotClass; content?: SlotClass; viewport?: SlotClass; group?: SlotClass; empty?: SlotClass; label?: SlotClass; separator?: SlotClass; item?: SlotClass; itemLeadingIcon?: SlotClass; itemLeadingAvatar?: SlotClass; itemLeadingAvatarSize?: SlotClass; itemLeadingChip?: SlotClass; itemLeadingChipSize?: SlotClass; itemTrailing?: SlotClass; itemTrailingIcon?: SlotClass; itemWrapper?: SlotClass; itemLabel?: SlotClass; itemDescription?: SlotClass; input?: SlotClass; focusScope?: SlotClass; trailingClear?: SlotClass; }

Changelog

No recent changes