@nuxt/ui 3.2.0 → 3.3.0
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.
- package/.nuxt/ui/button.ts +42 -42
- package/.nuxt/ui/command-palette.ts +2 -1
- package/.nuxt/ui/file-upload.ts +290 -0
- package/.nuxt/ui/index.ts +1 -0
- package/.nuxt/ui/kbd.ts +167 -3
- package/.nuxt/ui/table.ts +8 -0
- package/.nuxt/ui/tabs.ts +4 -2
- package/.nuxt/ui/toast.ts +8 -15
- package/.nuxt/ui/tooltip.ts +1 -1
- package/cli/templates.mjs +4 -3
- package/dist/module.d.mts +15 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +3 -3
- package/dist/runtime/components/Accordion.vue.d.ts +1 -1
- package/dist/runtime/components/Alert.vue.d.ts +2 -2
- package/dist/runtime/components/App.vue.d.ts +1 -1
- package/dist/runtime/components/Avatar.vue.d.ts +1 -1
- package/dist/runtime/components/AvatarGroup.vue.d.ts +1 -1
- package/dist/runtime/components/Badge.vue.d.ts +1 -1
- package/dist/runtime/components/Breadcrumb.vue.d.ts +1 -1
- package/dist/runtime/components/Button.vue +6 -6
- package/dist/runtime/components/Button.vue.d.ts +1 -5
- package/dist/runtime/components/ButtonGroup.vue.d.ts +1 -1
- package/dist/runtime/components/Calendar.vue.d.ts +1 -1
- package/dist/runtime/components/Card.vue.d.ts +1 -1
- package/dist/runtime/components/Carousel.vue +18 -14
- package/dist/runtime/components/Carousel.vue.d.ts +1 -1
- package/dist/runtime/components/Checkbox.vue.d.ts +1 -1
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +1 -1
- package/dist/runtime/components/Chip.vue.d.ts +2 -2
- package/dist/runtime/components/Collapsible.vue.d.ts +1 -1
- package/dist/runtime/components/ColorPicker.vue +1 -2
- package/dist/runtime/components/ColorPicker.vue.d.ts +1 -1
- package/dist/runtime/components/CommandPalette.vue +4 -0
- package/dist/runtime/components/CommandPalette.vue.d.ts +6 -1
- package/dist/runtime/components/Container.vue.d.ts +1 -1
- package/dist/runtime/components/ContextMenu.vue.d.ts +1 -1
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +1 -1
- package/dist/runtime/components/Drawer.vue +4 -4
- package/dist/runtime/components/Drawer.vue.d.ts +6 -1
- package/dist/runtime/components/DropdownMenu.vue.d.ts +1 -1
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +8 -5
- package/dist/runtime/components/FileUpload.vue +242 -0
- package/dist/runtime/components/FileUpload.vue.d.ts +167 -0
- package/dist/runtime/components/Form.vue.d.ts +6 -5
- package/dist/runtime/components/FormField.vue +2 -2
- package/dist/runtime/components/FormField.vue.d.ts +4 -4
- package/dist/runtime/components/Icon.vue.d.ts +1 -1
- package/dist/runtime/components/Input.vue +10 -7
- package/dist/runtime/components/Input.vue.d.ts +9 -9
- package/dist/runtime/components/InputMenu.vue +17 -10
- package/dist/runtime/components/InputMenu.vue.d.ts +15 -12
- package/dist/runtime/components/InputNumber.vue.d.ts +4 -4
- package/dist/runtime/components/InputTags.vue +2 -0
- package/dist/runtime/components/InputTags.vue.d.ts +5 -3
- package/dist/runtime/components/Kbd.vue +2 -1
- package/dist/runtime/components/Kbd.vue.d.ts +5 -1
- package/dist/runtime/components/Link.vue +6 -5
- package/dist/runtime/components/Link.vue.d.ts +1 -3
- package/dist/runtime/components/LinkBase.vue.d.ts +1 -1
- package/dist/runtime/components/Modal.vue.d.ts +2 -2
- package/dist/runtime/components/NavigationMenu.vue +3 -2
- package/dist/runtime/components/NavigationMenu.vue.d.ts +1 -1
- package/dist/runtime/components/OverlayProvider.vue.d.ts +1 -1
- package/dist/runtime/components/Pagination.vue.d.ts +1 -1
- package/dist/runtime/components/PinInput.vue.d.ts +1 -1
- package/dist/runtime/components/Popover.vue +2 -1
- package/dist/runtime/components/Popover.vue.d.ts +8 -2
- package/dist/runtime/components/Progress.vue.d.ts +1 -1
- package/dist/runtime/components/RadioGroup.vue +1 -1
- package/dist/runtime/components/RadioGroup.vue.d.ts +5 -4
- package/dist/runtime/components/Select.vue.d.ts +1 -1
- package/dist/runtime/components/SelectMenu.vue +9 -6
- package/dist/runtime/components/SelectMenu.vue.d.ts +1 -1
- package/dist/runtime/components/Separator.vue.d.ts +1 -1
- package/dist/runtime/components/Skeleton.vue.d.ts +1 -1
- package/dist/runtime/components/Slideover.vue.d.ts +2 -2
- package/dist/runtime/components/Slider.vue.d.ts +5 -5
- package/dist/runtime/components/Stepper.vue.d.ts +1 -1
- package/dist/runtime/components/Switch.vue.d.ts +1 -1
- package/dist/runtime/components/Table.vue +83 -8
- package/dist/runtime/components/Table.vue.d.ts +20 -4
- package/dist/runtime/components/Tabs.vue +11 -2
- package/dist/runtime/components/Tabs.vue.d.ts +8 -3
- package/dist/runtime/components/Textarea.vue +10 -7
- package/dist/runtime/components/Textarea.vue.d.ts +10 -9
- package/dist/runtime/components/Timeline.vue.d.ts +1 -1
- package/dist/runtime/components/Toast.vue +12 -4
- package/dist/runtime/components/Toast.vue.d.ts +14 -13
- package/dist/runtime/components/Toaster.vue.d.ts +1 -1
- package/dist/runtime/components/Tooltip.vue +2 -1
- package/dist/runtime/components/Tooltip.vue.d.ts +8 -2
- package/dist/runtime/components/Tree.vue +3 -2
- package/dist/runtime/components/Tree.vue.d.ts +1 -1
- package/dist/runtime/composables/defineShortcuts.js +5 -3
- package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
- package/dist/runtime/composables/useComponentIcons.d.ts +1 -1
- package/dist/runtime/composables/useFileUpload.d.ts +19 -0
- package/dist/runtime/composables/useFileUpload.js +63 -0
- package/dist/runtime/composables/useFormField.d.ts +3 -6
- package/dist/runtime/composables/useFormField.js +5 -2
- package/dist/runtime/composables/useKbd.d.ts +1 -1
- package/dist/runtime/composables/useLocale.js +2 -2
- package/dist/runtime/composables/useOverlay.d.ts +28 -1
- package/dist/runtime/composables/useOverlay.js +4 -4
- package/dist/runtime/composables/usePortal.d.ts +1 -1
- package/dist/runtime/inertia/components/Link.vue.d.ts +1 -1
- package/dist/runtime/inertia/components/LinkBase.vue.d.ts +1 -1
- package/dist/runtime/inertia/stubs.d.ts +1 -0
- package/dist/runtime/inertia/stubs.js +4 -2
- package/dist/runtime/locale/ar.js +2 -1
- package/dist/runtime/locale/az.js +1 -0
- package/dist/runtime/locale/bg.js +1 -0
- package/dist/runtime/locale/bn.js +1 -0
- package/dist/runtime/locale/ca.js +1 -0
- package/dist/runtime/locale/ckb.js +2 -1
- package/dist/runtime/locale/cs.js +1 -0
- package/dist/runtime/locale/da.js +1 -0
- package/dist/runtime/locale/de.js +1 -0
- package/dist/runtime/locale/el.js +1 -0
- package/dist/runtime/locale/en.js +1 -0
- package/dist/runtime/locale/es.js +1 -0
- package/dist/runtime/locale/et.js +1 -0
- package/dist/runtime/locale/fa_ir.js +1 -0
- package/dist/runtime/locale/fi.js +1 -0
- package/dist/runtime/locale/fr.js +1 -0
- package/dist/runtime/locale/he.js +1 -0
- package/dist/runtime/locale/hi.js +2 -1
- package/dist/runtime/locale/hu.js +1 -0
- package/dist/runtime/locale/hy.js +1 -0
- package/dist/runtime/locale/id.js +1 -0
- package/dist/runtime/locale/it.js +1 -0
- package/dist/runtime/locale/ja.js +1 -0
- package/dist/runtime/locale/kk.js +1 -0
- package/dist/runtime/locale/km.js +2 -1
- package/dist/runtime/locale/ko.js +1 -0
- package/dist/runtime/locale/ky.js +1 -0
- package/dist/runtime/locale/lb.js +1 -0
- package/dist/runtime/locale/lt.js +1 -0
- package/dist/runtime/locale/mn.js +1 -0
- package/dist/runtime/locale/ms.js +1 -0
- package/dist/runtime/locale/nb_no.js +1 -0
- package/dist/runtime/locale/nl.js +1 -0
- package/dist/runtime/locale/pl.js +1 -0
- package/dist/runtime/locale/pt.js +1 -0
- package/dist/runtime/locale/pt_br.js +1 -0
- package/dist/runtime/locale/ro.js +1 -0
- package/dist/runtime/locale/ru.js +1 -0
- package/dist/runtime/locale/sk.js +1 -0
- package/dist/runtime/locale/sl.js +1 -0
- package/dist/runtime/locale/sv.js +1 -0
- package/dist/runtime/locale/th.js +1 -0
- package/dist/runtime/locale/tj.js +1 -0
- package/dist/runtime/locale/tr.js +1 -0
- package/dist/runtime/locale/ug_cn.js +1 -0
- package/dist/runtime/locale/uk.js +1 -0
- package/dist/runtime/locale/ur.js +1 -0
- package/dist/runtime/locale/uz.js +1 -0
- package/dist/runtime/locale/vi.js +1 -0
- package/dist/runtime/locale/zh_cn.js +1 -0
- package/dist/runtime/locale/zh_tw.js +1 -0
- package/dist/runtime/types/index.d.ts +1 -0
- package/dist/runtime/types/index.js +1 -0
- package/dist/runtime/types/locale.d.ts +1 -0
- package/dist/runtime/utils/index.d.ts +1 -0
- package/dist/runtime/utils/index.js +9 -0
- package/dist/runtime/vue/components/Icon.vue.d.ts +1 -1
- package/dist/runtime/vue/components/Link.vue.d.ts +1 -1
- package/dist/runtime/vue/stubs.d.ts +1 -0
- package/dist/runtime/vue/stubs.js +3 -1
- package/dist/shared/{ui.BPVxSPGY.mjs → ui.BkSj2DmF.mjs} +278 -29
- package/dist/unplugin.d.mts +2 -0
- package/dist/unplugin.mjs +6 -3
- package/dist/vite.mjs +1 -1
- package/package.json +24 -24
|
@@ -4,7 +4,7 @@ import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
|
4
4
|
import type { ComponentConfig } from '../types/utils';
|
|
5
5
|
type Textarea = ComponentConfig<typeof theme, AppConfig, 'textarea'>;
|
|
6
6
|
type TextareaValue = string | number | null;
|
|
7
|
-
export interface TextareaProps extends UseComponentIconsProps {
|
|
7
|
+
export interface TextareaProps<T extends TextareaValue = TextareaValue> extends UseComponentIconsProps {
|
|
8
8
|
/**
|
|
9
9
|
* The element or component this component should render as.
|
|
10
10
|
* @defaultValue 'div'
|
|
@@ -36,8 +36,11 @@ export interface TextareaProps extends UseComponentIconsProps {
|
|
|
36
36
|
maxrows?: number;
|
|
37
37
|
/** Highlight the ring color like a focus state. */
|
|
38
38
|
highlight?: boolean;
|
|
39
|
+
modelValue?: T;
|
|
40
|
+
defaultValue?: T;
|
|
39
41
|
modelModifiers?: {
|
|
40
42
|
string?: boolean;
|
|
43
|
+
number?: boolean;
|
|
41
44
|
trim?: boolean;
|
|
42
45
|
lazy?: boolean;
|
|
43
46
|
nullify?: boolean;
|
|
@@ -46,9 +49,9 @@ export interface TextareaProps extends UseComponentIconsProps {
|
|
|
46
49
|
ui?: Textarea['slots'];
|
|
47
50
|
}
|
|
48
51
|
export interface TextareaEmits<T extends TextareaValue = TextareaValue> {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
'update:modelValue': [payload: T];
|
|
53
|
+
'blur': [event: FocusEvent];
|
|
54
|
+
'change': [event: Event];
|
|
52
55
|
}
|
|
53
56
|
export interface TextareaSlots {
|
|
54
57
|
leading(props?: {}): any;
|
|
@@ -60,19 +63,17 @@ declare const _default: <T extends TextareaValue>(__VLS_props: NonNullable<Await
|
|
|
60
63
|
readonly onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
61
64
|
readonly onChange?: ((event: Event) => any) | undefined;
|
|
62
65
|
readonly "onUpdate:modelValue"?: ((payload: T) => any) | undefined;
|
|
63
|
-
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onBlur" | "onChange" | "onUpdate:modelValue"> &
|
|
64
|
-
modelValue?: T;
|
|
65
|
-
}) & Partial<{}>> & import("vue").PublicProps;
|
|
66
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onBlur" | "onChange" | "onUpdate:modelValue"> & TextareaProps<T> & Partial<{}>> & import("vue").PublicProps;
|
|
66
67
|
expose(exposed: import("vue").ShallowUnwrapRef<{
|
|
67
68
|
textareaRef: import("vue").Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>;
|
|
68
69
|
}>): void;
|
|
69
70
|
attrs: any;
|
|
70
71
|
slots: TextareaSlots;
|
|
71
|
-
emit:
|
|
72
|
+
emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", payload: T) => void);
|
|
72
73
|
}>) => import("vue").VNode & {
|
|
73
74
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
74
75
|
};
|
|
75
76
|
export default _default;
|
|
76
77
|
type __VLS_PrettifyLocal<T> = {
|
|
77
|
-
[K in keyof T]: T[K];
|
|
78
|
+
[K in keyof T as K]: T[K];
|
|
78
79
|
} & {};
|
|
@@ -12,6 +12,7 @@ import { tv } from "../utils/tv";
|
|
|
12
12
|
import UIcon from "./Icon.vue";
|
|
13
13
|
import UAvatar from "./Avatar.vue";
|
|
14
14
|
import UButton from "./Button.vue";
|
|
15
|
+
import UProgress from "./Progress.vue";
|
|
15
16
|
const props = defineProps({
|
|
16
17
|
as: { type: null, required: false },
|
|
17
18
|
title: { type: [String, Object, Function], required: false },
|
|
@@ -20,10 +21,10 @@ const props = defineProps({
|
|
|
20
21
|
avatar: { type: Object, required: false },
|
|
21
22
|
color: { type: null, required: false },
|
|
22
23
|
orientation: { type: null, required: false, default: "vertical" },
|
|
23
|
-
progress: { type: Boolean, required: false, default: true },
|
|
24
|
-
actions: { type: Array, required: false },
|
|
25
24
|
close: { type: [Boolean, Object], required: false, default: true },
|
|
26
25
|
closeIcon: { type: String, required: false },
|
|
26
|
+
actions: { type: Array, required: false },
|
|
27
|
+
progress: { type: [Boolean, Object], required: false, default: true },
|
|
27
28
|
class: { type: null, required: false },
|
|
28
29
|
ui: { type: null, required: false },
|
|
29
30
|
defaultOpen: { type: Boolean, required: false },
|
|
@@ -59,7 +60,7 @@ defineExpose({
|
|
|
59
60
|
<template>
|
|
60
61
|
<ToastRoot
|
|
61
62
|
ref="el"
|
|
62
|
-
v-slot="{ remaining, duration }"
|
|
63
|
+
v-slot="{ remaining, duration, open }"
|
|
63
64
|
v-bind="rootProps"
|
|
64
65
|
:data-orientation="orientation"
|
|
65
66
|
:class="ui.root({ class: [props.ui?.root, props.class] })"
|
|
@@ -124,6 +125,13 @@ defineExpose({
|
|
|
124
125
|
</ToastClose>
|
|
125
126
|
</div>
|
|
126
127
|
|
|
127
|
-
<
|
|
128
|
+
<UProgress
|
|
129
|
+
v-if="progress && open && remaining > 0 && duration"
|
|
130
|
+
:model-value="remaining / duration * 100"
|
|
131
|
+
:color="color"
|
|
132
|
+
v-bind="typeof progress === 'object' ? progress : {}"
|
|
133
|
+
size="sm"
|
|
134
|
+
:class="ui.progress({ class: props.ui?.progress })"
|
|
135
|
+
/>
|
|
128
136
|
</ToastRoot>
|
|
129
137
|
</template>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ToastRootProps, ToastRootEmits } from 'reka-ui';
|
|
2
2
|
import type { AppConfig } from '@nuxt/schema';
|
|
3
3
|
import theme from '#build/ui/toast';
|
|
4
|
-
import type { AvatarProps, ButtonProps } from '../types';
|
|
4
|
+
import type { AvatarProps, ButtonProps, ProgressProps } from '../types';
|
|
5
5
|
import type { StringOrVNode, ComponentConfig } from '../types/utils';
|
|
6
6
|
type Toast = ComponentConfig<typeof theme, AppConfig, 'toast'>;
|
|
7
7
|
export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open' | 'type' | 'duration'> {
|
|
@@ -27,10 +27,17 @@ export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open'
|
|
|
27
27
|
*/
|
|
28
28
|
orientation?: Toast['variants']['orientation'];
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
30
|
+
* Display a close button to dismiss the toast.
|
|
31
|
+
* `{ size: 'md', color: 'neutral', variant: 'link' }`{lang="ts-type"}
|
|
31
32
|
* @defaultValue true
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
|
+
close?: boolean | Partial<ButtonProps>;
|
|
35
|
+
/**
|
|
36
|
+
* The icon displayed in the close button.
|
|
37
|
+
* @defaultValue appConfig.ui.icons.close
|
|
38
|
+
* @IconifyIcon
|
|
39
|
+
*/
|
|
40
|
+
closeIcon?: string;
|
|
34
41
|
/**
|
|
35
42
|
* Display a list of actions:
|
|
36
43
|
* - under the title and description when orientation is `vertical`
|
|
@@ -39,17 +46,11 @@ export interface ToastProps extends Pick<ToastRootProps, 'defaultOpen' | 'open'
|
|
|
39
46
|
*/
|
|
40
47
|
actions?: ButtonProps[];
|
|
41
48
|
/**
|
|
42
|
-
* Display a
|
|
43
|
-
* `{ size: '
|
|
49
|
+
* Display a progress bar showing the toast's remaining duration.
|
|
50
|
+
* `{ size: 'sm' }`{lang="ts-type"}
|
|
44
51
|
* @defaultValue true
|
|
45
52
|
*/
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* The icon displayed in the close button.
|
|
49
|
-
* @defaultValue appConfig.ui.icons.close
|
|
50
|
-
* @IconifyIcon
|
|
51
|
-
*/
|
|
52
|
-
closeIcon?: string;
|
|
53
|
+
progress?: boolean | Pick<ProgressProps, 'color'>;
|
|
53
54
|
class?: any;
|
|
54
55
|
ui?: Toast['slots'];
|
|
55
56
|
}
|
|
@@ -152,7 +153,7 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ToastProps
|
|
|
152
153
|
}>, "currentTarget">) => any) | undefined;
|
|
153
154
|
}>, {
|
|
154
155
|
close: boolean | Partial<ButtonProps>;
|
|
155
|
-
progress: boolean
|
|
156
|
+
progress: boolean | Pick<ProgressProps, "color">;
|
|
156
157
|
orientation: Toast["variants"]["orientation"];
|
|
157
158
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ToastSlots>;
|
|
158
159
|
export default _default;
|
|
@@ -30,7 +30,7 @@ export interface ToasterProps extends Omit<ToastProviderProps, 'swipeDirection'>
|
|
|
30
30
|
export interface ToasterSlots {
|
|
31
31
|
default(props?: {}): any;
|
|
32
32
|
}
|
|
33
|
-
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ToasterProps,
|
|
33
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ToasterProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ToasterProps> & Readonly<{}>, {
|
|
34
34
|
progress: boolean;
|
|
35
35
|
duration: number;
|
|
36
36
|
expand: boolean;
|
|
@@ -17,6 +17,7 @@ const props = defineProps({
|
|
|
17
17
|
content: { type: Object, required: false },
|
|
18
18
|
arrow: { type: [Boolean, Object], required: false },
|
|
19
19
|
portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
|
|
20
|
+
reference: { type: null, required: false },
|
|
20
21
|
class: { type: null, required: false },
|
|
21
22
|
ui: { type: null, required: false },
|
|
22
23
|
defaultOpen: { type: Boolean, required: false },
|
|
@@ -41,7 +42,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.tooltip || {}
|
|
|
41
42
|
|
|
42
43
|
<template>
|
|
43
44
|
<TooltipRoot v-slot="{ open }" v-bind="rootProps">
|
|
44
|
-
<TooltipTrigger v-if="!!slots.default" v-bind="$attrs" as-child :class="props.class">
|
|
45
|
+
<TooltipTrigger v-if="!!slots.default || !!reference" v-bind="$attrs" as-child :reference="reference" :class="props.class">
|
|
45
46
|
<slot :open="open" />
|
|
46
47
|
</TooltipTrigger>
|
|
47
48
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TooltipRootProps, TooltipRootEmits, TooltipContentProps, TooltipContentEmits, TooltipArrowProps } from 'reka-ui';
|
|
1
|
+
import type { TooltipRootProps, TooltipRootEmits, TooltipContentProps, TooltipContentEmits, TooltipArrowProps, TooltipTriggerProps } from 'reka-ui';
|
|
2
2
|
import type { AppConfig } from '@nuxt/schema';
|
|
3
3
|
import theme from '#build/ui/tooltip';
|
|
4
4
|
import type { KbdProps } from '../types';
|
|
@@ -24,6 +24,12 @@ export interface TooltipProps extends TooltipRootProps {
|
|
|
24
24
|
* @defaultValue true
|
|
25
25
|
*/
|
|
26
26
|
portal?: boolean | string | HTMLElement;
|
|
27
|
+
/**
|
|
28
|
+
* The reference (or anchor) element that is being referred to for positioning.
|
|
29
|
+
*
|
|
30
|
+
* If not provided will use the current component as anchor.
|
|
31
|
+
*/
|
|
32
|
+
reference?: TooltipTriggerProps['reference'];
|
|
27
33
|
class?: any;
|
|
28
34
|
ui?: Tooltip['slots'];
|
|
29
35
|
}
|
|
@@ -35,7 +41,7 @@ export interface TooltipSlots {
|
|
|
35
41
|
}): any;
|
|
36
42
|
content(props?: {}): any;
|
|
37
43
|
}
|
|
38
|
-
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<TooltipProps,
|
|
44
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<TooltipProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
39
45
|
"update:open": (value: boolean) => any;
|
|
40
46
|
}, string, import("vue").PublicProps, Readonly<TooltipProps> & Readonly<{
|
|
41
47
|
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
@@ -10,6 +10,7 @@ import { useAppConfig } from "#imports";
|
|
|
10
10
|
import { get } from "../utils";
|
|
11
11
|
import { tv } from "../utils/tv";
|
|
12
12
|
import UIcon from "./Icon.vue";
|
|
13
|
+
defineOptions({ inheritAttrs: false });
|
|
13
14
|
const props = defineProps({
|
|
14
15
|
as: { type: null, required: false },
|
|
15
16
|
color: { type: null, required: false },
|
|
@@ -72,7 +73,7 @@ const defaultExpanded = computed(
|
|
|
72
73
|
@toggle="item.onToggle"
|
|
73
74
|
@select="item.onSelect"
|
|
74
75
|
>
|
|
75
|
-
<button :disabled="item.disabled || disabled" :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], selected: isSelected, disabled: item.disabled || disabled })">
|
|
76
|
+
<button type="button" :disabled="item.disabled || disabled" :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], selected: isSelected, disabled: item.disabled || disabled })">
|
|
76
77
|
<slot :name="item.slot || 'item'" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="item">
|
|
77
78
|
<slot :name="item.slot ? `${item.slot}-leading` : 'item-leading'" v-bind="{ index, level, expanded: isExpanded, selected: isSelected }" :item="item">
|
|
78
79
|
<UIcon
|
|
@@ -110,7 +111,7 @@ const defaultExpanded = computed(
|
|
|
110
111
|
</DefineTreeTemplate>
|
|
111
112
|
|
|
112
113
|
<TreeRoot
|
|
113
|
-
v-bind="rootProps"
|
|
114
|
+
v-bind="{ ...rootProps, ...$attrs }"
|
|
114
115
|
:class="ui.root({ class: [props.ui?.root, props.class] })"
|
|
115
116
|
:get-key="getItemValue"
|
|
116
117
|
:default-expanded="defaultExpanded"
|
|
@@ -3,6 +3,7 @@ import { useEventListener, useActiveElement, useDebounceFn } from "@vueuse/core"
|
|
|
3
3
|
import { useKbd } from "./useKbd.js";
|
|
4
4
|
const chainedShortcutRegex = /^[^-]+.*-.*[^-]+$/;
|
|
5
5
|
const combinedShortcutRegex = /^[^_]+.*_.*[^_]+$/;
|
|
6
|
+
const shiftableKeys = ["arrowleft", "arrowright", "arrowup", "arrowright", "tab", "escape", "enter", "backspace"];
|
|
6
7
|
export function extractShortcuts(items) {
|
|
7
8
|
const shortcuts = {};
|
|
8
9
|
function traverse(items2) {
|
|
@@ -34,7 +35,8 @@ export function defineShortcuts(config, options = {}) {
|
|
|
34
35
|
if (!e.key) {
|
|
35
36
|
return;
|
|
36
37
|
}
|
|
37
|
-
const
|
|
38
|
+
const alphabetKey = /^[a-z]{1}$/i.test(e.key);
|
|
39
|
+
const shiftableKey = shiftableKeys.includes(e.key.toLowerCase());
|
|
38
40
|
let chainedKey;
|
|
39
41
|
chainedInputs.value.push(e.key);
|
|
40
42
|
if (chainedInputs.value.length >= 2) {
|
|
@@ -61,12 +63,12 @@ export function defineShortcuts(config, options = {}) {
|
|
|
61
63
|
if (e.ctrlKey !== shortcut.ctrlKey) {
|
|
62
64
|
continue;
|
|
63
65
|
}
|
|
64
|
-
if (
|
|
66
|
+
if ((alphabetKey || shiftableKey) && e.shiftKey !== shortcut.shiftKey) {
|
|
65
67
|
continue;
|
|
66
68
|
}
|
|
67
69
|
if (shortcut.enabled) {
|
|
68
70
|
e.preventDefault();
|
|
69
|
-
shortcut.handler();
|
|
71
|
+
shortcut.handler(e);
|
|
70
72
|
}
|
|
71
73
|
clearChainedInput();
|
|
72
74
|
return;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ComputedRef, InjectionKey } from 'vue';
|
|
2
2
|
import type { AvatarGroupProps } from '../types';
|
|
3
3
|
export declare const avatarGroupInjectionKey: InjectionKey<ComputedRef<{
|
|
4
4
|
size: AvatarGroupProps['size'];
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MaybeRef } from '@vueuse/core';
|
|
2
|
+
export interface UseFileUploadOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Specifies the allowed file types. Provide a comma-separated list of MIME types or file extensions.
|
|
5
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/accept
|
|
6
|
+
* @defaultValue '*'
|
|
7
|
+
*/
|
|
8
|
+
accept?: MaybeRef<string>;
|
|
9
|
+
reset?: boolean;
|
|
10
|
+
multiple?: boolean;
|
|
11
|
+
dropzone?: boolean;
|
|
12
|
+
onUpdate: (files: File[]) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function useFileUpload(options: UseFileUploadOptions): {
|
|
15
|
+
isDragging: import("vue").Ref<boolean, boolean>;
|
|
16
|
+
open: () => void;
|
|
17
|
+
inputRef: import("vue").Ref<HTMLInputElement | undefined, HTMLInputElement | undefined>;
|
|
18
|
+
dropzoneRef: import("vue").Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
|
|
19
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ref, computed, unref, onMounted, watch, reactive } from "vue";
|
|
2
|
+
import { useFileDialog, useDropZone } from "@vueuse/core";
|
|
3
|
+
function parseAcceptToDataTypes(accept) {
|
|
4
|
+
if (!accept || accept === "*") {
|
|
5
|
+
return void 0;
|
|
6
|
+
}
|
|
7
|
+
const types = accept.split(",").map((type) => type.trim()).filter((type) => {
|
|
8
|
+
return !type.startsWith(".");
|
|
9
|
+
});
|
|
10
|
+
return types.length > 0 ? types : void 0;
|
|
11
|
+
}
|
|
12
|
+
export function useFileUpload(options) {
|
|
13
|
+
const {
|
|
14
|
+
accept = "*",
|
|
15
|
+
reset = false,
|
|
16
|
+
multiple = false,
|
|
17
|
+
dropzone = true,
|
|
18
|
+
onUpdate
|
|
19
|
+
} = options;
|
|
20
|
+
const inputRef = ref();
|
|
21
|
+
const dropzoneRef = ref();
|
|
22
|
+
const dataTypes = computed(() => parseAcceptToDataTypes(unref(accept)));
|
|
23
|
+
const onDrop = (files) => {
|
|
24
|
+
if (!files || files.length === 0) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (files instanceof FileList) {
|
|
28
|
+
files = Array.from(files);
|
|
29
|
+
}
|
|
30
|
+
if (files.length > 1 && !multiple) {
|
|
31
|
+
files = [files[0]];
|
|
32
|
+
}
|
|
33
|
+
onUpdate(files);
|
|
34
|
+
};
|
|
35
|
+
const isDragging = ref(false);
|
|
36
|
+
const fileDialog = reactive({
|
|
37
|
+
open: () => {
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
function open() {
|
|
41
|
+
fileDialog.open();
|
|
42
|
+
}
|
|
43
|
+
onMounted(() => {
|
|
44
|
+
const { isOverDropZone } = dropzone ? useDropZone(dropzoneRef, { dataTypes: dataTypes.value, onDrop }) : { isOverDropZone: ref(false) };
|
|
45
|
+
watch(isOverDropZone, (value) => {
|
|
46
|
+
isDragging.value = value;
|
|
47
|
+
});
|
|
48
|
+
const { onChange, open: open2 } = useFileDialog({
|
|
49
|
+
accept: unref(accept),
|
|
50
|
+
multiple,
|
|
51
|
+
input: unref(inputRef),
|
|
52
|
+
reset
|
|
53
|
+
});
|
|
54
|
+
fileDialog.open = open2;
|
|
55
|
+
onChange((fileList) => onDrop(fileList));
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
isDragging,
|
|
59
|
+
open,
|
|
60
|
+
inputRef,
|
|
61
|
+
dropzoneRef
|
|
62
|
+
};
|
|
63
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { InjectionKey, Ref, ComputedRef } from 'vue';
|
|
2
|
+
import type { UseEventBusReturn } from '@vueuse/core';
|
|
3
3
|
import type { FormFieldProps } from '../types';
|
|
4
4
|
import type { FormEvent, FormFieldInjectedOptions, FormInjectedOptions } from '../types/form';
|
|
5
5
|
import type { GetObjectField } from '../types/utils';
|
|
@@ -34,9 +34,6 @@ export declare function useFormField<T>(props?: Props<T>, opts?: {
|
|
|
34
34
|
emitFormInput: import("@vueuse/shared").UseDebounceFnReturn<() => void>;
|
|
35
35
|
emitFormChange: () => void;
|
|
36
36
|
emitFormFocus: () => void;
|
|
37
|
-
ariaAttrs: ComputedRef<
|
|
38
|
-
'aria-describedby': string;
|
|
39
|
-
'aria-invalid': boolean;
|
|
40
|
-
} | undefined>;
|
|
37
|
+
ariaAttrs: ComputedRef<Record<string, any> | undefined>;
|
|
41
38
|
};
|
|
42
39
|
export {};
|
|
@@ -57,10 +57,13 @@ export function useFormField(props, opts) {
|
|
|
57
57
|
ariaAttrs: computed(() => {
|
|
58
58
|
if (!formField?.value) return;
|
|
59
59
|
const descriptiveAttrs = ["error", "hint", "description", "help"].filter((type) => formField?.value?.[type]).map((type) => `${formField?.value.ariaId}-${type}`) || [];
|
|
60
|
-
|
|
61
|
-
"aria-describedby": descriptiveAttrs.join(" "),
|
|
60
|
+
const attrs = {
|
|
62
61
|
"aria-invalid": !!formField?.value.error
|
|
63
62
|
};
|
|
63
|
+
if (descriptiveAttrs.length > 0) {
|
|
64
|
+
attrs["aria-describedby"] = descriptiveAttrs.join(" ");
|
|
65
|
+
}
|
|
66
|
+
return attrs;
|
|
64
67
|
})
|
|
65
68
|
};
|
|
66
69
|
}
|
|
@@ -30,7 +30,7 @@ export declare const kbdKeysMap: {
|
|
|
30
30
|
export type KbdKey = keyof typeof kbdKeysMap;
|
|
31
31
|
export type KbdKeySpecific = keyof KbdKeysSpecificMap;
|
|
32
32
|
export declare const useKbd: () => {
|
|
33
|
-
macOS: import("vue").ComputedRef<false | "" | RegExpMatchArray | null
|
|
33
|
+
macOS: import("vue").ComputedRef<false | "" | RegExpMatchArray | null>;
|
|
34
34
|
getKbdKey: (value?: KbdKey | string) => string | undefined;
|
|
35
35
|
};
|
|
36
36
|
export {};
|
|
@@ -4,7 +4,7 @@ import { buildLocaleContext } from "../utils/locale.js";
|
|
|
4
4
|
import en from "../locale/en.js";
|
|
5
5
|
export const localeContextInjectionKey = Symbol.for("nuxt-ui.locale-context");
|
|
6
6
|
const _useLocale = (localeOverrides) => {
|
|
7
|
-
const locale = localeOverrides || toRef(inject(localeContextInjectionKey));
|
|
7
|
+
const locale = localeOverrides || toRef(inject(localeContextInjectionKey, en));
|
|
8
8
|
return buildLocaleContext(computed(() => locale.value || en));
|
|
9
9
|
};
|
|
10
|
-
export const useLocale =
|
|
10
|
+
export const useLocale = import.meta.client ? createSharedComposable(_useLocale) : _useLocale;
|
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
import type { Component } from 'vue';
|
|
2
2
|
import type { ComponentProps, ComponentEmit } from 'vue-component-type-helpers';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* This is a workaround for a design limitation in TypeScript.
|
|
5
|
+
*
|
|
6
|
+
* Conditional types only match the last function overload, not a union of all possible
|
|
7
|
+
* parameter types. This workaround forces TypeScript to properly extract the 'close'
|
|
8
|
+
* event argument type from component emits with multiple event signatures.
|
|
9
|
+
*
|
|
10
|
+
* @see https://github.com/microsoft/TypeScript/issues/32164
|
|
11
|
+
*/
|
|
12
|
+
type CloseEventArgType<T> = T extends {
|
|
13
|
+
(event: 'close', arg_0: infer Arg, ...args: any[]): void;
|
|
14
|
+
(...args: any[]): void;
|
|
15
|
+
(...args: any[]): void;
|
|
16
|
+
(...args: any[]): void;
|
|
17
|
+
(...args: any[]): void;
|
|
18
|
+
(...args: any[]): void;
|
|
19
|
+
(...args: any[]): void;
|
|
20
|
+
(...args: any[]): void;
|
|
21
|
+
(...args: any[]): void;
|
|
22
|
+
(...args: any[]): void;
|
|
23
|
+
(...args: any[]): void;
|
|
24
|
+
(...args: any[]): void;
|
|
25
|
+
(...args: any[]): void;
|
|
26
|
+
(...args: any[]): void;
|
|
27
|
+
(...args: any[]): void;
|
|
28
|
+
(...args: any[]): void;
|
|
29
|
+
(...args: any[]): void;
|
|
30
|
+
} ? Arg : never;
|
|
4
31
|
export type OverlayOptions<OverlayAttrs = Record<string, any>> = {
|
|
5
32
|
defaultOpen?: boolean;
|
|
6
33
|
props?: OverlayAttrs;
|
|
@@ -11,7 +11,7 @@ function _useOverlay() {
|
|
|
11
11
|
isMounted: !!defaultOpen,
|
|
12
12
|
destroyOnClose: !!destroyOnClose,
|
|
13
13
|
originalProps: props || {},
|
|
14
|
-
props: { ...props
|
|
14
|
+
props: { ...props }
|
|
15
15
|
});
|
|
16
16
|
overlays.push(options);
|
|
17
17
|
return {
|
|
@@ -24,9 +24,9 @@ function _useOverlay() {
|
|
|
24
24
|
const open = (id, props) => {
|
|
25
25
|
const overlay = getOverlay(id);
|
|
26
26
|
if (props) {
|
|
27
|
-
|
|
27
|
+
overlay.props = { ...overlay.originalProps, ...props };
|
|
28
28
|
} else {
|
|
29
|
-
|
|
29
|
+
overlay.props = { ...overlay.originalProps };
|
|
30
30
|
}
|
|
31
31
|
overlay.isOpen = true;
|
|
32
32
|
overlay.isMounted = true;
|
|
@@ -58,7 +58,7 @@ function _useOverlay() {
|
|
|
58
58
|
};
|
|
59
59
|
const patch = (id, props) => {
|
|
60
60
|
const overlay = getOverlay(id);
|
|
61
|
-
overlay.props = { ...props };
|
|
61
|
+
overlay.props = { ...overlay.props, ...props };
|
|
62
62
|
};
|
|
63
63
|
const getOverlay = (id) => {
|
|
64
64
|
const overlay = overlays.find((overlay2) => overlay2.id === id);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Ref, InjectionKey } from 'vue';
|
|
2
2
|
export declare const portalTargetInjectionKey: InjectionKey<Ref<string | HTMLElement>>;
|
|
3
3
|
export declare function usePortal(portal: Ref<string | HTMLElement | boolean | undefined>): import("vue").ComputedRef<{
|
|
4
4
|
to: string | HTMLElement;
|
|
@@ -48,7 +48,7 @@ export interface LinkSlots {
|
|
|
48
48
|
active: boolean;
|
|
49
49
|
}): any;
|
|
50
50
|
}
|
|
51
|
-
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<LinkProps,
|
|
51
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<LinkProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkProps> & Readonly<{}>, {
|
|
52
52
|
type: "reset" | "submit" | "button";
|
|
53
53
|
as: any;
|
|
54
54
|
activeClass: string;
|
|
@@ -9,7 +9,7 @@ export interface LinkBaseProps {
|
|
|
9
9
|
active?: boolean;
|
|
10
10
|
isExternal?: boolean;
|
|
11
11
|
}
|
|
12
|
-
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<LinkBaseProps,
|
|
12
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<LinkBaseProps, void, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkBaseProps> & Readonly<{}>, {
|
|
13
13
|
type: string;
|
|
14
14
|
as: string;
|
|
15
15
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ref, onScopeDispose } from "vue";
|
|
2
2
|
import { createHooks } from "hookable";
|
|
3
|
-
import appConfig from "#build/app.config";
|
|
4
|
-
import { useColorMode as useColorModeVueUse } from "@vueuse/core";
|
|
5
3
|
import { usePage } from "@inertiajs/vue3";
|
|
4
|
+
import { useColorMode as useColorModeVueUse } from "@vueuse/core";
|
|
5
|
+
import appConfig from "#build/app.config";
|
|
6
6
|
export { useHead } from "@unhead/vue";
|
|
7
7
|
export { useAppConfig } from "../vue/composables/useAppConfig.js";
|
|
8
8
|
export { defineShortcuts } from "../composables/defineShortcuts.js";
|
|
@@ -16,6 +16,8 @@ export const useRoute = () => {
|
|
|
16
16
|
};
|
|
17
17
|
export const useRouter = () => {
|
|
18
18
|
};
|
|
19
|
+
export const clearError = () => {
|
|
20
|
+
};
|
|
19
21
|
export const useColorMode = () => {
|
|
20
22
|
if (!appConfig.colorMode) {
|
|
21
23
|
return {
|
|
@@ -38,7 +38,8 @@ export default defineLocale({
|
|
|
38
38
|
carousel: {
|
|
39
39
|
prev: "\u0627\u0644\u0633\u0627\u0628\u0642",
|
|
40
40
|
next: "\u0627\u0644\u062A\u0627\u0644\u064A",
|
|
41
|
-
|
|
41
|
+
dots: "\u0627\u062E\u062A\u0631 \u0627\u0644\u0634\u0631\u064A\u062D\u0629 \u0627\u0644\u0645\u0631\u0627\u062F \u0639\u0631\u0636\u0647\u0627",
|
|
42
|
+
goto: "\u0627\u0644\u0630\u0647\u0627\u0628 \u0625\u0644\u0649 \u0634\u0631\u064A\u062D\u0629 {slide}"
|
|
42
43
|
},
|
|
43
44
|
modal: {
|
|
44
45
|
close: "\u0625\u063A\u0644\u0627\u0642"
|
|
@@ -37,6 +37,7 @@ export default defineLocale({
|
|
|
37
37
|
carousel: {
|
|
38
38
|
prev: "\u041D\u0430\u0437\u0430\u0434",
|
|
39
39
|
next: "\u041D\u0430\u043F\u0440\u0435\u0434",
|
|
40
|
+
dots: "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u043B\u0430\u0439\u0434 \u0437\u0430 \u043F\u043E\u043A\u0430\u0437\u0432\u0430\u043D\u0435",
|
|
40
41
|
goto: "\u041E\u0442\u0438\u0434\u0435\u0442\u0435 \u043D\u0430 \u0441\u043B\u0430\u0439\u0434 {slide}"
|
|
41
42
|
},
|
|
42
43
|
modal: {
|
|
@@ -37,6 +37,7 @@ export default defineLocale({
|
|
|
37
37
|
carousel: {
|
|
38
38
|
prev: "\u09AA\u09C2\u09B0\u09CD\u09AC\u09AC\u09B0\u09CD\u09A4\u09C0",
|
|
39
39
|
next: "\u09AA\u09B0\u09AC\u09B0\u09CD\u09A4\u09C0",
|
|
40
|
+
dots: "\u09AA\u09CD\u09B0\u09A6\u09B0\u09CD\u09B6\u09A8\u09C7\u09B0 \u099C\u09A8\u09CD\u09AF \u09B8\u09CD\u09B2\u09BE\u0987\u09A1 \u09A8\u09BF\u09B0\u09CD\u09AC\u09BE\u099A\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
40
41
|
goto: "\u09B8\u09CD\u09B2\u09BE\u0987\u09A1 {slide} \u098F \u09AF\u09BE\u09A8"
|
|
41
42
|
},
|
|
42
43
|
modal: {
|
|
@@ -36,8 +36,9 @@ export default defineLocale({
|
|
|
36
36
|
close: "\u062F\u0627\u062E\u0633\u062A\u0646"
|
|
37
37
|
},
|
|
38
38
|
carousel: {
|
|
39
|
-
prev: "\u067E\u06CE\u0634\u0648\u0648",
|
|
39
|
+
prev: "\u067E\u06CE\u0634\u0648\u0648\u06CC",
|
|
40
40
|
next: "\u062F\u0627\u0647\u0627\u062A\u0648\u0648",
|
|
41
|
+
dots: "\u0633\u0644\u0627\u06CC\u062F\u06CE\u06A9 \u0647\u06D5\u06B5\u0628\u0698\u06CE\u0631\u06D5 \u0628\u06C6 \u067E\u06CC\u0634\u0627\u0646\u062F\u0627\u0646",
|
|
41
42
|
goto: "\u0628\u0695\u06C6 \u0628\u06C6 \u0633\u0644\u0627\u06CC\u062F\u06CC {slide}"
|
|
42
43
|
},
|
|
43
44
|
modal: {
|