feat(plugin-layout): 菜单支持配置默认展开等

This commit is contained in:
wanchun 2022-04-11 19:19:07 +08:00
parent 9b03236654
commit 3fa247d7fe
3 changed files with 68 additions and 4 deletions

View File

@ -20,7 +20,7 @@
{ {
"dependencies": { "dependencies": {
"@fesjs/fes": "^2.0.0", "@fesjs/fes": "^2.0.0",
"@fesjs/plugin-layout": "^2.0.0" "@fesjs/plugin-layout": "^4.0.0"
}, },
} }
``` ```
@ -115,7 +115,12 @@ export default {
name: 'store' name: 'store'
}, { }, {
name: 'simpleList' name: 'simpleList'
}] }],
menuConfig: {
defaultExpandAll: false,
expandedKeys: [],
accordion: false
}
}, },
``` ```
@ -219,7 +224,19 @@ export default {
``` ```
- **children**:子菜单配置。 - **children**:子菜单配置。
#### menusConfig
- **类型**`Object`
- **默认值**`{}`
- **详情**:菜单的配置:
- **defaultExpandAll**:是否默认展开全部菜单。
- **expandedKeys**:配置默认展开的菜单,需要传子项是菜单路径的数组。
- **accordion**:是否只保持一个子菜单的展开。
### 运行时配置 ### 运行时配置
`app.js` 中配置: `app.js` 中配置:
@ -231,6 +248,38 @@ export const layout = {
``` ```
#### menus
- **类型**`(defaultMenus: [] )=> Ref | []`
- **详情**:运行时修改菜单,入参是默认菜单配置(.fes.js中的menu配置需要返回一个`Ref`或者数组。
```js
import { ClusterOutlined } from '@fesjs/fes-design/icon'
export const layout = layoutConfig => ({
...layoutConfig,
customHeader: <UserCenter />,
menus: (defaultMenuData) => {
const menusRef = ref(defaultMenuData);
watch(() => layoutConfig.initialState.userName, () => {
menusRef.value = [{
name: 'store',
icon: <ClusterOutlined />
}];
});
return menusRef;
}
});
```
`layoutConfig.initialState``beforeRender.action`执行后创建的应用初始状态数据。
如果菜单需要根据某些状态动态改变,则返回`Ref`,否则只需要返回数组。
:::tip
在运行时配置菜单中的icon需要传组件本身而不是组件的名称。
:::tip
#### header #### header
- **类型**`String` - **类型**`String`

View File

@ -20,6 +20,9 @@
:collapsed="collapsedRef" :collapsed="collapsedRef"
mode="vertical" mode="vertical"
:inverted="theme === 'dark'" :inverted="theme === 'dark'"
:expandedKeys="menuConfig?.expandedKeys"
:defaultExpandAll="menuConfig?.defaultExpandAll"
:accordion="menuConfig?.accordion"
/> />
</f-aside> </f-aside>
<f-layout <f-layout
@ -70,6 +73,9 @@
:menus="menus" :menus="menus"
mode="horizontal" mode="horizontal"
:inverted="theme === 'dark'" :inverted="theme === 'dark'"
:expandedKeys="menuConfig?.expandedKeys"
:defaultExpandAll="menuConfig?.defaultExpandAll"
:accordion="menuConfig?.accordion"
/> />
<div class="layout-header-custom"> <div class="layout-header-custom">
<slot name="customHeader"></slot> <slot name="customHeader"></slot>
@ -124,6 +130,9 @@
:menus="menus" :menus="menus"
:collapsed="collapsedRef" :collapsed="collapsedRef"
mode="vertical" mode="vertical"
:expandedKeys="menuConfig?.expandedKeys"
:defaultExpandAll="menuConfig?.defaultExpandAll"
:accordion="menuConfig?.accordion"
/> />
</f-aside> </f-aside>
<f-layout <f-layout
@ -208,7 +217,10 @@ export default {
type: Number, type: Number,
default: 200 default: 200
}, },
footer: String footer: String,
menuConfig: {
type: Object
}
}, },
setup(props) { setup(props) {
const headerRef = ref(); const headerRef = ref();

View File

@ -72,7 +72,10 @@ export default {
{ {
name: 'pinia' name: 'pinia'
} }
] ],
menuConfig: {
defaultExpandAll: false
}
}, },
locale: { locale: {
legacy: true legacy: true