perf: menu
parent
32fc4fc7c4
commit
4904fa779f
|
@ -413,9 +413,8 @@ export default defineComponent({
|
||||||
<MenuContextProvider
|
<MenuContextProvider
|
||||||
key={child.key}
|
key={child.key}
|
||||||
overflowDisabled={index > lastVisibleIndex.value}
|
overflowDisabled={index > lastVisibleIndex.value}
|
||||||
>
|
v-slots={{ default: () => child }}
|
||||||
{child}
|
></MenuContextProvider>
|
||||||
</MenuContextProvider>
|
|
||||||
));
|
));
|
||||||
const overflowedIndicator = slots.overflowedIndicator?.() || <EllipsisOutlined />;
|
const overflowedIndicator = slots.overflowedIndicator?.() || <EllipsisOutlined />;
|
||||||
|
|
||||||
|
@ -446,9 +445,8 @@ export default defineComponent({
|
||||||
title={overflowedIndicator}
|
title={overflowedIndicator}
|
||||||
disabled={allVisible}
|
disabled={allVisible}
|
||||||
internalPopupClose={len === 0}
|
internalPopupClose={len === 0}
|
||||||
>
|
v-slots={{ default: () => originOmitItems }}
|
||||||
{originOmitItems}
|
></SubMenu>
|
||||||
</SubMenu>
|
|
||||||
<PathContext>
|
<PathContext>
|
||||||
<SubMenu
|
<SubMenu
|
||||||
eventKey={OVERFLOW_KEY}
|
eventKey={OVERFLOW_KEY}
|
||||||
|
@ -456,9 +454,8 @@ export default defineComponent({
|
||||||
title={overflowedIndicator}
|
title={overflowedIndicator}
|
||||||
disabled={allVisible}
|
disabled={allVisible}
|
||||||
internalPopupClose={len === 0}
|
internalPopupClose={len === 0}
|
||||||
>
|
v-slots={{ default: () => originOmitItems }}
|
||||||
{originOmitItems}
|
></SubMenu>
|
||||||
</SubMenu>
|
|
||||||
</PathContext>
|
</PathContext>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
|
@ -230,15 +230,8 @@ export default defineComponent({
|
||||||
const subMenuTriggerModeRef = computed(() =>
|
const subMenuTriggerModeRef = computed(() =>
|
||||||
triggerModeRef.value === 'horizontal' ? 'vertical' : triggerModeRef.value,
|
triggerModeRef.value === 'horizontal' ? 'vertical' : triggerModeRef.value,
|
||||||
);
|
);
|
||||||
return () => {
|
|
||||||
if (isMeasure) {
|
|
||||||
if (!hasKey) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return slots.default?.();
|
|
||||||
}
|
|
||||||
const subMenuPrefixClsValue = subMenuPrefixCls.value;
|
|
||||||
const baseTitleNode = () => {
|
const baseTitleNode = () => {
|
||||||
|
const subMenuPrefixClsValue = subMenuPrefixCls.value;
|
||||||
const icon = getPropsSlot(slots, props, 'icon');
|
const icon = getPropsSlot(slots, props, 'icon');
|
||||||
const expandIcon = props.expandIcon || slots.expandIcon || menuExpandIcon.value;
|
const expandIcon = props.expandIcon || slots.expandIcon || menuExpandIcon.value;
|
||||||
const title = renderTitle(getPropsSlot(slots, props, 'title'), icon);
|
const title = renderTitle(getPropsSlot(slots, props, 'title'), icon);
|
||||||
|
@ -268,6 +261,15 @@ export default defineComponent({
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
return () => {
|
||||||
|
if (isMeasure) {
|
||||||
|
if (!hasKey) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return slots.default?.();
|
||||||
|
}
|
||||||
|
const subMenuPrefixClsValue = subMenuPrefixCls.value;
|
||||||
|
|
||||||
let titleNode = () => null;
|
let titleNode = () => null;
|
||||||
if (!overflowDisabled.value && mode.value !== 'inline') {
|
if (!overflowDisabled.value && mode.value !== 'inline') {
|
||||||
titleNode = () => (
|
titleNode = () => (
|
||||||
|
@ -282,9 +284,11 @@ export default defineComponent({
|
||||||
v-slots={{
|
v-slots={{
|
||||||
popup: () => (
|
popup: () => (
|
||||||
<MenuContextProvider mode={subMenuTriggerModeRef.value} isRootMenu={false}>
|
<MenuContextProvider mode={subMenuTriggerModeRef.value} isRootMenu={false}>
|
||||||
<SubMenuList id={popupId} ref={popupRef}>
|
<SubMenuList
|
||||||
{slots.default?.()}
|
id={popupId}
|
||||||
</SubMenuList>
|
ref={popupRef}
|
||||||
|
v-slots={{ default: slots.default }}
|
||||||
|
></SubMenuList>
|
||||||
</MenuContextProvider>
|
</MenuContextProvider>
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
|
@ -295,7 +299,7 @@ export default defineComponent({
|
||||||
} else {
|
} else {
|
||||||
// 包裹一层,保持结构一致,防止动画丢失
|
// 包裹一层,保持结构一致,防止动画丢失
|
||||||
// https://github.com/vueComponent/ant-design-vue/issues/4325
|
// https://github.com/vueComponent/ant-design-vue/issues/4325
|
||||||
titleNode = () => <PopupTrigger>{baseTitleNode()}</PopupTrigger>;
|
titleNode = () => <PopupTrigger v-slots={{ default: baseTitleNode }}></PopupTrigger>;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<MenuContextProvider mode={renderMode.value}>
|
<MenuContextProvider mode={renderMode.value}>
|
||||||
|
@ -324,9 +328,12 @@ export default defineComponent({
|
||||||
|
|
||||||
{/* Inline mode */}
|
{/* Inline mode */}
|
||||||
{!overflowDisabled.value && (
|
{!overflowDisabled.value && (
|
||||||
<InlineSubMenuList id={popupId} open={open.value} keyPath={keysPath.value}>
|
<InlineSubMenuList
|
||||||
{slots.default?.()}
|
id={popupId}
|
||||||
</InlineSubMenuList>
|
open={open.value}
|
||||||
|
keyPath={keysPath.value}
|
||||||
|
v-slots={{ default: slots.default }}
|
||||||
|
></InlineSubMenuList>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue