@nuxt/ui 4.11.1 → 4.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +3 -3
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +2 -2
  4. package/dist/runtime/components/Accordion.d.vue.ts +1 -1
  5. package/dist/runtime/components/Accordion.vue.d.ts +1 -1
  6. package/dist/runtime/components/Breadcrumb.d.vue.ts +1 -1
  7. package/dist/runtime/components/Breadcrumb.vue.d.ts +1 -1
  8. package/dist/runtime/components/Carousel.d.vue.ts +1 -1
  9. package/dist/runtime/components/Carousel.vue.d.ts +1 -1
  10. package/dist/runtime/components/CheckboxGroup.d.vue.ts +1 -1
  11. package/dist/runtime/components/CheckboxGroup.vue.d.ts +1 -1
  12. package/dist/runtime/components/CommandPalette.d.vue.ts +1 -1
  13. package/dist/runtime/components/CommandPalette.vue.d.ts +1 -1
  14. package/dist/runtime/components/ContextMenu.d.vue.ts +1 -1
  15. package/dist/runtime/components/ContextMenu.vue.d.ts +1 -1
  16. package/dist/runtime/components/DashboardNavbar.vue +1 -1
  17. package/dist/runtime/components/DropdownMenu.d.vue.ts +1 -1
  18. package/dist/runtime/components/DropdownMenu.vue.d.ts +1 -1
  19. package/dist/runtime/components/FooterColumns.d.vue.ts +1 -1
  20. package/dist/runtime/components/FooterColumns.vue.d.ts +1 -1
  21. package/dist/runtime/components/Form.vue +1 -1
  22. package/dist/runtime/components/Input.vue +5 -5
  23. package/dist/runtime/components/InputDate.vue +12 -6
  24. package/dist/runtime/components/InputMenu.d.vue.ts +1 -1
  25. package/dist/runtime/components/InputMenu.vue +18 -7
  26. package/dist/runtime/components/InputMenu.vue.d.ts +1 -1
  27. package/dist/runtime/components/InputTime.vue +12 -6
  28. package/dist/runtime/components/LinkBase.vue +3 -1
  29. package/dist/runtime/components/Listbox.d.vue.ts +1 -1
  30. package/dist/runtime/components/Listbox.vue.d.ts +1 -1
  31. package/dist/runtime/components/NavigationMenu.d.vue.ts +1 -1
  32. package/dist/runtime/components/NavigationMenu.vue.d.ts +1 -1
  33. package/dist/runtime/components/PageAnchors.d.vue.ts +1 -1
  34. package/dist/runtime/components/PageAnchors.vue.d.ts +1 -1
  35. package/dist/runtime/components/PageLinks.d.vue.ts +1 -1
  36. package/dist/runtime/components/PageLinks.vue.d.ts +1 -1
  37. package/dist/runtime/components/PinInput.d.vue.ts +3 -1
  38. package/dist/runtime/components/PinInput.vue +15 -7
  39. package/dist/runtime/components/PinInput.vue.d.ts +3 -1
  40. package/dist/runtime/components/ProgressGroup.d.vue.ts +1 -1
  41. package/dist/runtime/components/ProgressGroup.vue.d.ts +1 -1
  42. package/dist/runtime/components/RadioGroup.d.vue.ts +1 -1
  43. package/dist/runtime/components/RadioGroup.vue.d.ts +1 -1
  44. package/dist/runtime/components/Select.d.vue.ts +1 -1
  45. package/dist/runtime/components/Select.vue.d.ts +1 -1
  46. package/dist/runtime/components/SelectMenu.d.vue.ts +1 -1
  47. package/dist/runtime/components/SelectMenu.vue +15 -2
  48. package/dist/runtime/components/SelectMenu.vue.d.ts +1 -1
  49. package/dist/runtime/components/Splitter.d.vue.ts +1 -1
  50. package/dist/runtime/components/Splitter.vue.d.ts +1 -1
  51. package/dist/runtime/components/Stepper.d.vue.ts +1 -1
  52. package/dist/runtime/components/Stepper.vue.d.ts +1 -1
  53. package/dist/runtime/components/Table.vue +24 -2
  54. package/dist/runtime/components/Tabs.d.vue.ts +1 -1
  55. package/dist/runtime/components/Tabs.vue.d.ts +1 -1
  56. package/dist/runtime/components/Textarea.vue +5 -5
  57. package/dist/runtime/components/Timeline.d.vue.ts +1 -1
  58. package/dist/runtime/components/Timeline.vue.d.ts +1 -1
  59. package/dist/runtime/components/Toaster.vue +1 -1
  60. package/dist/runtime/components/Tree.d.vue.ts +1 -1
  61. package/dist/runtime/components/Tree.vue +1 -1
  62. package/dist/runtime/components/Tree.vue.d.ts +1 -1
  63. package/dist/runtime/components/content/ContentNavigation.d.vue.ts +1 -1
  64. package/dist/runtime/components/content/ContentNavigation.vue.d.ts +1 -1
  65. package/dist/runtime/components/content/ContentSurround.d.vue.ts +1 -1
  66. package/dist/runtime/components/content/ContentSurround.vue.d.ts +1 -1
  67. package/dist/runtime/components/content/ContentToc.d.vue.ts +1 -1
  68. package/dist/runtime/components/content/ContentToc.vue.d.ts +1 -1
  69. package/dist/runtime/composables/useForwardProps.js +2 -2
  70. package/dist/runtime/composables/useResizable.js +1 -1
  71. package/dist/runtime/utils/virtualizer.d.ts +1 -1
  72. package/dist/runtime/utils/virtualizer.js +9 -11
  73. package/dist/runtime/vue/overrides/inertia/LinkBase.vue +3 -1
  74. package/dist/shared/{ui.DCJ9twx8.mjs → ui.oNygBd3N.mjs} +28 -1
  75. package/dist/unplugin.d.mts +2 -1
  76. package/dist/unplugin.mjs +22 -10
  77. package/dist/vite.mjs +1 -1
  78. package/package.json +55 -59
  79. package/cli/commands/make/component.mjs +0 -86
  80. package/cli/commands/make/index.mjs +0 -14
  81. package/cli/commands/make/locale.mjs +0 -93
  82. package/cli/index.mjs +0 -15
  83. package/cli/package.json +0 -13
  84. package/cli/templates.mjs +0 -256
  85. package/cli/utils.mjs +0 -50
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <picture>
2
- <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/91ceab67-89ce-4ef4-8678-4402a92baca5">
3
- <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/51526d6d-e5ec-41b4-aa37-242dec1cdb27">
4
- <img alt="Nuxt UI" width="830" height="436" src="https://github.com/user-attachments/assets/51526d6d-e5ec-41b4-aa37-242dec1cdb27">
2
+ <source media="(prefers-color-scheme: dark)" srcset=".github/assets/banner-dark.png">
3
+ <source media="(prefers-color-scheme: light)" srcset=".github/assets/banner-light.png">
4
+ <img alt="Nuxt UI" width="900" height="472" src=".github/assets/banner-light.png">
5
5
  </picture>
6
6
 
7
7
  # Nuxt UI
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxt/ui",
3
- "version": "4.11.1",
3
+ "version": "4.11.2",
4
4
  "docs": "https://ui.nuxt.com/docs/getting-started/installation/nuxt",
5
5
  "configKey": "ui",
6
6
  "compatibility": {
package/dist/module.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { defu } from 'defu';
2
2
  import { defineNuxtModule, createResolver, addPlugin, hasNuxtModule, addComponentsDir, addImportsDir, addImports } from '@nuxt/kit';
3
- import { d as defaultOptions, r as resolveColors, c as getDefaultConfig, g as getClientBundleIcons, f as publicComposables, a as addTemplates } from './shared/ui.DCJ9twx8.mjs';
3
+ import { d as defaultOptions, r as resolveColors, c as getDefaultConfig, g as getClientBundleIcons, f as publicComposables, a as addTemplates } from './shared/ui.oNygBd3N.mjs';
4
4
  import '../dist/runtime/utils/index.js';
5
5
  import 'node:url';
6
6
  import 'scule';
@@ -14,7 +14,7 @@ import 'tinyglobby';
14
14
  import 'mlly';
15
15
 
16
16
  const name = "@nuxt/ui";
17
- const version = "4.11.1";
17
+ const version = "4.11.2";
18
18
 
19
19
  const module$1 = defineNuxtModule({
20
20
  meta: {
@@ -27,7 +27,7 @@ export interface AccordionItem {
27
27
  value?: string;
28
28
  disabled?: boolean;
29
29
  class?: any;
30
- ui?: Pick<Accordion['slots'], 'item' | 'header' | 'trigger' | 'leadingIcon' | 'label' | 'trailingIcon' | 'content' | 'body'>;
30
+ ui?: Partial<Pick<Accordion['slots'], 'item' | 'header' | 'trigger' | 'leadingIcon' | 'label' | 'trailingIcon' | 'content' | 'body'>>;
31
31
  [key: string]: any;
32
32
  }
33
33
  export interface AccordionProps<T extends AccordionItem = AccordionItem> extends Pick<AccordionRootProps, 'collapsible' | 'defaultValue' | 'modelValue' | 'type' | 'disabled' | 'unmountOnHide'> {
@@ -27,7 +27,7 @@ export interface AccordionItem {
27
27
  value?: string;
28
28
  disabled?: boolean;
29
29
  class?: any;
30
- ui?: Pick<Accordion['slots'], 'item' | 'header' | 'trigger' | 'leadingIcon' | 'label' | 'trailingIcon' | 'content' | 'body'>;
30
+ ui?: Partial<Pick<Accordion['slots'], 'item' | 'header' | 'trigger' | 'leadingIcon' | 'label' | 'trailingIcon' | 'content' | 'body'>>;
31
31
  [key: string]: any;
32
32
  }
33
33
  export interface AccordionProps<T extends AccordionItem = AccordionItem> extends Pick<AccordionRootProps, 'collapsible' | 'defaultValue' | 'modelValue' | 'type' | 'disabled' | 'unmountOnHide'> {
@@ -16,7 +16,7 @@ export interface BreadcrumbItem extends Omit<LinkProps, 'raw' | 'custom'> {
16
16
  avatar?: AvatarProps;
17
17
  slot?: string;
18
18
  class?: any;
19
- ui?: Pick<Breadcrumb['slots'], 'item' | 'link' | 'linkLeadingIcon' | 'linkLeadingAvatar' | 'linkLabel' | 'separator' | 'separatorIcon'>;
19
+ ui?: Partial<Pick<Breadcrumb['slots'], 'item' | 'link' | 'linkLeadingIcon' | 'linkLeadingAvatar' | 'linkLabel' | 'separator' | 'separatorIcon'>>;
20
20
  [key: string]: any;
21
21
  }
22
22
  export interface BreadcrumbProps<T extends BreadcrumbItem = BreadcrumbItem> {
@@ -16,7 +16,7 @@ export interface BreadcrumbItem extends Omit<LinkProps, 'raw' | 'custom'> {
16
16
  avatar?: AvatarProps;
17
17
  slot?: string;
18
18
  class?: any;
19
- ui?: Pick<Breadcrumb['slots'], 'item' | 'link' | 'linkLeadingIcon' | 'linkLeadingAvatar' | 'linkLabel' | 'separator' | 'separatorIcon'>;
19
+ ui?: Partial<Pick<Breadcrumb['slots'], 'item' | 'link' | 'linkLeadingIcon' | 'linkLeadingAvatar' | 'linkLabel' | 'separator' | 'separatorIcon'>>;
20
20
  [key: string]: any;
21
21
  }
22
22
  export interface BreadcrumbProps<T extends BreadcrumbItem = BreadcrumbItem> {
@@ -17,7 +17,7 @@ type Carousel = ComponentConfig<typeof theme, AppConfig, 'carousel'>;
17
17
  export type CarouselValue = AcceptableValue;
18
18
  export type CarouselItem = CarouselValue | {
19
19
  class?: any;
20
- ui?: Pick<Carousel['slots'], 'item'>;
20
+ ui?: Partial<Pick<Carousel['slots'], 'item'>>;
21
21
  [key: string]: any;
22
22
  };
23
23
  export interface CarouselProps<T extends CarouselItem = CarouselItem> extends Omit<EmblaOptionsType, 'axis' | 'container' | 'slides' | 'direction'> {
@@ -17,7 +17,7 @@ type Carousel = ComponentConfig<typeof theme, AppConfig, 'carousel'>;
17
17
  export type CarouselValue = AcceptableValue;
18
18
  export type CarouselItem = CarouselValue | {
19
19
  class?: any;
20
- ui?: Pick<Carousel['slots'], 'item'>;
20
+ ui?: Partial<Pick<Carousel['slots'], 'item'>>;
21
21
  [key: string]: any;
22
22
  };
23
23
  export interface CarouselProps<T extends CarouselItem = CarouselItem> extends Omit<EmblaOptionsType, 'axis' | 'container' | 'slides' | 'direction'> {
@@ -19,7 +19,7 @@ export type CheckboxGroupItem = CheckboxGroupValue | {
19
19
  */
20
20
  icon?: IconProps['name'];
21
21
  class?: any;
22
- ui?: Pick<CheckboxGroup['slots'], 'item'> & Omit<Required<CheckboxProps>['ui'], 'root'>;
22
+ ui?: Partial<Pick<CheckboxGroup['slots'], 'item'>> & Omit<Required<CheckboxProps>['ui'], 'root'>;
23
23
  [key: string]: any;
24
24
  };
25
25
  export interface CheckboxGroupProps<T extends CheckboxGroupItem[] = CheckboxGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<CheckboxGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'>, Pick<CheckboxProps, 'color' | 'highlight' | 'indicator' | 'icon'> {
@@ -19,7 +19,7 @@ export type CheckboxGroupItem = CheckboxGroupValue | {
19
19
  */
20
20
  icon?: IconProps['name'];
21
21
  class?: any;
22
- ui?: Pick<CheckboxGroup['slots'], 'item'> & Omit<Required<CheckboxProps>['ui'], 'root'>;
22
+ ui?: Partial<Pick<CheckboxGroup['slots'], 'item'>> & Omit<Required<CheckboxProps>['ui'], 'root'>;
23
23
  [key: string]: any;
24
24
  };
25
25
  export interface CheckboxGroupProps<T extends CheckboxGroupItem[] = CheckboxGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<CheckboxGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'>, Pick<CheckboxProps, 'color' | 'highlight' | 'indicator' | 'icon'> {
@@ -37,7 +37,7 @@ export interface CommandPaletteItem extends Omit<LinkProps, 'type' | 'raw' | 'cu
37
37
  children?: CommandPaletteItem[];
38
38
  onSelect?: (e: Event) => void;
39
39
  class?: any;
40
- ui?: Pick<CommandPalette['slots'], 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelPrefix' | 'itemLabelBase' | 'itemLabelSuffix' | 'itemTrailing' | 'itemTrailingKbds' | 'itemTrailingKbdsSize' | 'itemTrailingHighlightedIcon' | 'itemTrailingIcon'>;
40
+ ui?: Partial<Pick<CommandPalette['slots'], 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelPrefix' | 'itemLabelBase' | 'itemLabelSuffix' | 'itemTrailing' | 'itemTrailingKbds' | 'itemTrailingKbdsSize' | 'itemTrailingHighlightedIcon' | 'itemTrailingIcon'>>;
41
41
  [key: string]: any;
42
42
  }
43
43
  export interface CommandPaletteGroup<T extends CommandPaletteItem = CommandPaletteItem> {
@@ -37,7 +37,7 @@ export interface CommandPaletteItem extends Omit<LinkProps, 'type' | 'raw' | 'cu
37
37
  children?: CommandPaletteItem[];
38
38
  onSelect?: (e: Event) => void;
39
39
  class?: any;
40
- ui?: Pick<CommandPalette['slots'], 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelPrefix' | 'itemLabelBase' | 'itemLabelSuffix' | 'itemTrailing' | 'itemTrailingKbds' | 'itemTrailingKbdsSize' | 'itemTrailingHighlightedIcon' | 'itemTrailingIcon'>;
40
+ ui?: Partial<Pick<CommandPalette['slots'], 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelPrefix' | 'itemLabelBase' | 'itemLabelSuffix' | 'itemTrailing' | 'itemTrailingKbds' | 'itemTrailingKbdsSize' | 'itemTrailingHighlightedIcon' | 'itemTrailingIcon'>>;
41
41
  [key: string]: any;
42
42
  }
43
43
  export interface CommandPaletteGroup<T extends CommandPaletteItem = CommandPaletteItem> {
@@ -37,7 +37,7 @@ export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custo
37
37
  onSelect?: (e: Event) => void;
38
38
  onUpdateChecked?: (checked: boolean) => void;
39
39
  class?: any;
40
- ui?: Pick<ContextMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
40
+ ui?: Partial<Pick<ContextMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>>;
41
41
  [key: string]: any;
42
42
  }
43
43
  export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>> extends Omit<ContextMenuRootProps, 'dir'> {
@@ -37,7 +37,7 @@ export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custo
37
37
  onSelect?: (e: Event) => void;
38
38
  onUpdateChecked?: (checked: boolean) => void;
39
39
  class?: any;
40
- ui?: Pick<ContextMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
40
+ ui?: Partial<Pick<ContextMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>>;
41
41
  [key: string]: any;
42
42
  }
43
43
  export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>> extends Omit<ContextMenuRootProps, 'dir'> {
@@ -52,7 +52,7 @@ const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.dashboardNavbar |
52
52
  <UIcon v-if="props.icon" :name="props.icon" data-slot="icon" :class="ui.icon({ class: props.ui?.icon })" />
53
53
  </slot>
54
54
 
55
- <h1 data-slot="title" :class="ui.title({ class: props.ui?.title })">
55
+ <h1 v-if="props.title || !!slots.title" data-slot="title" :class="ui.title({ class: props.ui?.title })">
56
56
  <slot name="title">
57
57
  {{ props.title }}
58
58
  </slot>
@@ -41,7 +41,7 @@ export interface DropdownMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'cust
41
41
  onSelect?: (e: Event) => void;
42
42
  onUpdateChecked?: (checked: boolean) => void;
43
43
  class?: any;
44
- ui?: Pick<DropdownMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
44
+ ui?: Partial<Pick<DropdownMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>>;
45
45
  [key: string]: any;
46
46
  }
47
47
  export interface DropdownMenuProps<T extends ArrayOrNested<DropdownMenuItem> = ArrayOrNested<DropdownMenuItem>> extends Omit<DropdownMenuRootProps, 'dir'> {
@@ -41,7 +41,7 @@ export interface DropdownMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'cust
41
41
  onSelect?: (e: Event) => void;
42
42
  onUpdateChecked?: (checked: boolean) => void;
43
43
  class?: any;
44
- ui?: Pick<DropdownMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
44
+ ui?: Partial<Pick<DropdownMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>>;
45
45
  [key: string]: any;
46
46
  }
47
47
  export interface DropdownMenuProps<T extends ArrayOrNested<DropdownMenuItem> = ArrayOrNested<DropdownMenuItem>> extends Omit<DropdownMenuRootProps, 'dir'> {
@@ -12,7 +12,7 @@ export interface FooterColumnLink extends Omit<LinkProps, 'custom'> {
12
12
  */
13
13
  icon?: IconProps['name'];
14
14
  class?: any;
15
- ui?: Pick<FooterColumns['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>;
15
+ ui?: Partial<Pick<FooterColumns['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>>;
16
16
  }
17
17
  export interface FooterColumn<T extends FooterColumnLink = FooterColumnLink> {
18
18
  label: string;
@@ -12,7 +12,7 @@ export interface FooterColumnLink extends Omit<LinkProps, 'custom'> {
12
12
  */
13
13
  icon?: IconProps['name'];
14
14
  class?: any;
15
- ui?: Pick<FooterColumns['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>;
15
+ ui?: Partial<Pick<FooterColumns['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>>;
16
16
  }
17
17
  export interface FooterColumn<T extends FooterColumnLink = FooterColumnLink> {
18
18
  label: string;
@@ -273,7 +273,7 @@ const api = {
273
273
  ) : [];
274
274
  const nestedErrors = [];
275
275
  for (const form of nestedForms.value.values()) {
276
- if (matchesTarget(name, form.name)) form.api.clear();
276
+ if (matchesTarget(name, form.name)) form.api.clear(name instanceof RegExp ? void 0 : getNestedTarget(name, form.name || ""));
277
277
  nestedErrors.push(...getFormErrors(form));
278
278
  }
279
279
  errors.value = [...localErrors, ...nestedErrors];
@@ -11,7 +11,7 @@ import { useComponentProps } from "../composables/useComponentProps";
11
11
  import { useFieldGroup } from "../composables/useFieldGroup";
12
12
  import { useComponentIcons } from "../composables/useComponentIcons";
13
13
  import { useFormField } from "../composables/useFormField";
14
- import { looseToNumber } from "../utils";
14
+ import { isEmpty, looseToNumber } from "../utils";
15
15
  import { tv } from "../utils/tv";
16
16
  import UIcon from "./Icon.vue";
17
17
  import UAvatar from "./Avatar.vue";
@@ -78,11 +78,11 @@ function updateInput(value) {
78
78
  if (props.modelModifiers?.number || props.type === "number") {
79
79
  value = looseToNumber(value);
80
80
  }
81
- if (props.modelModifiers?.nullable) {
82
- value ||= null;
81
+ if (props.modelModifiers?.nullable && isEmpty(value)) {
82
+ value = null;
83
83
  }
84
- if (props.modelModifiers?.optional && !props.modelModifiers?.nullable && value !== null) {
85
- value ||= void 0;
84
+ if (props.modelModifiers?.optional && !props.modelModifiers?.nullable && value !== null && isEmpty(value)) {
85
+ value = void 0;
86
86
  }
87
87
  modelValue.value = value;
88
88
  emitFormInput();
@@ -90,13 +90,19 @@ function onUpdate(value) {
90
90
  emitFormChange();
91
91
  emitFormInput();
92
92
  }
93
- function onBlur(event) {
94
- emitFormBlur();
93
+ function onFocusOut(event) {
94
+ if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) {
95
+ return;
96
+ }
95
97
  emits("blur", event);
98
+ emitFormBlur();
96
99
  }
97
- function onFocus(event) {
98
- emitFormFocus();
100
+ function onFocusIn(event) {
101
+ if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) {
102
+ return;
103
+ }
99
104
  emits("focus", event);
105
+ emitFormFocus();
100
106
  }
101
107
  function autoFocus() {
102
108
  if (props.autofocus) {
@@ -143,8 +149,8 @@ defineExpose({
143
149
  :disabled="disabled"
144
150
  :class="ui.base({ class: [props.ui?.base, props.class] })"
145
151
  @update:model-value="onUpdate"
146
- @blur="onBlur"
147
- @focus="onFocus"
152
+ @focusout="onFocusOut"
153
+ @focusin="onFocusIn"
148
154
  >
149
155
  <template v-if="Array.isArray(segments)">
150
156
  <ReuseSegmentsTemplate :segments="segments" />
@@ -31,7 +31,7 @@ export type InputMenuItem = InputMenuValue | {
31
31
  disabled?: boolean;
32
32
  onSelect?: (e: Event) => void;
33
33
  class?: any;
34
- ui?: Pick<InputMenu['slots'], 'tagsItem' | 'tagsItemText' | 'tagsItemDelete' | 'tagsItemDeleteIcon' | 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
34
+ ui?: Partial<Pick<InputMenu['slots'], 'tagsItem' | 'tagsItemText' | 'tagsItemDelete' | 'tagsItemDeleteIcon' | 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>>;
35
35
  [key: string]: any;
36
36
  };
37
37
  type ExcludeItem = {
@@ -89,12 +89,13 @@ const { t } = useLocale();
89
89
  const appConfig = useAppConfig();
90
90
  const { filterGroups } = useFilter();
91
91
  const isAutocomplete = computed(() => props.mode === "autocomplete");
92
+ const isMultiple = computed(() => !!props.multiple && !isAutocomplete.value);
92
93
  const rootPropsPick = reactivePick(props, "as", "modelValue", "defaultValue", "open", "defaultOpen", "required", "multiple", "resetSearchTermOnBlur", "resetSearchTermOnSelect", "resetModelValueOnClear", "highlightOnHover", "openOnClick", "openOnFocus", "by");
93
94
  const rootPropsOmitted = reactiveOmit(rootPropsPick, "multiple", "resetSearchTermOnSelect", "resetModelValueOnClear", "by");
94
95
  const rootProps = useForwardProps(computed(() => isAutocomplete.value ? rootPropsOmitted : rootPropsPick), emits);
95
96
  const Component = computed(() => isAutocomplete.value ? Autocomplete : Combobox);
96
97
  const attrs = useAttrs();
97
- const baseDataSlot = computed(() => props.multiple && !isAutocomplete.value ? attrs["data-slot"] ?? "base" : "base");
98
+ const baseDataSlot = computed(() => isMultiple.value ? attrs["data-slot"] ?? "base" : "base");
98
99
  const portalProps = usePortal(toRef(() => props.portal));
99
100
  const contentProps = toRef(() => defu(props.content, { side: "bottom", sideOffset: 8, collisionPadding: 8, position: "popper" }));
100
101
  const arrowProps = toRef(() => defu(props.arrow, { rounded: true }));
@@ -142,7 +143,7 @@ const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.inputMenu || {} }
142
143
  fixed: props.fixed,
143
144
  leading: isLeading.value || !!props.avatar || !!slots.leading,
144
145
  trailing: isTrailing.value || !!slots.trailing,
145
- multiple: props.multiple,
146
+ multiple: isMultiple.value,
146
147
  fieldGroup: orientation.value,
147
148
  virtualize: !!props.virtualize
148
149
  }));
@@ -298,8 +299,17 @@ function isModelValueEmpty(modelValue) {
298
299
  return modelValue === void 0 || modelValue === null || modelValue === "";
299
300
  }
300
301
  function onClear() {
302
+ if (disabled.value) {
303
+ return;
304
+ }
301
305
  emits("clear");
302
306
  }
307
+ function onTagsInputKeydown(event) {
308
+ if (event.isComposing || !searchTerm.value) {
309
+ return;
310
+ }
311
+ event.preventDefault();
312
+ }
303
313
  const viewportRef = useTemplateRef("viewportRef");
304
314
  const comboboxRootRef = useTemplateRef("comboboxRootRef");
305
315
  watch(() => props.items, async () => {
@@ -394,14 +404,14 @@ defineExpose({
394
404
  :disabled="disabled"
395
405
  :data-slot="$attrs['data-slot'] ?? 'root'"
396
406
  :class="ui.root({ class: [props.ui?.root, props.class] })"
397
- :as-child="!!props.multiple && !isAutocomplete"
407
+ :as-child="isMultiple"
398
408
  ignore-filter
399
409
  @update:model-value="onUpdate"
400
410
  @update:open="onUpdateOpen"
401
411
  >
402
- <Component.Anchor :as-child="!props.multiple" :data-slot="baseDataSlot" :class="ui.base({ class: props.ui?.base })">
412
+ <Component.Anchor :as-child="!isMultiple" :data-slot="baseDataSlot" :class="ui.base({ class: props.ui?.base })">
403
413
  <TagsInputRoot
404
- v-if="props.multiple && !isAutocomplete"
414
+ v-if="isMultiple"
405
415
  v-slot="{ modelValue: tags }"
406
416
  :model-value="modelValue"
407
417
  :disabled="disabled"
@@ -435,6 +445,7 @@ defineExpose({
435
445
  data-slot="tagsInput"
436
446
  :class="ui.tagsInput({ class: props.ui?.tagsInput })"
437
447
  @change.stop
448
+ @keydown.enter="onTagsInputKeydown"
438
449
  />
439
450
  </Component.Input>
440
451
  </TagsInputRoot>
@@ -444,7 +455,7 @@ defineExpose({
444
455
  :id="id"
445
456
  ref="inputRef"
446
457
  v-bind="{ ...!isAutocomplete ? { displayValue } : {}, ...$attrs, ...ariaAttrs }"
447
- :data-slot="props.multiple ? void 0 : 'base'"
458
+ data-slot="base"
448
459
  :type="props.type"
449
460
  :placeholder="props.placeholder"
450
461
  :required="props.required"
@@ -463,7 +474,7 @@ defineExpose({
463
474
 
464
475
  <Component.Trigger v-if="isTrailing || !!slots.trailing || !!props.clear" data-slot="trailing" :class="ui.trailing({ class: props.ui?.trailing })">
465
476
  <slot name="trailing" :model-value="modelValue" :open="open" :ui="ui">
466
- <Component.Cancel v-if="!!props.clear && !isModelValueEmpty(modelValue)" as-child>
477
+ <Component.Cancel v-if="!!props.clear && !disabled && !isModelValueEmpty(modelValue)" as-child>
467
478
  <UButton
468
479
  as="span"
469
480
  :icon="props.clearIcon || appConfig.ui.icons.close"
@@ -31,7 +31,7 @@ export type InputMenuItem = InputMenuValue | {
31
31
  disabled?: boolean;
32
32
  onSelect?: (e: Event) => void;
33
33
  class?: any;
34
- ui?: Pick<InputMenu['slots'], 'tagsItem' | 'tagsItemText' | 'tagsItemDelete' | 'tagsItemDeleteIcon' | 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
34
+ ui?: Partial<Pick<InputMenu['slots'], 'tagsItem' | 'tagsItemText' | 'tagsItemDelete' | 'tagsItemDeleteIcon' | 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>>;
35
35
  [key: string]: any;
36
36
  };
37
37
  type ExcludeItem = {
@@ -93,13 +93,19 @@ function onUpdate(value) {
93
93
  emitFormChange();
94
94
  emitFormInput();
95
95
  }
96
- function onBlur(event) {
97
- emitFormBlur();
96
+ function onFocusOut(event) {
97
+ if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) {
98
+ return;
99
+ }
98
100
  emits("blur", event);
101
+ emitFormBlur();
99
102
  }
100
- function onFocus(event) {
101
- emitFormFocus();
103
+ function onFocusIn(event) {
104
+ if (event.relatedTarget && event.currentTarget.contains(event.relatedTarget)) {
105
+ return;
106
+ }
102
107
  emits("focus", event);
108
+ emitFormFocus();
103
109
  }
104
110
  function autoFocus() {
105
111
  if (props.autofocus) {
@@ -145,8 +151,8 @@ defineExpose({
145
151
  :default-value="props.defaultValue"
146
152
  :class="ui.base({ class: [props.ui?.base, props.class] })"
147
153
  @update:model-value="onUpdate"
148
- @blur="onBlur"
149
- @focus="onFocus"
154
+ @focusout="onFocusOut"
155
+ @focusin="onFocusIn"
150
156
  >
151
157
  <template v-if="Array.isArray(segments)">
152
158
  <ReuseSegmentsTemplate :segments="segments" />
@@ -22,14 +22,16 @@ function onClickWrapper(e) {
22
22
  e.preventDefault();
23
23
  return;
24
24
  }
25
+ const results = [];
25
26
  if (props.onClick) {
26
27
  for (const onClick of Array.isArray(props.onClick) ? props.onClick : [props.onClick]) {
27
- onClick(e);
28
+ results.push(onClick(e));
28
29
  }
29
30
  }
30
31
  if (props.href && props.navigate && !props.isExternal) {
31
32
  props.navigate(e);
32
33
  }
34
+ return Promise.all(results);
33
35
  }
34
36
  </script>
35
37
 
@@ -27,7 +27,7 @@ export interface ListboxItem {
27
27
  disabled?: boolean;
28
28
  onSelect?: (e: Event) => void;
29
29
  class?: any;
30
- ui?: Pick<Listbox['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatar' | 'itemLeadingAvatarSize' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
30
+ ui?: Partial<Pick<Listbox['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatar' | 'itemLeadingAvatarSize' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>>;
31
31
  [key: string]: any;
32
32
  }
33
33
  export interface ListboxProps<T extends ArrayOrNested<ListboxItem> = ArrayOrNested<ListboxItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false, Mod extends Omit<ModelModifiers, 'lazy'> = Omit<ModelModifiers, 'lazy'>> extends Pick<ListboxRootProps, 'by' | 'disabled' | 'highlightOnHover' | 'name' | 'orientation' | 'required' | 'selectionBehavior'> {
@@ -27,7 +27,7 @@ export interface ListboxItem {
27
27
  disabled?: boolean;
28
28
  onSelect?: (e: Event) => void;
29
29
  class?: any;
30
- ui?: Pick<Listbox['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatar' | 'itemLeadingAvatarSize' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>;
30
+ ui?: Partial<Pick<Listbox['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatar' | 'itemLeadingAvatarSize' | 'itemLeadingChip' | 'itemLeadingChipSize' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemTrailing' | 'itemTrailingIcon'>>;
31
31
  [key: string]: any;
32
32
  }
33
33
  export interface ListboxProps<T extends ArrayOrNested<ListboxItem> = ArrayOrNested<ListboxItem>, VK extends GetItemKeys<T> | undefined = undefined, M extends boolean = false, Mod extends Omit<ModelModifiers, 'lazy'> = Omit<ModelModifiers, 'lazy'>> extends Pick<ListboxRootProps, 'by' | 'disabled' | 'highlightOnHover' | 'name' | 'orientation' | 'required' | 'selectionBehavior'> {
@@ -67,7 +67,7 @@ export interface NavigationMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'cu
67
67
  open?: boolean;
68
68
  onSelect?: (e: Event) => void;
69
69
  class?: any;
70
- ui?: Pick<NavigationMenu['slots'], 'item' | 'linkLeadingAvatarSize' | 'linkLeadingAvatar' | 'linkLeadingIcon' | 'linkLeadingChipSize' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkTrailing' | 'linkTrailingBadgeSize' | 'linkTrailingBadge' | 'linkTrailingIcon' | 'label' | 'link' | 'content' | 'childList' | 'childLabel' | 'childItem' | 'childLink' | 'childLinkIcon' | 'childLinkWrapper' | 'childLinkLabel' | 'childLinkLabelExternalIcon' | 'childLinkDescription'>;
70
+ ui?: Partial<Pick<NavigationMenu['slots'], 'item' | 'linkLeadingAvatarSize' | 'linkLeadingAvatar' | 'linkLeadingIcon' | 'linkLeadingChipSize' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkTrailing' | 'linkTrailingBadgeSize' | 'linkTrailingBadge' | 'linkTrailingIcon' | 'label' | 'link' | 'content' | 'childList' | 'childLabel' | 'childItem' | 'childLink' | 'childLinkIcon' | 'childLinkWrapper' | 'childLinkLabel' | 'childLinkLabelExternalIcon' | 'childLinkDescription'>>;
71
71
  [key: string]: any;
72
72
  }
73
73
  type SingleOrMultipleType = 'single' | 'multiple';
@@ -67,7 +67,7 @@ export interface NavigationMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'cu
67
67
  open?: boolean;
68
68
  onSelect?: (e: Event) => void;
69
69
  class?: any;
70
- ui?: Pick<NavigationMenu['slots'], 'item' | 'linkLeadingAvatarSize' | 'linkLeadingAvatar' | 'linkLeadingIcon' | 'linkLeadingChipSize' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkTrailing' | 'linkTrailingBadgeSize' | 'linkTrailingBadge' | 'linkTrailingIcon' | 'label' | 'link' | 'content' | 'childList' | 'childLabel' | 'childItem' | 'childLink' | 'childLinkIcon' | 'childLinkWrapper' | 'childLinkLabel' | 'childLinkLabelExternalIcon' | 'childLinkDescription'>;
70
+ ui?: Partial<Pick<NavigationMenu['slots'], 'item' | 'linkLeadingAvatarSize' | 'linkLeadingAvatar' | 'linkLeadingIcon' | 'linkLeadingChipSize' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkTrailing' | 'linkTrailingBadgeSize' | 'linkTrailingBadge' | 'linkTrailingIcon' | 'label' | 'link' | 'content' | 'childList' | 'childLabel' | 'childItem' | 'childLink' | 'childLinkIcon' | 'childLinkWrapper' | 'childLinkLabel' | 'childLinkLabelExternalIcon' | 'childLinkDescription'>>;
71
71
  [key: string]: any;
72
72
  }
73
73
  type SingleOrMultipleType = 'single' | 'multiple';
@@ -12,7 +12,7 @@ export interface PageAnchor extends Omit<LinkProps, 'custom'> {
12
12
  */
13
13
  icon?: IconProps['name'];
14
14
  class?: any;
15
- ui?: Pick<PageAnchors['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeading' | 'linkLeadingIcon'>;
15
+ ui?: Partial<Pick<PageAnchors['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeading' | 'linkLeadingIcon'>>;
16
16
  }
17
17
  export interface PageAnchorsProps<T extends PageAnchor = PageAnchor> {
18
18
  /**
@@ -12,7 +12,7 @@ export interface PageAnchor extends Omit<LinkProps, 'custom'> {
12
12
  */
13
13
  icon?: IconProps['name'];
14
14
  class?: any;
15
- ui?: Pick<PageAnchors['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeading' | 'linkLeadingIcon'>;
15
+ ui?: Partial<Pick<PageAnchors['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeading' | 'linkLeadingIcon'>>;
16
16
  }
17
17
  export interface PageAnchorsProps<T extends PageAnchor = PageAnchor> {
18
18
  /**
@@ -12,7 +12,7 @@ export interface PageLink extends Omit<LinkProps, 'custom'> {
12
12
  */
13
13
  icon?: IconProps['name'];
14
14
  class?: any;
15
- ui?: Pick<PageLinks['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>;
15
+ ui?: Partial<Pick<PageLinks['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>>;
16
16
  }
17
17
  export interface PageLinksProps<T extends PageLink = PageLink> {
18
18
  /**
@@ -12,7 +12,7 @@ export interface PageLink extends Omit<LinkProps, 'custom'> {
12
12
  */
13
13
  icon?: IconProps['name'];
14
14
  class?: any;
15
- ui?: Pick<PageLinks['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>;
15
+ ui?: Partial<Pick<PageLinks['slots'], 'item' | 'link' | 'linkLabel' | 'linkLabelExternalIcon' | 'linkLeadingIcon'>>;
16
16
  }
17
17
  export interface PageLinksProps<T extends PageLink = PageLink> {
18
18
  /**
@@ -46,6 +46,7 @@ export interface PinInputProps<T extends PinInputType = 'text'> extends Pick<Pin
46
46
  export type PinInputEmits<T extends PinInputType = 'text'> = PinInputRootEmits<T> & {
47
47
  change: [event: Event];
48
48
  blur: [event: Event];
49
+ focus: [event: Event];
49
50
  };
50
51
  export interface PinInputSlots {
51
52
  separator?(props: {
@@ -58,6 +59,7 @@ declare const __VLS_export: <T extends PinInputType>(__VLS_props: NonNullable<Aw
58
59
  props: import("vue").PublicProps & __VLS_PrettifyLocal<PinInputProps<T> & {
59
60
  onBlur?: ((event: Event) => any) | undefined;
60
61
  onChange?: ((event: Event) => any) | undefined;
62
+ onFocus?: ((event: Event) => any) | undefined;
61
63
  "onUpdate:modelValue"?: ((value: [T] extends ["number"] ? number[] : string[]) => any) | undefined;
62
64
  onComplete?: ((value: [T] extends ["number"] ? number[] : string[]) => any) | undefined;
63
65
  }> & (typeof globalThis extends {
@@ -68,7 +70,7 @@ declare const __VLS_export: <T extends PinInputType>(__VLS_props: NonNullable<Aw
68
70
  }>) => void;
69
71
  attrs: any;
70
72
  slots: PinInputSlots;
71
- emit: ((evt: "blur", event: Event) => void) & ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: [T] extends ["number"] ? number[] : string[]) => void) & ((evt: "complete", value: [T] extends ["number"] ? number[] : string[]) => void);
73
+ emit: ((evt: "blur", event: Event) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: Event) => void) & ((evt: "update:modelValue", value: [T] extends ["number"] ? number[] : string[]) => void) & ((evt: "complete", value: [T] extends ["number"] ? number[] : string[]) => void);
72
74
  }>) => import("vue").VNode & {
73
75
  __ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
74
76
  };