Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-vue-admin
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-vue-admin
Commits
de25557f
提交
de25557f
authored
12月 17, 2020
作者:
vben
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(menu): fix scrillbar not work
上级
689425e4
显示空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
128 行增加
和
81 行删除
+128
-81
CHANGELOG.zh_CN.md
CHANGELOG.zh_CN.md
+6
-0
BasicMenu.vue
src/components/Menu/src/BasicMenu.vue
+2
-1
index.vue
src/layouts/default/header/index.vue
+17
-1
index.tsx
src/layouts/default/menu/index.tsx
+7
-1
SettingDrawer.tsx
src/layouts/default/setting/SettingDrawer.tsx
+15
-5
enum.ts
src/layouts/default/setting/enum.ts
+8
-2
handler.ts
src/layouts/default/setting/handler.ts
+1
-0
LayoutSider.vue
src/layouts/default/sider/LayoutSider.vue
+68
-57
index.vue
src/layouts/default/sider/index.vue
+1
-1
useLayoutSider.ts
src/layouts/default/sider/useLayoutSider.ts
+3
-13
没有找到文件。
CHANGELOG.zh_CN.md
浏览文件 @
de25557f
## Wip
### 🐛 Bug Fixes
-
修复混合模式下滚动条丢失问题
## 2.0.0-rc.14 (2020-12-15)
### ✨ Features
...
...
src/components/Menu/src/BasicMenu.vue
浏览文件 @
de25557f
...
...
@@ -90,9 +90,10 @@
});
const
getMenuClass
=
computed
(()
=>
{
const
align
=
props
.
isHorizontal
&&
unref
(
getSplit
)
?
'start'
:
unref
(
getTopMenuAlign
);
return
[
prefixCls
,
`justify-
${
unref
(
getTopMenuAlign
)
}
`
,
`justify-
${
align
}
`
,
{
[
`
${
prefixCls
}
--hide-title`
]:
!
unref
(
showTitle
),
[
`
${
prefixCls
}
--collapsed-show-title`
]:
props
.
collapsedShowTitle
,
...
...
src/layouts/default/header/index.vue
浏览文件 @
de25557f
...
...
@@ -7,6 +7,7 @@
v-if=
"getShowHeaderLogo || getIsMobile"
:class=
"`$
{prefixCls}-logo`"
:theme="getHeaderTheme"
:style="getLogoWidth"
/>
<LayoutTrigger
v-if=
"(getShowContent && getShowHeaderTrigger && !getSplit) || getIsMobile"
...
...
@@ -103,7 +104,13 @@
},
setup
(
props
)
{
const
{
prefixCls
}
=
useDesign
(
'layout-header'
);
const
{
getShowTopMenu
,
getShowHeaderTrigger
,
getSplit
}
=
useMenuSetting
();
const
{
getShowTopMenu
,
getShowHeaderTrigger
,
getSplit
,
getIsMixMode
,
getMenuWidth
,
}
=
useMenuSetting
();
const
{
getShowLocale
}
=
useLocaleSetting
();
const
{
getUseErrorHandle
}
=
useRootSetting
();
...
...
@@ -131,6 +138,14 @@
];
});
const
getLogoWidth
=
computed
(()
=>
{
if
(
!
unref
(
getIsMixMode
))
{
return
{};
}
const
width
=
unref
(
getMenuWidth
)
<
180
?
180
:
unref
(
getMenuWidth
);
return
{
width
:
`
${
width
}
px`
};
});
const
getSplitType
=
computed
(()
=>
{
return
unref
(
getSplit
)
?
MenuSplitTyeEnum
.
TOP
:
MenuSplitTyeEnum
.
NONE
;
});
...
...
@@ -157,6 +172,7 @@
getShowNotice
,
getUseLockPage
,
getUseErrorHandle
,
getLogoWidth
,
};
},
});
...
...
src/layouts/default/menu/index.tsx
浏览文件 @
de25557f
...
...
@@ -47,6 +47,7 @@ export default defineComponent({
getMenuTheme
,
getCollapsed
,
getAccordion
,
getIsHorizontal
,
getIsSidebarType
,
}
=
useMenuSetting
();
const
{
getShowLogo
}
=
useRootSetting
();
...
...
@@ -66,7 +67,12 @@ export default defineComponent({
const
getIsShowLogo
=
computed
(()
=>
unref
(
getShowLogo
)
&&
unref
(
getIsSidebarType
));
const
getUseScroll
=
computed
(()
=>
{
return
unref
(
getIsSidebarType
)
||
props
.
splitType
===
MenuSplitTyeEnum
.
LEFT
;
return
(
!
unref
(
getIsHorizontal
)
&&
(
unref
(
getIsSidebarType
)
||
props
.
splitType
===
MenuSplitTyeEnum
.
LEFT
||
props
.
splitType
===
MenuSplitTyeEnum
.
NONE
)
);
});
const
getWrapperStyle
=
computed
(
...
...
src/layouts/default/setting/SettingDrawer.tsx
浏览文件 @
de25557f
...
...
@@ -10,7 +10,7 @@ import {
InputNumberItem
,
}
from
'./components'
;
import
{
MenuTypeEnum
}
from
'/@/enums/menuEnum'
;
import
{
MenuTypeEnum
,
TriggerEnum
}
from
'/@/enums/menuEnum'
;
import
{
useRootSetting
}
from
'/@/hooks/setting/useRootSetting'
;
import
{
useMenuSetting
}
from
'/@/hooks/setting/useMenuSetting'
;
...
...
@@ -25,7 +25,7 @@ import {
HandlerEnum
,
contentModeOptions
,
topMenuAlignOptions
,
m
enuTriggerOptions
,
getM
enuTriggerOptions
,
routerTransitionOptions
,
menuTypeList
,
}
from
'./enum'
;
...
...
@@ -134,6 +134,14 @@ export default defineComponent({
* @description:
*/
function
renderFeatures
()
{
let
triggerDef
=
unref
(
getTrigger
);
const
triggerOptions
=
getMenuTriggerOptions
(
unref
(
getSplit
));
const
some
=
triggerOptions
.
some
((
item
)
=>
item
.
value
===
triggerDef
);
if
(
!
some
)
{
triggerDef
=
TriggerEnum
.
FOOTER
;
}
return
(
<>
<
SwitchItem
...
...
@@ -183,13 +191,15 @@ export default defineComponent({
event=
{
HandlerEnum
.
MENU_TOP_ALIGN
}
def=
{
unref
(
getTopMenuAlign
)
}
options=
{
topMenuAlignOptions
}
disabled=
{
!
unref
(
getShowHeader
)
||
(
!
unref
(
getIsTopMenu
)
&&
!
unref
(
getSplit
))
}
disabled=
{
!
unref
(
getShowHeader
)
||
unref
(
getSplit
)
||
(
!
unref
(
getIsTopMenu
)
&&
!
unref
(
getSplit
))
}
/>
<
SelectItem
title=
{
t
(
'layout.setting.menuCollapseButton'
)
}
event=
{
HandlerEnum
.
MENU_TRIGGER
}
def=
{
unref
(
getTrigger
)
}
options=
{
menuT
riggerOptions
}
def=
{
triggerDef
}
options=
{
t
riggerOptions
}
disabled=
{
!
unref
(
getShowMenuRef
)
}
/>
<
SelectItem
...
...
src/layouts/default/setting/enum.ts
浏览文件 @
de25557f
...
...
@@ -76,7 +76,8 @@ export const topMenuAlignOptions = [
},
];
export
const
menuTriggerOptions
=
[
export
const
getMenuTriggerOptions
=
(
hideTop
:
boolean
)
=>
{
return
[
{
value
:
TriggerEnum
.
NONE
,
label
:
t
(
'layout.setting.menuTriggerNone'
),
...
...
@@ -85,11 +86,16 @@ export const menuTriggerOptions = [
value
:
TriggerEnum
.
FOOTER
,
label
:
t
(
'layout.setting.menuTriggerBottom'
),
},
...(
hideTop
?
[]
:
[
{
value
:
TriggerEnum
.
HEADER
,
label
:
t
(
'layout.setting.menuTriggerTop'
),
},
];
]),
];
};
export
const
routerTransitionOptions
=
[
RouterTransitionEnum
.
ZOOM_FADE
,
...
...
src/layouts/default/setting/handler.ts
浏览文件 @
de25557f
...
...
@@ -25,6 +25,7 @@ export function handler(event: HandlerEnum, value: any): DeepPartial<ProjectConf
type
,
collapsed
:
false
,
show
:
true
,
hidden
:
false
,
...
splitOpt
,
},
};
...
...
src/layouts/default/sider/LayoutSider.
tsx
→
src/layouts/default/sider/LayoutSider.
vue
浏览文件 @
de25557f
import
'./index.less'
;
import
{
computed
,
defineComponent
,
ref
,
unref
,
CSSProperties
}
from
'vue'
;
import
{
Layout
}
from
'ant-design-vue'
;
import
LayoutMenu
from
'../menu'
;
import
{
MenuModeEnum
,
MenuSplitTyeEnum
}
from
'/@/enums/menuEnum'
;
import
{
useMenuSetting
}
from
'/@/hooks/setting/useMenuSetting'
;
import
{
useTrigger
,
useDragLine
,
useSiderEvent
}
from
'./useLayoutSider'
;
import
{
useAppInject
}
from
'/@/hooks/web/useAppInject'
;
import
{
useDesign
}
from
'/@/hooks/web/useDesign'
;
import
DragBar
from
'./DragBar.vue'
;
export
default
defineComponent
({
<
template
>
<div
v-if=
"getMenuFixed && !getIsMobile"
:style=
"getHiddenDomStyle"
:class=
"
{ hidden: !showClassSideBarRef }"
/>
<Sider
ref=
"sideRef"
breakpoint=
"lg"
collapsible
:class=
"getSiderClass"
:width=
"getMenuWidth"
:collapsed=
"getIsMobile ? false : getCollapsed"
:collapsedWidth=
"getCollapsedWidth"
:theme=
"getMenuTheme"
@
collapse=
"onCollapseChange"
@
breakpoint=
"onBreakpointChange"
v-bind=
"getTriggerAttr"
>
<template
#
trigger
v-if=
"getShowTrigger"
>
<LayoutTrigger
/>
</
template
>
<LayoutMenu
:theme=
"getMenuTheme"
:menuMode=
"getMode"
:splitType=
"getSplitType"
/>
<DragBar
ref=
"dragBarRef"
/>
</Sider>
</template>
<
script
lang=
"ts"
>
import
{
computed
,
defineComponent
,
ref
,
unref
,
CSSProperties
}
from
'vue'
;
import
{
Layout
}
from
'ant-design-vue'
;
import
LayoutMenu
from
'../menu'
;
import
LayoutTrigger
from
'/@/layouts/default/trigger/index.vue'
;
import
{
MenuModeEnum
,
MenuSplitTyeEnum
}
from
'/@/enums/menuEnum'
;
import
{
useMenuSetting
}
from
'/@/hooks/setting/useMenuSetting'
;
import
{
useTrigger
,
useDragLine
,
useSiderEvent
}
from
'./useLayoutSider'
;
import
{
useAppInject
}
from
'/@/hooks/web/useAppInject'
;
import
{
useDesign
}
from
'/@/hooks/web/useDesign'
;
import
DragBar
from
'./DragBar.vue'
;
export
default
defineComponent
({
name
:
'LayoutSideBar'
,
components
:
{
Sider
:
Layout
.
Sider
,
LayoutMenu
,
DragBar
,
LayoutTrigger
},
setup
()
{
const
dragBarRef
=
ref
<
ElRef
>
(
null
);
const
sideRef
=
ref
<
ElRef
>
(
null
);
...
...
@@ -34,7 +61,7 @@ export default defineComponent({
const
{
getIsMobile
}
=
useAppInject
();
const
{
getTriggerAttr
,
getTriggerSlot
}
=
useTrigger
(
getIsMobile
);
const
{
getTriggerAttr
,
getShowTrigger
}
=
useTrigger
(
getIsMobile
);
useDragLine
(
sideRef
,
dragBarRef
);
...
...
@@ -77,45 +104,29 @@ export default defineComponent({
}
);
function
renderDefault
()
{
return
(
<>
<
LayoutMenu
theme=
{
unref
(
getMenuTheme
)
}
menuMode=
{
unref
(
getMode
)
}
splitType=
{
unref
(
getSplitType
)
}
/>
<
DragBar
ref=
{
dragBarRef
}
/>
</>
);
}
return
()
=>
{
return
(
<>
{
unref
(
getMenuFixed
)
&&
!
unref
(
getIsMobile
)
&&
(
<
div
style=
{
unref
(
getHiddenDomStyle
)
}
class=
{
{
hidden
:
!
unref
(
showClassSideBarRef
)
}
}
/>
)
}
<
Layout
.
Sider
ref=
{
sideRef
}
breakpoint=
"lg"
collapsible
class=
{
unref
(
getSiderClass
)
}
width=
{
unref
(
getMenuWidth
)
}
collapsed=
{
unref
(
getIsMobile
)
?
false
:
unref
(
getCollapsed
)
}
collapsedWidth=
{
unref
(
getCollapsedWidth
)
}
theme=
{
unref
(
getMenuTheme
)
}
onCollapse=
{
onCollapseChange
}
onBreakpoint=
{
onBreakpointChange
}
{
...
unref
(
getTriggerAttr
)}
>
{
{
...
unref
(
getTriggerSlot
),
default
:
()
=>
renderDefault
(),
}
}
</
Layout
.
Sider
>
</>
);
return
{
prefixCls
,
sideRef
,
dragBarRef
,
getIsMobile
,
getHiddenDomStyle
,
getSiderClass
,
getTriggerAttr
,
getCollapsedWidth
,
getMenuFixed
,
showClassSideBarRef
,
getMenuWidth
,
getCollapsed
,
getMenuTheme
,
onBreakpointChange
,
getMode
,
getSplitType
,
onCollapseChange
,
getShowTrigger
,
};
},
});
});
</
script
>
<
style
lang=
"less"
>
@import
'./index.less'
;
</
style
>
src/layouts/default/sider/index.vue
浏览文件 @
de25557f
...
...
@@ -15,7 +15,7 @@
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
;
import
Sider
from
'./LayoutSider'
;
import
Sider
from
'./LayoutSider
.vue
'
;
import
{
Drawer
}
from
'ant-design-vue'
;
import
{
useAppInject
}
from
'/@/hooks/web/useAppInject'
;
import
{
useMenuSetting
}
from
'/@/hooks/setting/useMenuSetting'
;
...
...
src/layouts/default/sider/useLayoutSider.ts
x
→
src/layouts/default/sider/useLayoutSider.ts
浏览文件 @
de25557f
import
type
{
Ref
}
from
'vue'
;
import
{
computed
,
unref
,
onMounted
,
nextTick
,
ref
}
from
'vue'
;
import
LayoutTrigger
from
'/@/layouts/default/trigger/index.vue'
;
import
{
TriggerEnum
}
from
'/@/enums/menuEnum'
;
...
...
@@ -45,7 +44,7 @@ export function useSiderEvent() {
export
function
useTrigger
(
getIsMobile
:
Ref
<
boolean
>
)
{
const
{
getTrigger
,
getSplit
}
=
useMenuSetting
();
const
s
howTrigger
=
computed
(()
=>
{
const
getS
howTrigger
=
computed
(()
=>
{
const
trigger
=
unref
(
getTrigger
);
return
(
...
...
@@ -56,7 +55,7 @@ export function useTrigger(getIsMobile: Ref<boolean>) {
});
const
getTriggerAttr
=
computed
(()
=>
{
if
(
unref
(
s
howTrigger
))
{
if
(
unref
(
getS
howTrigger
))
{
return
{};
}
return
{
...
...
@@ -64,16 +63,7 @@ export function useTrigger(getIsMobile: Ref<boolean>) {
};
});
const
getTriggerSlot
=
computed
(()
=>
{
if
(
unref
(
showTrigger
))
{
return
{
trigger
:
()
=>
<
LayoutTrigger
/>,
};
}
return
{};
});
return
{
getTriggerAttr
,
getTriggerSlot
};
return
{
getTriggerAttr
,
getShowTrigger
};
}
/**
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论