@ibiz-template/vue3-util 0.6.14 → 0.6.16

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 (53) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/index.system.min.js +1 -1
  3. package/es/control/panel/panel/panel.mjs +1 -1
  4. package/es/control/panel/view-layout-panel/view-layout-panel.mjs +1 -1
  5. package/es/index.mjs +3 -0
  6. package/es/panel-component/index.d.ts +2 -0
  7. package/es/panel-component/index.d.ts.map +1 -1
  8. package/es/panel-component/index.mjs +3 -0
  9. package/es/panel-component/panel-container-tabs/index.d.ts +23 -0
  10. package/es/panel-component/panel-container-tabs/index.d.ts.map +1 -0
  11. package/es/panel-component/panel-container-tabs/index.mjs +19 -0
  12. package/es/panel-component/panel-container-tabs/panel-container-tabs.css +1 -0
  13. package/es/panel-component/panel-container-tabs/panel-container-tabs.d.ts +26 -0
  14. package/es/panel-component/panel-container-tabs/panel-container-tabs.d.ts.map +1 -0
  15. package/es/panel-component/panel-container-tabs/panel-container-tabs.mjs +35 -0
  16. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.d.ts +16 -0
  17. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.d.ts.map +1 -0
  18. package/es/panel-component/panel-container-tabs/panel-container-tabs.provider.mjs +15 -0
  19. package/es/panel-component/panel-field/index.d.ts +8 -0
  20. package/es/panel-component/panel-field/index.d.ts.map +1 -1
  21. package/es/panel-component/panel-field/panel-field.d.ts +8 -0
  22. package/es/panel-component/panel-field/panel-field.d.ts.map +1 -1
  23. package/es/panel-component/panel-field/panel-field.mjs +5 -1
  24. package/es/panel-component/teleport-placeholder/index.d.ts +28 -0
  25. package/es/panel-component/teleport-placeholder/index.d.ts.map +1 -0
  26. package/es/panel-component/teleport-placeholder/index.mjs +19 -0
  27. package/es/panel-component/teleport-placeholder/teleport-placeholder.css +1 -0
  28. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts +29 -0
  29. package/es/panel-component/teleport-placeholder/teleport-placeholder.d.ts.map +1 -0
  30. package/es/panel-component/teleport-placeholder/teleport-placeholder.mjs +63 -0
  31. package/es/panel-component/teleport-placeholder/teleport-placeholder.provider.d.ts +17 -0
  32. package/es/panel-component/teleport-placeholder/teleport-placeholder.provider.d.ts.map +1 -0
  33. package/es/panel-component/teleport-placeholder/teleport-placeholder.provider.mjs +16 -0
  34. package/es/view/common/index.d.ts +5 -0
  35. package/es/view/common/index.d.ts.map +1 -1
  36. package/es/view/common/view.d.ts +6 -3
  37. package/es/view/common/view.d.ts.map +1 -1
  38. package/es/view/common/view.mjs +62 -43
  39. package/lib/control/panel/panel/panel.cjs +1 -1
  40. package/lib/control/panel/view-layout-panel/view-layout-panel.cjs +1 -1
  41. package/lib/index.cjs +21 -15
  42. package/lib/panel-component/index.cjs +6 -0
  43. package/lib/panel-component/panel-container-tabs/index.cjs +24 -0
  44. package/lib/panel-component/panel-container-tabs/panel-container-tabs.cjs +37 -0
  45. package/lib/panel-component/panel-container-tabs/panel-container-tabs.css +1 -0
  46. package/lib/panel-component/panel-container-tabs/panel-container-tabs.provider.cjs +17 -0
  47. package/lib/panel-component/panel-field/panel-field.cjs +5 -1
  48. package/lib/panel-component/teleport-placeholder/index.cjs +25 -0
  49. package/lib/panel-component/teleport-placeholder/teleport-placeholder.cjs +65 -0
  50. package/lib/panel-component/teleport-placeholder/teleport-placeholder.css +1 -0
  51. package/lib/panel-component/teleport-placeholder/teleport-placeholder.provider.cjs +18 -0
  52. package/lib/view/common/view.cjs +60 -41
  53. package/package.json +5 -5
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;
@@ -17,6 +17,10 @@ const PanelField = /* @__PURE__ */ vue.defineComponent({
17
17
  controller: {
18
18
  type: panelField_controller.PanelFieldController,
19
19
  required: true
20
+ },
21
+ attrs: {
22
+ type: Object,
23
+ require: false
20
24
  }
21
25
  },
22
26
  setup(props) {
@@ -52,7 +56,7 @@ const PanelField = /* @__PURE__ */ vue.defineComponent({
52
56
  onFocus: (event) => this.controller.onFocus(event),
53
57
  onBlur: (event) => this.controller.onBlur(event),
54
58
  onEnter: (event) => this.controller.onEnter(event),
55
- ...this.$attrs
59
+ ...this.attrs
56
60
  };
57
61
  if (this.$slots.default) {
58
62
  editor = this.$slots.default(editorProps);
@@ -0,0 +1,25 @@
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 teleportPlaceholder = require('./teleport-placeholder.cjs');
8
+ var teleportPlaceholder_provider = require('./teleport-placeholder.provider.cjs');
9
+ var install = require('../../util/install.cjs');
10
+
11
+ "use strict";
12
+ const IBizTeleportPlaceholder = install.withInstall(
13
+ teleportPlaceholder.TeleportPlaceholder,
14
+ function(v) {
15
+ v.component(teleportPlaceholder.TeleportPlaceholder.name, teleportPlaceholder.TeleportPlaceholder);
16
+ runtime.registerPanelItemProvider(
17
+ "RAWITEM_TELEPORT_PLACEHOLDER",
18
+ () => new teleportPlaceholder_provider.TeleportPlaceholderProvider()
19
+ );
20
+ }
21
+ );
22
+
23
+ exports.TeleportPlaceholderProvider = teleportPlaceholder_provider.TeleportPlaceholderProvider;
24
+ exports.IBizTeleportPlaceholder = IBizTeleportPlaceholder;
25
+ exports.default = IBizTeleportPlaceholder;
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ require('../../use/index.cjs');
5
+ require('./teleport-placeholder.css');
6
+ var namespace = require('../../use/namespace/namespace.cjs');
7
+
8
+ "use strict";
9
+ const TeleportPlaceholder = /* @__PURE__ */ vue.defineComponent({
10
+ name: "IBizTeleportPlaceholder",
11
+ props: {
12
+ modelData: {
13
+ type: Object,
14
+ required: true
15
+ },
16
+ controller: {
17
+ type: Object,
18
+ required: true
19
+ }
20
+ },
21
+ setup(props) {
22
+ var _a, _b;
23
+ const ns = namespace.useNamespace("teleport-placeholder");
24
+ const tempStyle = vue.ref("");
25
+ const {
26
+ rawItem
27
+ } = props.modelData;
28
+ if (rawItem && rawItem.cssStyle) {
29
+ tempStyle.value = rawItem.cssStyle;
30
+ }
31
+ const classArr = vue.computed(() => {
32
+ const {
33
+ id
34
+ } = props.modelData;
35
+ const result = [ns.b(), ns.m(id)];
36
+ result.push(...props.controller.containerClass);
37
+ return result;
38
+ });
39
+ const viewCodeName = props.controller.panel.view.model.codeName;
40
+ let teleportTag = "".concat(viewCodeName == null ? void 0 : viewCodeName.toLowerCase(), "-").concat(props.modelData.id);
41
+ const paramTag = (_b = (_a = props.modelData.rawItem) == null ? void 0 : _a.rawItemParams) == null ? void 0 : _b.find((item) => item.key === "TeleportTag");
42
+ if (paramTag && paramTag.value) {
43
+ teleportTag = paramTag.value;
44
+ }
45
+ ibiz.log.debug("\u89C6\u56FE".concat(viewCodeName, "\u7684\u9762\u677F\u6210\u5458").concat(props.modelData.id, "\u7684\u5360\u4F4D\u6807\u8BC6\u662F\uFF1A"), teleportTag);
46
+ return {
47
+ ns,
48
+ classArr,
49
+ tempStyle,
50
+ teleportTag
51
+ };
52
+ },
53
+ render() {
54
+ if (!this.controller.state.visible) {
55
+ return;
56
+ }
57
+ return vue.createVNode("div", {
58
+ "id": this.teleportTag,
59
+ "class": this.classArr,
60
+ "style": this.tempStyle
61
+ }, null);
62
+ }
63
+ });
64
+
65
+ exports.TeleportPlaceholder = TeleportPlaceholder;
@@ -0,0 +1 @@
1
+ .ibiz-teleport-placeholder{width:auto;height:auto}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ require('../panel-rawitem/index.cjs');
4
+ var panelRawitem_controller = require('../panel-rawitem/panel-rawitem.controller.cjs');
5
+
6
+ "use strict";
7
+ class TeleportPlaceholderProvider {
8
+ constructor() {
9
+ this.component = "IBizTeleportPlaceholder";
10
+ }
11
+ async createController(panelItem, panel, parent) {
12
+ const c = new panelRawitem_controller.PanelRawItemController(panelItem, panel, parent);
13
+ await c.init();
14
+ return c;
15
+ }
16
+ }
17
+
18
+ exports.TeleportPlaceholderProvider = TeleportPlaceholderProvider;
@@ -8,6 +8,9 @@ var namespace = require('../../use/namespace/namespace.cjs');
8
8
  var useViewController = require('../../use/view/use-view-controller/use-view-controller.cjs');
9
9
 
10
10
  "use strict";
11
+ function _isSlot(s) {
12
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
13
+ }
11
14
  const View = /* @__PURE__ */ vue.defineComponent({
12
15
  name: "IBizView",
13
16
  props: {
@@ -30,10 +33,14 @@ const View = /* @__PURE__ */ vue.defineComponent({
30
33
  type: Object
31
34
  }
32
35
  },
33
- setup() {
36
+ setup(_props, {
37
+ slots
38
+ }) {
34
39
  const ns = namespace.useNamespace("view");
35
40
  const c = useViewController.useViewController((...args) => new runtime.ViewController(...args));
36
- const controls = runtime.getControlsByView(c.model);
41
+ const allControls = runtime.getControlsByView(c.model);
42
+ const teleportControls = allControls.filter((ctrl) => !!runtime.getCtrlTeleportTag(ctrl));
43
+ const controls = allControls.filter((ctrl) => !teleportControls.includes(ctrl));
37
44
  const {
38
45
  viewType,
39
46
  sysCss,
@@ -57,59 +64,59 @@ const View = /* @__PURE__ */ vue.defineComponent({
57
64
  }
58
65
  return null;
59
66
  };
67
+ const getCtrlProps = (ctrl) => {
68
+ const slotKey = ctrl.name || ctrl.id;
69
+ return {
70
+ context: c.context,
71
+ params: c.params,
72
+ ...c.slotProps[slotKey] || {},
73
+ modelData: ctrl
74
+ };
75
+ };
76
+ const renderControl = (ctrl) => {
77
+ const slotKey = ctrl.name || ctrl.id;
78
+ const ctrlProps = getCtrlProps(ctrl);
79
+ if (slots[slotKey]) {
80
+ return vue.renderSlot(slots, slotKey, ctrlProps);
81
+ }
82
+ const provider = c.providers[slotKey];
83
+ const comp = vue.resolveComponent((provider == null ? void 0 : provider.component) || "IBizControlShell");
84
+ if (provider) {
85
+ ctrlProps.provider = provider;
86
+ }
87
+ return vue.h(comp, ctrlProps);
88
+ };
60
89
  return {
61
90
  c,
62
91
  controls,
92
+ teleportControls,
63
93
  viewClassNames,
64
94
  onLayoutPanelCreated,
65
- renderViewMessage
95
+ renderViewMessage,
96
+ getCtrlProps,
97
+ renderControl
66
98
  };
67
99
  },
68
100
  render() {
69
- var _a;
101
+ var _a, _b;
70
102
  let layoutPanel = null;
71
103
  if (this.c.state.isCreated) {
72
- const slots = {
73
- ...this.$slots
74
- };
75
- if ((_a = this.controls) == null ? void 0 : _a.length) {
76
- this.controls.forEach((ctrl) => {
77
- const slotKey = ctrl.name || ctrl.id;
78
- const ctrlProps = {
79
- context: this.c.context,
80
- params: this.c.params
81
- };
82
- if (this.c.slotProps[slotKey]) {
83
- Object.assign(ctrlProps, this.c.slotProps[slotKey]);
84
- }
85
- const outCtrlSlot = slots[slotKey];
86
- if (outCtrlSlot) {
87
- slots[slotKey] = () => {
88
- return outCtrlSlot({
89
- modelData: ctrl,
90
- ...ctrlProps
91
- });
92
- };
93
- return;
94
- }
95
- const provider = this.c.providers[slotKey];
96
- if (provider) {
97
- slots[slotKey] = () => {
98
- const comp = vue.resolveComponent(provider.component);
99
- return vue.h(comp, {
100
- modelData: ctrl,
101
- ...ctrlProps,
102
- provider
103
- });
104
- };
105
- }
106
- });
107
- }
108
104
  if (this.c.engines.length === 0) {
109
105
  layoutPanel = vue.createVNode("span", {
110
106
  "style": "color:red;"
111
107
  }, [vue.createTextVNode("\u89C6\u56FE\u7C7B\u578B"), this.modelData.viewType, vue.createTextVNode("\u6682\u672A\u652F\u6301")]);
112
108
  } else {
109
+ const slots = {
110
+ ...this.$slots
111
+ };
112
+ if ((_a = this.controls) == null ? void 0 : _a.length) {
113
+ this.controls.forEach((ctrl) => {
114
+ const slotKey = ctrl.name || ctrl.id;
115
+ slots[slotKey] = () => {
116
+ return this.renderControl(ctrl);
117
+ };
118
+ });
119
+ }
113
120
  const viewLayoutPanel = this.c.model.viewLayoutPanel;
114
121
  const provider = this.c.providers[viewLayoutPanel.name];
115
122
  layoutPanel = vue.h(vue.resolveComponent(provider.component), {
@@ -122,10 +129,22 @@ const View = /* @__PURE__ */ vue.defineComponent({
122
129
  }, slots);
123
130
  }
124
131
  }
132
+ let teleportContent = null;
133
+ if (this.c.state.isCreated && ((_b = this.teleportControls) == null ? void 0 : _b.length)) {
134
+ teleportContent = this.teleportControls.map((ctrl) => {
135
+ let _slot;
136
+ return vue.createVNode(vue.Teleport, {
137
+ "to": runtime.getCtrlTeleportTag(ctrl),
138
+ "disabled": !this.c.state.activated
139
+ }, _isSlot(_slot = this.renderControl(ctrl)) ? _slot : {
140
+ default: () => [_slot]
141
+ });
142
+ });
143
+ }
125
144
  return vue.withDirectives(vue.createVNode("div", {
126
145
  "class": this.viewClassNames,
127
146
  "id": this.c.id
128
- }, [this.renderViewMessage("TOP"), layoutPanel, this.renderViewMessage("BOTTOM")]), [[vue.resolveDirective("loading"), this.c.state.isLoading]]);
147
+ }, [this.renderViewMessage("TOP"), layoutPanel, this.renderViewMessage("BOTTOM"), teleportContent]), [[vue.resolveDirective("loading"), this.c.state.isLoading]]);
129
148
  }
130
149
  });
131
150
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/vue3-util",
3
- "version": "0.6.14",
3
+ "version": "0.6.16",
4
4
  "description": "vue3 工具包",
5
5
  "main": "lib/index.cjs",
6
6
  "types": "es/index.d.ts",
@@ -39,10 +39,10 @@
39
39
  "license": "MIT",
40
40
  "devDependencies": {
41
41
  "@ibiz-template/cli": "^0.3.10",
42
- "@ibiz-template/core": "^0.6.13",
43
- "@ibiz-template/runtime": "^0.6.14",
42
+ "@ibiz-template/core": "^0.6.16",
43
+ "@ibiz-template/runtime": "^0.6.16",
44
44
  "@ibiz-template/theme": "^0.6.0",
45
- "@ibiz/model-core": "^0.1.18",
45
+ "@ibiz/model-core": "^0.1.19",
46
46
  "@types/path-browserify": "^1.0.2",
47
47
  "@types/qs": "^6.9.11",
48
48
  "@types/systemjs": "^6.13.5",
@@ -59,7 +59,7 @@
59
59
  "peerDependencies": {
60
60
  "@ibiz-template/core": "^0.6.0",
61
61
  "@ibiz-template/runtime": "^0.6.0",
62
- "@ibiz/model-core": "^0.1.18",
62
+ "@ibiz/model-core": "^0.1.19",
63
63
  "dayjs": "^1.11.10",
64
64
  "path-browserify": "^1.0.1",
65
65
  "pinia": "^2.1.7",