diff --git a/CHANGELOG.md b/CHANGELOG.md index 98776db8bc088efbbfdd25d9b9e40753161c882e..9032927157239f30d7b9bf1bd4cfb2c2a5805f86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ ## [Unreleased] +### Added + +- 菜单部件支持注入属性,通过菜单逻辑模型配置 + +### Changed + +- 搜索栏识别搜索分组的默认分组配置,未配置则选中第一项分组 + ## [0.7.41-alpha.28] - 2025-09-28 ### Added diff --git a/src/control/app-menu/app-menu.tsx b/src/control/app-menu/app-menu.tsx index 6051caf54399302c07d34e758efdfee237e90b16..27ad1499e0254f7e80e3a96a29e6742672c63ddf 100644 --- a/src/control/app-menu/app-menu.tsx +++ b/src/control/app-menu/app-menu.tsx @@ -29,11 +29,30 @@ import { formatSeparator, IControlProvider, AppMenuController, + ScriptFactory, } from '@ibiz-template/runtime'; import { useRoute } from 'vue-router'; import { MenuDesign } from './custom-menu-design/custom-menu-design'; import './app-menu.scss'; +/** + * @description 绘制成员的attrs + * @param {IAppMenu} model + * @param {IParams} params + * @returns {*} {IParams} + */ +function renderAttrs(model: IAppMenu, params: IParams): IParams { + const attrs: IParams = {}; + model.controlAttributes?.forEach(item => { + if (item.attrName && item.attrValue) { + attrs[item.attrName!] = ScriptFactory.execSingleLine(item.attrValue!, { + ...params, + }); + } + }); + return attrs; +} + /** * 递归生成菜单数据,递给 element 的 Menu 组件 * @@ -737,6 +756,9 @@ export const AppMenuControl = defineComponent({ ellipsis-icon={() => this.ellipsisSvg()} ellipsis={this.menuMode === 'horizontal'} {...this.$attrs} + {...renderAttrs(this.c.model, { + ...this.c.getEventArgs(), + })} > {{ default: () => { diff --git a/src/control/search-bar/search-bar.tsx b/src/control/search-bar/search-bar.tsx index 24dbe26a7b2ab08066bb0c421cee3ff82af55e21..5345c68e902639f7f0389c9a8911c0049c0829ee 100644 --- a/src/control/search-bar/search-bar.tsx +++ b/src/control/search-bar/search-bar.tsx @@ -120,7 +120,8 @@ export const SearchBarControl = defineComponent({ c.model.searchBarGroups && c.model.searchBarGroups?.length > 0 ) { - c.state.selectedGroupItem = c.model.searchBarGroups[0]; + const defaultGroup = c.model.searchBarGroups.find(x => x.defaultGroup); + c.state.selectedGroupItem = defaultGroup || c.model.searchBarGroups[0]; } const filterButtonRef = ref();