@ibiz-template/vue3-components 0.7.41-alpha.3 → 0.7.41-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chart-8QfxarWf.js +1 -0
- package/dist/index-u5jvzY6s.js +4 -0
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/{wang-editor-F-NQHCVT.js → wang-editor--AXyy3P_.js} +1 -1
- package/dist/{xlsx-util-0wARAx2L.js → xlsx-util-GVd_ca5q.js} +1 -1
- package/es/control/app-menu/app-menu.css +1 -1
- package/es/control/chart/chart.mjs +1 -1
- package/es/control/data-view/data-view.mjs +2 -2
- package/es/control/grid/grid/grid-control.util.mjs +1 -1
- package/es/control/grid/grid/grid.mjs +1 -1
- package/es/control/grid/row-edit-popover/use-row-edit-popover.mjs +1 -1
- package/es/control/list/list.mjs +2 -2
- package/es/control/tree/tree.d.ts +2 -1
- package/es/control/tree/tree.mjs +4 -4
- package/es/control/tree-grid-ex/use-row-edit-popover.mjs +1 -1
- package/es/editor/slider/ibiz-slider/ibiz-slider.mjs +2 -2
- package/es/locale/en/index.d.ts +6 -0
- package/es/locale/zh-CN/index.d.ts +6 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.controller.d.ts +10 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.controller.mjs +17 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.d.ts +45 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.mjs +56 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.provider.d.ts +7 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.provider.mjs +21 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/index.d.ts +5 -0
- package/es/panel-component/app-extend-menu/bottom-side-menu/index.mjs +16 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.css +1 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.d.ts +134 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.mjs +77 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.controller.d.ts +149 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.controller.mjs +258 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.state.d.ts +27 -0
- package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.state.mjs +28 -0
- package/es/panel-component/app-extend-menu/index.d.ts +5 -0
- package/es/panel-component/app-extend-menu/index.mjs +18 -0
- package/es/panel-component/app-extend-menu/left-side-menu/index.d.ts +5 -0
- package/es/panel-component/app-extend-menu/left-side-menu/index.mjs +16 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.controller.d.ts +10 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.controller.mjs +17 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.d.ts +45 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.mjs +56 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.provider.d.ts +7 -0
- package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.provider.mjs +21 -0
- package/es/panel-component/app-extend-menu/right-side-menu/index.d.ts +5 -0
- package/es/panel-component/app-extend-menu/right-side-menu/index.mjs +16 -0
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.controller.d.ts +10 -0
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.controller.mjs +17 -0
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -0
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.d.ts +45 -0
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.mjs +56 -0
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.provider.d.ts +7 -0
- package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.provider.mjs +21 -0
- package/es/panel-component/app-extend-menu/top-side-menu/index.d.ts +5 -0
- package/es/panel-component/app-extend-menu/top-side-menu/index.mjs +16 -0
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.controller.d.ts +10 -0
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.controller.mjs +17 -0
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -0
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.d.ts +45 -0
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.mjs +56 -0
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.provider.d.ts +7 -0
- package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.provider.mjs +21 -0
- package/es/panel-component/index.mjs +2 -0
- package/es/view-engine/index-view.engine.mjs +1 -1
- package/es/view-engine/opt-view.engine.d.ts +6 -0
- package/es/view-engine/opt-view.engine.mjs +12 -0
- package/lib/control/app-menu/app-menu.css +1 -1
- package/lib/control/chart/chart.cjs +1 -1
- package/lib/control/data-view/data-view.cjs +2 -2
- package/lib/control/grid/grid/grid-control.util.cjs +1 -1
- package/lib/control/grid/grid/grid.cjs +1 -1
- package/lib/control/grid/row-edit-popover/use-row-edit-popover.cjs +1 -1
- package/lib/control/list/list.cjs +2 -2
- package/lib/control/tree/tree.cjs +3 -3
- package/lib/control/tree-grid-ex/use-row-edit-popover.cjs +1 -1
- package/lib/editor/slider/ibiz-slider/ibiz-slider.cjs +2 -2
- package/lib/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.cjs +58 -0
- package/lib/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.controller.cjs +19 -0
- package/lib/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -0
- package/lib/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.provider.cjs +23 -0
- package/lib/panel-component/app-extend-menu/bottom-side-menu/index.cjs +20 -0
- package/lib/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.cjs +79 -0
- package/lib/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.css +1 -0
- package/lib/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.controller.cjs +260 -0
- package/lib/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.state.cjs +30 -0
- package/lib/panel-component/app-extend-menu/index.cjs +22 -0
- package/lib/panel-component/app-extend-menu/left-side-menu/index.cjs +20 -0
- package/lib/panel-component/app-extend-menu/left-side-menu/left-side-menu.cjs +58 -0
- package/lib/panel-component/app-extend-menu/left-side-menu/left-side-menu.controller.cjs +19 -0
- package/lib/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -0
- package/lib/panel-component/app-extend-menu/left-side-menu/left-side-menu.provider.cjs +23 -0
- package/lib/panel-component/app-extend-menu/right-side-menu/index.cjs +20 -0
- package/lib/panel-component/app-extend-menu/right-side-menu/right-side-menu.cjs +58 -0
- package/lib/panel-component/app-extend-menu/right-side-menu/right-side-menu.controller.cjs +19 -0
- package/lib/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -0
- package/lib/panel-component/app-extend-menu/right-side-menu/right-side-menu.provider.cjs +23 -0
- package/lib/panel-component/app-extend-menu/top-side-menu/index.cjs +20 -0
- package/lib/panel-component/app-extend-menu/top-side-menu/top-side-menu.cjs +58 -0
- package/lib/panel-component/app-extend-menu/top-side-menu/top-side-menu.controller.cjs +19 -0
- package/lib/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -0
- package/lib/panel-component/app-extend-menu/top-side-menu/top-side-menu.provider.cjs +23 -0
- package/lib/panel-component/index.cjs +2 -0
- package/lib/view-engine/index-view.engine.cjs +1 -1
- package/lib/view-engine/opt-view.engine.cjs +12 -0
- package/package.json +6 -6
- package/dist/chart-GgAfcR6o.js +0 -1
- package/dist/index-wTJRDY6L.js +0 -4
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createTextVNode, createVNode, defineComponent } from 'vue';
|
|
2
|
+
import { useNamespace } from '@ibiz-template/vue3-util';
|
|
3
|
+
import './common-extend-menu.css';
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
const CommonExtendMenu = /* @__PURE__ */ defineComponent({
|
|
7
|
+
name: "IBizCommonExtendMenu",
|
|
8
|
+
props: {
|
|
9
|
+
/**
|
|
10
|
+
* @description 绘制模式,'BUTTON' | 'MENU': 按钮态(仅识别一层) | 常规菜单态
|
|
11
|
+
*/
|
|
12
|
+
renderMode: {
|
|
13
|
+
type: String,
|
|
14
|
+
required: true
|
|
15
|
+
},
|
|
16
|
+
/**
|
|
17
|
+
* @description 菜单项数据
|
|
18
|
+
*/
|
|
19
|
+
items: {
|
|
20
|
+
type: Object,
|
|
21
|
+
required: true
|
|
22
|
+
},
|
|
23
|
+
/**
|
|
24
|
+
* @description 菜单项权限数据
|
|
25
|
+
*/
|
|
26
|
+
menuItemsState: {
|
|
27
|
+
type: Object,
|
|
28
|
+
required: true
|
|
29
|
+
},
|
|
30
|
+
/**
|
|
31
|
+
* @description 菜单项适配器集合
|
|
32
|
+
*/
|
|
33
|
+
providers: {
|
|
34
|
+
type: Object,
|
|
35
|
+
required: true
|
|
36
|
+
},
|
|
37
|
+
/**
|
|
38
|
+
* @description 菜单方向
|
|
39
|
+
*/
|
|
40
|
+
position: {
|
|
41
|
+
type: String,
|
|
42
|
+
required: true
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* @description 菜单布局模式,现阶段仅需识别FLEX(flex布局)和BORDER(边缘布局)
|
|
46
|
+
*/
|
|
47
|
+
layoutMode: {
|
|
48
|
+
type: String,
|
|
49
|
+
default: "FLEX"
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* @description 菜单布局容器模型(按钮形态才识别)
|
|
53
|
+
*/
|
|
54
|
+
layout: {
|
|
55
|
+
type: Object
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
emits: {
|
|
59
|
+
/**
|
|
60
|
+
* @description 项点击事件
|
|
61
|
+
*/
|
|
62
|
+
menuItemClick: (item, event) => true
|
|
63
|
+
},
|
|
64
|
+
setup(props) {
|
|
65
|
+
const ns = useNamespace("common-extend-menu");
|
|
66
|
+
return {
|
|
67
|
+
ns
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
render() {
|
|
71
|
+
return createVNode("div", {
|
|
72
|
+
"class": this.ns.b()
|
|
73
|
+
}, [this.position, createTextVNode("\u901A\u7528\u83DC\u5355")]);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
export { CommonExtendMenu };
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { IAppMenuItemProvider, IAppService, IViewController, PanelItemController } from '@ibiz-template/runtime';
|
|
2
|
+
import { IAppMenu, IAppMenuItem, IPanelRawItem } from '@ibiz/model-core';
|
|
3
|
+
import { ExtendMenuBase } from './extend-menu-base.state';
|
|
4
|
+
/**
|
|
5
|
+
* @description 扩展菜单状态控制器基类
|
|
6
|
+
* @export
|
|
7
|
+
* @class ExtendMenuBaseController
|
|
8
|
+
* @extends {PanelItemController<IPanelRawItem>}
|
|
9
|
+
*/
|
|
10
|
+
export declare class ExtendMenuBaseController extends PanelItemController<IPanelRawItem> {
|
|
11
|
+
/**
|
|
12
|
+
* @description 状态对象
|
|
13
|
+
* @type {ExtendMenuBase}
|
|
14
|
+
* @memberof AppSwitchController
|
|
15
|
+
*/
|
|
16
|
+
state: ExtendMenuBase;
|
|
17
|
+
/**
|
|
18
|
+
* @description 自定义补充参数
|
|
19
|
+
* @type {IData}
|
|
20
|
+
* @memberof ExtendMenuBaseController
|
|
21
|
+
*/
|
|
22
|
+
rawItemParams: IData;
|
|
23
|
+
/**
|
|
24
|
+
* @description 当前菜单名称
|
|
25
|
+
* @protected
|
|
26
|
+
* @type {string}
|
|
27
|
+
* @memberof ExtendMenuBaseController
|
|
28
|
+
*/
|
|
29
|
+
protected appMenuName: string;
|
|
30
|
+
/**
|
|
31
|
+
* @description 菜单模型
|
|
32
|
+
* @protected
|
|
33
|
+
* @type {(IAppMenu | undefined)}
|
|
34
|
+
* @memberof ExtendMenuBaseController
|
|
35
|
+
*/
|
|
36
|
+
appMenu: IAppMenu | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* @description 当前应用
|
|
39
|
+
* @protected
|
|
40
|
+
* @type {IAppService}
|
|
41
|
+
* @memberof ExtendMenuBaseController
|
|
42
|
+
*/
|
|
43
|
+
protected app: IAppService;
|
|
44
|
+
/**
|
|
45
|
+
* @description 菜单项适配器集合
|
|
46
|
+
* @type {{ [key: string]: IAppMenuItemProvider }}
|
|
47
|
+
* @memberof ExtendMenuBaseController
|
|
48
|
+
*/
|
|
49
|
+
itemProviders: {
|
|
50
|
+
[key: string]: IAppMenuItemProvider;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* @description 所有菜单项,平铺开
|
|
54
|
+
* @type {IAppMenuItem[]}
|
|
55
|
+
* @memberof ExtendMenuBaseController
|
|
56
|
+
*/
|
|
57
|
+
allAppMenuItems: IAppMenuItem[];
|
|
58
|
+
/**
|
|
59
|
+
* @description 获取当前视图
|
|
60
|
+
* @readonly
|
|
61
|
+
* @type {IViewController}
|
|
62
|
+
* @memberof ExtendMenuBaseController
|
|
63
|
+
*/
|
|
64
|
+
get view(): IViewController;
|
|
65
|
+
/**
|
|
66
|
+
* @description 视图层级
|
|
67
|
+
* @readonly
|
|
68
|
+
* @type {(number | undefined)}
|
|
69
|
+
* @memberof ExtendMenuBaseController
|
|
70
|
+
*/
|
|
71
|
+
get routeDepth(): number | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* @description 上下文对象
|
|
74
|
+
* @readonly
|
|
75
|
+
* @type {IContext}
|
|
76
|
+
* @memberof ExtendMenuBaseController
|
|
77
|
+
*/
|
|
78
|
+
get context(): IContext;
|
|
79
|
+
/**
|
|
80
|
+
* @description 视图参数
|
|
81
|
+
* @readonly
|
|
82
|
+
* @type {IParams}
|
|
83
|
+
* @memberof ExtendMenuBaseController
|
|
84
|
+
*/
|
|
85
|
+
get params(): IParams;
|
|
86
|
+
/**
|
|
87
|
+
* @description 创建状态对象
|
|
88
|
+
* @protected
|
|
89
|
+
* @returns {*} {ExtendMenuBase}
|
|
90
|
+
* @memberof ExtendMenuBaseController
|
|
91
|
+
*/
|
|
92
|
+
protected createState(): ExtendMenuBase;
|
|
93
|
+
/**
|
|
94
|
+
* @description 初始化
|
|
95
|
+
* @protected
|
|
96
|
+
* @returns {*} {Promise<void>}
|
|
97
|
+
* @memberof ExtendMenuBaseController
|
|
98
|
+
*/
|
|
99
|
+
protected onInit(): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* @description 计算当前菜单模型
|
|
102
|
+
* @protected
|
|
103
|
+
* @returns {*} {(IAppMenu | undefined)}
|
|
104
|
+
* @memberof ExtendMenuBaseController
|
|
105
|
+
*/
|
|
106
|
+
protected computeAppMenu(): IAppMenu | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* @description 平铺所有菜单项
|
|
109
|
+
* @protected
|
|
110
|
+
* @returns {*} {void}
|
|
111
|
+
* @memberof ExtendMenuBaseController
|
|
112
|
+
*/
|
|
113
|
+
protected flattenAllItems(): void;
|
|
114
|
+
/**
|
|
115
|
+
* @description 初始化菜单项的适配器
|
|
116
|
+
* @protected
|
|
117
|
+
* @returns {*} {Promise<void>}
|
|
118
|
+
* @memberof ExtendMenuBaseController
|
|
119
|
+
*/
|
|
120
|
+
protected initAppMenuItemProviders(): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* @description 初始化菜单项状态
|
|
123
|
+
* @param {IAppMenuItem} menu
|
|
124
|
+
* @returns {*} {{
|
|
125
|
+
* visible: boolean;
|
|
126
|
+
* permitted: boolean;
|
|
127
|
+
* }}
|
|
128
|
+
* @memberof ExtendMenuBaseController
|
|
129
|
+
*/
|
|
130
|
+
initMenuItemState(menu: IAppMenuItem): {
|
|
131
|
+
visible: boolean;
|
|
132
|
+
permitted: boolean;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* @description 处理菜单项点击,触发对应的应用功能
|
|
136
|
+
* @param {IAppMenuItem} menuItem
|
|
137
|
+
* @param {MouseEvent} event
|
|
138
|
+
* @param {boolean} [useDepth=true]
|
|
139
|
+
* @returns {*} {Promise<void>}
|
|
140
|
+
* @memberof ExtendMenuBaseController
|
|
141
|
+
*/
|
|
142
|
+
handleClickMenuItem(menuItem: IAppMenuItem, event: MouseEvent, useDepth?: boolean): Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* @description 处理自定义补充参数
|
|
145
|
+
* @protected
|
|
146
|
+
* @memberof ExtendMenuBaseController
|
|
147
|
+
*/
|
|
148
|
+
protected handleRawItemParams(): void;
|
|
149
|
+
}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { notNilEmpty } from 'qx-util';
|
|
2
|
+
import { PanelItemController, getControl, getAppMenuItemProvider, AppFuncCommand } from '@ibiz-template/runtime';
|
|
3
|
+
import { RuntimeModelError } from '@ibiz-template/core';
|
|
4
|
+
import { ExtendMenuBase } from './extend-menu-base.state.mjs';
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __publicField = (obj, key, value) => {
|
|
10
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
11
|
+
return value;
|
|
12
|
+
};
|
|
13
|
+
class ExtendMenuBaseController extends PanelItemController {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
/**
|
|
17
|
+
* @description 自定义补充参数
|
|
18
|
+
* @type {IData}
|
|
19
|
+
* @memberof ExtendMenuBaseController
|
|
20
|
+
*/
|
|
21
|
+
__publicField(this, "rawItemParams", { rendermode: "BUTTON" });
|
|
22
|
+
/**
|
|
23
|
+
* @description 当前菜单名称
|
|
24
|
+
* @protected
|
|
25
|
+
* @type {string}
|
|
26
|
+
* @memberof ExtendMenuBaseController
|
|
27
|
+
*/
|
|
28
|
+
__publicField(this, "appMenuName", "");
|
|
29
|
+
/**
|
|
30
|
+
* @description 菜单模型
|
|
31
|
+
* @protected
|
|
32
|
+
* @type {(IAppMenu | undefined)}
|
|
33
|
+
* @memberof ExtendMenuBaseController
|
|
34
|
+
*/
|
|
35
|
+
__publicField(this, "appMenu");
|
|
36
|
+
/**
|
|
37
|
+
* @description 当前应用
|
|
38
|
+
* @protected
|
|
39
|
+
* @type {IAppService}
|
|
40
|
+
* @memberof ExtendMenuBaseController
|
|
41
|
+
*/
|
|
42
|
+
__publicField(this, "app");
|
|
43
|
+
/**
|
|
44
|
+
* @description 菜单项适配器集合
|
|
45
|
+
* @type {{ [key: string]: IAppMenuItemProvider }}
|
|
46
|
+
* @memberof ExtendMenuBaseController
|
|
47
|
+
*/
|
|
48
|
+
__publicField(this, "itemProviders", {});
|
|
49
|
+
/**
|
|
50
|
+
* @description 所有菜单项,平铺开
|
|
51
|
+
* @type {IAppMenuItem[]}
|
|
52
|
+
* @memberof ExtendMenuBaseController
|
|
53
|
+
*/
|
|
54
|
+
__publicField(this, "allAppMenuItems", []);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @description 获取当前视图
|
|
58
|
+
* @readonly
|
|
59
|
+
* @type {IViewController}
|
|
60
|
+
* @memberof ExtendMenuBaseController
|
|
61
|
+
*/
|
|
62
|
+
get view() {
|
|
63
|
+
return this.panel.view;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @description 视图层级
|
|
67
|
+
* @readonly
|
|
68
|
+
* @type {(number | undefined)}
|
|
69
|
+
* @memberof ExtendMenuBaseController
|
|
70
|
+
*/
|
|
71
|
+
get routeDepth() {
|
|
72
|
+
return this.view.modal.routeDepth;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* @description 上下文对象
|
|
76
|
+
* @readonly
|
|
77
|
+
* @type {IContext}
|
|
78
|
+
* @memberof ExtendMenuBaseController
|
|
79
|
+
*/
|
|
80
|
+
get context() {
|
|
81
|
+
return this.panel.context;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* @description 视图参数
|
|
85
|
+
* @readonly
|
|
86
|
+
* @type {IParams}
|
|
87
|
+
* @memberof ExtendMenuBaseController
|
|
88
|
+
*/
|
|
89
|
+
get params() {
|
|
90
|
+
return this.panel.params;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @description 创建状态对象
|
|
94
|
+
* @protected
|
|
95
|
+
* @returns {*} {ExtendMenuBase}
|
|
96
|
+
* @memberof ExtendMenuBaseController
|
|
97
|
+
*/
|
|
98
|
+
createState() {
|
|
99
|
+
var _a;
|
|
100
|
+
return new ExtendMenuBase((_a = this.parent) == null ? void 0 : _a.state);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* @description 初始化
|
|
104
|
+
* @protected
|
|
105
|
+
* @returns {*} {Promise<void>}
|
|
106
|
+
* @memberof ExtendMenuBaseController
|
|
107
|
+
*/
|
|
108
|
+
async onInit() {
|
|
109
|
+
var _a, _b;
|
|
110
|
+
await super.onInit();
|
|
111
|
+
this.handleRawItemParams();
|
|
112
|
+
this.app = await ibiz.hub.getApp(this.context.srfappid);
|
|
113
|
+
this.appMenu = this.computeAppMenu();
|
|
114
|
+
this.state.items = this.appMenu && this.appMenu.appMenuItems ? this.appMenu.appMenuItems : [];
|
|
115
|
+
this.flattenAllItems();
|
|
116
|
+
await this.initAppMenuItemProviders();
|
|
117
|
+
(_b = (_a = this.appMenu) == null ? void 0 : _a.appMenuItems) == null ? void 0 : _b.forEach((item) => {
|
|
118
|
+
this.initMenuItemState(item);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @description 计算当前菜单模型
|
|
123
|
+
* @protected
|
|
124
|
+
* @returns {*} {(IAppMenu | undefined)}
|
|
125
|
+
* @memberof ExtendMenuBaseController
|
|
126
|
+
*/
|
|
127
|
+
computeAppMenu() {
|
|
128
|
+
return getControl(this.view.model, this.appMenuName);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @description 平铺所有菜单项
|
|
132
|
+
* @protected
|
|
133
|
+
* @returns {*} {void}
|
|
134
|
+
* @memberof ExtendMenuBaseController
|
|
135
|
+
*/
|
|
136
|
+
flattenAllItems() {
|
|
137
|
+
if (!this.appMenu)
|
|
138
|
+
return;
|
|
139
|
+
const result = [];
|
|
140
|
+
const flattenMenus = (menuItems) => {
|
|
141
|
+
menuItems.forEach((item) => {
|
|
142
|
+
result.push(item);
|
|
143
|
+
if (item.appMenuItems && item.appMenuItems.length > 0) {
|
|
144
|
+
flattenMenus(item.appMenuItems);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
flattenMenus(this.appMenu.appMenuItems);
|
|
149
|
+
this.allAppMenuItems = result;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* @description 初始化菜单项的适配器
|
|
153
|
+
* @protected
|
|
154
|
+
* @returns {*} {Promise<void>}
|
|
155
|
+
* @memberof ExtendMenuBaseController
|
|
156
|
+
*/
|
|
157
|
+
async initAppMenuItemProviders() {
|
|
158
|
+
if (this.allAppMenuItems.length === 0)
|
|
159
|
+
return;
|
|
160
|
+
await Promise.all(
|
|
161
|
+
this.allAppMenuItems.map(async (item) => {
|
|
162
|
+
const provider = await getAppMenuItemProvider(item);
|
|
163
|
+
if (provider) {
|
|
164
|
+
this.itemProviders[item.id] = provider;
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* @description 初始化菜单项状态
|
|
171
|
+
* @param {IAppMenuItem} menu
|
|
172
|
+
* @returns {*} {{
|
|
173
|
+
* visible: boolean;
|
|
174
|
+
* permitted: boolean;
|
|
175
|
+
* }}
|
|
176
|
+
* @memberof ExtendMenuBaseController
|
|
177
|
+
*/
|
|
178
|
+
initMenuItemState(menu) {
|
|
179
|
+
var _a;
|
|
180
|
+
const result = { permitted: true, visible: true };
|
|
181
|
+
if (menu.hidden) {
|
|
182
|
+
result.visible = false;
|
|
183
|
+
} else {
|
|
184
|
+
let permitted = true;
|
|
185
|
+
if (menu.accessKey) {
|
|
186
|
+
permitted = this.app.authority.calcByResCode(menu.accessKey);
|
|
187
|
+
}
|
|
188
|
+
let visible = permitted;
|
|
189
|
+
if ((_a = menu.appMenuItems) == null ? void 0 : _a.length) {
|
|
190
|
+
const childrenState = menu.appMenuItems.map((child) => {
|
|
191
|
+
return this.initMenuItemState(child).visible;
|
|
192
|
+
});
|
|
193
|
+
visible = visible && childrenState.includes(true);
|
|
194
|
+
}
|
|
195
|
+
result.permitted = permitted;
|
|
196
|
+
result.visible = visible;
|
|
197
|
+
}
|
|
198
|
+
this.state.menuItemsState[menu.id] = result;
|
|
199
|
+
return result;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* @description 处理菜单项点击,触发对应的应用功能
|
|
203
|
+
* @param {IAppMenuItem} menuItem
|
|
204
|
+
* @param {MouseEvent} event
|
|
205
|
+
* @param {boolean} [useDepth=true]
|
|
206
|
+
* @returns {*} {Promise<void>}
|
|
207
|
+
* @memberof ExtendMenuBaseController
|
|
208
|
+
*/
|
|
209
|
+
async handleClickMenuItem(menuItem, event, useDepth = true) {
|
|
210
|
+
if (!menuItem) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const provider = this.itemProviders[menuItem.id];
|
|
214
|
+
if (provider && provider.onClick) {
|
|
215
|
+
return provider.onClick(menuItem, event);
|
|
216
|
+
}
|
|
217
|
+
if (!menuItem.appFuncId) {
|
|
218
|
+
throw new RuntimeModelError(
|
|
219
|
+
menuItem,
|
|
220
|
+
ibiz.i18n.t("runtime.controller.control.menu.noConfigured")
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
const tempContext = this.context.clone();
|
|
224
|
+
tempContext.srfappid = menuItem.appId || ibiz.env.appId;
|
|
225
|
+
if (this.routeDepth && useDepth) {
|
|
226
|
+
Object.assign(tempContext, {
|
|
227
|
+
toRouteDepth: this.routeDepth + 1
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
const param = { ...this.params };
|
|
231
|
+
await ibiz.commands.execute(
|
|
232
|
+
AppFuncCommand.TAG,
|
|
233
|
+
menuItem.appFuncId,
|
|
234
|
+
tempContext,
|
|
235
|
+
param,
|
|
236
|
+
{ view: this.view }
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* @description 处理自定义补充参数
|
|
241
|
+
* @protected
|
|
242
|
+
* @memberof ExtendMenuBaseController
|
|
243
|
+
*/
|
|
244
|
+
handleRawItemParams() {
|
|
245
|
+
var _a;
|
|
246
|
+
let params = {};
|
|
247
|
+
const rawItemParams = (_a = this.model.rawItem) == null ? void 0 : _a.rawItemParams;
|
|
248
|
+
if (notNilEmpty(rawItemParams)) {
|
|
249
|
+
params = rawItemParams.reduce((param, item) => {
|
|
250
|
+
param[item.key.toLowerCase()] = item.value;
|
|
251
|
+
return param;
|
|
252
|
+
}, {});
|
|
253
|
+
}
|
|
254
|
+
Object.assign(this.rawItemParams, params);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export { ExtendMenuBaseController };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PanelItemState } from '@ibiz-template/runtime';
|
|
2
|
+
import { IAppMenuItem } from '@ibiz/model-core';
|
|
3
|
+
/**
|
|
4
|
+
* @description 扩展菜单状态基类
|
|
5
|
+
* @export
|
|
6
|
+
* @class ExtendMenuBase
|
|
7
|
+
* @extends {PanelItemState}
|
|
8
|
+
*/
|
|
9
|
+
export declare class ExtendMenuBase extends PanelItemState {
|
|
10
|
+
/**
|
|
11
|
+
* @description 所有菜单项
|
|
12
|
+
* @type {IAppMenuItem[]}
|
|
13
|
+
* @memberof ExtendMenuBase
|
|
14
|
+
*/
|
|
15
|
+
items: IAppMenuItem[];
|
|
16
|
+
/**
|
|
17
|
+
* @description 菜单项状态
|
|
18
|
+
* @type {{ [p: string]: { visible: boolean; permitted: boolean } }}
|
|
19
|
+
* @memberof ExtendMenuBase
|
|
20
|
+
*/
|
|
21
|
+
menuItemsState: {
|
|
22
|
+
[p: string]: {
|
|
23
|
+
visible: boolean;
|
|
24
|
+
permitted: boolean;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { PanelItemState } from '@ibiz-template/runtime';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __publicField = (obj, key, value) => {
|
|
7
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
10
|
+
class ExtendMenuBase extends PanelItemState {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
/**
|
|
14
|
+
* @description 所有菜单项
|
|
15
|
+
* @type {IAppMenuItem[]}
|
|
16
|
+
* @memberof ExtendMenuBase
|
|
17
|
+
*/
|
|
18
|
+
__publicField(this, "items", []);
|
|
19
|
+
/**
|
|
20
|
+
* @description 菜单项状态
|
|
21
|
+
* @type {{ [p: string]: { visible: boolean; permitted: boolean } }}
|
|
22
|
+
* @memberof ExtendMenuBase
|
|
23
|
+
*/
|
|
24
|
+
__publicField(this, "menuItemsState", {});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { ExtendMenuBase };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CommonExtendMenu } from './extend-menu-base/common-extend-menu/common-extend-menu.mjs';
|
|
2
|
+
import IBizLeftSideMenu from './left-side-menu/index.mjs';
|
|
3
|
+
import IBizRightSideMenu from './right-side-menu/index.mjs';
|
|
4
|
+
import IBizBottomSideMenu from './bottom-side-menu/index.mjs';
|
|
5
|
+
import IBizTopSideMenu from './top-side-menu/index.mjs';
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
var IBizAppExtendMenu = {
|
|
9
|
+
install(app) {
|
|
10
|
+
app.component(CommonExtendMenu.name, CommonExtendMenu);
|
|
11
|
+
app.use(IBizLeftSideMenu);
|
|
12
|
+
app.use(IBizRightSideMenu);
|
|
13
|
+
app.use(IBizBottomSideMenu);
|
|
14
|
+
app.use(IBizTopSideMenu);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export { IBizAppExtendMenu as default };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { registerPanelItemProvider } from '@ibiz-template/runtime';
|
|
2
|
+
import { LeftSideMenu } from './left-side-menu.mjs';
|
|
3
|
+
import { LeftSideMenuProvider } from './left-side-menu.provider.mjs';
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
var IBizLeftSideMenu = {
|
|
7
|
+
install(app) {
|
|
8
|
+
app.component(LeftSideMenu.name, LeftSideMenu);
|
|
9
|
+
registerPanelItemProvider(
|
|
10
|
+
"RAWITEM_PREDEFINE_LEFT_SIDE_MENU",
|
|
11
|
+
() => new LeftSideMenuProvider()
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export { IBizLeftSideMenu as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ExtendMenuBaseController } from '../extend-menu-base/extend-menu-base.controller';
|
|
2
|
+
/**
|
|
3
|
+
* @description 左侧菜单
|
|
4
|
+
* @export
|
|
5
|
+
* @class LeftSideMenuController
|
|
6
|
+
* @extends {ExtendMenuBaseController}
|
|
7
|
+
*/
|
|
8
|
+
export declare class LeftSideMenuController extends ExtendMenuBaseController {
|
|
9
|
+
protected appMenuName: string;
|
|
10
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ExtendMenuBaseController } from '../extend-menu-base/extend-menu-base.controller.mjs';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __publicField = (obj, key, value) => {
|
|
7
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
10
|
+
class LeftSideMenuController extends ExtendMenuBaseController {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
__publicField(this, "appMenuName", "leftsidemenu");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { LeftSideMenuController };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.ibiz-left-side-menu{width:100%;height:100%}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { IPanelRawItem } from '@ibiz/model-core';
|
|
3
|
+
import { LeftSideMenuController } from './left-side-menu.controller';
|
|
4
|
+
import './left-side-menu.scss';
|
|
5
|
+
/**
|
|
6
|
+
* 左侧菜单
|
|
7
|
+
* @primary
|
|
8
|
+
* @description 首页视图扩展菜单左侧菜单
|
|
9
|
+
* @panelitemparams {name:rendermode,parameterType:'BUTTON' | 'MENU',defaultvalue:BUTTON,description:菜单项绘制模式,其中BUTTON表示按照按钮形态绘制(按钮形态目前仅支持一层)、MENU表示按照菜单形态绘制}
|
|
10
|
+
* @primary
|
|
11
|
+
*/
|
|
12
|
+
export declare const LeftSideMenu: import("vue").DefineComponent<{
|
|
13
|
+
/**
|
|
14
|
+
* @description 模型数据
|
|
15
|
+
*/
|
|
16
|
+
modelData: {
|
|
17
|
+
type: PropType<IPanelRawItem>;
|
|
18
|
+
required: true;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* @description 左侧菜单控制器
|
|
22
|
+
*/
|
|
23
|
+
controller: {
|
|
24
|
+
type: typeof LeftSideMenuController;
|
|
25
|
+
required: true;
|
|
26
|
+
};
|
|
27
|
+
}, {
|
|
28
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
29
|
+
state: import("../extend-menu-base/extend-menu-base.state").ExtendMenuBase;
|
|
30
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
31
|
+
/**
|
|
32
|
+
* @description 模型数据
|
|
33
|
+
*/
|
|
34
|
+
modelData: {
|
|
35
|
+
type: PropType<IPanelRawItem>;
|
|
36
|
+
required: true;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* @description 左侧菜单控制器
|
|
40
|
+
*/
|
|
41
|
+
controller: {
|
|
42
|
+
type: typeof LeftSideMenuController;
|
|
43
|
+
required: true;
|
|
44
|
+
};
|
|
45
|
+
}>>, {}, {}>;
|