@ibiz-template/mob-vue3-components 0.7.41-alpha.13 → 0.7.41-alpha.14

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 (64) hide show
  1. package/dist/index-Pq2AnubY.js +76 -0
  2. package/dist/index-Pq2AnubY.js.map +1 -0
  3. package/dist/index.min.css +9 -9
  4. package/dist/index.system.min.js +1 -1
  5. package/dist/{quill-wfN-3C_3.js → quill-QfnovuHC.js} +2 -2
  6. package/dist/{quill-wfN-3C_3.js.map → quill-QfnovuHC.js.map} +1 -1
  7. package/dist/{quill-editor-preview-G0MpMJzC.js → quill-editor-preview-0dI65Nu7.js} +2 -2
  8. package/dist/{quill-editor-preview-G0MpMJzC.js.map → quill-editor-preview-0dI65Nu7.js.map} +1 -1
  9. package/dist/{quill-editor-VqApoQJq.js → quill-editor-x-OFlakL.js} +2 -2
  10. package/dist/{quill-editor-VqApoQJq.js.map → quill-editor-x-OFlakL.js.map} +1 -1
  11. package/dist/tree-4CqtwsXL.js +2 -0
  12. package/dist/tree-4CqtwsXL.js.map +1 -0
  13. package/es/_virtual/index12.mjs +2 -2
  14. package/es/_virtual/index13.mjs +2 -2
  15. package/es/common/action-group/action-group.css +1 -0
  16. package/es/common/action-group/action-group.d.ts +54 -0
  17. package/es/common/action-group/action-group.mjs +165 -0
  18. package/es/common/action-toolbar/action-toolbar.d.ts +1 -0
  19. package/es/common/action-toolbar/action-toolbar.mjs +20 -8
  20. package/es/common/button-list/button-list.css +1 -1
  21. package/es/common/button-list/button-list.d.ts +3 -2
  22. package/es/common/button-list/button-list.mjs +83 -63
  23. package/es/common/index.mjs +2 -0
  24. package/es/common/rawitem/rawitem.mjs +2 -2
  25. package/es/control/list/md-ctrl/md-ctrl.mjs +13 -15
  26. package/es/control/tab-exp-panel/index.d.ts +1 -0
  27. package/es/control/tab-exp-panel/tab-exp-panel.css +1 -0
  28. package/es/control/tab-exp-panel/tab-exp-panel.d.ts +2 -0
  29. package/es/control/tab-exp-panel/tab-exp-panel.mjs +28 -1
  30. package/es/control/tree/tree.css +1 -1
  31. package/es/control/tree/tree.d.ts +15 -0
  32. package/es/control/tree/tree.mjs +14 -2
  33. package/es/editor/raw/ibiz-raw/ibiz-raw.d.ts +2 -2
  34. package/es/editor/span/span/span.d.ts +5 -3
  35. package/es/editor/span/span/span.mjs +5 -5
  36. package/es/editor/upload/use/use-van-upload.mjs +19 -1
  37. package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.mjs +1 -1
  38. package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.mjs +1 -1
  39. package/es/panel-component/panel-button-list/panel-button-list.controller.d.ts +1 -1
  40. package/es/panel-component/panel-button-list/panel-button-list.controller.mjs +19 -18
  41. package/lib/_virtual/index12.cjs +2 -2
  42. package/lib/_virtual/index13.cjs +2 -2
  43. package/lib/common/action-group/action-group.cjs +167 -0
  44. package/lib/common/action-group/action-group.css +1 -0
  45. package/lib/common/action-toolbar/action-toolbar.cjs +20 -8
  46. package/lib/common/button-list/button-list.cjs +82 -62
  47. package/lib/common/button-list/button-list.css +1 -1
  48. package/lib/common/index.cjs +2 -0
  49. package/lib/common/rawitem/rawitem.cjs +2 -2
  50. package/lib/control/list/md-ctrl/md-ctrl.cjs +12 -14
  51. package/lib/control/tab-exp-panel/tab-exp-panel.cjs +27 -0
  52. package/lib/control/tab-exp-panel/tab-exp-panel.css +1 -0
  53. package/lib/control/tree/tree.cjs +14 -2
  54. package/lib/control/tree/tree.css +1 -1
  55. package/lib/editor/span/span/span.cjs +5 -5
  56. package/lib/editor/upload/use/use-van-upload.cjs +19 -1
  57. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.cjs +1 -1
  58. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.cjs +1 -1
  59. package/lib/panel-component/panel-button-list/panel-button-list.controller.cjs +18 -17
  60. package/package.json +5 -5
  61. package/dist/index-TTGYeV0q.js +0 -76
  62. package/dist/index-TTGYeV0q.js.map +0 -1
  63. package/dist/tree-nburezSg.js +0 -2
  64. package/dist/tree-nburezSg.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { PanelItemController, ButtonContainerState, UIActionButtonState, UIActionUtil } from '@ibiz-template/runtime';
1
+ import { PanelItemController, ButtonContainerState, getAllUIActionItems, UIActionButtonState, UIActionUtil } from '@ibiz-template/runtime';
2
2
  import { PanelButtonListState } from './panel-button-list.state.mjs';
3
3
 
4
4
  "use strict";
@@ -45,20 +45,22 @@ class PanelButtonListController extends PanelItemController {
45
45
  * @memberof PanelButtonListController
46
46
  */
47
47
  async initButtonsState() {
48
- var _a;
49
48
  const { buttonListType, uiactionGroup, panelButtons } = this.model;
50
49
  if (buttonListType === "UIACTIONGROUP") {
51
- (_a = uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.forEach((detail) => {
52
- if (detail.uiactionId) {
53
- const buttonState = new UIActionButtonState(
54
- detail.id,
55
- this.model.appId,
56
- detail.uiactionId,
57
- detail
58
- );
59
- this.state.buttonsState.addState(detail.id, buttonState);
60
- }
61
- });
50
+ if (uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) {
51
+ const actions = getAllUIActionItems(uiactionGroup.uiactionGroupDetails);
52
+ actions.forEach((detail) => {
53
+ if (detail.uiactionId) {
54
+ const buttonState = new UIActionButtonState(
55
+ detail.id,
56
+ detail.appId,
57
+ detail.uiactionId,
58
+ detail
59
+ );
60
+ this.state.buttonsState.addState(detail.id, buttonState);
61
+ }
62
+ });
63
+ }
62
64
  } else {
63
65
  panelButtons == null ? void 0 : panelButtons.forEach((button) => {
64
66
  if (button.uiactionId) {
@@ -110,12 +112,11 @@ class PanelButtonListController extends PanelItemController {
110
112
  * @memberof PanelButtonListController
111
113
  */
112
114
  getModelById(id) {
113
- var _a;
114
115
  const { buttonListType, uiactionGroup, panelButtons } = this.model;
115
- if (buttonListType === "UIACTIONGROUP")
116
- return (_a = uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.find(
117
- (detail) => detail.id === id
118
- );
116
+ if (buttonListType === "UIACTIONGROUP") {
117
+ const actions = getAllUIActionItems(uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails);
118
+ return actions.find((detail) => detail.id === id);
119
+ }
119
120
  return panelButtons == null ? void 0 : panelButtons.find((button) => button.id === id);
120
121
  }
121
122
  /**
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var middlewares = {};
3
+ var frameTalkClientPc = {exports: {}};
4
4
 
5
- exports.__exports = middlewares;
5
+ exports.__module = frameTalkClientPc;
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var frameTalkClientPc = {exports: {}};
3
+ var middlewares = {};
4
4
 
5
- exports.__module = frameTalkClientPc;
5
+ exports.__exports = middlewares;
@@ -0,0 +1,167 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ require('../../util/index.cjs');
6
+ require('./action-group.css');
7
+ var buttonUtil = require('../../util/button-util/button-util.cjs');
8
+
9
+ "use strict";
10
+ const IBizActionGroup = /* @__PURE__ */ vue.defineComponent({
11
+ name: "IBizActionGroup",
12
+ props: {
13
+ actionDetail: {
14
+ type: Object,
15
+ required: true
16
+ },
17
+ actionsState: {
18
+ type: Object,
19
+ required: true
20
+ },
21
+ popoverClassName: {
22
+ type: String
23
+ },
24
+ direction: {
25
+ type: String,
26
+ default: "horizontal"
27
+ }
28
+ },
29
+ emits: {
30
+ actionClick: (detail, event) => true,
31
+ popoverVisibleChange: (visible) => true
32
+ },
33
+ setup(props, {
34
+ emit
35
+ }) {
36
+ const ns = vue3Util.useNamespace("action-group");
37
+ const showPopover = vue.ref(false);
38
+ const buttonRef = vue.ref();
39
+ const childPopover = vue.ref(false);
40
+ const details = vue.computed(() => {
41
+ if (props.actionDetail.detailType === "DEUIACTIONGROUP" && props.actionDetail.refUIActionGroup)
42
+ return props.actionDetail.refUIActionGroup.uiactionGroupDetails || [];
43
+ return [];
44
+ });
45
+ const visible = vue.computed(() => {
46
+ const visible2 = details.value.some((item) => {
47
+ var _a, _b;
48
+ return (_b = (_a = props.actionsState) == null ? void 0 : _a[item.id]) == null ? void 0 : _b.visible;
49
+ });
50
+ return visible2;
51
+ });
52
+ const placement = vue.computed(() => {
53
+ if (!buttonRef.value)
54
+ return props.direction === "horizontal" ? "right" : "bottom";
55
+ const {
56
+ innerWidth,
57
+ innerHeight
58
+ } = window;
59
+ const {
60
+ offsetLeft: x,
61
+ offsetTop: y,
62
+ offsetWidth: width
63
+ } = buttonRef.value.$el;
64
+ const centerX = innerWidth - width - 128;
65
+ const centerY = details.value.length ? innerHeight - details.value.length * 44 : innerHeight / 2;
66
+ if (y > centerY) {
67
+ if (props.direction === "horizontal")
68
+ return x > centerX ? "left-end" : "right-end";
69
+ return x > centerX ? "top-end" : "top-start";
70
+ }
71
+ if (props.direction === "horizontal")
72
+ return x > centerX ? "left-start" : "right-start";
73
+ return x > centerX ? "bottom-end" : "bottom-start";
74
+ });
75
+ const handleClick = async (detail, event, closePopover = false) => {
76
+ if (closePopover)
77
+ showPopover.value = false;
78
+ emit("actionClick", detail, event);
79
+ };
80
+ const onPopoverVisibleChange = (visible2) => {
81
+ emit("popoverVisibleChange", visible2);
82
+ };
83
+ const renderSeparator = (visible2) => {
84
+ if (visible2)
85
+ return vue.createVNode("div", {
86
+ "class": ns.e("separator")
87
+ }, null);
88
+ };
89
+ const renderActions = () => {
90
+ var _a;
91
+ return (_a = details.value) == null ? void 0 : _a.map((detail) => {
92
+ var _a2, _b, _c;
93
+ if (detail.detailType === "DEUIACTIONGROUP")
94
+ return [renderSeparator(detail.addSeparator), vue.createVNode(vue.resolveComponent("iBizActionGroup"), {
95
+ "actionDetail": detail,
96
+ "onActionClick": handleClick,
97
+ "actionsState": props.actionsState,
98
+ "popoverClassName": props.popoverClassName,
99
+ "onPopoverVisibleChange": (visible2) => childPopover.value = visible2
100
+ }, null)];
101
+ if ((_b = (_a2 = props.actionsState) == null ? void 0 : _a2[detail.id]) == null ? void 0 : _b.visible)
102
+ return [renderSeparator(detail.addSeparator), vue.createVNode(vue.resolveComponent("van-button"), {
103
+ "size": "small",
104
+ "type": buttonUtil.convertBtnType(detail.buttonStyle),
105
+ "text": detail.showCaption ? detail.caption : "",
106
+ "onClick": (e) => handleClick(detail, e, true),
107
+ "disabled": props.actionsState[detail.id].disabled,
108
+ "class": [ns.e("item"), (_c = detail.sysCss) == null ? void 0 : _c.codeName]
109
+ }, {
110
+ icon: () => {
111
+ return detail.showIcon && detail.sysImage && vue.createVNode(vue.resolveComponent("iBizIcon"), {
112
+ "icon": detail.sysImage
113
+ }, null);
114
+ }
115
+ })];
116
+ return null;
117
+ });
118
+ };
119
+ return {
120
+ ns,
121
+ visible,
122
+ buttonRef,
123
+ placement,
124
+ showPopover,
125
+ childPopover,
126
+ renderActions,
127
+ onPopoverVisibleChange
128
+ };
129
+ },
130
+ render() {
131
+ if (this.visible)
132
+ return vue.createVNode(vue.resolveComponent("van-popover"), {
133
+ "placement": this.placement,
134
+ "show": this.showPopover,
135
+ "onUpdate:show": ($event) => this.showPopover = $event,
136
+ "close-on-click-outside": !this.childPopover,
137
+ "class": [this.ns.b(), this.popoverClassName],
138
+ "onOpen": () => this.onPopoverVisibleChange(true),
139
+ "onClose": () => this.onPopoverVisibleChange(false)
140
+ }, {
141
+ reference: () => {
142
+ return vue.createVNode(vue.resolveComponent("van-button"), {
143
+ "size": "small",
144
+ "ref": "buttonRef",
145
+ "class": this.ns.e("button"),
146
+ "type": buttonUtil.convertBtnType(this.actionDetail.buttonStyle)
147
+ }, {
148
+ default: () => {
149
+ var _a, _b;
150
+ return [vue.createVNode("div", {
151
+ "class": this.ns.em("button", "text")
152
+ }, [((_a = this.actionDetail.refUIActionGroup) == null ? void 0 : _a.name) || ((_b = this.actionDetail.refUIActionGroup) == null ? void 0 : _b.id)]), vue.createVNode("ion-icon", {
153
+ "class": this.ns.em("button", "icon"),
154
+ "name": this.direction === "horizontal" ? "chevron-forward-outline" : "chevron-down-outline"
155
+ }, null)];
156
+ }
157
+ });
158
+ },
159
+ default: () => {
160
+ return this.renderActions();
161
+ }
162
+ });
163
+ return void 0;
164
+ }
165
+ });
166
+
167
+ exports.IBizActionGroup = IBizActionGroup;
@@ -0,0 +1 @@
1
+ .ibiz-action-group__separator{width:100%;height:.0625rem;display:inline-block;vertical-align:middle;background-color:var(--ibiz-color-border)}.ibiz-action-group__button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-action-group .van-popover__content{display:flex;flex-direction:column}.ibiz-action-group .van-popover__content .van-button{padding:0;font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);width:var(--van-popover-action-width);height:var(--van-popover-action-height);border-color:var(--ibiz-color-white)}.ibiz-action-group .van-popover__content .van-button:before{border-color:var(--ibiz-color-white)}.ibiz-action-group .van-popover__content .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}
@@ -32,27 +32,40 @@ const IBizActionToolbar = /* @__PURE__ */ vue.defineComponent({
32
32
  event.stopPropagation();
33
33
  emit("action-click", detail, event);
34
34
  };
35
+ const renderSeparator = () => {
36
+ return vue.createVNode("div", {
37
+ "class": ns.e("separator")
38
+ }, null);
39
+ };
35
40
  return {
36
41
  ns,
37
- handleClick
42
+ handleClick,
43
+ renderSeparator
38
44
  };
39
45
  },
40
46
  render() {
41
47
  const details = this.actionDetails || [];
42
- if (this.mode === "buttons") {
48
+ if (this.mode === "buttons")
43
49
  return vue.createVNode("div", {
44
50
  "class": [this.ns.b(), this.ns.m("buttons")]
45
51
  }, [details.length > 0 && details.map((detail) => {
46
- if (this.actionsState[detail.id].visible) {
47
- return [detail.addSeparator && vue.createVNode("div", {
48
- "class": this.ns.e("separator")
49
- }, null), vue.createVNode(vue.resolveComponent("van-button"), {
52
+ var _a, _b, _c;
53
+ if (detail.detailType === "DEUIACTIONGROUP")
54
+ return [detail.addSeparator && this.renderSeparator(), vue.createVNode(vue.resolveComponent("iBizActionGroup"), {
55
+ "direction": "vertical",
56
+ "actionDetail": detail,
57
+ "actionsState": this.actionsState,
58
+ "onActionClick": this.handleClick,
59
+ "popoverClassName": this.ns.b("action-group")
60
+ }, null)];
61
+ if ((_b = (_a = this.actionsState) == null ? void 0 : _a[detail.id]) == null ? void 0 : _b.visible) {
62
+ return [detail.addSeparator && this.renderSeparator(), vue.createVNode(vue.resolveComponent("van-button"), {
50
63
  "size": "small",
51
64
  "text": detail.showCaption ? detail.caption : "",
52
65
  "type": buttonUtil.convertBtnType(detail.buttonStyle),
53
66
  "onClick": (e) => this.handleClick(detail, e),
54
67
  "disabled": this.actionsState[detail.id].disabled,
55
- "class": [this.ns.e("item"), this.ns.is("disabled", false)]
68
+ "class": [this.ns.e("item"), this.ns.is("disabled", false), (_c = detail.sysCss) == null ? void 0 : _c.codeName]
56
69
  }, {
57
70
  icon: () => {
58
71
  return detail.showIcon && detail.sysImage && vue.createVNode(vue.resolveComponent("iBizIcon"), {
@@ -63,7 +76,6 @@ const IBizActionToolbar = /* @__PURE__ */ vue.defineComponent({
63
76
  }
64
77
  return null;
65
78
  })]);
66
- }
67
79
  return vue.createVNode("div", null, [ibiz.i18n.t("component.actionToolbar.noSupportDropDown")]);
68
80
  }
69
81
  });
@@ -31,6 +31,36 @@ const IBizButtonList = /* @__PURE__ */ vue.defineComponent({
31
31
  }) {
32
32
  const ns = vue3Util.useNamespace("button-list");
33
33
  const showPopover = vue.ref(false);
34
+ const buttonRef = vue.ref();
35
+ const childPopover = vue.ref(false);
36
+ const details = vue.computed(() => {
37
+ const {
38
+ buttonListType,
39
+ uiactionGroup
40
+ } = props.model;
41
+ if (buttonListType === "UIACTIONGROUP")
42
+ return (uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) || [];
43
+ return props.model.panelButtons || props.model.deformButtons || [];
44
+ });
45
+ const placement = vue.computed(() => {
46
+ if (!buttonRef.value)
47
+ return "bottom";
48
+ const {
49
+ innerWidth,
50
+ innerHeight
51
+ } = window;
52
+ const {
53
+ offsetLeft: x,
54
+ offsetTop: y,
55
+ offsetWidth: width
56
+ } = buttonRef.value.$el;
57
+ const centerX = innerWidth - width - 128;
58
+ const centerY = details.value.length ? innerHeight - details.value.length * 44 : innerHeight / 2;
59
+ if (y > centerY) {
60
+ return x > centerX ? "top-end" : "top-start";
61
+ }
62
+ return x > centerX ? "bottom-end" : "bottom-start";
63
+ });
34
64
  const buttonListStyle = vue.computed(() => {
35
65
  const {
36
66
  itemStyle,
@@ -39,102 +69,90 @@ const IBizButtonList = /* @__PURE__ */ vue.defineComponent({
39
69
  return itemStyle || detailStyle || "DEFAULT";
40
70
  });
41
71
  const handleClick = (item, e) => {
72
+ e == null ? void 0 : e.stopPropagation();
42
73
  emit("click", item.id, e);
43
74
  };
44
75
  const onChangePopover = (e) => {
45
76
  e.stopPropagation();
46
77
  showPopover.value = !showPopover.value;
47
78
  };
48
- const details = vue.computed(() => {
49
- const {
50
- buttonListType,
51
- uiactionGroup
52
- } = props.model;
53
- if (buttonListType === "UIACTIONGROUP")
54
- return (uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) || [];
55
- return props.model.panelButtons || props.model.deformButtons || [];
56
- });
57
- const actions = vue.computed(() => {
58
- return details.value.filter((detail) => {
59
- var _a;
60
- return ((_a = props.buttonsState[detail.id]) == null ? void 0 : _a.visible) !== false;
61
- }).map((detail) => {
62
- var _a, _b;
63
- return {
64
- ...detail,
65
- disabled: (_a = props.buttonsState[detail.id]) == null ? void 0 : _a.disabled,
66
- className: (_b = detail.sysCss) == null ? void 0 : _b.cssName
67
- };
68
- });
69
- });
70
- const renderActions = () => {
71
- return vue.createVNode("div", {
72
- "class": ns.e("content")
73
- }, [details.value.map((item) => {
79
+ const renderSeparator = (visible) => {
80
+ if (visible)
81
+ return vue.createVNode("div", {
82
+ "class": ns.e("separator")
83
+ }, null);
84
+ };
85
+ const renderActions = (direction) => {
86
+ const showSeparator = direction === "vertical";
87
+ return details.value.map((item) => {
74
88
  var _a, _b, _c, _d;
75
- if (((_a = props.buttonsState[item.id]) == null ? void 0 : _a.visible) === false)
76
- return;
77
- return vue.createVNode(vue.resolveComponent("van-button"), {
78
- "class": [ns.e("item"), ns.em("item", `${(_b = item.id) == null ? void 0 : _b.toLowerCase()}`), (_c = item.sysCss) == null ? void 0 : _c.cssName],
79
- "size": "small",
80
- "type": buttonUtil.convertBtnType(item.buttonStyle),
81
- "disabled": ((_d = props.buttonsState[item.id]) == null ? void 0 : _d.disabled) || props.disabled,
82
- "onClick": (event) => handleClick(item, event)
83
- }, {
84
- default: () => [item.showIcon !== false && vue.createVNode(vue.resolveComponent("iBizIcon"), {
85
- "icon": item.sysImage,
86
- "class": ns.em("item", "icon")
87
- }, null), item.showCaption && vue.createVNode("span", {
88
- "class": ns.em("item", "caption")
89
- }, [item.caption])]
90
- });
91
- })]);
89
+ if (item.detailType === "DEUIACTIONGROUP")
90
+ return [renderSeparator(item.addSeparator && showSeparator), vue.createVNode(vue.resolveComponent("iBizActionGroup"), {
91
+ "actionDetail": item,
92
+ "onActionClick": handleClick,
93
+ "actionsState": props.buttonsState,
94
+ "popoverClassName": ns.b("action-group"),
95
+ "onPopoverVisibleChange": (visible) => childPopover.value = visible,
96
+ "direction": direction === "horizontal" ? "vertical" : "horizontal"
97
+ }, null)];
98
+ if ((_a = props.buttonsState[item.id]) == null ? void 0 : _a.visible)
99
+ return [renderSeparator(item.addSeparator && showSeparator), vue.createVNode(vue.resolveComponent("van-button"), {
100
+ "size": "small",
101
+ "class": [ns.e("item"), ns.em("item", `${(_b = item.id) == null ? void 0 : _b.toLowerCase()}`), (_c = item.sysCss) == null ? void 0 : _c.cssName],
102
+ "type": buttonUtil.convertBtnType(item.buttonStyle),
103
+ "disabled": ((_d = props.buttonsState[item.id]) == null ? void 0 : _d.disabled) || props.disabled,
104
+ "onClick": (event) => handleClick(item, event)
105
+ }, {
106
+ default: () => [item.showIcon !== false && vue.createVNode(vue.resolveComponent("iBizIcon"), {
107
+ "icon": item.sysImage,
108
+ "class": ns.em("item", "icon")
109
+ }, null), item.showCaption && vue.createVNode("span", {
110
+ "class": ns.em("item", "caption")
111
+ }, [item.caption])]
112
+ })];
113
+ return null;
114
+ });
92
115
  };
93
116
  const renderDropdown = () => {
94
117
  return vue.createVNode(vue.resolveComponent("van-popover"), {
95
118
  "class": ns.e("popover"),
96
- "placement": "bottom-end",
97
- "actions": actions.value,
119
+ "placement": placement.value,
98
120
  "show": showPopover.value,
99
121
  "onUpdate:show": ($event) => showPopover.value = $event,
100
- "onSelect": (data) => handleClick(data)
122
+ "close-on-click-outside": !childPopover.value
101
123
  }, {
102
- action: ({
103
- action
104
- }) => {
105
- return vue.createVNode("span", {
106
- "class": ns.em("popover", "item")
107
- }, [action.showIcon !== false && action.sysImage && vue.createVNode(vue.resolveComponent("iBizIcon"), {
108
- "icon": action.sysImage
109
- }, null), action.showCaption && action.caption]);
110
- },
111
124
  reference: () => {
112
125
  const {
113
126
  caption,
114
- sysImage,
115
- showCaption
127
+ sysImage
116
128
  } = props.model;
117
129
  return vue.createVNode(vue.resolveComponent("van-button"), {
118
130
  "size": "small",
131
+ "ref": "buttonRef",
132
+ "class": ns.e("button"),
119
133
  "disabled": props.disabled,
120
134
  "onClick": onChangePopover,
121
135
  "type": buttonUtil.convertBtnType(buttonListStyle.value)
122
136
  }, {
123
137
  default: () => [sysImage && vue.createVNode(vue.resolveComponent("iBizIcon"), {
124
- "class": ns.em("popover", "icon"),
138
+ "class": ns.em("button", "icon"),
125
139
  "icon": sysImage
126
- }, null), showCaption && vue.createVNode("span", {
127
- "class": ns.em("popover", "caption")
140
+ }, null), caption && vue.createVNode("span", {
141
+ "class": ns.em("button", "caption")
128
142
  }, [caption, vue.createVNode("ion-icon", {
129
143
  "name": "chevron-down-outline",
130
- "class": ns.em("popover", "more")
144
+ "class": ns.em("button", "more")
131
145
  }, null)])]
132
146
  });
147
+ },
148
+ default: () => {
149
+ return renderActions("vertical");
133
150
  }
134
151
  });
135
152
  };
136
153
  return {
137
154
  ns,
155
+ buttonRef,
138
156
  renderDropdown,
139
157
  renderActions
140
158
  };
@@ -144,7 +162,9 @@ const IBizButtonList = /* @__PURE__ */ vue.defineComponent({
144
162
  return vue.createVNode("div", {
145
163
  "class": [this.ns.b(), this.ns.m(this.model.id), this.ns.m((_a = this.model.actionGroupExtractMode) == null ? void 0 : _a.toLowerCase())],
146
164
  "style": this.model.cssStyle
147
- }, [this.model.actionGroupExtractMode === "ITEM" || this.model.buttonListType === "BUTTONS" ? this.renderActions() : this.renderDropdown()]);
165
+ }, [this.model.actionGroupExtractMode === "ITEM" || this.model.buttonListType === "BUTTONS" ? vue.createVNode("div", {
166
+ "class": this.ns.e("content")
167
+ }, [this.renderActions("horizontal")]) : this.renderDropdown()]);
148
168
  }
149
169
  });
150
170
 
@@ -1 +1 @@
1
- .ibiz-button-list{width:100%;height:100%}.ibiz-button-list .van-button{border:none}.ibiz-button-list .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list .van-button .van-button__text .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);font-size:var(--ibiz-width-icon-medium)}.ibiz-button-list__content{display:flex;flex-wrap:wrap;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__popover{--ibiz-color-bg-0:var(--van-popover-light-text-color)}.ibiz-button-list__popover .van-popover__action--disabled,.ibiz-button-list__popover .van-popover__action--disabled:active{color:var(--ibiz-color-disabled-text)!important;background-color:var(--ibiz-color-disabled-bg)}.ibiz-button-list__popover--item{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__popover--item .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);font-size:var(--ibiz-width-icon-medium)}.ibiz-button-list__popover--caption{display:flex;line-height:100%;align-items:center;gap:var(--ibiz-spacing-extra-tight)}
1
+ .ibiz-button-list{width:100%;height:100%}.ibiz-button-list .van-button{border:none}.ibiz-button-list .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list .van-button .van-button__text .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);font-size:var(--ibiz-width-icon-medium)}.ibiz-button-list__content{display:flex;flex-wrap:wrap;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__button--caption{display:flex;line-height:100%;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__popover{--ibiz-color-bg-0:var(--van-popover-light-text-color)}.ibiz-button-list__popover .van-popover__action--disabled,.ibiz-button-list__popover .van-popover__action--disabled:active{color:var(--ibiz-color-disabled-text)!important;background-color:var(--ibiz-color-disabled-bg)}.ibiz-button-list__popover .van-popover__content{display:flex;flex-direction:column}.ibiz-button-list__popover .van-popover__content .van-button{padding:0;font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);width:var(--van-popover-action-width);height:var(--van-popover-action-height);border-color:var(--ibiz-color-white)}.ibiz-button-list__popover .van-popover__content .van-button:before{border-color:var(--ibiz-color-white)}.ibiz-button-list__popover .van-popover__content .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}
@@ -19,10 +19,12 @@ var mdCtrlSetting = require('./md-ctrl-setting/md-ctrl-setting.cjs');
19
19
  var previewImage = require('./preview-image/preview-image.cjs');
20
20
  var dateRangePicker = require('./date-range-picker/date-range-picker.cjs');
21
21
  var cropping = require('./cropping/cropping.cjs');
22
+ var actionGroup = require('./action-group/action-group.cjs');
22
23
 
23
24
  "use strict";
24
25
  const IBizCommonComponents = {
25
26
  install: (v) => {
27
+ v.component(actionGroup.IBizActionGroup.name, actionGroup.IBizActionGroup);
26
28
  v.component(dateRangePicker.IBizDateRangeCalendar.name, dateRangePicker.IBizDateRangeCalendar);
27
29
  v.component(vue3Util.IBizViewShell.name, vue3Util.IBizViewShell);
28
30
  v.component(row.IBizRow.name, row.IBizRow);
@@ -87,7 +87,7 @@ const IBizRawItem = /* @__PURE__ */ vue.defineComponent({
87
87
  }
88
88
  }
89
89
  }
90
- if (["TEXT", "HEADING1", "HEADING2", "HEADING3", "HEADING4", "HEADING5", "HEADING6", "PARAGRAPH", "HTML"].includes(rawItemType.value)) {
90
+ if (["TEXT", "HEADING1", "HEADING2", "HEADING3", "HEADING4", "HEADING5", "HEADING6", "PARAGRAPH", "HTML", "RAW"].includes(rawItemType.value)) {
91
91
  rawItemText.value = rawItemContent.value;
92
92
  if (typeof rawItemText.value === "string") {
93
93
  rawItemText.value = rawItemText.value.replaceAll("&lt;", "<");
@@ -163,7 +163,7 @@ const IBizRawItem = /* @__PURE__ */ vue.defineComponent({
163
163
  "icon": this.rawItemContent
164
164
  }, null);
165
165
  }
166
- if (this.rawItemType === "TEXT") {
166
+ if (this.rawItemType === "TEXT" || this.rawItemType === "RAW") {
167
167
  return vue.createVNode("span", {
168
168
  "class": this.ns.e("text")
169
169
  }, [this.rawItemText]);
@@ -149,24 +149,22 @@ const MDCtrlControl = /* @__PURE__ */ vue.defineComponent({
149
149
  const leftSlidingActionGroup = c.model.deuiactionGroup;
150
150
  const rightSlidingActionGroup = c.model.deuiactionGroup2;
151
151
  const renderSlidingActionGroup = (group, data) => {
152
- const groupDetails = group.uiactionGroupDetails || [];
153
- if (!groupDetails || groupDetails.length === 0) {
152
+ const groupDetails = runtime.getAllUIActionItems(group.uiactionGroupDetails);
153
+ if (!groupDetails || groupDetails.length === 0)
154
154
  return null;
155
- }
156
155
  const row = c.state.rows.find((rowData) => data.srfkey === rowData.data.srfkey);
157
156
  const btnContainer = row.uaColStates[group.id];
158
157
  return groupDetails.map((detail) => {
159
- const btn = btnContainer[detail.id];
160
- if (btn.visible === false) {
161
- return null;
162
- }
163
- return vue.createVNode(vue.resolveComponent("van-button"), {
164
- "square": true,
165
- "type": "primary",
166
- "text": detail.caption,
167
- "disabled": btn.disabled || btn.loading,
168
- "onClick": (e) => c.onActionClick(detail, row, e)
169
- }, null);
158
+ const btn = btnContainer == null ? void 0 : btnContainer[detail.id];
159
+ if (btn == null ? void 0 : btn.visible)
160
+ return vue.createVNode(vue.resolveComponent("van-button"), {
161
+ "square": true,
162
+ "type": "primary",
163
+ "text": detail.caption,
164
+ "disabled": btn.disabled || btn.loading,
165
+ "onClick": (e) => c.onActionClick(detail, row, e)
166
+ }, null);
167
+ return null;
170
168
  });
171
169
  };
172
170
  const renderDefaultItem = (data) => {
@@ -3,6 +3,7 @@
3
3
  var vue = require('vue');
4
4
  var vue3Util = require('@ibiz-template/vue3-util');
5
5
  var runtime = require('@ibiz-template/runtime');
6
+ require('./tab-exp-panel.css');
6
7
 
7
8
  "use strict";
8
9
  function _isSlot(s) {
@@ -48,8 +49,11 @@ const TabExpPanelControl = /* @__PURE__ */ vue.defineComponent({
48
49
  }
49
50
  },
50
51
  setup() {
52
+ var _a, _b;
51
53
  const c = vue3Util.useControlController((...args) => new runtime.TabExpPanelController(...args));
52
54
  const ns = vue3Util.useNamespace(`control-${c.model.controlType.toLowerCase()}`);
55
+ const model = (_a = c.view) == null ? void 0 : _a.model;
56
+ const tabPosition = ((_b = model == null ? void 0 : model.tabLayout) == null ? void 0 : _b.toLowerCase()) || "top";
53
57
  const onTabChange = (value) => {
54
58
  c.state.activeName = value;
55
59
  c.handleTabChange();
@@ -57,6 +61,7 @@ const TabExpPanelControl = /* @__PURE__ */ vue.defineComponent({
57
61
  return {
58
62
  c,
59
63
  ns,
64
+ tabPosition,
60
65
  onTabChange
61
66
  };
62
67
  },
@@ -66,6 +71,28 @@ const TabExpPanelControl = /* @__PURE__ */ vue.defineComponent({
66
71
  isCreated,
67
72
  tabPages
68
73
  } = this.c.state;
74
+ if (this.tabPosition === "flow" || this.tabPosition === "flow_noheader") {
75
+ if (!isCreated) {
76
+ return;
77
+ }
78
+ return vue.createVNode("div", {
79
+ "class": this.ns.b()
80
+ }, [tabPages.map((page) => {
81
+ var _a;
82
+ const target = (_a = this.c.model.controls) == null ? void 0 : _a.find((tab) => tab.id === page.tabTag);
83
+ return vue.createVNode("div", {
84
+ "class": this.ns.b("tab-item")
85
+ }, [vue.createVNode("div", {
86
+ "class": this.ns.b("tab-item-header")
87
+ }, [page.caption]), vue.createVNode("div", {
88
+ "class": this.ns.b("tab-item-content")
89
+ }, [vue.h(vue.resolveComponent("IBizViewShell"), {
90
+ context: this.context,
91
+ params: this.params,
92
+ viewId: target == null ? void 0 : target.embeddedAppDEViewId
93
+ })])]);
94
+ })]);
95
+ }
69
96
  return isCreated && vue.createVNode(vue.resolveComponent("van-tabs"), {
70
97
  "class": [this.ns.b("header")],
71
98
  "active": this.c.state.activeName,
@@ -0,0 +1 @@
1
+ .ibiz-control-tabexppanel-tab-item-header{padding:.5rem 1rem;overflow:hidden;font-size:var(--ibiz-font-size-regular);line-height:var(--van-cell-line-height);color:var(--ibiz-color-text-2);text-overflow:ellipsis;white-space:nowrap;background:var(--ibiz-color-bg-0)}