File tree Expand file tree Collapse file tree 8 files changed +15
-16
lines changed Expand file tree Collapse file tree 8 files changed +15
-16
lines changed Original file line number Diff line number Diff line change @@ -84,9 +84,9 @@ const handleClick = (event: Event) => {
8484
8585<template >
8686 <Primitive v-if =" isHref" v-bind =" forwardedProps" @click =" handleClick" >
87- <slot />
87+ <slot :is-href = " true " />
8888 </Primitive >
8989 <component :is =" LinkComponent" v-else v-bind =" forwardedProps" @click =" handleClick" >
90- <slot />
90+ <slot :is-href = " false " />
9191 </component >
9292</template >
Original file line number Diff line number Diff line change @@ -47,13 +47,14 @@ const onClick = async (event: MouseEvent) => {
4747
4848<template >
4949 <Link
50+ v-slot =" { isHref }"
5051 v-bind =" forwardedProps"
5152 :ref =" setItemElement"
5253 :class =" cls"
5354 :data-active =" active ? '' : undefined"
5455 :aria-current =" active ? 'page' : undefined"
5556 @click =" onClick"
5657 >
57- <slot />
58+ <slot :is-href = " isHref " />
5859 </Link >
5960</template >
Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ const cls = computed(() => cn(variants, props.class));
2525 </script >
2626
2727<template >
28- <Link v-bind =" props" :class =" cls" >
29- <slot />
28+ <Link v-slot = " { isHref } " v- bind =" props" :class =" cls" >
29+ <slot :is-href = " isHref " />
3030 </Link >
3131</template >
Original file line number Diff line number Diff line change @@ -66,12 +66,12 @@ const ui = computed(() => ({ ...themeContext?.ui?.value }));
6666 :text-value =" item.textValue"
6767 @select =" emit('select', item, $event)"
6868 >
69- <Link v-bind =" item.linkProps" :disabled =" item.disabled" >
69+ <Link v-slot = " { isHref } " v- bind =" item.linkProps" :disabled =" item.disabled" >
7070 <SMenuItemSlot :icon =" item.icon" :label =" item.label" >
7171 <template v-for =" slotKey in commonSlotKeys " :key =" slotKey " #[slotKey ]>
7272 <slot :name =" slotKey" :item =" item" />
7373 </template >
74- <template #link-icon >
74+ <template v-if = " isHref " #link-icon >
7575 <slot name =" item-link-icon" :item =" item" >
7676 <Icon icon =" lucide:arrow-up-right" :class =" ui.itemLinkIcon" />
7777 </slot >
Original file line number Diff line number Diff line change @@ -47,6 +47,7 @@ const { ui } = useNavigationMenuExtraThemeContext('NavigationMenuOption');
4747 <NavigationMenuItem v-bind =" itemProps" :value =" item.value" >
4848 <NavigationMenuLink
4949 v-if =" !item.children?.length"
50+ v-slot =" { isHref }"
5051 v-bind =" item.linkProps"
5152 :disabled =" item.disabled"
5253 @select =" emit('select', $event)"
@@ -56,7 +57,7 @@ const { ui } = useNavigationMenuExtraThemeContext('NavigationMenuOption');
5657 <template v-for =" slotKey in commonSlotKeys " :key =" slotKey " #[slotKey ]>
5758 <slot :name =" slotKey" :item =" item" />
5859 </template >
59- <template #link-icon >
60+ <template v-if = " isHref " #link-icon >
6061 <slot name =" item-link-icon" :item =" item" >
6162 <Icon icon =" lucide:arrow-up-right" :class =" ui.linkIcon" />
6263 </slot >
Original file line number Diff line number Diff line change @@ -26,7 +26,7 @@ const attrs = useAttrs();
2626
2727const listeners = useForwardListeners (emit );
2828
29- const { size, collapsed, showLinkIcon } = useTreeMenuContext (' TreeMenuItem' );
29+ const { size, collapsed } = useTreeMenuContext (' TreeMenuItem' );
3030
3131const { ui } = useTreeMenuThemeContext (' TreeMenuItem' );
3232
@@ -102,6 +102,7 @@ const onDropdownMenuSelect = (item: TreeMenuBaseOptionData) => {
102102 >
103103 <component
104104 :is =" as"
105+ v-slot =" slotProps"
105106 v-bind =" contentProps"
106107 :class =" ui.itemContent"
107108 :data-link =" isLink ? '' : undefined"
@@ -116,7 +117,7 @@ const onDropdownMenuSelect = (item: TreeMenuBaseOptionData) => {
116117 </Badge >
117118 <span v-else :class =" ui.itemLabel" >{{ label }}</span >
118119 </slot >
119- <Icon v-if =" isLink && showLinkIcon " icon =" lucide:arrow-up-right" :class =" ui.itemLinkIcon" />
120+ <Icon v-if =" isLink && slotProps?.isHref " icon =" lucide:arrow-up-right" :class =" ui.itemLinkIcon" />
120121 <Tag v-if =" tag" v-bind =" tagProps" :size =" size" :content =" tag" :class =" ui.itemTag" />
121122 <DropdownMenu
122123 v-if =" actions?.length"
Original file line number Diff line number Diff line change @@ -3,7 +3,6 @@ import { computed, watch } from 'vue';
33import type { CSSProperties } from ' vue' ;
44import { TreeRoot } from ' @soybeanjs/headless' ;
55import { useControllableState , useForwardListeners , useOmitProps } from ' @soybeanjs/headless/composables' ;
6- import { transformPropsToContext } from ' @soybeanjs/headless/shared' ;
76import { vAutoAnimate } from ' @formkit/auto-animate' ;
87import { mergeSlotVariants , themeSizeMap , themeSizeRatio } from ' @/theme' ;
98import { treeMenuVariants } from ' @/variants/tree-menu' ;
@@ -82,8 +81,7 @@ const size = computed(() => props.size ?? 'md');
8281
8382provideTreeMenuContext ({
8483 collapsed ,
85- size ,
86- ... transformPropsToContext (props , [' showLinkIcon' ])
84+ size
8785});
8886
8987provideTreeMenuThemeContext ({
Original file line number Diff line number Diff line change @@ -2,7 +2,6 @@ import type { ComputedRef, ShallowRef } from 'vue';
22import type {
33 ClassValue ,
44 LinkProps ,
5- PropsToContext ,
65 TreeItemEmits ,
76 TreeItemProps ,
87 TreeRootEmits ,
@@ -91,14 +90,13 @@ export interface TreeMenuProps<T extends TreeMenuOptionData = TreeMenuOptionData
9190 badgeProps ?: Omit < BadgeProps , 'content' > ;
9291 tagProps ?: Omit < TagProps , 'content' > ;
9392 actionMenuProps ?: Omit < DropdownMenuProps , 'items' > ;
94- showLinkIcon ?: boolean ;
9593}
9694
9795export type TreeMenuEmits = TreeRootEmits < false > & {
9896 'update:collapsed' : [ value : boolean ] ;
9997} ;
10098
101- export interface TreeMenuContextParams extends PropsToContext < TreeMenuProps , 'showLinkIcon' > {
99+ export interface TreeMenuContextParams {
102100 collapsed : ShallowRef < boolean | undefined > ;
103101 size ?: ComputedRef < ThemeSize > ;
104102}
You can’t perform that action at this time.
0 commit comments