@ibiz-template/vue3-util 0.4.4 → 0.4.5
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/index.min.css +1 -1
- package/dist/index.system.min.js +1 -2
- package/es/index.mjs +4 -0
- package/es/panel-component/index.d.ts +2 -0
- package/es/panel-component/index.d.ts.map +1 -1
- package/es/panel-component/index.mjs +4 -0
- package/es/panel-component/panel-container-group/index.d.ts +29 -0
- package/es/panel-component/panel-container-group/index.d.ts.map +1 -0
- package/es/panel-component/panel-container-group/index.mjs +21 -0
- package/es/panel-component/panel-container-group/panel-container-group.controller.d.ts +32 -0
- package/es/panel-component/panel-container-group/panel-container-group.controller.d.ts.map +1 -0
- package/es/panel-component/panel-container-group/panel-container-group.controller.mjs +35 -0
- package/es/panel-component/panel-container-group/panel-container-group.css +1 -0
- package/es/panel-component/panel-container-group/panel-container-group.d.ts +29 -0
- package/es/panel-component/panel-container-group/panel-container-group.d.ts.map +1 -0
- package/es/panel-component/panel-container-group/panel-container-group.mjs +108 -0
- package/es/panel-component/panel-container-group/panel-container-group.provider.d.ts +16 -0
- package/es/panel-component/panel-container-group/panel-container-group.provider.d.ts.map +1 -0
- package/es/panel-component/panel-container-group/panel-container-group.provider.mjs +15 -0
- package/es/panel-component/panel-container-group/panel-container-group.state.d.ts +13 -0
- package/es/panel-component/panel-container-group/panel-container-group.state.d.ts.map +1 -0
- package/es/panel-component/panel-container-group/panel-container-group.state.mjs +7 -0
- package/es/panel-component/panel-tab-page/index.d.ts +24 -0
- package/es/panel-component/panel-tab-page/index.d.ts.map +1 -0
- package/es/panel-component/panel-tab-page/index.mjs +13 -0
- package/es/panel-component/panel-tab-page/panel-tab-page.d.ts +26 -0
- package/es/panel-component/panel-tab-page/panel-tab-page.d.ts.map +1 -0
- package/es/panel-component/panel-tab-page/panel-tab-page.mjs +63 -0
- package/es/panel-component/panel-tab-page/panel-tab-page.provider.d.ts +14 -0
- package/es/panel-component/panel-tab-page/panel-tab-page.provider.d.ts.map +1 -0
- package/es/panel-component/panel-tab-page/panel-tab-page.provider.mjs +15 -0
- package/es/plugin/plugin-factory/plugin-factory.d.ts +9 -0
- package/es/plugin/plugin-factory/plugin-factory.d.ts.map +1 -1
- package/es/plugin/plugin-factory/plugin-factory.mjs +44 -24
- package/lib/index.cjs +21 -13
- package/package.json +6 -6
- package/src/panel-component/index.ts +2 -0
- package/src/panel-component/panel-container-group/index.ts +22 -0
- package/src/panel-component/panel-container-group/panel-container-group.controller.ts +43 -0
- package/src/panel-component/panel-container-group/panel-container-group.provider.ts +30 -0
- package/src/panel-component/panel-container-group/panel-container-group.scss +91 -0
- package/src/panel-component/panel-container-group/panel-container-group.state.ts +12 -0
- package/src/panel-component/panel-container-group/panel-container-group.tsx +112 -0
- package/src/panel-component/panel-tab-page/index.ts +12 -0
- package/src/panel-component/panel-tab-page/panel-tab-page.provider.ts +27 -0
- package/src/panel-component/panel-tab-page/panel-tab-page.tsx +55 -0
- package/src/plugin/plugin-factory/plugin-factory.ts +45 -23
- package/dist/index.system.min.js.map +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { isVNode, ref, computed, resolveComponent, createVNode, defineComponent } from 'vue';
|
|
2
|
+
import { PanelContainerGroupController } from './panel-container-group.controller.mjs';
|
|
3
|
+
import './panel-container-group.css';
|
|
4
|
+
import '../../use/index.mjs';
|
|
5
|
+
import { useNamespace } from '../../use/namespace/namespace.mjs';
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
function _isSlot(s) {
|
|
9
|
+
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
|
|
10
|
+
}
|
|
11
|
+
const PanelContainerGroup = /* @__PURE__ */ defineComponent({
|
|
12
|
+
name: "IBizPanelContainerGroup",
|
|
13
|
+
props: {
|
|
14
|
+
modelData: {
|
|
15
|
+
type: Object,
|
|
16
|
+
required: true
|
|
17
|
+
},
|
|
18
|
+
controller: {
|
|
19
|
+
type: PanelContainerGroupController,
|
|
20
|
+
required: true
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
setup(props) {
|
|
24
|
+
const ns = useNamespace("panel-container-group");
|
|
25
|
+
const isCollapse = ref(!props.controller.defaultExpansion);
|
|
26
|
+
const changeCollapse = () => {
|
|
27
|
+
if (!props.controller.disableClose) {
|
|
28
|
+
isCollapse.value = !isCollapse.value;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const captionText = computed(() => {
|
|
32
|
+
const {
|
|
33
|
+
captionItemName,
|
|
34
|
+
caption,
|
|
35
|
+
capLanguageRes
|
|
36
|
+
} = props.modelData;
|
|
37
|
+
if (captionItemName) {
|
|
38
|
+
return props.controller.data[captionItemName];
|
|
39
|
+
}
|
|
40
|
+
let text = caption;
|
|
41
|
+
if (capLanguageRes) {
|
|
42
|
+
text = ibiz.i18n.t(capLanguageRes.lanResTag, caption);
|
|
43
|
+
}
|
|
44
|
+
return text;
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
ns,
|
|
48
|
+
captionText,
|
|
49
|
+
changeCollapse,
|
|
50
|
+
isCollapse
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
render() {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
let _slot;
|
|
56
|
+
const classArr = [this.ns.b(), this.ns.m(this.modelData.id), ...this.controller.containerClass, this.ns.is("hidden", !this.controller.state.visible)];
|
|
57
|
+
if (this.modelData.showCaption === true) {
|
|
58
|
+
classArr.push(this.ns.m("show-header"));
|
|
59
|
+
classArr.push(this.ns.b("collapse"));
|
|
60
|
+
classArr.push(this.ns.is("collapse", this.isCollapse));
|
|
61
|
+
if (this.controller.disableClose) {
|
|
62
|
+
classArr.push(this.ns.bm("collapse", "disable-close"));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
|
|
66
|
+
const content = createVNode(resolveComponent("iBizRow"), {
|
|
67
|
+
"slot": "content",
|
|
68
|
+
"layout": this.modelData.layout
|
|
69
|
+
}, _isSlot(_slot = defaultSlots.map((slot) => {
|
|
70
|
+
const props = slot.props;
|
|
71
|
+
if (!props || !props.controller) {
|
|
72
|
+
return slot;
|
|
73
|
+
}
|
|
74
|
+
return createVNode(resolveComponent("iBizCol"), {
|
|
75
|
+
"layoutPos": props.modelData.layoutPos,
|
|
76
|
+
"state": props.controller.state
|
|
77
|
+
}, _isSlot(slot) ? slot : {
|
|
78
|
+
default: () => [slot]
|
|
79
|
+
});
|
|
80
|
+
})) ? _slot : {
|
|
81
|
+
default: () => [_slot]
|
|
82
|
+
});
|
|
83
|
+
let header = null;
|
|
84
|
+
if (this.modelData.showCaption) {
|
|
85
|
+
header = createVNode("div", {
|
|
86
|
+
"class": [this.ns.b("header")],
|
|
87
|
+
"onClick": this.changeCollapse
|
|
88
|
+
}, [createVNode("div", {
|
|
89
|
+
"class": [this.ns.be("header", "left")]
|
|
90
|
+
}, [createVNode("div", {
|
|
91
|
+
"class": [this.ns.e("caption"), ...this.controller.labelClass]
|
|
92
|
+
}, [this.captionText])]), createVNode("div", {
|
|
93
|
+
"class": [this.ns.be("header", "right")]
|
|
94
|
+
}, [this.modelData.titleBarCloseMode !== void 0 && this.modelData.titleBarCloseMode !== 0 && (this.isCollapse ? createVNode("ion-icon", {
|
|
95
|
+
"name": "caret-forward-sharp"
|
|
96
|
+
}, null) : createVNode("ion-icon", {
|
|
97
|
+
"name": "caret-down-sharp"
|
|
98
|
+
}, null))])]);
|
|
99
|
+
}
|
|
100
|
+
return createVNode("div", {
|
|
101
|
+
"class": classArr
|
|
102
|
+
}, [header, createVNode("div", {
|
|
103
|
+
"class": [this.ns.b("content")]
|
|
104
|
+
}, [content])]);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
export { PanelContainerGroup };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IPanelItemProvider, PanelController, PanelItemController } from '@ibiz-template/runtime';
|
|
2
|
+
import { IPanelContainer } from '@ibiz/model-core';
|
|
3
|
+
/**
|
|
4
|
+
* 面板分组容器适配器
|
|
5
|
+
*
|
|
6
|
+
* @author lxm
|
|
7
|
+
* @date 2022-09-19 22:09:03
|
|
8
|
+
* @export
|
|
9
|
+
* @class PanelContainerGroupProvider
|
|
10
|
+
* @implements {EditorProvider}
|
|
11
|
+
*/
|
|
12
|
+
export declare class PanelContainerGroupProvider implements IPanelItemProvider {
|
|
13
|
+
component: string;
|
|
14
|
+
createController(panelItem: IPanelContainer, panel: PanelController, parent: PanelItemController | undefined): Promise<PanelItemController>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=panel-container-group.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-container-group.provider.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-container-group/panel-container-group.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,YAAW,kBAAkB;IACpE,SAAS,EAAE,MAAM,CAA6B;IAExC,gBAAgB,CACpB,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,OAAO,CAAC,mBAAmB,CAAC;CAKhC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PanelContainerGroupController } from './panel-container-group.controller.mjs';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
class PanelContainerGroupProvider {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.component = "IBizPanelContainerGroup";
|
|
7
|
+
}
|
|
8
|
+
async createController(panelItem, panel, parent) {
|
|
9
|
+
const c = new PanelContainerGroupController(panelItem, panel, parent);
|
|
10
|
+
await c.init();
|
|
11
|
+
return c;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { PanelContainerGroupProvider };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PanelItemState } from '@ibiz-template/runtime';
|
|
2
|
+
/**
|
|
3
|
+
* 面板分组容器状态
|
|
4
|
+
*
|
|
5
|
+
* @author lxm
|
|
6
|
+
* @date 2023-02-07 06:04:27
|
|
7
|
+
* @export
|
|
8
|
+
* @class PanelContainerGroupState
|
|
9
|
+
* @extends {PanelItemState}
|
|
10
|
+
*/
|
|
11
|
+
export declare class PanelContainerGroupState extends PanelItemState {
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=panel-container-group.state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-container-group.state.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-container-group/panel-container-group.state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;CAAG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const IBizPanelTabPage: import("../../util").TypeWithInstall<import("vue").DefineComponent<{
|
|
2
|
+
modelData: {
|
|
3
|
+
type: import("vue").PropType<import("@ibiz/model-core").IPanelContainer>;
|
|
4
|
+
required: true;
|
|
5
|
+
};
|
|
6
|
+
controller: {
|
|
7
|
+
type: typeof import("@ibiz-template/runtime").PanelItemController;
|
|
8
|
+
required: true;
|
|
9
|
+
};
|
|
10
|
+
}, {
|
|
11
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
12
|
+
classArr: import("vue").ComputedRef<(string | false)[]>;
|
|
13
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
14
|
+
modelData: {
|
|
15
|
+
type: import("vue").PropType<import("@ibiz/model-core").IPanelContainer>;
|
|
16
|
+
required: true;
|
|
17
|
+
};
|
|
18
|
+
controller: {
|
|
19
|
+
type: typeof import("@ibiz-template/runtime").PanelItemController;
|
|
20
|
+
required: true;
|
|
21
|
+
};
|
|
22
|
+
}>>, {}, {}>>;
|
|
23
|
+
export default IBizPanelTabPage;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-tab-page/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;aAG3B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { registerPanelItemProvider } from '@ibiz-template/runtime';
|
|
2
|
+
import { PanelTabPage } from './panel-tab-page.mjs';
|
|
3
|
+
import { PanelTabPageProvider } from './panel-tab-page.provider.mjs';
|
|
4
|
+
import '../../util/index.mjs';
|
|
5
|
+
import { withInstall } from '../../util/install.mjs';
|
|
6
|
+
|
|
7
|
+
"use strict";
|
|
8
|
+
const IBizPanelTabPage = withInstall(PanelTabPage, function(v) {
|
|
9
|
+
v.component(PanelTabPage.name, PanelTabPage);
|
|
10
|
+
registerPanelItemProvider("TABPAGE", () => new PanelTabPageProvider());
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
export { IBizPanelTabPage, IBizPanelTabPage as default };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { IPanelContainer } from '@ibiz/model-core';
|
|
3
|
+
import { PanelItemController } from '@ibiz-template/runtime';
|
|
4
|
+
export declare const PanelTabPage: import("vue").DefineComponent<{
|
|
5
|
+
modelData: {
|
|
6
|
+
type: PropType<IPanelContainer>;
|
|
7
|
+
required: true;
|
|
8
|
+
};
|
|
9
|
+
controller: {
|
|
10
|
+
type: typeof PanelItemController;
|
|
11
|
+
required: true;
|
|
12
|
+
};
|
|
13
|
+
}, {
|
|
14
|
+
ns: import("@ibiz-template/core").Namespace;
|
|
15
|
+
classArr: import("vue").ComputedRef<(string | false)[]>;
|
|
16
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
17
|
+
modelData: {
|
|
18
|
+
type: PropType<IPanelContainer>;
|
|
19
|
+
required: true;
|
|
20
|
+
};
|
|
21
|
+
controller: {
|
|
22
|
+
type: typeof PanelItemController;
|
|
23
|
+
required: true;
|
|
24
|
+
};
|
|
25
|
+
}>>, {}, {}>;
|
|
26
|
+
//# sourceMappingURL=panel-tab-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-tab-page.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-tab-page/panel-tab-page.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,QAAQ,EAAS,MAAM,KAAK,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;YAiDvB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { isVNode, computed, resolveComponent, createVNode, defineComponent } from 'vue';
|
|
2
|
+
import { PanelItemController } from '@ibiz-template/runtime';
|
|
3
|
+
import '../../use/index.mjs';
|
|
4
|
+
import { useNamespace } from '../../use/namespace/namespace.mjs';
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
function _isSlot(s) {
|
|
8
|
+
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
|
|
9
|
+
}
|
|
10
|
+
const PanelTabPage = /* @__PURE__ */ defineComponent({
|
|
11
|
+
name: "IBizPanelTabPage",
|
|
12
|
+
props: {
|
|
13
|
+
modelData: {
|
|
14
|
+
// IPanelTabPage 不能使用 IPanelTabPage模型 否则会类型报错
|
|
15
|
+
type: Object,
|
|
16
|
+
required: true
|
|
17
|
+
},
|
|
18
|
+
controller: {
|
|
19
|
+
type: PanelItemController,
|
|
20
|
+
required: true
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
setup(props) {
|
|
24
|
+
const ns = useNamespace("panel-tab-page");
|
|
25
|
+
const classArr = computed(() => {
|
|
26
|
+
const {
|
|
27
|
+
id
|
|
28
|
+
} = props.modelData;
|
|
29
|
+
const result = [ns.b(), ns.m(id)];
|
|
30
|
+
result.push(...props.controller.containerClass);
|
|
31
|
+
return result;
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
ns,
|
|
35
|
+
classArr
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
render() {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
let _slot;
|
|
41
|
+
const defaultSlots = ((_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a)) || [];
|
|
42
|
+
return createVNode(resolveComponent("iBizRow"), {
|
|
43
|
+
"class": [this.ns.b(), this.ns.m(this.modelData.codeName), this.classArr],
|
|
44
|
+
"layout": this.modelData.layout
|
|
45
|
+
}, _isSlot(_slot = defaultSlots.map((slot) => {
|
|
46
|
+
const props = slot.props;
|
|
47
|
+
if (!props || !props.controller) {
|
|
48
|
+
return slot;
|
|
49
|
+
}
|
|
50
|
+
const c = props.controller;
|
|
51
|
+
return createVNode(resolveComponent("iBizCol"), {
|
|
52
|
+
"layoutPos": c.model.layoutPos,
|
|
53
|
+
"state": c.state
|
|
54
|
+
}, _isSlot(slot) ? slot : {
|
|
55
|
+
default: () => [slot]
|
|
56
|
+
});
|
|
57
|
+
})) ? _slot : {
|
|
58
|
+
default: () => [_slot]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
export { PanelTabPage };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IPanelItemProvider, PanelController, PanelItemController } from '@ibiz-template/runtime';
|
|
2
|
+
import { IPanelItem } from '@ibiz/model-core';
|
|
3
|
+
/**
|
|
4
|
+
* 面板分页适配器
|
|
5
|
+
*
|
|
6
|
+
* @export
|
|
7
|
+
* @class PanelTabPageController
|
|
8
|
+
* @implements {IPanelItemProvider}
|
|
9
|
+
*/
|
|
10
|
+
export declare class PanelTabPageProvider implements IPanelItemProvider {
|
|
11
|
+
component: string;
|
|
12
|
+
createController(panelItem: IPanelItem, panel: PanelController, parent: PanelItemController | undefined): Promise<PanelItemController>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=panel-tab-page.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel-tab-page.provider.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-tab-page/panel-tab-page.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;GAMG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,SAAS,EAAE,MAAM,CAAsB;IAEjC,gBAAgB,CACpB,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,OAAO,CAAC,mBAAmB,CAAC;CAKhC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { PanelItemController } from '@ibiz-template/runtime';
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
class PanelTabPageProvider {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.component = "IBizPanelTabPage";
|
|
7
|
+
}
|
|
8
|
+
async createController(panelItem, panel, parent) {
|
|
9
|
+
const c = new PanelItemController(panelItem, panel, parent);
|
|
10
|
+
await c.init();
|
|
11
|
+
return c;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { PanelTabPageProvider };
|
|
@@ -63,6 +63,15 @@ export declare class PluginFactory implements IPluginFactory {
|
|
|
63
63
|
* @type {((string | RegExp)[])}
|
|
64
64
|
*/
|
|
65
65
|
protected ignoreRules: (string | RegExp)[];
|
|
66
|
+
/**
|
|
67
|
+
* 插件加载队列
|
|
68
|
+
*
|
|
69
|
+
* @author chitanda
|
|
70
|
+
* @date 2023-12-05 16:12:04
|
|
71
|
+
* @protected
|
|
72
|
+
* @type {Map<string, Promise<boolean>>}
|
|
73
|
+
*/
|
|
74
|
+
protected loadQueue: Map<string, Promise<boolean>>;
|
|
66
75
|
/**
|
|
67
76
|
* 是否忽略插件加载
|
|
68
77
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-factory.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-factory/plugin-factory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,WAAW,EAEX,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAmB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,SAA0B;IAE1C;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAElD;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAEjE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;IAErC;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa;IAElE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAEhD;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS/C;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzC;;;;;;OAMG;IACH,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAMxB;;;;;;;OAOG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3C;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-factory.d.ts","sourceRoot":"","sources":["../../../src/plugin/plugin-factory/plugin-factory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,WAAW,EAEX,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAmB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,SAA0B;IAE1C;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAElD;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAEjE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;IAErC;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa;IAElE;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAM;IAEhD;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAa;IAE/D;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAS/C;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIzC;;;;;;OAMG;IACH,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAInD;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAMxB;;;;;;;OAOG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO3C;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAuCxD;;;;;;;OAOG;IACG,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC;IAwCnB;;;;;;;;OAQG;cACa,UAAU,CAAC,YAAY,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCzE;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAuB3C"}
|
|
@@ -58,6 +58,15 @@ class PluginFactory {
|
|
|
58
58
|
* @type {((string | RegExp)[])}
|
|
59
59
|
*/
|
|
60
60
|
this.ignoreRules = [];
|
|
61
|
+
/**
|
|
62
|
+
* 插件加载队列
|
|
63
|
+
*
|
|
64
|
+
* @author chitanda
|
|
65
|
+
* @date 2023-12-05 16:12:04
|
|
66
|
+
* @protected
|
|
67
|
+
* @type {Map<string, Promise<boolean>>}
|
|
68
|
+
*/
|
|
69
|
+
this.loadQueue = /* @__PURE__ */ new Map();
|
|
61
70
|
}
|
|
62
71
|
/**
|
|
63
72
|
* 是否忽略插件加载
|
|
@@ -150,13 +159,35 @@ class PluginFactory {
|
|
|
150
159
|
if (plugin.runtimeObject === true) {
|
|
151
160
|
const pluginRef = plugin;
|
|
152
161
|
if (pluginRef) {
|
|
162
|
+
const rtObjectName = pluginRef.rtobjectName;
|
|
163
|
+
const rtObjectRepo = pluginRef.rtobjectRepo;
|
|
164
|
+
if (this.isIgnore(rtObjectRepo)) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
if (this.pluginCache.has(rtObjectName)) {
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
if (this.loadQueue.has(rtObjectRepo)) {
|
|
171
|
+
const p = await this.loadQueue.get(rtObjectRepo);
|
|
172
|
+
try {
|
|
173
|
+
const result = await p;
|
|
174
|
+
return result;
|
|
175
|
+
} catch (error) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
153
179
|
try {
|
|
154
|
-
|
|
180
|
+
const p = this.loadPluginRef(
|
|
155
181
|
pluginRef.rtobjectName,
|
|
156
182
|
pluginRef.rtobjectRepo
|
|
157
183
|
);
|
|
184
|
+
this.loadQueue.set(rtObjectRepo, p);
|
|
185
|
+
const result = await p;
|
|
186
|
+
return result;
|
|
158
187
|
} catch (error) {
|
|
159
188
|
throw new RuntimeModelError(pluginRef, `\u914D\u7F6E\u52A0\u8F7D\u5931\u8D25`);
|
|
189
|
+
} finally {
|
|
190
|
+
this.loadQueue.delete(rtObjectRepo);
|
|
160
191
|
}
|
|
161
192
|
}
|
|
162
193
|
}
|
|
@@ -218,13 +249,9 @@ class PluginFactory {
|
|
|
218
249
|
*/
|
|
219
250
|
async loadScript(remotePlugin) {
|
|
220
251
|
const pluginPath = remotePlugin.repo;
|
|
221
|
-
const { name, system,
|
|
252
|
+
const { name, system, styles = [] } = remotePlugin.config;
|
|
222
253
|
let scriptUrl = "";
|
|
223
|
-
|
|
224
|
-
scriptUrl = this.urlReg.test(pluginPath) ? `${pluginPath}/${pathBrowserify.join(module)}` : `${ibiz.env.pluginBaseUrl}/${pluginPath}/${pathBrowserify.join(module)}`;
|
|
225
|
-
} else {
|
|
226
|
-
scriptUrl = pathBrowserify.join(pluginPath, system);
|
|
227
|
-
}
|
|
254
|
+
scriptUrl = pathBrowserify.join(pluginPath, system);
|
|
228
255
|
if (scriptUrl) {
|
|
229
256
|
if (this.cache.has(scriptUrl)) {
|
|
230
257
|
return;
|
|
@@ -234,23 +261,16 @@ class PluginFactory {
|
|
|
234
261
|
const styleUrls = (typeof styles === "string" ? [styles] : styles).map(
|
|
235
262
|
(styleUrl) => this.parseUrl(path.join(pluginPath, styleUrl))
|
|
236
263
|
);
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
styles: {
|
|
248
|
-
[name]: styleUrls
|
|
249
|
-
}
|
|
250
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
251
|
-
});
|
|
252
|
-
data = await System.import(name);
|
|
253
|
-
}
|
|
264
|
+
System.addImportMap({
|
|
265
|
+
imports: {
|
|
266
|
+
[name]: url
|
|
267
|
+
},
|
|
268
|
+
styles: {
|
|
269
|
+
[name]: styleUrls
|
|
270
|
+
}
|
|
271
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
272
|
+
});
|
|
273
|
+
data = await System.import(name);
|
|
254
274
|
if (data) {
|
|
255
275
|
if (data.default) {
|
|
256
276
|
this.setPluginCode(data.default);
|
package/lib/index.cjs
CHANGED
|
@@ -45,12 +45,16 @@ var index$8 = require('./panel-component/grid-container/index.cjs');
|
|
|
45
45
|
var panelContainerImage_state = require('./panel-component/panel-container-image/panel-container-image.state.cjs');
|
|
46
46
|
var panelContainerImage_controller = require('./panel-component/panel-container-image/panel-container-image.controller.cjs');
|
|
47
47
|
var index$9 = require('./panel-component/panel-container-image/index.cjs');
|
|
48
|
+
var panelContainerGroup_state = require('./panel-component/panel-container-group/panel-container-group.state.cjs');
|
|
49
|
+
var panelContainerGroup_controller = require('./panel-component/panel-container-group/panel-container-group.controller.cjs');
|
|
50
|
+
var index$a = require('./panel-component/panel-container-group/index.cjs');
|
|
51
|
+
var index$b = require('./panel-component/panel-tab-page/index.cjs');
|
|
48
52
|
var appRedirectView = require('./view/app-redirect-view/app-redirect-view.cjs');
|
|
49
|
-
var index$
|
|
53
|
+
var index$c = require('./view/common/index.cjs');
|
|
50
54
|
var todoRedirect = require('./view/todo-redirect/todo-redirect.cjs');
|
|
51
|
-
var index$
|
|
52
|
-
var index$
|
|
53
|
-
var index$
|
|
55
|
+
var index$d = require('./view/portal-view/index.cjs');
|
|
56
|
+
var index$e = require('./control/panel/view-layout-panel/index.cjs');
|
|
57
|
+
var index$f = require('./control/panel/panel/index.cjs');
|
|
54
58
|
var pluginFactory = require('./plugin/plugin-factory/plugin-factory.cjs');
|
|
55
59
|
var clickOutside = require('./use/click-outside/click-outside.cjs');
|
|
56
60
|
var useControlController = require('./use/control/use-control-controller/use-control-controller.cjs');
|
|
@@ -58,7 +62,7 @@ var event = require('./use/event/event.cjs');
|
|
|
58
62
|
var focusBlur = require('./use/focus-blur/focus-blur.cjs');
|
|
59
63
|
var namespace = require('./use/namespace/namespace.cjs');
|
|
60
64
|
var route = require('./use/route/route.cjs');
|
|
61
|
-
var index$
|
|
65
|
+
var index$g = require('./use/util/index.cjs');
|
|
62
66
|
var useViewController = require('./use/view/use-view-controller/use-view-controller.cjs');
|
|
63
67
|
var vue = require('./use/vue/vue.cjs');
|
|
64
68
|
var overlayContainer = require('./util/overlay-container/overlay-container.cjs');
|
|
@@ -72,7 +76,7 @@ var render = require('./util/render/render.cjs');
|
|
|
72
76
|
var overlayViewUtil = require('./util/overlay-view-util/overlay-view-util.cjs');
|
|
73
77
|
var appStore = require('./util/store/app-store/app-store.cjs');
|
|
74
78
|
var uiStore = require('./util/store/ui-store/ui-store.cjs');
|
|
75
|
-
var index$
|
|
79
|
+
var index$h = require('./util/store/index.cjs');
|
|
76
80
|
var common = require('./props/common.cjs');
|
|
77
81
|
var textBox = require('./props/editor/text-box.cjs');
|
|
78
82
|
var span = require('./props/editor/span.cjs');
|
|
@@ -138,12 +142,16 @@ exports.IBizGridContainer = index$8.IBizGridContainer;
|
|
|
138
142
|
exports.PanelContainerImageState = panelContainerImage_state.PanelContainerImageState;
|
|
139
143
|
exports.PanelContainerImageController = panelContainerImage_controller.PanelContainerImageController;
|
|
140
144
|
exports.IBizPanelContainerImage = index$9.IBizPanelContainerImage;
|
|
145
|
+
exports.PanelContainerGroupState = panelContainerGroup_state.PanelContainerGroupState;
|
|
146
|
+
exports.PanelContainerGroupController = panelContainerGroup_controller.PanelContainerGroupController;
|
|
147
|
+
exports.IBizPanelContainerGroup = index$a.IBizPanelContainerGroup;
|
|
148
|
+
exports.IBizPanelTabPage = index$b.IBizPanelTabPage;
|
|
141
149
|
exports.AppRedirectView = appRedirectView.AppRedirectView;
|
|
142
|
-
exports.IBizView = index$
|
|
150
|
+
exports.IBizView = index$c.IBizView;
|
|
143
151
|
exports.TodoRedirect = todoRedirect.TodoRedirect;
|
|
144
|
-
exports.IBizPortalView = index$
|
|
145
|
-
exports.IBizViewLayoutPanelControl = index$
|
|
146
|
-
exports.IBizPanelControl = index$
|
|
152
|
+
exports.IBizPortalView = index$d.IBizPortalView;
|
|
153
|
+
exports.IBizViewLayoutPanelControl = index$e.IBizViewLayoutPanelControl;
|
|
154
|
+
exports.IBizPanelControl = index$f.IBizPanelControl;
|
|
147
155
|
exports.PluginFactory = pluginFactory.PluginFactory;
|
|
148
156
|
exports.useClickOutside = clickOutside.useClickOutside;
|
|
149
157
|
exports.useControlController = useControlController.useControlController;
|
|
@@ -152,8 +160,8 @@ exports.useFocusAndBlur = focusBlur.useFocusAndBlur;
|
|
|
152
160
|
exports.useNamespace = namespace.useNamespace;
|
|
153
161
|
exports.useRouteKey = route.useRouteKey;
|
|
154
162
|
exports.useRouterQuery = route.useRouterQuery;
|
|
155
|
-
exports.useCtx = index$
|
|
156
|
-
exports.useMobCtx = index$
|
|
163
|
+
exports.useCtx = index$g.useCtx;
|
|
164
|
+
exports.useMobCtx = index$g.useMobCtx;
|
|
157
165
|
exports.useViewController = useViewController.useViewController;
|
|
158
166
|
exports.EmptyVNode = vue.EmptyVNode;
|
|
159
167
|
exports.getOrigin = vue.getOrigin;
|
|
@@ -187,7 +195,7 @@ exports.openViewModal = overlayViewUtil.openViewModal;
|
|
|
187
195
|
exports.openViewPopover = overlayViewUtil.openViewPopover;
|
|
188
196
|
exports.useAppStore = appStore.useAppStore;
|
|
189
197
|
exports.useUIStore = uiStore.useUIStore;
|
|
190
|
-
exports.piniaInstance = index$
|
|
198
|
+
exports.piniaInstance = index$h.piniaInstance;
|
|
191
199
|
exports.RequiredProp = common.RequiredProp;
|
|
192
200
|
exports.getGridInputIpProps = textBox.getGridInputIpProps;
|
|
193
201
|
exports.getGridInputNumberProps = textBox.getGridInputNumberProps;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/vue3-util",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "vue3 工具包",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "es/index.mjs",
|
|
@@ -31,10 +31,10 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@ibiz-template/cli": "0.3.2",
|
|
34
|
-
"@ibiz-template/core": "^0.4.
|
|
35
|
-
"@ibiz-template/runtime": "^0.4.
|
|
34
|
+
"@ibiz-template/core": "^0.4.5",
|
|
35
|
+
"@ibiz-template/runtime": "^0.4.5",
|
|
36
36
|
"@ibiz-template/theme": "^0.4.0",
|
|
37
|
-
"@ibiz/model-core": "^0.0.
|
|
37
|
+
"@ibiz/model-core": "^0.0.24",
|
|
38
38
|
"@types/path-browserify": "^1.0.2",
|
|
39
39
|
"@types/qs": "^6.9.10",
|
|
40
40
|
"@types/systemjs": "^6.13.5",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"peerDependencies": {
|
|
52
52
|
"@ibiz-template/core": "^0.4.0",
|
|
53
53
|
"@ibiz-template/runtime": "^0.4.0",
|
|
54
|
-
"@ibiz/model-core": "^0.0.
|
|
54
|
+
"@ibiz/model-core": "^0.0.24",
|
|
55
55
|
"dayjs": "^1.11.10",
|
|
56
56
|
"path-browserify": "^1.0.1",
|
|
57
57
|
"pinia": "^2.1.7",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"vue": "^3.3.4",
|
|
62
62
|
"vue-router": "^4.2.4"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "28b2af793771fa7be9fac2e1c8396081f4002230"
|
|
65
65
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { App } from 'vue';
|
|
2
|
+
import { registerPanelItemProvider } from '@ibiz-template/runtime';
|
|
3
|
+
import { PanelContainerGroupState } from './panel-container-group.state';
|
|
4
|
+
import { PanelContainerGroupProvider } from './panel-container-group.provider';
|
|
5
|
+
import { PanelContainerGroupController } from './panel-container-group.controller';
|
|
6
|
+
import { PanelContainerGroup } from './panel-container-group';
|
|
7
|
+
import { withInstall } from '../../util';
|
|
8
|
+
|
|
9
|
+
export { PanelContainerGroupState, PanelContainerGroupController };
|
|
10
|
+
|
|
11
|
+
export const IBizPanelContainerGroup = withInstall(
|
|
12
|
+
PanelContainerGroup,
|
|
13
|
+
function (v: App) {
|
|
14
|
+
v.component(PanelContainerGroup.name, PanelContainerGroup);
|
|
15
|
+
registerPanelItemProvider(
|
|
16
|
+
'CONTAINER_CONTAINER_GROUP',
|
|
17
|
+
() => new PanelContainerGroupProvider(),
|
|
18
|
+
);
|
|
19
|
+
},
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export default IBizPanelContainerGroup;
|