LocaleSelect
Usage
The LocaleSelect component extends the SelectMenu component, so you can pass any property such as color, variant, size, etc.
Locales
Use the locales prop with an array of locales from @nuxt/ui/locale.
<script setup lang="ts">
import * as locales from '@nuxt/ui/locale'
const locale = ref('en')
</script>
<template>
<ULocaleSelect v-model="locale" :locales="Object.values(locales)" class="w-48" />
</template>
You can pass only the locales you need in your application:
<script setup lang="ts">
import { en, es, fr } from '@nuxt/ui/locale'
const locale = ref('en')
</script>
<template>
<ULocaleSelect v-model="locale" :locales="[en, es, fr]" />
</template>
Dynamic locale
You can use it with Nuxt i18n:
<script setup lang="ts">
import * as locales from '@nuxt/ui/locale'
const { locale, setLocale } = useI18n()
</script>
<template>
<ULocaleSelect
:model-value="locale"
:locales="Object.values(locales)"
@update:model-value="setLocale($event)"
/>
</template>
You can use it with Vue i18n:
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import * as locales from '@nuxt/ui/locale'
const { locale, setLocale } = useI18n()
</script>
<template>
<ULocaleSelect
:model-value="locale"
:locales="Object.values(locales)"
@update:model-value="setLocale($event)"
/>
</template>
API
Props
| Prop | Default | Type |
|---|---|---|
modelValue | string | |
locales | Locale<any>[] | |
name | stringThe name of the field. Submitted with its owning form as part of a name/value pair. | |
avatar | AvatarPropsDisplay an avatar on the left side.
| |
size | 'md' | "md" | "xs" | "sm" | "lg" | "xl" |
loading | boolean When | |
icon | anyDisplay an icon based on the | |
color | 'primary' | "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" |
autofocus | boolean | |
disabled | boolean When | |
open | boolean The controlled open state of the Combobox. Can be binded with with | |
defaultOpen | boolean The open state of the combobox when it is initially rendered. | |
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 |
resetModelValueOnClear | boolean When | |
highlightOnHover | boolean When | |
defaultValue | stringThe value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. | |
multiple | falseWhether multiple options can be selected or not. | |
required | boolean | |
id | string | |
placeholder | stringThe placeholder text when the select is empty. | |
searchInput | false | boolean | InputProps<AcceptableValue> Whether to display the search input or not.
Can be an object to pass additional props to the input.
|
variant | 'outline' | "outline" | "soft" | "subtle" | "ghost" | "none" |
trailingIcon | appConfig.ui.icons.chevronDown | anyThe icon displayed to open the menu. |
selectedIcon | appConfig.ui.icons.check | anyThe icon displayed when an item is selected. |
clear | false | boolean | Partial<Omit<ButtonProps, LinkPropsKeys>> Display a clear button to reset the model value. Can be an object to pass additional props to the Button. |
clearIcon | appConfig.ui.icons.close | anyThe icon displayed in the clear button. |
content | { side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' } | ComboboxContentProps & Partial<EmitsToProps<DismissableLayerEmits>>The content of the menu.
|
arrow | false | boolean | ComboboxArrowProps Display an arrow alongside the menu. |
portal | true | string | false | true | HTMLElementRender the menu in a portal. |
virtualize | false | boolean | { overscan?: number ; estimateSize?: number | ((index: number) => number) | undefined; } | undefinedEnable 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 |
labelKey | 'name' | "name" | "code" | "dir" | "messages" | `messages.${string}`When |
descriptionKey | 'description' | "name" | "code" | "dir" | "messages" | `messages.${string}`When |
modelModifiers | Omit<ModelModifiers<string>, "lazy"> | |
highlight | boolean Highlight the ring color like a focus state. | |
createItem | false | boolean | "always" | { position?: "top" | "bottom" ; when?: "empty" | "always" | undefined; } | undefinedDetermines if custom user input that does not exist in options can be added.
|
filterFields | [labelKey] | string[]Fields to filter items by. |
ignoreFilter | false | boolean When |
autofocusDelay | number | |
leading | boolean When | |
leadingIcon | anyDisplay an icon on the left side. | |
trailing | boolean When | |
loadingIcon | appConfig.ui.icons.loading | anyThe icon when the |
ui | { base?: ClassNameValue; leading?: ClassNameValue; leadingIcon?: ClassNameValue; leadingAvatar?: ClassNameValue; leadingAvatarSize?: ClassNameValue; trailing?: ClassNameValue; trailingIcon?: ClassNameValue; value?: ClassNameValue; placeholder?: ClassNameValue; arrow?: ClassNameValue; content?: ClassNameValue; viewport?: ClassNameValue; group?: ClassNameValue; empty?: ClassNameValue; label?: ClassNameValue; separator?: ClassNameValue; item?: ClassNameValue; itemLeadingIcon?: ClassNameValue; itemLeadingAvatar?: ClassNameValue; itemLeadingAvatarSize?: ClassNameValue; itemLeadingChip?: ClassNameValue; itemLeadingChipSize?: ClassNameValue; itemTrailing?: ClassNameValue; itemTrailingIcon?: ClassNameValue; itemWrapper?: ClassNameValue; itemLabel?: ClassNameValue; itemDescription?: ClassNameValue; input?: ClassNameValue; focusScope?: ClassNameValue; trailingClear?: ClassNameValue; } |