@nuxt/ui 3.0.2 → 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 +23 -2
- 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 +102 -83
- 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 +43 -22
- 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.json +5 -5
- package/dist/module.mjs +11 -7
- package/dist/runtime/components/Accordion.vue +36 -93
- 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 +42 -75
- 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 +37 -90
- package/dist/runtime/components/Breadcrumb.vue.d.ts +82 -0
- package/dist/runtime/components/Button.vue +95 -104
- 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 +67 -150
- 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 -234
- 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 +96 -237
- 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 +34 -133
- package/dist/runtime/components/ContextMenu.vue.d.ts +127 -0
- package/dist/runtime/components/ContextMenuContent.vue +73 -81
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +105 -0
- package/dist/runtime/components/Drawer.vue +49 -83
- package/dist/runtime/components/Drawer.vue.d.ts +88 -0
- package/dist/runtime/components/DropdownMenu.vue +39 -142
- package/dist/runtime/components/DropdownMenu.vue.d.ts +141 -0
- package/dist/runtime/components/DropdownMenuContent.vue +78 -88
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +55 -0
- package/dist/runtime/components/Form.vue +135 -220
- package/dist/runtime/components/Form.vue.d.ts +66 -0
- package/dist/runtime/components/FormField.vue +35 -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 +185 -332
- 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 -176
- package/dist/runtime/components/Link.vue.d.ts +124 -0
- package/dist/runtime/components/LinkBase.vue +33 -42
- 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 +77 -209
- 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 +70 -132
- package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
- package/dist/runtime/components/Select.vue +110 -224
- package/dist/runtime/components/Select.vue.d.ts +139 -0
- package/dist/runtime/components/SelectMenu.vue +161 -310
- 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 +45 -115
- 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 +163 -267
- package/dist/runtime/components/Table.vue.d.ts +183 -0
- package/dist/runtime/components/Tabs.vue +41 -107
- 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 +59 -166
- package/dist/runtime/components/Tree.vue.d.ts +128 -0
- package/dist/runtime/composables/defineShortcuts.d.ts +1 -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/useOverlay.d.ts +14 -7
- 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/index.d.ts +5 -1
- package/dist/runtime/locale/index.js +5 -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 +4 -1
- package/dist/runtime/types/index.d.ts +1 -0
- package/dist/runtime/types/index.js +1 -0
- package/dist/runtime/types/utils.d.ts +47 -7
- package/dist/runtime/utils/link.d.ts +3 -3
- package/dist/runtime/utils/link.js +1 -0
- 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 -202
- package/dist/runtime/vue/components/Link.vue.d.ts +124 -0
- package/dist/runtime/vue/stubs.d.ts +2 -2
- package/dist/shared/{ui.BkNUP964.mjs → ui.D7lOOabO.mjs} +621 -362
- package/dist/types.d.mts +3 -5
- package/dist/unplugin.d.mts +4 -0
- package/dist/unplugin.mjs +25 -4
- package/dist/vite.mjs +1 -1
- package/package.json +94 -53
- package/dist/module.cjs +0 -62
- package/dist/module.d.cts +0 -45
- package/dist/module.d.ts +0 -45
- package/dist/shared/ui.BL-XB3u1.cjs +0 -3555
- package/dist/types.d.ts +0 -7
- package/dist/unplugin.cjs +0 -232
- package/dist/unplugin.d.cts +0 -62
- package/dist/unplugin.d.ts +0 -62
- package/dist/vite.cjs +0 -23
- package/dist/vite.d.cts +0 -15
- package/dist/vite.d.ts +0 -15
|
@@ -1,153 +1,88 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui'
|
|
4
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
5
|
-
import _appConfig from '#build/app.config'
|
|
6
|
-
import theme from '#build/ui/radio-group'
|
|
7
|
-
import { tv } from '../utils/tv'
|
|
8
|
-
import type { AcceptableValue } from '../types/utils'
|
|
9
|
-
|
|
10
|
-
const appConfigRadioGroup = _appConfig as AppConfig & { ui: { radioGroup: Partial<typeof theme> } }
|
|
11
|
-
|
|
12
|
-
const radioGroup = tv({ extend: tv(theme), ...(appConfigRadioGroup.ui?.radioGroup || {}) })
|
|
13
|
-
|
|
14
|
-
type RadioGroupVariants = VariantProps<typeof radioGroup>
|
|
15
|
-
|
|
16
|
-
export type RadioGroupValue = AcceptableValue
|
|
17
|
-
export type RadioGroupItem = {
|
|
18
|
-
label?: string
|
|
19
|
-
description?: string
|
|
20
|
-
disabled?: boolean
|
|
21
|
-
value?: string
|
|
22
|
-
[key: string]: any
|
|
23
|
-
} | RadioGroupValue
|
|
24
|
-
|
|
25
|
-
export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> extends Pick<RadioGroupRootProps, 'defaultValue' | 'disabled' | 'loop' | 'modelValue' | 'name' | 'required'> {
|
|
26
|
-
/**
|
|
27
|
-
* The element or component this component should render as.
|
|
28
|
-
* @defaultValue 'div'
|
|
29
|
-
*/
|
|
30
|
-
as?: any
|
|
31
|
-
legend?: string
|
|
32
|
-
/**
|
|
33
|
-
* When `items` is an array of objects, select the field to use as the value.
|
|
34
|
-
* @defaultValue 'value'
|
|
35
|
-
*/
|
|
36
|
-
valueKey?: string
|
|
37
|
-
/**
|
|
38
|
-
* When `items` is an array of objects, select the field to use as the label.
|
|
39
|
-
* @defaultValue 'label'
|
|
40
|
-
*/
|
|
41
|
-
labelKey?: string
|
|
42
|
-
/**
|
|
43
|
-
* When `items` is an array of objects, select the field to use as the description.
|
|
44
|
-
* @defaultValue 'description'
|
|
45
|
-
*/
|
|
46
|
-
descriptionKey?: string
|
|
47
|
-
items?: T[]
|
|
48
|
-
/**
|
|
49
|
-
* @defaultValue 'md'
|
|
50
|
-
*/
|
|
51
|
-
size?: RadioGroupVariants['size']
|
|
52
|
-
/**
|
|
53
|
-
* @defaultValue 'primary'
|
|
54
|
-
*/
|
|
55
|
-
color?: RadioGroupVariants['color']
|
|
56
|
-
/**
|
|
57
|
-
* The orientation the radio buttons are laid out.
|
|
58
|
-
* @defaultValue 'vertical'
|
|
59
|
-
*/
|
|
60
|
-
orientation?: RadioGroupRootProps['orientation']
|
|
61
|
-
class?: any
|
|
62
|
-
ui?: Partial<typeof radioGroup.slots>
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export type RadioGroupEmits = RadioGroupRootEmits & {
|
|
66
|
-
change: [payload: Event]
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
type SlotProps<T extends RadioGroupItem> = (props: { item: T & { id: string }, modelValue?: RadioGroupValue }) => any
|
|
70
|
-
|
|
71
|
-
export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
|
|
72
|
-
legend(props?: {}): any
|
|
73
|
-
label: SlotProps<T>
|
|
74
|
-
description: SlotProps<T>
|
|
75
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/radio-group";
|
|
76
3
|
</script>
|
|
77
4
|
|
|
78
|
-
<script setup
|
|
79
|
-
import { computed, useId } from
|
|
80
|
-
import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from
|
|
81
|
-
import { reactivePick } from
|
|
82
|
-
import {
|
|
83
|
-
import {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, useId } from "vue";
|
|
7
|
+
import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from "reka-ui";
|
|
8
|
+
import { reactivePick } from "@vueuse/core";
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
10
|
+
import { useFormField } from "../composables/useFormField";
|
|
11
|
+
import { get } from "../utils";
|
|
12
|
+
import { tv } from "../utils/tv";
|
|
13
|
+
const props = defineProps({
|
|
14
|
+
as: { type: null, required: false },
|
|
15
|
+
legend: { type: String, required: false },
|
|
16
|
+
valueKey: { type: String, required: false, default: "value" },
|
|
17
|
+
labelKey: { type: String, required: false, default: "label" },
|
|
18
|
+
descriptionKey: { type: String, required: false, default: "description" },
|
|
19
|
+
items: { type: Array, required: false },
|
|
20
|
+
size: { type: null, required: false },
|
|
21
|
+
variant: { type: null, required: false },
|
|
22
|
+
color: { type: null, required: false },
|
|
23
|
+
orientation: { type: null, required: false, default: "vertical" },
|
|
24
|
+
indicator: { type: null, required: false },
|
|
25
|
+
class: { type: null, required: false },
|
|
26
|
+
ui: { type: null, required: false },
|
|
27
|
+
defaultValue: { type: [String, Number, Object, null], required: false },
|
|
28
|
+
disabled: { type: Boolean, required: false },
|
|
29
|
+
loop: { type: Boolean, required: false },
|
|
30
|
+
modelValue: { type: [String, Number, Object, null], required: false },
|
|
31
|
+
name: { type: String, required: false },
|
|
32
|
+
required: { type: Boolean, required: false }
|
|
33
|
+
});
|
|
34
|
+
const emits = defineEmits(["update:modelValue", "change"]);
|
|
35
|
+
const slots = defineSlots();
|
|
36
|
+
const appConfig = useAppConfig();
|
|
37
|
+
const rootProps = useForwardPropsEmits(reactivePick(props, "as", "modelValue", "defaultValue", "orientation", "loop", "required"), emits);
|
|
38
|
+
const { emitFormChange, emitFormInput, color, name, size, id: _id, disabled, ariaAttrs } = useFormField(props, { bind: false });
|
|
39
|
+
const id = _id.value ?? useId();
|
|
40
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.radioGroup || {} })({
|
|
100
41
|
size: size.value,
|
|
101
42
|
color: color.value,
|
|
102
43
|
disabled: disabled.value,
|
|
103
44
|
required: props.required,
|
|
104
|
-
orientation: props.orientation
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
45
|
+
orientation: props.orientation,
|
|
46
|
+
variant: props.variant,
|
|
47
|
+
indicator: props.indicator
|
|
48
|
+
}));
|
|
49
|
+
function normalizeItem(item) {
|
|
108
50
|
if (item === null) {
|
|
109
51
|
return {
|
|
110
52
|
id: `${id}:null`,
|
|
111
|
-
value:
|
|
112
|
-
label:
|
|
113
|
-
}
|
|
53
|
+
value: void 0,
|
|
54
|
+
label: void 0
|
|
55
|
+
};
|
|
114
56
|
}
|
|
115
|
-
|
|
116
|
-
if (typeof item === 'string' || typeof item === 'number') {
|
|
57
|
+
if (typeof item === "string" || typeof item === "number") {
|
|
117
58
|
return {
|
|
118
59
|
id: `${id}:${item}`,
|
|
119
60
|
value: String(item),
|
|
120
61
|
label: String(item)
|
|
121
|
-
}
|
|
62
|
+
};
|
|
122
63
|
}
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
const
|
|
126
|
-
const description = get(item, props.descriptionKey as string)
|
|
127
|
-
|
|
64
|
+
const value = get(item, props.valueKey);
|
|
65
|
+
const label = get(item, props.labelKey);
|
|
66
|
+
const description = get(item, props.descriptionKey);
|
|
128
67
|
return {
|
|
129
68
|
...item,
|
|
130
69
|
value,
|
|
131
70
|
label,
|
|
132
71
|
description,
|
|
133
72
|
id: `${id}:${value}`
|
|
134
|
-
}
|
|
73
|
+
};
|
|
135
74
|
}
|
|
136
|
-
|
|
137
75
|
const normalizedItems = computed(() => {
|
|
138
76
|
if (!props.items) {
|
|
139
|
-
return []
|
|
77
|
+
return [];
|
|
140
78
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
emits('change', event)
|
|
149
|
-
emitFormChange()
|
|
150
|
-
emitFormInput()
|
|
79
|
+
return props.items.map(normalizeItem);
|
|
80
|
+
});
|
|
81
|
+
function onUpdate(value) {
|
|
82
|
+
const event = new Event("change", { target: { value } });
|
|
83
|
+
emits("change", event);
|
|
84
|
+
emitFormChange();
|
|
85
|
+
emitFormInput();
|
|
151
86
|
}
|
|
152
87
|
</script>
|
|
153
88
|
|
|
@@ -167,7 +102,8 @@ function onUpdate(value: any) {
|
|
|
167
102
|
{{ legend }}
|
|
168
103
|
</slot>
|
|
169
104
|
</legend>
|
|
170
|
-
|
|
105
|
+
|
|
106
|
+
<component :is="variant === 'list' ? 'div' : Label" v-for="item in normalizedItems" :key="item.value" :class="ui.item({ class: props.ui?.item })">
|
|
171
107
|
<div :class="ui.container({ class: props.ui?.container })">
|
|
172
108
|
<RadioGroupItem
|
|
173
109
|
:id="item.id"
|
|
@@ -179,17 +115,19 @@ function onUpdate(value: any) {
|
|
|
179
115
|
</RadioGroupItem>
|
|
180
116
|
</div>
|
|
181
117
|
|
|
182
|
-
<div :class="ui.wrapper({ class: props.ui?.wrapper })">
|
|
183
|
-
<Label :class="ui.label({ class: props.ui?.label })"
|
|
184
|
-
<slot name="label" :item="item" :model-value="
|
|
185
|
-
|
|
118
|
+
<div v-if="item.label || !!slots.label || (item.description || !!slots.description)" :class="ui.wrapper({ class: props.ui?.wrapper })">
|
|
119
|
+
<component :is="variant === 'list' ? Label : 'p'" v-if="item.label || !!slots.label" :for="item.id" :class="ui.label({ class: props.ui?.label })">
|
|
120
|
+
<slot name="label" :item="item" :model-value="modelValue">
|
|
121
|
+
{{ item.label }}
|
|
122
|
+
</slot>
|
|
123
|
+
</component>
|
|
186
124
|
<p v-if="item.description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
|
|
187
|
-
<slot name="description" :item="item" :model-value="
|
|
125
|
+
<slot name="description" :item="item" :model-value="modelValue">
|
|
188
126
|
{{ item.description }}
|
|
189
127
|
</slot>
|
|
190
128
|
</p>
|
|
191
129
|
</div>
|
|
192
|
-
</
|
|
130
|
+
</component>
|
|
193
131
|
</fieldset>
|
|
194
132
|
</RadioGroupRoot>
|
|
195
133
|
</template>
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/ui/radio-group';
|
|
4
|
+
import type { AcceptableValue, ComponentConfig } from '../types/utils';
|
|
5
|
+
type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
|
|
6
|
+
export type RadioGroupValue = AcceptableValue;
|
|
7
|
+
export type RadioGroupItem = {
|
|
8
|
+
label?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
value?: string;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
} | RadioGroupValue;
|
|
14
|
+
export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> extends Pick<RadioGroupRootProps, 'defaultValue' | 'disabled' | 'loop' | 'modelValue' | 'name' | 'required'> {
|
|
15
|
+
/**
|
|
16
|
+
* The element or component this component should render as.
|
|
17
|
+
* @defaultValue 'div'
|
|
18
|
+
*/
|
|
19
|
+
as?: any;
|
|
20
|
+
legend?: string;
|
|
21
|
+
/**
|
|
22
|
+
* When `items` is an array of objects, select the field to use as the value.
|
|
23
|
+
* @defaultValue 'value'
|
|
24
|
+
*/
|
|
25
|
+
valueKey?: string;
|
|
26
|
+
/**
|
|
27
|
+
* When `items` is an array of objects, select the field to use as the label.
|
|
28
|
+
* @defaultValue 'label'
|
|
29
|
+
*/
|
|
30
|
+
labelKey?: string;
|
|
31
|
+
/**
|
|
32
|
+
* When `items` is an array of objects, select the field to use as the description.
|
|
33
|
+
* @defaultValue 'description'
|
|
34
|
+
*/
|
|
35
|
+
descriptionKey?: string;
|
|
36
|
+
items?: T[];
|
|
37
|
+
/**
|
|
38
|
+
* @defaultValue 'md'
|
|
39
|
+
*/
|
|
40
|
+
size?: RadioGroup['variants']['size'];
|
|
41
|
+
/**
|
|
42
|
+
* @defaultValue 'list'
|
|
43
|
+
*/
|
|
44
|
+
variant?: RadioGroup['variants']['variant'];
|
|
45
|
+
/**
|
|
46
|
+
* @defaultValue 'primary'
|
|
47
|
+
*/
|
|
48
|
+
color?: RadioGroup['variants']['color'];
|
|
49
|
+
/**
|
|
50
|
+
* The orientation the radio buttons are laid out.
|
|
51
|
+
* @defaultValue 'vertical'
|
|
52
|
+
*/
|
|
53
|
+
orientation?: RadioGroupRootProps['orientation'];
|
|
54
|
+
/**
|
|
55
|
+
* Position of the indicator.
|
|
56
|
+
* @defaultValue 'start'
|
|
57
|
+
*/
|
|
58
|
+
indicator?: RadioGroup['variants']['indicator'];
|
|
59
|
+
class?: any;
|
|
60
|
+
ui?: RadioGroup['slots'];
|
|
61
|
+
}
|
|
62
|
+
export type RadioGroupEmits = RadioGroupRootEmits & {
|
|
63
|
+
change: [payload: Event];
|
|
64
|
+
};
|
|
65
|
+
type SlotProps<T extends RadioGroupItem> = (props: {
|
|
66
|
+
item: T & {
|
|
67
|
+
id: string;
|
|
68
|
+
};
|
|
69
|
+
modelValue?: RadioGroupValue;
|
|
70
|
+
}) => any;
|
|
71
|
+
export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
|
|
72
|
+
legend(props?: {}): any;
|
|
73
|
+
label: SlotProps<T>;
|
|
74
|
+
description: SlotProps<T>;
|
|
75
|
+
}
|
|
76
|
+
declare const _default: <T extends RadioGroupItem>(__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<{
|
|
77
|
+
props: __VLS_PrettifyLocal<any & RadioGroupProps<T> & Partial<{}>> & (import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps);
|
|
78
|
+
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
79
|
+
attrs: any;
|
|
80
|
+
slots: Readonly<RadioGroupSlots<T>> & RadioGroupSlots<T>;
|
|
81
|
+
emit: ((evt: "change", payload: Event) => void) & ((evt: "update:modelValue", payload: string) => void);
|
|
82
|
+
}>) => import("vue").VNode & {
|
|
83
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
84
|
+
};
|
|
85
|
+
export default _default;
|
|
86
|
+
type __VLS_PrettifyLocal<T> = {
|
|
87
|
+
[K in keyof T]: T[K];
|
|
88
|
+
} & {};
|