@nuxt/ui 4.0.0-alpha.1 → 4.0.0-beta.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/content/content-navigation.ts +2 -1
- package/.nuxt/ui/marquee.ts +1 -1
- package/.nuxt/ui/progress.ts +3 -3
- package/.nuxt/ui/prose/code-tree.ts +1 -1
- package/.nuxt/ui/prose/img.ts +1 -1
- package/.nuxt/ui/tree.ts +1 -1
- package/README.md +14 -1
- package/dist/module.d.mts +6 -6
- package/dist/module.json +2 -2
- package/dist/module.mjs +8 -6
- package/dist/runtime/components/Accordion.d.vue.ts +79 -0
- package/dist/runtime/components/Accordion.vue +3 -3
- package/dist/runtime/components/Accordion.vue.d.ts +2 -2
- package/dist/runtime/components/Alert.d.vue.ts +81 -0
- package/dist/runtime/components/App.d.vue.ts +25 -0
- package/dist/runtime/components/AuthForm.d.vue.ts +128 -0
- package/dist/runtime/components/AuthForm.vue.d.ts +39 -1
- package/dist/runtime/components/Avatar.d.vue.ts +41 -0
- package/dist/runtime/components/AvatarGroup.d.vue.ts +31 -0
- package/dist/runtime/components/Badge.d.vue.ts +43 -0
- package/dist/runtime/components/Banner.d.vue.ts +72 -0
- package/dist/runtime/components/Banner.vue +1 -1
- package/dist/runtime/components/BlogPost.d.vue.ts +60 -0
- package/dist/runtime/components/BlogPosts.d.vue.ts +31 -0
- package/dist/runtime/components/Breadcrumb.d.vue.ts +67 -0
- package/dist/runtime/components/Breadcrumb.vue +1 -1
- package/dist/runtime/components/Breadcrumb.vue.d.ts +2 -2
- package/dist/runtime/components/Button.d.vue.ts +44 -0
- package/dist/runtime/components/Calendar.d.vue.ts +112 -0
- package/dist/runtime/components/Card.d.vue.ts +29 -0
- package/dist/runtime/components/Carousel.d.vue.ts +127 -0
- package/dist/runtime/components/Carousel.vue.d.ts +10 -10
- package/dist/runtime/components/ChangelogVersion.d.vue.ts +59 -0
- package/dist/runtime/components/ChangelogVersions.d.vue.ts +78 -0
- package/dist/runtime/components/ChangelogVersions.vue +2 -2
- package/dist/runtime/components/ChatMessage.d.vue.ts +67 -0
- package/dist/runtime/components/ChatMessages.d.vue.ts +83 -0
- package/dist/runtime/components/ChatMessages.vue +6 -6
- package/dist/runtime/components/ChatPalette.d.vue.ts +24 -0
- package/dist/runtime/components/ChatPrompt.d.vue.ts +61 -0
- package/dist/runtime/components/ChatPrompt.vue +2 -2
- package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +100 -0
- package/dist/runtime/components/Checkbox.d.vue.ts +74 -0
- package/dist/runtime/components/CheckboxGroup.d.vue.ts +89 -0
- package/dist/runtime/components/CheckboxGroup.vue +8 -8
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +20 -16
- package/dist/runtime/components/Chip.d.vue.ts +57 -0
- package/dist/runtime/components/Collapsible.d.vue.ts +35 -0
- package/dist/runtime/components/ColorPicker.d.vue.ts +48 -0
- package/dist/runtime/components/CommandPalette.d.vue.ts +193 -0
- package/dist/runtime/components/CommandPalette.vue +5 -4
- package/dist/runtime/components/CommandPalette.vue.d.ts +2 -1
- package/dist/runtime/components/Container.d.vue.ts +18 -0
- package/dist/runtime/components/ContextMenu.d.vue.ts +110 -0
- package/dist/runtime/components/ContextMenu.vue +2 -2
- package/dist/runtime/components/ContextMenu.vue.d.ts +2 -2
- package/dist/runtime/components/ContextMenuContent.d.vue.ts +50 -0
- package/dist/runtime/components/ContextMenuContent.vue +2 -2
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -2
- package/dist/runtime/components/DashboardGroup.d.vue.ts +24 -0
- package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -1
- package/dist/runtime/components/DashboardNavbar.d.vue.ts +52 -0
- package/dist/runtime/components/DashboardPanel.d.vue.ts +30 -0
- package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +18 -0
- package/dist/runtime/components/DashboardSearch.d.vue.ts +91 -0
- package/dist/runtime/components/DashboardSearch.vue +2 -2
- package/dist/runtime/components/DashboardSearchButton.d.vue.ts +59 -0
- package/dist/runtime/components/DashboardSearchButton.vue +2 -2
- package/dist/runtime/components/DashboardSidebar.d.vue.ts +75 -0
- package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +19 -0
- package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +19 -0
- package/dist/runtime/components/DashboardToolbar.d.vue.ts +25 -0
- package/dist/runtime/components/Drawer.d.vue.ts +84 -0
- package/dist/runtime/components/DropdownMenu.d.vue.ts +120 -0
- package/dist/runtime/components/DropdownMenu.vue +2 -2
- package/dist/runtime/components/DropdownMenu.vue.d.ts +2 -2
- package/dist/runtime/components/DropdownMenuContent.d.vue.ts +56 -0
- package/dist/runtime/components/DropdownMenuContent.vue +2 -2
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +2 -2
- package/dist/runtime/components/Error.d.vue.ts +47 -0
- package/dist/runtime/components/FieldGroup.d.vue.ts +34 -0
- package/dist/runtime/components/FileUpload.d.vue.ts +166 -0
- package/dist/runtime/components/FileUpload.vue +1 -0
- package/dist/runtime/components/Footer.d.vue.ts +29 -0
- package/dist/runtime/components/FooterColumns.d.vue.ts +57 -0
- package/dist/runtime/components/Form.d.vue.ts +114 -0
- package/dist/runtime/components/Form.vue +144 -60
- package/dist/runtime/components/Form.vue.d.ts +54 -11
- package/dist/runtime/components/FormField.d.vue.ts +61 -0
- package/dist/runtime/components/FormField.vue +9 -3
- package/dist/runtime/components/Header.d.vue.ts +68 -0
- package/dist/runtime/components/Icon.d.vue.ts +8 -0
- package/dist/runtime/components/Input.d.vue.ts +74 -0
- package/dist/runtime/components/Input.vue.d.ts +4 -3
- package/dist/runtime/components/InputMenu.d.vue.ts +330 -0
- package/dist/runtime/components/InputMenu.vue +2 -2
- package/dist/runtime/components/InputMenu.vue.d.ts +4 -4
- package/dist/runtime/components/InputNumber.d.vue.ts +188 -0
- package/dist/runtime/components/InputNumber.vue +2 -2
- package/dist/runtime/components/InputNumber.vue.d.ts +0 -2
- package/dist/runtime/components/InputTags.d.vue.ts +186 -0
- package/dist/runtime/components/InputTags.vue +2 -2
- package/dist/runtime/components/Kbd.d.vue.ts +38 -0
- package/dist/runtime/components/Link.d.vue.ts +91 -0
- package/dist/runtime/components/LinkBase.d.vue.ts +25 -0
- package/dist/runtime/components/Main.d.vue.ts +20 -0
- package/dist/runtime/components/Marquee.d.vue.ts +32 -0
- package/dist/runtime/components/Marquee.vue +1 -1
- package/dist/runtime/components/Modal.d.vue.ts +107 -0
- package/dist/runtime/components/NavigationMenu.d.vue.ts +171 -0
- package/dist/runtime/components/NavigationMenu.vue.d.ts +2 -2
- package/dist/runtime/components/OverlayProvider.d.vue.ts +2 -0
- package/dist/runtime/components/Page.d.vue.ts +25 -0
- package/dist/runtime/components/PageAnchors.d.vue.ts +47 -0
- package/dist/runtime/components/PageAside.d.vue.ts +27 -0
- package/dist/runtime/components/PageBody.d.vue.ts +18 -0
- package/dist/runtime/components/PageCTA.d.vue.ts +56 -0
- package/dist/runtime/components/PageCard.d.vue.ts +72 -0
- package/dist/runtime/components/PageColumns.d.vue.ts +18 -0
- package/dist/runtime/components/PageFeature.d.vue.ts +44 -0
- package/dist/runtime/components/PageGrid.d.vue.ts +18 -0
- package/dist/runtime/components/PageHeader.d.vue.ts +36 -0
- package/dist/runtime/components/PageHero.d.vue.ts +53 -0
- package/dist/runtime/components/PageLinks.d.vue.ts +49 -0
- package/dist/runtime/components/PageList.d.vue.ts +21 -0
- package/dist/runtime/components/PageLogos.d.vue.ts +33 -0
- package/dist/runtime/components/PageSection.d.vue.ts +68 -0
- package/dist/runtime/components/Pagination.d.vue.ts +118 -0
- package/dist/runtime/components/PinInput.d.vue.ts +60 -0
- package/dist/runtime/components/Popover.d.vue.ts +71 -0
- package/dist/runtime/components/PricingPlan.d.vue.ts +112 -0
- package/dist/runtime/components/PricingPlans.d.vue.ts +44 -0
- package/dist/runtime/components/PricingTable.d.vue.ts +105 -0
- package/dist/runtime/components/Progress.d.vue.ts +66 -0
- package/dist/runtime/components/Progress.vue +2 -3
- package/dist/runtime/components/RadioGroup.d.vue.ts +99 -0
- package/dist/runtime/components/RadioGroup.vue +13 -11
- package/dist/runtime/components/RadioGroup.vue.d.ts +17 -13
- package/dist/runtime/components/Select.d.vue.ts +254 -0
- package/dist/runtime/components/Select.vue +3 -3
- package/dist/runtime/components/Select.vue.d.ts +5 -5
- package/dist/runtime/components/SelectMenu.d.vue.ts +303 -0
- package/dist/runtime/components/SelectMenu.vue.d.ts +4 -4
- package/dist/runtime/components/Separator.d.vue.ts +54 -0
- package/dist/runtime/components/Skeleton.d.vue.ts +17 -0
- package/dist/runtime/components/Slideover.d.vue.ts +108 -0
- package/dist/runtime/components/Slider.d.vue.ts +57 -0
- package/dist/runtime/components/Stepper.d.vue.ts +87 -0
- package/dist/runtime/components/Switch.d.vue.ts +71 -0
- package/dist/runtime/components/Table.d.vue.ts +201 -0
- package/dist/runtime/components/Table.vue.d.ts +26 -26
- package/dist/runtime/components/Tabs.d.vue.ts +99 -0
- package/dist/runtime/components/Tabs.vue +12 -5
- package/dist/runtime/components/Tabs.vue.d.ts +2 -2
- package/dist/runtime/components/Textarea.d.vue.ts +74 -0
- package/dist/runtime/components/Timeline.d.vue.ts +71 -0
- package/dist/runtime/components/Toast.d.vue.ts +165 -0
- package/dist/runtime/components/Toaster.d.vue.ts +44 -0
- package/dist/runtime/components/Tooltip.d.vue.ts +57 -0
- package/dist/runtime/components/Tree.d.vue.ts +112 -0
- package/dist/runtime/components/Tree.vue +88 -47
- package/dist/runtime/components/Tree.vue.d.ts +20 -24
- package/dist/runtime/components/User.d.vue.ts +47 -0
- package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +7 -0
- package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +23 -0
- package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +6 -0
- package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
- package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
- package/dist/runtime/components/content/ContentNavigation.d.vue.ts +102 -0
- package/dist/runtime/components/content/ContentNavigation.vue +5 -4
- package/dist/runtime/components/content/ContentNavigation.vue.d.ts +2 -2
- package/dist/runtime/components/content/ContentSearch.d.vue.ts +114 -0
- package/dist/runtime/components/content/ContentSearch.vue +2 -2
- package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +59 -0
- package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
- package/dist/runtime/components/content/ContentSurround.d.vue.ts +59 -0
- package/dist/runtime/components/content/ContentToc.d.vue.ts +88 -0
- package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +15 -0
- package/dist/runtime/components/prose/A.d.vue.ts +15 -0
- package/dist/runtime/components/prose/Accordion.d.vue.ts +16 -0
- package/dist/runtime/components/prose/AccordionItem.d.vue.ts +15 -0
- package/dist/runtime/components/prose/Badge.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Blockquote.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Callout.d.vue.ts +26 -0
- package/dist/runtime/components/prose/Card.d.vue.ts +29 -0
- package/dist/runtime/components/prose/CardGroup.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Code.d.vue.ts +22 -0
- package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +47 -0
- package/dist/runtime/components/prose/CodeGroup.d.vue.ts +37 -0
- package/dist/runtime/components/prose/CodeIcon.d.vue.ts +7 -0
- package/dist/runtime/components/prose/CodePreview.d.vue.ts +19 -0
- package/dist/runtime/components/prose/CodeTree.d.vue.ts +28 -0
- package/dist/runtime/components/prose/CodeTree.vue +38 -31
- package/dist/runtime/components/prose/Collapsible.d.vue.ts +39 -0
- package/dist/runtime/components/prose/Em.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Field.d.vue.ts +39 -0
- package/dist/runtime/components/prose/FieldGroup.d.vue.ts +18 -0
- package/dist/runtime/components/prose/H1.d.vue.ts +19 -0
- package/dist/runtime/components/prose/H2.d.vue.ts +19 -0
- package/dist/runtime/components/prose/H3.d.vue.ts +19 -0
- package/dist/runtime/components/prose/H4.d.vue.ts +19 -0
- package/dist/runtime/components/prose/Hr.d.vue.ts +5 -0
- package/dist/runtime/components/prose/Icon.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Img.d.vue.ts +21 -0
- package/dist/runtime/components/prose/Kbd.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Li.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Ol.d.vue.ts +13 -0
- package/dist/runtime/components/prose/P.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Pre.d.vue.ts +26 -0
- package/dist/runtime/components/prose/Script.d.vue.ts +5 -0
- package/dist/runtime/components/prose/Steps.d.vue.ts +22 -0
- package/dist/runtime/components/prose/Strong.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Table.d.vue.ts +18 -0
- package/dist/runtime/components/prose/Tabs.d.vue.ts +36 -0
- package/dist/runtime/components/prose/TabsItem.d.vue.ts +15 -0
- package/dist/runtime/components/prose/Tbody.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Td.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Th.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Thead.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Tr.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Ul.d.vue.ts +13 -0
- package/dist/runtime/components/prose/callout/Caution.d.vue.ts +14 -0
- package/dist/runtime/components/prose/callout/Note.d.vue.ts +14 -0
- package/dist/runtime/components/prose/callout/Tip.d.vue.ts +14 -0
- package/dist/runtime/components/prose/callout/Warning.d.vue.ts +14 -0
- package/dist/runtime/composables/useFormField.d.ts +1 -0
- package/dist/runtime/composables/useFormField.js +1 -4
- package/dist/runtime/inertia/components/Link.d.vue.ts +63 -0
- package/dist/runtime/inertia/components/LinkBase.d.vue.ts +25 -0
- package/dist/runtime/locale/de_ch.d.ts +3 -0
- package/dist/runtime/locale/de_ch.js +129 -0
- package/dist/runtime/locale/id.js +1 -1
- package/dist/runtime/locale/index.d.ts +2 -0
- package/dist/runtime/locale/index.js +2 -0
- package/dist/runtime/locale/ka.d.ts +3 -0
- package/dist/runtime/locale/ka.js +132 -0
- package/dist/runtime/locale/pt.js +2 -2
- package/dist/runtime/types/form.d.ts +12 -13
- package/dist/runtime/types/form.js +1 -3
- package/dist/runtime/types/index.d.ts +1 -0
- package/dist/runtime/types/index.js +1 -0
- package/dist/runtime/types/tv.d.ts +9 -2
- package/dist/runtime/types/utils.d.ts +7 -3
- package/dist/runtime/utils/form.d.ts +2 -6
- package/dist/runtime/utils/form.js +28 -60
- package/dist/runtime/utils/fuse.d.ts +2 -1
- package/dist/runtime/utils/index.d.ts +3 -3
- package/dist/runtime/utils/index.js +6 -3
- package/dist/runtime/vue/components/Icon.d.vue.ts +6 -0
- package/dist/runtime/vue/components/Link.d.vue.ts +93 -0
- package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +16 -0
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
- package/dist/shared/{ui.BEZXPd3d.mjs → ui.DGJZ-1aX.mjs} +18 -13
- package/dist/unplugin.mjs +1 -1
- package/dist/vite.mjs +1 -1
- package/package.json +27 -40
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ProgressRootProps, ProgressRootEmits } from 'reka-ui';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/ui/progress';
|
|
4
|
+
import type { ComponentConfig } from '../types/tv';
|
|
5
|
+
type Progress = ComponentConfig<typeof theme, AppConfig, 'progress'>;
|
|
6
|
+
export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'getValueText' | 'modelValue'> {
|
|
7
|
+
/**
|
|
8
|
+
* The element or component this component should render as.
|
|
9
|
+
* @defaultValue 'div'
|
|
10
|
+
*/
|
|
11
|
+
as?: any;
|
|
12
|
+
/** The maximum progress value. */
|
|
13
|
+
max?: number | Array<any>;
|
|
14
|
+
/** Display the current progress value. */
|
|
15
|
+
status?: boolean;
|
|
16
|
+
/** Whether the progress is visually inverted. */
|
|
17
|
+
inverted?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* @defaultValue 'md'
|
|
20
|
+
*/
|
|
21
|
+
size?: Progress['variants']['size'];
|
|
22
|
+
/**
|
|
23
|
+
* @defaultValue 'primary'
|
|
24
|
+
*/
|
|
25
|
+
color?: Progress['variants']['color'];
|
|
26
|
+
/**
|
|
27
|
+
* The orientation of the progress bar.
|
|
28
|
+
* @defaultValue 'horizontal'
|
|
29
|
+
*/
|
|
30
|
+
orientation?: Progress['variants']['orientation'];
|
|
31
|
+
/**
|
|
32
|
+
* The animation of the progress bar.
|
|
33
|
+
* @defaultValue 'carousel'
|
|
34
|
+
*/
|
|
35
|
+
animation?: Progress['variants']['animation'];
|
|
36
|
+
class?: any;
|
|
37
|
+
ui?: Progress['slots'];
|
|
38
|
+
}
|
|
39
|
+
export interface ProgressEmits extends ProgressRootEmits {
|
|
40
|
+
}
|
|
41
|
+
export type ProgressSlots = {
|
|
42
|
+
status(props: {
|
|
43
|
+
percent?: number;
|
|
44
|
+
}): any;
|
|
45
|
+
} & {
|
|
46
|
+
[key: string]: (props: {
|
|
47
|
+
step: number;
|
|
48
|
+
}) => any;
|
|
49
|
+
};
|
|
50
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<ProgressProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
51
|
+
"update:modelValue": (value: string[] | undefined) => any;
|
|
52
|
+
"update:max": (value: number) => any;
|
|
53
|
+
}, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
|
|
54
|
+
"onUpdate:modelValue"?: ((value: string[] | undefined) => any) | undefined;
|
|
55
|
+
"onUpdate:max"?: ((value: number) => any) | undefined;
|
|
56
|
+
}>, {
|
|
57
|
+
orientation: Progress["variants"]["orientation"];
|
|
58
|
+
modelValue: number | null;
|
|
59
|
+
inverted: boolean;
|
|
60
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
|
|
61
|
+
export default _default;
|
|
62
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
63
|
+
new (): {
|
|
64
|
+
$slots: S;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
@@ -74,9 +74,8 @@ const indicatorStyle = computed(() => {
|
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
76
|
const statusStyle = computed(() => {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
};
|
|
77
|
+
const value = `${Math.max(percent.value ?? 0, 0)}%`;
|
|
78
|
+
return props.orientation === "vertical" ? { height: value } : { width: value };
|
|
80
79
|
});
|
|
81
80
|
function isActive(index) {
|
|
82
81
|
return index === Number(props.modelValue);
|
|
@@ -0,0 +1,99 @@
|
|
|
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, GetItemKeys, GetModelValue } from '../types/utils';
|
|
5
|
+
import type { ComponentConfig } from '../types/tv';
|
|
6
|
+
type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
|
|
7
|
+
export type RadioGroupValue = AcceptableValue;
|
|
8
|
+
export type RadioGroupItem = RadioGroupValue | {
|
|
9
|
+
label?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
value?: RadioGroupValue;
|
|
13
|
+
class?: any;
|
|
14
|
+
ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
};
|
|
17
|
+
export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
|
|
18
|
+
/**
|
|
19
|
+
* The element or component this component should render as.
|
|
20
|
+
* @defaultValue 'div'
|
|
21
|
+
*/
|
|
22
|
+
as?: any;
|
|
23
|
+
legend?: string;
|
|
24
|
+
/**
|
|
25
|
+
* When `items` is an array of objects, select the field to use as the value.
|
|
26
|
+
* @defaultValue 'value'
|
|
27
|
+
*/
|
|
28
|
+
valueKey?: VK;
|
|
29
|
+
/**
|
|
30
|
+
* When `items` is an array of objects, select the field to use as the label.
|
|
31
|
+
* @defaultValue 'label'
|
|
32
|
+
*/
|
|
33
|
+
labelKey?: GetItemKeys<T>;
|
|
34
|
+
/**
|
|
35
|
+
* When `items` is an array of objects, select the field to use as the description.
|
|
36
|
+
* @defaultValue 'description'
|
|
37
|
+
*/
|
|
38
|
+
descriptionKey?: GetItemKeys<T>;
|
|
39
|
+
items?: T;
|
|
40
|
+
/** The controlled value of the RadioGroup. Can be bind as `v-model`. */
|
|
41
|
+
modelValue?: GetModelValue<T, VK, false>;
|
|
42
|
+
/** The value of the RadioGroup when initially rendered. Use when you do not need to control the state of the RadioGroup. */
|
|
43
|
+
defaultValue?: GetModelValue<T, VK, false>;
|
|
44
|
+
/**
|
|
45
|
+
* @defaultValue 'md'
|
|
46
|
+
*/
|
|
47
|
+
size?: RadioGroup['variants']['size'];
|
|
48
|
+
/**
|
|
49
|
+
* @defaultValue 'list'
|
|
50
|
+
*/
|
|
51
|
+
variant?: RadioGroup['variants']['variant'];
|
|
52
|
+
/**
|
|
53
|
+
* @defaultValue 'primary'
|
|
54
|
+
*/
|
|
55
|
+
color?: RadioGroup['variants']['color'];
|
|
56
|
+
/**
|
|
57
|
+
* The orientation the radio buttons are laid out.
|
|
58
|
+
* @defaultValue 'vertical'
|
|
59
|
+
*/
|
|
60
|
+
orientation?: RadioGroupRootProps['orientation'];
|
|
61
|
+
/**
|
|
62
|
+
* Position of the indicator.
|
|
63
|
+
* @defaultValue 'start'
|
|
64
|
+
*/
|
|
65
|
+
indicator?: RadioGroup['variants']['indicator'];
|
|
66
|
+
class?: any;
|
|
67
|
+
ui?: RadioGroup['slots'];
|
|
68
|
+
}
|
|
69
|
+
export type RadioGroupEmits = RadioGroupRootEmits & {
|
|
70
|
+
change: [event: Event];
|
|
71
|
+
};
|
|
72
|
+
type NormalizeItem<T extends RadioGroupItem> = Exclude<T & {
|
|
73
|
+
id: string;
|
|
74
|
+
}, RadioGroupValue>;
|
|
75
|
+
type SlotProps<T extends RadioGroupItem> = (props: {
|
|
76
|
+
item: NormalizeItem<T>;
|
|
77
|
+
modelValue?: RadioGroupValue;
|
|
78
|
+
}) => any;
|
|
79
|
+
export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]> {
|
|
80
|
+
legend(props?: {}): any;
|
|
81
|
+
label: SlotProps<T[number]>;
|
|
82
|
+
description: SlotProps<T[number]>;
|
|
83
|
+
}
|
|
84
|
+
declare const _default: <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<{
|
|
85
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
86
|
+
readonly onChange?: ((event: Event) => any) | undefined;
|
|
87
|
+
readonly "onUpdate:modelValue"?: ((payload: string) => any) | undefined;
|
|
88
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onChange" | "onUpdate:modelValue"> & RadioGroupProps<T, VK> & {}> & import("vue").PublicProps;
|
|
89
|
+
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
90
|
+
attrs: any;
|
|
91
|
+
slots: RadioGroupSlots<T>;
|
|
92
|
+
emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", payload: string) => void);
|
|
93
|
+
}>) => import("vue").VNode & {
|
|
94
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
95
|
+
};
|
|
96
|
+
export default _default;
|
|
97
|
+
type __VLS_PrettifyLocal<T> = {
|
|
98
|
+
[K in keyof T as K]: T[K];
|
|
99
|
+
} & {};
|
|
@@ -4,7 +4,7 @@ import theme from "#build/ui/radio-group";
|
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
6
|
import { computed, useId } from "vue";
|
|
7
|
-
import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from "reka-ui";
|
|
7
|
+
import { RadioGroupRoot, RadioGroupItem as RRadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from "reka-ui";
|
|
8
8
|
import { reactivePick } from "@vueuse/core";
|
|
9
9
|
import { useAppConfig } from "#imports";
|
|
10
10
|
import { useFormField } from "../composables/useFormField";
|
|
@@ -13,10 +13,12 @@ import { tv } from "../utils/tv";
|
|
|
13
13
|
const props = defineProps({
|
|
14
14
|
as: { type: null, required: false },
|
|
15
15
|
legend: { type: String, required: false },
|
|
16
|
-
valueKey: { type:
|
|
17
|
-
labelKey: { type:
|
|
18
|
-
descriptionKey: { type:
|
|
19
|
-
items: { type:
|
|
16
|
+
valueKey: { type: null, required: false, default: "value" },
|
|
17
|
+
labelKey: { type: null, required: false, default: "label" },
|
|
18
|
+
descriptionKey: { type: null, required: false, default: "description" },
|
|
19
|
+
items: { type: null, required: false },
|
|
20
|
+
modelValue: { type: null, required: false },
|
|
21
|
+
defaultValue: { type: null, required: false },
|
|
20
22
|
size: { type: null, required: false },
|
|
21
23
|
variant: { type: null, required: false },
|
|
22
24
|
color: { type: null, required: false },
|
|
@@ -24,17 +26,15 @@ const props = defineProps({
|
|
|
24
26
|
indicator: { type: null, required: false },
|
|
25
27
|
class: { type: null, required: false },
|
|
26
28
|
ui: { type: null, required: false },
|
|
27
|
-
defaultValue: { type: null, required: false },
|
|
28
29
|
disabled: { type: Boolean, required: false },
|
|
29
30
|
loop: { type: Boolean, required: false },
|
|
30
|
-
modelValue: { type: null, required: false },
|
|
31
31
|
name: { type: String, required: false },
|
|
32
32
|
required: { type: Boolean, required: false }
|
|
33
33
|
});
|
|
34
34
|
const emits = defineEmits(["update:modelValue", "change"]);
|
|
35
35
|
const slots = defineSlots();
|
|
36
36
|
const appConfig = useAppConfig();
|
|
37
|
-
const rootProps = useForwardPropsEmits(reactivePick(props, "as", "
|
|
37
|
+
const rootProps = useForwardPropsEmits(reactivePick(props, "as", "loop", "required"), emits);
|
|
38
38
|
const { emitFormChange, emitFormInput, color, name, size, id: _id, disabled, ariaAttrs } = useFormField(props, { bind: false });
|
|
39
39
|
const id = _id.value ?? useId();
|
|
40
40
|
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.radioGroup || {} })({
|
|
@@ -89,8 +89,10 @@ function onUpdate(value) {
|
|
|
89
89
|
<template>
|
|
90
90
|
<RadioGroupRoot
|
|
91
91
|
:id="id"
|
|
92
|
-
v-slot="{ modelValue }"
|
|
93
92
|
v-bind="rootProps"
|
|
93
|
+
:model-value="modelValue"
|
|
94
|
+
:default-value="defaultValue"
|
|
95
|
+
:orientation="orientation"
|
|
94
96
|
:name="name"
|
|
95
97
|
:disabled="disabled"
|
|
96
98
|
:class="ui.root({ class: [props.ui?.root, props.class] })"
|
|
@@ -105,14 +107,14 @@ function onUpdate(value) {
|
|
|
105
107
|
|
|
106
108
|
<component :is="!variant || variant === 'list' ? 'div' : Label" v-for="item in normalizedItems" :key="item.value" :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class] })">
|
|
107
109
|
<div :class="ui.container({ class: [props.ui?.container, item.ui?.container] })">
|
|
108
|
-
<
|
|
110
|
+
<RRadioGroupItem
|
|
109
111
|
:id="item.id"
|
|
110
112
|
:value="item.value"
|
|
111
113
|
:disabled="item.disabled"
|
|
112
114
|
:class="ui.base({ class: [props.ui?.base, item.ui?.base], disabled: item.disabled })"
|
|
113
115
|
>
|
|
114
116
|
<RadioGroupIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator] })" />
|
|
115
|
-
</
|
|
117
|
+
</RRadioGroupItem>
|
|
116
118
|
</div>
|
|
117
119
|
|
|
118
120
|
<div v-if="item.label || !!slots.label || (item.description || !!slots.description)" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
|
|
2
2
|
import type { AppConfig } from '@nuxt/schema';
|
|
3
3
|
import theme from '#build/ui/radio-group';
|
|
4
|
-
import type { AcceptableValue } from '../types/utils';
|
|
4
|
+
import type { AcceptableValue, GetItemKeys, GetModelValue } from '../types/utils';
|
|
5
5
|
import type { ComponentConfig } from '../types/tv';
|
|
6
6
|
type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
|
|
7
7
|
export type RadioGroupValue = AcceptableValue;
|
|
8
|
-
export type RadioGroupItem = {
|
|
8
|
+
export type RadioGroupItem = RadioGroupValue | {
|
|
9
9
|
label?: string;
|
|
10
10
|
description?: string;
|
|
11
11
|
disabled?: boolean;
|
|
@@ -13,8 +13,8 @@ export type RadioGroupItem = {
|
|
|
13
13
|
class?: any;
|
|
14
14
|
ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
|
|
15
15
|
[key: string]: any;
|
|
16
|
-
}
|
|
17
|
-
export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> extends Pick<RadioGroupRootProps, '
|
|
16
|
+
};
|
|
17
|
+
export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
|
|
18
18
|
/**
|
|
19
19
|
* The element or component this component should render as.
|
|
20
20
|
* @defaultValue 'div'
|
|
@@ -25,18 +25,22 @@ export interface RadioGroupProps<T extends RadioGroupItem = RadioGroupItem> exte
|
|
|
25
25
|
* When `items` is an array of objects, select the field to use as the value.
|
|
26
26
|
* @defaultValue 'value'
|
|
27
27
|
*/
|
|
28
|
-
valueKey?:
|
|
28
|
+
valueKey?: VK;
|
|
29
29
|
/**
|
|
30
30
|
* When `items` is an array of objects, select the field to use as the label.
|
|
31
31
|
* @defaultValue 'label'
|
|
32
32
|
*/
|
|
33
|
-
labelKey?:
|
|
33
|
+
labelKey?: GetItemKeys<T>;
|
|
34
34
|
/**
|
|
35
35
|
* When `items` is an array of objects, select the field to use as the description.
|
|
36
36
|
* @defaultValue 'description'
|
|
37
37
|
*/
|
|
38
|
-
descriptionKey?:
|
|
39
|
-
items?: T
|
|
38
|
+
descriptionKey?: GetItemKeys<T>;
|
|
39
|
+
items?: T;
|
|
40
|
+
/** The controlled value of the RadioGroup. Can be bind as `v-model`. */
|
|
41
|
+
modelValue?: GetModelValue<T, VK, false>;
|
|
42
|
+
/** The value of the RadioGroup when initially rendered. Use when you do not need to control the state of the RadioGroup. */
|
|
43
|
+
defaultValue?: GetModelValue<T, VK, false>;
|
|
40
44
|
/**
|
|
41
45
|
* @defaultValue 'md'
|
|
42
46
|
*/
|
|
@@ -72,16 +76,16 @@ type SlotProps<T extends RadioGroupItem> = (props: {
|
|
|
72
76
|
item: NormalizeItem<T>;
|
|
73
77
|
modelValue?: RadioGroupValue;
|
|
74
78
|
}) => any;
|
|
75
|
-
export interface RadioGroupSlots<T extends RadioGroupItem = RadioGroupItem> {
|
|
79
|
+
export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]> {
|
|
76
80
|
legend(props?: {}): any;
|
|
77
|
-
label: SlotProps<T>;
|
|
78
|
-
description: SlotProps<T>;
|
|
81
|
+
label: SlotProps<T[number]>;
|
|
82
|
+
description: SlotProps<T[number]>;
|
|
79
83
|
}
|
|
80
|
-
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<{
|
|
84
|
+
declare const _default: <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
85
|
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
82
86
|
readonly onChange?: ((event: Event) => any) | undefined;
|
|
83
87
|
readonly "onUpdate:modelValue"?: ((payload: string) => any) | undefined;
|
|
84
|
-
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onChange" | "onUpdate:modelValue"> & RadioGroupProps<T> & {}> & import("vue").PublicProps;
|
|
88
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onChange" | "onUpdate:modelValue"> & RadioGroupProps<T, VK> & {}> & import("vue").PublicProps;
|
|
85
89
|
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
86
90
|
attrs: any;
|
|
87
91
|
slots: RadioGroupSlots<T>;
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import type { SelectRootProps, SelectRootEmits, SelectContentProps, SelectContentEmits, SelectArrowProps } from 'reka-ui';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/ui/select';
|
|
4
|
+
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
5
|
+
import type { AvatarProps, ChipProps, IconProps } from '../types';
|
|
6
|
+
import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
|
|
7
|
+
import type { ComponentConfig } from '../types/tv';
|
|
8
|
+
type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
|
|
9
|
+
export type SelectValue = AcceptableValue;
|
|
10
|
+
export type SelectItem = SelectValue | {
|
|
11
|
+
label?: string;
|
|
12
|
+
/**
|
|
13
|
+
* @IconifyIcon
|
|
14
|
+
*/
|
|
15
|
+
icon?: IconProps['name'];
|
|
16
|
+
avatar?: AvatarProps;
|
|
17
|
+
chip?: ChipProps;
|
|
18
|
+
/**
|
|
19
|
+
* The item type.
|
|
20
|
+
* @defaultValue 'item'
|
|
21
|
+
*/
|
|
22
|
+
type?: 'label' | 'separator' | 'item';
|
|
23
|
+
value?: SelectValue;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
onSelect?(e?: Event): void;
|
|
26
|
+
class?: any;
|
|
27
|
+
ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
};
|
|
30
|
+
export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps {
|
|
31
|
+
id?: string;
|
|
32
|
+
/** The placeholder text when the select is empty. */
|
|
33
|
+
placeholder?: string;
|
|
34
|
+
/**
|
|
35
|
+
* @defaultValue 'primary'
|
|
36
|
+
*/
|
|
37
|
+
color?: Select['variants']['color'];
|
|
38
|
+
/**
|
|
39
|
+
* @defaultValue 'outline'
|
|
40
|
+
*/
|
|
41
|
+
variant?: Select['variants']['variant'];
|
|
42
|
+
/**
|
|
43
|
+
* @defaultValue 'md'
|
|
44
|
+
*/
|
|
45
|
+
size?: Select['variants']['size'];
|
|
46
|
+
/**
|
|
47
|
+
* The icon displayed to open the menu.
|
|
48
|
+
* @defaultValue appConfig.ui.icons.chevronDown
|
|
49
|
+
* @IconifyIcon
|
|
50
|
+
*/
|
|
51
|
+
trailingIcon?: IconProps['name'];
|
|
52
|
+
/**
|
|
53
|
+
* The icon displayed when an item is selected.
|
|
54
|
+
* @defaultValue appConfig.ui.icons.check
|
|
55
|
+
* @IconifyIcon
|
|
56
|
+
*/
|
|
57
|
+
selectedIcon?: IconProps['name'];
|
|
58
|
+
/**
|
|
59
|
+
* The content of the menu.
|
|
60
|
+
* @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' }
|
|
61
|
+
*/
|
|
62
|
+
content?: Omit<SelectContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<SelectContentEmits>>;
|
|
63
|
+
/**
|
|
64
|
+
* Display an arrow alongside the menu.
|
|
65
|
+
* @defaultValue false
|
|
66
|
+
*/
|
|
67
|
+
arrow?: boolean | Omit<SelectArrowProps, 'as' | 'asChild'>;
|
|
68
|
+
/**
|
|
69
|
+
* Render the menu in a portal.
|
|
70
|
+
* @defaultValue true
|
|
71
|
+
*/
|
|
72
|
+
portal?: boolean | string | HTMLElement;
|
|
73
|
+
/**
|
|
74
|
+
* When `items` is an array of objects, select the field to use as the value.
|
|
75
|
+
* @defaultValue 'value'
|
|
76
|
+
*/
|
|
77
|
+
valueKey?: VK;
|
|
78
|
+
/**
|
|
79
|
+
* When `items` is an array of objects, select the field to use as the label.
|
|
80
|
+
* @defaultValue 'label'
|
|
81
|
+
*/
|
|
82
|
+
labelKey?: GetItemKeys<T>;
|
|
83
|
+
items?: T;
|
|
84
|
+
/** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
|
|
85
|
+
defaultValue?: GetModelValue<T, VK, M>;
|
|
86
|
+
/** The controlled value of the Select. Can be bind as `v-model`. */
|
|
87
|
+
modelValue?: GetModelValue<T, VK, M>;
|
|
88
|
+
/** Whether multiple options can be selected or not. */
|
|
89
|
+
multiple?: M & boolean;
|
|
90
|
+
/** Highlight the ring color like a focus state. */
|
|
91
|
+
highlight?: boolean;
|
|
92
|
+
autofocus?: boolean;
|
|
93
|
+
autofocusDelay?: number;
|
|
94
|
+
class?: any;
|
|
95
|
+
ui?: Select['slots'];
|
|
96
|
+
}
|
|
97
|
+
export type SelectEmits<A extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined, M extends boolean> = Omit<SelectRootEmits, 'update:modelValue'> & {
|
|
98
|
+
change: [event: Event];
|
|
99
|
+
blur: [event: FocusEvent];
|
|
100
|
+
focus: [event: FocusEvent];
|
|
101
|
+
} & GetModelValueEmits<A, VK, M>;
|
|
102
|
+
type SlotProps<T extends SelectItem> = (props: {
|
|
103
|
+
item: T;
|
|
104
|
+
index: number;
|
|
105
|
+
}) => any;
|
|
106
|
+
export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<A> | undefined = undefined, M extends boolean = false, T extends NestedItem<A> = NestedItem<A>> {
|
|
107
|
+
'leading'(props: {
|
|
108
|
+
modelValue?: GetModelValue<A, VK, M>;
|
|
109
|
+
open: boolean;
|
|
110
|
+
ui: {
|
|
111
|
+
[K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
|
|
112
|
+
};
|
|
113
|
+
}): any;
|
|
114
|
+
'default'(props: {
|
|
115
|
+
modelValue?: GetModelValue<A, VK, M>;
|
|
116
|
+
open: boolean;
|
|
117
|
+
}): any;
|
|
118
|
+
'trailing'(props: {
|
|
119
|
+
modelValue?: GetModelValue<A, VK, M>;
|
|
120
|
+
open: boolean;
|
|
121
|
+
ui: {
|
|
122
|
+
[K in keyof Required<Select['slots']>]: (props?: Record<string, any>) => string;
|
|
123
|
+
};
|
|
124
|
+
}): any;
|
|
125
|
+
'item': SlotProps<T>;
|
|
126
|
+
'item-leading': SlotProps<T>;
|
|
127
|
+
'item-label': SlotProps<T>;
|
|
128
|
+
'item-trailing': SlotProps<T>;
|
|
129
|
+
'content-top': (props?: {}) => any;
|
|
130
|
+
'content-bottom': (props?: {}) => any;
|
|
131
|
+
}
|
|
132
|
+
declare const _default: <T extends ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = "value", M extends boolean = false>(__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<{
|
|
133
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
134
|
+
readonly onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
135
|
+
readonly onChange?: ((event: Event) => any) | undefined;
|
|
136
|
+
readonly onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
137
|
+
readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
138
|
+
readonly "onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
|
|
139
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onFocus" | "onBlur" | "onChange" | "onUpdate:open" | "onUpdate:modelValue"> & SelectProps<T, VK, M> & {}> & import("vue").PublicProps;
|
|
140
|
+
expose(exposed: import("vue").ShallowUnwrapRef<{
|
|
141
|
+
triggerRef: import("vue").Ref<({
|
|
142
|
+
$: import("vue").ComponentInternalInstance;
|
|
143
|
+
$data: {};
|
|
144
|
+
$props: {
|
|
145
|
+
readonly disabled?: boolean | undefined;
|
|
146
|
+
readonly reference?: import("reka-ui").ReferenceElement | undefined;
|
|
147
|
+
readonly asChild?: boolean | undefined;
|
|
148
|
+
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
149
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
150
|
+
$attrs: {
|
|
151
|
+
[x: string]: unknown;
|
|
152
|
+
};
|
|
153
|
+
$refs: {
|
|
154
|
+
[x: string]: unknown;
|
|
155
|
+
};
|
|
156
|
+
$slots: Readonly<{
|
|
157
|
+
[name: string]: import("vue").Slot<any> | undefined;
|
|
158
|
+
}>;
|
|
159
|
+
$root: import("vue").ComponentPublicInstance | null;
|
|
160
|
+
$parent: import("vue").ComponentPublicInstance | null;
|
|
161
|
+
$host: Element | null;
|
|
162
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
163
|
+
$el: any;
|
|
164
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
165
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
166
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
167
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
168
|
+
created?: (() => void) | (() => void)[];
|
|
169
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
170
|
+
mounted?: (() => void) | (() => void)[];
|
|
171
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
172
|
+
updated?: (() => void) | (() => void)[];
|
|
173
|
+
activated?: (() => void) | (() => void)[];
|
|
174
|
+
deactivated?: (() => void) | (() => void)[];
|
|
175
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
176
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
177
|
+
destroyed?: (() => void) | (() => void)[];
|
|
178
|
+
unmounted?: (() => void) | (() => void)[];
|
|
179
|
+
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
180
|
+
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
181
|
+
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
182
|
+
};
|
|
183
|
+
$forceUpdate: () => void;
|
|
184
|
+
$nextTick: typeof import("vue").nextTick;
|
|
185
|
+
$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;
|
|
186
|
+
} & Readonly<{
|
|
187
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
188
|
+
}> & Omit<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
189
|
+
$slots: {
|
|
190
|
+
default?: (props: {}) => any;
|
|
191
|
+
};
|
|
192
|
+
}) | null, ({
|
|
193
|
+
$: import("vue").ComponentInternalInstance;
|
|
194
|
+
$data: {};
|
|
195
|
+
$props: {
|
|
196
|
+
readonly disabled?: boolean | undefined;
|
|
197
|
+
readonly reference?: import("reka-ui").ReferenceElement | undefined;
|
|
198
|
+
readonly asChild?: boolean | undefined;
|
|
199
|
+
readonly as?: (import("reka-ui").AsTag | import("vue").Component) | undefined;
|
|
200
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps;
|
|
201
|
+
$attrs: {
|
|
202
|
+
[x: string]: unknown;
|
|
203
|
+
};
|
|
204
|
+
$refs: {
|
|
205
|
+
[x: string]: unknown;
|
|
206
|
+
};
|
|
207
|
+
$slots: Readonly<{
|
|
208
|
+
[name: string]: import("vue").Slot<any> | undefined;
|
|
209
|
+
}>;
|
|
210
|
+
$root: import("vue").ComponentPublicInstance | null;
|
|
211
|
+
$parent: import("vue").ComponentPublicInstance | null;
|
|
212
|
+
$host: Element | null;
|
|
213
|
+
$emit: (event: string, ...args: any[]) => void;
|
|
214
|
+
$el: any;
|
|
215
|
+
$options: import("vue").ComponentOptionsBase<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
|
216
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
217
|
+
}, {}, string, {}, import("vue").GlobalComponents, import("vue").GlobalDirectives, string, import("vue").ComponentProvideOptions> & {
|
|
218
|
+
beforeCreate?: (() => void) | (() => void)[];
|
|
219
|
+
created?: (() => void) | (() => void)[];
|
|
220
|
+
beforeMount?: (() => void) | (() => void)[];
|
|
221
|
+
mounted?: (() => void) | (() => void)[];
|
|
222
|
+
beforeUpdate?: (() => void) | (() => void)[];
|
|
223
|
+
updated?: (() => void) | (() => void)[];
|
|
224
|
+
activated?: (() => void) | (() => void)[];
|
|
225
|
+
deactivated?: (() => void) | (() => void)[];
|
|
226
|
+
beforeDestroy?: (() => void) | (() => void)[];
|
|
227
|
+
beforeUnmount?: (() => void) | (() => void)[];
|
|
228
|
+
destroyed?: (() => void) | (() => void)[];
|
|
229
|
+
unmounted?: (() => void) | (() => void)[];
|
|
230
|
+
renderTracked?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
231
|
+
renderTriggered?: ((e: import("vue").DebuggerEvent) => void) | ((e: import("vue").DebuggerEvent) => void)[];
|
|
232
|
+
errorCaptured?: ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance | null, info: string) => boolean | void)[];
|
|
233
|
+
};
|
|
234
|
+
$forceUpdate: () => void;
|
|
235
|
+
$nextTick: typeof import("vue").nextTick;
|
|
236
|
+
$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;
|
|
237
|
+
} & Readonly<{
|
|
238
|
+
as: import("reka-ui").AsTag | import("vue").Component;
|
|
239
|
+
}> & Omit<Readonly<import("reka-ui").SelectTriggerProps> & Readonly<{}>, "as"> & import("vue").ShallowUnwrapRef<{}> & {} & import("vue").ComponentCustomProperties & {} & {
|
|
240
|
+
$slots: {
|
|
241
|
+
default?: (props: {}) => any;
|
|
242
|
+
};
|
|
243
|
+
}) | null>;
|
|
244
|
+
}>): void;
|
|
245
|
+
attrs: any;
|
|
246
|
+
slots: SelectSlots<T, VK, M, NestedItem<T>>;
|
|
247
|
+
emit: ((evt: "blur", event: FocusEvent) => void) & ((evt: "change", event: Event) => void) & ((evt: "focus", event: FocusEvent) => void) & ((evt: "update:open", value: boolean) => void) & ((evt: "update:modelValue", value: GetModelValue<T, VK, M>) => void);
|
|
248
|
+
}>) => import("vue").VNode & {
|
|
249
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
250
|
+
};
|
|
251
|
+
export default _default;
|
|
252
|
+
type __VLS_PrettifyLocal<T> = {
|
|
253
|
+
[K in keyof T as K]: T[K];
|
|
254
|
+
} & {};
|
|
@@ -4,7 +4,7 @@ import theme from "#build/ui/select";
|
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
6
|
import { ref, computed, onMounted, toRef } from "vue";
|
|
7
|
-
import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectLabel, SelectGroup, SelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from "reka-ui";
|
|
7
|
+
import { SelectRoot, SelectArrow, SelectTrigger, SelectPortal, SelectContent, SelectLabel, SelectGroup, SelectItem as RSelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from "reka-ui";
|
|
8
8
|
import { defu } from "defu";
|
|
9
9
|
import { reactivePick } from "@vueuse/core";
|
|
10
10
|
import { useAppConfig } from "#imports";
|
|
@@ -186,7 +186,7 @@ defineExpose({
|
|
|
186
186
|
|
|
187
187
|
<SelectSeparator v-else-if="isSelectItem(item) && item.type === 'separator'" :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })" />
|
|
188
188
|
|
|
189
|
-
<
|
|
189
|
+
<RSelectItem
|
|
190
190
|
v-else
|
|
191
191
|
:class="ui.item({ class: [props.ui?.item, isSelectItem(item) && item.ui?.item, isSelectItem(item) && item.class] })"
|
|
192
192
|
:disabled="isSelectItem(item) && item.disabled"
|
|
@@ -221,7 +221,7 @@ defineExpose({
|
|
|
221
221
|
</SelectItemIndicator>
|
|
222
222
|
</span>
|
|
223
223
|
</slot>
|
|
224
|
-
</
|
|
224
|
+
</RSelectItem>
|
|
225
225
|
</template>
|
|
226
226
|
</SelectGroup>
|
|
227
227
|
</div>
|
|
@@ -6,7 +6,8 @@ import type { AvatarProps, ChipProps, IconProps } from '../types';
|
|
|
6
6
|
import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
|
|
7
7
|
import type { ComponentConfig } from '../types/tv';
|
|
8
8
|
type Select = ComponentConfig<typeof theme, AppConfig, 'select'>;
|
|
9
|
-
|
|
9
|
+
export type SelectValue = AcceptableValue;
|
|
10
|
+
export type SelectItem = SelectValue | {
|
|
10
11
|
label?: string;
|
|
11
12
|
/**
|
|
12
13
|
* @IconifyIcon
|
|
@@ -19,14 +20,13 @@ interface SelectItemBase {
|
|
|
19
20
|
* @defaultValue 'item'
|
|
20
21
|
*/
|
|
21
22
|
type?: 'label' | 'separator' | 'item';
|
|
22
|
-
value?:
|
|
23
|
+
value?: SelectValue;
|
|
23
24
|
disabled?: boolean;
|
|
24
25
|
onSelect?(e?: Event): void;
|
|
25
26
|
class?: any;
|
|
26
27
|
ui?: Pick<Select['slots'], 'label' | 'separator' | 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemTrailing' | 'itemTrailingIcon'>;
|
|
27
28
|
[key: string]: any;
|
|
28
|
-
}
|
|
29
|
-
export type SelectItem = SelectItemBase | AcceptableValue | boolean;
|
|
29
|
+
};
|
|
30
30
|
export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested<SelectItem>, VK extends GetItemKeys<T> = 'value', M extends boolean = false> extends Omit<SelectRootProps<T>, 'dir' | 'multiple' | 'modelValue' | 'defaultValue' | 'by'>, UseComponentIconsProps {
|
|
31
31
|
id?: string;
|
|
32
32
|
/** The placeholder text when the select is empty. */
|
|
@@ -79,7 +79,7 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
|
|
|
79
79
|
* When `items` is an array of objects, select the field to use as the label.
|
|
80
80
|
* @defaultValue 'label'
|
|
81
81
|
*/
|
|
82
|
-
labelKey?:
|
|
82
|
+
labelKey?: GetItemKeys<T>;
|
|
83
83
|
items?: T;
|
|
84
84
|
/** The value of the Select when initially rendered. Use when you do not need to control the state of the Select. */
|
|
85
85
|
defaultValue?: GetModelValue<T, VK, M>;
|