@ibiz-template/vue3-util 0.6.14 → 0.6.15

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.
Files changed (43) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/index.system.min.js +1 -1
  3. package/es/index.mjs +3 -0
  4. package/es/panel-component/index.d.ts +2 -0
  5. package/es/panel-component/index.d.ts.map +1 -1
  6. package/es/panel-component/index.mjs +3 -0
  7. package/es/panel-component/panel-container-tabs/index.d.ts +23 -0
  8. package/es/panel-component/panel-container-tabs/index.d.ts.map +1 -0
  9. package/es/panel-component/panel-container-tabs/index.mjs +19 -0
  10. package/es/panel-component/panel-container-tabs/panel-container-tabs.css +1 -0
  11. package/es/panel-component/panel-container-tabs/panel-container-tabs.d.ts +26 -0
  12. package/es/panel-component/panel-container-tabs/panel-container-tabs.d.ts.map +1 -0
  13. package/es/panel-component/panel-container-tabs/panel-container-tabs.mjs +35 -0
  14. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.d.ts +16 -0
  15. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.d.ts.map +1 -0
  16. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.mjs +15 -0
  17. package/es/panel-component/teleport-placeholder/index.d.ts +28 -0
  18. package/es/panel-component/teleport-placeholder/index.d.ts.map +1 -0
  19. package/es/panel-component/teleport-placeholder/index.mjs +19 -0
  20. package/es/panel-component/teleport-placeholder/teleport-placeholder.css +1 -0
  21. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts +29 -0
  22. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts.map +1 -0
  23. package/es/panel-component/teleport-placeholder/teleport-placeholder.mjs +63 -0
  24. package/es/panel-component/teleport-placeholder/teleport-placeholder.provider.d.ts +17 -0
  25. package/es/panel-component/teleport-placeholder/teleport-placeholder.provider.d.ts.map +1 -0
  26. package/es/panel-component/teleport-placeholder/teleport-placeholder.provider.mjs +16 -0
  27. package/es/view/common/index.d.ts +5 -0
  28. package/es/view/common/index.d.ts.map +1 -1
  29. package/es/view/common/view.d.ts +6 -3
  30. package/es/view/common/view.d.ts.map +1 -1
  31. package/es/view/common/view.mjs +62 -43
  32. package/lib/index.cjs +21 -15
  33. package/lib/panel-component/index.cjs +6 -0
  34. package/lib/panel-component/panel-container-tabs/index.cjs +24 -0
  35. package/lib/panel-component/panel-container-tabs/panel-container-tabs.cjs +37 -0
  36. package/lib/panel-component/panel-container-tabs/panel-container-tabs.css +1 -0
  37. package/lib/panel-component/panel-container-tabs/panel-container-tabs.provider.cjs +17 -0
  38. package/lib/panel-component/teleport-placeholder/index.cjs +25 -0
  39. package/lib/panel-component/teleport-placeholder/teleport-placeholder.cjs +65 -0
  40. package/lib/panel-component/teleport-placeholder/teleport-placeholder.css +1 -0
  41. package/lib/panel-component/teleport-placeholder/teleport-placeholder.provider.cjs +18 -0
  42. package/lib/view/common/view.cjs +60 -41
  43. package/package.json +6 -6
@@ -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 PanelContainerTabsProvider
10
+ * @implements {EditorProvider}
11
+ */
12
+ export declare class PanelContainerTabsProvider implements IPanelItemProvider {
13
+ component: string;
14
+ createController(panelItem: IPanelContainer, panel: PanelController, parent: PanelItemController | undefined): Promise<PanelItemController>;
15
+ }
16
+ //# sourceMappingURL=panel-container-tabs.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-container-tabs.provider.d.ts","sourceRoot":"","sources":["../../../src/panel-component/panel-container-tabs/panel-container-tabs.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,0BAA2B,YAAW,kBAAkB;IACnE,SAAS,EAAE,MAAM,CAA4B;IAEvC,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 { PanelContainerController } from '../panel-container/panel-container.controller.mjs';
2
+
3
+ "use strict";
4
+ class PanelContainerTabsProvider {
5
+ constructor() {
6
+ this.component = "IBizPanelContainerTabs";
7
+ }
8
+ async createController(panelItem, panel, parent) {
9
+ const c = new PanelContainerController(panelItem, panel, parent);
10
+ await c.init();
11
+ return c;
12
+ }
13
+ }
14
+
15
+ export { PanelContainerTabsProvider };
@@ -0,0 +1,28 @@
1
+ import { TeleportPlaceholderProvider } from './teleport-placeholder.provider';
2
+ export { TeleportPlaceholderProvider };
3
+ export declare const IBizTeleportPlaceholder: import("../../util").TypeWithInstall<import("vue").DefineComponent<{
4
+ modelData: {
5
+ type: import("vue").PropType<import("@ibiz/model-core").IPanelRawItem>;
6
+ required: true;
7
+ };
8
+ controller: {
9
+ type: import("vue").PropType<import("..").PanelRawItemController>;
10
+ required: true;
11
+ };
12
+ }, {
13
+ ns: import("@ibiz-template/core").Namespace;
14
+ classArr: import("vue").ComputedRef<(string | false)[]>;
15
+ tempStyle: import("vue").Ref<string>;
16
+ teleportTag: string;
17
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
18
+ modelData: {
19
+ type: import("vue").PropType<import("@ibiz/model-core").IPanelRawItem>;
20
+ required: true;
21
+ };
22
+ controller: {
23
+ type: import("vue").PropType<import("..").PanelRawItemController>;
24
+ required: true;
25
+ };
26
+ }>>, {}, {}>>;
27
+ export default IBizTeleportPlaceholder;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-component/teleport-placeholder/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAEvC,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;aASnC,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { registerPanelItemProvider } from '@ibiz-template/runtime';
2
+ import '../../util/index.mjs';
3
+ import { TeleportPlaceholder } from './teleport-placeholder.mjs';
4
+ import { TeleportPlaceholderProvider } from './teleport-placeholder.provider.mjs';
5
+ import { withInstall } from '../../util/install.mjs';
6
+
7
+ "use strict";
8
+ const IBizTeleportPlaceholder = withInstall(
9
+ TeleportPlaceholder,
10
+ function(v) {
11
+ v.component(TeleportPlaceholder.name, TeleportPlaceholder);
12
+ registerPanelItemProvider(
13
+ "RAWITEM_TELEPORT_PLACEHOLDER",
14
+ () => new TeleportPlaceholderProvider()
15
+ );
16
+ }
17
+ );
18
+
19
+ export { IBizTeleportPlaceholder, TeleportPlaceholderProvider, IBizTeleportPlaceholder as default };
@@ -0,0 +1 @@
1
+ .ibiz-teleport-placeholder{width:auto;height:auto}
@@ -0,0 +1,29 @@
1
+ import { IPanelRawItem } from '@ibiz/model-core';
2
+ import { PropType } from 'vue';
3
+ import { PanelRawItemController } from '../panel-rawitem';
4
+ import './teleport-placeholder.scss';
5
+ export declare const TeleportPlaceholder: import("vue").DefineComponent<{
6
+ modelData: {
7
+ type: PropType<IPanelRawItem>;
8
+ required: true;
9
+ };
10
+ controller: {
11
+ type: PropType<PanelRawItemController>;
12
+ required: true;
13
+ };
14
+ }, {
15
+ ns: import("@ibiz-template/core").Namespace;
16
+ classArr: import("vue").ComputedRef<(string | false)[]>;
17
+ tempStyle: import("vue").Ref<string>;
18
+ teleportTag: string;
19
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
20
+ modelData: {
21
+ type: PropType<IPanelRawItem>;
22
+ required: true;
23
+ };
24
+ controller: {
25
+ type: PropType<PanelRawItemController>;
26
+ required: true;
27
+ };
28
+ }>>, {}, {}>;
29
+ //# sourceMappingURL=teleport-placeholder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teleport-placeholder.d.ts","sourceRoot":"","sources":["../../../src/panel-component/teleport-placeholder/teleport-placeholder.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAA6B,QAAQ,EAAO,MAAM,KAAK,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,6BAA6B,CAAC;AAErC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;YA2D9B,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { defineComponent, ref, computed, createVNode } from 'vue';
2
+ import '../../use/index.mjs';
3
+ import './teleport-placeholder.css';
4
+ import { useNamespace } from '../../use/namespace/namespace.mjs';
5
+
6
+ "use strict";
7
+ const TeleportPlaceholder = /* @__PURE__ */ defineComponent({
8
+ name: "IBizTeleportPlaceholder",
9
+ props: {
10
+ modelData: {
11
+ type: Object,
12
+ required: true
13
+ },
14
+ controller: {
15
+ type: Object,
16
+ required: true
17
+ }
18
+ },
19
+ setup(props) {
20
+ var _a, _b;
21
+ const ns = useNamespace("teleport-placeholder");
22
+ const tempStyle = ref("");
23
+ const {
24
+ rawItem
25
+ } = props.modelData;
26
+ if (rawItem && rawItem.cssStyle) {
27
+ tempStyle.value = rawItem.cssStyle;
28
+ }
29
+ const classArr = computed(() => {
30
+ const {
31
+ id
32
+ } = props.modelData;
33
+ const result = [ns.b(), ns.m(id)];
34
+ result.push(...props.controller.containerClass);
35
+ return result;
36
+ });
37
+ const viewCodeName = props.controller.panel.view.model.codeName;
38
+ let teleportTag = "".concat(viewCodeName == null ? void 0 : viewCodeName.toLowerCase(), "-").concat(props.modelData.id);
39
+ const paramTag = (_b = (_a = props.modelData.rawItem) == null ? void 0 : _a.rawItemParams) == null ? void 0 : _b.find((item) => item.key === "TeleportTag");
40
+ if (paramTag && paramTag.value) {
41
+ teleportTag = paramTag.value;
42
+ }
43
+ ibiz.log.debug("\u89C6\u56FE".concat(viewCodeName, "\u7684\u9762\u677F\u6210\u5458").concat(props.modelData.id, "\u7684\u5360\u4F4D\u6807\u8BC6\u662F\uFF1A"), teleportTag);
44
+ return {
45
+ ns,
46
+ classArr,
47
+ tempStyle,
48
+ teleportTag
49
+ };
50
+ },
51
+ render() {
52
+ if (!this.controller.state.visible) {
53
+ return;
54
+ }
55
+ return createVNode("div", {
56
+ "id": this.teleportTag,
57
+ "class": this.classArr,
58
+ "style": this.tempStyle
59
+ }, null);
60
+ }
61
+ });
62
+
63
+ export { TeleportPlaceholder };
@@ -0,0 +1,17 @@
1
+ import { IPanelItemProvider, PanelController, PanelItemController } from '@ibiz-template/runtime';
2
+ import { IPanelCtrlPos } from '@ibiz/model-core';
3
+ import { PanelRawItemController } from '../panel-rawitem';
4
+ /**
5
+ * 面板控件teleport占位适配器
6
+ *
7
+ * @author lxm
8
+ * @date 2022-09-19 22:09:03
9
+ * @export
10
+ * @class TeleportPlaceholderProvider
11
+ * @implements {EditorProvider}
12
+ */
13
+ export declare class TeleportPlaceholderProvider implements IPanelItemProvider {
14
+ component: string;
15
+ createController(panelItem: IPanelCtrlPos, panel: PanelController, parent: PanelItemController | undefined): Promise<PanelRawItemController>;
16
+ }
17
+ //# sourceMappingURL=teleport-placeholder.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teleport-placeholder.provider.d.ts","sourceRoot":"","sources":["../../../src/panel-component/teleport-placeholder/teleport-placeholder.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,YAAW,kBAAkB;IACpE,SAAS,EAAE,MAAM,CAA6B;IAExC,gBAAgB,CACpB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,OAAO,CAAC,sBAAsB,CAAC;CAKnC"}
@@ -0,0 +1,16 @@
1
+ import '../panel-rawitem/index.mjs';
2
+ import { PanelRawItemController } from '../panel-rawitem/panel-rawitem.controller.mjs';
3
+
4
+ "use strict";
5
+ class TeleportPlaceholderProvider {
6
+ constructor() {
7
+ this.component = "IBizTeleportPlaceholder";
8
+ }
9
+ async createController(panelItem, panel, parent) {
10
+ const c = new PanelRawItemController(panelItem, panel, parent);
11
+ await c.init();
12
+ return c;
13
+ }
14
+ }
15
+
16
+ export { TeleportPlaceholderProvider };
@@ -20,9 +20,14 @@ export declare const IBizView: import("../../util").TypeWithInstall<import("vue"
20
20
  }, {
21
21
  c: import("@ibiz-template/runtime").ViewController<import("@ibiz/model-core").IAppView, import("@ibiz-template/runtime").IViewState, import("@ibiz-template/runtime").IViewEvent>;
22
22
  controls: import("@ibiz/model-core").IControl[];
23
+ teleportControls: import("@ibiz/model-core").IControl[];
23
24
  viewClassNames: import("vue").ComputedRef<(string | undefined)[]>;
24
25
  onLayoutPanelCreated: (controller: import("@ibiz-template/runtime").IViewLayoutPanelController) => void;
25
26
  renderViewMessage: (position: "TOP" | "BOTTOM" | "BODY") => JSX.Element | null;
27
+ getCtrlProps: (ctrl: import("@ibiz/model-core").IControl) => IParams;
28
+ renderControl: (ctrl: import("@ibiz/model-core").IControl) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
29
+ [key: string]: any;
30
+ }>;
26
31
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
27
32
  context: import("vue").PropType<IContext>;
28
33
  params: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/view/common/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAGnB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/view/common/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAGnB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { IModal, IViewLayoutPanelController, IViewProvider, ViewController } from '@ibiz-template/runtime';
2
- import { IAppView } from '@ibiz/model-core';
3
- import { PropType } from 'vue';
2
+ import { IAppView, IControl } from '@ibiz/model-core';
3
+ import { PropType, VNode } from 'vue';
4
4
  import './view.scss';
5
5
  export declare const View: import("vue").DefineComponent<{
6
6
  context: PropType<IContext>;
@@ -23,10 +23,13 @@ export declare const View: import("vue").DefineComponent<{
23
23
  };
24
24
  }, {
25
25
  c: ViewController<IAppView, import("@ibiz-template/runtime").IViewState, import("@ibiz-template/runtime").IViewEvent>;
26
- controls: import("@ibiz/model-core").IControl[];
26
+ controls: IControl[];
27
+ teleportControls: IControl[];
27
28
  viewClassNames: import("vue").ComputedRef<(string | undefined)[]>;
28
29
  onLayoutPanelCreated: (controller: IViewLayoutPanelController) => void;
29
30
  renderViewMessage: (position: 'TOP' | 'BOTTOM' | 'BODY') => JSX.Element | null;
31
+ getCtrlProps: (ctrl: IControl) => IParams;
32
+ renderControl: (ctrl: IControl) => VNode;
30
33
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
31
34
  context: PropType<IContext>;
32
35
  params: {
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/common/view.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,0BAA0B,EAC1B,aAAa,EACb,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAGL,QAAQ,EAIT,MAAM,KAAK,CAAC;AACb,OAAO,aAAa,CAAC;AAGrB,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;uCA4BC,0BAA0B,KACrC,IAAI;kCAI8B,KAAK,GAAG,QAAQ,GAAG,MAAM;;;;;;;;;;;;;;;;;;;;;;MAsGhE,CAAC"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/view/common/view.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,MAAM,EACN,0BAA0B,EAC1B,aAAa,EACb,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAGL,QAAQ,EAER,KAAK,EAIN,MAAM,KAAK,CAAC;AACb,OAAO,aAAa,CAAC;AAGrB,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;uCAmCC,0BAA0B,KACrC,IAAI;kCAI8B,KAAK,GAAG,QAAQ,GAAG,MAAM;yBAsBlC,QAAQ,KAAG,OAAO;0BAiBjB,QAAQ,KAAG,KAAK;;;;;;;;;;;;;;;;;;;;;;MAiG/C,CAAC"}
@@ -1,11 +1,14 @@
1
- import { defineComponent, computed, createVNode, resolveComponent, h, createTextVNode, withDirectives, resolveDirective } from 'vue';
2
- import { ViewController, getControlsByView } from '@ibiz-template/runtime';
1
+ import { isVNode, defineComponent, computed, createVNode, resolveComponent, renderSlot, h, createTextVNode, Teleport, withDirectives, resolveDirective } from 'vue';
2
+ import { ViewController, getControlsByView, getCtrlTeleportTag } from '@ibiz-template/runtime';
3
3
  import './view.css';
4
4
  import '../../use/index.mjs';
5
5
  import { useNamespace } from '../../use/namespace/namespace.mjs';
6
6
  import { useViewController } from '../../use/view/use-view-controller/use-view-controller.mjs';
7
7
 
8
8
  "use strict";
9
+ function _isSlot(s) {
10
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
11
+ }
9
12
  const View = /* @__PURE__ */ defineComponent({
10
13
  name: "IBizView",
11
14
  props: {
@@ -28,10 +31,14 @@ const View = /* @__PURE__ */ defineComponent({
28
31
  type: Object
29
32
  }
30
33
  },
31
- setup() {
34
+ setup(_props, {
35
+ slots
36
+ }) {
32
37
  const ns = useNamespace("view");
33
38
  const c = useViewController((...args) => new ViewController(...args));
34
- const controls = getControlsByView(c.model);
39
+ const allControls = getControlsByView(c.model);
40
+ const teleportControls = allControls.filter((ctrl) => !!getCtrlTeleportTag(ctrl));
41
+ const controls = allControls.filter((ctrl) => !teleportControls.includes(ctrl));
35
42
  const {
36
43
  viewType,
37
44
  sysCss,
@@ -55,59 +62,59 @@ const View = /* @__PURE__ */ defineComponent({
55
62
  }
56
63
  return null;
57
64
  };
65
+ const getCtrlProps = (ctrl) => {
66
+ const slotKey = ctrl.name || ctrl.id;
67
+ return {
68
+ context: c.context,
69
+ params: c.params,
70
+ ...c.slotProps[slotKey] || {},
71
+ modelData: ctrl
72
+ };
73
+ };
74
+ const renderControl = (ctrl) => {
75
+ const slotKey = ctrl.name || ctrl.id;
76
+ const ctrlProps = getCtrlProps(ctrl);
77
+ if (slots[slotKey]) {
78
+ return renderSlot(slots, slotKey, ctrlProps);
79
+ }
80
+ const provider = c.providers[slotKey];
81
+ const comp = resolveComponent((provider == null ? void 0 : provider.component) || "IBizControlShell");
82
+ if (provider) {
83
+ ctrlProps.provider = provider;
84
+ }
85
+ return h(comp, ctrlProps);
86
+ };
58
87
  return {
59
88
  c,
60
89
  controls,
90
+ teleportControls,
61
91
  viewClassNames,
62
92
  onLayoutPanelCreated,
63
- renderViewMessage
93
+ renderViewMessage,
94
+ getCtrlProps,
95
+ renderControl
64
96
  };
65
97
  },
66
98
  render() {
67
- var _a;
99
+ var _a, _b;
68
100
  let layoutPanel = null;
69
101
  if (this.c.state.isCreated) {
70
- const slots = {
71
- ...this.$slots
72
- };
73
- if ((_a = this.controls) == null ? void 0 : _a.length) {
74
- this.controls.forEach((ctrl) => {
75
- const slotKey = ctrl.name || ctrl.id;
76
- const ctrlProps = {
77
- context: this.c.context,
78
- params: this.c.params
79
- };
80
- if (this.c.slotProps[slotKey]) {
81
- Object.assign(ctrlProps, this.c.slotProps[slotKey]);
82
- }
83
- const outCtrlSlot = slots[slotKey];
84
- if (outCtrlSlot) {
85
- slots[slotKey] = () => {
86
- return outCtrlSlot({
87
- modelData: ctrl,
88
- ...ctrlProps
89
- });
90
- };
91
- return;
92
- }
93
- const provider = this.c.providers[slotKey];
94
- if (provider) {
95
- slots[slotKey] = () => {
96
- const comp = resolveComponent(provider.component);
97
- return h(comp, {
98
- modelData: ctrl,
99
- ...ctrlProps,
100
- provider
101
- });
102
- };
103
- }
104
- });
105
- }
106
102
  if (this.c.engines.length === 0) {
107
103
  layoutPanel = createVNode("span", {
108
104
  "style": "color:red;"
109
105
  }, [createTextVNode("\u89C6\u56FE\u7C7B\u578B"), this.modelData.viewType, createTextVNode("\u6682\u672A\u652F\u6301")]);
110
106
  } else {
107
+ const slots = {
108
+ ...this.$slots
109
+ };
110
+ if ((_a = this.controls) == null ? void 0 : _a.length) {
111
+ this.controls.forEach((ctrl) => {
112
+ const slotKey = ctrl.name || ctrl.id;
113
+ slots[slotKey] = () => {
114
+ return this.renderControl(ctrl);
115
+ };
116
+ });
117
+ }
111
118
  const viewLayoutPanel = this.c.model.viewLayoutPanel;
112
119
  const provider = this.c.providers[viewLayoutPanel.name];
113
120
  layoutPanel = h(resolveComponent(provider.component), {
@@ -120,10 +127,22 @@ const View = /* @__PURE__ */ defineComponent({
120
127
  }, slots);
121
128
  }
122
129
  }
130
+ let teleportContent = null;
131
+ if (this.c.state.isCreated && ((_b = this.teleportControls) == null ? void 0 : _b.length)) {
132
+ teleportContent = this.teleportControls.map((ctrl) => {
133
+ let _slot;
134
+ return createVNode(Teleport, {
135
+ "to": getCtrlTeleportTag(ctrl),
136
+ "disabled": !this.c.state.activated
137
+ }, _isSlot(_slot = this.renderControl(ctrl)) ? _slot : {
138
+ default: () => [_slot]
139
+ });
140
+ });
141
+ }
123
142
  return withDirectives(createVNode("div", {
124
143
  "class": this.viewClassNames,
125
144
  "id": this.c.id
126
- }, [this.renderViewMessage("TOP"), layoutPanel, this.renderViewMessage("BOTTOM")]), [[resolveDirective("loading"), this.c.state.isLoading]]);
145
+ }, [this.renderViewMessage("TOP"), layoutPanel, this.renderViewMessage("BOTTOM"), teleportContent]), [[resolveDirective("loading"), this.c.state.isLoading]]);
127
146
  }
128
147
  });
129
148
 
package/lib/index.cjs CHANGED
@@ -53,13 +53,16 @@ var panelContainerGroup_controller = require('./panel-component/panel-container-
53
53
  var index$a = require('./panel-component/panel-container-group/index.cjs');
54
54
  var index$b = require('./panel-component/panel-tab-page/index.cjs');
55
55
  var index$c = require('./panel-component/panel-item-render/index.cjs');
56
+ var teleportPlaceholder_provider = require('./panel-component/teleport-placeholder/teleport-placeholder.provider.cjs');
57
+ var index$d = require('./panel-component/teleport-placeholder/index.cjs');
58
+ var index$e = require('./panel-component/panel-container-tabs/index.cjs');
56
59
  var appRedirectView = require('./view/app-redirect-view/app-redirect-view.cjs');
57
- var index$d = require('./view/common/index.cjs');
60
+ var index$f = require('./view/common/index.cjs');
58
61
  var todoRedirect = require('./view/todo-redirect/todo-redirect.cjs');
59
- var index$e = require('./view/portal-view/index.cjs');
60
- var index$f = require('./view/de-redirect-view/index.cjs');
61
- var index$g = require('./control/panel/view-layout-panel/index.cjs');
62
- var index$h = require('./control/panel/panel/index.cjs');
62
+ var index$g = require('./view/portal-view/index.cjs');
63
+ var index$h = require('./view/de-redirect-view/index.cjs');
64
+ var index$i = require('./control/panel/view-layout-panel/index.cjs');
65
+ var index$j = require('./control/panel/panel/index.cjs');
63
66
  var pluginFactory = require('./plugin/plugin-factory/plugin-factory.cjs');
64
67
  var clickOutside = require('./use/click-outside/click-outside.cjs');
65
68
  var useControlController = require('./use/control/use-control-controller/use-control-controller.cjs');
@@ -67,7 +70,7 @@ var event = require('./use/event/event.cjs');
67
70
  var focusBlur = require('./use/focus-blur/focus-blur.cjs');
68
71
  var namespace = require('./use/namespace/namespace.cjs');
69
72
  var route = require('./use/route/route.cjs');
70
- var index$i = require('./use/util/index.cjs');
73
+ var index$k = require('./use/util/index.cjs');
71
74
  var useViewController = require('./use/view/use-view-controller/use-view-controller.cjs');
72
75
  var vue = require('./use/vue/vue.cjs');
73
76
  var overlayContainer = require('./util/overlay-container/overlay-container.cjs');
@@ -81,7 +84,7 @@ var render = require('./util/render/render.cjs');
81
84
  var overlayViewUtil = require('./util/overlay-view-util/overlay-view-util.cjs');
82
85
  var appStore = require('./util/store/app-store/app-store.cjs');
83
86
  var uiStore = require('./util/store/ui-store/ui-store.cjs');
84
- var index$j = require('./util/store/index.cjs');
87
+ var index$l = require('./util/store/index.cjs');
85
88
  var common = require('./props/common.cjs');
86
89
  var textBox = require('./props/editor/text-box.cjs');
87
90
  var span = require('./props/editor/span.cjs');
@@ -154,13 +157,16 @@ exports.PanelContainerGroupController = panelContainerGroup_controller.PanelCont
154
157
  exports.IBizPanelContainerGroup = index$a.IBizPanelContainerGroup;
155
158
  exports.IBizPanelTabPage = index$b.IBizPanelTabPage;
156
159
  exports.IBizPanelItemRender = index$c.IBizPanelItemRender;
160
+ exports.TeleportPlaceholderProvider = teleportPlaceholder_provider.TeleportPlaceholderProvider;
161
+ exports.IBizTeleportPlaceholder = index$d.IBizTeleportPlaceholder;
162
+ exports.IBizPanelContainerTabs = index$e.IBizPanelContainerTabs;
157
163
  exports.AppRedirectView = appRedirectView.AppRedirectView;
158
- exports.IBizView = index$d.IBizView;
164
+ exports.IBizView = index$f.IBizView;
159
165
  exports.TodoRedirect = todoRedirect.TodoRedirect;
160
- exports.IBizPortalView = index$e.IBizPortalView;
161
- exports.IBizDeRedirectView = index$f.IBizDeRedirectView;
162
- exports.IBizViewLayoutPanelControl = index$g.IBizViewLayoutPanelControl;
163
- exports.IBizPanelControl = index$h.IBizPanelControl;
166
+ exports.IBizPortalView = index$g.IBizPortalView;
167
+ exports.IBizDeRedirectView = index$h.IBizDeRedirectView;
168
+ exports.IBizViewLayoutPanelControl = index$i.IBizViewLayoutPanelControl;
169
+ exports.IBizPanelControl = index$j.IBizPanelControl;
164
170
  exports.PluginFactory = pluginFactory.PluginFactory;
165
171
  exports.useClickOutside = clickOutside.useClickOutside;
166
172
  exports.useControlController = useControlController.useControlController;
@@ -169,8 +175,8 @@ exports.useFocusAndBlur = focusBlur.useFocusAndBlur;
169
175
  exports.useNamespace = namespace.useNamespace;
170
176
  exports.useRouteKey = route.useRouteKey;
171
177
  exports.useRouterQuery = route.useRouterQuery;
172
- exports.useCtx = index$i.useCtx;
173
- exports.useMobCtx = index$i.useMobCtx;
178
+ exports.useCtx = index$k.useCtx;
179
+ exports.useMobCtx = index$k.useMobCtx;
174
180
  exports.useViewController = useViewController.useViewController;
175
181
  exports.EmptyVNode = vue.EmptyVNode;
176
182
  exports.getOrigin = vue.getOrigin;
@@ -205,7 +211,7 @@ exports.openViewModal = overlayViewUtil.openViewModal;
205
211
  exports.openViewPopover = overlayViewUtil.openViewPopover;
206
212
  exports.useAppStore = appStore.useAppStore;
207
213
  exports.useUIStore = uiStore.useUIStore;
208
- exports.piniaInstance = index$j.piniaInstance;
214
+ exports.piniaInstance = index$l.piniaInstance;
209
215
  exports.RequiredProp = common.RequiredProp;
210
216
  exports.getGridInputIpProps = textBox.getGridInputIpProps;
211
217
  exports.getGridInputNumberProps = textBox.getGridInputNumberProps;
@@ -13,6 +13,8 @@ var index$9 = require('./panel-container-image/index.cjs');
13
13
  var index$a = require('./panel-container-group/index.cjs');
14
14
  var index$b = require('./panel-tab-page/index.cjs');
15
15
  var index$c = require('./panel-item-render/index.cjs');
16
+ var index$d = require('./teleport-placeholder/index.cjs');
17
+ var index$e = require('./panel-container-tabs/index.cjs');
16
18
  var panelContainer_state = require('./panel-container/panel-container.state.cjs');
17
19
  var panelContainer_controller = require('./panel-container/panel-container.controller.cjs');
18
20
  var panelCtrlPos_controller = require('./panel-ctrl-pos/panel-ctrl-pos.controller.cjs');
@@ -34,6 +36,7 @@ var panelContainerImage_state = require('./panel-container-image/panel-container
34
36
  var panelContainerImage_controller = require('./panel-container-image/panel-container-image.controller.cjs');
35
37
  var panelContainerGroup_state = require('./panel-container-group/panel-container-group.state.cjs');
36
38
  var panelContainerGroup_controller = require('./panel-container-group/panel-container-group.controller.cjs');
39
+ var teleportPlaceholder_provider = require('./teleport-placeholder/teleport-placeholder.provider.cjs');
37
40
 
38
41
  "use strict";
39
42
 
@@ -50,6 +53,8 @@ exports.IBizPanelContainerImage = index$9.IBizPanelContainerImage;
50
53
  exports.IBizPanelContainerGroup = index$a.IBizPanelContainerGroup;
51
54
  exports.IBizPanelTabPage = index$b.IBizPanelTabPage;
52
55
  exports.IBizPanelItemRender = index$c.IBizPanelItemRender;
56
+ exports.IBizTeleportPlaceholder = index$d.IBizTeleportPlaceholder;
57
+ exports.IBizPanelContainerTabs = index$e.IBizPanelContainerTabs;
53
58
  exports.PanelContainerState = panelContainer_state.PanelContainerState;
54
59
  exports.PanelContainerController = panelContainer_controller.PanelContainerController;
55
60
  exports.PanelCtrlPosController = panelCtrlPos_controller.PanelCtrlPosController;
@@ -71,3 +76,4 @@ exports.PanelContainerImageState = panelContainerImage_state.PanelContainerImage
71
76
  exports.PanelContainerImageController = panelContainerImage_controller.PanelContainerImageController;
72
77
  exports.PanelContainerGroupState = panelContainerGroup_state.PanelContainerGroupState;
73
78
  exports.PanelContainerGroupController = panelContainerGroup_controller.PanelContainerGroupController;
79
+ exports.TeleportPlaceholderProvider = teleportPlaceholder_provider.TeleportPlaceholderProvider;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var runtime = require('@ibiz-template/runtime');
6
+ require('../../util/index.cjs');
7
+ var panelContainerTabs = require('./panel-container-tabs.cjs');
8
+ var panelContainerTabs_provider = require('./panel-container-tabs.provider.cjs');
9
+ var install = require('../../util/install.cjs');
10
+
11
+ "use strict";
12
+ const IBizPanelContainerTabs = install.withInstall(
13
+ panelContainerTabs.PanelContainerTabs,
14
+ function(v) {
15
+ v.component(panelContainerTabs.PanelContainerTabs.name, panelContainerTabs.PanelContainerTabs);
16
+ runtime.registerPanelItemProvider(
17
+ "CONTAINER_TABS",
18
+ () => new panelContainerTabs_provider.PanelContainerTabsProvider()
19
+ );
20
+ }
21
+ );
22
+
23
+ exports.IBizPanelContainerTabs = IBizPanelContainerTabs;
24
+ exports.default = IBizPanelContainerTabs;
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ require('../../use/index.cjs');
5
+ require('./panel-container-tabs.css');
6
+ var panelContainer_controller = require('../panel-container/panel-container.controller.cjs');
7
+ var namespace = require('../../use/namespace/namespace.cjs');
8
+
9
+ "use strict";
10
+ const PanelContainerTabs = /* @__PURE__ */ vue.defineComponent({
11
+ name: "IBizPanelContainerTabs",
12
+ props: {
13
+ modelData: {
14
+ type: Object,
15
+ required: true
16
+ },
17
+ controller: {
18
+ type: panelContainer_controller.PanelContainerController,
19
+ required: true
20
+ }
21
+ },
22
+ setup() {
23
+ const ns = namespace.useNamespace("panel-container-tabs");
24
+ return {
25
+ ns
26
+ };
27
+ },
28
+ render() {
29
+ return vue.h(vue.resolveComponent("IBizPanelContainer"), {
30
+ ...this.$props,
31
+ ...this.$attrs,
32
+ class: this.ns.b()
33
+ }, this.$slots);
34
+ }
35
+ });
36
+
37
+ exports.PanelContainerTabs = PanelContainerTabs;
@@ -0,0 +1 @@
1
+ .ibiz-panel-container-tabs{position:relative}.ibiz-panel-container-tabs .el-tabs{--el-tabs-header-height:52px}.ibiz-panel-container-tabs .el-tabs__nav-wrap::after{display:none}.ibiz-panel-container-tabs::after{position:absolute;bottom:0;left:0;z-index:var(--el-index-normal);width:100%;height:2px;content:"";background-color:var(--el-border-color-light)}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var panelContainer_controller = require('../panel-container/panel-container.controller.cjs');
4
+
5
+ "use strict";
6
+ class PanelContainerTabsProvider {
7
+ constructor() {
8
+ this.component = "IBizPanelContainerTabs";
9
+ }
10
+ async createController(panelItem, panel, parent) {
11
+ const c = new panelContainer_controller.PanelContainerController(panelItem, panel, parent);
12
+ await c.init();
13
+ return c;
14
+ }
15
+ }
16
+
17
+ exports.PanelContainerTabsProvider = PanelContainerTabsProvider;