@byyuurin/ui 0.2.0 → 0.4.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/README.md +5 -3
- package/dist/module.json +1 -1
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/Accordion.vue +2 -2
- package/dist/runtime/components/Accordion.vue.d.ts +11 -7
- package/dist/runtime/components/Alert.vue +2 -1
- package/dist/runtime/components/Alert.vue.d.ts +4 -4
- package/dist/runtime/components/App.vue +2 -1
- package/dist/runtime/components/App.vue.d.ts +11 -7
- package/dist/runtime/components/Avatar.vue +2 -1
- package/dist/runtime/components/Avatar.vue.d.ts +4 -3
- package/dist/runtime/components/AvatarGroup.vue +2 -1
- package/dist/runtime/components/AvatarGroup.vue.d.ts +1 -1
- package/dist/runtime/components/Badge.vue +4 -3
- package/dist/runtime/components/Badge.vue.d.ts +2 -2
- package/dist/runtime/components/Breadcrumb.vue +2 -2
- package/dist/runtime/components/Breadcrumb.vue.d.ts +10 -6
- package/dist/runtime/components/Button.vue +8 -8
- package/dist/runtime/components/Button.vue.d.ts +1 -1
- package/dist/runtime/components/Calendar.vue +2 -1
- package/dist/runtime/components/Calendar.vue.d.ts +16 -12
- package/dist/runtime/components/Card.vue +2 -1
- package/dist/runtime/components/Card.vue.d.ts +1 -1
- package/dist/runtime/components/Carousel.vue +2 -1
- package/dist/runtime/components/Carousel.vue.d.ts +14 -10
- package/dist/runtime/components/Checkbox.vue +4 -2
- package/dist/runtime/components/Checkbox.vue.d.ts +4 -3
- package/dist/runtime/components/CheckboxGroup.vue +4 -3
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +11 -7
- package/dist/runtime/components/Chip.vue +5 -1
- package/dist/runtime/components/Chip.vue.d.ts +2 -2
- package/dist/runtime/components/Collapsible.vue +2 -1
- package/dist/runtime/components/Collapsible.vue.d.ts +2 -2
- package/dist/runtime/components/Drawer.vue +2 -1
- package/dist/runtime/components/Drawer.vue.d.ts +6 -6
- package/dist/runtime/components/DropdownMenu.vue +3 -3
- package/dist/runtime/components/DropdownMenu.vue.d.ts +17 -9
- package/dist/runtime/components/DropdownMenuContent.vue +11 -12
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +11 -7
- package/dist/runtime/components/FieldGroup.vue +2 -1
- package/dist/runtime/components/FieldGroup.vue.d.ts +2 -2
- package/dist/runtime/components/FileUpload.vue +267 -0
- package/dist/runtime/components/FileUpload.vue.d.ts +178 -0
- package/dist/runtime/components/Form.vue +2 -1
- package/dist/runtime/components/Form.vue.d.ts +13 -8
- package/dist/runtime/components/FormField.vue +6 -4
- package/dist/runtime/components/FormField.vue.d.ts +7 -2
- package/dist/runtime/components/Icon.vue.d.ts +1 -1
- package/dist/runtime/components/Input.vue +4 -4
- package/dist/runtime/components/Input.vue.d.ts +16 -12
- package/dist/runtime/components/InputNumber.vue +3 -2
- package/dist/runtime/components/InputNumber.vue.d.ts +128 -124
- package/dist/runtime/components/InputTags.vue +2 -1
- package/dist/runtime/components/InputTags.vue.d.ts +16 -11
- package/dist/runtime/components/Kbd.vue +2 -1
- package/dist/runtime/components/Kbd.vue.d.ts +2 -2
- package/dist/runtime/components/Link.vue +5 -3
- package/dist/runtime/components/Link.vue.d.ts +16 -6
- package/dist/runtime/components/LinkBase.vue.d.ts +2 -2
- package/dist/runtime/components/Marquee.vue +2 -1
- package/dist/runtime/components/Marquee.vue.d.ts +3 -3
- package/dist/runtime/components/Modal.vue +3 -2
- package/dist/runtime/components/Modal.vue.d.ts +6 -6
- package/dist/runtime/components/NavigationMenu.vue +2 -2
- package/dist/runtime/components/NavigationMenu.vue.d.ts +11 -7
- package/dist/runtime/components/Pagination.vue +2 -1
- package/dist/runtime/components/Pagination.vue.d.ts +4 -4
- package/dist/runtime/components/PinInput.vue +4 -4
- package/dist/runtime/components/PinInput.vue.d.ts +14 -10
- package/dist/runtime/components/Popover.vue +1 -1
- package/dist/runtime/components/Popover.vue.d.ts +11 -7
- package/dist/runtime/components/Progress.vue +2 -1
- package/dist/runtime/components/Progress.vue.d.ts +2 -2
- package/dist/runtime/components/RadioGroup.vue +3 -3
- package/dist/runtime/components/RadioGroup.vue.d.ts +11 -7
- package/dist/runtime/components/ScrollArea.vue +2 -1
- package/dist/runtime/components/ScrollArea.vue.d.ts +2 -2
- package/dist/runtime/components/Select.vue +282 -131
- package/dist/runtime/components/Select.vue.d.ts +103 -123
- package/dist/runtime/components/Separator.vue +2 -1
- package/dist/runtime/components/Separator.vue.d.ts +2 -2
- package/dist/runtime/components/Skeleton.vue +2 -1
- package/dist/runtime/components/Skeleton.vue.d.ts +2 -2
- package/dist/runtime/components/Slider.vue +2 -1
- package/dist/runtime/components/Slider.vue.d.ts +11 -7
- package/dist/runtime/components/Stepper.vue +117 -0
- package/dist/runtime/components/Stepper.vue.d.ts +83 -0
- package/dist/runtime/components/Switch.vue +3 -4
- package/dist/runtime/components/Switch.vue.d.ts +4 -3
- package/dist/runtime/components/Table.vue +2 -1
- package/dist/runtime/components/Table.vue.d.ts +13 -8
- package/dist/runtime/components/Tabs.vue +2 -2
- package/dist/runtime/components/Tabs.vue.d.ts +12 -8
- package/dist/runtime/components/Textarea.vue +3 -3
- package/dist/runtime/components/Textarea.vue.d.ts +16 -11
- package/dist/runtime/components/Timeline.vue +2 -1
- package/dist/runtime/components/Timeline.vue.d.ts +11 -7
- package/dist/runtime/components/Toast.vue +2 -1
- package/dist/runtime/components/Toast.vue.d.ts +5 -5
- package/dist/runtime/components/ToastProvider.vue +2 -2
- package/dist/runtime/components/ToastProvider.vue.d.ts +3 -3
- package/dist/runtime/components/Tooltip.vue +4 -4
- package/dist/runtime/components/Tooltip.vue.d.ts +2 -2
- package/dist/runtime/components/Tree.vue +241 -0
- package/dist/runtime/components/Tree.vue.d.ts +121 -0
- package/dist/runtime/composables/defineShortcuts.d.ts +1 -0
- package/dist/runtime/composables/defineShortcuts.js +44 -8
- package/dist/runtime/composables/useFileUpload.d.ts +19 -0
- package/dist/runtime/composables/useFileUpload.js +79 -0
- package/dist/runtime/composables/useLocale.d.ts +18 -0
- package/dist/runtime/locale/en.d.ts +9 -0
- package/dist/runtime/locale/en.js +9 -0
- package/dist/runtime/locale/zh_tw.d.ts +9 -0
- package/dist/runtime/locale/zh_tw.js +9 -0
- package/dist/runtime/types/html.d.ts +8 -0
- package/dist/runtime/types/html.js +0 -0
- package/dist/runtime/types/index.d.ts +3 -0
- package/dist/runtime/types/index.js +3 -0
- package/dist/runtime/types/input.d.ts +5 -5
- package/dist/runtime/types/locale.d.ts +9 -0
- package/dist/runtime/types/utils.d.ts +4 -4
- package/dist/runtime/utils/index.d.ts +3 -3
- package/dist/runtime/utils/link.d.ts +2 -1
- package/dist/runtime/utils/link.js +40 -29
- package/dist/runtime/vue/components/Icon.vue.d.ts +1 -1
- package/dist/runtime/vue/components/Link.vue +7 -12
- package/dist/runtime/vue/components/Link.vue.d.ts +11 -40
- package/dist/setup.d.mts +1 -1
- package/dist/shared/{ui.DpbffTXs.d.mts → ui.CGCKYv7g.d.mts} +6 -2
- package/dist/shared/{ui.CzIlLITK.mjs → ui.DYMXCXO6.mjs} +9 -5
- package/dist/shared/{ui.DLOxhmP0.mjs → ui.DcEKQd0n.mjs} +490 -20
- package/dist/unocss.mjs +1 -1
- package/dist/unplugin.d.mts +1 -1
- package/dist/unplugin.mjs +2 -2
- package/dist/vite.d.mts +1 -1
- package/dist/vite.mjs +2 -2
- package/package.json +31 -31
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import type { VariantProps } from '@byyuurin/ui-kit';
|
|
2
2
|
import type { PrimitiveProps } from 'reka-ui';
|
|
3
|
-
import type { InputHTMLAttributes } from 'vue';
|
|
4
3
|
import theme from '#build/ui/input';
|
|
5
4
|
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
6
5
|
import type { ComponentBaseProps, ComponentStyler, ComponentUIProps } from '../types';
|
|
6
|
+
import type { InputHTMLAttributes } from '../types/html';
|
|
7
7
|
import type { ModelModifiers } from '../types/input';
|
|
8
8
|
import type { AcceptableValue, MaybeNull, StaticSlot } from '../types/utils';
|
|
9
9
|
export type InputValue = AcceptableValue;
|
|
10
10
|
type ThemeVariants = VariantProps<typeof theme>;
|
|
11
|
-
export interface InputProps<T extends InputValue = InputValue> extends ComponentBaseProps, UseComponentIconsProps {
|
|
11
|
+
export interface InputProps<T extends InputValue = InputValue> extends ComponentBaseProps, UseComponentIconsProps, /** @vue-ignore */ Omit<InputHTMLAttributes, 'name' | 'type' | 'placeholder' | 'required' | 'autocomplete' | 'autofocus' | 'disabled'> {
|
|
12
12
|
/**
|
|
13
13
|
* The element or component this component should render as.
|
|
14
14
|
* @default "div"
|
|
@@ -35,7 +35,7 @@ export interface InputProps<T extends InputValue = InputValue> extends Component
|
|
|
35
35
|
disabled?: boolean;
|
|
36
36
|
defaultValue?: T;
|
|
37
37
|
modelValue?: T;
|
|
38
|
-
modelModifiers?: ModelModifiers
|
|
38
|
+
modelModifiers?: ModelModifiers<T>;
|
|
39
39
|
ui?: ComponentUIProps<typeof theme>;
|
|
40
40
|
}
|
|
41
41
|
export interface InputEmits<T extends InputValue> {
|
|
@@ -54,23 +54,27 @@ export interface InputSlots {
|
|
|
54
54
|
ui: ComponentStyler<typeof theme>;
|
|
55
55
|
}>;
|
|
56
56
|
}
|
|
57
|
-
declare const
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
declare const _default: typeof __VLS_export;
|
|
58
|
+
export default _default;
|
|
59
|
+
declare const __VLS_export: <T extends InputValue>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
60
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<InputProps<T> & {
|
|
60
61
|
onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
62
|
+
onChange?: ((event: Event) => any) | undefined;
|
|
61
63
|
"onUpdate:modelValue"?: ((value: T) => any) | undefined;
|
|
62
|
-
}> &
|
|
64
|
+
}> & (typeof globalThis extends {
|
|
65
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
66
|
+
} ? P : {});
|
|
63
67
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
64
68
|
inputRef: import("vue").Ref<MaybeNull<HTMLInputElement>, MaybeNull<HTMLInputElement>>;
|
|
65
69
|
}>) => void;
|
|
66
70
|
attrs: any;
|
|
67
71
|
slots: InputSlots;
|
|
68
|
-
emit: ((evt: "
|
|
72
|
+
emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: T) => void);
|
|
69
73
|
}>) => import("vue").VNode & {
|
|
70
74
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
71
75
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
77
|
+
[K in keyof T]: T[K];
|
|
78
|
+
} : {
|
|
75
79
|
[K in keyof T as K]: T[K];
|
|
76
|
-
} & {};
|
|
80
|
+
}) & {};
|
|
@@ -10,6 +10,7 @@ import { useAppConfig } from "#imports";
|
|
|
10
10
|
import { useFieldGroup } from "../composables/useFieldGroup";
|
|
11
11
|
import { useFormField } from "../composables/useFormField";
|
|
12
12
|
import { useLocale } from "../composables/useLocale";
|
|
13
|
+
import { pick } from "../utils";
|
|
13
14
|
import { cv, merge } from "../utils/style";
|
|
14
15
|
import Button from "./Button.vue";
|
|
15
16
|
defineOptions({ inheritAttrs: false });
|
|
@@ -58,9 +59,9 @@ const appConfig = useAppConfig();
|
|
|
58
59
|
const ui = computed(() => {
|
|
59
60
|
const styler = cv(merge(theme, appConfig.ui.inputNumber));
|
|
60
61
|
return styler({
|
|
61
|
-
...props,
|
|
62
|
-
size: fieldGroupSize.value || formFieldSize.value,
|
|
62
|
+
...pick(props, ["variant", "orientation", "disabled"]),
|
|
63
63
|
color: color.value,
|
|
64
|
+
size: fieldGroupSize.value || formFieldSize.value,
|
|
64
65
|
highlight: highlight.value,
|
|
65
66
|
fieldGroup: orientation.value,
|
|
66
67
|
increment: props.orientation === "vertical" ? !!props.increment || !!props.decrement : !!props.increment,
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import type { VariantProps } from '@byyuurin/ui-kit';
|
|
2
2
|
import type { NumberFieldRootProps } from 'reka-ui';
|
|
3
3
|
import theme from '#build/ui/input-number';
|
|
4
|
-
import type { ButtonProps, ComponentBaseProps, ComponentUIProps, IconProps } from '../types';
|
|
4
|
+
import type { ButtonProps, ComponentBaseProps, ComponentUIProps, IconProps, LinkPropsKeys } from '../types';
|
|
5
|
+
import type { InputHTMLAttributes } from '../types/html';
|
|
5
6
|
import type { ModelModifiers } from '../types/input';
|
|
6
7
|
import type { MaybeNull, StaticSlot } from '../types/utils';
|
|
7
8
|
type ThemeVariants = VariantProps<typeof theme>;
|
|
8
|
-
|
|
9
|
+
type InputNumberValue = MaybeNull<number>;
|
|
10
|
+
export interface InputNumberProps<T extends InputNumberValue = InputNumberValue> extends ComponentBaseProps, Pick<NumberFieldRootProps, 'modelValue' | 'defaultValue' | 'min' | 'max' | 'step' | 'stepSnapping' | 'disabled' | 'required' | 'id' | 'name' | 'formatOptions' | 'disableWheelChange' | 'invertWheelChange' | 'readonly'>, /** @vue-ignore */ Omit<InputHTMLAttributes, 'disabled' | 'min' | 'max' | 'readonly' | 'required' | 'step' | 'name' | 'placeholder'> {
|
|
9
11
|
/**
|
|
10
12
|
* The element or component this component should render as.
|
|
11
13
|
* @default "div"
|
|
@@ -30,7 +32,7 @@ export interface InputNumberProps extends ComponentBaseProps, Pick<NumberFieldRo
|
|
|
30
32
|
* Configure the increment button. The `color` and `size` are inherited.
|
|
31
33
|
* @default { variant: 'link' }
|
|
32
34
|
*/
|
|
33
|
-
increment?: boolean | ButtonProps
|
|
35
|
+
increment?: boolean | Omit<ButtonProps, LinkPropsKeys>;
|
|
34
36
|
/**
|
|
35
37
|
* The icon displayed to increment the value.
|
|
36
38
|
* @default app.icons.plus
|
|
@@ -42,7 +44,7 @@ export interface InputNumberProps extends ComponentBaseProps, Pick<NumberFieldRo
|
|
|
42
44
|
* Configure the decrement button. The `color` and `size` are inherited.
|
|
43
45
|
* @default { variant: 'link' }
|
|
44
46
|
*/
|
|
45
|
-
decrement?: boolean | ButtonProps
|
|
47
|
+
decrement?: boolean | Omit<ButtonProps, LinkPropsKeys>;
|
|
46
48
|
/**
|
|
47
49
|
* The icon displayed to decrement the value.
|
|
48
50
|
* @default app.icons.minus
|
|
@@ -52,11 +54,11 @@ export interface InputNumberProps extends ComponentBaseProps, Pick<NumberFieldRo
|
|
|
52
54
|
decrementDisabled?: boolean;
|
|
53
55
|
autofocus?: boolean;
|
|
54
56
|
autofocusDelay?: number;
|
|
55
|
-
modelModifiers?: Pick<ModelModifiers
|
|
57
|
+
modelModifiers?: Pick<ModelModifiers<T>, 'optional'>;
|
|
56
58
|
ui?: ComponentUIProps<typeof theme>;
|
|
57
59
|
}
|
|
58
|
-
export interface InputNumberEmits {
|
|
59
|
-
'update:modelValue': [value:
|
|
60
|
+
export interface InputNumberEmits<T extends InputNumberValue = InputNumberValue> {
|
|
61
|
+
'update:modelValue': [value: T];
|
|
60
62
|
'blur': [event: FocusEvent];
|
|
61
63
|
'change': [event: Event];
|
|
62
64
|
}
|
|
@@ -64,123 +66,125 @@ export interface InputNumberSlots {
|
|
|
64
66
|
increment: StaticSlot;
|
|
65
67
|
decrement: StaticSlot;
|
|
66
68
|
}
|
|
67
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<InputNumberProps, {
|
|
68
|
-
inputRef: import("vue").Ref<MaybeNull<{
|
|
69
|
-
$: import("vue").ComponentInternalInstance;
|
|
70
|
-
$data: {};
|
|
71
|
-
$props: {
|
|
72
|
-
readonly asChild?: boolean | undefined;
|
|
73
|
-
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
74
|
-
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
75
|
-
$attrs: {
|
|
76
|
-
[x: string]: unknown;
|
|
77
|
-
};
|
|
78
|
-
$refs: {
|
|
79
|
-
[x: string]: unknown;
|
|
80
|
-
};
|
|
81
|
-
$slots: Readonly<{
|
|
82
|
-
[name: string]: import("vue").Slot<any> | undefined;
|
|
83
|
-
}>;
|
|
84
|
-
$root: import("vue").ComponentPublicInstance | null;
|
|
85
|
-
$parent: import("vue").ComponentPublicInstance | null;
|
|
86
|
-
$host: Element | null;
|
|
87
|
-
$emit: (event: string, ...args: any[]) => void;
|
|
88
|
-
$el: any;
|
|
89
|
-
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
90
|
-
as: import("reka-ui").AsTag | import("vue").Component;
|
|
91
|
-
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
92
|
-
beforeCreate?: (() => void) | (() => void)[];
|
|
93
|
-
created?: (() => void) | (() => void)[];
|
|
94
|
-
beforeMount?: (() => void) | (() => void)[];
|
|
95
|
-
mounted?: (() => void) | (() => void)[];
|
|
96
|
-
beforeUpdate?: (() => void) | (() => void)[];
|
|
97
|
-
updated?: (() => void) | (() => void)[];
|
|
98
|
-
activated?: (() => void) | (() => void)[];
|
|
99
|
-
deactivated?: (() => void) | (() => void)[];
|
|
100
|
-
beforeDestroy?: (() => void) | (() => void)[];
|
|
101
|
-
beforeUnmount?: (() => void) | (() => void)[];
|
|
102
|
-
destroyed?: (() => void) | (() => void)[];
|
|
103
|
-
unmounted?: (() => void) | (() => void)[];
|
|
104
|
-
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
105
|
-
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
106
|
-
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
107
|
-
};
|
|
108
|
-
$forceUpdate: () => void;
|
|
109
|
-
$nextTick: typeof import("vue").nextTick;
|
|
110
|
-
$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;
|
|
111
|
-
} & Readonly<{
|
|
112
|
-
as: import("reka-ui").AsTag | import("vue").Component;
|
|
113
|
-
}> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
114
|
-
$slots: {
|
|
115
|
-
default?: (props: {}) => any;
|
|
116
|
-
};
|
|
117
|
-
}>, MaybeNull<{
|
|
118
|
-
$: import("vue").ComponentInternalInstance;
|
|
119
|
-
$data: {};
|
|
120
|
-
$props: {
|
|
121
|
-
readonly asChild?: boolean | undefined;
|
|
122
|
-
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
123
|
-
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
124
|
-
$attrs: {
|
|
125
|
-
[x: string]: unknown;
|
|
126
|
-
};
|
|
127
|
-
$refs: {
|
|
128
|
-
[x: string]: unknown;
|
|
129
|
-
};
|
|
130
|
-
$slots: Readonly<{
|
|
131
|
-
[name: string]: import("vue").Slot<any> | undefined;
|
|
132
|
-
}>;
|
|
133
|
-
$root: import("vue").ComponentPublicInstance | null;
|
|
134
|
-
$parent: import("vue").ComponentPublicInstance | null;
|
|
135
|
-
$host: Element | null;
|
|
136
|
-
$emit: (event: string, ...args: any[]) => void;
|
|
137
|
-
$el: any;
|
|
138
|
-
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
139
|
-
as: import("reka-ui").AsTag | import("vue").Component;
|
|
140
|
-
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
141
|
-
beforeCreate?: (() => void) | (() => void)[];
|
|
142
|
-
created?: (() => void) | (() => void)[];
|
|
143
|
-
beforeMount?: (() => void) | (() => void)[];
|
|
144
|
-
mounted?: (() => void) | (() => void)[];
|
|
145
|
-
beforeUpdate?: (() => void) | (() => void)[];
|
|
146
|
-
updated?: (() => void) | (() => void)[];
|
|
147
|
-
activated?: (() => void) | (() => void)[];
|
|
148
|
-
deactivated?: (() => void) | (() => void)[];
|
|
149
|
-
beforeDestroy?: (() => void) | (() => void)[];
|
|
150
|
-
beforeUnmount?: (() => void) | (() => void)[];
|
|
151
|
-
destroyed?: (() => void) | (() => void)[];
|
|
152
|
-
unmounted?: (() => void) | (() => void)[];
|
|
153
|
-
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
154
|
-
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
155
|
-
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
156
|
-
};
|
|
157
|
-
$forceUpdate: () => void;
|
|
158
|
-
$nextTick: typeof import("vue").nextTick;
|
|
159
|
-
$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;
|
|
160
|
-
} & Readonly<{
|
|
161
|
-
as: import("reka-ui").AsTag | import("vue").Component;
|
|
162
|
-
}> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
163
|
-
$slots: {
|
|
164
|
-
default?: (props: {}) => any;
|
|
165
|
-
};
|
|
166
|
-
}>>;
|
|
167
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
168
|
-
change: (event: Event) => any;
|
|
169
|
-
blur: (event: FocusEvent) => any;
|
|
170
|
-
"update:modelValue": (value: number) => any;
|
|
171
|
-
}, string, import("vue").PublicProps, Readonly<InputNumberProps> & Readonly<{
|
|
172
|
-
onChange?: ((event: Event) => any) | undefined;
|
|
173
|
-
onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
174
|
-
"onUpdate:modelValue"?: ((value: number) => any) | undefined;
|
|
175
|
-
}>, {
|
|
176
|
-
orientation: "horizontal" | "vertical";
|
|
177
|
-
increment: boolean | ButtonProps;
|
|
178
|
-
decrement: boolean | ButtonProps;
|
|
179
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, InputNumberSlots>;
|
|
180
69
|
declare const _default: typeof __VLS_export;
|
|
181
70
|
export default _default;
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
71
|
+
declare const __VLS_export: <T extends InputNumberValue = InputNumberValue>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
72
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<InputNumberProps<T> & {
|
|
73
|
+
onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
74
|
+
onChange?: ((event: Event) => any) | undefined;
|
|
75
|
+
"onUpdate:modelValue"?: ((value: T) => any) | undefined;
|
|
76
|
+
}> & (typeof globalThis extends {
|
|
77
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
78
|
+
} ? P : {});
|
|
79
|
+
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
80
|
+
inputRef: import("vue").Ref<MaybeNull<{
|
|
81
|
+
$: import("vue").ComponentInternalInstance;
|
|
82
|
+
$data: {};
|
|
83
|
+
$props: {
|
|
84
|
+
readonly asChild?: boolean | undefined;
|
|
85
|
+
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
86
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
87
|
+
$attrs: {
|
|
88
|
+
[x: string]: unknown;
|
|
89
|
+
};
|
|
90
|
+
$refs: {
|
|
91
|
+
[x: string]: unknown;
|
|
92
|
+
};
|
|
93
|
+
$slots: Readonly<{
|
|
94
|
+
[name: string]: import("vue").Slot<any> | undefined;
|
|
95
|
+
}>;
|
|
96
|
+
$root: import("vue").ComponentPublicInstance | null;
|
|
97
|
+
$parent: import("vue").ComponentPublicInstance | null;
|
|
98
|
+
$host: Element | null;
|
|
99
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
100
|
+
$el: any;
|
|
101
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
102
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
103
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
104
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
105
|
+
created?: (() => void) | (() => void)[];
|
|
106
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
107
|
+
mounted?: (() => void) | (() => void)[];
|
|
108
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
109
|
+
updated?: (() => void) | (() => void)[];
|
|
110
|
+
activated?: (() => void) | (() => void)[];
|
|
111
|
+
deactivated?: (() => void) | (() => void)[];
|
|
112
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
113
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
114
|
+
destroyed?: (() => void) | (() => void)[];
|
|
115
|
+
unmounted?: (() => void) | (() => void)[];
|
|
116
|
+
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
117
|
+
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
118
|
+
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
119
|
+
};
|
|
120
|
+
$forceUpdate: () => void;
|
|
121
|
+
$nextTick: typeof import("vue").nextTick;
|
|
122
|
+
$watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 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;
|
|
123
|
+
} & Readonly<{
|
|
124
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
125
|
+
}> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
126
|
+
$slots: {
|
|
127
|
+
default?: (props: {}) => any;
|
|
128
|
+
};
|
|
129
|
+
}>, MaybeNull<{
|
|
130
|
+
$: import("vue").ComponentInternalInstance;
|
|
131
|
+
$data: {};
|
|
132
|
+
$props: {
|
|
133
|
+
readonly asChild?: boolean | undefined;
|
|
134
|
+
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
135
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
136
|
+
$attrs: {
|
|
137
|
+
[x: string]: unknown;
|
|
138
|
+
};
|
|
139
|
+
$refs: {
|
|
140
|
+
[x: string]: unknown;
|
|
141
|
+
};
|
|
142
|
+
$slots: Readonly<{
|
|
143
|
+
[name: string]: import("vue").Slot<any> | undefined;
|
|
144
|
+
}>;
|
|
145
|
+
$root: import("vue").ComponentPublicInstance | null;
|
|
146
|
+
$parent: import("vue").ComponentPublicInstance | null;
|
|
147
|
+
$host: Element | null;
|
|
148
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
149
|
+
$el: any;
|
|
150
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
151
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
152
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
153
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
154
|
+
created?: (() => void) | (() => void)[];
|
|
155
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
156
|
+
mounted?: (() => void) | (() => void)[];
|
|
157
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
158
|
+
updated?: (() => void) | (() => void)[];
|
|
159
|
+
activated?: (() => void) | (() => void)[];
|
|
160
|
+
deactivated?: (() => void) | (() => void)[];
|
|
161
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
162
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
163
|
+
destroyed?: (() => void) | (() => void)[];
|
|
164
|
+
unmounted?: (() => void) | (() => void)[];
|
|
165
|
+
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
166
|
+
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
167
|
+
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
168
|
+
};
|
|
169
|
+
$forceUpdate: () => void;
|
|
170
|
+
$nextTick: typeof import("vue").nextTick;
|
|
171
|
+
$watch<T_1 extends string | ((...args: any) => any)>(source: T_1, cb: T_1 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;
|
|
172
|
+
} & Readonly<{
|
|
173
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
174
|
+
}> & Omit<Readonly<import("reka-ui").NumberFieldInputProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
175
|
+
$slots: {
|
|
176
|
+
default?: (props: {}) => any;
|
|
177
|
+
};
|
|
178
|
+
}>>;
|
|
179
|
+
}>) => void;
|
|
180
|
+
attrs: any;
|
|
181
|
+
slots: InputNumberSlots;
|
|
182
|
+
emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: T) => void);
|
|
183
|
+
}>) => import("vue").VNode & {
|
|
184
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
186
185
|
};
|
|
186
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
187
|
+
[K in keyof T]: T[K];
|
|
188
|
+
} : {
|
|
189
|
+
[K in keyof T as K]: T[K];
|
|
190
|
+
}) & {};
|
|
@@ -10,6 +10,7 @@ import { useAppConfig } from "#imports";
|
|
|
10
10
|
import { useComponentIcons } from "../composables/useComponentIcons";
|
|
11
11
|
import { useFieldGroup } from "../composables/useFieldGroup";
|
|
12
12
|
import { useFormField } from "../composables/useFormField";
|
|
13
|
+
import { pick } from "../utils";
|
|
13
14
|
import { cv, merge } from "../utils/style";
|
|
14
15
|
import Avatar from "./Avatar.vue";
|
|
15
16
|
import Icon from "./Icon.vue";
|
|
@@ -60,7 +61,7 @@ const appConfig = useAppConfig();
|
|
|
60
61
|
const ui = computed(() => {
|
|
61
62
|
const styler = cv(merge(theme, appConfig.ui.inputTags));
|
|
62
63
|
return styler({
|
|
63
|
-
...props,
|
|
64
|
+
...pick(props, ["variant", "loading"]),
|
|
64
65
|
color: color.value,
|
|
65
66
|
size: fieldGroupSize.value || formFieldSize.value,
|
|
66
67
|
highlight: highlight.value,
|
|
@@ -3,10 +3,11 @@ import type { AcceptableInputValue, TagsInputRootEmits, TagsInputRootProps } fro
|
|
|
3
3
|
import theme from '#build/ui/input-tags';
|
|
4
4
|
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
5
5
|
import type { ComponentBaseProps, ComponentStyler, ComponentUIProps, IconProps } from '../types';
|
|
6
|
+
import type { InputHTMLAttributes } from '../types/html';
|
|
6
7
|
import type { StaticSlot } from '../types/utils';
|
|
7
8
|
type ThemeVariants = VariantProps<typeof theme>;
|
|
8
9
|
export type InputTagsItem = AcceptableInputValue;
|
|
9
|
-
export interface InputTagsProps<T extends InputTagsItem = InputTagsItem> extends ComponentBaseProps, Pick<TagsInputRootProps<T>, 'modelValue' | 'defaultValue' | 'addOnPaste' | 'addOnTab' | 'addOnBlur' | 'duplicate' | 'disabled' | 'delimiter' | 'max' | 'id' | 'convertValue' | 'displayValue' | 'name' | 'required'>, UseComponentIconsProps {
|
|
10
|
+
export interface InputTagsProps<T extends InputTagsItem = InputTagsItem> extends ComponentBaseProps, Pick<TagsInputRootProps<T>, 'modelValue' | 'defaultValue' | 'addOnPaste' | 'addOnTab' | 'addOnBlur' | 'duplicate' | 'disabled' | 'delimiter' | 'max' | 'id' | 'convertValue' | 'displayValue' | 'name' | 'required'>, UseComponentIconsProps, /** @vue-ignore */ Omit<InputHTMLAttributes, 'disabled' | 'max' | 'required' | 'name' | 'placeholder'> {
|
|
10
11
|
/**
|
|
11
12
|
* The element or component this component should render as.
|
|
12
13
|
* @default "div"
|
|
@@ -26,7 +27,7 @@ export interface InputTagsProps<T extends InputTagsItem = InputTagsItem> extends
|
|
|
26
27
|
autofocusDelay?: number;
|
|
27
28
|
/**
|
|
28
29
|
* The icon displayed to delete a tag.
|
|
29
|
-
* @default
|
|
30
|
+
* @default app.icons.close
|
|
30
31
|
*/
|
|
31
32
|
deleteIcon?: IconProps['name'];
|
|
32
33
|
/** Highlight the ring color like a focus state. */
|
|
@@ -59,27 +60,31 @@ export interface InputTagsSlots<T extends InputTagsItem = InputTagsItem> {
|
|
|
59
60
|
ui: ComponentStyler<typeof theme>;
|
|
60
61
|
}>;
|
|
61
62
|
}
|
|
62
|
-
declare const
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
declare const _default: typeof __VLS_export;
|
|
64
|
+
export default _default;
|
|
65
|
+
declare const __VLS_export: <T extends InputTagsItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
66
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<InputTagsProps<AcceptableInputValue> & {
|
|
65
67
|
onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
68
|
+
onChange?: ((event: Event) => any) | undefined;
|
|
66
69
|
onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
67
70
|
onInvalid?: ((payload: T) => any) | undefined;
|
|
68
71
|
"onUpdate:modelValue"?: ((payload: T[]) => any) | undefined;
|
|
69
72
|
onAddTag?: ((payload: T) => any) | undefined;
|
|
70
73
|
onRemoveTag?: ((payload: T) => any) | undefined;
|
|
71
|
-
}> &
|
|
74
|
+
}> & (typeof globalThis extends {
|
|
75
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
76
|
+
} ? P : {});
|
|
72
77
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
73
78
|
inputRef: Readonly<import("vue").Ref<HTMLInputElement, HTMLInputElement>>;
|
|
74
79
|
}>) => void;
|
|
75
80
|
attrs: any;
|
|
76
81
|
slots: InputTagsSlots<T>;
|
|
77
|
-
emit: ((evt: "
|
|
82
|
+
emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "invalid", payload: T) => void) & ((evt: "update:modelValue", payload: T[]) => void) & ((evt: "addTag", payload: T) => void) & ((evt: "removeTag", payload: T) => void);
|
|
78
83
|
}>) => import("vue").VNode & {
|
|
79
84
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
80
85
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
87
|
+
[K in keyof T]: T[K];
|
|
88
|
+
} : {
|
|
84
89
|
[K in keyof T as K]: T[K];
|
|
85
|
-
} & {};
|
|
90
|
+
}) & {};
|
|
@@ -7,6 +7,7 @@ import theme from "#build/ui/kbd";
|
|
|
7
7
|
import { Primitive } from "reka-ui";
|
|
8
8
|
import { useAppConfig } from "#imports";
|
|
9
9
|
import { useKbd } from "../composables/useKbd";
|
|
10
|
+
import { pick } from "../utils";
|
|
10
11
|
import { cv, merge } from "../utils/style";
|
|
11
12
|
const props = defineProps({
|
|
12
13
|
as: { type: null, required: false, default: "kbd" },
|
|
@@ -21,7 +22,7 @@ const { getKbdKey } = useKbd();
|
|
|
21
22
|
const appConfig = useAppConfig();
|
|
22
23
|
const ui = computed(() => {
|
|
23
24
|
const styler = cv(merge(theme, appConfig.ui.kbd));
|
|
24
|
-
return styler(props);
|
|
25
|
+
return styler(pick(props, ["color", "variant", "size"]));
|
|
25
26
|
});
|
|
26
27
|
</script>
|
|
27
28
|
|
|
@@ -22,11 +22,11 @@ export interface KbdProps extends ComponentBaseProps {
|
|
|
22
22
|
export interface KbdSlots {
|
|
23
23
|
default: StaticSlot;
|
|
24
24
|
}
|
|
25
|
+
declare const _default: typeof __VLS_export;
|
|
26
|
+
export default _default;
|
|
25
27
|
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<KbdProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<KbdProps> & Readonly<{}>, {
|
|
26
28
|
as: import("reka-ui").AsTag | import("vue").Component;
|
|
27
29
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, KbdSlots>;
|
|
28
|
-
declare const _default: typeof __VLS_export;
|
|
29
|
-
export default _default;
|
|
30
30
|
type __VLS_WithSlots<T, S> = T & {
|
|
31
31
|
new (): {
|
|
32
32
|
$slots: S;
|
|
@@ -9,6 +9,7 @@ import { useForwardProps } from "reka-ui";
|
|
|
9
9
|
import { computed } from "vue";
|
|
10
10
|
import theme from "#build/ui/link";
|
|
11
11
|
import { useAppConfig, useRoute } from "#imports";
|
|
12
|
+
import { pick } from "../utils";
|
|
12
13
|
import { isPartiallyEqual } from "../utils/link";
|
|
13
14
|
import { cv, merge } from "../utils/style";
|
|
14
15
|
import LinkBase from "./LinkBase.vue";
|
|
@@ -29,13 +30,14 @@ const props = defineProps({
|
|
|
29
30
|
to: { type: null, required: false },
|
|
30
31
|
href: { type: null, required: false },
|
|
31
32
|
external: { type: Boolean, required: false },
|
|
32
|
-
target: { type: [String, Object], required: false },
|
|
33
|
-
rel: { type: [String, Object], required: false },
|
|
33
|
+
target: { type: [String, Object, null], required: false },
|
|
34
|
+
rel: { type: [String, Object, null], required: false },
|
|
34
35
|
noRel: { type: Boolean, required: false },
|
|
35
36
|
prefetchedClass: { type: String, required: false },
|
|
36
37
|
prefetch: { type: Boolean, required: false },
|
|
37
38
|
prefetchOn: { type: [String, Object], required: false },
|
|
38
39
|
noPrefetch: { type: Boolean, required: false },
|
|
40
|
+
trailingSlash: { type: String, required: false },
|
|
39
41
|
activeClass: { type: String, required: false },
|
|
40
42
|
exactActiveClass: { type: String, required: false },
|
|
41
43
|
ariaCurrentValue: { type: String, required: false, default: "page" },
|
|
@@ -82,7 +84,7 @@ function resolveLinkClass({ route: route2, isActive, isExactActive }) {
|
|
|
82
84
|
const active = isLinkActive({ route: route2, isActive, isExactActive });
|
|
83
85
|
if (props.raw)
|
|
84
86
|
return [props.class, active ? props.activeClass : props.inactiveClass];
|
|
85
|
-
return ui.value.base({ ...props, active });
|
|
87
|
+
return ui.value.base({ ...pick(props, ["class", "disabled"]), active });
|
|
86
88
|
}
|
|
87
89
|
</script>
|
|
88
90
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PrimitiveProps } from 'reka-ui';
|
|
2
|
-
import type { ButtonHTMLAttributes } from 'vue';
|
|
3
2
|
import type { RouteLocationRaw, RouterLinkProps } from 'vue-router';
|
|
4
3
|
import type { ComponentBaseProps } from '../types';
|
|
4
|
+
import type { AnchorHTMLAttributes, ButtonHTMLAttributes } from '../types/html';
|
|
5
5
|
import type { StaticSlot } from '../types/utils';
|
|
6
6
|
interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
|
|
7
7
|
/**
|
|
@@ -19,11 +19,11 @@ interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
|
|
|
19
19
|
/**
|
|
20
20
|
* Where to display the linked URL, as the name for a browsing context.
|
|
21
21
|
*/
|
|
22
|
-
target?: '_blank' | '_parent' | '_self' | '_top' | (string & {});
|
|
22
|
+
target?: '_blank' | '_parent' | '_self' | '_top' | (string & {}) | null;
|
|
23
23
|
/**
|
|
24
24
|
* A rel attribute value to apply on the link. Defaults to "noopener noreferrer" for external links.
|
|
25
25
|
*/
|
|
26
|
-
rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {});
|
|
26
|
+
rel?: 'noopener' | 'noreferrer' | 'nofollow' | 'sponsored' | 'ugc' | (string & {}) | null;
|
|
27
27
|
/**
|
|
28
28
|
* If set to true, no rel attribute will be added to the link
|
|
29
29
|
*/
|
|
@@ -47,8 +47,13 @@ interface NuxtLinkProps extends Omit<RouterLinkProps, 'to'> {
|
|
|
47
47
|
* Escape hatch to disable `prefetch` attribute.
|
|
48
48
|
*/
|
|
49
49
|
noPrefetch?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* An option to either add or remove trailing slashes in the `href` for this specific link.
|
|
52
|
+
* Overrides the global `trailingSlash` option if provided.
|
|
53
|
+
*/
|
|
54
|
+
trailingSlash?: 'append' | 'remove';
|
|
50
55
|
}
|
|
51
|
-
export interface LinkProps extends ComponentBaseProps, NuxtLinkProps {
|
|
56
|
+
export interface LinkProps extends ComponentBaseProps, Omit<NuxtLinkProps, 'custom'>, /** @vue-ignore */ Omit<ButtonHTMLAttributes, 'type' | 'disabled'>, /** @vue-ignore */ Omit<AnchorHTMLAttributes, 'href' | 'target' | 'rel' | 'type'> {
|
|
52
57
|
/**
|
|
53
58
|
* The element or component this component should render as when not a link.
|
|
54
59
|
* @default "button"
|
|
@@ -75,19 +80,24 @@ export interface LinkProps extends ComponentBaseProps, NuxtLinkProps {
|
|
|
75
80
|
/** When `true`, only styles from `class`, `activeClass`, and `inactiveClass` will be applied. */
|
|
76
81
|
raw?: boolean;
|
|
77
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Link-related props that can be omitted from ButtonProps when link functionality is not needed.
|
|
85
|
+
* Use this with `Omit<ButtonProps, LinkPropsKeys>` in components where buttons should not act as links.
|
|
86
|
+
*/
|
|
87
|
+
export type LinkPropsKeys = 'to' | 'href' | 'target' | 'rel' | 'noRel' | 'external' | 'prefetch' | 'prefetchOn' | 'prefetchedClass' | 'noPrefetch' | 'trailingSlash' | 'replace' | 'ariaCurrentValue' | 'active' | 'activeClass' | 'exact' | 'exactQuery' | 'exactHash' | 'inactiveClass' | 'download' | 'ping' | 'referrerpolicy' | 'hreflang' | 'media';
|
|
78
88
|
export interface LinkSlots {
|
|
79
89
|
default: StaticSlot<{
|
|
80
90
|
active: boolean;
|
|
81
91
|
}>;
|
|
82
92
|
}
|
|
93
|
+
declare const _default: typeof __VLS_export;
|
|
94
|
+
export default _default;
|
|
83
95
|
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<LinkProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkProps> & Readonly<{}>, {
|
|
84
96
|
active: boolean;
|
|
85
97
|
type: "reset" | "submit" | "button";
|
|
86
98
|
ariaCurrentValue: "page" | "step" | "location" | "date" | "time" | "true" | "false";
|
|
87
99
|
as: import("reka-ui").AsTag | import("vue").Component;
|
|
88
100
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, LinkSlots>;
|
|
89
|
-
declare const _default: typeof __VLS_export;
|
|
90
|
-
export default _default;
|
|
91
101
|
type __VLS_WithSlots<T, S> = T & {
|
|
92
102
|
new (): {
|
|
93
103
|
$slots: S;
|
|
@@ -18,14 +18,14 @@ export interface LinkBaseProps {
|
|
|
18
18
|
active?: boolean;
|
|
19
19
|
isExternal?: boolean;
|
|
20
20
|
}
|
|
21
|
+
declare const _default: typeof __VLS_export;
|
|
22
|
+
export default _default;
|
|
21
23
|
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<LinkBaseProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<LinkBaseProps> & Readonly<{}>, {
|
|
22
24
|
type: string;
|
|
23
25
|
as: import("reka-ui").AsTag | import("vue").Component;
|
|
24
26
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
|
|
25
27
|
default?: (props: {}) => any;
|
|
26
28
|
}>;
|
|
27
|
-
declare const _default: typeof __VLS_export;
|
|
28
|
-
export default _default;
|
|
29
29
|
type __VLS_WithSlots<T, S> = T & {
|
|
30
30
|
new (): {
|
|
31
31
|
$slots: S;
|
|
@@ -6,6 +6,7 @@ import theme from "#build/ui/marquee";
|
|
|
6
6
|
import { Primitive } from "reka-ui";
|
|
7
7
|
import { computed } from "vue";
|
|
8
8
|
import { useAppConfig } from "#imports";
|
|
9
|
+
import { pick } from "../utils";
|
|
9
10
|
import { cv, merge } from "../utils/style";
|
|
10
11
|
const props = defineProps({
|
|
11
12
|
as: { type: null, required: false },
|
|
@@ -21,7 +22,7 @@ defineSlots();
|
|
|
21
22
|
const appConfig = useAppConfig();
|
|
22
23
|
const ui = computed(() => {
|
|
23
24
|
const styler = cv(merge(theme, appConfig.ui.marquee));
|
|
24
|
-
return styler(props);
|
|
25
|
+
return styler(pick(props, ["pauseOnHover", "orientation", "reverse", "overlay"]));
|
|
25
26
|
});
|
|
26
27
|
</script>
|
|
27
28
|
|