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": {
"@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: 'simpleList'
}]
}],
menuConfig: {
defaultExpandAll: false,
expandedKeys: [],
accordion: false
}
},
```
@ -219,7 +224,19 @@ export default {
```
- **children**:子菜单配置。
#### menusConfig
- **类型**`Object`
- **默认值**`{}`
- **详情**:菜单的配置:
- **defaultExpandAll**:是否默认展开全部菜单。
- **expandedKeys**:配置默认展开的菜单,需要传子项是菜单路径的数组。
- **accordion**:是否只保持一个子菜单的展开。
### 运行时配置
`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
- **类型**`String`

View File

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

View File

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