@nuxt/ui 4.2.1 → 4.3.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.css +2 -0
- package/README.md +2 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/Accordion.d.vue.ts +3 -3
- package/dist/runtime/components/Accordion.vue.d.ts +3 -3
- package/dist/runtime/components/Alert.d.vue.ts +3 -5
- package/dist/runtime/components/Alert.vue.d.ts +3 -5
- package/dist/runtime/components/App.d.vue.ts +3 -1
- package/dist/runtime/components/App.vue.d.ts +3 -1
- package/dist/runtime/components/AuthForm.d.vue.ts +8 -46
- package/dist/runtime/components/AuthForm.vue.d.ts +8 -46
- package/dist/runtime/components/Badge.d.vue.ts +1 -3
- package/dist/runtime/components/Badge.vue.d.ts +1 -3
- package/dist/runtime/components/Banner.d.vue.ts +2 -2
- package/dist/runtime/components/Banner.vue.d.ts +2 -2
- package/dist/runtime/components/BlogPost.d.vue.ts +1 -4
- package/dist/runtime/components/BlogPost.vue +0 -1
- package/dist/runtime/components/BlogPost.vue.d.ts +1 -4
- package/dist/runtime/components/BlogPosts.d.vue.ts +3 -1
- package/dist/runtime/components/BlogPosts.vue.d.ts +3 -1
- package/dist/runtime/components/Breadcrumb.d.vue.ts +3 -1
- package/dist/runtime/components/Breadcrumb.vue.d.ts +3 -1
- package/dist/runtime/components/Calendar.d.vue.ts +8 -11
- package/dist/runtime/components/Calendar.vue.d.ts +8 -11
- package/dist/runtime/components/Carousel.d.vue.ts +6 -6
- package/dist/runtime/components/Carousel.vue +22 -0
- package/dist/runtime/components/Carousel.vue.d.ts +6 -6
- package/dist/runtime/components/ChangelogVersion.d.vue.ts +1 -4
- package/dist/runtime/components/ChangelogVersion.vue +0 -1
- package/dist/runtime/components/ChangelogVersion.vue.d.ts +1 -4
- package/dist/runtime/components/ChangelogVersions.d.vue.ts +3 -1
- package/dist/runtime/components/ChangelogVersions.vue.d.ts +3 -1
- package/dist/runtime/components/ChatMessage.d.vue.ts +1 -3
- package/dist/runtime/components/ChatMessage.vue.d.ts +1 -3
- package/dist/runtime/components/ChatMessages.d.vue.ts +3 -8
- package/dist/runtime/components/ChatMessages.vue.d.ts +3 -8
- package/dist/runtime/components/ChatPrompt.d.vue.ts +2 -7
- package/dist/runtime/components/ChatPrompt.vue.d.ts +2 -7
- package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +3 -11
- package/dist/runtime/components/ChatPromptSubmit.vue +1 -20
- package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +3 -11
- package/dist/runtime/components/CheckboxGroup.d.vue.ts +3 -4
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +3 -4
- package/dist/runtime/components/Chip.d.vue.ts +1 -4
- package/dist/runtime/components/Chip.vue.d.ts +1 -4
- package/dist/runtime/components/Collapsible.d.vue.ts +1 -3
- package/dist/runtime/components/Collapsible.vue.d.ts +1 -3
- package/dist/runtime/components/ColorPicker.d.vue.ts +1 -5
- package/dist/runtime/components/ColorPicker.vue.d.ts +1 -5
- package/dist/runtime/components/CommandPalette.d.vue.ts +9 -14
- package/dist/runtime/components/CommandPalette.vue.d.ts +9 -14
- package/dist/runtime/components/ContextMenu.d.vue.ts +9 -5
- package/dist/runtime/components/ContextMenu.vue.d.ts +9 -5
- package/dist/runtime/components/ContextMenuContent.d.vue.ts +3 -7
- package/dist/runtime/components/ContextMenuContent.vue +2 -2
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +3 -7
- package/dist/runtime/components/DashboardGroup.d.vue.ts +1 -6
- package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -6
- package/dist/runtime/components/DashboardNavbar.d.vue.ts +3 -6
- package/dist/runtime/components/DashboardNavbar.vue.d.ts +3 -6
- package/dist/runtime/components/DashboardPanel.d.vue.ts +1 -4
- package/dist/runtime/components/DashboardPanel.vue.d.ts +1 -4
- package/dist/runtime/components/DashboardSearch.d.vue.ts +4 -9
- package/dist/runtime/components/DashboardSearch.vue.d.ts +4 -9
- package/dist/runtime/components/DashboardSearchButton.d.vue.ts +3 -8
- package/dist/runtime/components/DashboardSearchButton.vue +1 -20
- package/dist/runtime/components/DashboardSearchButton.vue.d.ts +3 -8
- package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -6
- package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -6
- package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +3 -7
- package/dist/runtime/components/DashboardSidebarCollapse.vue +1 -20
- package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +3 -7
- package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +3 -7
- package/dist/runtime/components/DashboardSidebarToggle.vue +1 -20
- package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +3 -7
- package/dist/runtime/components/Drawer.d.vue.ts +1 -8
- package/dist/runtime/components/Drawer.vue.d.ts +1 -8
- package/dist/runtime/components/DropdownMenu.d.vue.ts +9 -5
- package/dist/runtime/components/DropdownMenu.vue.d.ts +9 -5
- package/dist/runtime/components/DropdownMenuContent.d.vue.ts +3 -7
- package/dist/runtime/components/DropdownMenuContent.vue +2 -2
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +3 -7
- package/dist/runtime/components/Editor.d.vue.ts +87 -0
- package/dist/runtime/components/Editor.vue +185 -0
- package/dist/runtime/components/Editor.vue.d.ts +87 -0
- package/dist/runtime/components/EditorDragHandle.d.vue.ts +64 -0
- package/dist/runtime/components/EditorDragHandle.vue +127 -0
- package/dist/runtime/components/EditorDragHandle.vue.d.ts +64 -0
- package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +35 -0
- package/dist/runtime/components/EditorEmojiMenu.vue +70 -0
- package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +35 -0
- package/dist/runtime/components/EditorMentionMenu.d.vue.ts +39 -0
- package/dist/runtime/components/EditorMentionMenu.vue +72 -0
- package/dist/runtime/components/EditorMentionMenu.vue.d.ts +39 -0
- package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +52 -0
- package/dist/runtime/components/EditorSuggestionMenu.vue +80 -0
- package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +52 -0
- package/dist/runtime/components/EditorToolbar.d.vue.ts +90 -0
- package/dist/runtime/components/EditorToolbar.vue +242 -0
- package/dist/runtime/components/EditorToolbar.vue.d.ts +90 -0
- package/dist/runtime/components/Error.d.vue.ts +2 -5
- package/dist/runtime/components/Error.vue.d.ts +2 -5
- package/dist/runtime/components/FieldGroup.d.vue.ts +1 -3
- package/dist/runtime/components/FieldGroup.vue.d.ts +1 -3
- package/dist/runtime/components/FileUpload.d.vue.ts +5 -6
- package/dist/runtime/components/FileUpload.vue.d.ts +5 -6
- package/dist/runtime/components/Footer.d.vue.ts +1 -3
- package/dist/runtime/components/Footer.vue.d.ts +1 -3
- package/dist/runtime/components/FooterColumns.d.vue.ts +3 -1
- package/dist/runtime/components/FooterColumns.vue.d.ts +3 -1
- package/dist/runtime/components/Form.d.vue.ts +3 -4
- package/dist/runtime/components/Form.vue.d.ts +3 -4
- package/dist/runtime/components/FormField.d.vue.ts +5 -0
- package/dist/runtime/components/FormField.vue +6 -5
- package/dist/runtime/components/FormField.vue.d.ts +5 -0
- package/dist/runtime/components/Header.d.vue.ts +5 -5
- package/dist/runtime/components/Header.vue.d.ts +5 -5
- package/dist/runtime/components/Input.d.vue.ts +5 -7
- package/dist/runtime/components/Input.vue.d.ts +5 -7
- package/dist/runtime/components/InputDate.d.vue.ts +4 -8
- package/dist/runtime/components/InputDate.vue.d.ts +4 -8
- package/dist/runtime/components/InputMenu.d.vue.ts +9 -15
- package/dist/runtime/components/InputMenu.vue +14 -1
- package/dist/runtime/components/InputMenu.vue.d.ts +9 -15
- package/dist/runtime/components/InputNumber.d.vue.ts +7 -9
- package/dist/runtime/components/InputNumber.vue.d.ts +7 -9
- package/dist/runtime/components/InputTags.d.vue.ts +4 -10
- package/dist/runtime/components/InputTags.vue.d.ts +4 -10
- package/dist/runtime/components/InputTime.d.vue.ts +3 -5
- package/dist/runtime/components/InputTime.vue.d.ts +3 -5
- package/dist/runtime/components/Kbd.d.vue.ts +1 -3
- package/dist/runtime/components/Kbd.vue.d.ts +1 -3
- package/dist/runtime/components/Link.d.vue.ts +6 -6
- package/dist/runtime/components/Link.vue.d.ts +6 -6
- package/dist/runtime/components/LinkBase.d.vue.ts +1 -4
- package/dist/runtime/components/LinkBase.vue.d.ts +1 -4
- package/dist/runtime/components/Marquee.d.vue.ts +1 -5
- package/dist/runtime/components/Marquee.vue.d.ts +1 -5
- package/dist/runtime/components/Modal.d.vue.ts +3 -10
- package/dist/runtime/components/Modal.vue.d.ts +3 -10
- package/dist/runtime/components/NavigationMenu.d.vue.ts +3 -3
- package/dist/runtime/components/NavigationMenu.vue.d.ts +3 -3
- package/dist/runtime/components/PageAnchors.d.vue.ts +3 -1
- package/dist/runtime/components/PageAnchors.vue.d.ts +3 -1
- package/dist/runtime/components/PageAside.d.vue.ts +1 -3
- package/dist/runtime/components/PageAside.vue.d.ts +1 -3
- package/dist/runtime/components/PageCTA.d.vue.ts +1 -4
- package/dist/runtime/components/PageCTA.vue.d.ts +1 -4
- package/dist/runtime/components/PageCard.d.vue.ts +1 -3
- package/dist/runtime/components/PageCard.vue.d.ts +1 -3
- package/dist/runtime/components/PageFeature.d.vue.ts +1 -3
- package/dist/runtime/components/PageFeature.vue +2 -2
- package/dist/runtime/components/PageFeature.vue.d.ts +1 -3
- package/dist/runtime/components/PageHero.d.vue.ts +1 -3
- package/dist/runtime/components/PageHero.vue.d.ts +1 -3
- package/dist/runtime/components/PageLinks.d.vue.ts +3 -1
- package/dist/runtime/components/PageLinks.vue.d.ts +3 -1
- package/dist/runtime/components/PageList.d.vue.ts +1 -3
- package/dist/runtime/components/PageList.vue.d.ts +1 -3
- package/dist/runtime/components/PageLogos.d.vue.ts +1 -3
- package/dist/runtime/components/PageLogos.vue.d.ts +1 -3
- package/dist/runtime/components/PageSection.d.vue.ts +1 -4
- package/dist/runtime/components/PageSection.vue.d.ts +1 -4
- package/dist/runtime/components/Pagination.d.vue.ts +1 -12
- package/dist/runtime/components/Pagination.vue.d.ts +1 -12
- package/dist/runtime/components/PinInput.d.vue.ts +4 -7
- package/dist/runtime/components/PinInput.vue +1 -1
- package/dist/runtime/components/PinInput.vue.d.ts +4 -7
- package/dist/runtime/components/Popover.d.vue.ts +3 -4
- package/dist/runtime/components/Popover.vue.d.ts +3 -4
- package/dist/runtime/components/PricingPlan.d.vue.ts +1 -3
- package/dist/runtime/components/PricingPlan.vue.d.ts +1 -3
- package/dist/runtime/components/PricingPlans.d.vue.ts +3 -1
- package/dist/runtime/components/PricingPlans.vue.d.ts +3 -1
- package/dist/runtime/components/PricingTable.d.vue.ts +3 -1
- package/dist/runtime/components/PricingTable.vue.d.ts +3 -1
- package/dist/runtime/components/Progress.d.vue.ts +1 -5
- package/dist/runtime/components/Progress.vue.d.ts +1 -5
- package/dist/runtime/components/RadioGroup.d.vue.ts +3 -4
- package/dist/runtime/components/RadioGroup.vue.d.ts +3 -4
- package/dist/runtime/components/ScrollArea.d.vue.ts +81 -0
- package/dist/runtime/components/ScrollArea.vue +187 -0
- package/dist/runtime/components/ScrollArea.vue.d.ts +81 -0
- package/dist/runtime/components/Select.d.vue.ts +6 -8
- package/dist/runtime/components/Select.vue +14 -1
- package/dist/runtime/components/Select.vue.d.ts +6 -8
- package/dist/runtime/components/SelectMenu.d.vue.ts +9 -14
- package/dist/runtime/components/SelectMenu.vue +14 -1
- package/dist/runtime/components/SelectMenu.vue.d.ts +9 -14
- package/dist/runtime/components/Separator.d.vue.ts +1 -3
- package/dist/runtime/components/Separator.vue.d.ts +1 -3
- package/dist/runtime/components/Slideover.d.vue.ts +8 -11
- package/dist/runtime/components/Slideover.vue +3 -1
- package/dist/runtime/components/Slideover.vue.d.ts +8 -11
- package/dist/runtime/components/Slider.d.vue.ts +3 -4
- package/dist/runtime/components/Slider.vue +2 -2
- package/dist/runtime/components/Slider.vue.d.ts +3 -4
- package/dist/runtime/components/Stepper.d.vue.ts +3 -5
- package/dist/runtime/components/Stepper.vue.d.ts +3 -5
- package/dist/runtime/components/Table.d.vue.ts +5 -16
- package/dist/runtime/components/Table.vue +55 -33
- package/dist/runtime/components/Table.vue.d.ts +5 -16
- package/dist/runtime/components/Tabs.d.vue.ts +3 -3
- package/dist/runtime/components/Tabs.vue.d.ts +3 -3
- package/dist/runtime/components/Textarea.d.vue.ts +5 -7
- package/dist/runtime/components/Textarea.vue.d.ts +5 -7
- package/dist/runtime/components/Timeline.d.vue.ts +3 -3
- package/dist/runtime/components/Timeline.vue.d.ts +3 -3
- package/dist/runtime/components/Toast.d.vue.ts +3 -7
- package/dist/runtime/components/Toast.vue.d.ts +3 -7
- package/dist/runtime/components/Toaster.d.vue.ts +1 -7
- package/dist/runtime/components/Toaster.vue.d.ts +1 -7
- package/dist/runtime/components/Tooltip.d.vue.ts +1 -3
- package/dist/runtime/components/Tooltip.vue.d.ts +1 -3
- package/dist/runtime/components/Tree.d.vue.ts +3 -4
- package/dist/runtime/components/Tree.vue.d.ts +3 -4
- package/dist/runtime/components/User.d.vue.ts +1 -3
- package/dist/runtime/components/User.vue +0 -1
- package/dist/runtime/components/User.vue.d.ts +1 -3
- package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +3 -6
- package/dist/runtime/components/color-mode/ColorModeButton.vue +3 -22
- package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +3 -6
- package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
- package/dist/runtime/components/color-mode/ColorModeSelect.vue +1 -0
- package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
- package/dist/runtime/components/content/ContentNavigation.d.vue.ts +3 -3
- package/dist/runtime/components/content/ContentNavigation.vue.d.ts +3 -3
- package/dist/runtime/components/content/ContentSearch.d.vue.ts +6 -6
- package/dist/runtime/components/content/ContentSearch.vue.d.ts +6 -6
- package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +3 -8
- package/dist/runtime/components/content/ContentSearchButton.vue +1 -20
- package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +3 -8
- package/dist/runtime/components/content/ContentSurround.d.vue.ts +3 -1
- package/dist/runtime/components/content/ContentSurround.vue.d.ts +3 -1
- package/dist/runtime/components/content/ContentToc.d.vue.ts +3 -4
- package/dist/runtime/components/content/ContentToc.vue.d.ts +3 -4
- package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -5
- package/dist/runtime/components/locale/LocaleSelect.vue +10 -3
- package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -5
- package/dist/runtime/components/prose/Accordion.d.vue.ts +1 -3
- package/dist/runtime/components/prose/Accordion.vue.d.ts +1 -3
- package/dist/runtime/components/prose/Callout.vue +0 -1
- package/dist/runtime/components/prose/Card.vue +0 -1
- package/dist/runtime/components/prose/CodeGroup.d.vue.ts +1 -3
- package/dist/runtime/components/prose/CodeGroup.vue.d.ts +1 -3
- package/dist/runtime/components/prose/CodeTree.d.vue.ts +20 -1
- package/dist/runtime/components/prose/CodeTree.vue +32 -8
- package/dist/runtime/components/prose/CodeTree.vue.d.ts +20 -1
- package/dist/runtime/components/prose/Img.d.vue.ts +1 -3
- package/dist/runtime/components/prose/Img.vue.d.ts +1 -3
- package/dist/runtime/components/prose/Tabs.d.vue.ts +1 -3
- package/dist/runtime/components/prose/Tabs.vue.d.ts +1 -3
- package/dist/runtime/components/prose/callout/Caution.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Caution.vue.d.ts +2 -2
- package/dist/runtime/components/prose/callout/Note.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Note.vue.d.ts +2 -2
- package/dist/runtime/components/prose/callout/Tip.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Tip.vue.d.ts +2 -2
- package/dist/runtime/components/prose/callout/Warning.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Warning.vue.d.ts +2 -2
- package/dist/runtime/composables/defineShortcuts.d.ts +2 -1
- package/dist/runtime/composables/defineShortcuts.js +62 -15
- package/dist/runtime/composables/useEditorMenu.d.ts +64 -0
- package/dist/runtime/composables/useEditorMenu.js +448 -0
- package/dist/runtime/composables/useFileUpload.d.ts +1 -2
- package/dist/runtime/locale/en_gb.d.ts +3 -0
- package/dist/runtime/locale/en_gb.js +7 -0
- package/dist/runtime/locale/eu.d.ts +3 -0
- package/dist/runtime/locale/eu.js +129 -0
- package/dist/runtime/locale/index.d.ts +3 -0
- package/dist/runtime/locale/index.js +3 -0
- package/dist/runtime/locale/lo.d.ts +3 -0
- package/dist/runtime/locale/lo.js +129 -0
- package/dist/runtime/types/editor.d.ts +69 -0
- package/dist/runtime/types/editor.js +0 -0
- package/dist/runtime/types/index.d.ts +8 -0
- package/dist/runtime/types/index.js +8 -0
- package/dist/runtime/utils/content.d.ts +2 -2
- package/dist/runtime/utils/editor.d.ts +69 -0
- package/dist/runtime/utils/editor.js +364 -0
- package/dist/runtime/utils/locale.d.ts +1 -2
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +1 -0
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.d.vue.ts +2 -7
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue +3 -3
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue.d.ts +2 -7
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.d.vue.ts +2 -5
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue.d.ts +2 -5
- package/dist/runtime/vue/overrides/none/Link.d.vue.ts +71 -0
- package/dist/runtime/vue/overrides/none/Link.vue +122 -0
- package/dist/runtime/vue/overrides/none/Link.vue.d.ts +71 -0
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.d.vue.ts +2 -7
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue +4 -4
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue.d.ts +2 -7
- package/dist/runtime/vue/{stubs.d.ts → stubs/base.d.ts} +4 -5
- package/dist/runtime/vue/{stubs.js → stubs/base.js} +4 -5
- package/dist/runtime/vue/stubs/inertia.d.ts +5 -0
- package/dist/runtime/vue/stubs/inertia.js +10 -0
- package/dist/runtime/vue/stubs/none.d.ts +56 -0
- package/dist/runtime/vue/stubs/none.js +48 -0
- package/dist/runtime/vue/stubs/vue-router.d.ts +2 -0
- package/dist/runtime/vue/stubs/vue-router.js +2 -0
- package/dist/shared/{ui.B77q-Dvh.mjs → ui.DegC4tw1.mjs} +282 -60
- package/dist/unplugin.d.mts +14 -0
- package/dist/unplugin.mjs +73 -48
- package/dist/vite.mjs +1 -1
- package/package.json +45 -31
- package/dist/runtime/inertia/stubs.d.ts +0 -44
- package/dist/runtime/inertia/stubs.js +0 -84
- /package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue +0 -0
|
@@ -55,10 +55,9 @@ export interface PopoverSlots<M extends PopoverMode = PopoverMode> {
|
|
|
55
55
|
anchor(props: SlotProps<M>): any;
|
|
56
56
|
}
|
|
57
57
|
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<{
|
|
58
|
-
props: __VLS_PrettifyLocal<PopoverProps<M> & {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}> & import("vue").PublicProps;
|
|
58
|
+
props: __VLS_PrettifyLocal<PopoverProps<M> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "update:open", value: boolean) => void) & ((evt: "close:prevent") => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
59
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
60
|
+
} ? P : {});
|
|
62
61
|
expose: (exposed: {}) => void;
|
|
63
62
|
attrs: any;
|
|
64
63
|
slots: PopoverSlots<M>;
|
|
@@ -55,10 +55,9 @@ export interface PopoverSlots<M extends PopoverMode = PopoverMode> {
|
|
|
55
55
|
anchor(props: SlotProps<M>): any;
|
|
56
56
|
}
|
|
57
57
|
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<{
|
|
58
|
-
props: __VLS_PrettifyLocal<PopoverProps<M> & {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}> & import("vue").PublicProps;
|
|
58
|
+
props: __VLS_PrettifyLocal<PopoverProps<M> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "update:open", value: boolean) => void) & ((evt: "close:prevent") => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
59
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
60
|
+
} ? P : {});
|
|
62
61
|
expose: (exposed: {}) => void;
|
|
63
62
|
attrs: any;
|
|
64
63
|
slots: PopoverSlots<M>;
|
|
@@ -107,9 +107,7 @@ export interface PricingPlanSlots {
|
|
|
107
107
|
tagline(props?: {}): any;
|
|
108
108
|
terms(props?: {}): any;
|
|
109
109
|
}
|
|
110
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<PricingPlanProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PricingPlanProps> & Readonly<{}>, {
|
|
111
|
-
orientation: PricingPlan["variants"]["orientation"];
|
|
112
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PricingPlanSlots>;
|
|
110
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<PricingPlanProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PricingPlanProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PricingPlanSlots>;
|
|
113
111
|
declare const _default: typeof __VLS_export;
|
|
114
112
|
export default _default;
|
|
115
113
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -107,9 +107,7 @@ export interface PricingPlanSlots {
|
|
|
107
107
|
tagline(props?: {}): any;
|
|
108
108
|
terms(props?: {}): any;
|
|
109
109
|
}
|
|
110
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<PricingPlanProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PricingPlanProps> & Readonly<{}>, {
|
|
111
|
-
orientation: PricingPlan["variants"]["orientation"];
|
|
112
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PricingPlanSlots>;
|
|
110
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<PricingPlanProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PricingPlanProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, PricingPlanSlots>;
|
|
113
111
|
declare const _default: typeof __VLS_export;
|
|
114
112
|
export default _default;
|
|
115
113
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -37,7 +37,9 @@ export type PricingPlansSlots<T extends PricingPlanProps = PricingPlanProps> = {
|
|
|
37
37
|
default(props?: {}): any;
|
|
38
38
|
};
|
|
39
39
|
declare const __VLS_export: <T extends PricingPlanProps>(__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<{
|
|
40
|
-
props: __VLS_PrettifyLocal<PricingPlansProps> & import("vue").PublicProps
|
|
40
|
+
props: __VLS_PrettifyLocal<PricingPlansProps> & import("vue").PublicProps & (typeof globalThis extends {
|
|
41
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
42
|
+
} ? P : {});
|
|
41
43
|
expose: (exposed: {}) => void;
|
|
42
44
|
attrs: any;
|
|
43
45
|
slots: PricingPlansSlots<T>;
|
|
@@ -37,7 +37,9 @@ export type PricingPlansSlots<T extends PricingPlanProps = PricingPlanProps> = {
|
|
|
37
37
|
default(props?: {}): any;
|
|
38
38
|
};
|
|
39
39
|
declare const __VLS_export: <T extends PricingPlanProps>(__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<{
|
|
40
|
-
props: __VLS_PrettifyLocal<PricingPlansProps> & import("vue").PublicProps
|
|
40
|
+
props: __VLS_PrettifyLocal<PricingPlansProps> & import("vue").PublicProps & (typeof globalThis extends {
|
|
41
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
42
|
+
} ? P : {});
|
|
41
43
|
expose: (exposed: {}) => void;
|
|
42
44
|
attrs: any;
|
|
43
45
|
slots: PricingPlansSlots<T>;
|
|
@@ -91,7 +91,9 @@ export type PricingTableSlots<T extends PricingTableTier = PricingTableTier> = {
|
|
|
91
91
|
}) => any;
|
|
92
92
|
} & DynamicSlots<T, 'title' | 'description' | 'badge' | 'button' | 'billing' | 'discount' | 'price'> & FeatureDynamicSlots<PricingTableSectionFeature<T>, 'title' | 'value'> & SectionDynamicSlots<PricingTableSection<T>, 'title'>;
|
|
93
93
|
declare const __VLS_export: <T extends PricingTableTier>(__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<{
|
|
94
|
-
props: __VLS_PrettifyLocal<PricingTableProps<T>> & import("vue").PublicProps
|
|
94
|
+
props: __VLS_PrettifyLocal<PricingTableProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
95
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
96
|
+
} ? P : {});
|
|
95
97
|
expose: (exposed: {}) => void;
|
|
96
98
|
attrs: any;
|
|
97
99
|
slots: PricingTableSlots<T>;
|
|
@@ -91,7 +91,9 @@ export type PricingTableSlots<T extends PricingTableTier = PricingTableTier> = {
|
|
|
91
91
|
}) => any;
|
|
92
92
|
} & DynamicSlots<T, 'title' | 'description' | 'badge' | 'button' | 'billing' | 'discount' | 'price'> & FeatureDynamicSlots<PricingTableSectionFeature<T>, 'title' | 'value'> & SectionDynamicSlots<PricingTableSection<T>, 'title'>;
|
|
93
93
|
declare const __VLS_export: <T extends PricingTableTier>(__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<{
|
|
94
|
-
props: __VLS_PrettifyLocal<PricingTableProps<T>> & import("vue").PublicProps
|
|
94
|
+
props: __VLS_PrettifyLocal<PricingTableProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
95
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
96
|
+
} ? P : {});
|
|
95
97
|
expose: (exposed: {}) => void;
|
|
96
98
|
attrs: any;
|
|
97
99
|
slots: PricingTableSlots<T>;
|
|
@@ -53,11 +53,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Progre
|
|
|
53
53
|
}, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
|
|
54
54
|
"onUpdate:modelValue"?: ((value: string[] | undefined) => any) | undefined;
|
|
55
55
|
"onUpdate:max"?: ((value: number) => any) | undefined;
|
|
56
|
-
}>, {
|
|
57
|
-
modelValue: number | null;
|
|
58
|
-
orientation: Progress["variants"]["orientation"];
|
|
59
|
-
inverted: boolean;
|
|
60
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
|
|
56
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
|
|
61
57
|
declare const _default: typeof __VLS_export;
|
|
62
58
|
export default _default;
|
|
63
59
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -53,11 +53,7 @@ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<Progre
|
|
|
53
53
|
}, string, import("vue").PublicProps, Readonly<ProgressProps> & Readonly<{
|
|
54
54
|
"onUpdate:modelValue"?: ((value: string[] | undefined) => any) | undefined;
|
|
55
55
|
"onUpdate:max"?: ((value: number) => any) | undefined;
|
|
56
|
-
}>, {
|
|
57
|
-
modelValue: number | null;
|
|
58
|
-
orientation: Progress["variants"]["orientation"];
|
|
59
|
-
inverted: boolean;
|
|
60
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
|
|
56
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ProgressSlots>;
|
|
61
57
|
declare const _default: typeof __VLS_export;
|
|
62
58
|
export default _default;
|
|
63
59
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -82,10 +82,9 @@ export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]>
|
|
|
82
82
|
description: SlotProps<T[number]>;
|
|
83
83
|
}
|
|
84
84
|
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<{
|
|
85
|
-
props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}> & import("vue").PublicProps;
|
|
85
|
+
props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
86
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
87
|
+
} ? P : {});
|
|
89
88
|
expose: (exposed: {}) => void;
|
|
90
89
|
attrs: any;
|
|
91
90
|
slots: RadioGroupSlots<T>;
|
|
@@ -82,10 +82,9 @@ export interface RadioGroupSlots<T extends RadioGroupItem[] = RadioGroupItem[]>
|
|
|
82
82
|
description: SlotProps<T[number]>;
|
|
83
83
|
}
|
|
84
84
|
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<{
|
|
85
|
-
props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}> & import("vue").PublicProps;
|
|
85
|
+
props: __VLS_PrettifyLocal<RadioGroupProps<T, VK> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, import("../types").NestedItem<T>>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
86
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
87
|
+
} ? P : {});
|
|
89
88
|
expose: (exposed: {}) => void;
|
|
90
89
|
attrs: any;
|
|
91
90
|
slots: RadioGroupSlots<T>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import type { VirtualItem, VirtualizerOptions } from '@tanstack/vue-virtual';
|
|
3
|
+
import theme from '#build/ui/scroll-area';
|
|
4
|
+
import type { ComponentConfig } from '../types/tv';
|
|
5
|
+
type ScrollArea = ComponentConfig<typeof theme, AppConfig, 'scrollArea'>;
|
|
6
|
+
export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'getScrollElement' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
|
|
7
|
+
/**
|
|
8
|
+
* Estimated size (in px) of each item along the scroll axis. Can be a number or a function.
|
|
9
|
+
* @defaultValue 100
|
|
10
|
+
*/
|
|
11
|
+
estimateSize?: number | ((index: number) => number);
|
|
12
|
+
/**
|
|
13
|
+
* Number of lanes for multi-column/row layouts.
|
|
14
|
+
* For responsive lane counts, use a computed property with viewport/container size:
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const { width } = useWindowSize()
|
|
18
|
+
* const lanes = computed(() => Math.floor(width.value / 300))
|
|
19
|
+
* ```
|
|
20
|
+
* @defaultValue undefined
|
|
21
|
+
*/
|
|
22
|
+
lanes?: number;
|
|
23
|
+
}
|
|
24
|
+
export type ScrollAreaItem = any;
|
|
25
|
+
export interface ScrollAreaProps<T extends ScrollAreaItem = ScrollAreaItem> {
|
|
26
|
+
/**
|
|
27
|
+
* The element or component this component should render as.
|
|
28
|
+
* @defaultValue 'div'
|
|
29
|
+
*/
|
|
30
|
+
as?: any;
|
|
31
|
+
/**
|
|
32
|
+
* The scroll direction.
|
|
33
|
+
* @defaultValue 'vertical'
|
|
34
|
+
*/
|
|
35
|
+
orientation?: ScrollArea['variants']['orientation'];
|
|
36
|
+
/**
|
|
37
|
+
* Array of items to render.
|
|
38
|
+
*/
|
|
39
|
+
items?: T[];
|
|
40
|
+
/**
|
|
41
|
+
* Enable virtualization for large lists.
|
|
42
|
+
* @see https://tanstack.com/virtual/latest/docs/api/virtualizer#options
|
|
43
|
+
* @defaultValue false
|
|
44
|
+
*/
|
|
45
|
+
virtualize?: boolean | ScrollAreaVirtualizeOptions;
|
|
46
|
+
class?: any;
|
|
47
|
+
ui?: ScrollArea['slots'];
|
|
48
|
+
}
|
|
49
|
+
export interface ScrollAreaSlots<T extends ScrollAreaItem = ScrollAreaItem> {
|
|
50
|
+
default(props: {
|
|
51
|
+
item: T;
|
|
52
|
+
index: number;
|
|
53
|
+
virtualItem?: VirtualItem;
|
|
54
|
+
} | Record<string, never>): any;
|
|
55
|
+
}
|
|
56
|
+
export interface ScrollAreaEmits {
|
|
57
|
+
/**
|
|
58
|
+
* Emitted when scroll state changes
|
|
59
|
+
* @param isScrolling - Whether the list is currently being scrolled
|
|
60
|
+
*/
|
|
61
|
+
scroll: [isScrolling: boolean];
|
|
62
|
+
}
|
|
63
|
+
declare const __VLS_export: <T extends ScrollAreaItem>(__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<{
|
|
64
|
+
props: __VLS_PrettifyLocal<ScrollAreaProps<T> & __VLS_EmitsToProps<__VLS_NormalizeEmits<(evt: "scroll", isScrolling: boolean) => void>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
65
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
66
|
+
} ? P : {});
|
|
67
|
+
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
68
|
+
readonly $el: HTMLElement;
|
|
69
|
+
virtualizer: import("vue").Ref<import("@tanstack/vue-virtual").Virtualizer<Element, Element>, import("@tanstack/vue-virtual").Virtualizer<Element, Element>> | undefined;
|
|
70
|
+
}>) => void;
|
|
71
|
+
attrs: any;
|
|
72
|
+
slots: ScrollAreaSlots<T>;
|
|
73
|
+
emit: (evt: "scroll", isScrolling: boolean) => void;
|
|
74
|
+
}>) => import("vue").VNode & {
|
|
75
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
76
|
+
};
|
|
77
|
+
declare const _default: typeof __VLS_export;
|
|
78
|
+
export default _default;
|
|
79
|
+
type __VLS_PrettifyLocal<T> = {
|
|
80
|
+
[K in keyof T as K]: T[K];
|
|
81
|
+
} & {};
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/scroll-area";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, toRef, useTemplateRef, watch } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { defu } from "defu";
|
|
9
|
+
import { useVirtualizer } from "@tanstack/vue-virtual";
|
|
10
|
+
import { useAppConfig } from "#imports";
|
|
11
|
+
import { tv } from "../utils/tv";
|
|
12
|
+
import { useLocale } from "../composables/useLocale";
|
|
13
|
+
const props = defineProps({
|
|
14
|
+
as: { type: null, required: false },
|
|
15
|
+
orientation: { type: null, required: false, default: "vertical" },
|
|
16
|
+
items: { type: Array, required: false },
|
|
17
|
+
virtualize: { type: [Boolean, Object], required: false, default: false },
|
|
18
|
+
class: { type: null, required: false },
|
|
19
|
+
ui: { type: null, required: false }
|
|
20
|
+
});
|
|
21
|
+
defineSlots();
|
|
22
|
+
const emits = defineEmits(["scroll"]);
|
|
23
|
+
const { dir } = useLocale();
|
|
24
|
+
const appConfig = useAppConfig();
|
|
25
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.scrollArea || {} })({
|
|
26
|
+
orientation: props.orientation
|
|
27
|
+
}));
|
|
28
|
+
const rootRef = useTemplateRef("rootRef");
|
|
29
|
+
const isRtl = computed(() => dir.value === "rtl");
|
|
30
|
+
const isHorizontal = computed(() => props.orientation === "horizontal");
|
|
31
|
+
const isVertical = computed(() => !isHorizontal.value);
|
|
32
|
+
const virtualizerProps = toRef(() => {
|
|
33
|
+
const options = typeof props.virtualize === "boolean" ? {} : props.virtualize;
|
|
34
|
+
return defu(options, {
|
|
35
|
+
estimateSize: 100,
|
|
36
|
+
overscan: 12,
|
|
37
|
+
gap: 0,
|
|
38
|
+
paddingStart: 0,
|
|
39
|
+
paddingEnd: 0,
|
|
40
|
+
scrollMargin: 0
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
const lanes = computed(() => {
|
|
44
|
+
const value = virtualizerProps.value.lanes;
|
|
45
|
+
return typeof value === "number" ? value : void 0;
|
|
46
|
+
});
|
|
47
|
+
const virtualizer = !!props.virtualize && useVirtualizer({
|
|
48
|
+
...virtualizerProps.value,
|
|
49
|
+
get overscan() {
|
|
50
|
+
return virtualizerProps.value.overscan;
|
|
51
|
+
},
|
|
52
|
+
get gap() {
|
|
53
|
+
return virtualizerProps.value.gap;
|
|
54
|
+
},
|
|
55
|
+
get paddingStart() {
|
|
56
|
+
return virtualizerProps.value.paddingStart;
|
|
57
|
+
},
|
|
58
|
+
get paddingEnd() {
|
|
59
|
+
return virtualizerProps.value.paddingEnd;
|
|
60
|
+
},
|
|
61
|
+
get scrollMargin() {
|
|
62
|
+
return virtualizerProps.value.scrollMargin;
|
|
63
|
+
},
|
|
64
|
+
get lanes() {
|
|
65
|
+
return lanes.value;
|
|
66
|
+
},
|
|
67
|
+
get isRtl() {
|
|
68
|
+
return isRtl.value;
|
|
69
|
+
},
|
|
70
|
+
get count() {
|
|
71
|
+
return props.items?.length || 0;
|
|
72
|
+
},
|
|
73
|
+
getScrollElement: () => rootRef.value?.$el,
|
|
74
|
+
get horizontal() {
|
|
75
|
+
return isHorizontal.value;
|
|
76
|
+
},
|
|
77
|
+
estimateSize: (index) => {
|
|
78
|
+
const estimate = virtualizerProps.value.estimateSize;
|
|
79
|
+
return typeof estimate === "function" ? estimate(index) : estimate;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
const virtualItems = computed(() => virtualizer ? virtualizer.value.getVirtualItems() : []);
|
|
83
|
+
const totalSize = computed(() => virtualizer ? virtualizer.value.getTotalSize() : 0);
|
|
84
|
+
const virtualViewportStyle = computed(() => ({
|
|
85
|
+
position: "relative",
|
|
86
|
+
inlineSize: isHorizontal.value ? `${totalSize.value}px` : "100%",
|
|
87
|
+
blockSize: isVertical.value ? `${totalSize.value}px` : "100%"
|
|
88
|
+
}));
|
|
89
|
+
function getVirtualItemStyle(virtualItem) {
|
|
90
|
+
const hasLanes = lanes.value !== void 0 && lanes.value > 1;
|
|
91
|
+
const lane = virtualItem.lane;
|
|
92
|
+
const gap = virtualizerProps.value.gap ?? 0;
|
|
93
|
+
const laneSize = hasLanes ? `calc((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value})` : "100%";
|
|
94
|
+
const lanePosition = hasLanes && lane !== void 0 ? `calc(${lane} * ((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value} + ${gap}px))` : 0;
|
|
95
|
+
return {
|
|
96
|
+
position: "absolute",
|
|
97
|
+
insetBlockStart: isHorizontal.value && hasLanes ? lanePosition : 0,
|
|
98
|
+
insetInlineStart: isVertical.value && hasLanes ? lanePosition : 0,
|
|
99
|
+
blockSize: isHorizontal.value ? hasLanes ? laneSize : "100%" : void 0,
|
|
100
|
+
inlineSize: isVertical.value ? hasLanes ? laneSize : "100%" : void 0,
|
|
101
|
+
transform: isHorizontal.value ? `translateX(${isRtl.value ? -virtualItem.start : virtualItem.start}px)` : `translateY(${virtualItem.start}px)`
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
watch(lanes, () => {
|
|
105
|
+
if (virtualizer) {
|
|
106
|
+
virtualizer.value.measure();
|
|
107
|
+
}
|
|
108
|
+
}, { flush: "sync" });
|
|
109
|
+
function measureElement(el) {
|
|
110
|
+
if (el && virtualizer) {
|
|
111
|
+
const element = el instanceof Element ? el : el.$el;
|
|
112
|
+
virtualizer.value.measureElement(element);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
watch(
|
|
116
|
+
() => virtualizer ? virtualizer.value.isScrolling : false,
|
|
117
|
+
(isScrolling) => emits("scroll", isScrolling)
|
|
118
|
+
);
|
|
119
|
+
function getItemKey(item, index) {
|
|
120
|
+
if (virtualizerProps.value.getItemKey) {
|
|
121
|
+
return virtualizerProps.value.getItemKey(index);
|
|
122
|
+
}
|
|
123
|
+
if (item && typeof item === "object" && "id" in item) {
|
|
124
|
+
return item.id;
|
|
125
|
+
}
|
|
126
|
+
return index;
|
|
127
|
+
}
|
|
128
|
+
defineExpose({
|
|
129
|
+
get $el() {
|
|
130
|
+
return rootRef.value?.$el;
|
|
131
|
+
},
|
|
132
|
+
virtualizer: virtualizer || void 0
|
|
133
|
+
});
|
|
134
|
+
</script>
|
|
135
|
+
|
|
136
|
+
<template>
|
|
137
|
+
<Primitive
|
|
138
|
+
ref="rootRef"
|
|
139
|
+
:as="as"
|
|
140
|
+
data-slot="root"
|
|
141
|
+
:data-orientation="orientation"
|
|
142
|
+
:class="ui.root({ class: [props.ui?.root, props.class] })"
|
|
143
|
+
>
|
|
144
|
+
<template v-if="virtualizer">
|
|
145
|
+
<div
|
|
146
|
+
data-slot="viewport"
|
|
147
|
+
:class="ui.viewport({ class: props.ui?.viewport })"
|
|
148
|
+
:style="virtualViewportStyle"
|
|
149
|
+
>
|
|
150
|
+
<div
|
|
151
|
+
v-for="virtualItem in virtualItems"
|
|
152
|
+
:key="String(virtualItem.key)"
|
|
153
|
+
:ref="measureElement"
|
|
154
|
+
:data-index="virtualItem.index"
|
|
155
|
+
data-slot="item"
|
|
156
|
+
:class="ui.item({ class: props.ui?.item })"
|
|
157
|
+
:style="getVirtualItemStyle(virtualItem)"
|
|
158
|
+
>
|
|
159
|
+
<slot
|
|
160
|
+
:item="items?.[virtualItem.index]"
|
|
161
|
+
:index="virtualItem.index"
|
|
162
|
+
:virtual-item="virtualItem"
|
|
163
|
+
/>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
</template>
|
|
167
|
+
|
|
168
|
+
<template v-else>
|
|
169
|
+
<div data-slot="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
|
|
170
|
+
<template v-if="items?.length">
|
|
171
|
+
<div
|
|
172
|
+
v-for="(item, index) in items"
|
|
173
|
+
:key="getItemKey(item, index)"
|
|
174
|
+
data-slot="item"
|
|
175
|
+
:class="ui.item({ class: props.ui?.item })"
|
|
176
|
+
>
|
|
177
|
+
<slot :item="item" :index="index" />
|
|
178
|
+
</div>
|
|
179
|
+
</template>
|
|
180
|
+
|
|
181
|
+
<template v-else>
|
|
182
|
+
<slot />
|
|
183
|
+
</template>
|
|
184
|
+
</div>
|
|
185
|
+
</template>
|
|
186
|
+
</Primitive>
|
|
187
|
+
</template>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import type { VirtualItem, VirtualizerOptions } from '@tanstack/vue-virtual';
|
|
3
|
+
import theme from '#build/ui/scroll-area';
|
|
4
|
+
import type { ComponentConfig } from '../types/tv';
|
|
5
|
+
type ScrollArea = ComponentConfig<typeof theme, AppConfig, 'scrollArea'>;
|
|
6
|
+
export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'getScrollElement' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
|
|
7
|
+
/**
|
|
8
|
+
* Estimated size (in px) of each item along the scroll axis. Can be a number or a function.
|
|
9
|
+
* @defaultValue 100
|
|
10
|
+
*/
|
|
11
|
+
estimateSize?: number | ((index: number) => number);
|
|
12
|
+
/**
|
|
13
|
+
* Number of lanes for multi-column/row layouts.
|
|
14
|
+
* For responsive lane counts, use a computed property with viewport/container size:
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const { width } = useWindowSize()
|
|
18
|
+
* const lanes = computed(() => Math.floor(width.value / 300))
|
|
19
|
+
* ```
|
|
20
|
+
* @defaultValue undefined
|
|
21
|
+
*/
|
|
22
|
+
lanes?: number;
|
|
23
|
+
}
|
|
24
|
+
export type ScrollAreaItem = any;
|
|
25
|
+
export interface ScrollAreaProps<T extends ScrollAreaItem = ScrollAreaItem> {
|
|
26
|
+
/**
|
|
27
|
+
* The element or component this component should render as.
|
|
28
|
+
* @defaultValue 'div'
|
|
29
|
+
*/
|
|
30
|
+
as?: any;
|
|
31
|
+
/**
|
|
32
|
+
* The scroll direction.
|
|
33
|
+
* @defaultValue 'vertical'
|
|
34
|
+
*/
|
|
35
|
+
orientation?: ScrollArea['variants']['orientation'];
|
|
36
|
+
/**
|
|
37
|
+
* Array of items to render.
|
|
38
|
+
*/
|
|
39
|
+
items?: T[];
|
|
40
|
+
/**
|
|
41
|
+
* Enable virtualization for large lists.
|
|
42
|
+
* @see https://tanstack.com/virtual/latest/docs/api/virtualizer#options
|
|
43
|
+
* @defaultValue false
|
|
44
|
+
*/
|
|
45
|
+
virtualize?: boolean | ScrollAreaVirtualizeOptions;
|
|
46
|
+
class?: any;
|
|
47
|
+
ui?: ScrollArea['slots'];
|
|
48
|
+
}
|
|
49
|
+
export interface ScrollAreaSlots<T extends ScrollAreaItem = ScrollAreaItem> {
|
|
50
|
+
default(props: {
|
|
51
|
+
item: T;
|
|
52
|
+
index: number;
|
|
53
|
+
virtualItem?: VirtualItem;
|
|
54
|
+
} | Record<string, never>): any;
|
|
55
|
+
}
|
|
56
|
+
export interface ScrollAreaEmits {
|
|
57
|
+
/**
|
|
58
|
+
* Emitted when scroll state changes
|
|
59
|
+
* @param isScrolling - Whether the list is currently being scrolled
|
|
60
|
+
*/
|
|
61
|
+
scroll: [isScrolling: boolean];
|
|
62
|
+
}
|
|
63
|
+
declare const __VLS_export: <T extends ScrollAreaItem>(__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<{
|
|
64
|
+
props: __VLS_PrettifyLocal<ScrollAreaProps<T> & __VLS_EmitsToProps<__VLS_NormalizeEmits<(evt: "scroll", isScrolling: boolean) => void>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
65
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
66
|
+
} ? P : {});
|
|
67
|
+
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
68
|
+
readonly $el: HTMLElement;
|
|
69
|
+
virtualizer: import("vue").Ref<import("@tanstack/vue-virtual").Virtualizer<Element, Element>, import("@tanstack/vue-virtual").Virtualizer<Element, Element>> | undefined;
|
|
70
|
+
}>) => void;
|
|
71
|
+
attrs: any;
|
|
72
|
+
slots: ScrollAreaSlots<T>;
|
|
73
|
+
emit: (evt: "scroll", isScrolling: boolean) => void;
|
|
74
|
+
}>) => import("vue").VNode & {
|
|
75
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
76
|
+
};
|
|
77
|
+
declare const _default: typeof __VLS_export;
|
|
78
|
+
export default _default;
|
|
79
|
+
type __VLS_PrettifyLocal<T> = {
|
|
80
|
+
[K in keyof T as K]: T[K];
|
|
81
|
+
} & {};
|
|
@@ -3,6 +3,7 @@ import type { AppConfig } from '@nuxt/schema';
|
|
|
3
3
|
import theme from '#build/ui/select';
|
|
4
4
|
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
5
5
|
import type { AvatarProps, ChipProps, IconProps } from '../types';
|
|
6
|
+
import type { ModelModifiers } from '../types/input';
|
|
6
7
|
import type { ButtonHTMLAttributes } from '../types/html';
|
|
7
8
|
import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
|
|
8
9
|
import type { ComponentConfig } from '../types/tv';
|
|
@@ -92,6 +93,7 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
|
|
|
92
93
|
defaultValue?: GetModelValue<T, VK, M>;
|
|
93
94
|
/** The controlled value of the Select. Can be bind as `v-model`. */
|
|
94
95
|
modelValue?: GetModelValue<T, VK, M>;
|
|
96
|
+
modelModifiers?: Omit<ModelModifiers<GetModelValue<T, VK, M>>, 'lazy'>;
|
|
95
97
|
/** Whether multiple options can be selected or not. */
|
|
96
98
|
multiple?: M & boolean;
|
|
97
99
|
/** Highlight the ring color like a focus state. */
|
|
@@ -142,19 +144,15 @@ export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested
|
|
|
142
144
|
'content-bottom': (props?: {}) => any;
|
|
143
145
|
}
|
|
144
146
|
declare const __VLS_export: <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<{
|
|
145
|
-
props: __VLS_PrettifyLocal<SelectProps<T, VK, M> & {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
149
|
-
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
150
|
-
"onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
|
|
151
|
-
}> & import("vue").PublicProps;
|
|
147
|
+
props: __VLS_PrettifyLocal<SelectProps<T, VK, M> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((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)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
148
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
149
|
+
} ? P : {});
|
|
152
150
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
153
151
|
triggerRef: Readonly<import("vue").Ref<HTMLButtonElement, HTMLButtonElement>>;
|
|
154
152
|
}>) => void;
|
|
155
153
|
attrs: any;
|
|
156
154
|
slots: SelectSlots<T, VK, M, NestedItem<T>>;
|
|
157
|
-
emit: ((evt: "
|
|
155
|
+
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);
|
|
158
156
|
}>) => import("vue").VNode & {
|
|
159
157
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
160
158
|
};
|
|
@@ -12,7 +12,7 @@ import { useFieldGroup } from "../composables/useFieldGroup";
|
|
|
12
12
|
import { useComponentIcons } from "../composables/useComponentIcons";
|
|
13
13
|
import { useFormField } from "../composables/useFormField";
|
|
14
14
|
import { usePortal } from "../composables/usePortal";
|
|
15
|
-
import { get, getDisplayValue, isArrayOfArray } from "../utils";
|
|
15
|
+
import { get, getDisplayValue, isArrayOfArray, looseToNumber } from "../utils";
|
|
16
16
|
import { tv } from "../utils/tv";
|
|
17
17
|
import UIcon from "./Icon.vue";
|
|
18
18
|
import UAvatar from "./Avatar.vue";
|
|
@@ -35,6 +35,7 @@ const props = defineProps({
|
|
|
35
35
|
items: { type: null, required: false },
|
|
36
36
|
defaultValue: { type: null, required: false },
|
|
37
37
|
modelValue: { type: null, required: false },
|
|
38
|
+
modelModifiers: { type: Object, required: false },
|
|
38
39
|
multiple: { type: Boolean, required: false },
|
|
39
40
|
highlight: { type: Boolean, required: false },
|
|
40
41
|
autofocus: { type: Boolean, required: false },
|
|
@@ -107,6 +108,18 @@ onMounted(() => {
|
|
|
107
108
|
}, props.autofocusDelay);
|
|
108
109
|
});
|
|
109
110
|
function onUpdate(value) {
|
|
111
|
+
if (props.modelModifiers?.trim) {
|
|
112
|
+
value = value?.trim() ?? null;
|
|
113
|
+
}
|
|
114
|
+
if (props.modelModifiers?.number) {
|
|
115
|
+
value = looseToNumber(value);
|
|
116
|
+
}
|
|
117
|
+
if (props.modelModifiers?.nullable) {
|
|
118
|
+
value ??= null;
|
|
119
|
+
}
|
|
120
|
+
if (props.modelModifiers?.optional) {
|
|
121
|
+
value ??= void 0;
|
|
122
|
+
}
|
|
110
123
|
const event = new Event("change", { target: { value } });
|
|
111
124
|
emits("change", event);
|
|
112
125
|
emitFormChange();
|
|
@@ -3,6 +3,7 @@ import type { AppConfig } from '@nuxt/schema';
|
|
|
3
3
|
import theme from '#build/ui/select';
|
|
4
4
|
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
5
5
|
import type { AvatarProps, ChipProps, IconProps } from '../types';
|
|
6
|
+
import type { ModelModifiers } from '../types/input';
|
|
6
7
|
import type { ButtonHTMLAttributes } from '../types/html';
|
|
7
8
|
import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, GetModelValueEmits, NestedItem, EmitsToProps } from '../types/utils';
|
|
8
9
|
import type { ComponentConfig } from '../types/tv';
|
|
@@ -92,6 +93,7 @@ export interface SelectProps<T extends ArrayOrNested<SelectItem> = ArrayOrNested
|
|
|
92
93
|
defaultValue?: GetModelValue<T, VK, M>;
|
|
93
94
|
/** The controlled value of the Select. Can be bind as `v-model`. */
|
|
94
95
|
modelValue?: GetModelValue<T, VK, M>;
|
|
96
|
+
modelModifiers?: Omit<ModelModifiers<GetModelValue<T, VK, M>>, 'lazy'>;
|
|
95
97
|
/** Whether multiple options can be selected or not. */
|
|
96
98
|
multiple?: M & boolean;
|
|
97
99
|
/** Highlight the ring color like a focus state. */
|
|
@@ -142,19 +144,15 @@ export interface SelectSlots<A extends ArrayOrNested<SelectItem> = ArrayOrNested
|
|
|
142
144
|
'content-bottom': (props?: {}) => any;
|
|
143
145
|
}
|
|
144
146
|
declare const __VLS_export: <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<{
|
|
145
|
-
props: __VLS_PrettifyLocal<SelectProps<T, VK, M> & {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
149
|
-
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
150
|
-
"onUpdate:modelValue"?: ((value: GetModelValue<T, VK, M>) => any) | undefined;
|
|
151
|
-
}> & import("vue").PublicProps;
|
|
147
|
+
props: __VLS_PrettifyLocal<SelectProps<T, VK, M> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((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)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
148
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
149
|
+
} ? P : {});
|
|
152
150
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
153
151
|
triggerRef: Readonly<import("vue").Ref<HTMLButtonElement, HTMLButtonElement>>;
|
|
154
152
|
}>) => void;
|
|
155
153
|
attrs: any;
|
|
156
154
|
slots: SelectSlots<T, VK, M, NestedItem<T>>;
|
|
157
|
-
emit: ((evt: "
|
|
155
|
+
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);
|
|
158
156
|
}>) => import("vue").VNode & {
|
|
159
157
|
__ctx?: Awaited<typeof __VLS_setup>;
|
|
160
158
|
};
|