@ibiz-template/mob-vue3-components 0.0.1 → 0.0.3

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 (98) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/index.system.min.js +6 -6
  3. package/dist/index.system.min.js.map +1 -1
  4. package/es/control/dashboard/index.mjs +4 -1
  5. package/es/control/dashboard/portlet/container-portlet/container-portlet.provider.mjs +1 -5
  6. package/es/control/dashboard/portlet/index.d.ts +1 -0
  7. package/es/control/dashboard/portlet/index.mjs +2 -0
  8. package/es/control/dashboard/portlet/menu-portlet/menu-portlet.provider.mjs +1 -5
  9. package/es/control/dashboard/portlet/view-portlet/index.d.ts +24 -0
  10. package/es/control/dashboard/portlet/view-portlet/index.mjs +12 -0
  11. package/es/control/dashboard/portlet/view-portlet/view-portlet.d.ts +25 -0
  12. package/es/control/dashboard/portlet/view-portlet/view-portlet.mjs +50 -0
  13. package/es/control/dashboard/portlet/view-portlet/view-portlet.provider.d.ts +15 -0
  14. package/es/control/dashboard/portlet/view-portlet/view-portlet.provider.mjs +21 -0
  15. package/es/control/form/edit-form/edit-form.d.ts +1 -1
  16. package/es/control/form/edit-form/index.d.ts +1 -1
  17. package/es/control/form/form-detail/form-druipart/form-druipart.mjs +1 -1
  18. package/es/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
  19. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -1
  20. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.mjs +4 -4
  21. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  22. package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.d.ts +2 -2
  23. package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.mjs +1 -1
  24. package/es/control/index.d.ts +2 -2
  25. package/es/control/index.mjs +6 -4
  26. package/es/control/list/{index.d.ts → list/index.d.ts} +23 -3
  27. package/es/control/list/list/list.css +1 -0
  28. package/es/control/list/{list.d.ts → list/list.d.ts} +23 -3
  29. package/es/control/list/{list.mjs → list/list.mjs} +37 -18
  30. package/es/control/list/list-render-util.d.ts +23 -0
  31. package/es/control/list/list-render-util.mjs +100 -0
  32. package/es/control/{md-ctrl → list/md-ctrl}/index.d.ts +10 -1
  33. package/es/control/list/md-ctrl/md-ctrl.css +1 -0
  34. package/es/control/{md-ctrl → list/md-ctrl}/md-ctrl.d.ts +14 -3
  35. package/es/control/{md-ctrl → list/md-ctrl}/md-ctrl.mjs +13 -87
  36. package/es/control/toolbar/index.d.ts +1 -1
  37. package/es/control/toolbar/toolbar.d.ts +1 -1
  38. package/es/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.d.ts +1 -1
  39. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +1 -0
  40. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.css +1 -1
  41. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.d.ts +3 -0
  42. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.mjs +40 -9
  43. package/es/editor/upload/upload-editor.controller.d.ts +8 -0
  44. package/es/editor/upload/upload-editor.controller.mjs +50 -0
  45. package/es/editor/upload/use/use-van-upload.mjs +3 -14
  46. package/es/index.mjs +3 -2
  47. package/es/panel-component/index.mjs +3 -1
  48. package/es/panel-component/panel-button/panel-button.controller.mjs +12 -8
  49. package/es/util/confirm-util/confirm-util.d.ts +17 -0
  50. package/es/util/confirm-util/confirm-util.mjs +77 -0
  51. package/es/util/index.d.ts +1 -0
  52. package/es/util/index.mjs +1 -0
  53. package/es/view-engine/mob-mpickup-view-engine.mjs +2 -0
  54. package/lib/control/dashboard/index.cjs +5 -0
  55. package/lib/control/dashboard/portlet/container-portlet/container-portlet.provider.cjs +1 -5
  56. package/lib/control/dashboard/portlet/index.cjs +4 -0
  57. package/lib/control/dashboard/portlet/menu-portlet/menu-portlet.provider.cjs +1 -5
  58. package/lib/control/dashboard/portlet/view-portlet/index.cjs +18 -0
  59. package/lib/control/dashboard/portlet/view-portlet/view-portlet.cjs +52 -0
  60. package/lib/control/dashboard/portlet/view-portlet/view-portlet.provider.cjs +23 -0
  61. package/lib/control/form/form-detail/form-druipart/form-druipart.cjs +1 -1
  62. package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
  63. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.cjs +4 -4
  64. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -1
  65. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  66. package/lib/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.cjs +1 -1
  67. package/lib/control/index.cjs +14 -10
  68. package/lib/control/list/{list.cjs → list/list.cjs} +36 -17
  69. package/lib/control/list/list/list.css +1 -0
  70. package/lib/control/list/list-render-util.cjs +102 -0
  71. package/lib/control/{md-ctrl → list/md-ctrl}/md-ctrl.cjs +12 -86
  72. package/lib/control/list/md-ctrl/md-ctrl.css +1 -0
  73. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +1 -0
  74. package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.cjs +39 -8
  75. package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.css +1 -1
  76. package/lib/editor/upload/upload-editor.controller.cjs +50 -0
  77. package/lib/editor/upload/use/use-van-upload.cjs +3 -14
  78. package/lib/index.cjs +4 -2
  79. package/lib/panel-component/index.cjs +2 -0
  80. package/lib/panel-component/panel-button/panel-button.controller.cjs +12 -8
  81. package/lib/util/confirm-util/confirm-util.cjs +79 -0
  82. package/lib/util/index.cjs +2 -0
  83. package/lib/view-engine/mob-mpickup-view-engine.cjs +2 -0
  84. package/package.json +6 -6
  85. package/es/control/list/list.css +0 -1
  86. package/es/control/md-ctrl/md-ctrl.css +0 -1
  87. package/lib/control/list/list.css +0 -1
  88. package/lib/control/md-ctrl/md-ctrl.css +0 -1
  89. /package/es/control/list/{index.mjs → list/index.mjs} +0 -0
  90. /package/es/control/list/{list.provider.d.ts → list/list.provider.d.ts} +0 -0
  91. /package/es/control/list/{list.provider.mjs → list/list.provider.mjs} +0 -0
  92. /package/es/control/{md-ctrl → list/md-ctrl}/index.mjs +0 -0
  93. /package/es/control/{md-ctrl → list/md-ctrl}/md-ctrl.provider.d.ts +0 -0
  94. /package/es/control/{md-ctrl → list/md-ctrl}/md-ctrl.provider.mjs +0 -0
  95. /package/lib/control/list/{index.cjs → list/index.cjs} +0 -0
  96. /package/lib/control/list/{list.provider.cjs → list/list.provider.cjs} +0 -0
  97. /package/lib/control/{md-ctrl → list/md-ctrl}/index.cjs +0 -0
  98. /package/lib/control/{md-ctrl → list/md-ctrl}/md-ctrl.provider.cjs +0 -0
@@ -0,0 +1,102 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+
5
+ "use strict";
6
+ function _isSlot(s) {
7
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
8
+ }
9
+ function useListRender(props, c, ns) {
10
+ const isSelect = (row) => {
11
+ const findIndex = c.state.selectedData.findIndex((data) => {
12
+ return data.srfkey === row.srfkey;
13
+ });
14
+ return findIndex !== -1;
15
+ };
16
+ const calcItemClass = (row) => {
17
+ const select = isSelect(row);
18
+ const itemClass = [ns.b("item"), ns.is("active", select)];
19
+ return itemClass;
20
+ };
21
+ const renderRightSlot = (row) => {
22
+ const select = isSelect(row);
23
+ return vue.createVNode(vue.resolveComponent("van-radio"), {
24
+ "class": ns.bm("item", "right"),
25
+ "checked": select
26
+ }, null);
27
+ };
28
+ const renderIcon = (row) => {
29
+ return vue.createVNode("img", {
30
+ "class": ns.b("image"),
31
+ "src": row.image,
32
+ "alt": ""
33
+ }, null);
34
+ };
35
+ const renderItemContent = (row) => {
36
+ const itemClass = calcItemClass(row);
37
+ const slotOption = {};
38
+ if (Object.prototype.hasOwnProperty.call(row, "image")) {
39
+ Object.assign(slotOption, {
40
+ icon: renderIcon(row)
41
+ });
42
+ }
43
+ if (props.mode === "SELECT") {
44
+ Object.assign(slotOption, {
45
+ "right-icon": renderRightSlot(row)
46
+ });
47
+ }
48
+ return vue.createVNode(vue.resolveComponent("van-cell"), {
49
+ "class": itemClass,
50
+ "is-link": true,
51
+ "title": row.srfmajortext || "",
52
+ "onClick": () => c.onRowClick(row)
53
+ }, _isSlot(slotOption) ? slotOption : {
54
+ default: () => [slotOption]
55
+ });
56
+ };
57
+ const renderPanelItem = (item, modelData) => {
58
+ const {
59
+ context,
60
+ params
61
+ } = c;
62
+ return vue.createVNode(vue.resolveComponent("iBizControlShell"), {
63
+ "data": item,
64
+ "modelData": modelData,
65
+ "context": context,
66
+ "params": params,
67
+ "onClick": () => c.onRowClick(item)
68
+ }, null);
69
+ };
70
+ const renderItem = (row) => {
71
+ const panel = c.model.itemLayoutPanel;
72
+ return panel ? renderPanelItem(row, panel) : renderItemContent(row);
73
+ };
74
+ const renderNoData = () => {
75
+ const {
76
+ isLoaded
77
+ } = c.state;
78
+ if (!isLoaded) {
79
+ return;
80
+ }
81
+ return isLoaded && vue.createVNode(vue.resolveComponent("iBizNoData"), {
82
+ "text": c.model.emptyText,
83
+ "emptyTextLanguageRes": c.model.emptyTextLanguageRes
84
+ }, null);
85
+ };
86
+ const renderLoadMore = () => {
87
+ if (props.loadMode === "auto" || c.state.total <= c.state.items.length) {
88
+ return;
89
+ }
90
+ return vue.createVNode("div", {
91
+ "class": ns.b("load-more"),
92
+ "onClick": () => c.loadMore()
93
+ }, [vue.createVNode("span", null, [vue.createTextVNode("\u52A0\u8F7D\u66F4\u591A")])]);
94
+ };
95
+ return {
96
+ renderNoData,
97
+ renderItem,
98
+ renderLoadMore
99
+ };
100
+ }
101
+
102
+ exports.useListRender = useListRender;
@@ -4,11 +4,9 @@ var vue = require('vue');
4
4
  var vue3Util = require('@ibiz-template/vue3-util');
5
5
  var runtime = require('@ibiz-template/runtime');
6
6
  require('./md-ctrl.css');
7
+ var listRenderUtil = require('../list-render-util.cjs');
7
8
 
8
9
  "use strict";
9
- function _isSlot(s) {
10
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
11
- }
12
10
  const MDCtrlControl = /* @__PURE__ */ vue.defineComponent({
13
11
  name: "IBizMDCtrlControl",
14
12
  props: {
@@ -58,84 +56,22 @@ const MDCtrlControl = /* @__PURE__ */ vue.defineComponent({
58
56
  loadMode: {
59
57
  type: String,
60
58
  default: "auto"
59
+ },
60
+ loadDefault: {
61
+ type: Boolean,
62
+ default: true
61
63
  }
62
64
  },
63
65
  setup(props) {
64
66
  const c = vue3Util.useControlController((...args) => new runtime.MDCtrlController(...args));
65
67
  const ns = vue3Util.useNamespace(`control-${c.model.controlType.toLowerCase()}`);
68
+ const {
69
+ renderItem,
70
+ renderNoData,
71
+ renderLoadMore
72
+ } = listRenderUtil.useListRender(props, c, ns);
66
73
  const leftSlidingActionGroup = c.model.deuiactionGroup;
67
74
  const rightSlidingActionGroup = c.model.deuiactionGroup2;
68
- const renderPanelItem = (item, modelData) => {
69
- const {
70
- context,
71
- params
72
- } = c;
73
- return vue.createVNode(vue.resolveComponent("iBizControlShell"), {
74
- "data": item,
75
- "modelData": modelData,
76
- "context": context,
77
- "params": params,
78
- "onClick": () => c.onRowClick(item)
79
- }, null);
80
- };
81
- const isSelect = (row) => {
82
- const findIndex = c.state.selectedData.findIndex((data) => {
83
- return data.srfkey === row.data.srfkey;
84
- });
85
- return findIndex !== -1;
86
- };
87
- const calcItemClass = (row) => {
88
- const select = isSelect(row);
89
- const itemClass = [ns.b("item"), ns.is("active", select)];
90
- return itemClass;
91
- };
92
- const renderIcon = (row) => {
93
- return vue.createVNode("img", {
94
- "class": ns.b("image"),
95
- "src": row.data.image,
96
- "alt": ""
97
- }, null);
98
- };
99
- const renderRightSlot = (row) => {
100
- const select = isSelect(row);
101
- return vue.createVNode(vue.resolveComponent("van-radio"), {
102
- "checked": select
103
- }, null);
104
- };
105
- const renderItemContent = (row) => {
106
- const itemClass = calcItemClass(row);
107
- const slotOption = {};
108
- if (Object.prototype.hasOwnProperty.call(row.data, "image")) {
109
- Object.assign(slotOption, {
110
- icon: renderIcon(row)
111
- });
112
- }
113
- if (props.mode === "SELECT") {
114
- Object.assign(slotOption, {
115
- "right-icon": renderRightSlot(row)
116
- });
117
- }
118
- return vue.createVNode(vue.resolveComponent("van-cell"), {
119
- "class": itemClass,
120
- "is-link": true,
121
- "title": row.data.srfmajortext || "",
122
- "onClick": () => c.onRowClick(row.data)
123
- }, _isSlot(slotOption) ? slotOption : {
124
- default: () => [slotOption]
125
- });
126
- };
127
- const renderNoData = () => {
128
- const {
129
- isLoaded
130
- } = c.state;
131
- if (!isLoaded) {
132
- return;
133
- }
134
- return isLoaded && vue.createVNode(vue.resolveComponent("iBizNoData"), {
135
- "text": c.model.emptyText,
136
- "emptyTextLanguageRes": c.model.emptyTextLanguageRes
137
- }, null);
138
- };
139
75
  const renderSlidingActionGroup = (group, row) => {
140
76
  const groupDetails = group.uiactionGroupDetails || [];
141
77
  if (!groupDetails || groupDetails.length === 0) {
@@ -157,7 +93,6 @@ const MDCtrlControl = /* @__PURE__ */ vue.defineComponent({
157
93
  });
158
94
  };
159
95
  const renderDefaultItem = (row) => {
160
- const panel = props.modelData.itemLayoutPanel;
161
96
  const isItemSliding = !!(leftSlidingActionGroup || rightSlidingActionGroup);
162
97
  if (isItemSliding) {
163
98
  return vue.createVNode(vue.resolveComponent("van-swipe-cell"), {
@@ -166,11 +101,11 @@ const MDCtrlControl = /* @__PURE__ */ vue.defineComponent({
166
101
  left: rightSlidingActionGroup ? () => renderSlidingActionGroup(rightSlidingActionGroup, row) : null,
167
102
  right: leftSlidingActionGroup ? () => renderSlidingActionGroup(leftSlidingActionGroup, row) : null,
168
103
  default: () => {
169
- return panel ? renderPanelItem(row.data, panel) : renderItemContent(row);
104
+ return renderItem(row.data);
170
105
  }
171
106
  });
172
107
  }
173
- return panel ? renderPanelItem(row.data, panel) : renderItemContent(row);
108
+ return renderItem(row.data);
174
109
  };
175
110
  const renderDefault = () => {
176
111
  return c.state.rows.map((item) => {
@@ -188,15 +123,6 @@ const MDCtrlControl = /* @__PURE__ */ vue.defineComponent({
188
123
  })]);
189
124
  });
190
125
  };
191
- const renderLoadMore = () => {
192
- if (props.loadMode === "auto" || c.state.total <= c.state.rows.length) {
193
- return;
194
- }
195
- return vue.createVNode("div", {
196
- "class": ns.b("load-more"),
197
- "onClick": () => c.loadMore()
198
- }, [vue.createVNode("span", null, [vue.createTextVNode("\u52A0\u8F7D\u66F4\u591A")])]);
199
- };
200
126
  const renderMDContent = () => {
201
127
  return vue.createVNode(vue.resolveComponent("van-list"), {
202
128
  "finished": c.state.total <= c.state.rows.length,
@@ -0,0 +1 @@
1
+ .ibiz-control-mobmdctrl{--ibiz-control-mobmdctrl-text-color:var(--ibiz-color-text-0);--ibiz-control-mobmdctrl-hover-bg-color:var(--ibiz-color-primary);--ibiz-control-mobmdctrl-active-bg-color:#D1D1D5;--ibiz-control-mobmdctrl-active-color:var(--ibiz-color-bg-1);--ibiz-control-mobmdctrl-img-width:var(--ibiz-width-icon-extra-large);--ibiz-control-mobmdctrl-img-radius:var(--ibiz-border-radius-extra-small);--ibiz-control-mobmdctrl-padding:var(--ibiz-spacing-base) 0 var(--ibiz-spacing-base) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-font:var(--ibiz-font-size-regular);--ibiz-control-mobmdctrl-icon-color:#A0A5AA;--ibiz-control-mobmdctrl-group-caption-color:#9A9B9F;--ibiz-control-mobmdctrl-load-more-font-size:var(--ibiz-font-size-small);--ibiz-control-mobmdctrl-font-size:var(--ibiz-font-size-header-5);--ibiz-control-mobmdctrl-right-icon-margin-right:1.3125rem;--van-cell-font-size:var(--ibiz-control-mobmdctrl-font-size);height:100%}.ibiz-control-mobmdctrl .van-list{height:100%}.ibiz-control-mobmdctrl .van-list .van-cell{padding:var(--ibiz-control-mobmdctrl-padding)}.ibiz-control-mobmdctrl .van-cell__right-icon{margin-right:var(--ibiz-control-mobmdctrl-right-icon-margin-right);color:var(--ibiz-control-mobmdctrl-icon-color)}.ibiz-control-mobmdctrl .van-cell--clickable:active{color:inherit;background-color:var(--ibiz-control-mobmdctrl-active-bg-color)}.ibiz-control-mobmdctrl .van-cell::after{width:100%}.ibiz-control-mobmdctrl .ibiz-control-panel{height:auto}.ibiz-control-mobmdctrl-item{--ibiz-control-mobmdctrl-text-color:var(--ibiz-color-text-0);--ibiz-control-mobmdctrl-hover-bg-color:var(--ibiz-color-primary);--ibiz-control-mobmdctrl-active-bg-color:#D1D1D5;--ibiz-control-mobmdctrl-active-color:var(--ibiz-color-bg-1);--ibiz-control-mobmdctrl-img-width:var(--ibiz-width-icon-extra-large);--ibiz-control-mobmdctrl-img-radius:var(--ibiz-border-radius-extra-small);--ibiz-control-mobmdctrl-padding:var(--ibiz-spacing-base) 0 var(--ibiz-spacing-base) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-font:var(--ibiz-font-size-regular);--ibiz-control-mobmdctrl-icon-color:#A0A5AA;--ibiz-control-mobmdctrl-group-caption-color:#9A9B9F;--ibiz-control-mobmdctrl-load-more-font-size:var(--ibiz-font-size-small);--ibiz-control-mobmdctrl-font-size:var(--ibiz-font-size-header-5);--ibiz-control-mobmdctrl-right-icon-margin-right:1.3125rem}.ibiz-control-mobmdctrl-item--right{margin-right:var(--ibiz-control-mobmdctrl-right-icon-margin-right)}.ibiz-control-mobmdctrl-image{--ibiz-control-mobmdctrl-text-color:var(--ibiz-color-text-0);--ibiz-control-mobmdctrl-hover-bg-color:var(--ibiz-color-primary);--ibiz-control-mobmdctrl-active-bg-color:#D1D1D5;--ibiz-control-mobmdctrl-active-color:var(--ibiz-color-bg-1);--ibiz-control-mobmdctrl-img-width:var(--ibiz-width-icon-extra-large);--ibiz-control-mobmdctrl-img-radius:var(--ibiz-border-radius-extra-small);--ibiz-control-mobmdctrl-padding:var(--ibiz-spacing-base) 0 var(--ibiz-spacing-base) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-font:var(--ibiz-font-size-regular);--ibiz-control-mobmdctrl-icon-color:#A0A5AA;--ibiz-control-mobmdctrl-group-caption-color:#9A9B9F;--ibiz-control-mobmdctrl-load-more-font-size:var(--ibiz-font-size-small);--ibiz-control-mobmdctrl-font-size:var(--ibiz-font-size-header-5);--ibiz-control-mobmdctrl-right-icon-margin-right:1.3125rem;width:var(--ibiz-control-mobmdctrl-img-width);margin-right:var(--ibiz-control-mobmdctrl-padding);border-radius:var(--ibiz-control-mobmdctrl-img-radius)}.ibiz-control-mobmdctrl-group-caption{--ibiz-control-mobmdctrl-text-color:var(--ibiz-color-text-0);--ibiz-control-mobmdctrl-hover-bg-color:var(--ibiz-color-primary);--ibiz-control-mobmdctrl-active-bg-color:#D1D1D5;--ibiz-control-mobmdctrl-active-color:var(--ibiz-color-bg-1);--ibiz-control-mobmdctrl-img-width:var(--ibiz-width-icon-extra-large);--ibiz-control-mobmdctrl-img-radius:var(--ibiz-border-radius-extra-small);--ibiz-control-mobmdctrl-padding:var(--ibiz-spacing-base) 0 var(--ibiz-spacing-base) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-mobmdctrl-group-font:var(--ibiz-font-size-regular);--ibiz-control-mobmdctrl-icon-color:#A0A5AA;--ibiz-control-mobmdctrl-group-caption-color:#9A9B9F;--ibiz-control-mobmdctrl-load-more-font-size:var(--ibiz-font-size-small);--ibiz-control-mobmdctrl-font-size:var(--ibiz-font-size-header-5);--ibiz-control-mobmdctrl-right-icon-margin-right:1.3125rem;padding:var(--ibiz-control-mobmdctrl-group-padding);font-size:var(--ibiz-control-mobmdctrl-group-font);color:var(--ibiz-control-mobmdctrl-group-caption-color)}.ibiz-control-mobmdctrl-load-more{display:flex;justify-content:center;padding:var(--ibiz-spacing-tight);font-size:var(--ibiz-control-mobmdctrl-load-more-font-size);color:var(--ibiz-color-text-2)}.ibiz-control-mobmdctrl-load-more span{padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-base);border:1px solid var(--ibiz-color-border);border-radius:var(--ibiz-border-radius-full)}
@@ -64,6 +64,7 @@ const IBizDropdown = /* @__PURE__ */ vue.defineComponent({
64
64
  if (index !== -1) {
65
65
  return items.value[index].text;
66
66
  }
67
+ return "";
67
68
  });
68
69
  const editorRef = vue.ref();
69
70
  if (props.autoFocus) {
@@ -27,6 +27,27 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
27
27
  } = useVanUpload.useVanUpload(props, (value) => {
28
28
  emit("change", value);
29
29
  }, c);
30
+ const getFileSuffix = (name) => {
31
+ const lastDotIndex = name.lastIndexOf(".");
32
+ if (lastDotIndex === -1) {
33
+ return "";
34
+ }
35
+ const extension = name.substring(lastDotIndex + 1).toLowerCase();
36
+ return extension;
37
+ };
38
+ const getFileName = (filename) => {
39
+ const lastDotIndex = filename.lastIndexOf(".");
40
+ if (lastDotIndex === -1) {
41
+ return filename;
42
+ }
43
+ const name = filename.substring(0, lastDotIndex);
44
+ return name;
45
+ };
46
+ const getPreviewImg = (name) => {
47
+ const suffix = getFileSuffix(name);
48
+ const type = c.fileTypeMap.get(suffix) || "unknown";
49
+ return `./assets/img/file/${type}.svg`;
50
+ };
30
51
  return {
31
52
  ns,
32
53
  c,
@@ -37,6 +58,9 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
37
58
  beforeUpload,
38
59
  onDownload,
39
60
  afterRead,
61
+ getFileSuffix,
62
+ getFileName,
63
+ getPreviewImg,
40
64
  limit
41
65
  };
42
66
  },
@@ -55,17 +79,17 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
55
79
  }, {
56
80
  default: () => {
57
81
  return !this.readonly && !this.disabled && vue.createVNode(vue.resolveComponent("van-button"), {
58
- "class": this.ns.b("button")
59
- }, {
60
- default: () => [vue.createTextVNode("\u4E0A\u4F20\u6587\u4EF6")]
61
- });
82
+ "class": this.ns.b("button"),
83
+ "icon": "add-o",
84
+ "type": "primary"
85
+ }, null);
62
86
  },
63
87
  "preview-cover": (file) => {
64
88
  return vue.createVNode("div", {
65
89
  "class": this.ns.b("item-cover")
66
90
  }, [file.name]);
67
91
  }
68
- }), vue.createVNode("div", {
92
+ }), this.files.length > 0 && vue.createVNode("div", {
69
93
  "class": this.ns.b("preview")
70
94
  }, [this.files.map((item) => {
71
95
  return vue.createVNode("div", {
@@ -73,18 +97,25 @@ const IBizFileUpload = /* @__PURE__ */ vue.defineComponent({
73
97
  "onClick": () => {
74
98
  this.onDownload(item);
75
99
  }
100
+ }, [vue.createVNode("div", {
101
+ "class": this.ns.b("preview-item-left")
76
102
  }, [vue.createVNode("div", {
77
103
  "class": this.ns.b("preview-item-img")
78
104
  }, [vue.createVNode("img", {
79
- "src": "./assets/img/file.png",
105
+ "src": this.getPreviewImg(item.name),
80
106
  "alt": ""
81
107
  }, null)]), vue.createVNode("div", {
82
108
  "class": this.ns.b("preview-item-text")
83
- }, [item.name]), !this.readonly && !this.disabled && vue.createVNode("div", {
109
+ }, [vue.createVNode("div", {
110
+ "class": this.ns.b("preview-item-name")
111
+ }, [this.getFileName(item.name)]), this.getFileSuffix(item.name) && vue.createVNode("div", {
112
+ "class": this.ns.b("preview-item-suffix")
113
+ }, [vue.createTextVNode("."), this.getFileSuffix(item.name)])])]), !this.readonly && !this.disabled && vue.createVNode("div", {
84
114
  "class": this.ns.b("preview-item-action")
85
115
  }, [vue.createVNode(vue.resolveComponent("van-icon"), {
86
116
  "name": "cross",
87
- "onClick": () => {
117
+ "onClick": (e) => {
118
+ e.stopPropagation();
88
119
  this.onRemove(item);
89
120
  }
90
121
  }, null)])]);
@@ -1 +1 @@
1
- .ibiz-file-upload{width:100%}.ibiz-file-upload .van-uploader__preview{display:none}.ibiz-file-upload .ibiz-file-upload-button{height:1.875rem}.ibiz-file-upload .ibiz-file-upload-button span{font-size:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-text-color)}.ibiz-file-upload .van-uploader__preview .van-uploader__file-icon{display:none}.ibiz-file-upload .van-uploader__preview .van-uploader__file-name{display:none}.ibiz-file-upload .ibiz-file-upload-item-cover{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;font-size:.75rem;line-height:initial;color:#fff;text-align:center;background:var(--ibiz-color-overlay-bg)}.ibiz-file-upload .ibiz-file-upload-preview{width:100%}.ibiz-file-upload .ibiz-file-upload-preview-item{display:flex;align-items:center;border-bottom:.0625rem solid var(--ibiz-color-border)}.ibiz-file-upload .ibiz-file-upload-preview-item:last-child{border-width:0}.ibiz-file-upload .ibiz-file-upload-preview-item-img{width:3.125rem;min-width:3.125rem;padding:.625rem}.ibiz-file-upload .ibiz-file-upload-preview-item-img img{width:100%;height:100%;border-radius:.25rem}.ibiz-file-upload .ibiz-file-upload-preview-item-text{overflow:hidden;font-size:.875rem;text-overflow:ellipsis;white-space:nowrap}.ibiz-file-upload .ibiz-file-upload-preview-item-action{display:flex;flex-grow:1;align-items:center;justify-content:flex-end;min-width:3.125rem;color:var(--ibiz-color-overlay-bg);text-align:right}
1
+ .ibiz-file-upload{width:100%}.ibiz-file-upload .van-uploader__preview{display:none}.ibiz-file-upload .ibiz-file-upload-button{width:1.25rem;height:1.25rem;font-size:var(--ibiz-font-size-header-4);color:var(--ibiz-color-text-2);background:0 0;border:none;border-radius:50%}.ibiz-file-upload .van-uploader__preview .van-uploader__file-icon{display:none}.ibiz-file-upload .van-uploader__preview .van-uploader__file-name{display:none}.ibiz-file-upload .ibiz-file-upload-item-cover{position:absolute;top:0;bottom:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;font-size:.75rem;line-height:initial;color:#fff;text-align:center;background:var(--ibiz-color-overlay-bg)}.ibiz-file-upload .ibiz-file-upload-preview{width:100%;margin-top:.625rem}.ibiz-file-upload .ibiz-file-upload-preview-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0 var(--ibiz-spacing-tight);margin-bottom:var(--ibiz-spacing-tight);background:var(--ibiz-color-disabled-bg);border-radius:var(--ibiz-border-radius-small)}.ibiz-file-upload .ibiz-file-upload-preview-item:last-child{margin:0;border-width:0}.ibiz-file-upload .ibiz-file-upload-preview-item-img{flex-shrink:0;width:2.5rem;min-width:2.5rem;height:2.5rem;padding:.375rem}.ibiz-file-upload .ibiz-file-upload-preview-item-img img{width:100%;height:100%;border-radius:.25rem}.ibiz-file-upload .ibiz-file-upload-preview-item-left{display:flex;flex-grow:1;align-items:center;width:calc(100% - 1.25rem)}.ibiz-file-upload .ibiz-file-upload-preview-item-text{display:flex;flex:1;align-items:center;width:calc(100% - 2.5rem);padding-left:var(--ibiz-spacing-tight);font-size:.875rem}.ibiz-file-upload .ibiz-file-upload-preview-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-file-upload .ibiz-file-upload-preview-item-action{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;width:1.25rem;color:var(--ibiz-color-overlay-bg);text-align:right}.ibiz-file-upload .van-uploader__input-wrapper{width:100%;text-align:right}.ibiz-form-item-container--top .ibiz-file-upload .van-uploader{position:absolute;top:0;right:0;width:100%}
@@ -34,6 +34,56 @@ class UploadEditorController extends runtime.EditorController {
34
34
  * 下载参数
35
35
  */
36
36
  __publicField(this, "exportParams");
37
+ /**
38
+ * 文件类型
39
+ *
40
+ * @author zk
41
+ * @date 2023-12-07 03:12:25
42
+ * @memberof UploadEditorController
43
+ */
44
+ __publicField(this, "fileTypeMap", /* @__PURE__ */ new Map([
45
+ // word文档
46
+ ["docx", "docx"],
47
+ ["doc", "docx"],
48
+ ["dotx", "docx"],
49
+ ["dot", "docx"],
50
+ // pdf
51
+ ["pdf", "pdf"],
52
+ // text
53
+ ["txt", "text"],
54
+ //
55
+ ["xlsx", "excel"],
56
+ ["xls", "excel"],
57
+ ["xlsm", "excel"],
58
+ ["xlsb", "excel"],
59
+ ["csv", "excel"],
60
+ // ppt
61
+ ["pptx", "ppt"],
62
+ // 图片
63
+ ["jpg", "img"],
64
+ ["png", "img"],
65
+ ["gif", "img"],
66
+ ["bmp", "img"],
67
+ ["svg", "img"],
68
+ // 音频
69
+ ["mp3", "audio"],
70
+ ["wav", "audio"],
71
+ ["aac", "audio"],
72
+ ["flac", "audio"],
73
+ ["wma", "audio"],
74
+ // 视频
75
+ ["mp4", "video"],
76
+ ["avi", "video"],
77
+ ["mov", "video"],
78
+ ["mkv", "video"],
79
+ ["wmv", "video"],
80
+ // 压缩
81
+ ["zip", "zip"],
82
+ ["rar", "zip"],
83
+ ["7z", "zip"],
84
+ ["gz", "zip"],
85
+ ["tar", "zip"]
86
+ ]));
37
87
  }
38
88
  async onInit() {
39
89
  var _a;
@@ -12,11 +12,6 @@ function useVanUpload(props, valueChange, c) {
12
12
  });
13
13
  const uploadUrl = vue.ref("");
14
14
  const downloadUrl = vue.ref("");
15
- const uploadCache = {
16
- count: 0,
17
- cacheFiles: []
18
- // iview上传过程中不能改default-file-list,所以需要缓存
19
- };
20
15
  vue.watch(
21
16
  () => props.value,
22
17
  (newVal) => {
@@ -58,34 +53,28 @@ function useVanUpload(props, valueChange, c) {
58
53
  { immediate: true }
59
54
  );
60
55
  const emitValue = () => {
61
- const _files = [...files.value, ...uploadCache.cacheFiles];
56
+ const _files = [...files.value];
62
57
  const value = _files.length > 0 ? JSON.stringify(_files.map((file) => ({ name: file.name, id: file.id }))) : null;
63
- uploadCache.cacheFiles = [];
64
58
  valueChange(value);
65
59
  };
66
60
  const beforeUpload = () => {
67
61
  if (!c.multiple && files.value.length === 1) {
68
62
  return false;
69
63
  }
70
- uploadCache.count += 1;
71
64
  return true;
72
65
  };
73
66
  const onSuccess = (response) => {
74
67
  if (!response) {
75
68
  return;
76
69
  }
77
- uploadCache.cacheFiles.push({
70
+ files.value.push({
78
71
  name: response.filename,
79
72
  id: response.fileid
80
73
  });
81
- uploadCache.count -= 1;
82
- if (uploadCache.count === 0) {
83
- emitValue();
84
- }
74
+ emitValue();
85
75
  };
86
76
  const onError = (...args) => {
87
77
  const error = args[0];
88
- uploadCache.count -= 1;
89
78
  throw new core.HttpError({
90
79
  response: { data: JSON.parse(error.message), status: error.status }
91
80
  });
package/lib/index.cjs CHANGED
@@ -11,13 +11,13 @@ var index$3 = require('./panel-component/index.cjs');
11
11
  var index$5 = require('./view-engine/index.cjs');
12
12
  require('./util/index.cjs');
13
13
  require('./view/index.cjs');
14
- var index$6 = require('./control/md-ctrl/index.cjs');
14
+ var index$6 = require('./control/list/md-ctrl/index.cjs');
15
15
  var index$7 = require('./control/app-menu/index.cjs');
16
16
  var index$8 = require('./control/form/form/index.cjs');
17
17
  var index$9 = require('./control/form/search-form/index.cjs');
18
18
  var index$a = require('./control/form/edit-form/index.cjs');
19
19
  var index$b = require('./control/pickup-view-panel/index.cjs');
20
- var index$c = require('./control/list/index.cjs');
20
+ var index$c = require('./control/list/list/index.cjs');
21
21
  var index$d = require('./control/tab-exp-panel/index.cjs');
22
22
  var index$e = require('./control/toolbar/index.cjs');
23
23
  var index$f = require('./control/caption-bar/index.cjs');
@@ -39,6 +39,7 @@ var notificationUtil = require('./util/notification-util/notification-util.cjs')
39
39
  var openViewUtil = require('./util/open-view-util/open-view-util.cjs');
40
40
  var overlayController = require('./util/overlay-controller/overlay-controller.cjs');
41
41
  var loading = require('./util/directive/loading.cjs');
42
+ var confirmUtil = require('./util/confirm-util/confirm-util.cjs');
42
43
  var viewStack = require('./util/store/view-stack/view-stack.cjs');
43
44
  var _404View = require('./view/404-view/404-view.cjs');
44
45
  var loginView = require('./view/login-view/login-view.cjs');
@@ -99,6 +100,7 @@ exports.NotificationUtil = notificationUtil.NotificationUtil;
99
100
  exports.OpenViewUtil = openViewUtil.OpenViewUtil;
100
101
  exports.OverlayController = overlayController.OverlayController;
101
102
  exports.loadingDirective = loading.loadingDirective;
103
+ exports.ConfirmUtil = confirmUtil.ConfirmUtil;
102
104
  exports.calcUniqueKey = viewStack.calcUniqueKey;
103
105
  exports.useViewStack = viewStack.useViewStack;
104
106
  exports.View404 = _404View.View404;
@@ -30,7 +30,9 @@ const IBizPanelComponents = {
30
30
  v.use(index$6.IBizWFActionButton);
31
31
  v.use(vue3Util.IBizSingleDataContainer);
32
32
  v.use(vue3Util.IBizMultiDataContainer);
33
+ v.use(vue3Util.IBizPanelTabPage);
33
34
  v.use(index$7.IBizPanelTabPanel);
35
+ v.use(vue3Util.IBizPanelContainerGroup);
34
36
  v.use(vue3Util.IBizPanelContainerImage);
35
37
  v.use(vue3Util.IBizScrollContainer);
36
38
  }
@@ -92,14 +92,18 @@ class PanelButtonController extends runtime.PanelItemController {
92
92
  */
93
93
  async onActionClick(event) {
94
94
  const { uiactionId } = this.model;
95
- await runtime.UIActionUtil.execAndResolved(uiactionId, {
96
- context: this.panel.context,
97
- params: this.panel.params,
98
- data: [this.data],
99
- view: this.panel.view,
100
- event,
101
- noWaitRoute: true
102
- });
95
+ await runtime.UIActionUtil.execAndResolved(
96
+ uiactionId,
97
+ {
98
+ context: this.panel.context,
99
+ params: this.panel.params,
100
+ data: [this.data],
101
+ view: this.panel.view,
102
+ event,
103
+ noWaitRoute: true
104
+ },
105
+ this.model.appId
106
+ );
103
107
  }
104
108
  calcItemVisible(data) {
105
109
  if (this.state.uiActionState.visible === false) {
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ var core = require('@ibiz-template/core');
4
+ var vant = require('vant');
5
+
6
+ "use strict";
7
+ var __defProp = Object.defineProperty;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __publicField = (obj, key, value) => {
10
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
+ return value;
12
+ };
13
+ class ConfirmUtil {
14
+ constructor() {
15
+ __publicField(this, "ns", new core.Namespace("confirm"));
16
+ }
17
+ async info(params) {
18
+ const { title, desc, options } = params;
19
+ return new Promise((resolve) => {
20
+ vant.showConfirmDialog({
21
+ title,
22
+ message: desc,
23
+ className: `${this.ns.b()} ${this.ns.e("info")}`,
24
+ ...options
25
+ }).then(() => {
26
+ resolve(true);
27
+ }).catch(() => {
28
+ resolve(false);
29
+ });
30
+ });
31
+ }
32
+ async success(params) {
33
+ const { title, desc, options } = params;
34
+ return new Promise((resolve) => {
35
+ vant.showConfirmDialog({
36
+ title,
37
+ message: desc,
38
+ className: `${this.ns.b()} ${this.ns.e("success")}`,
39
+ ...options
40
+ }).then(() => {
41
+ resolve(true);
42
+ }).catch(() => {
43
+ resolve(false);
44
+ });
45
+ });
46
+ }
47
+ async warning(params) {
48
+ const { title, desc, options } = params;
49
+ return new Promise((resolve) => {
50
+ vant.showConfirmDialog({
51
+ title,
52
+ message: desc,
53
+ className: `${this.ns.b()} ${this.ns.e("warning")}`,
54
+ ...options
55
+ }).then(() => {
56
+ resolve(true);
57
+ }).catch(() => {
58
+ resolve(false);
59
+ });
60
+ });
61
+ }
62
+ async error(params) {
63
+ const { title, desc, options } = params;
64
+ return new Promise((resolve) => {
65
+ vant.showConfirmDialog({
66
+ title,
67
+ message: desc,
68
+ className: `${this.ns.b()} ${this.ns.e("error")}`,
69
+ ...options
70
+ }).then(() => {
71
+ resolve(true);
72
+ }).catch(() => {
73
+ resolve(false);
74
+ });
75
+ });
76
+ }
77
+ }
78
+
79
+ exports.ConfirmUtil = ConfirmUtil;
@@ -7,6 +7,7 @@ var notificationUtil = require('./notification-util/notification-util.cjs');
7
7
  var openViewUtil = require('./open-view-util/open-view-util.cjs');
8
8
  var overlayController = require('./overlay-controller/overlay-controller.cjs');
9
9
  var loading = require('./directive/loading.cjs');
10
+ var confirmUtil = require('./confirm-util/confirm-util.cjs');
10
11
  require('./store/index.cjs');
11
12
  var viewStack = require('./store/view-stack/view-stack.cjs');
12
13
 
@@ -19,5 +20,6 @@ exports.NotificationUtil = notificationUtil.NotificationUtil;
19
20
  exports.OpenViewUtil = openViewUtil.OpenViewUtil;
20
21
  exports.OverlayController = overlayController.OverlayController;
21
22
  exports.loadingDirective = loading.loadingDirective;
23
+ exports.ConfirmUtil = confirmUtil.ConfirmUtil;
22
24
  exports.calcUniqueKey = viewStack.calcUniqueKey;
23
25
  exports.useViewStack = viewStack.useViewStack;
@@ -52,6 +52,8 @@ class MobMPickupViewEngine extends mobPickupView_engine.MobPickupViewEngine {
52
52
  this.view.slotProps.pickupviewpanel.selectedData = this.selectedData;
53
53
  this.view.slotProps.simplelist.singleSelect = false;
54
54
  this.view.slotProps.simplelist.mdctrlActiveMode = 2;
55
+ this.view.slotProps.simplelist.mode = "SELECT";
56
+ this.view.slotProps.simplelist.loadDefault = false;
55
57
  }
56
58
  /**
57
59
  * 视图mounted生命周期执行逻辑