@nuxt/ui 4.0.1 → 4.2.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/cli/templates.mjs +16 -4
- package/dist/module.d.mts +25 -0
- package/dist/module.json +2 -2
- package/dist/module.mjs +7 -4
- package/dist/runtime/components/Accordion.d.vue.ts +7 -1
- package/dist/runtime/components/Accordion.vue +13 -12
- package/dist/runtime/components/Accordion.vue.d.ts +7 -1
- package/dist/runtime/components/Alert.d.vue.ts +4 -4
- package/dist/runtime/components/Alert.vue +10 -9
- package/dist/runtime/components/Alert.vue.d.ts +4 -4
- package/dist/runtime/components/App.d.vue.ts +1 -1
- package/dist/runtime/components/App.vue +2 -1
- package/dist/runtime/components/App.vue.d.ts +1 -1
- package/dist/runtime/components/AuthForm.d.vue.ts +12 -9
- package/dist/runtime/components/AuthForm.vue +29 -21
- package/dist/runtime/components/AuthForm.vue.d.ts +12 -9
- package/dist/runtime/components/Avatar.d.vue.ts +7 -5
- package/dist/runtime/components/Avatar.vue +14 -5
- package/dist/runtime/components/Avatar.vue.d.ts +7 -5
- package/dist/runtime/components/AvatarGroup.vue +3 -3
- package/dist/runtime/components/Badge.d.vue.ts +9 -3
- package/dist/runtime/components/Badge.vue +8 -8
- package/dist/runtime/components/Badge.vue.d.ts +9 -3
- package/dist/runtime/components/Banner.d.vue.ts +4 -2
- package/dist/runtime/components/Banner.vue +10 -9
- package/dist/runtime/components/Banner.vue.d.ts +4 -2
- package/dist/runtime/components/BlogPost.d.vue.ts +9 -3
- package/dist/runtime/components/BlogPost.vue +21 -12
- package/dist/runtime/components/BlogPost.vue.d.ts +9 -3
- package/dist/runtime/components/BlogPosts.d.vue.ts +22 -13
- package/dist/runtime/components/BlogPosts.vue +8 -2
- package/dist/runtime/components/BlogPosts.vue.d.ts +22 -13
- package/dist/runtime/components/Breadcrumb.d.vue.ts +19 -4
- package/dist/runtime/components/Breadcrumb.vue +14 -14
- package/dist/runtime/components/Breadcrumb.vue.d.ts +19 -4
- package/dist/runtime/components/Button.d.vue.ts +9 -3
- package/dist/runtime/components/Button.vue +9 -7
- package/dist/runtime/components/Button.vue.d.ts +9 -3
- package/dist/runtime/components/Calendar.d.vue.ts +4 -0
- package/dist/runtime/components/Calendar.vue +15 -9
- package/dist/runtime/components/Calendar.vue.d.ts +4 -0
- package/dist/runtime/components/Card.vue +4 -4
- package/dist/runtime/components/Carousel.vue +10 -5
- package/dist/runtime/components/ChangelogVersion.d.vue.ts +12 -4
- package/dist/runtime/components/ChangelogVersion.vue +25 -17
- package/dist/runtime/components/ChangelogVersion.vue.d.ts +12 -4
- package/dist/runtime/components/ChangelogVersions.d.vue.ts +8 -36
- package/dist/runtime/components/ChangelogVersions.vue +6 -6
- package/dist/runtime/components/ChangelogVersions.vue.d.ts +8 -36
- package/dist/runtime/components/ChatMessage.d.vue.ts +1 -0
- package/dist/runtime/components/ChatMessage.vue +8 -8
- package/dist/runtime/components/ChatMessage.vue.d.ts +1 -0
- package/dist/runtime/components/ChatMessages.d.vue.ts +14 -15
- package/dist/runtime/components/ChatMessages.vue +28 -10
- package/dist/runtime/components/ChatMessages.vue.d.ts +14 -15
- package/dist/runtime/components/ChatPalette.vue +3 -3
- package/dist/runtime/components/ChatPrompt.d.vue.ts +3 -6
- package/dist/runtime/components/ChatPrompt.vue +23 -14
- package/dist/runtime/components/ChatPrompt.vue.d.ts +3 -6
- package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +4 -4
- package/dist/runtime/components/ChatPromptSubmit.vue +51 -4
- package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +4 -4
- package/dist/runtime/components/Checkbox.d.vue.ts +2 -1
- package/dist/runtime/components/Checkbox.vue +9 -8
- package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
- package/dist/runtime/components/CheckboxGroup.vue +7 -4
- package/dist/runtime/components/Chip.vue +2 -2
- package/dist/runtime/components/Collapsible.vue +2 -2
- package/dist/runtime/components/ColorPicker.vue +7 -3
- package/dist/runtime/components/CommandPalette.d.vue.ts +43 -12
- package/dist/runtime/components/CommandPalette.vue +175 -84
- package/dist/runtime/components/CommandPalette.vue.d.ts +43 -12
- package/dist/runtime/components/ContextMenu.d.vue.ts +28 -6
- package/dist/runtime/components/ContextMenu.vue +2 -0
- package/dist/runtime/components/ContextMenu.vue.d.ts +28 -6
- package/dist/runtime/components/ContextMenuContent.d.vue.ts +2 -3
- package/dist/runtime/components/ContextMenuContent.vue +35 -23
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -3
- package/dist/runtime/components/DashboardNavbar.d.vue.ts +9 -3
- package/dist/runtime/components/DashboardNavbar.vue +10 -9
- package/dist/runtime/components/DashboardNavbar.vue.d.ts +9 -3
- package/dist/runtime/components/DashboardPanel.vue +3 -1
- package/dist/runtime/components/DashboardSearch.d.vue.ts +3 -1
- package/dist/runtime/components/DashboardSearch.vue +4 -3
- package/dist/runtime/components/DashboardSearch.vue.d.ts +3 -1
- package/dist/runtime/components/DashboardSearchButton.d.vue.ts +2 -3
- package/dist/runtime/components/DashboardSearchButton.vue +48 -10
- package/dist/runtime/components/DashboardSearchButton.vue.d.ts +2 -3
- package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -1
- package/dist/runtime/components/DashboardSidebar.vue +13 -10
- package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -1
- package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +7 -4
- package/dist/runtime/components/DashboardSidebarCollapse.vue +51 -7
- package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +7 -4
- package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +7 -4
- package/dist/runtime/components/DashboardSidebarToggle.vue +52 -7
- package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +7 -4
- package/dist/runtime/components/DashboardToolbar.vue +3 -3
- package/dist/runtime/components/Drawer.d.vue.ts +1 -1
- package/dist/runtime/components/Drawer.vue +11 -14
- package/dist/runtime/components/Drawer.vue.d.ts +1 -1
- package/dist/runtime/components/DropdownMenu.d.vue.ts +28 -6
- package/dist/runtime/components/DropdownMenu.vue +3 -1
- package/dist/runtime/components/DropdownMenu.vue.d.ts +28 -6
- package/dist/runtime/components/DropdownMenuContent.d.vue.ts +8 -5
- package/dist/runtime/components/DropdownMenuContent.vue +35 -23
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +8 -5
- package/dist/runtime/components/Empty.d.vue.ts +53 -0
- package/dist/runtime/components/Empty.vue +68 -0
- package/dist/runtime/components/Empty.vue.d.ts +53 -0
- package/dist/runtime/components/Error.d.vue.ts +1 -2
- package/dist/runtime/components/Error.vue +6 -6
- package/dist/runtime/components/Error.vue.d.ts +1 -2
- package/dist/runtime/components/FileUpload.d.vue.ts +14 -3
- package/dist/runtime/components/FileUpload.vue +41 -30
- package/dist/runtime/components/FileUpload.vue.d.ts +14 -3
- package/dist/runtime/components/Footer.vue +7 -7
- package/dist/runtime/components/FooterColumns.d.vue.ts +9 -2
- package/dist/runtime/components/FooterColumns.vue +13 -13
- package/dist/runtime/components/FooterColumns.vue.d.ts +9 -2
- package/dist/runtime/components/Form.d.vue.ts +3 -2
- package/dist/runtime/components/Form.vue +3 -4
- package/dist/runtime/components/Form.vue.d.ts +3 -2
- package/dist/runtime/components/FormField.vue +8 -8
- package/dist/runtime/components/Header.d.vue.ts +4 -1
- package/dist/runtime/components/Header.vue +12 -11
- package/dist/runtime/components/Header.vue.d.ts +4 -1
- package/dist/runtime/components/Input.d.vue.ts +15 -9
- package/dist/runtime/components/Input.vue +12 -11
- package/dist/runtime/components/Input.vue.d.ts +15 -9
- package/dist/runtime/components/InputDate.d.vue.ts +89 -0
- package/dist/runtime/components/InputDate.vue +161 -0
- package/dist/runtime/components/InputDate.vue.d.ts +89 -0
- package/dist/runtime/components/InputMenu.d.vue.ts +46 -137
- package/dist/runtime/components/InputMenu.vue +143 -83
- package/dist/runtime/components/InputMenu.vue.d.ts +46 -137
- package/dist/runtime/components/InputNumber.d.vue.ts +26 -127
- package/dist/runtime/components/InputNumber.vue +13 -12
- package/dist/runtime/components/InputNumber.vue.d.ts +26 -127
- package/dist/runtime/components/InputTags.d.vue.ts +15 -111
- package/dist/runtime/components/InputTags.vue +24 -20
- package/dist/runtime/components/InputTags.vue.d.ts +15 -111
- package/dist/runtime/components/InputTime.d.vue.ts +72 -0
- package/dist/runtime/components/InputTime.vue +137 -0
- package/dist/runtime/components/InputTime.vue.d.ts +72 -0
- package/dist/runtime/components/Link.d.vue.ts +4 -49
- package/dist/runtime/components/Link.vue +1 -0
- package/dist/runtime/components/Link.vue.d.ts +4 -49
- package/dist/runtime/components/Main.d.vue.ts +2 -4
- package/dist/runtime/components/Main.vue +1 -1
- package/dist/runtime/components/Main.vue.d.ts +2 -4
- package/dist/runtime/components/Marquee.d.vue.ts +1 -1
- package/dist/runtime/components/Marquee.vue +2 -6
- package/dist/runtime/components/Marquee.vue.d.ts +1 -1
- package/dist/runtime/components/Modal.d.vue.ts +8 -6
- package/dist/runtime/components/Modal.vue +55 -22
- package/dist/runtime/components/Modal.vue.d.ts +8 -6
- package/dist/runtime/components/NavigationMenu.d.vue.ts +60 -13
- package/dist/runtime/components/NavigationMenu.vue +86 -49
- package/dist/runtime/components/NavigationMenu.vue.d.ts +60 -13
- package/dist/runtime/components/Page.vue +4 -4
- package/dist/runtime/components/PageAnchors.d.vue.ts +9 -2
- package/dist/runtime/components/PageAnchors.vue +10 -10
- package/dist/runtime/components/PageAnchors.vue.d.ts +9 -2
- package/dist/runtime/components/PageAside.vue +6 -6
- package/dist/runtime/components/PageCTA.vue +9 -9
- package/dist/runtime/components/PageCard.d.vue.ts +3 -1
- package/dist/runtime/components/PageCard.vue +12 -11
- package/dist/runtime/components/PageCard.vue.d.ts +3 -1
- package/dist/runtime/components/PageFeature.d.vue.ts +3 -1
- package/dist/runtime/components/PageFeature.vue +7 -7
- package/dist/runtime/components/PageFeature.vue.d.ts +3 -1
- package/dist/runtime/components/PageHeader.vue +7 -7
- package/dist/runtime/components/PageHero.vue +10 -10
- package/dist/runtime/components/PageLinks.d.vue.ts +9 -2
- package/dist/runtime/components/PageLinks.vue +10 -10
- package/dist/runtime/components/PageLinks.vue.d.ts +9 -2
- package/dist/runtime/components/PageLogos.vue +6 -3
- package/dist/runtime/components/PageSection.d.vue.ts +3 -1
- package/dist/runtime/components/PageSection.vue +14 -14
- package/dist/runtime/components/PageSection.vue.d.ts +3 -1
- package/dist/runtime/components/Pagination.d.vue.ts +5 -3
- package/dist/runtime/components/Pagination.vue +9 -9
- package/dist/runtime/components/Pagination.vue.d.ts +5 -3
- package/dist/runtime/components/PinInput.d.vue.ts +2 -2
- package/dist/runtime/components/PinInput.vue +2 -0
- package/dist/runtime/components/PinInput.vue.d.ts +2 -2
- package/dist/runtime/components/Popover.d.vue.ts +24 -23
- package/dist/runtime/components/Popover.vue +6 -6
- package/dist/runtime/components/Popover.vue.d.ts +24 -23
- package/dist/runtime/components/PricingPlan.d.vue.ts +9 -3
- package/dist/runtime/components/PricingPlan.vue +31 -24
- package/dist/runtime/components/PricingPlan.vue.d.ts +9 -3
- package/dist/runtime/components/PricingPlans.d.vue.ts +20 -13
- package/dist/runtime/components/PricingPlans.vue +7 -1
- package/dist/runtime/components/PricingPlans.vue.d.ts +20 -13
- package/dist/runtime/components/PricingTable.vue +35 -31
- package/dist/runtime/components/Progress.d.vue.ts +1 -1
- package/dist/runtime/components/Progress.vue +6 -6
- package/dist/runtime/components/Progress.vue.d.ts +1 -1
- package/dist/runtime/components/RadioGroup.d.vue.ts +5 -5
- package/dist/runtime/components/RadioGroup.vue +13 -11
- package/dist/runtime/components/RadioGroup.vue.d.ts +5 -5
- package/dist/runtime/components/Select.d.vue.ts +25 -115
- package/dist/runtime/components/Select.vue +41 -29
- package/dist/runtime/components/Select.vue.d.ts +25 -115
- package/dist/runtime/components/SelectMenu.d.vue.ts +43 -114
- package/dist/runtime/components/SelectMenu.vue +145 -78
- package/dist/runtime/components/SelectMenu.vue.d.ts +43 -114
- package/dist/runtime/components/Separator.d.vue.ts +3 -1
- package/dist/runtime/components/Separator.vue +8 -8
- package/dist/runtime/components/Separator.vue.d.ts +3 -1
- package/dist/runtime/components/Slideover.d.vue.ts +3 -6
- package/dist/runtime/components/Slideover.vue +12 -13
- package/dist/runtime/components/Slideover.vue.d.ts +3 -6
- package/dist/runtime/components/Slider.vue +5 -4
- package/dist/runtime/components/Stepper.d.vue.ts +4 -1
- package/dist/runtime/components/Stepper.vue +13 -11
- package/dist/runtime/components/Stepper.vue.d.ts +4 -1
- package/dist/runtime/components/Switch.d.vue.ts +2 -1
- package/dist/runtime/components/Switch.vue +10 -9
- package/dist/runtime/components/Switch.vue.d.ts +2 -1
- package/dist/runtime/components/Table.d.vue.ts +25 -4
- package/dist/runtime/components/Table.vue +156 -71
- package/dist/runtime/components/Table.vue.d.ts +25 -4
- package/dist/runtime/components/Tabs.d.vue.ts +8 -3
- package/dist/runtime/components/Tabs.vue +13 -10
- package/dist/runtime/components/Tabs.vue.d.ts +8 -3
- package/dist/runtime/components/Textarea.d.vue.ts +15 -8
- package/dist/runtime/components/Textarea.vue +12 -11
- package/dist/runtime/components/Textarea.vue.d.ts +15 -8
- package/dist/runtime/components/Timeline.vue +16 -7
- package/dist/runtime/components/Toast.d.vue.ts +4 -4
- package/dist/runtime/components/Toast.vue +16 -13
- package/dist/runtime/components/Toast.vue.d.ts +4 -4
- package/dist/runtime/components/Toaster.d.vue.ts +6 -0
- package/dist/runtime/components/Toaster.vue +8 -3
- package/dist/runtime/components/Toaster.vue.d.ts +6 -0
- package/dist/runtime/components/Tooltip.d.vue.ts +3 -1
- package/dist/runtime/components/Tooltip.vue +5 -5
- package/dist/runtime/components/Tooltip.vue.d.ts +3 -1
- package/dist/runtime/components/Tree.d.vue.ts +43 -5
- package/dist/runtime/components/Tree.vue +176 -81
- package/dist/runtime/components/Tree.vue.d.ts +43 -5
- package/dist/runtime/components/User.d.vue.ts +3 -1
- package/dist/runtime/components/User.vue +14 -7
- package/dist/runtime/components/User.vue.d.ts +3 -1
- package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +3 -3
- package/dist/runtime/components/color-mode/ColorModeAvatar.vue +16 -4
- package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +3 -3
- package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +6 -13
- package/dist/runtime/components/color-mode/ColorModeButton.vue +59 -18
- package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +6 -13
- package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +4 -3
- package/dist/runtime/components/color-mode/ColorModeImage.vue +4 -0
- package/dist/runtime/components/color-mode/ColorModeImage.vue.d.ts +4 -3
- package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
- package/dist/runtime/components/color-mode/ColorModeSelect.vue +45 -5
- package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
- package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +2 -2
- package/dist/runtime/components/color-mode/ColorModeSwitch.vue +29 -5
- package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +2 -2
- package/dist/runtime/components/content/ContentNavigation.d.vue.ts +1 -0
- package/dist/runtime/components/content/ContentNavigation.vue +18 -17
- package/dist/runtime/components/content/ContentNavigation.vue.d.ts +1 -0
- package/dist/runtime/components/content/ContentSearch.d.vue.ts +3 -1
- package/dist/runtime/components/content/ContentSearch.vue +64 -67
- package/dist/runtime/components/content/ContentSearch.vue.d.ts +3 -1
- package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +2 -3
- package/dist/runtime/components/content/ContentSearchButton.vue +48 -10
- package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +2 -3
- package/dist/runtime/components/content/ContentSurround.d.vue.ts +1 -0
- package/dist/runtime/components/content/ContentSurround.vue +10 -10
- package/dist/runtime/components/content/ContentSurround.vue.d.ts +1 -0
- package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -0
- package/dist/runtime/components/content/ContentToc.vue +17 -17
- package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -0
- package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +10 -6
- package/dist/runtime/components/locale/LocaleSelect.vue +54 -6
- package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +10 -6
- package/dist/runtime/components/prose/Accordion.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Accordion.vue +3 -2
- package/dist/runtime/components/prose/Accordion.vue.d.ts +6 -0
- package/dist/runtime/components/prose/CodeTree.vue +40 -36
- package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -2
- package/dist/runtime/components/prose/Collapsible.vue +2 -2
- package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -2
- package/dist/runtime/components/prose/Field.d.vue.ts +1 -1
- package/dist/runtime/components/prose/Field.vue.d.ts +1 -1
- package/dist/runtime/components/prose/Img.vue +14 -3
- package/dist/runtime/components/prose/Tabs.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Tabs.vue +3 -2
- package/dist/runtime/components/prose/Tabs.vue.d.ts +6 -0
- package/dist/runtime/composables/index.d.ts +8 -0
- package/dist/runtime/composables/index.js +8 -0
- package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
- package/dist/runtime/composables/useContentSearch.d.ts +5 -0
- package/dist/runtime/composables/useContentSearch.js +31 -1
- package/dist/runtime/composables/useFieldGroup.d.ts +1 -1
- package/dist/runtime/composables/useFileUpload.d.ts +2 -1
- package/dist/runtime/composables/useFileUpload.js +13 -4
- package/dist/runtime/composables/useFormField.d.ts +1 -1
- package/dist/runtime/composables/useKbd.js +1 -1
- package/dist/runtime/composables/useToast.d.ts +3 -1
- package/dist/runtime/composables/useToast.js +4 -3
- package/dist/runtime/index.css +1 -1
- package/dist/runtime/inertia/components/Link.d.vue.ts +17 -10
- package/dist/runtime/inertia/components/Link.vue +19 -13
- package/dist/runtime/inertia/components/Link.vue.d.ts +17 -10
- package/dist/runtime/inertia/stubs.js +1 -1
- package/dist/runtime/keyframes.css +1 -1
- package/dist/runtime/locale/gl.d.ts +3 -0
- package/dist/runtime/locale/gl.js +129 -0
- package/dist/runtime/locale/hr.d.ts +3 -0
- package/dist/runtime/locale/hr.js +129 -0
- package/dist/runtime/locale/index.d.ts +3 -0
- package/dist/runtime/locale/index.js +3 -0
- package/dist/runtime/locale/sq.d.ts +3 -0
- package/dist/runtime/locale/sq.js +129 -0
- package/dist/runtime/plugins/colors.js +8 -6
- package/dist/runtime/types/html.d.ts +8 -0
- package/dist/runtime/types/html.js +0 -0
- package/dist/runtime/types/index.d.ts +7 -1
- package/dist/runtime/types/index.js +7 -1
- package/dist/runtime/types/input.d.ts +5 -5
- package/dist/runtime/types/tv.d.ts +6 -0
- package/dist/runtime/types/utils.d.ts +2 -0
- package/dist/runtime/utils/content.d.ts +2 -2
- package/dist/runtime/utils/link.d.ts +1 -0
- package/dist/runtime/utils/link.js +40 -24
- package/dist/runtime/utils/virtualizer.d.ts +6 -0
- package/dist/runtime/utils/virtualizer.js +30 -0
- package/dist/runtime/vue/components/Link.d.vue.ts +8 -37
- package/dist/runtime/vue/components/Link.vue +5 -10
- package/dist/runtime/vue/components/Link.vue.d.ts +8 -37
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -3
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +44 -3
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +5 -3
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +24 -3
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
- package/dist/runtime/vue/stubs.d.ts +1 -1
- package/dist/runtime/vue/stubs.js +1 -1
- package/dist/shared/{ui.D-FDXAUi.mjs → ui.B77q-Dvh.mjs} +679 -102
- package/dist/unplugin.d.mts +1 -0
- package/dist/unplugin.mjs +31 -2
- package/dist/vite.mjs +5 -2
- package/package.json +46 -40
- package/.nuxt/ui/accordion.ts +0 -20
- package/.nuxt/ui/alert.ts +0 -264
- package/.nuxt/ui/auth-form.ts +0 -20
- package/.nuxt/ui/avatar-group.ts +0 -52
- package/.nuxt/ui/avatar.ts +0 -54
- package/.nuxt/ui/badge.ts +0 -263
- package/.nuxt/ui/banner.ts +0 -108
- package/.nuxt/ui/blog-post.ts +0 -142
- package/.nuxt/ui/blog-posts.ts +0 -9
- package/.nuxt/ui/breadcrumb.ts +0 -45
- package/.nuxt/ui/button.ts +0 -378
- package/.nuxt/ui/calendar.ts +0 -103
- package/.nuxt/ui/card.ts +0 -34
- package/.nuxt/ui/carousel.ts +0 -38
- package/.nuxt/ui/changelog-version.ts +0 -41
- package/.nuxt/ui/changelog-versions.ts +0 -8
- package/.nuxt/ui/chat-message.ts +0 -129
- package/.nuxt/ui/chat-messages.ts +0 -14
- package/.nuxt/ui/chat-palette.ts +0 -8
- package/.nuxt/ui/chat-prompt-submit.ts +0 -5
- package/.nuxt/ui/chat-prompt.ts +0 -35
- package/.nuxt/ui/checkbox-group.ts +0 -204
- package/.nuxt/ui/checkbox.ts +0 -236
- package/.nuxt/ui/chip.ts +0 -96
- package/.nuxt/ui/collapsible.ts +0 -6
- package/.nuxt/ui/color-picker.ts +0 -47
- package/.nuxt/ui/command-palette.ts +0 -52
- package/.nuxt/ui/container.ts +0 -3
- package/.nuxt/ui/content/content-navigation.ts +0 -368
- package/.nuxt/ui/content/content-search-button.ts +0 -6
- package/.nuxt/ui/content/content-search.ts +0 -13
- package/.nuxt/ui/content/content-surround.ts +0 -34
- package/.nuxt/ui/content/content-toc.ts +0 -155
- package/.nuxt/ui/context-menu.ts +0 -217
- package/.nuxt/ui/dashboard-group.ts +0 -3
- package/.nuxt/ui/dashboard-navbar.ts +0 -21
- package/.nuxt/ui/dashboard-panel.ts +0 -17
- package/.nuxt/ui/dashboard-resize-handle.ts +0 -3
- package/.nuxt/ui/dashboard-search-button.ts +0 -6
- package/.nuxt/ui/dashboard-search.ts +0 -13
- package/.nuxt/ui/dashboard-sidebar-collapse.ts +0 -9
- package/.nuxt/ui/dashboard-sidebar-toggle.ts +0 -9
- package/.nuxt/ui/dashboard-sidebar.ts +0 -37
- package/.nuxt/ui/dashboard-toolbar.ts +0 -7
- package/.nuxt/ui/drawer.ts +0 -149
- package/.nuxt/ui/dropdown-menu.ts +0 -218
- package/.nuxt/ui/error.ts +0 -9
- package/.nuxt/ui/field-group.ts +0 -16
- package/.nuxt/ui/file-upload.ts +0 -290
- package/.nuxt/ui/footer-columns.ts +0 -28
- package/.nuxt/ui/footer.ts +0 -11
- package/.nuxt/ui/form-field.ts +0 -48
- package/.nuxt/ui/form.ts +0 -3
- package/.nuxt/ui/header.ts +0 -25
- package/.nuxt/ui/index.ts +0 -105
- package/.nuxt/ui/input-menu.ts +0 -450
- package/.nuxt/ui/input-number.ts +0 -245
- package/.nuxt/ui/input-tags.ts +0 -310
- package/.nuxt/ui/input.ts +0 -289
- package/.nuxt/ui/kbd.ts +0 -195
- package/.nuxt/ui/link.ts +0 -22
- package/.nuxt/ui/main.ts +0 -3
- package/.nuxt/ui/marquee.ts +0 -66
- package/.nuxt/ui/modal.ts +0 -29
- package/.nuxt/ui/navigation-menu.ts +0 -510
- package/.nuxt/ui/page-anchors.ts +0 -30
- package/.nuxt/ui/page-aside.ts +0 -10
- package/.nuxt/ui/page-body.ts +0 -3
- package/.nuxt/ui/page-card.ts +0 -279
- package/.nuxt/ui/page-columns.ts +0 -3
- package/.nuxt/ui/page-cta.ts +0 -70
- package/.nuxt/ui/page-feature.ts +0 -26
- package/.nuxt/ui/page-grid.ts +0 -3
- package/.nuxt/ui/page-header.ts +0 -18
- package/.nuxt/ui/page-hero.ts +0 -44
- package/.nuxt/ui/page-links.ts +0 -25
- package/.nuxt/ui/page-list.ts +0 -8
- package/.nuxt/ui/page-logos.ts +0 -15
- package/.nuxt/ui/page-section.ts +0 -84
- package/.nuxt/ui/page.ts +0 -32
- package/.nuxt/ui/pagination.ts +0 -13
- package/.nuxt/ui/pin-input.ts +0 -171
- package/.nuxt/ui/popover.ts +0 -6
- package/.nuxt/ui/pricing-plan.ts +0 -101
- package/.nuxt/ui/pricing-plans.ts +0 -22
- package/.nuxt/ui/pricing-table.ts +0 -51
- package/.nuxt/ui/progress.ts +0 -297
- package/.nuxt/ui/prose/a.ts +0 -6
- package/.nuxt/ui/prose/accordion-item.ts +0 -3
- package/.nuxt/ui/prose/accordion.ts +0 -6
- package/.nuxt/ui/prose/badge.ts +0 -3
- package/.nuxt/ui/prose/blockquote.ts +0 -3
- package/.nuxt/ui/prose/callout.ts +0 -129
- package/.nuxt/ui/prose/card-group.ts +0 -3
- package/.nuxt/ui/prose/card.ts +0 -119
- package/.nuxt/ui/prose/code-collapse.ts +0 -19
- package/.nuxt/ui/prose/code-group.ts +0 -13
- package/.nuxt/ui/prose/code-icon.ts +0 -66
- package/.nuxt/ui/prose/code-preview.ts +0 -14
- package/.nuxt/ui/prose/code-tree.ts +0 -28
- package/.nuxt/ui/prose/code.ts +0 -27
- package/.nuxt/ui/prose/collapsible.ts +0 -12
- package/.nuxt/ui/prose/em.ts +0 -3
- package/.nuxt/ui/prose/field-group.ts +0 -3
- package/.nuxt/ui/prose/field.ts +0 -11
- package/.nuxt/ui/prose/h1.ts +0 -6
- package/.nuxt/ui/prose/h2.ts +0 -14
- package/.nuxt/ui/prose/h3.ts +0 -14
- package/.nuxt/ui/prose/h4.ts +0 -6
- package/.nuxt/ui/prose/hr.ts +0 -3
- package/.nuxt/ui/prose/icon.ts +0 -3
- package/.nuxt/ui/prose/img.ts +0 -22
- package/.nuxt/ui/prose/index.ts +0 -41
- package/.nuxt/ui/prose/kbd.ts +0 -3
- package/.nuxt/ui/prose/li.ts +0 -3
- package/.nuxt/ui/prose/ol.ts +0 -3
- package/.nuxt/ui/prose/p.ts +0 -3
- package/.nuxt/ui/prose/pre.ts +0 -17
- package/.nuxt/ui/prose/steps.ts +0 -19
- package/.nuxt/ui/prose/strong.ts +0 -3
- package/.nuxt/ui/prose/table.ts +0 -6
- package/.nuxt/ui/prose/tabs-item.ts +0 -3
- package/.nuxt/ui/prose/tabs.ts +0 -5
- package/.nuxt/ui/prose/tbody.ts +0 -3
- package/.nuxt/ui/prose/td.ts +0 -3
- package/.nuxt/ui/prose/th.ts +0 -3
- package/.nuxt/ui/prose/thead.ts +0 -3
- package/.nuxt/ui/prose/tr.ts +0 -3
- package/.nuxt/ui/prose/ul.ts +0 -3
- package/.nuxt/ui/radio-group.ts +0 -350
- package/.nuxt/ui/select-menu.ts +0 -351
- package/.nuxt/ui/select.ts +0 -346
- package/.nuxt/ui/separator.ts +0 -172
- package/.nuxt/ui/skeleton.ts +0 -3
- package/.nuxt/ui/slideover.ts +0 -71
- package/.nuxt/ui/slider.ts +0 -171
- package/.nuxt/ui/stepper.ts +0 -202
- package/.nuxt/ui/switch.ts +0 -131
- package/.nuxt/ui/table.ts +0 -156
- package/.nuxt/ui/tabs.ts +0 -258
- package/.nuxt/ui/textarea.ts +0 -294
- package/.nuxt/ui/timeline.ts +0 -321
- package/.nuxt/ui/toast.ts +0 -74
- package/.nuxt/ui/toaster.ts +0 -91
- package/.nuxt/ui/tooltip.ts +0 -9
- package/.nuxt/ui/tree.ts +0 -154
- package/.nuxt/ui/user.ts +0 -101
- package/.nuxt/ui.css +0 -146
- package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +0 -17
- package/dist/runtime/vue/components/color-mode/ColorModeButton.vue +0 -35
- package/dist/runtime/vue/components/color-mode/ColorModeButton.vue.d.ts +0 -17
|
@@ -3,17 +3,18 @@ import theme from "#build/ui/command-palette";
|
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
-
import { computed, ref, useTemplateRef } from "vue";
|
|
7
|
-
import { ListboxRoot, ListboxFilter, ListboxContent, ListboxGroup, ListboxGroupLabel, ListboxItem, ListboxItemIndicator, useForwardProps, useForwardPropsEmits } from "reka-ui";
|
|
6
|
+
import { computed, ref, useTemplateRef, toRef } from "vue";
|
|
7
|
+
import { ListboxRoot, ListboxFilter, ListboxContent, ListboxGroup, ListboxGroupLabel, ListboxVirtualizer, ListboxItem, ListboxItemIndicator, useForwardProps, useForwardPropsEmits } from "reka-ui";
|
|
8
8
|
import { defu } from "defu";
|
|
9
|
-
import { reactivePick } from "@vueuse/core";
|
|
9
|
+
import { reactivePick, createReusableTemplate, refThrottled } from "@vueuse/core";
|
|
10
10
|
import { useFuse } from "@vueuse/integrations/useFuse";
|
|
11
11
|
import { useAppConfig } from "#imports";
|
|
12
12
|
import { useLocale } from "../composables/useLocale";
|
|
13
13
|
import { omit, get } from "../utils";
|
|
14
|
-
import { tv } from "../utils/tv";
|
|
15
14
|
import { highlight } from "../utils/fuse";
|
|
16
15
|
import { pickLinkProps } from "../utils/link";
|
|
16
|
+
import { getEstimateSize } from "../utils/virtualizer";
|
|
17
|
+
import { tv } from "../utils/tv";
|
|
17
18
|
import UIcon from "./Icon.vue";
|
|
18
19
|
import UAvatar from "./Avatar.vue";
|
|
19
20
|
import UButton from "./Button.vue";
|
|
@@ -22,11 +23,13 @@ import ULinkBase from "./LinkBase.vue";
|
|
|
22
23
|
import ULink from "./Link.vue";
|
|
23
24
|
import UInput from "./Input.vue";
|
|
24
25
|
import UKbd from "./Kbd.vue";
|
|
26
|
+
defineOptions({ inheritAttrs: false });
|
|
25
27
|
const props = defineProps({
|
|
26
28
|
as: { type: null, required: false },
|
|
27
29
|
icon: { type: [String, Object], required: false },
|
|
28
|
-
selectedIcon: { type: [String, Object], required: false },
|
|
29
30
|
trailingIcon: { type: [String, Object], required: false },
|
|
31
|
+
selectedIcon: { type: [String, Object], required: false },
|
|
32
|
+
childrenIcon: { type: [String, Object], required: false },
|
|
30
33
|
placeholder: { type: String, required: false },
|
|
31
34
|
autofocus: { type: Boolean, required: false, default: true },
|
|
32
35
|
close: { type: [Boolean, Object], required: false },
|
|
@@ -35,14 +38,17 @@ const props = defineProps({
|
|
|
35
38
|
backIcon: { type: [String, Object], required: false },
|
|
36
39
|
groups: { type: Array, required: false },
|
|
37
40
|
fuse: { type: Object, required: false },
|
|
41
|
+
virtualize: { type: [Boolean, Object], required: false, default: false },
|
|
38
42
|
labelKey: { type: null, required: false, default: "label" },
|
|
43
|
+
descriptionKey: { type: null, required: false, default: "description" },
|
|
44
|
+
preserveGroupOrder: { type: Boolean, required: false, default: false },
|
|
39
45
|
class: { type: null, required: false },
|
|
40
46
|
ui: { type: null, required: false },
|
|
41
47
|
multiple: { type: Boolean, required: false },
|
|
42
48
|
disabled: { type: Boolean, required: false },
|
|
43
49
|
modelValue: { type: null, required: false, default: "" },
|
|
44
50
|
defaultValue: { type: null, required: false },
|
|
45
|
-
highlightOnHover: { type: Boolean, required: false },
|
|
51
|
+
highlightOnHover: { type: Boolean, required: false, default: true },
|
|
46
52
|
selectionBehavior: { type: String, required: false },
|
|
47
53
|
loading: { type: Boolean, required: false },
|
|
48
54
|
loadingIcon: { type: [String, Object], required: false }
|
|
@@ -54,7 +60,31 @@ const { t } = useLocale();
|
|
|
54
60
|
const appConfig = useAppConfig();
|
|
55
61
|
const rootProps = useForwardPropsEmits(reactivePick(props, "as", "disabled", "multiple", "modelValue", "defaultValue", "highlightOnHover"), emits);
|
|
56
62
|
const inputProps = useForwardProps(reactivePick(props, "loading"));
|
|
57
|
-
const
|
|
63
|
+
const virtualizerProps = toRef(() => {
|
|
64
|
+
if (!props.virtualize) return false;
|
|
65
|
+
return defu(typeof props.virtualize === "boolean" ? {} : props.virtualize, {
|
|
66
|
+
estimateSize: getEstimateSize(filteredItems.value, "md", props.descriptionKey)
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate({
|
|
70
|
+
props: {
|
|
71
|
+
item: {
|
|
72
|
+
type: Object,
|
|
73
|
+
required: true
|
|
74
|
+
},
|
|
75
|
+
group: {
|
|
76
|
+
type: Object,
|
|
77
|
+
required: false
|
|
78
|
+
},
|
|
79
|
+
index: {
|
|
80
|
+
type: Number,
|
|
81
|
+
required: false
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.commandPalette || {} })({
|
|
86
|
+
virtualize: !!props.virtualize
|
|
87
|
+
}));
|
|
58
88
|
const fuse = computed(() => defu({}, props.fuse, {
|
|
59
89
|
fuseOptions: {
|
|
60
90
|
ignoreLocation: true,
|
|
@@ -78,13 +108,15 @@ const items = computed(() => groups.value?.filter((group) => {
|
|
|
78
108
|
return true;
|
|
79
109
|
})?.flatMap((group) => group.items?.map((item) => ({ ...item, group: group.id })) || []) || []);
|
|
80
110
|
const { results: fuseResults } = useFuse(searchTerm, items, fuse);
|
|
81
|
-
|
|
111
|
+
const throttledFuseResults = refThrottled(fuseResults, 16, true);
|
|
112
|
+
function processGroupItems(group, items2) {
|
|
113
|
+
let processedItems = items2;
|
|
82
114
|
if (group?.postFilter && typeof group.postFilter === "function") {
|
|
83
|
-
|
|
115
|
+
processedItems = group.postFilter(searchTerm.value, processedItems);
|
|
84
116
|
}
|
|
85
117
|
return {
|
|
86
118
|
...group,
|
|
87
|
-
items:
|
|
119
|
+
items: processedItems.slice(0, fuse.value.resultLimit).map((item) => {
|
|
88
120
|
return {
|
|
89
121
|
...item,
|
|
90
122
|
labelHtml: highlight(item, searchTerm.value, props.labelKey),
|
|
@@ -94,7 +126,8 @@ function getGroupWithItems(group, items2) {
|
|
|
94
126
|
};
|
|
95
127
|
}
|
|
96
128
|
const filteredGroups = computed(() => {
|
|
97
|
-
const
|
|
129
|
+
const currentGroups = groups.value;
|
|
130
|
+
const groupsById = throttledFuseResults.value.reduce((acc, result) => {
|
|
98
131
|
const { item, matches } = result;
|
|
99
132
|
if (!item.group) {
|
|
100
133
|
return acc;
|
|
@@ -103,20 +136,42 @@ const filteredGroups = computed(() => {
|
|
|
103
136
|
acc[item.group]?.push({ ...item, matches });
|
|
104
137
|
return acc;
|
|
105
138
|
}, {});
|
|
139
|
+
if (props.preserveGroupOrder) {
|
|
140
|
+
const processedGroups = [];
|
|
141
|
+
for (const group of currentGroups || []) {
|
|
142
|
+
if (!group.items?.length) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const items2 = group.ignoreFilter ? group.items : groupsById[group.id];
|
|
146
|
+
if (!items2?.length) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const processedGroup = processGroupItems(group, items2);
|
|
150
|
+
if (processedGroup.items?.length) {
|
|
151
|
+
processedGroups.push(processedGroup);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return processedGroups;
|
|
155
|
+
}
|
|
106
156
|
const fuseGroups = Object.entries(groupsById).map(([id, items2]) => {
|
|
107
|
-
const group =
|
|
157
|
+
const group = currentGroups?.find((group2) => group2.id === id);
|
|
108
158
|
if (!group) {
|
|
109
159
|
return;
|
|
110
160
|
}
|
|
111
|
-
|
|
161
|
+
const processedGroup = processGroupItems(group, items2);
|
|
162
|
+
return processedGroup.items?.length ? processedGroup : void 0;
|
|
112
163
|
}).filter((group) => !!group);
|
|
113
|
-
const nonFuseGroups =
|
|
164
|
+
const nonFuseGroups = currentGroups?.map((group, index) => ({ ...group, index }))?.filter((group) => group.ignoreFilter && group.items?.length)?.map((group) => {
|
|
165
|
+
const processedGroup = processGroupItems(group, group.items || []);
|
|
166
|
+
return { ...processedGroup, index: group.index };
|
|
167
|
+
})?.filter((group) => group.items?.length) || [];
|
|
114
168
|
return nonFuseGroups.reduce((acc, group) => {
|
|
115
169
|
acc.splice(group.index, 0, group);
|
|
116
170
|
return acc;
|
|
117
171
|
}, [...fuseGroups]);
|
|
118
172
|
});
|
|
119
|
-
const
|
|
173
|
+
const filteredItems = computed(() => filteredGroups.value.flatMap((group) => group.items || []));
|
|
174
|
+
const rootRef = useTemplateRef("rootRef");
|
|
120
175
|
function navigate(item) {
|
|
121
176
|
if (!item.children?.length) {
|
|
122
177
|
return;
|
|
@@ -129,7 +184,7 @@ function navigate(item) {
|
|
|
129
184
|
items: item.children
|
|
130
185
|
});
|
|
131
186
|
searchTerm.value = "";
|
|
132
|
-
|
|
187
|
+
rootRef.value?.highlightFirstItem();
|
|
133
188
|
}
|
|
134
189
|
function navigateBack() {
|
|
135
190
|
if (!history.value.length) {
|
|
@@ -137,7 +192,7 @@ function navigateBack() {
|
|
|
137
192
|
}
|
|
138
193
|
history.value.pop();
|
|
139
194
|
searchTerm.value = "";
|
|
140
|
-
|
|
195
|
+
rootRef.value?.highlightFirstItem();
|
|
141
196
|
}
|
|
142
197
|
function onBackspace() {
|
|
143
198
|
if (!searchTerm.value) {
|
|
@@ -155,7 +210,78 @@ function onSelect(e, item) {
|
|
|
155
210
|
</script>
|
|
156
211
|
|
|
157
212
|
<template>
|
|
158
|
-
<
|
|
213
|
+
<DefineItemTemplate v-slot="{ item, index, group }">
|
|
214
|
+
<ListboxItem
|
|
215
|
+
:value="omit(item, ['matches', 'group', 'onSelect', 'labelHtml', 'suffixHtml', 'children'])"
|
|
216
|
+
:disabled="item.disabled"
|
|
217
|
+
as-child
|
|
218
|
+
@select="onSelect($event, item)"
|
|
219
|
+
>
|
|
220
|
+
<ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
|
|
221
|
+
<ULinkBase v-bind="slotProps" data-slot="item" :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class], active: active || item.active })">
|
|
222
|
+
<slot :name="item.slot || group?.slot || 'item'" :item="item" :index="index" :ui="ui">
|
|
223
|
+
<slot :name="item.slot ? `${item.slot}-leading` : group?.slot ? `${group.slot}-leading` : `item-leading`" :item="item" :index="index" :ui="ui">
|
|
224
|
+
<UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" data-slot="itemLeadingIcon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon], loading: true })" />
|
|
225
|
+
<UIcon v-else-if="item.icon" :name="item.icon" data-slot="itemLeadingIcon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon], active: active || item.active })" />
|
|
226
|
+
<UAvatar v-else-if="item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" data-slot="itemLeadingAvatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar], active: active || item.active })" />
|
|
227
|
+
<UChip
|
|
228
|
+
v-else-if="item.chip"
|
|
229
|
+
:size="item.ui?.itemLeadingChipSize || props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
|
|
230
|
+
inset
|
|
231
|
+
standalone
|
|
232
|
+
v-bind="item.chip"
|
|
233
|
+
data-slot="itemLeadingChip"
|
|
234
|
+
:class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip], active: active || item.active })"
|
|
235
|
+
/>
|
|
236
|
+
</slot>
|
|
237
|
+
|
|
238
|
+
<span v-if="item.prefix || (item.labelHtml || get(item, props.labelKey)) || (item.suffixHtml || item.suffix) || !!slots[item.slot ? `${item.slot}-label` : group?.slot ? `${group.slot}-label` : `item-label`] || (get(item, props.descriptionKey) || !!slots[item.slot ? `${item.slot}-description` : group?.slot ? `${group.slot}-description` : `item-description`])" data-slot="itemWrapper" :class="ui.itemWrapper({ class: [props.ui?.itemWrapper, item.ui?.itemWrapper] })">
|
|
239
|
+
<span data-slot="itemLabel" :class="ui.itemLabel({ class: [props.ui?.itemLabel, item.ui?.itemLabel], active: active || item.active })">
|
|
240
|
+
<slot :name="item.slot ? `${item.slot}-label` : group?.slot ? `${group.slot}-label` : `item-label`" :item="item" :index="index" :ui="ui">
|
|
241
|
+
<span v-if="item.prefix" data-slot="itemLabelPrefix" :class="ui.itemLabelPrefix({ class: [props.ui?.itemLabelPrefix, item.ui?.itemLabelPrefix] })">{{ item.prefix }}</span>
|
|
242
|
+
|
|
243
|
+
<span v-if="item.labelHtml" data-slot="itemLabelBase" :class="ui.itemLabelBase({ class: [props.ui?.itemLabelBase, item.ui?.itemLabelBase], active: active || item.active })" v-html="item.labelHtml" />
|
|
244
|
+
<span v-else data-slot="itemLabelBase" :class="ui.itemLabelBase({ class: [props.ui?.itemLabelBase, item.ui?.itemLabelBase], active: active || item.active })">{{ get(item, props.labelKey) }}</span>
|
|
245
|
+
|
|
246
|
+
<span v-if="item.suffixHtml" data-slot="itemLabelSuffix" :class="ui.itemLabelSuffix({ class: [props.ui?.itemLabelSuffix, item.ui?.itemLabelSuffix], active: active || item.active })" v-html="item.suffixHtml" />
|
|
247
|
+
<span v-else-if="item.suffix" data-slot="itemLabelSuffix" :class="ui.itemLabelSuffix({ class: [props.ui?.itemLabelSuffix, item.ui?.itemLabelSuffix], active: active || item.active })">{{ item.suffix }}</span>
|
|
248
|
+
</slot>
|
|
249
|
+
</span>
|
|
250
|
+
|
|
251
|
+
<span v-if="get(item, props.descriptionKey)" data-slot="itemDescription" :class="ui.itemDescription({ class: [props.ui?.itemDescription, item.ui?.itemDescription] })">
|
|
252
|
+
<slot :name="item.slot ? `${item.slot}-description` : group?.slot ? `${group.slot}-description` : `item-description`" :item="item" :index="index" :ui="ui">
|
|
253
|
+
{{ get(item, props.descriptionKey) }}
|
|
254
|
+
</slot>
|
|
255
|
+
</span>
|
|
256
|
+
</span>
|
|
257
|
+
|
|
258
|
+
<span data-slot="itemTrailing" :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, item.ui?.itemTrailing] })">
|
|
259
|
+
<slot :name="item.slot ? `${item.slot}-trailing` : group?.slot ? `${group.slot}-trailing` : `item-trailing`" :item="item" :index="index" :ui="ui">
|
|
260
|
+
<UIcon
|
|
261
|
+
v-if="item.children && item.children.length > 0"
|
|
262
|
+
:name="childrenIcon || appConfig.ui.icons.chevronRight"
|
|
263
|
+
data-slot="itemTrailingIcon"
|
|
264
|
+
:class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, item.ui?.itemTrailingIcon] })"
|
|
265
|
+
/>
|
|
266
|
+
|
|
267
|
+
<span v-else-if="item.kbds?.length" data-slot="itemTrailingKbds" :class="ui.itemTrailingKbds({ class: [props.ui?.itemTrailingKbds, item.ui?.itemTrailingKbds] })">
|
|
268
|
+
<UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="item.ui?.itemTrailingKbdsSize || props.ui?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />
|
|
269
|
+
</span>
|
|
270
|
+
|
|
271
|
+
<UIcon v-else-if="group?.highlightedIcon" :name="group.highlightedIcon" data-slot="itemTrailingHighlightedIcon" :class="ui.itemTrailingHighlightedIcon({ class: [props.ui?.itemTrailingHighlightedIcon, item.ui?.itemTrailingHighlightedIcon] })" />
|
|
272
|
+
</slot>
|
|
273
|
+
|
|
274
|
+
<ListboxItemIndicator v-if="!item.children?.length" as-child>
|
|
275
|
+
<UIcon :name="selectedIcon || appConfig.ui.icons.check" data-slot="itemTrailingIcon" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, item.ui?.itemTrailingIcon] })" />
|
|
276
|
+
</ListboxItemIndicator>
|
|
277
|
+
</span>
|
|
278
|
+
</slot>
|
|
279
|
+
</ULinkBase>
|
|
280
|
+
</ULink>
|
|
281
|
+
</ListboxItem>
|
|
282
|
+
</DefineItemTemplate>
|
|
283
|
+
|
|
284
|
+
<ListboxRoot v-bind="{ ...rootProps, ...$attrs }" ref="rootRef" :selection-behavior="selectionBehavior" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
159
285
|
<ListboxFilter v-model="searchTerm" as-child>
|
|
160
286
|
<UInput
|
|
161
287
|
:placeholder="placeholder"
|
|
@@ -163,7 +289,9 @@ function onSelect(e, item) {
|
|
|
163
289
|
:autofocus="autofocus"
|
|
164
290
|
v-bind="inputProps"
|
|
165
291
|
:loading-icon="loadingIcon"
|
|
292
|
+
:trailing-icon="trailingIcon"
|
|
166
293
|
:icon="icon || appConfig.ui.icons.search"
|
|
294
|
+
data-slot="input"
|
|
167
295
|
:class="ui.input({ class: props.ui?.input })"
|
|
168
296
|
@keydown.backspace="onBackspace"
|
|
169
297
|
>
|
|
@@ -175,6 +303,7 @@ function onSelect(e, item) {
|
|
|
175
303
|
variant="link"
|
|
176
304
|
:aria-label="t('commandPalette.back')"
|
|
177
305
|
v-bind="typeof back === 'object' ? back : {}"
|
|
306
|
+
data-slot="back"
|
|
178
307
|
:class="ui.back({ class: props.ui?.back })"
|
|
179
308
|
@click="navigateBack"
|
|
180
309
|
/>
|
|
@@ -190,6 +319,7 @@ function onSelect(e, item) {
|
|
|
190
319
|
variant="ghost"
|
|
191
320
|
:aria-label="t('commandPalette.close')"
|
|
192
321
|
v-bind="typeof close === 'object' ? close : {}"
|
|
322
|
+
data-slot="close"
|
|
193
323
|
:class="ui.close({ class: props.ui?.close })"
|
|
194
324
|
@click="emits('update:open', false)"
|
|
195
325
|
/>
|
|
@@ -198,82 +328,43 @@ function onSelect(e, item) {
|
|
|
198
328
|
</UInput>
|
|
199
329
|
</ListboxFilter>
|
|
200
330
|
|
|
201
|
-
<ListboxContent :class="ui.content({ class: props.ui?.content })">
|
|
202
|
-
<div v-if="filteredGroups?.length" role="presentation" :class="ui.viewport({ class: props.ui?.viewport })">
|
|
203
|
-
<
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
:disabled="item.disabled"
|
|
213
|
-
as-child
|
|
214
|
-
@select="onSelect($event, item)"
|
|
215
|
-
>
|
|
216
|
-
<ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
|
|
217
|
-
<ULinkBase v-bind="slotProps" :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class], active: active || item.active })">
|
|
218
|
-
<slot :name="item.slot || group.slot || 'item'" :item="item" :index="index">
|
|
219
|
-
<slot :name="item.slot ? `${item.slot}-leading` : group.slot ? `${group.slot}-leading` : `item-leading`" :item="item" :index="index">
|
|
220
|
-
<UIcon v-if="item.loading" :name="loadingIcon || appConfig.ui.icons.loading" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon], loading: true })" />
|
|
221
|
-
<UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon], active: active || item.active })" />
|
|
222
|
-
<UAvatar v-else-if="item.avatar" :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: [props.ui?.itemLeadingAvatar, item.ui?.itemLeadingAvatar], active: active || item.active })" />
|
|
223
|
-
<UChip
|
|
224
|
-
v-else-if="item.chip"
|
|
225
|
-
:size="item.ui?.itemLeadingChipSize || props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()"
|
|
226
|
-
inset
|
|
227
|
-
standalone
|
|
228
|
-
v-bind="item.chip"
|
|
229
|
-
:class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip], active: active || item.active })"
|
|
230
|
-
/>
|
|
231
|
-
</slot>
|
|
331
|
+
<ListboxContent data-slot="content" :class="ui.content({ class: props.ui?.content })">
|
|
332
|
+
<div v-if="filteredGroups?.length" role="presentation" data-slot="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
|
|
333
|
+
<ListboxVirtualizer
|
|
334
|
+
v-if="!!virtualize"
|
|
335
|
+
v-slot="{ option: item, virtualItem }"
|
|
336
|
+
:options="filteredItems"
|
|
337
|
+
:text-content="(item2) => get(item2, props.labelKey)"
|
|
338
|
+
v-bind="virtualizerProps"
|
|
339
|
+
>
|
|
340
|
+
<ReuseItemTemplate :item="item" :index="virtualItem.index" />
|
|
341
|
+
</ListboxVirtualizer>
|
|
232
342
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
343
|
+
<template v-else>
|
|
344
|
+
<ListboxGroup v-for="group in filteredGroups" :key="`group-${group.id}`" data-slot="group" :class="ui.group({ class: props.ui?.group })">
|
|
345
|
+
<ListboxGroupLabel v-if="get(group, props.labelKey)" data-slot="label" :class="ui.label({ class: props.ui?.label })">
|
|
346
|
+
{{ get(group, props.labelKey) }}
|
|
347
|
+
</ListboxGroupLabel>
|
|
236
348
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
v-if="item.children && item.children.length > 0"
|
|
247
|
-
:name="trailingIcon || appConfig.ui.icons.chevronRight"
|
|
248
|
-
:class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, item.ui?.itemTrailingIcon] })"
|
|
249
|
-
/>
|
|
250
|
-
|
|
251
|
-
<span v-else-if="item.kbds?.length" :class="ui.itemTrailingKbds({ class: [props.ui?.itemTrailingKbds, item.ui?.itemTrailingKbds] })">
|
|
252
|
-
<UKbd v-for="(kbd, kbdIndex) in item.kbds" :key="kbdIndex" :size="item.ui?.itemTrailingKbdsSize || props.ui?.itemTrailingKbdsSize || ui.itemTrailingKbdsSize()" v-bind="typeof kbd === 'string' ? { value: kbd } : kbd" />
|
|
253
|
-
</span>
|
|
254
|
-
|
|
255
|
-
<UIcon v-else-if="group.highlightedIcon" :name="group.highlightedIcon" :class="ui.itemTrailingHighlightedIcon({ class: [props.ui?.itemTrailingHighlightedIcon, item.ui?.itemTrailingHighlightedIcon] })" />
|
|
256
|
-
</slot>
|
|
257
|
-
|
|
258
|
-
<ListboxItemIndicator v-if="!item.children?.length" as-child>
|
|
259
|
-
<UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, item.ui?.itemTrailingIcon] })" />
|
|
260
|
-
</ListboxItemIndicator>
|
|
261
|
-
</span>
|
|
262
|
-
</slot>
|
|
263
|
-
</ULinkBase>
|
|
264
|
-
</ULink>
|
|
265
|
-
</ListboxItem>
|
|
266
|
-
</ListboxGroup>
|
|
349
|
+
<ReuseItemTemplate
|
|
350
|
+
v-for="(item, index) in group.items"
|
|
351
|
+
:key="`group-${group.id}-${index}`"
|
|
352
|
+
:item="item"
|
|
353
|
+
:index="index"
|
|
354
|
+
:group="group"
|
|
355
|
+
/>
|
|
356
|
+
</ListboxGroup>
|
|
357
|
+
</template>
|
|
267
358
|
</div>
|
|
268
359
|
|
|
269
|
-
<div v-else :class="ui.empty({ class: props.ui?.empty })">
|
|
360
|
+
<div v-else data-slot="empty" :class="ui.empty({ class: props.ui?.empty })">
|
|
270
361
|
<slot name="empty" :search-term="searchTerm">
|
|
271
362
|
{{ searchTerm ? t("commandPalette.noMatch", { searchTerm }) : t("commandPalette.noData") }}
|
|
272
363
|
</slot>
|
|
273
364
|
</div>
|
|
274
365
|
</ListboxContent>
|
|
275
366
|
|
|
276
|
-
<div v-if="!!slots.footer" :class="ui.footer({ class: props.ui?.footer })">
|
|
367
|
+
<div v-if="!!slots.footer" data-slot="footer" :class="ui.footer({ class: props.ui?.footer })">
|
|
277
368
|
<slot name="footer" :ui="ui" />
|
|
278
369
|
</div>
|
|
279
370
|
</ListboxRoot>
|
|
@@ -11,6 +11,7 @@ export interface CommandPaletteItem extends Omit<LinkProps, 'type' | 'raw' | 'cu
|
|
|
11
11
|
prefix?: string;
|
|
12
12
|
label?: string;
|
|
13
13
|
suffix?: string;
|
|
14
|
+
description?: string;
|
|
14
15
|
/**
|
|
15
16
|
* @IconifyIcon
|
|
16
17
|
*/
|
|
@@ -27,9 +28,9 @@ export interface CommandPaletteItem extends Omit<LinkProps, 'type' | 'raw' | 'cu
|
|
|
27
28
|
*/
|
|
28
29
|
placeholder?: string;
|
|
29
30
|
children?: CommandPaletteItem[];
|
|
30
|
-
onSelect
|
|
31
|
+
onSelect?: (e: Event) => void;
|
|
31
32
|
class?: any;
|
|
32
|
-
ui?: Pick<CommandPalette['slots'], 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemLabel' | 'itemLabelPrefix' | 'itemLabelBase' | 'itemLabelSuffix' | 'itemTrailing' | 'itemTrailingKbds' | 'itemTrailingKbdsSize' | 'itemTrailingHighlightedIcon' | 'itemTrailingIcon'>;
|
|
33
|
+
ui?: Pick<CommandPalette['slots'], 'item' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLeadingChipSize' | 'itemLeadingChip' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelPrefix' | 'itemLabelBase' | 'itemLabelSuffix' | 'itemTrailing' | 'itemTrailingKbds' | 'itemTrailingKbdsSize' | 'itemTrailingHighlightedIcon' | 'itemTrailingIcon'>;
|
|
33
34
|
[key: string]: any;
|
|
34
35
|
}
|
|
35
36
|
export interface CommandPaletteGroup<T extends CommandPaletteItem = CommandPaletteItem> {
|
|
@@ -63,6 +64,12 @@ export interface CommandPaletteProps<G extends CommandPaletteGroup<T> = CommandP
|
|
|
63
64
|
* @IconifyIcon
|
|
64
65
|
*/
|
|
65
66
|
icon?: IconProps['name'];
|
|
67
|
+
/**
|
|
68
|
+
* The icon displayed on the right side of the input.
|
|
69
|
+
* @defaultValue appConfig.ui.icons.search
|
|
70
|
+
* @IconifyIcon
|
|
71
|
+
*/
|
|
72
|
+
trailingIcon?: IconProps['name'];
|
|
66
73
|
/**
|
|
67
74
|
* The icon displayed when an item is selected.
|
|
68
75
|
* @defaultValue appConfig.ui.icons.check
|
|
@@ -74,7 +81,7 @@ export interface CommandPaletteProps<G extends CommandPaletteGroup<T> = CommandP
|
|
|
74
81
|
* @defaultValue appConfig.ui.icons.chevronRight
|
|
75
82
|
* @IconifyIcon
|
|
76
83
|
*/
|
|
77
|
-
|
|
84
|
+
childrenIcon?: IconProps['name'];
|
|
78
85
|
/**
|
|
79
86
|
* The placeholder text for the input.
|
|
80
87
|
* @defaultValue t('commandPalette.placeholder')
|
|
@@ -124,11 +131,39 @@ export interface CommandPaletteProps<G extends CommandPaletteGroup<T> = CommandP
|
|
|
124
131
|
}
|
|
125
132
|
*/
|
|
126
133
|
fuse?: UseFuseOptions<T>;
|
|
134
|
+
/**
|
|
135
|
+
* Enable virtualization for large lists.
|
|
136
|
+
* Note: when enabled, all groups are flattened into a single list due to a limitation of Reka UI (https://github.com/unovue/reka-ui/issues/1885).
|
|
137
|
+
* @defaultValue false
|
|
138
|
+
*/
|
|
139
|
+
virtualize?: boolean | {
|
|
140
|
+
/**
|
|
141
|
+
* Number of items rendered outside the visible area
|
|
142
|
+
* @defaultValue 12
|
|
143
|
+
*/
|
|
144
|
+
overscan?: number;
|
|
145
|
+
/**
|
|
146
|
+
* Estimated size (in px) of each item
|
|
147
|
+
* @defaultValue 32
|
|
148
|
+
*/
|
|
149
|
+
estimateSize?: number;
|
|
150
|
+
};
|
|
127
151
|
/**
|
|
128
152
|
* The key used to get the label from the item.
|
|
129
153
|
* @defaultValue 'label'
|
|
130
154
|
*/
|
|
131
155
|
labelKey?: GetItemKeys<T>;
|
|
156
|
+
/**
|
|
157
|
+
* The key used to get the description from the item.
|
|
158
|
+
* @defaultValue 'description'
|
|
159
|
+
*/
|
|
160
|
+
descriptionKey?: GetItemKeys<T>;
|
|
161
|
+
/**
|
|
162
|
+
* Whether to preserve the order of groups as defined in the `groups` prop when filtering.
|
|
163
|
+
* When `false`, groups will appear based on item matches.
|
|
164
|
+
* @defaultValue false
|
|
165
|
+
*/
|
|
166
|
+
preserveGroupOrder?: boolean;
|
|
132
167
|
class?: any;
|
|
133
168
|
ui?: CommandPalette['slots'];
|
|
134
169
|
}
|
|
@@ -138,29 +173,25 @@ export type CommandPaletteEmits<T extends CommandPaletteItem = CommandPaletteIte
|
|
|
138
173
|
type SlotProps<T> = (props: {
|
|
139
174
|
item: T;
|
|
140
175
|
index: number;
|
|
176
|
+
ui: CommandPalette['ui'];
|
|
141
177
|
}) => any;
|
|
142
178
|
export type CommandPaletteSlots<G extends CommandPaletteGroup<T> = CommandPaletteGroup<any>, T extends CommandPaletteItem = CommandPaletteItem> = {
|
|
143
179
|
'empty'(props: {
|
|
144
180
|
searchTerm?: string;
|
|
145
181
|
}): any;
|
|
146
182
|
'footer'(props: {
|
|
147
|
-
ui:
|
|
148
|
-
[K in keyof Required<CommandPalette['slots']>]: (props?: Record<string, any>) => string;
|
|
149
|
-
};
|
|
183
|
+
ui: CommandPalette['ui'];
|
|
150
184
|
}): any;
|
|
151
185
|
'back'(props: {
|
|
152
|
-
ui:
|
|
153
|
-
[K in keyof Required<CommandPalette['slots']>]: (props?: Record<string, any>) => string;
|
|
154
|
-
};
|
|
186
|
+
ui: CommandPalette['ui'];
|
|
155
187
|
}): any;
|
|
156
188
|
'close'(props: {
|
|
157
|
-
ui:
|
|
158
|
-
[K in keyof Required<CommandPalette['slots']>]: (props?: Record<string, any>) => string;
|
|
159
|
-
};
|
|
189
|
+
ui: CommandPalette['ui'];
|
|
160
190
|
}): any;
|
|
161
191
|
'item': SlotProps<T>;
|
|
162
192
|
'item-leading': SlotProps<T>;
|
|
163
193
|
'item-label': SlotProps<T>;
|
|
194
|
+
'item-description': SlotProps<T>;
|
|
164
195
|
'item-trailing': SlotProps<T>;
|
|
165
196
|
} & Record<string, SlotProps<G>> & Record<string, SlotProps<T>>;
|
|
166
197
|
declare const __VLS_export: <G extends CommandPaletteGroup<T>, T extends CommandPaletteItem>(__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<{
|
|
@@ -7,13 +7,16 @@ import type { ComponentConfig } from '../types/tv';
|
|
|
7
7
|
type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
|
|
8
8
|
export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'> {
|
|
9
9
|
label?: string;
|
|
10
|
+
description?: string;
|
|
10
11
|
/**
|
|
11
12
|
* @IconifyIcon
|
|
12
13
|
*/
|
|
13
14
|
icon?: IconProps['name'];
|
|
14
15
|
color?: ContextMenu['variants']['color'];
|
|
15
16
|
avatar?: AvatarProps;
|
|
16
|
-
content?: Omit<ContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> &
|
|
17
|
+
content?: Omit<ContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> & {
|
|
18
|
+
class?: any;
|
|
19
|
+
} & Partial<EmitsToProps<ContextMenuContentEmits>>;
|
|
17
20
|
kbds?: KbdProps['value'][] | KbdProps[];
|
|
18
21
|
/**
|
|
19
22
|
* The item type.
|
|
@@ -27,10 +30,10 @@ export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custo
|
|
|
27
30
|
open?: boolean;
|
|
28
31
|
defaultOpen?: boolean;
|
|
29
32
|
children?: ArrayOrNested<ContextMenuItem>;
|
|
30
|
-
onSelect
|
|
31
|
-
onUpdateChecked
|
|
33
|
+
onSelect?: (e: Event) => void;
|
|
34
|
+
onUpdateChecked?: (checked: boolean) => void;
|
|
32
35
|
class?: any;
|
|
33
|
-
ui?: Pick<ContextMenu['slots'], 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLabel' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
|
|
36
|
+
ui?: Pick<ContextMenu['slots'], 'content' | 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemWrapper' | 'itemLabel' | 'itemDescription' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
|
|
34
37
|
[key: string]: any;
|
|
35
38
|
}
|
|
36
39
|
export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>> extends Omit<ContextMenuRootProps, 'dir'> {
|
|
@@ -70,6 +73,11 @@ export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = Arr
|
|
|
70
73
|
* @defaultValue 'label'
|
|
71
74
|
*/
|
|
72
75
|
labelKey?: GetItemKeys<T>;
|
|
76
|
+
/**
|
|
77
|
+
* The key used to get the description from the item.
|
|
78
|
+
* @defaultValue 'description'
|
|
79
|
+
*/
|
|
80
|
+
descriptionKey?: GetItemKeys<T>;
|
|
73
81
|
disabled?: boolean;
|
|
74
82
|
class?: any;
|
|
75
83
|
ui?: ContextMenu['slots'];
|
|
@@ -80,18 +88,32 @@ type SlotProps<T extends ContextMenuItem> = (props: {
|
|
|
80
88
|
item: T;
|
|
81
89
|
active?: boolean;
|
|
82
90
|
index: number;
|
|
91
|
+
ui: ContextMenu['ui'];
|
|
83
92
|
}) => any;
|
|
84
93
|
export type ContextMenuSlots<A extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>, T extends NestedItem<A> = NestedItem<A>> = {
|
|
85
94
|
'default'(props?: {}): any;
|
|
86
95
|
'item': SlotProps<T>;
|
|
87
96
|
'item-leading': SlotProps<T>;
|
|
88
|
-
'item-label':
|
|
97
|
+
'item-label': (props: {
|
|
98
|
+
item: T;
|
|
99
|
+
active?: boolean;
|
|
100
|
+
index: number;
|
|
101
|
+
}) => any;
|
|
102
|
+
'item-description': (props: {
|
|
103
|
+
item: T;
|
|
104
|
+
active?: boolean;
|
|
105
|
+
index: number;
|
|
106
|
+
}) => any;
|
|
89
107
|
'item-trailing': SlotProps<T>;
|
|
90
108
|
'content-top': (props?: {}) => any;
|
|
91
109
|
'content-bottom': (props?: {}) => any;
|
|
92
|
-
} & DynamicSlots<MergeTypes<T>, '
|
|
110
|
+
} & DynamicSlots<MergeTypes<T>, 'label' | 'description', {
|
|
111
|
+
active?: boolean;
|
|
112
|
+
index: number;
|
|
113
|
+
}> & DynamicSlots<MergeTypes<T>, 'leading' | 'trailing', {
|
|
93
114
|
active?: boolean;
|
|
94
115
|
index: number;
|
|
116
|
+
ui: ContextMenu['ui'];
|
|
95
117
|
}>;
|
|
96
118
|
declare const __VLS_export: <T extends ArrayOrNested<ContextMenuItem>>(__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<{
|
|
97
119
|
props: __VLS_PrettifyLocal<ContextMenuProps<T> & {
|
|
@@ -19,6 +19,7 @@ const props = defineProps({
|
|
|
19
19
|
content: { type: Object, required: false },
|
|
20
20
|
portal: { type: [Boolean, String], required: false, skipCheck: true, default: true },
|
|
21
21
|
labelKey: { type: null, required: false, default: "label" },
|
|
22
|
+
descriptionKey: { type: null, required: false, default: "description" },
|
|
22
23
|
disabled: { type: Boolean, required: false },
|
|
23
24
|
class: { type: null, required: false },
|
|
24
25
|
ui: { type: null, required: false },
|
|
@@ -50,6 +51,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contextMenu |
|
|
|
50
51
|
:items="items"
|
|
51
52
|
:portal="portal"
|
|
52
53
|
:label-key="labelKey"
|
|
54
|
+
:description-key="descriptionKey"
|
|
53
55
|
:checked-icon="checkedIcon"
|
|
54
56
|
:loading-icon="loadingIcon"
|
|
55
57
|
:external-icon="externalIcon"
|