@byyuurin/ui 0.0.11 → 0.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/README.md +170 -58
- package/dist/module.d.mts +4 -13
- package/dist/module.json +4 -4
- package/dist/module.mjs +54 -20
- package/dist/runtime/components/Accordion.vue +28 -23
- package/dist/runtime/components/Accordion.vue.d.ts +51 -29
- package/dist/runtime/components/Alert.vue +47 -27
- package/dist/runtime/components/Alert.vue.d.ts +37 -25
- package/dist/runtime/components/App.vue +9 -8
- package/dist/runtime/components/App.vue.d.ts +22 -20
- package/dist/runtime/components/Avatar.vue +65 -21
- package/dist/runtime/components/Avatar.vue.d.ts +27 -13
- package/dist/runtime/components/AvatarGroup.vue +14 -10
- package/dist/runtime/components/AvatarGroup.vue.d.ts +12 -9
- package/dist/runtime/components/Badge.vue +64 -32
- package/dist/runtime/components/Badge.vue.d.ts +30 -29
- package/dist/runtime/components/Breadcrumb.vue +40 -22
- package/dist/runtime/components/Breadcrumb.vue.d.ts +48 -21
- package/dist/runtime/components/Button.vue +113 -52
- package/dist/runtime/components/Button.vue.d.ts +36 -20
- package/dist/runtime/components/Calendar.vue +48 -39
- package/dist/runtime/components/Calendar.vue.d.ts +58 -31
- package/dist/runtime/components/Card.vue +18 -14
- package/dist/runtime/components/Card.vue.d.ts +18 -14
- package/dist/runtime/components/Carousel.vue +80 -46
- package/dist/runtime/components/Carousel.vue.d.ts +46 -25
- package/dist/runtime/components/Checkbox.vue +60 -35
- package/dist/runtime/components/Checkbox.vue.d.ts +35 -28
- package/dist/runtime/components/Chip.vue +35 -32
- package/dist/runtime/components/Chip.vue.d.ts +33 -15
- package/dist/runtime/components/Collapsible.vue +13 -9
- package/dist/runtime/components/Collapsible.vue.d.ts +16 -8
- package/dist/runtime/components/Drawer.vue +80 -70
- package/dist/runtime/components/Drawer.vue.d.ts +51 -28
- package/dist/runtime/components/DropdownMenu.vue +23 -16
- package/dist/runtime/components/DropdownMenu.vue.d.ts +77 -36
- package/dist/runtime/components/DropdownMenuContent.vue +133 -103
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +38 -26
- package/dist/runtime/components/FieldGroup.vue +33 -0
- package/dist/runtime/components/FieldGroup.vue.d.ts +33 -0
- package/dist/runtime/components/Form.vue +172 -88
- package/dist/runtime/components/Form.vue.d.ts +69 -44
- package/dist/runtime/components/FormField.vue +108 -0
- package/dist/runtime/components/FormField.vue.d.ts +63 -0
- package/dist/runtime/components/Icon.vue +20 -0
- package/dist/runtime/components/Icon.vue.d.ts +9 -0
- package/dist/runtime/components/Input.vue +82 -77
- package/dist/runtime/components/Input.vue.d.ts +55 -43
- package/dist/runtime/components/InputNumber.vue +65 -49
- package/dist/runtime/components/InputNumber.vue.d.ts +51 -105
- package/dist/runtime/components/Kbd.vue +11 -5
- package/dist/runtime/components/Kbd.vue.d.ts +17 -11
- package/dist/runtime/components/Link.vue +54 -197
- package/dist/runtime/components/Link.vue.d.ts +17 -17
- package/dist/runtime/components/LinkBase.vue +11 -33
- package/dist/runtime/components/LinkBase.vue.d.ts +8 -3
- package/dist/runtime/components/Modal.vue +53 -39
- package/dist/runtime/components/Modal.vue.d.ts +64 -34
- package/dist/runtime/components/NavigationMenu.vue +336 -0
- package/dist/runtime/components/NavigationMenu.vue.d.ts +181 -0
- package/dist/runtime/components/OverlayProvider.vue +3 -3
- package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -1
- package/dist/runtime/components/Pagination.vue +39 -47
- package/dist/runtime/components/Pagination.vue.d.ts +54 -31
- package/dist/runtime/components/PinInput.vue +46 -32
- package/dist/runtime/components/PinInput.vue.d.ts +40 -21
- package/dist/runtime/components/Popover.vue +33 -19
- package/dist/runtime/components/Popover.vue.d.ts +57 -32
- package/dist/runtime/components/Progress.vue +31 -26
- package/dist/runtime/components/Progress.vue.d.ts +32 -23
- package/dist/runtime/components/RadioGroup.vue +75 -48
- package/dist/runtime/components/RadioGroup.vue.d.ts +58 -36
- package/dist/runtime/components/ScrollArea.vue +33 -31
- package/dist/runtime/components/ScrollArea.vue.d.ts +9 -5
- package/dist/runtime/components/Select.vue +166 -76
- package/dist/runtime/components/Select.vue.d.ts +206 -65
- package/dist/runtime/components/Separator.vue +42 -16
- package/dist/runtime/components/Separator.vue.d.ts +35 -14
- package/dist/runtime/components/Skeleton.vue +18 -6
- package/dist/runtime/components/Skeleton.vue.d.ts +4 -4
- package/dist/runtime/components/Slider.vue +42 -24
- package/dist/runtime/components/Slider.vue.d.ts +43 -27
- package/dist/runtime/components/Switch.vue +40 -31
- package/dist/runtime/components/Switch.vue.d.ts +36 -27
- package/dist/runtime/components/Table.vue +279 -51
- package/dist/runtime/components/Table.vue.d.ts +151 -65
- package/dist/runtime/components/Tabs.vue +70 -23
- package/dist/runtime/components/Tabs.vue.d.ts +61 -29
- package/dist/runtime/components/Textarea.vue +102 -54
- package/dist/runtime/components/Textarea.vue.d.ts +57 -41
- package/dist/runtime/components/Toast.vue +84 -38
- package/dist/runtime/components/Toast.vue.d.ts +48 -27
- package/dist/runtime/components/ToastProvider.vue +31 -22
- package/dist/runtime/components/ToastProvider.vue.d.ts +30 -17
- package/dist/runtime/components/Tooltip.vue +33 -21
- package/dist/runtime/components/Tooltip.vue.d.ts +37 -15
- package/dist/runtime/composables/defineShortcuts.d.ts +16 -0
- package/dist/runtime/composables/defineShortcuts.js +129 -0
- package/dist/runtime/composables/useAvatarGroup.d.ts +8 -3
- package/dist/runtime/composables/useAvatarGroup.js +10 -3
- package/dist/runtime/composables/useComponentIcons.d.ts +9 -6
- package/dist/runtime/composables/useComponentIcons.js +4 -4
- package/dist/runtime/composables/useFieldGroup.d.ts +8 -0
- package/dist/runtime/composables/useFieldGroup.js +14 -0
- package/dist/runtime/composables/useFormField.d.ts +62 -0
- package/dist/runtime/composables/useFormField.js +99 -0
- package/dist/runtime/composables/useKbd.d.ts +3 -2
- package/dist/runtime/composables/useKbd.js +3 -2
- package/dist/runtime/composables/useLocale.d.ts +68 -5
- package/dist/runtime/composables/useLocale.js +11 -11
- package/dist/runtime/composables/useOverlay.d.ts +51 -15
- package/dist/runtime/composables/useOverlay.js +44 -30
- package/dist/runtime/composables/usePortal.d.ts +6 -0
- package/dist/runtime/composables/usePortal.js +17 -0
- package/dist/runtime/composables/useToast.d.ts +12 -5
- package/dist/runtime/composables/useToast.js +12 -7
- package/dist/runtime/locale/en.d.ts +30 -1
- package/dist/runtime/locale/en.js +2 -1
- package/dist/runtime/locale/index.d.ts +2 -2
- package/dist/runtime/locale/index.js +1 -1
- package/dist/runtime/locale/zh_tw.d.ts +31 -0
- package/dist/runtime/locale/{zh-tw.js → zh_tw.js} +2 -1
- package/dist/runtime/plugins/colors.d.ts +2 -0
- package/dist/runtime/plugins/colors.js +50 -0
- package/dist/runtime/types/app.config.d.ts +6 -0
- package/dist/runtime/types/form.d.ts +58 -17
- package/dist/runtime/types/form.js +11 -0
- package/dist/runtime/types/index.d.ts +51 -8
- package/dist/runtime/types/index.js +45 -2
- package/dist/runtime/types/input.d.ts +8 -0
- package/dist/runtime/types/locale.d.ts +5 -0
- package/dist/runtime/types/style.d.ts +33 -0
- package/dist/runtime/types/style.js +0 -0
- package/dist/runtime/types/unocss.d.ts +4 -0
- package/dist/runtime/types/utils.d.ts +38 -37
- package/dist/runtime/utils/form.d.ts +5 -1
- package/dist/runtime/utils/form.js +49 -0
- package/dist/runtime/utils/index.d.ts +10 -13
- package/dist/runtime/utils/index.js +41 -48
- package/dist/runtime/utils/link.d.ts +3 -2
- package/dist/runtime/utils/link.js +16 -2
- package/dist/runtime/utils/locale.d.ts +5 -0
- package/dist/runtime/utils/locale.js +10 -0
- package/dist/runtime/utils/style.d.ts +94 -0
- package/dist/runtime/utils/style.js +37 -0
- package/dist/runtime/vue/components/Icon.vue +15 -0
- package/dist/runtime/vue/components/Icon.vue.d.ts +7 -0
- package/dist/runtime/vue/components/Link.vue +163 -0
- package/dist/runtime/vue/components/Link.vue.d.ts +95 -0
- package/dist/runtime/vue/composables/useAppConfig.d.ts +1 -0
- package/dist/runtime/vue/composables/useAppConfig.js +4 -0
- package/dist/runtime/vue/plugins/color-mode.d.ts +4 -0
- package/dist/runtime/vue/plugins/color-mode.js +6 -0
- package/dist/runtime/vue/plugins/head.d.ts +4 -0
- package/dist/runtime/vue/plugins/head.js +9 -0
- package/dist/runtime/vue/stubs.d.ts +16 -1
- package/dist/runtime/vue/stubs.js +32 -1
- package/dist/setup.d.mts +13 -0
- package/dist/setup.mjs +12 -0
- package/dist/shared/ui.CzIlLITK.mjs +51 -0
- package/dist/shared/ui.DSyJHSTk.mjs +3787 -0
- package/dist/shared/ui.DpbffTXs.d.mts +84 -0
- package/dist/shared/ui.IulR-OYx.d.mts +64 -0
- package/dist/types.d.mts +3 -1
- package/dist/unocss.d.mts +12 -52
- package/dist/unocss.mjs +144 -254
- package/dist/unplugin.d.mts +13 -26
- package/dist/unplugin.mjs +193 -18
- package/dist/vite.d.mts +10 -1
- package/dist/vite.mjs +12 -3
- package/package.json +154 -87
- package/vue-plugin.d.ts +5 -0
- package/dist/module.d.ts +0 -13
- package/dist/module.mjs.map +0 -1
- package/dist/runtime/app/injections.d.ts +0 -9331
- package/dist/runtime/app/injections.js +0 -61
- package/dist/runtime/components/ButtonGroup.vue +0 -26
- package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -26
- package/dist/runtime/components/FormItem.vue +0 -90
- package/dist/runtime/components/FormItem.vue.d.ts +0 -60
- package/dist/runtime/composables/useButtonGroup.d.ts +0 -5
- package/dist/runtime/composables/useButtonGroup.js +0 -9
- package/dist/runtime/composables/useFormItem.d.ts +0 -27
- package/dist/runtime/composables/useFormItem.js +0 -64
- package/dist/runtime/composables/useTheme.d.ts +0 -9
- package/dist/runtime/composables/useTheme.js +0 -23
- package/dist/runtime/index.d.ts +0 -44
- package/dist/runtime/index.js +0 -44
- package/dist/runtime/locale/zh-tw.d.ts +0 -2
- package/dist/runtime/theme/accordion.d.ts +0 -50
- package/dist/runtime/theme/accordion.js +0 -28
- package/dist/runtime/theme/alert.d.ts +0 -119
- package/dist/runtime/theme/alert.js +0 -47
- package/dist/runtime/theme/app.d.ts +0 -19
- package/dist/runtime/theme/app.js +0 -19
- package/dist/runtime/theme/avatar-group.d.ts +0 -46
- package/dist/runtime/theme/avatar-group.js +0 -32
- package/dist/runtime/theme/avatar.d.ts +0 -50
- package/dist/runtime/theme/avatar.js +0 -34
- package/dist/runtime/theme/badge.d.ts +0 -76
- package/dist/runtime/theme/badge.js +0 -92
- package/dist/runtime/theme/breadcrumb.d.ts +0 -61
- package/dist/runtime/theme/breadcrumb.js +0 -44
- package/dist/runtime/theme/button-group.d.ts +0 -60
- package/dist/runtime/theme/button-group.js +0 -42
- package/dist/runtime/theme/button.d.ts +0 -184
- package/dist/runtime/theme/button.js +0 -164
- package/dist/runtime/theme/calendar.d.ts +0 -58
- package/dist/runtime/theme/calendar.js +0 -86
- package/dist/runtime/theme/card.d.ts +0 -56
- package/dist/runtime/theme/card.js +0 -37
- package/dist/runtime/theme/carousel.d.ts +0 -107
- package/dist/runtime/theme/carousel.js +0 -43
- package/dist/runtime/theme/checkbox.d.ts +0 -82
- package/dist/runtime/theme/checkbox.js +0 -54
- package/dist/runtime/theme/chip.d.ts +0 -61
- package/dist/runtime/theme/chip.js +0 -66
- package/dist/runtime/theme/collapsible.d.ts +0 -32
- package/dist/runtime/theme/collapsible.js +0 -10
- package/dist/runtime/theme/drawer.d.ts +0 -142
- package/dist/runtime/theme/drawer.js +0 -113
- package/dist/runtime/theme/dropdown-menu.d.ts +0 -65
- package/dist/runtime/theme/dropdown-menu.js +0 -83
- package/dist/runtime/theme/form-item.d.ts +0 -70
- package/dist/runtime/theme/form-item.js +0 -34
- package/dist/runtime/theme/form.d.ts +0 -2
- package/dist/runtime/theme/form.js +0 -7
- package/dist/runtime/theme/index.d.ts +0 -41
- package/dist/runtime/theme/index.js +0 -41
- package/dist/runtime/theme/input-number.d.ts +0 -115
- package/dist/runtime/theme/input-number.js +0 -95
- package/dist/runtime/theme/input.d.ts +0 -172
- package/dist/runtime/theme/input.js +0 -151
- package/dist/runtime/theme/kbd.d.ts +0 -33
- package/dist/runtime/theme/kbd.js +0 -26
- package/dist/runtime/theme/link.d.ts +0 -38
- package/dist/runtime/theme/link.js +0 -26
- package/dist/runtime/theme/modal.d.ts +0 -42
- package/dist/runtime/theme/modal.js +0 -55
- package/dist/runtime/theme/pagination.d.ts +0 -74
- package/dist/runtime/theme/pagination.js +0 -17
- package/dist/runtime/theme/pinInput.d.ts +0 -94
- package/dist/runtime/theme/pinInput.js +0 -111
- package/dist/runtime/theme/popover.d.ts +0 -32
- package/dist/runtime/theme/popover.js +0 -13
- package/dist/runtime/theme/progress.d.ts +0 -180
- package/dist/runtime/theme/progress.js +0 -95
- package/dist/runtime/theme/radio-group.d.ts +0 -104
- package/dist/runtime/theme/radio-group.js +0 -61
- package/dist/runtime/theme/scroll-area.d.ts +0 -67
- package/dist/runtime/theme/scroll-area.js +0 -33
- package/dist/runtime/theme/select.d.ts +0 -186
- package/dist/runtime/theme/select.js +0 -173
- package/dist/runtime/theme/separator.d.ts +0 -74
- package/dist/runtime/theme/separator.js +0 -53
- package/dist/runtime/theme/skeleton.d.ts +0 -2
- package/dist/runtime/theme/skeleton.js +0 -7
- package/dist/runtime/theme/slider.d.ts +0 -70
- package/dist/runtime/theme/slider.js +0 -52
- package/dist/runtime/theme/switch.d.ts +0 -116
- package/dist/runtime/theme/switch.js +0 -78
- package/dist/runtime/theme/table.d.ts +0 -86
- package/dist/runtime/theme/table.js +0 -36
- package/dist/runtime/theme/tabs.d.ts +0 -129
- package/dist/runtime/theme/tabs.js +0 -146
- package/dist/runtime/theme/textarea.d.ts +0 -90
- package/dist/runtime/theme/textarea.js +0 -116
- package/dist/runtime/theme/toast-provider.d.ts +0 -116
- package/dist/runtime/theme/toast-provider.js +0 -97
- package/dist/runtime/theme/toast.d.ts +0 -83
- package/dist/runtime/theme/toast.js +0 -35
- package/dist/runtime/theme/tooltip.d.ts +0 -38
- package/dist/runtime/theme/tooltip.js +0 -11
- package/dist/runtime/types/components.d.ts +0 -42
- package/dist/runtime/utils/extend-theme.d.ts +0 -9
- package/dist/runtime/utils/extend-theme.js +0 -27
- package/dist/runtime/utils/styler.d.ts +0 -4
- package/dist/runtime/utils/styler.js +0 -10
- package/dist/runtime/utils/translator.d.ts +0 -18
- package/dist/runtime/utils/translator.js +0 -8
- package/dist/shared/ui.D1BTWZFB.mjs +0 -5
- package/dist/shared/ui.D1BTWZFB.mjs.map +0 -1
- package/dist/unocss.d.ts +0 -52
- package/dist/unocss.mjs.map +0 -1
- package/dist/unplugin.d.ts +0 -26
- package/dist/unplugin.mjs.map +0 -1
- package/dist/vite.d.ts +0 -9
- package/dist/vite.mjs.map +0 -1
- /package/dist/runtime/types/{components.js → input.js} +0 -0
|
@@ -1,45 +1,70 @@
|
|
|
1
|
-
import type { HoverCardRootProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui';
|
|
2
|
-
import
|
|
3
|
-
import type {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export interface
|
|
7
|
-
default?: (props: {
|
|
8
|
-
open: boolean;
|
|
9
|
-
}) => any;
|
|
10
|
-
content?: (props?: {}) => any;
|
|
11
|
-
}
|
|
12
|
-
export interface PopoverProps extends ComponentAttrs<typeof popover>, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
|
|
1
|
+
import type { HoverCardRootProps, HoverCardTriggerProps, PopoverArrowProps, PopoverContentEmits, PopoverContentProps, PopoverRootEmits, PopoverRootProps } from 'reka-ui';
|
|
2
|
+
import theme from '#build/ui/popover';
|
|
3
|
+
import type { ComponentBaseProps, ComponentUIProps } from '../types';
|
|
4
|
+
import type { EmitsToProps, StaticSlot } from '../types/utils';
|
|
5
|
+
type PopoverMode = 'click' | 'hover';
|
|
6
|
+
export interface PopoverProps<M extends PopoverMode = PopoverMode> extends ComponentBaseProps, PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
|
|
13
7
|
/**
|
|
14
8
|
* The display mode of the popover.
|
|
15
9
|
* @default "click"
|
|
16
10
|
*/
|
|
17
|
-
mode?:
|
|
18
|
-
/**
|
|
11
|
+
mode?: M;
|
|
12
|
+
/**
|
|
13
|
+
* The content of the popover.
|
|
14
|
+
* @default { side: 'bottom', sideOffset: 8, collisionPadding: 8 }
|
|
15
|
+
*/
|
|
19
16
|
content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<PopoverContentEmits>>;
|
|
17
|
+
/**
|
|
18
|
+
* Display an arrow alongside the popover.
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
20
21
|
arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>;
|
|
21
|
-
/**
|
|
22
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Render the popover in a portal.
|
|
24
|
+
* @default true
|
|
25
|
+
*/
|
|
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?: HoverCardTriggerProps['reference'];
|
|
23
33
|
/**
|
|
24
34
|
* When `false`, the popover will not close when clicking outside or pressing escape.
|
|
25
35
|
* @default true
|
|
26
36
|
*/
|
|
27
37
|
dismissible?: boolean;
|
|
38
|
+
ui?: ComponentUIProps<typeof theme>;
|
|
28
39
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
export interface PopoverEmits extends PopoverRootEmits {
|
|
41
|
+
'close-prevent': [];
|
|
42
|
+
}
|
|
43
|
+
export interface PopoverSlots<M extends PopoverMode = PopoverMode> {
|
|
44
|
+
default: StaticSlot<{
|
|
45
|
+
open: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
content: StaticSlot<[M] extends ['hover'] ? undefined : {
|
|
48
|
+
close: () => void;
|
|
49
|
+
}>;
|
|
50
|
+
anchor: StaticSlot<[M] extends ['hover'] ? undefined : {
|
|
51
|
+
close: () => void;
|
|
52
|
+
}>;
|
|
53
|
+
}
|
|
54
|
+
declare const __VLS_export: <M extends PopoverMode>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
55
|
+
props: __VLS_PrettifyLocal<PopoverProps<M> & {
|
|
56
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
57
|
+
"onClose-prevent"?: (() => any) | undefined;
|
|
58
|
+
}> & import("vue").PublicProps;
|
|
59
|
+
expose: (exposed: {}) => void;
|
|
60
|
+
attrs: any;
|
|
61
|
+
slots: PopoverSlots<M>;
|
|
62
|
+
emit: ((evt: "update:open", value: boolean) => void) & ((evt: "close-prevent") => void);
|
|
63
|
+
}>) => import("vue").VNode & {
|
|
64
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
45
65
|
};
|
|
66
|
+
declare const _default: typeof __VLS_export;
|
|
67
|
+
export default _default;
|
|
68
|
+
type __VLS_PrettifyLocal<T> = {
|
|
69
|
+
[K in keyof T as K]: T[K];
|
|
70
|
+
} & {};
|
|
@@ -1,31 +1,35 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
2
|
+
import theme from "#build/ui/progress";
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
6
|
import { reactivePick } from "@vueuse/core";
|
|
7
7
|
import { Primitive, ProgressIndicator, ProgressRoot, useForwardPropsEmits } from "reka-ui";
|
|
8
8
|
import { computed } from "vue";
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
9
10
|
import { useLocale } from "../composables/useLocale";
|
|
10
|
-
import {
|
|
11
|
+
import { cv, merge } from "../utils/style";
|
|
11
12
|
const props = defineProps({
|
|
12
13
|
as: { type: null, required: false },
|
|
13
|
-
max: { type: [Number, Array], required: false },
|
|
14
14
|
size: { type: null, required: false },
|
|
15
|
+
color: { type: null, required: false },
|
|
15
16
|
orientation: { type: null, required: false, default: "horizontal" },
|
|
17
|
+
animation: { type: null, required: false },
|
|
18
|
+
max: { type: [Number, Array], required: false },
|
|
16
19
|
status: { type: Boolean, required: false },
|
|
17
|
-
inverted: { type: Boolean, required: false },
|
|
18
|
-
class: { type: null, required: false },
|
|
20
|
+
inverted: { type: Boolean, required: false, default: false },
|
|
19
21
|
ui: { type: null, required: false },
|
|
22
|
+
class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
|
|
20
23
|
getValueLabel: { type: Function, required: false },
|
|
24
|
+
getValueText: { type: Function, required: false },
|
|
21
25
|
modelValue: { type: [Number, null], required: false, default: null }
|
|
22
26
|
});
|
|
23
27
|
const emit = defineEmits(["update:modelValue", "update:max"]);
|
|
24
28
|
const slots = defineSlots();
|
|
25
|
-
const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "modelValue"), emit);
|
|
26
|
-
const isIndeterminate = computed(() => rootProps.value.modelValue === null
|
|
29
|
+
const rootProps = useForwardPropsEmits(reactivePick(props, "getValueLabel", "getValueText", "modelValue"), emit);
|
|
30
|
+
const isIndeterminate = computed(() => rootProps.value.modelValue === null);
|
|
27
31
|
const hasSteps = computed(() => Array.isArray(props.max));
|
|
28
|
-
const
|
|
32
|
+
const realMax = computed(() => {
|
|
29
33
|
if (isIndeterminate.value || !props.max)
|
|
30
34
|
return;
|
|
31
35
|
if (Array.isArray(props.max))
|
|
@@ -37,14 +41,12 @@ const percent = computed(() => {
|
|
|
37
41
|
return;
|
|
38
42
|
if (rootProps.value.modelValue < 0)
|
|
39
43
|
return 0;
|
|
40
|
-
const
|
|
41
|
-
if (rootProps.value.modelValue >
|
|
44
|
+
const max = realMax.value ?? 100;
|
|
45
|
+
if (rootProps.value.modelValue > max)
|
|
42
46
|
return 100;
|
|
43
|
-
return Math.round(rootProps.value.modelValue /
|
|
47
|
+
return Math.round(rootProps.value.modelValue / max * 100);
|
|
44
48
|
});
|
|
45
49
|
const { dir } = useLocale();
|
|
46
|
-
const { generateStyle } = useTheme();
|
|
47
|
-
const style = computed(() => generateStyle("progress", props));
|
|
48
50
|
const indicatorStyle = computed(() => {
|
|
49
51
|
if (percent.value === void 0)
|
|
50
52
|
return;
|
|
@@ -55,9 +57,8 @@ const indicatorStyle = computed(() => {
|
|
|
55
57
|
return { transform: `translateX(${props.inverted ? "" : "-"}${100 - percent.value}%)` };
|
|
56
58
|
});
|
|
57
59
|
const statusStyle = computed(() => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
};
|
|
60
|
+
const value = `${Math.max(percent.value ?? 0, 0)}%`;
|
|
61
|
+
return props.orientation === "vertical" ? { height: value } : { width: value };
|
|
61
62
|
});
|
|
62
63
|
function isActive(index) {
|
|
63
64
|
return index === Number(props.modelValue);
|
|
@@ -66,7 +67,7 @@ function isFirst(index) {
|
|
|
66
67
|
return index === 0;
|
|
67
68
|
}
|
|
68
69
|
function isLast(index) {
|
|
69
|
-
return index ===
|
|
70
|
+
return index === realMax.value;
|
|
70
71
|
}
|
|
71
72
|
function stepVariant(index) {
|
|
72
73
|
index = Number(index);
|
|
@@ -78,11 +79,16 @@ function stepVariant(index) {
|
|
|
78
79
|
return "last";
|
|
79
80
|
return "other";
|
|
80
81
|
}
|
|
82
|
+
const appConfig = useAppConfig();
|
|
83
|
+
const ui = computed(() => {
|
|
84
|
+
const styler = cv(merge(theme, appConfig.ui.progress));
|
|
85
|
+
return styler(props);
|
|
86
|
+
});
|
|
81
87
|
</script>
|
|
82
88
|
|
|
83
89
|
<template>
|
|
84
|
-
<Primitive :as="props.as" :class="
|
|
85
|
-
<div v-if="!isIndeterminate && (props.status || slots.status)" :class="
|
|
90
|
+
<Primitive :as="props.as" :class="ui.root({ class: [props.ui?.root, props.class] })" :data-orientation="orientation" data-part="root">
|
|
91
|
+
<div v-if="!isIndeterminate && (props.status || !!slots.status)" :class="ui.status({ class: props.ui?.status })" data-part="status" :style="statusStyle">
|
|
86
92
|
<slot name="status" :percent="percent">
|
|
87
93
|
{{ percent }}%
|
|
88
94
|
</slot>
|
|
@@ -90,17 +96,16 @@ function stepVariant(index) {
|
|
|
90
96
|
|
|
91
97
|
<ProgressRoot
|
|
92
98
|
v-bind="rootProps"
|
|
93
|
-
:
|
|
94
|
-
:
|
|
95
|
-
|
|
96
|
-
data-part="root"
|
|
99
|
+
:max="realMax"
|
|
100
|
+
:class="ui.base({ class: props.ui?.base })"
|
|
101
|
+
data-part="base"
|
|
97
102
|
style="transform: translateZ(0)"
|
|
98
103
|
>
|
|
99
|
-
<ProgressIndicator :class="
|
|
104
|
+
<ProgressIndicator :class="ui.indicator({ class: props.ui?.indicator })" data-part="indicator" :style="indicatorStyle" />
|
|
100
105
|
</ProgressRoot>
|
|
101
106
|
|
|
102
|
-
<div v-if="hasSteps" :class="
|
|
103
|
-
<div v-for="(step, index) in props.max" :key="index" :class="
|
|
107
|
+
<div v-if="hasSteps" :class="ui.steps({ class: props.ui?.steps })" data-part="steps">
|
|
108
|
+
<div v-for="(step, index) in props.max" :key="index" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })" data-part="step">
|
|
104
109
|
<slot :name="`step-${index}`" :step="step">
|
|
105
110
|
{{ step }}
|
|
106
111
|
</slot>
|
|
@@ -1,42 +1,49 @@
|
|
|
1
1
|
import type { VariantProps } from '@byyuurin/ui-kit';
|
|
2
2
|
import type { PrimitiveProps, ProgressRootEmits, ProgressRootProps } from 'reka-ui';
|
|
3
|
-
import
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
status?: (props: {
|
|
9
|
-
percent?: number;
|
|
10
|
-
}) => any;
|
|
11
|
-
} & {
|
|
12
|
-
[key: `step-${number}`]: (props: {
|
|
13
|
-
step: string | number;
|
|
14
|
-
}) => any;
|
|
15
|
-
};
|
|
16
|
-
type ProgressVariants = VariantProps<typeof progress>;
|
|
17
|
-
export interface ProgressProps extends ComponentAttrs<typeof progress>, Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
|
|
3
|
+
import theme from '#build/ui/progress';
|
|
4
|
+
import type { ComponentBaseProps, ComponentUIProps } from '../types';
|
|
5
|
+
import type { StaticSlot } from '../types/utils';
|
|
6
|
+
type ThemeVariants = VariantProps<typeof theme>;
|
|
7
|
+
export interface ProgressProps extends ComponentBaseProps, Pick<ProgressRootProps, 'getValueLabel' | 'getValueText' | 'modelValue'> {
|
|
18
8
|
/**
|
|
19
9
|
* The element or component this component should render as.
|
|
20
10
|
* @default "div"
|
|
21
11
|
*/
|
|
22
12
|
as?: PrimitiveProps['as'];
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
*/
|
|
28
|
-
size?: ProgressVariants['size'];
|
|
13
|
+
/** @default "md" */
|
|
14
|
+
size?: ThemeVariants['size'];
|
|
15
|
+
/** @default "primary" */
|
|
16
|
+
color?: ThemeVariants['color'];
|
|
29
17
|
/**
|
|
30
18
|
* The orientation of the progress bar.
|
|
31
19
|
* @default "horizontal"
|
|
32
20
|
*/
|
|
33
|
-
orientation?:
|
|
21
|
+
orientation?: ThemeVariants['orientation'];
|
|
22
|
+
/**
|
|
23
|
+
* The animation of the progress bar.
|
|
24
|
+
* @default "carousel"
|
|
25
|
+
*/
|
|
26
|
+
animation?: ThemeVariants['animation'];
|
|
27
|
+
/** The maximum progress value. */
|
|
28
|
+
max?: number | Array<any>;
|
|
34
29
|
/** Display the current progress value. */
|
|
35
30
|
status?: boolean;
|
|
36
31
|
/** Whether the progress is visually inverted. */
|
|
37
32
|
inverted?: boolean;
|
|
33
|
+
ui?: ComponentUIProps<typeof theme>;
|
|
34
|
+
}
|
|
35
|
+
export interface ProgressEmits extends ProgressRootEmits {
|
|
38
36
|
}
|
|
39
|
-
|
|
37
|
+
export type ProgressSlots = {
|
|
38
|
+
status: StaticSlot<{
|
|
39
|
+
percent?: number;
|
|
40
|
+
}>;
|
|
41
|
+
} & {
|
|
42
|
+
[key: `step-${number}`]: StaticSlot<{
|
|
43
|
+
step: string | number;
|
|
44
|
+
}>;
|
|
45
|
+
};
|
|
46
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
40
47
|
"update:modelValue": (value: string[] | undefined) => any;
|
|
41
48
|
"update:max": (value: number) => any;
|
|
42
49
|
}, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
|
|
@@ -44,8 +51,10 @@ declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ProgressPr
|
|
|
44
51
|
"onUpdate:max"?: ((value: number) => any) | undefined;
|
|
45
52
|
}>, {
|
|
46
53
|
orientation: "horizontal" | "vertical";
|
|
54
|
+
inverted: boolean;
|
|
47
55
|
modelValue: number | null;
|
|
48
56
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
|
|
57
|
+
declare const _default: typeof __VLS_export;
|
|
49
58
|
export default _default;
|
|
50
59
|
type __VLS_WithSlots<T, S> = T & {
|
|
51
60
|
new (): {
|
|
@@ -1,75 +1,91 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
|
|
2
|
+
import theme from "#build/ui/radio-group";
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
6
|
import { reactivePick } from "@vueuse/core";
|
|
7
|
-
import { Label, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, useForwardPropsEmits } from "reka-ui";
|
|
7
|
+
import { Label, RadioGroupIndicator, RadioGroupItem as RekaRadioGroupItem, RadioGroupRoot, useForwardPropsEmits } from "reka-ui";
|
|
8
8
|
import { computed, useId } from "vue";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
10
|
+
import { useFormField } from "../composables/useFormField";
|
|
11
11
|
import { get } from "../utils";
|
|
12
|
+
import { cv, merge } from "../utils/style";
|
|
12
13
|
const props = defineProps({
|
|
13
14
|
as: { type: null, required: false },
|
|
14
|
-
|
|
15
|
-
valueKey: { type: String, required: false, default: "value" },
|
|
16
|
-
labelKey: { type: String, required: false, default: "label" },
|
|
17
|
-
descriptionKey: { type: String, required: false, default: "description" },
|
|
18
|
-
options: { type: Array, required: false },
|
|
15
|
+
variant: { type: null, required: false },
|
|
19
16
|
size: { type: null, required: false },
|
|
17
|
+
color: { type: null, required: false },
|
|
18
|
+
indicator: { type: null, required: false },
|
|
19
|
+
legend: { type: String, required: false },
|
|
20
|
+
valueKey: { type: null, required: false, default: "value" },
|
|
21
|
+
labelKey: { type: null, required: false, default: "label" },
|
|
22
|
+
descriptionKey: { type: null, required: false, default: "description" },
|
|
23
|
+
items: { type: null, required: false },
|
|
24
|
+
modelValue: { type: null, required: false },
|
|
25
|
+
defaultValue: { type: null, required: false },
|
|
20
26
|
orientation: { type: null, required: false, default: "vertical" },
|
|
21
|
-
class: { type: null, required: false },
|
|
22
27
|
ui: { type: null, required: false },
|
|
23
|
-
|
|
28
|
+
class: { type: [Object, String, Number, Boolean, null, Array], required: false, skipCheck: true },
|
|
24
29
|
disabled: { type: Boolean, required: false },
|
|
25
30
|
loop: { type: Boolean, required: false },
|
|
26
|
-
modelValue: { type: null, required: false },
|
|
27
31
|
name: { type: String, required: false },
|
|
28
32
|
required: { type: Boolean, required: false }
|
|
29
33
|
});
|
|
30
|
-
const emit = defineEmits(["
|
|
34
|
+
const emit = defineEmits(["change", "update:modelValue"]);
|
|
31
35
|
const slots = defineSlots();
|
|
32
|
-
const rootProps = useForwardPropsEmits(reactivePick(props, "as", "
|
|
33
|
-
const { id: _id, name, size, disabled, ariaAttrs, emitFormChange, emitFormInput } =
|
|
36
|
+
const rootProps = useForwardPropsEmits(reactivePick(props, "as", "loop", "required"), emit);
|
|
37
|
+
const { id: _id, name, color, size, disabled, ariaAttrs, emitFormChange, emitFormInput } = useFormField(props, { bind: false });
|
|
34
38
|
const id = _id.value ?? useId();
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
const appConfig = useAppConfig();
|
|
40
|
+
const ui = computed(() => {
|
|
41
|
+
const styler = cv(merge(theme, appConfig.ui.radioGroup));
|
|
42
|
+
return styler({
|
|
43
|
+
...props,
|
|
44
|
+
color: color.value,
|
|
45
|
+
size: size.value,
|
|
46
|
+
disabled: disabled.value
|
|
47
|
+
});
|
|
48
|
+
});
|
|
41
49
|
function normalizeItem(item) {
|
|
42
|
-
|
|
50
|
+
const itemBase = {
|
|
51
|
+
disabled: disabled.value,
|
|
52
|
+
label: void 0,
|
|
53
|
+
description: void 0,
|
|
54
|
+
value: void 0,
|
|
55
|
+
ui: void 0,
|
|
56
|
+
class: void 0
|
|
57
|
+
};
|
|
58
|
+
if (typeof item === "object" && item === null) {
|
|
43
59
|
return {
|
|
60
|
+
...itemBase,
|
|
44
61
|
id: `${id}:null`,
|
|
45
|
-
|
|
46
|
-
value: void 0
|
|
62
|
+
value: null
|
|
47
63
|
};
|
|
48
64
|
}
|
|
49
|
-
if (typeof item === "string" || typeof item === "number") {
|
|
65
|
+
if (typeof item === "boolean" || typeof item === "string" || typeof item === "number" || typeof item === "bigint") {
|
|
50
66
|
return {
|
|
67
|
+
...itemBase,
|
|
51
68
|
id: `${id}:${item}`,
|
|
52
69
|
label: String(item),
|
|
53
|
-
value: item
|
|
54
|
-
disabled: disabled.value
|
|
70
|
+
value: item
|
|
55
71
|
};
|
|
56
72
|
}
|
|
57
73
|
const value = get(item, props.valueKey);
|
|
58
74
|
const label = get(item, props.labelKey);
|
|
59
75
|
const description = get(item, props.descriptionKey);
|
|
60
76
|
return {
|
|
77
|
+
...itemBase,
|
|
61
78
|
...item,
|
|
62
79
|
id: `${id}:${value}`,
|
|
63
80
|
label,
|
|
64
81
|
value,
|
|
65
|
-
description
|
|
66
|
-
disabled: disabled.value || item.disabled
|
|
82
|
+
description
|
|
67
83
|
};
|
|
68
84
|
}
|
|
69
85
|
const normalizedItems = computed(() => {
|
|
70
|
-
if (!props.
|
|
86
|
+
if (!props.items)
|
|
71
87
|
return [];
|
|
72
|
-
return props.
|
|
88
|
+
return props.items.map(normalizeItem);
|
|
73
89
|
});
|
|
74
90
|
function onUpdate(value) {
|
|
75
91
|
const event = new Event("change", { target: { value } });
|
|
@@ -81,42 +97,53 @@ function onUpdate(value) {
|
|
|
81
97
|
|
|
82
98
|
<template>
|
|
83
99
|
<RadioGroupRoot
|
|
84
|
-
v-
|
|
85
|
-
|
|
86
|
-
:
|
|
100
|
+
v-bind="{ id, ...rootProps, name, disabled }"
|
|
101
|
+
:model-value="props.modelValue"
|
|
102
|
+
:default-value="props.defaultValue"
|
|
103
|
+
:orientation="props.orientation"
|
|
104
|
+
:class="ui.root({ class: [props.ui?.root, props.class] })"
|
|
87
105
|
data-part="root"
|
|
88
106
|
@update:model-value="onUpdate"
|
|
89
107
|
>
|
|
90
|
-
<fieldset v-bind="ariaAttrs" :class="
|
|
91
|
-
<legend v-if="props.legend || slots.legend" :class="
|
|
108
|
+
<fieldset v-bind="ariaAttrs" :class="ui.fieldset({ class: props.ui?.fieldset })" data-part="fieldset">
|
|
109
|
+
<legend v-if="props.legend || !!slots.legend" :class="ui.legend({ class: props.ui?.legend })" data-part="legend">
|
|
92
110
|
<slot name="legend">
|
|
93
111
|
{{ props.legend }}
|
|
94
112
|
</slot>
|
|
95
113
|
</legend>
|
|
96
|
-
<
|
|
97
|
-
|
|
98
|
-
|
|
114
|
+
<component
|
|
115
|
+
:is="!props.variant || props.variant === 'list' ? 'div' : Label"
|
|
116
|
+
v-for="item in normalizedItems"
|
|
117
|
+
:key="item.value"
|
|
118
|
+
:class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class], disabled: item.disabled })"
|
|
119
|
+
data-part="item"
|
|
120
|
+
>
|
|
121
|
+
<div :class="ui.container({ class: [props.ui?.container, item.ui?.container], disabled: item.disabled })" data-part="container">
|
|
122
|
+
<RekaRadioGroupItem
|
|
99
123
|
:id="item.id"
|
|
100
124
|
:value="item.value"
|
|
101
125
|
:disabled="item.disabled"
|
|
102
|
-
:class="
|
|
126
|
+
:class="ui.base({ class: [props.ui?.base, item.ui?.base], disabled: item.disabled, indicator: props.indicator })"
|
|
103
127
|
data-part="base"
|
|
128
|
+
:data-indicator="props.indicator"
|
|
104
129
|
>
|
|
105
|
-
<RadioGroupIndicator :class="
|
|
106
|
-
</
|
|
130
|
+
<RadioGroupIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator], disabled: item.disabled })" data-part="indicator" force-mount />
|
|
131
|
+
</RekaRadioGroupItem>
|
|
107
132
|
</div>
|
|
108
133
|
|
|
109
|
-
<div :class="
|
|
110
|
-
<Label :for="item.id" :class="
|
|
111
|
-
<slot name="label" :item="item" :model-value="modelValue">
|
|
112
|
-
|
|
113
|
-
|
|
134
|
+
<div v-if="item.label || !!slots.label || (item.description || !!slots.description)" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper], disabled: item.disabled })" data-part="wrapper">
|
|
135
|
+
<component :is="!props.variant || props.variant === 'list' ? Label : 'p'" :for="item.id" :class="ui.label({ class: [props.ui?.label, item.ui?.label], disabled: item.disabled })" data-part="label">
|
|
136
|
+
<slot name="label" :item="item" :model-value="modelValue">
|
|
137
|
+
{{ item.label }}
|
|
138
|
+
</slot>
|
|
139
|
+
</component>
|
|
140
|
+
<p v-if="item.description || !!slots.description" :class="ui.description({ class: [props.ui?.description, item.ui?.description], disabled: item.disabled })" data-part="description">
|
|
114
141
|
<slot name="description" :item="item" :model-value="modelValue">
|
|
115
142
|
{{ item.description }}
|
|
116
143
|
</slot>
|
|
117
144
|
</p>
|
|
118
145
|
</div>
|
|
119
|
-
</
|
|
146
|
+
</component>
|
|
120
147
|
</fieldset>
|
|
121
148
|
</RadioGroupRoot>
|
|
122
149
|
</template>
|
|
@@ -1,74 +1,96 @@
|
|
|
1
1
|
import type { VariantProps } from '@byyuurin/ui-kit';
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
'update:modelValue': [payload: string];
|
|
7
|
-
'change': [payload: Event];
|
|
8
|
-
}
|
|
2
|
+
import type { RadioGroupRootEmits, RadioGroupRootProps } from 'reka-ui';
|
|
3
|
+
import theme from '#build/ui/radio-group';
|
|
4
|
+
import type { ComponentBaseProps, ComponentUIProps } from '../types';
|
|
5
|
+
import type { AcceptableValue, GetItemKeys, GetModelValue, GetModelValueEmits, MaybeNull, NestedItem, StaticSlot } from '../types/utils';
|
|
9
6
|
export type RadioGroupValue = AcceptableValue;
|
|
10
|
-
|
|
7
|
+
interface RadioGroupItemBase {
|
|
11
8
|
label?: string;
|
|
12
9
|
description?: string;
|
|
13
10
|
disabled?: boolean;
|
|
14
11
|
value?: RadioGroupValue;
|
|
15
|
-
[
|
|
16
|
-
|
|
17
|
-
type SlotProps<T extends RadioGroupItem> = (props: {
|
|
18
|
-
item: T & {
|
|
19
|
-
id: string;
|
|
20
|
-
};
|
|
21
|
-
modelValue?: RadioGroupValue;
|
|
22
|
-
}) => any;
|
|
23
|
-
export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
|
|
24
|
-
legend?: any;
|
|
25
|
-
label?: SlotProps<T>;
|
|
26
|
-
description?: SlotProps<T>;
|
|
12
|
+
class?: ComponentBaseProps['class'];
|
|
13
|
+
ui?: Pick<ComponentUIProps<typeof theme>, 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
|
|
27
14
|
}
|
|
28
|
-
type
|
|
29
|
-
|
|
15
|
+
export type RadioGroupItem = RadioGroupValue | (RadioGroupItemBase & {
|
|
16
|
+
[key: string]: any;
|
|
17
|
+
});
|
|
18
|
+
type NormalizeItem<T extends RadioGroupItem> = Exclude<T & {
|
|
19
|
+
id: string;
|
|
20
|
+
ui?: Pick<ComponentUIProps<typeof theme>, 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
|
|
21
|
+
}, RadioGroupValue>;
|
|
22
|
+
type ThemeVariants = VariantProps<typeof theme>;
|
|
23
|
+
export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends ComponentBaseProps, Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
|
|
30
24
|
/**
|
|
31
25
|
* The element or component this component should render as.
|
|
32
26
|
* @default "div"
|
|
33
27
|
*/
|
|
34
|
-
as?:
|
|
28
|
+
as?: RadioGroupRootProps['as'];
|
|
29
|
+
/** @default "list" */
|
|
30
|
+
variant?: ThemeVariants['variant'];
|
|
31
|
+
/** @default "md" */
|
|
32
|
+
size?: ThemeVariants['size'];
|
|
33
|
+
/** @default "primary" */
|
|
34
|
+
color?: ThemeVariants['color'];
|
|
35
|
+
/**
|
|
36
|
+
* Position of the indicator.
|
|
37
|
+
* @default "start"
|
|
38
|
+
*/
|
|
39
|
+
indicator?: ThemeVariants['indicator'];
|
|
35
40
|
legend?: string;
|
|
36
41
|
/**
|
|
37
42
|
* When `options` is an array of objects, select the field to use as the value.
|
|
38
43
|
* @default "value"
|
|
39
44
|
*/
|
|
40
|
-
valueKey?:
|
|
45
|
+
valueKey?: VK;
|
|
41
46
|
/**
|
|
42
47
|
* When `options` is an array of objects, select the field to use as the label.
|
|
43
48
|
* @default "label"
|
|
44
49
|
*/
|
|
45
|
-
labelKey?:
|
|
50
|
+
labelKey?: GetItemKeys<T>;
|
|
46
51
|
/**
|
|
47
52
|
* When `options` is an array of objects, select the field to use as the description.
|
|
48
53
|
* @default "description"
|
|
49
54
|
*/
|
|
50
|
-
descriptionKey?:
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
descriptionKey?: GetItemKeys<T>;
|
|
56
|
+
items?: T;
|
|
57
|
+
/** The controlled value of the RadioGroup. Can be bind as `v-model`. */
|
|
58
|
+
modelValue?: MaybeNull<GetModelValue<T, VK, false>>;
|
|
59
|
+
/** The value of the RadioGroup when initially rendered. Use when you do not need to control the state of the RadioGroup. */
|
|
60
|
+
defaultValue?: MaybeNull<GetModelValue<T, VK, false>>;
|
|
53
61
|
/**
|
|
54
62
|
* The orientation the radio buttons are laid out.
|
|
55
63
|
* @default "vertical"
|
|
56
64
|
*/
|
|
57
65
|
orientation?: RadioGroupRootProps['orientation'];
|
|
66
|
+
ui?: ComponentUIProps<typeof theme>;
|
|
67
|
+
}
|
|
68
|
+
export type RadioGroupEmits<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> = Omit<RadioGroupRootEmits, 'update:modelValue'> & {
|
|
69
|
+
change: [event: Event];
|
|
70
|
+
} & GetModelValueEmits<T, VK, false>;
|
|
71
|
+
type SlotProps<T extends RadioGroupItem[]> = StaticSlot<{
|
|
72
|
+
item: NormalizeItem<NestedItem<T>>;
|
|
73
|
+
modelValue?: RadioGroupValue;
|
|
74
|
+
}>;
|
|
75
|
+
export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]> {
|
|
76
|
+
legend: StaticSlot;
|
|
77
|
+
label: SlotProps<T>;
|
|
78
|
+
description: SlotProps<T>;
|
|
58
79
|
}
|
|
59
|
-
declare const
|
|
60
|
-
props: __VLS_PrettifyLocal<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
expose(exposed:
|
|
80
|
+
declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<T> = "value">(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
81
|
+
props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
|
|
82
|
+
onChange?: ((event: Event) => any) | undefined;
|
|
83
|
+
"onUpdate:modelValue"?: ((value: import("../types/utils").GetItemValue<T, VK, NestedItem<T>>) => any) | undefined;
|
|
84
|
+
}> & import("vue").PublicProps;
|
|
85
|
+
expose: (exposed: {}) => void;
|
|
65
86
|
attrs: any;
|
|
66
87
|
slots: RadioGroupSlots<T>;
|
|
67
|
-
emit: ((evt: "change",
|
|
88
|
+
emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types/utils").GetItemValue<T, VK, NestedItem<T>>) => void);
|
|
68
89
|
}>) => import("vue").VNode & {
|
|
69
90
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
70
91
|
};
|
|
92
|
+
declare const _default: typeof __VLS_export;
|
|
71
93
|
export default _default;
|
|
72
94
|
type __VLS_PrettifyLocal<T> = {
|
|
73
|
-
[K in keyof T]: T[K];
|
|
95
|
+
[K in keyof T as K]: T[K];
|
|
74
96
|
} & {};
|