@nuxt/ui 3.0.1 → 3.1.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/accordion.ts +25 -4
- package/.nuxt/ui/alert.ts +52 -31
- package/.nuxt/ui/avatar-group.ts +24 -3
- package/.nuxt/ui/avatar.ts +26 -5
- package/.nuxt/ui/badge.ts +56 -35
- package/.nuxt/ui/breadcrumb.ts +28 -7
- package/.nuxt/ui/button-group.ts +23 -2
- package/.nuxt/ui/button.ts +66 -45
- package/.nuxt/ui/calendar.ts +39 -18
- package/.nuxt/ui/card.ts +28 -7
- package/.nuxt/ui/carousel.ts +29 -8
- package/.nuxt/ui/checkbox-group.ts +82 -0
- package/.nuxt/ui/checkbox.ts +163 -29
- package/.nuxt/ui/chip.ts +31 -10
- package/.nuxt/ui/collapsible.ts +23 -2
- package/.nuxt/ui/color-picker.ts +26 -5
- package/.nuxt/ui/command-palette.ts +37 -16
- package/.nuxt/ui/container.ts +24 -3
- package/.nuxt/ui/context-menu.ts +56 -35
- package/.nuxt/ui/drawer.ts +33 -12
- package/.nuxt/ui/dropdown-menu.ts +57 -36
- package/.nuxt/ui/form-field.ts +29 -8
- package/.nuxt/ui/form.ts +23 -2
- package/.nuxt/ui/index.ts +1 -0
- package/.nuxt/ui/input-menu.ts +65 -44
- package/.nuxt/ui/input-number.ts +43 -22
- package/.nuxt/ui/input.ts +46 -25
- package/.nuxt/ui/kbd.ts +27 -6
- package/.nuxt/ui/link.ts +26 -5
- package/.nuxt/ui/modal.ts +28 -7
- package/.nuxt/ui/navigation-menu.ts +103 -84
- package/.nuxt/ui/pagination.ts +23 -2
- package/.nuxt/ui/pin-input.ts +43 -22
- package/.nuxt/ui/popover.ts +25 -4
- package/.nuxt/ui/progress.ts +40 -19
- package/.nuxt/ui/radio-group.ts +273 -37
- package/.nuxt/ui/select-menu.ts +59 -35
- package/.nuxt/ui/select.ts +55 -34
- package/.nuxt/ui/separator.ts +31 -10
- package/.nuxt/ui/skeleton.ts +24 -3
- package/.nuxt/ui/slideover.ts +27 -6
- package/.nuxt/ui/slider.ts +39 -18
- package/.nuxt/ui/stepper.ts +41 -20
- package/.nuxt/ui/switch.ts +44 -23
- package/.nuxt/ui/table.ts +38 -17
- package/.nuxt/ui/tabs.ts +55 -34
- package/.nuxt/ui/textarea.ts +63 -37
- package/.nuxt/ui/toast.ts +47 -26
- package/.nuxt/ui/toaster.ts +23 -2
- package/.nuxt/ui/tooltip.ts +25 -4
- package/.nuxt/ui/tree.ts +41 -20
- package/.nuxt/ui.css +56 -12
- package/README.md +11 -0
- package/cli/templates.mjs +18 -17
- package/dist/module.d.mts +2 -1
- package/dist/module.json +5 -5
- package/dist/module.mjs +11 -7
- package/dist/runtime/components/Accordion.vue +36 -92
- package/dist/runtime/components/Accordion.vue.d.ts +91 -0
- package/dist/runtime/components/Alert.vue +37 -100
- package/dist/runtime/components/Alert.vue.d.ts +96 -0
- package/dist/runtime/components/App.vue +28 -34
- package/dist/runtime/components/App.vue.d.ts +24 -0
- package/dist/runtime/components/Avatar.vue +47 -78
- package/dist/runtime/components/Avatar.vue.d.ts +60 -0
- package/dist/runtime/components/AvatarGroup.vue +40 -77
- package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
- package/dist/runtime/components/Badge.vue +33 -62
- package/dist/runtime/components/Badge.vue.d.ts +62 -0
- package/dist/runtime/components/Breadcrumb.vue +36 -88
- package/dist/runtime/components/Breadcrumb.vue.d.ts +82 -0
- package/dist/runtime/components/Button.vue +96 -105
- package/dist/runtime/components/Button.vue.d.ts +73 -0
- package/dist/runtime/components/ButtonGroup.vue +20 -46
- package/dist/runtime/components/ButtonGroup.vue.d.ts +55 -0
- package/dist/runtime/components/Calendar.vue +73 -127
- package/dist/runtime/components/Calendar.vue.d.ts +107 -0
- package/dist/runtime/components/Card.vue +18 -40
- package/dist/runtime/components/Card.vue.d.ts +38 -0
- package/dist/runtime/components/Carousel.vue +112 -230
- package/dist/runtime/components/Carousel.vue.d.ts +120 -0
- package/dist/runtime/components/Checkbox.vue +52 -93
- package/dist/runtime/components/Checkbox.vue.d.ts +76 -0
- package/dist/runtime/components/CheckboxGroup.vue +121 -0
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +75 -0
- package/dist/runtime/components/Chip.vue +26 -69
- package/dist/runtime/components/Chip.vue.d.ts +71 -0
- package/dist/runtime/components/Collapsible.vue +22 -41
- package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
- package/dist/runtime/components/ColorPicker.vue +111 -197
- package/dist/runtime/components/ColorPicker.vue.d.ts +63 -0
- package/dist/runtime/components/CommandPalette.vue +94 -234
- package/dist/runtime/components/CommandPalette.vue.d.ts +173 -0
- package/dist/runtime/components/Container.vue +15 -28
- package/dist/runtime/components/Container.vue.d.ts +27 -0
- package/dist/runtime/components/ContextMenu.vue +32 -119
- package/dist/runtime/components/ContextMenu.vue.d.ts +127 -0
- package/dist/runtime/components/ContextMenuContent.vue +71 -72
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +105 -0
- package/dist/runtime/components/Drawer.vue +49 -87
- package/dist/runtime/components/Drawer.vue.d.ts +88 -0
- package/dist/runtime/components/DropdownMenu.vue +37 -129
- package/dist/runtime/components/DropdownMenu.vue.d.ts +141 -0
- package/dist/runtime/components/DropdownMenuContent.vue +76 -79
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +55 -0
- package/dist/runtime/components/Form.vue +135 -219
- package/dist/runtime/components/Form.vue.d.ts +66 -0
- package/dist/runtime/components/FormField.vue +36 -77
- package/dist/runtime/components/FormField.vue.d.ts +70 -0
- package/dist/runtime/components/Icon.vue +12 -19
- package/dist/runtime/components/Icon.vue.d.ts +17 -0
- package/dist/runtime/components/Input.vue +82 -140
- package/dist/runtime/components/Input.vue.d.ts +91 -0
- package/dist/runtime/components/InputMenu.vue +193 -302
- package/dist/runtime/components/InputMenu.vue.d.ts +312 -0
- package/dist/runtime/components/InputNumber.vue +71 -133
- package/dist/runtime/components/InputNumber.vue.d.ts +193 -0
- package/dist/runtime/components/Kbd.vue +20 -46
- package/dist/runtime/components/Kbd.vue.d.ts +55 -0
- package/dist/runtime/components/Link.vue +98 -173
- package/dist/runtime/components/Link.vue.d.ts +124 -0
- package/dist/runtime/components/LinkBase.vue +33 -41
- package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
- package/dist/runtime/components/Modal.vue +53 -116
- package/dist/runtime/components/Modal.vue.d.ts +109 -0
- package/dist/runtime/components/NavigationMenu.vue +78 -186
- package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
- package/dist/runtime/components/OverlayProvider.vue +14 -18
- package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
- package/dist/runtime/components/Pagination.vue +46 -140
- package/dist/runtime/components/Pagination.vue.d.ts +143 -0
- package/dist/runtime/components/PinInput.vue +61 -78
- package/dist/runtime/components/PinInput.vue.d.ts +68 -0
- package/dist/runtime/components/Popover.vue +47 -84
- package/dist/runtime/components/Popover.vue.d.ts +80 -0
- package/dist/runtime/components/Progress.vue +70 -131
- package/dist/runtime/components/Progress.vue.d.ts +97 -0
- package/dist/runtime/components/RadioGroup.vue +75 -126
- package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
- package/dist/runtime/components/Select.vue +115 -202
- package/dist/runtime/components/Select.vue.d.ts +139 -0
- package/dist/runtime/components/SelectMenu.vue +167 -281
- package/dist/runtime/components/SelectMenu.vue.d.ts +184 -0
- package/dist/runtime/components/Separator.vue +29 -71
- package/dist/runtime/components/Separator.vue.d.ts +75 -0
- package/dist/runtime/components/Skeleton.vue +21 -23
- package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
- package/dist/runtime/components/Slideover.vue +53 -120
- package/dist/runtime/components/Slideover.vue.d.ts +111 -0
- package/dist/runtime/components/Slider.vue +46 -84
- package/dist/runtime/components/Slider.vue.d.ts +71 -0
- package/dist/runtime/components/Stepper.vue +44 -113
- package/dist/runtime/components/Stepper.vue.d.ts +89 -0
- package/dist/runtime/components/Switch.vue +45 -93
- package/dist/runtime/components/Switch.vue.d.ts +73 -0
- package/dist/runtime/components/Table.vue +165 -264
- package/dist/runtime/components/Table.vue.d.ts +183 -0
- package/dist/runtime/components/Tabs.vue +40 -105
- package/dist/runtime/components/Tabs.vue.d.ts +104 -0
- package/dist/runtime/components/Textarea.vue +113 -158
- package/dist/runtime/components/Textarea.vue.d.ts +95 -0
- package/dist/runtime/components/Toast.vue +49 -110
- package/dist/runtime/components/Toast.vue.d.ts +95 -0
- package/dist/runtime/components/Toaster.vue +70 -107
- package/dist/runtime/components/Toaster.vue.d.ts +63 -0
- package/dist/runtime/components/Tooltip.vue +38 -65
- package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
- package/dist/runtime/components/Tree.vue +57 -150
- package/dist/runtime/components/Tree.vue.d.ts +128 -0
- package/dist/runtime/composables/defineShortcuts.d.ts +1 -1
- package/dist/runtime/composables/defineShortcuts.js +0 -1
- package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
- package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
- package/dist/runtime/composables/useFormField.d.ts +2 -2
- package/dist/runtime/composables/useFormField.js +1 -1
- package/dist/runtime/composables/useOverlay.d.ts +16 -8
- package/dist/runtime/composables/useOverlay.js +14 -6
- package/dist/runtime/composables/usePortal.d.ts +6 -0
- package/dist/runtime/composables/usePortal.js +17 -0
- package/dist/runtime/index.css +1 -1
- package/dist/runtime/inertia/components/Link.vue +146 -0
- package/dist/runtime/inertia/components/Link.vue.d.ts +92 -0
- package/dist/runtime/inertia/stubs.d.ts +43 -0
- package/dist/runtime/inertia/stubs.js +82 -0
- package/dist/runtime/locale/bg.d.ts +3 -0
- package/dist/runtime/locale/bg.js +54 -0
- package/dist/runtime/locale/hy.d.ts +3 -0
- package/dist/runtime/locale/hy.js +54 -0
- package/dist/runtime/locale/index.d.ts +6 -1
- package/dist/runtime/locale/index.js +6 -1
- package/dist/runtime/locale/kk.d.ts +3 -0
- package/dist/runtime/locale/kk.js +54 -0
- package/dist/runtime/locale/tj.d.ts +3 -0
- package/dist/runtime/locale/tj.js +54 -0
- package/dist/runtime/locale/ug_cn.d.ts +3 -0
- package/dist/runtime/locale/ug_cn.js +55 -0
- package/dist/runtime/types/form.d.ts +5 -1
- package/dist/runtime/types/index.d.ts +2 -0
- package/dist/runtime/types/index.js +2 -0
- package/dist/runtime/types/utils.d.ts +70 -10
- package/dist/runtime/utils/index.d.ts +1 -0
- package/dist/runtime/utils/index.js +3 -0
- package/dist/runtime/utils/link.d.ts +4 -27
- package/dist/runtime/utils/link.js +32 -1
- package/dist/runtime/utils/tv.js +2 -2
- package/dist/runtime/vue/components/Icon.vue +7 -8
- package/dist/runtime/vue/components/Icon.vue.d.ts +14 -0
- package/dist/runtime/vue/components/Link.vue +118 -199
- package/dist/runtime/vue/components/Link.vue.d.ts +124 -0
- package/dist/runtime/vue/stubs.d.ts +5 -0
- package/dist/runtime/vue/stubs.js +11 -2
- package/dist/shared/{ui.BCaWD5Ek.mjs → ui.D7lOOabO.mjs} +623 -364
- package/dist/types.d.mts +5 -1
- package/dist/unplugin.d.mts +6 -1
- package/dist/unplugin.mjs +25 -4
- package/dist/vite.mjs +1 -1
- package/package.json +122 -64
- package/dist/module.cjs +0 -62
- package/dist/module.d.cts +0 -44
- package/dist/module.d.ts +0 -44
- package/dist/shared/ui.C6uTSFTI.cjs +0 -3555
- package/dist/types.d.ts +0 -1
- package/dist/unplugin.cjs +0 -232
- package/dist/unplugin.d.cts +0 -61
- package/dist/unplugin.d.ts +0 -61
- package/dist/vite.cjs +0 -23
- package/dist/vite.d.cts +0 -15
- package/dist/vite.d.ts +0 -15
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import type { NumberFieldRootProps } from 'reka-ui';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/ui/input-number';
|
|
4
|
+
import type { ButtonProps } from '../types';
|
|
5
|
+
import type { ComponentConfig } from '../types/utils';
|
|
6
|
+
type InputNumber = ComponentConfig<typeof theme, AppConfig, 'inputNumber'>;
|
|
7
|
+
export interface InputNumberProps extends Pick<NumberFieldRootProps, 'modelValue' | 'defaultValue' | 'min' | 'max' | 'step' | 'stepSnapping' | 'disabled' | 'required' | 'id' | 'name' | 'formatOptions' | 'disableWheelChange'> {
|
|
8
|
+
/**
|
|
9
|
+
* The element or component this component should render as.
|
|
10
|
+
* @defaultValue 'div'
|
|
11
|
+
*/
|
|
12
|
+
as?: any;
|
|
13
|
+
/** The placeholder text when the input is empty. */
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
color?: InputNumber['variants']['color'];
|
|
16
|
+
variant?: InputNumber['variants']['variant'];
|
|
17
|
+
size?: InputNumber['variants']['size'];
|
|
18
|
+
/** Highlight the ring color like a focus state. */
|
|
19
|
+
highlight?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* The orientation of the input menu.
|
|
22
|
+
* @defaultValue 'horizontal'
|
|
23
|
+
*/
|
|
24
|
+
orientation?: 'vertical' | 'horizontal';
|
|
25
|
+
/**
|
|
26
|
+
* Configure the increment button. The `color` and `size` are inherited.
|
|
27
|
+
* @defaultValue { variant: 'link' }
|
|
28
|
+
*/
|
|
29
|
+
increment?: ButtonProps;
|
|
30
|
+
/**
|
|
31
|
+
* The icon displayed to increment the value.
|
|
32
|
+
* @defaultValue appConfig.ui.icons.plus
|
|
33
|
+
* @IconifyIcon
|
|
34
|
+
*/
|
|
35
|
+
incrementIcon?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Configure the decrement button. The `color` and `size` are inherited.
|
|
38
|
+
* @defaultValue { variant: 'link' }
|
|
39
|
+
*/
|
|
40
|
+
decrement?: ButtonProps;
|
|
41
|
+
/**
|
|
42
|
+
* The icon displayed to decrement the value.
|
|
43
|
+
* @defaultValue appConfig.ui.icons.minus
|
|
44
|
+
* @IconifyIcon
|
|
45
|
+
*/
|
|
46
|
+
decrementIcon?: string;
|
|
47
|
+
autofocus?: boolean;
|
|
48
|
+
autofocusDelay?: number;
|
|
49
|
+
/**
|
|
50
|
+
* The locale to use for formatting and parsing numbers.
|
|
51
|
+
* @defaultValue UApp.locale.code
|
|
52
|
+
*/
|
|
53
|
+
locale?: string;
|
|
54
|
+
class?: any;
|
|
55
|
+
ui?: InputNumber['slots'];
|
|
56
|
+
}
|
|
57
|
+
export interface InputNumberEmits {
|
|
58
|
+
(e: 'update:modelValue', payload: number): void;
|
|
59
|
+
(e: 'blur', event: FocusEvent): void;
|
|
60
|
+
(e: 'change', payload: Event): void;
|
|
61
|
+
}
|
|
62
|
+
export interface InputNumberSlots {
|
|
63
|
+
increment(props?: {}): any;
|
|
64
|
+
decrement(props?: {}): any;
|
|
65
|
+
}
|
|
66
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<InputNumberProps>, {
|
|
67
|
+
orientation: string;
|
|
68
|
+
}>>, {
|
|
69
|
+
inputRef: import("vue").Ref<({
|
|
70
|
+
$: import("vue").ComponentInternalInstance;
|
|
71
|
+
$data: {};
|
|
72
|
+
$props: {
|
|
73
|
+
readonly asChild?: boolean | undefined;
|
|
74
|
+
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
75
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
76
|
+
$attrs: {
|
|
77
|
+
[x: string]: unknown;
|
|
78
|
+
};
|
|
79
|
+
$refs: {
|
|
80
|
+
[x: string]: unknown;
|
|
81
|
+
};
|
|
82
|
+
$slots: Readonly<{
|
|
83
|
+
[name: string]: import("vue").Slot<any> | undefined;
|
|
84
|
+
}>;
|
|
85
|
+
$root: import("vue").ComponentPublicInstance | null;
|
|
86
|
+
$parent: import("vue").ComponentPublicInstance | null;
|
|
87
|
+
$host: Element | null;
|
|
88
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
89
|
+
$el: any;
|
|
90
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
91
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
92
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
93
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
94
|
+
created?: (() => void) | (() => void)[];
|
|
95
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
96
|
+
mounted?: (() => void) | (() => void)[];
|
|
97
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
98
|
+
updated?: (() => void) | (() => void)[];
|
|
99
|
+
activated?: (() => void) | (() => void)[];
|
|
100
|
+
deactivated?: (() => void) | (() => void)[];
|
|
101
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
102
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
103
|
+
destroyed?: (() => void) | (() => void)[];
|
|
104
|
+
unmounted?: (() => void) | (() => void)[];
|
|
105
|
+
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
106
|
+
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
107
|
+
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
108
|
+
};
|
|
109
|
+
$forceUpdate: () => void;
|
|
110
|
+
$nextTick: typeof import("vue").nextTick;
|
|
111
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
|
|
112
|
+
} & Readonly<{
|
|
113
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
114
|
+
}> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
115
|
+
$slots: {
|
|
116
|
+
default?(_: {}): any;
|
|
117
|
+
};
|
|
118
|
+
}) | null, ({
|
|
119
|
+
$: import("vue").ComponentInternalInstance;
|
|
120
|
+
$data: {};
|
|
121
|
+
$props: {
|
|
122
|
+
readonly asChild?: boolean | undefined;
|
|
123
|
+
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
124
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
125
|
+
$attrs: {
|
|
126
|
+
[x: string]: unknown;
|
|
127
|
+
};
|
|
128
|
+
$refs: {
|
|
129
|
+
[x: string]: unknown;
|
|
130
|
+
};
|
|
131
|
+
$slots: Readonly<{
|
|
132
|
+
[name: string]: import("vue").Slot<any> | undefined;
|
|
133
|
+
}>;
|
|
134
|
+
$root: import("vue").ComponentPublicInstance | null;
|
|
135
|
+
$parent: import("vue").ComponentPublicInstance | null;
|
|
136
|
+
$host: Element | null;
|
|
137
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
138
|
+
$el: any;
|
|
139
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
140
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
141
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
142
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
143
|
+
created?: (() => void) | (() => void)[];
|
|
144
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
145
|
+
mounted?: (() => void) | (() => void)[];
|
|
146
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
147
|
+
updated?: (() => void) | (() => void)[];
|
|
148
|
+
activated?: (() => void) | (() => void)[];
|
|
149
|
+
deactivated?: (() => void) | (() => void)[];
|
|
150
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
151
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
152
|
+
destroyed?: (() => void) | (() => void)[];
|
|
153
|
+
unmounted?: (() => void) | (() => void)[];
|
|
154
|
+
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
155
|
+
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
156
|
+
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
157
|
+
};
|
|
158
|
+
$forceUpdate: () => void;
|
|
159
|
+
$nextTick: typeof import("vue").nextTick;
|
|
160
|
+
$watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (...args: [R, R, import("@vue/reactivity").OnCleanup]) => any : (...args: [any, any, import("@vue/reactivity").OnCleanup]) => any, options?: import("vue").WatchOptions): import("vue").WatchStopHandle;
|
|
161
|
+
} & Readonly<{
|
|
162
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
163
|
+
}> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
164
|
+
$slots: {
|
|
165
|
+
default?(_: {}): any;
|
|
166
|
+
};
|
|
167
|
+
}) | null>;
|
|
168
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
|
|
169
|
+
orientation: "vertical" | "horizontal";
|
|
170
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<InputNumberSlots> & InputNumberSlots>;
|
|
171
|
+
export default _default;
|
|
172
|
+
type __VLS_WithDefaults<P, D> = {
|
|
173
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
174
|
+
default: D[K];
|
|
175
|
+
}> : P[K];
|
|
176
|
+
};
|
|
177
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
178
|
+
type __VLS_TypePropsToOption<T> = {
|
|
179
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
180
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
181
|
+
} : {
|
|
182
|
+
type: import('vue').PropType<T[K]>;
|
|
183
|
+
required: true;
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
187
|
+
new (): {
|
|
188
|
+
$slots: S;
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
type __VLS_PrettifyLocal<T> = {
|
|
192
|
+
[K in keyof T]: T[K];
|
|
193
|
+
} & {};
|
|
@@ -1,54 +1,28 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import theme from '#build/ui/kbd'
|
|
6
|
-
import type { KbdKey } from '../composables/useKbd'
|
|
7
|
-
import { tv } from '../utils/tv'
|
|
8
|
-
|
|
9
|
-
const appConfigKbd = _appConfig as AppConfig & { ui: { kbd: Partial<typeof theme> } }
|
|
10
|
-
|
|
11
|
-
const kbd = tv({ extend: tv(theme), ...(appConfigKbd.ui?.kbd || {}) })
|
|
12
|
-
|
|
13
|
-
type KbdVariants = VariantProps<typeof kbd>
|
|
14
|
-
|
|
15
|
-
export interface KbdProps {
|
|
16
|
-
/**
|
|
17
|
-
* The element or component this component should render as.
|
|
18
|
-
* @defaultValue 'kbd'
|
|
19
|
-
*/
|
|
20
|
-
as?: any
|
|
21
|
-
value?: KbdKey | string
|
|
22
|
-
/**
|
|
23
|
-
* @defaultValue 'outline'
|
|
24
|
-
*/
|
|
25
|
-
variant?: KbdVariants['variant']
|
|
26
|
-
/**
|
|
27
|
-
* @defaultValue 'md'
|
|
28
|
-
*/
|
|
29
|
-
size?: KbdVariants['size']
|
|
30
|
-
class?: any
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface KbdSlots {
|
|
34
|
-
default(props?: {}): any
|
|
35
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/kbd";
|
|
36
3
|
</script>
|
|
37
4
|
|
|
38
|
-
<script setup
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { useKbd } from "../composables/useKbd";
|
|
10
|
+
import { tv } from "../utils/tv";
|
|
11
|
+
const props = defineProps({
|
|
12
|
+
as: { type: null, required: false, default: "kbd" },
|
|
13
|
+
value: { type: null, required: false },
|
|
14
|
+
variant: { type: null, required: false },
|
|
15
|
+
size: { type: null, required: false },
|
|
16
|
+
class: { type: null, required: false }
|
|
17
|
+
});
|
|
18
|
+
defineSlots();
|
|
19
|
+
const { getKbdKey } = useKbd();
|
|
20
|
+
const appConfig = useAppConfig();
|
|
21
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.kbd || {} }));
|
|
48
22
|
</script>
|
|
49
23
|
|
|
50
24
|
<template>
|
|
51
|
-
<Primitive :as="as" :class="
|
|
25
|
+
<Primitive :as="as" :class="ui({ variant, size, class: props.class })">
|
|
52
26
|
<slot>
|
|
53
27
|
{{ getKbdKey(value) }}
|
|
54
28
|
</slot>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/ui/kbd';
|
|
3
|
+
import type { KbdKey } from '../composables/useKbd';
|
|
4
|
+
import type { ComponentConfig } from '../types/utils';
|
|
5
|
+
type Kbd = ComponentConfig<typeof theme, AppConfig, 'kbd'>;
|
|
6
|
+
export interface KbdProps {
|
|
7
|
+
/**
|
|
8
|
+
* The element or component this component should render as.
|
|
9
|
+
* @defaultValue 'kbd'
|
|
10
|
+
*/
|
|
11
|
+
as?: any;
|
|
12
|
+
value?: KbdKey | string;
|
|
13
|
+
/**
|
|
14
|
+
* @defaultValue 'outline'
|
|
15
|
+
*/
|
|
16
|
+
variant?: Kbd['variants']['variant'];
|
|
17
|
+
/**
|
|
18
|
+
* @defaultValue 'md'
|
|
19
|
+
*/
|
|
20
|
+
size?: Kbd['variants']['size'];
|
|
21
|
+
class?: any;
|
|
22
|
+
}
|
|
23
|
+
export interface KbdSlots {
|
|
24
|
+
default(props?: {}): any;
|
|
25
|
+
}
|
|
26
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<KbdProps>, {
|
|
27
|
+
as: string;
|
|
28
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<KbdProps>, {
|
|
29
|
+
as: string;
|
|
30
|
+
}>>> & Readonly<{}>, {
|
|
31
|
+
as: any;
|
|
32
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<KbdSlots> & KbdSlots>;
|
|
33
|
+
export default _default;
|
|
34
|
+
type __VLS_WithDefaults<P, D> = {
|
|
35
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
36
|
+
default: D[K];
|
|
37
|
+
}> : P[K];
|
|
38
|
+
};
|
|
39
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
40
|
+
type __VLS_TypePropsToOption<T> = {
|
|
41
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
42
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
43
|
+
} : {
|
|
44
|
+
type: import('vue').PropType<T[K]>;
|
|
45
|
+
required: true;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
49
|
+
new (): {
|
|
50
|
+
$slots: S;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
type __VLS_PrettifyLocal<T> = {
|
|
54
|
+
[K in keyof T]: T[K];
|
|
55
|
+
} & {};
|
|
@@ -1,174 +1,97 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
4
|
-
import _appConfig from '#build/app.config'
|
|
5
|
-
import type { RouterLinkProps, RouteLocationRaw } from 'vue-router'
|
|
6
|
-
import theme from '#build/ui/link'
|
|
7
|
-
import { tv } from '../utils/tv'
|
|
8
|
-
|
|
9
|
-
interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
|
|
10
|
-
/**
|
|
11
|
-
* Route Location the link should navigate to when clicked on.
|
|
12
|
-
*/
|
|
13
|
-
to?: RouteLocationRaw // need to manually type to avoid breaking typedPages
|
|
14
|
-
/**
|
|
15
|
-
* An alias for `to`. If used with `to`, `href` will be ignored
|
|
16
|
-
*/
|
|
17
|
-
href?: NuxtLinkProps['to']
|
|
18
|
-
/**
|
|
19
|
-
* Forces the link to be considered as external (true) or internal (false). This is helpful to handle edge-cases
|
|
20
|
-
*/
|
|
21
|
-
external?: boolean
|
|
22
|
-
/**
|
|
23
|
-
* Where to display the linked URL, as the name for a browsing context.
|
|
24
|
-
*/
|
|
25
|
-
target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null
|
|
26
|
-
/**
|
|
27
|
-
* A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
|
|
28
|
-
*/
|
|
29
|
-
rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null
|
|
30
|
-
/**
|
|
31
|
-
* If set to true, no rel attribute will be added to the link
|
|
32
|
-
*/
|
|
33
|
-
noRel?: boolean
|
|
34
|
-
/**
|
|
35
|
-
* A class to apply to links that have been prefetched.
|
|
36
|
-
*/
|
|
37
|
-
prefetchedClass?: string
|
|
38
|
-
/**
|
|
39
|
-
* When enabled will prefetch middleware, layouts and payloads of links in the viewport.
|
|
40
|
-
*/
|
|
41
|
-
prefetch?: boolean
|
|
42
|
-
/**
|
|
43
|
-
* Allows controlling when to prefetch links. By default, prefetch is triggered only on visibility.
|
|
44
|
-
*/
|
|
45
|
-
prefetchOn?: 'visibility' | 'interaction' | Partial<{
|
|
46
|
-
visibility: boolean
|
|
47
|
-
interaction: boolean
|
|
48
|
-
}>
|
|
49
|
-
/**
|
|
50
|
-
* Escape hatch to disable `prefetch` attribute.
|
|
51
|
-
*/
|
|
52
|
-
noPrefetch?: boolean
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const appConfigLink = _appConfig as AppConfig & { ui: { link: Partial<typeof theme> } }
|
|
56
|
-
|
|
57
|
-
const link = tv({ extend: tv(theme), ...(appConfigLink.ui?.link || {}) })
|
|
58
|
-
|
|
59
|
-
export interface LinkProps extends NuxtLinkProps {
|
|
60
|
-
/**
|
|
61
|
-
* The element or component this component should render as when not a link.
|
|
62
|
-
* @defaultValue 'button'
|
|
63
|
-
*/
|
|
64
|
-
as?: any
|
|
65
|
-
/**
|
|
66
|
-
* The type of the button when not a link.
|
|
67
|
-
* @defaultValue 'button'
|
|
68
|
-
*/
|
|
69
|
-
type?: ButtonHTMLAttributes['type']
|
|
70
|
-
disabled?: boolean
|
|
71
|
-
/** Force the link to be active independent of the current route. */
|
|
72
|
-
active?: boolean
|
|
73
|
-
/** Will only be active if the current route is an exact match. */
|
|
74
|
-
exact?: boolean
|
|
75
|
-
/** Allows controlling how the current route query sets the link as active. */
|
|
76
|
-
exactQuery?: boolean | 'partial'
|
|
77
|
-
/** Will only be active if the current route hash is an exact match. */
|
|
78
|
-
exactHash?: boolean
|
|
79
|
-
/** The class to apply when the link is inactive. */
|
|
80
|
-
inactiveClass?: string
|
|
81
|
-
custom?: boolean
|
|
82
|
-
/** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
|
|
83
|
-
raw?: boolean
|
|
84
|
-
class?: any
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export interface LinkSlots {
|
|
88
|
-
default(props: { active: boolean }): any
|
|
89
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/link";
|
|
90
3
|
</script>
|
|
91
4
|
|
|
92
|
-
<script setup
|
|
93
|
-
import { computed } from
|
|
94
|
-
import {
|
|
95
|
-
import {
|
|
96
|
-
import {
|
|
97
|
-
import {
|
|
98
|
-
import
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const props =
|
|
103
|
-
as:
|
|
104
|
-
type:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { defu } from "defu";
|
|
8
|
+
import { isEqual, diff } from "ohash/utils";
|
|
9
|
+
import { useForwardProps } from "reka-ui";
|
|
10
|
+
import { reactiveOmit } from "@vueuse/core";
|
|
11
|
+
import { useRoute, useAppConfig } from "#imports";
|
|
12
|
+
import { tv } from "../utils/tv";
|
|
13
|
+
import ULinkBase from "./LinkBase.vue";
|
|
14
|
+
defineOptions({ inheritAttrs: false });
|
|
15
|
+
const props = defineProps({
|
|
16
|
+
as: { type: null, required: false, default: "button" },
|
|
17
|
+
type: { type: null, required: false, default: "button" },
|
|
18
|
+
disabled: { type: Boolean, required: false },
|
|
19
|
+
active: { type: Boolean, required: false, default: void 0 },
|
|
20
|
+
exact: { type: Boolean, required: false },
|
|
21
|
+
exactQuery: { type: [Boolean, String], required: false },
|
|
22
|
+
exactHash: { type: Boolean, required: false },
|
|
23
|
+
inactiveClass: { type: String, required: false, default: "" },
|
|
24
|
+
custom: { type: Boolean, required: false },
|
|
25
|
+
raw: { type: Boolean, required: false },
|
|
26
|
+
class: { type: null, required: false },
|
|
27
|
+
to: { type: null, required: false },
|
|
28
|
+
href: { type: null, required: false },
|
|
29
|
+
external: { type: Boolean, required: false },
|
|
30
|
+
target: { type: [String, Object, null], required: false },
|
|
31
|
+
rel: { type: [String, Object, null], required: false },
|
|
32
|
+
noRel: { type: Boolean, required: false },
|
|
33
|
+
prefetchedClass: { type: String, required: false },
|
|
34
|
+
prefetch: { type: Boolean, required: false },
|
|
35
|
+
prefetchOn: { type: [String, Object], required: false },
|
|
36
|
+
noPrefetch: { type: Boolean, required: false },
|
|
37
|
+
activeClass: { type: String, required: false, default: "" },
|
|
38
|
+
exactActiveClass: { type: String, required: false },
|
|
39
|
+
ariaCurrentValue: { type: String, required: false, default: "page" },
|
|
40
|
+
viewTransition: { type: Boolean, required: false },
|
|
41
|
+
replace: { type: Boolean, required: false }
|
|
42
|
+
});
|
|
43
|
+
defineSlots();
|
|
44
|
+
const route = useRoute();
|
|
45
|
+
const appConfig = useAppConfig();
|
|
46
|
+
const nuxtLinkProps = useForwardProps(reactiveOmit(props, "as", "type", "disabled", "active", "exact", "exactQuery", "exactHash", "activeClass", "inactiveClass", "raw", "class"));
|
|
114
47
|
const ui = computed(() => tv({
|
|
115
|
-
extend:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
48
|
+
extend: tv(theme),
|
|
49
|
+
...defu({
|
|
50
|
+
variants: {
|
|
51
|
+
active: {
|
|
52
|
+
true: props.activeClass,
|
|
53
|
+
false: props.inactiveClass
|
|
54
|
+
}
|
|
120
55
|
}
|
|
121
|
-
}
|
|
122
|
-
}))
|
|
123
|
-
|
|
124
|
-
function isPartiallyEqual(item1: any, item2: any) {
|
|
56
|
+
}, appConfig.ui?.link || {})
|
|
57
|
+
}));
|
|
58
|
+
function isPartiallyEqual(item1, item2) {
|
|
125
59
|
const diffedKeys = diff(item1, item2).reduce((filtered, q) => {
|
|
126
|
-
if (q.type ===
|
|
127
|
-
filtered.add(q.key)
|
|
60
|
+
if (q.type === "added") {
|
|
61
|
+
filtered.add(q.key);
|
|
128
62
|
}
|
|
129
|
-
return filtered
|
|
130
|
-
}, new Set
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return isEqual(item1Filtered, item2Filtered)
|
|
63
|
+
return filtered;
|
|
64
|
+
}, /* @__PURE__ */ new Set());
|
|
65
|
+
const item1Filtered = Object.fromEntries(Object.entries(item1).filter(([key]) => !diffedKeys.has(key)));
|
|
66
|
+
const item2Filtered = Object.fromEntries(Object.entries(item2).filter(([key]) => !diffedKeys.has(key)));
|
|
67
|
+
return isEqual(item1Filtered, item2Filtered);
|
|
136
68
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return props.active
|
|
69
|
+
function isLinkActive({ route: linkRoute, isActive, isExactActive }) {
|
|
70
|
+
if (props.active !== void 0) {
|
|
71
|
+
return props.active;
|
|
141
72
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
if (!isPartiallyEqual(linkRoute.query, route.query)) return false
|
|
73
|
+
if (props.exactQuery === "partial") {
|
|
74
|
+
if (!isPartiallyEqual(linkRoute.query, route.query)) return false;
|
|
145
75
|
} else if (props.exactQuery === true) {
|
|
146
|
-
if (!isEqual(linkRoute.query, route.query)) return false
|
|
76
|
+
if (!isEqual(linkRoute.query, route.query)) return false;
|
|
147
77
|
}
|
|
148
|
-
|
|
149
78
|
if (props.exactHash && linkRoute.hash !== route.hash) {
|
|
150
|
-
return false
|
|
79
|
+
return false;
|
|
151
80
|
}
|
|
152
|
-
|
|
153
81
|
if (props.exact && isExactActive) {
|
|
154
|
-
return true
|
|
82
|
+
return true;
|
|
155
83
|
}
|
|
156
|
-
|
|
157
84
|
if (!props.exact && isActive) {
|
|
158
|
-
return true
|
|
85
|
+
return true;
|
|
159
86
|
}
|
|
160
|
-
|
|
161
|
-
return false
|
|
87
|
+
return false;
|
|
162
88
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const active = isLinkActive({ route, isActive, isExactActive })
|
|
166
|
-
|
|
89
|
+
function resolveLinkClass({ route: route2, isActive, isExactActive }) {
|
|
90
|
+
const active = isLinkActive({ route: route2, isActive, isExactActive });
|
|
167
91
|
if (props.raw) {
|
|
168
|
-
return [props.class, active ? props.activeClass : props.inactiveClass]
|
|
92
|
+
return [props.class, active ? props.activeClass : props.inactiveClass];
|
|
169
93
|
}
|
|
170
|
-
|
|
171
|
-
return ui.value({ class: props.class, active, disabled: props.disabled })
|
|
94
|
+
return ui.value({ class: props.class, active, disabled: props.disabled });
|
|
172
95
|
}
|
|
173
96
|
</script>
|
|
174
97
|
|
|
@@ -177,32 +100,34 @@ function resolveLinkClass({ route, isActive, isExactActive }: any) {
|
|
|
177
100
|
<template v-if="custom">
|
|
178
101
|
<slot
|
|
179
102
|
v-bind="{
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
103
|
+
...$attrs,
|
|
104
|
+
...exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
|
|
105
|
+
as,
|
|
106
|
+
type,
|
|
107
|
+
disabled,
|
|
108
|
+
href,
|
|
109
|
+
navigate,
|
|
110
|
+
rel,
|
|
111
|
+
target,
|
|
112
|
+
isExternal,
|
|
113
|
+
active: isLinkActive({ route: linkRoute, isActive, isExactActive })
|
|
114
|
+
}"
|
|
191
115
|
/>
|
|
192
116
|
</template>
|
|
193
117
|
<ULinkBase
|
|
194
118
|
v-else
|
|
195
119
|
v-bind="{
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
120
|
+
...$attrs,
|
|
121
|
+
...exact && isExactActive ? { 'aria-current': props.ariaCurrentValue } : {},
|
|
122
|
+
as,
|
|
123
|
+
type,
|
|
124
|
+
disabled,
|
|
125
|
+
href,
|
|
126
|
+
navigate,
|
|
127
|
+
rel,
|
|
128
|
+
target,
|
|
129
|
+
isExternal
|
|
130
|
+
}"
|
|
206
131
|
:class="resolveLinkClass({ route: linkRoute, isActive, isExactActive })"
|
|
207
132
|
>
|
|
208
133
|
<slot :active="isLinkActive({ route: linkRoute, isActive, isExactActive })" />
|