@ibiz-template/mob-vue3-components 0.7.41-alpha.18 → 0.7.41-alpha.19

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 (123) hide show
  1. package/dist/index-BsnCebyq.js +2 -0
  2. package/dist/index-BsnCebyq.js.map +1 -0
  3. package/dist/index-DL4fl2Xq.js +2 -0
  4. package/dist/index-DL4fl2Xq.js.map +1 -0
  5. package/dist/index-DwC1-gss.js +76 -0
  6. package/dist/index-DwC1-gss.js.map +1 -0
  7. package/dist/index.min.css +4 -4
  8. package/dist/index.system.min.js +1 -1
  9. package/dist/{quill-DKjojHxx.js → quill-DcWdzP1t.js} +2 -2
  10. package/dist/{quill-DKjojHxx.js.map → quill-DcWdzP1t.js.map} +1 -1
  11. package/dist/{quill-editor-B4FDYSA7.js → quill-editor-DlIyufAV.js} +2 -2
  12. package/dist/{quill-editor-B4FDYSA7.js.map → quill-editor-DlIyufAV.js.map} +1 -1
  13. package/dist/{quill-editor-preview-6GV-nd2y.js → quill-editor-preview-Cf2qhphz.js} +2 -2
  14. package/dist/{quill-editor-preview-6GV-nd2y.js.map → quill-editor-preview-Cf2qhphz.js.map} +1 -1
  15. package/dist/tree-CGwysqdR.js +2 -0
  16. package/dist/tree-CGwysqdR.js.map +1 -0
  17. package/es/_virtual/index12.mjs +2 -2
  18. package/es/_virtual/index13.mjs +2 -2
  19. package/es/_virtual/index14.mjs +2 -2
  20. package/es/_virtual/index15.mjs +3 -1
  21. package/es/_virtual/index16.mjs +1 -1
  22. package/es/_virtual/index17.mjs +1 -3
  23. package/es/_virtual/index18.mjs +2 -2
  24. package/es/_virtual/index19.mjs +3 -0
  25. package/es/control/calendar/calendar.mjs +2 -0
  26. package/es/control/dashboard/dashboard.css +1 -1
  27. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.css +1 -1
  28. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +68 -22
  29. package/es/control/drbar/drbar.controller.mjs +24 -1
  30. package/es/control/drtab/drtab.controller.mjs +20 -4
  31. package/es/control/list/list-render-util.mjs +1 -1
  32. package/es/control/list/md-ctrl/md-ctrl.css +1 -1
  33. package/es/control/tab-exp-panel/tab-exp-panel.css +1 -1
  34. package/es/control/tree/tree.mjs +8 -0
  35. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  36. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +5 -0
  37. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +23 -3
  38. package/es/editor/data-picker/picker-editor.controller.mjs +1 -1
  39. package/es/editor/date-picker/date-picker-editor.controller.mjs +16 -0
  40. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.mjs +4 -1
  41. package/es/editor/date-range/date-range-editor.controller.mjs +16 -0
  42. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.mjs +11 -4
  43. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +2 -2
  44. package/es/editor/html/html-editor.controller.mjs +8 -2
  45. package/es/editor/index.mjs +5 -0
  46. package/es/editor/map-picker/ibiz-map-picker/ibiz-map-picker.css +1 -0
  47. package/es/editor/map-picker/ibiz-map-picker/ibiz-map-picker.mjs +337 -0
  48. package/es/editor/map-picker/index.mjs +5 -0
  49. package/es/editor/map-picker/map-picker-editor.controller.mjs +7 -0
  50. package/es/editor/map-picker/map-picker-editor.provider.mjs +22 -0
  51. package/es/editor/text-box/signature/signature.css +1 -1
  52. package/es/editor/text-box/signature/signature.mjs +2 -0
  53. package/es/index.mjs +1 -0
  54. package/es/locale/en/index.mjs +3 -0
  55. package/es/locale/zh-CN/index.mjs +3 -0
  56. package/es/mob-app/router/index.mjs +6 -5
  57. package/es/node_modules/.pnpm/@amap_amap-jsapi-loader@1.0.1_patch_hash_73bpcwbs2m5ip4qppmz6a7epsa/node_modules/@amap/amap-jsapi-loader/dist/index.mjs +41 -0
  58. package/es/node_modules/.pnpm/dingtalk-jsapi@3.2.0/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.mjs +1 -1
  59. package/es/node_modules/.pnpm/dingtalk-jsapi@3.2.0/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.mjs +1 -1
  60. package/es/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index2.mjs +1 -1
  61. package/es/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.mjs +1 -1
  62. package/es/node_modules/.pnpm/lodash.isequal@4.5.0/node_modules/lodash.isequal/index.mjs +1 -1
  63. package/es/node_modules/.pnpm/quill-delta@5.1.0/node_modules/quill-delta/dist/AttributeMap.mjs +1 -1
  64. package/es/node_modules/.pnpm/quill-delta@5.1.0/node_modules/quill-delta/dist/Delta.mjs +1 -1
  65. package/es/view-engine/mob-mpickup-view-engine.mjs +6 -1
  66. package/lib/_virtual/index12.cjs +2 -2
  67. package/lib/_virtual/index13.cjs +2 -2
  68. package/lib/_virtual/index14.cjs +2 -2
  69. package/lib/_virtual/index15.cjs +2 -6
  70. package/lib/_virtual/index16.cjs +2 -2
  71. package/lib/_virtual/index17.cjs +6 -2
  72. package/lib/_virtual/index18.cjs +2 -2
  73. package/lib/_virtual/index19.cjs +5 -0
  74. package/lib/control/calendar/calendar.cjs +2 -0
  75. package/lib/control/dashboard/dashboard.css +1 -1
  76. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +67 -21
  77. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.css +1 -1
  78. package/lib/control/drbar/drbar.controller.cjs +24 -1
  79. package/lib/control/drtab/drtab.controller.cjs +20 -4
  80. package/lib/control/list/list-render-util.cjs +1 -1
  81. package/lib/control/list/md-ctrl/md-ctrl.css +1 -1
  82. package/lib/control/tab-exp-panel/tab-exp-panel.css +1 -1
  83. package/lib/control/tree/tree.cjs +8 -0
  84. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +5 -0
  85. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  86. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +23 -3
  87. package/lib/editor/data-picker/picker-editor.controller.cjs +1 -1
  88. package/lib/editor/date-picker/date-picker-editor.controller.cjs +16 -0
  89. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.cjs +3 -0
  90. package/lib/editor/date-range/date-range-editor.controller.cjs +16 -0
  91. package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.cjs +10 -3
  92. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +2 -2
  93. package/lib/editor/html/html-editor.controller.cjs +8 -2
  94. package/lib/editor/index.cjs +5 -0
  95. package/lib/editor/map-picker/ibiz-map-picker/ibiz-map-picker.cjs +339 -0
  96. package/lib/editor/map-picker/ibiz-map-picker/ibiz-map-picker.css +1 -0
  97. package/lib/editor/map-picker/index.cjs +11 -0
  98. package/lib/editor/map-picker/map-picker-editor.controller.cjs +9 -0
  99. package/lib/editor/map-picker/map-picker-editor.provider.cjs +24 -0
  100. package/lib/editor/text-box/signature/signature.cjs +2 -0
  101. package/lib/editor/text-box/signature/signature.css +1 -1
  102. package/lib/index.cjs +2 -0
  103. package/lib/locale/en/index.cjs +3 -0
  104. package/lib/locale/zh-CN/index.cjs +3 -0
  105. package/lib/mob-app/router/index.cjs +6 -5
  106. package/lib/node_modules/.pnpm/@amap_amap-jsapi-loader@1.0.1_patch_hash_73bpcwbs2m5ip4qppmz6a7epsa/node_modules/@amap/amap-jsapi-loader/dist/index.cjs +45 -0
  107. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.2.0/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.cjs +1 -1
  108. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.2.0/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.cjs +1 -1
  109. package/lib/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index2.cjs +1 -1
  110. package/lib/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.cjs +1 -1
  111. package/lib/node_modules/.pnpm/lodash.isequal@4.5.0/node_modules/lodash.isequal/index.cjs +1 -1
  112. package/lib/node_modules/.pnpm/quill-delta@5.1.0/node_modules/quill-delta/dist/AttributeMap.cjs +1 -1
  113. package/lib/node_modules/.pnpm/quill-delta@5.1.0/node_modules/quill-delta/dist/Delta.cjs +1 -1
  114. package/lib/view-engine/mob-mpickup-view-engine.cjs +6 -1
  115. package/package.json +14 -8
  116. package/dist/index-BcB2An4e.js +0 -2
  117. package/dist/index-BcB2An4e.js.map +0 -1
  118. package/dist/index-DO9R8HNp.js +0 -76
  119. package/dist/index-DO9R8HNp.js.map +0 -1
  120. package/dist/index-DuVHtH1z.js +0 -2
  121. package/dist/index-DuVHtH1z.js.map +0 -1
  122. package/dist/tree-Db38FIKx.js +0 -2
  123. package/dist/tree-Db38FIKx.js.map +0 -1
@@ -100,6 +100,7 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
100
100
  }) : "";
101
101
  return {
102
102
  _id: node._id,
103
+ id: node._id,
103
104
  _uuid: node._uuid,
104
105
  _leaf: node._leaf,
105
106
  _text: node._text,
@@ -127,6 +128,12 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
127
128
  }
128
129
  return controller.state.items.find((item) => item._uuid === key);
129
130
  }
131
+ const updateUI = () => {
132
+ if (treeRef.value) {
133
+ treeRef.value.tree.tree.store.checkedKeys = checkedKeys.value;
134
+ treeRef.value.tree.tree.store.setDefaultChecked();
135
+ }
136
+ };
130
137
  const loadData = async (item, callback) => {
131
138
  if (!c.state.isLoaded) {
132
139
  return;
@@ -147,6 +154,7 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
147
154
  return;
148
155
  }
149
156
  callback(toElNodes(nodes));
157
+ updateUI();
150
158
  };
151
159
  const onNodeCheck = (event, opts) => {
152
160
  if (c.state.singleSelect) {
@@ -301,6 +301,11 @@ const IBizMPicker = /* @__PURE__ */ vue.defineComponent({
301
301
  "disabled": this.disabled
302
302
  }, {
303
303
  input: () => {
304
+ if (!this.selectItems.length) {
305
+ return vue.createVNode("div", {
306
+ "class": this.ns.e("placeholder")
307
+ }, [this.c.placeHolder]);
308
+ }
304
309
  return this.selectItems.map((item) => {
305
310
  return vue.createVNode("div", {
306
311
  "class": this.ns.b("select-item")
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-mpicker .van-field{font-size:var(--ibiz-form-item-font-size)}.ibiz-mpicker .van-field::after{display:none}.ibiz-mpicker .van-field__right-icon button{color:var(--van-field-right-icon-color);border:none}.ibiz-mpicker .van-field__control--custom{flex-wrap:wrap}.ibiz-mpicker .van-field__control{gap:var(--ibiz-spacing-tight)}.ibiz-mpicker input:disabled{color:var(--ibiz-form-item-disabled-color);background-color:var(--ibiz-form-item-disabled-bg-color);border-color:var(--ibiz-form-item-disabled-border-color);-webkit-text-fill-color:var(--ibiz-form-item-disabled-color)}.ibiz-mpicker__pickup-search-icon{font-size:var(--ibiz-font-size-header-5);display:flex}.ibiz-mpicker--disabled{pointer-events:none;opacity:.8}.ibiz-mpicker--readonly{color:var(--ibiz-form-item-readonly-color);-webkit-text-fill-color:var(--ibiz-form-item-readonly-color)}.ibiz-mpicker .ibiz-mpicker-select-item{display:flex;gap:var(--ibiz-spacing-tight);align-items:center;justify-content:space-between;padding:var(--ibiz-spacing-tight);background-color:var(--ibiz-color-disabled-bg);border-radius:var(--ibiz-border-radius-small)}.ibiz-mpicker .van-field__control--custom{display:flex;flex-direction:row;justify-content:var(--ibiz-form-item-container-editor-align)}.ibiz-mpicker.ibiz-mpicker--readonly{text-align:var(--ibiz-form-item-container-editor-align)}
1
+ @charset "UTF-8";.ibiz-mpicker .van-field{font-size:var(--ibiz-form-item-font-size)}.ibiz-mpicker .van-field::after{display:none}.ibiz-mpicker .van-field__right-icon{align-items:center}.ibiz-mpicker .van-field__right-icon button{color:var(--van-field-right-icon-color);border:none}.ibiz-mpicker .van-field__control--custom{flex-wrap:wrap}.ibiz-mpicker .van-field__control{gap:var(--ibiz-spacing-tight)}.ibiz-mpicker input:disabled{color:var(--ibiz-form-item-disabled-color);background-color:var(--ibiz-form-item-disabled-bg-color);border-color:var(--ibiz-form-item-disabled-border-color);-webkit-text-fill-color:var(--ibiz-form-item-disabled-color)}.ibiz-mpicker__placeholder{color:var(--ibiz-color-text-3)}.ibiz-mpicker__pickup-search-icon{font-size:var(--ibiz-font-size-header-5);display:flex}.ibiz-mpicker--disabled{pointer-events:none;opacity:.8}.ibiz-mpicker--readonly{color:var(--ibiz-form-item-readonly-color);-webkit-text-fill-color:var(--ibiz-form-item-readonly-color)}.ibiz-mpicker .ibiz-mpicker-select-item{display:flex;gap:var(--ibiz-spacing-tight);align-items:center;justify-content:space-between;padding:var(--ibiz-spacing-tight);background-color:var(--ibiz-color-disabled-bg);border-radius:var(--ibiz-border-radius-small)}.ibiz-mpicker .van-field__control--custom{display:flex;flex-direction:row;justify-content:var(--ibiz-form-item-container-editor-align)}.ibiz-mpicker.ibiz-mpicker--readonly{text-align:var(--ibiz-form-item-container-editor-align)}
@@ -64,12 +64,28 @@ const IBizPicker = /* @__PURE__ */ vue.defineComponent({
64
64
  }
65
65
  emit("change", targetData[c.textName]);
66
66
  };
67
+ const calcSelectItem = () => {
68
+ const selectItems = [];
69
+ if (curValue.value) {
70
+ const selectItem = {
71
+ srfkey: props.data[c.valueItem],
72
+ srfmajortext: curValue.value,
73
+ ...c.model.valueType === "OBJECT" && props.value && c.objectValueField ? props.value[c.objectValueField] : {}
74
+ };
75
+ if (c.deACMode && c.dataItems.length)
76
+ c.dataItems.forEach((item) => Object.assign(selectItem, {
77
+ [item.appDEFieldId]: props.data[item.id]
78
+ }));
79
+ selectItems.push(selectItem);
80
+ }
81
+ return selectItems;
82
+ };
67
83
  const openPickUpView = async (e) => {
68
84
  e.stopPropagation();
69
85
  if (props.disabled || props.readonly) {
70
86
  return;
71
87
  }
72
- const res = await c.openPickUpView(props.data);
88
+ const res = await c.openPickUpView(props.data, JSON.stringify(calcSelectItem()));
73
89
  if (res && res[0]) {
74
90
  await handleDataSelect(res[0]);
75
91
  }
@@ -174,7 +190,7 @@ const IBizPicker = /* @__PURE__ */ vue.defineComponent({
174
190
  onSearch();
175
191
  };
176
192
  const onClose = () => {
177
- showPicker.value = true;
193
+ showPicker.value = false;
178
194
  };
179
195
  const onClickClear = () => {
180
196
  showPicker.value = false;
@@ -220,6 +236,10 @@ const IBizPicker = /* @__PURE__ */ vue.defineComponent({
220
236
  var _a;
221
237
  if (((_a = item[c.textName]) == null ? void 0 : _a.indexOf(searchValue.value)) < 0)
222
238
  return;
239
+ let selected = (item[c.textName] || item.srfmajortext) === curValue.value;
240
+ if (c.valueItem) {
241
+ selected = (item[c.keyName] || item.srfkey) === props.data[c.valueItem];
242
+ }
223
243
  return vue.createVNode("div", {
224
244
  "class": ns.bem("pop", "list", "item"),
225
245
  "onClick": () => onConfirm(item)
@@ -229,7 +249,7 @@ const IBizPicker = /* @__PURE__ */ vue.defineComponent({
229
249
  "select-option-item-color": `${item.color || ""}`,
230
250
  "select-option-item-bkcolor": `${item.bkcolor || ""}`
231
251
  }) : ""
232
- }, [item[c.textName]]), item.srfkey && item.srfkey === props.data[c.valueItem] && vue.createVNode(vue.resolveComponent("van-icon"), {
252
+ }, [item[c.textName]]), selected && vue.createVNode(vue.resolveComponent("van-icon"), {
233
253
  "class": ns.bem("pop", "list", "selected"),
234
254
  "name": "success"
235
255
  }, null)]);
@@ -209,7 +209,7 @@ class PickerEditorController extends runtime.EditorController {
209
209
  this.params
210
210
  );
211
211
  if (selectedData) {
212
- params.selectedData = selectedData;
212
+ params.selecteddata = selectedData;
213
213
  }
214
214
  if (!this.pickupView) {
215
215
  throw new core.RuntimeModelError(
@@ -55,6 +55,22 @@ class DatePickerEditorController extends runtime.EditorController {
55
55
  return "YYYY-MM-DD hh:mm:ss";
56
56
  }
57
57
  }
58
+ /**
59
+ * 值格式化
60
+ *
61
+ * @readonly
62
+ * @type {(string | undefined)}
63
+ * @memberof DatePickerEditorController
64
+ */
65
+ get valueFormat() {
66
+ if (super.valueFormat) {
67
+ return super.valueFormat;
68
+ }
69
+ if (this.model.dateTimeFormat) {
70
+ return this.model.dateTimeFormat;
71
+ }
72
+ return this.getFormatByType(this.model.editorType);
73
+ }
58
74
  }
59
75
 
60
76
  exports.DatePickerEditorController = DatePickerEditorController;
@@ -109,6 +109,9 @@ const IBizDatePicker = /* @__PURE__ */ vue.defineComponent({
109
109
  });
110
110
  }
111
111
  });
112
+ vue.onBeforeUnmount(() => {
113
+ closeDrawer();
114
+ });
112
115
  return {
113
116
  ns,
114
117
  c,
@@ -60,6 +60,22 @@ class DateRangeEditorController extends runtime.EditorController {
60
60
  return "YYYY-MM-DD hh:mm:ss";
61
61
  }
62
62
  }
63
+ /**
64
+ * 值格式化
65
+ *
66
+ * @readonly
67
+ * @type {(string | undefined)}
68
+ * @memberof DateRangeEditorController
69
+ */
70
+ get valueFormat() {
71
+ if (this.model.dateTimeFormat) {
72
+ return this.model.dateTimeFormat;
73
+ }
74
+ if (super.valueFormat) {
75
+ return super.valueFormat;
76
+ }
77
+ return this.getFormatByType();
78
+ }
63
79
  }
64
80
 
65
81
  exports.DateRangeEditorController = DateRangeEditorController;
@@ -24,6 +24,8 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
24
24
  const beginYear = currentYear - 100;
25
25
  const endYear = currentYear + 100;
26
26
  const minStep = 1;
27
+ const startRollDateInstance = vue.ref(null);
28
+ const endRollDateInstance = vue.ref(null);
27
29
  let items = [];
28
30
  const lang = {
29
31
  title: ibiz.i18n.t("editor.datePicker.title"),
@@ -156,7 +158,7 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
156
158
  };
157
159
  const el = startEditorRef.value;
158
160
  if (el) {
159
- new rolldate_min.default({
161
+ startRollDateInstance.value = new rolldate_min.default({
160
162
  el,
161
163
  value: startFormatValue.value,
162
164
  confirm: (value) => {
@@ -171,7 +173,7 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
171
173
  }
172
174
  const el2 = endEditorRef.value;
173
175
  if (el2) {
174
- new rolldate_min.default({
176
+ endRollDateInstance.value = new rolldate_min.default({
175
177
  el: el2,
176
178
  value: endFormatValue.value,
177
179
  confirm: (value) => {
@@ -186,9 +188,11 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
186
188
  }
187
189
  });
188
190
  const closeDrawer = () => {
189
- var _a, _b, _c, _d;
191
+ var _a, _b, _c, _d, _e, _f, _g, _h;
190
192
  (_b = (_a = startEditorRef.value) == null ? void 0 : _a.hide) == null ? void 0 : _b.call(_a);
191
193
  (_d = (_c = endEditorRef.value) == null ? void 0 : _c.hide) == null ? void 0 : _d.call(_c);
194
+ (_f = (_e = startRollDateInstance.value) == null ? void 0 : _e.hide) == null ? void 0 : _f.call(_e);
195
+ (_h = (_g = endRollDateInstance.value) == null ? void 0 : _g.hide) == null ? void 0 : _h.call(_g);
192
196
  };
193
197
  usePopstateUtil.usePopstateListener(closeDrawer);
194
198
  const expandHidden = (text) => {
@@ -205,6 +209,9 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
205
209
  });
206
210
  show.value = false;
207
211
  };
212
+ vue.onBeforeUnmount(() => {
213
+ closeDrawer();
214
+ });
208
215
  const renderCalendarMode = () => {
209
216
  return vue.createVNode(vue.resolveComponent("van-popup"), {
210
217
  "show": show.value,
@@ -66,7 +66,7 @@ const IBizDropdown = /* @__PURE__ */ vue.defineComponent({
66
66
  const index = items.value.findIndex(
67
67
  // 不匹配类型 兼容数值属性配置字符串代码表
68
68
  // eslint-disable-next-line eqeqeq
69
- (item) => item.value == curValue.value
69
+ (item) => item.value === curValue.value
70
70
  );
71
71
  if (index !== -1) {
72
72
  return items.value[index].text;
@@ -157,7 +157,7 @@ const IBizDropdown = /* @__PURE__ */ vue.defineComponent({
157
157
  "select-option-item-color": `${item.color || ""}`,
158
158
  "select-option-item-bkcolor": `${item.bkcolor || ""}`
159
159
  }) : ""
160
- }, [item.text]), item.value && item.value === curValue.value && vue.createVNode(vue.resolveComponent("van-icon"), {
160
+ }, [item.text]), item.value === curValue.value && vue.createVNode(vue.resolveComponent("van-icon"), {
161
161
  "class": ns.bem("pop", "list", "selected"),
162
162
  "name": "success"
163
163
  }, null)]);
@@ -158,13 +158,19 @@ class HtmlEditorController extends runtime.EditorController {
158
158
  if (MODULES) {
159
159
  this.modules = runtime.ScriptFactory.execScriptFn(
160
160
  { controller: this },
161
- MODULES
161
+ MODULES,
162
+ {
163
+ isAsync: false
164
+ }
162
165
  );
163
166
  }
164
167
  if (modules) {
165
168
  this.modules = runtime.ScriptFactory.execScriptFn(
166
169
  { controller: this },
167
- modules
170
+ modules,
171
+ {
172
+ isAsync: false
173
+ }
168
174
  );
169
175
  }
170
176
  if (DEFAULTHEIGHT) {
@@ -27,6 +27,7 @@ require('./html/index.cjs');
27
27
  var ibizDropdownList = require('./dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.cjs');
28
28
  require('./qrcode/index.cjs');
29
29
  require('./check-box/index.cjs');
30
+ require('./map-picker/index.cjs');
30
31
  require('./common/index.cjs');
31
32
  var input = require('./text-box/input/input.cjs');
32
33
  var ibizInputNumber = require('./text-box/ibiz-input-number/ibiz-input-number.cjs');
@@ -57,6 +58,7 @@ var ibizCarousel = require('./upload/ibiz-carousel/ibiz-carousel.cjs');
57
58
  var ibizQrcode = require('./qrcode/ibiz-qrcode/ibiz-qrcode.cjs');
58
59
  var ibizImageCropping = require('./upload/ibiz-image-cropping/ibiz-image-cropping.cjs');
59
60
  var ibizCheckbox = require('./check-box/ibiz-checkbox/ibiz-checkbox.cjs');
61
+ var ibizMapPicker = require('./map-picker/ibiz-map-picker/ibiz-map-picker.cjs');
60
62
  var spanEditor_provider = require('./span/span-editor.provider.cjs');
61
63
  var textBoxEditor_provider = require('./text-box/text-box-editor.provider.cjs');
62
64
  var dropdownListEditor_provider = require('./dropdown-list/dropdown-list-editor.provider.cjs');
@@ -76,6 +78,7 @@ var uploadEditor_provider = require('./upload/upload-editor.provider.cjs');
76
78
  var numberRangeEditor_provider = require('./number-range/number-range-editor.provider.cjs');
77
79
  var dateRangeEditor_provider = require('./date-range/date-range-editor.provider.cjs');
78
80
  var checkBoxEditor_provider = require('./check-box/check-box-editor.provider.cjs');
81
+ var mapPickerEditor_provider = require('./map-picker/map-picker-editor.provider.cjs');
79
82
  var checkboxListEditor_provider = require('./check-box-list/checkbox-list-editor.provider.cjs');
80
83
  var qrcodeEditor_provider = require('./qrcode/qrcode-editor.provider.cjs');
81
84
  var cascaderEditor_controller = require('./cascader/cascader-editor.controller.cjs');
@@ -135,6 +138,7 @@ const IBizEditor = {
135
138
  v.component(ibizQrcode.IBizQrcode.name, ibizQrcode.IBizQrcode);
136
139
  v.component(ibizImageCropping.IBizImageCropping.name, ibizImageCropping.IBizImageCropping);
137
140
  v.component(ibizCheckbox.IBizCheckbox.name, ibizCheckbox.IBizCheckbox);
141
+ v.component(ibizMapPicker.IBizMapPicker.name, ibizMapPicker.IBizMapPicker);
138
142
  v.component(
139
143
  "IBizMarkDown",
140
144
  vue.defineAsyncComponent(
@@ -344,6 +348,7 @@ const IBizEditor = {
344
348
  () => new dateRangeEditor_provider.DateRangeEditorProvider()
345
349
  );
346
350
  runtime.registerEditorProvider("CHECKBOX", () => new checkBoxEditor_provider.CheckBoxEditorProvider());
351
+ runtime.registerEditorProvider("MAPPICKER", () => new mapPickerEditor_provider.MapPickerEditorProvider());
347
352
  runtime.registerEditorProvider(
348
353
  "FIELD_IMAGE_PICTURE_ONE",
349
354
  () => new uploadEditor_provider.FileUploaderEditorProvider("MOBPICTURE_RAW")
@@ -0,0 +1,339 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ var index = require('../../../node_modules/.pnpm/@amap_amap-jsapi-loader@1.0.1_patch_hash_73bpcwbs2m5ip4qppmz6a7epsa/node_modules/@amap/amap-jsapi-loader/dist/index.cjs');
6
+ require('./ibiz-map-picker.css');
7
+
8
+ "use strict";
9
+ function _isSlot(s) {
10
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
11
+ }
12
+ const IBizMapPicker = /* @__PURE__ */ vue.defineComponent({
13
+ name: "IBizMapPicker",
14
+ props: vue3Util.getMapPickerProps(),
15
+ emits: vue3Util.getEditorEmits(),
16
+ setup(props, {
17
+ emit
18
+ }) {
19
+ const ns = vue3Util.useNamespace("map-picker");
20
+ const c = props.controller;
21
+ const {
22
+ editorItems
23
+ } = c.model;
24
+ let longitudeName = "";
25
+ let latitudeName = "";
26
+ if (editorItems) {
27
+ const [longitude, latitude] = editorItems;
28
+ longitudeName = longitude.id || "";
29
+ latitudeName = latitude.id || "";
30
+ }
31
+ const inputRef = vue.ref();
32
+ const searchRef = vue.ref();
33
+ const searchInputRef = vue.computed(() => {
34
+ var _a, _b, _c;
35
+ return (_c = (_a = searchRef.value) == null ? void 0 : (_b = _a.$el).querySelector) == null ? void 0 : _c.call(_b, "input");
36
+ });
37
+ const mapContainerRef = vue.ref();
38
+ const searchResultContainerRef = vue.ref();
39
+ const dialogVisible = vue.ref(false);
40
+ const isLoading = vue.ref(false);
41
+ const searchValue = vue.ref("");
42
+ let map;
43
+ let marker;
44
+ let poiPicker;
45
+ const addressInfo = {
46
+ address: "",
47
+ longitude: null,
48
+ latitude: null
49
+ };
50
+ const clearMarker = () => {
51
+ if (marker) {
52
+ marker.setMap(null);
53
+ marker = void 0;
54
+ }
55
+ };
56
+ const addMarker = (lng, lat) => {
57
+ const AMap = window.AMap;
58
+ if (!AMap) {
59
+ return;
60
+ }
61
+ clearMarker();
62
+ marker = new AMap.Marker({
63
+ position: [lng, lat]
64
+ });
65
+ };
66
+ const getAddress = (lng, lat) => {
67
+ const AMap = window.AMap;
68
+ if (!AMap) {
69
+ return;
70
+ }
71
+ if (!marker) {
72
+ return;
73
+ }
74
+ const geocoder = new AMap.Geocoder({});
75
+ const currentMarker = marker;
76
+ geocoder.getAddress([lng, lat], (status, result) => {
77
+ if (!marker || marker !== currentMarker) {
78
+ return;
79
+ }
80
+ if (status === "complete" && result.info === "OK" && result.regeocode) {
81
+ const regeocode = result.regeocode;
82
+ const address = regeocode.formattedAddress;
83
+ const markerContent = document.createElement("div");
84
+ const markerImg = document.createElement("img");
85
+ markerImg.style.width = "25px";
86
+ markerImg.src = "//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png";
87
+ markerContent.appendChild(markerImg);
88
+ const markerText = document.createElement("span");
89
+ markerText.className = ns.b("popup-map-marker-text");
90
+ markerText.textContent = address;
91
+ markerContent.appendChild(markerText);
92
+ marker.setContent(markerContent);
93
+ marker.setMap(map);
94
+ addressInfo.address = address;
95
+ addressInfo.longitude = lng;
96
+ addressInfo.latitude = lat;
97
+ searchValue.value = address;
98
+ }
99
+ });
100
+ };
101
+ const loadMap = async () => {
102
+ try {
103
+ isLoading.value = true;
104
+ window._AMapSecurityConfig = {
105
+ securityJsCode: ibiz.env.aMapSecurityJsCode
106
+ };
107
+ await index.default.load({
108
+ key: ibiz.env.aMapKey,
109
+ version: "2.0",
110
+ plugins: ["AMap.PlaceSearch", "AMap.Geocoder"],
111
+ AMapUI: {
112
+ version: "1.1",
113
+ plugins: ["misc/PoiPicker"]
114
+ }
115
+ });
116
+ } finally {
117
+ isLoading.value = false;
118
+ }
119
+ };
120
+ const initMap = () => {
121
+ const AMap = window.AMap;
122
+ if (!AMap) {
123
+ return;
124
+ }
125
+ if (!mapContainerRef.value) {
126
+ return;
127
+ }
128
+ map = new AMap.Map(mapContainerRef.value, {
129
+ viewMode: "3D",
130
+ zoom: 11
131
+ });
132
+ map == null ? void 0 : map.on("click", (e) => {
133
+ const lnglat = e.lnglat;
134
+ const lng = lnglat.lng;
135
+ const lat = lnglat.lat;
136
+ if (lng != null && lat != null) {
137
+ addMarker(lng, lat);
138
+ getAddress(lng, lat);
139
+ }
140
+ });
141
+ const AMapUI = window.AMapUI;
142
+ if (!AMapUI) {
143
+ return;
144
+ }
145
+ if (!searchInputRef.value || !searchResultContainerRef.value) {
146
+ return;
147
+ }
148
+ AMapUI.loadUI(["misc/PoiPicker"], function(PoiPicker) {
149
+ if (!searchInputRef.value || !searchResultContainerRef.value || !PoiPicker) {
150
+ return;
151
+ }
152
+ poiPicker = new PoiPicker({
153
+ input: searchInputRef.value,
154
+ placeSearchOptions: {
155
+ map
156
+ },
157
+ searchResultsContainer: searchResultContainerRef.value
158
+ });
159
+ poiPicker == null ? void 0 : poiPicker.on("poiPicked", function(poiResult) {
160
+ var _a, _b;
161
+ clearMarker();
162
+ const item = poiResult.item;
163
+ if (item) {
164
+ addressInfo.address = item.name;
165
+ addressInfo.longitude = (_a = item.location) == null ? void 0 : _a.lng;
166
+ addressInfo.latitude = (_b = item.location) == null ? void 0 : _b.lat;
167
+ searchValue.value = item.name;
168
+ if (poiResult.source !== "search") {
169
+ poiPicker == null ? void 0 : poiPicker.searchByKeyword(item.name);
170
+ }
171
+ }
172
+ });
173
+ });
174
+ };
175
+ const handleShow = () => {
176
+ var _a;
177
+ dialogVisible.value = true;
178
+ (_a = inputRef.value) == null ? void 0 : _a.blur();
179
+ vue.nextTick(async () => {
180
+ var _a2;
181
+ if (!window.AMap) {
182
+ await loadMap();
183
+ }
184
+ if (!map || !((_a2 = mapContainerRef.value) == null ? void 0 : _a2.children.length)) {
185
+ map == null ? void 0 : map.destroy();
186
+ initMap();
187
+ }
188
+ searchValue.value = props.value || "";
189
+ if (props.data && longitudeName && latitudeName) {
190
+ const longitude = props.data[longitudeName];
191
+ const latitude = props.data[latitudeName];
192
+ if (longitude && latitude) {
193
+ map == null ? void 0 : map.setCenter([longitude, latitude], true);
194
+ addMarker(longitude, latitude);
195
+ getAddress(longitude, latitude);
196
+ }
197
+ }
198
+ });
199
+ };
200
+ const handleConfirm = () => {
201
+ dialogVisible.value = false;
202
+ if (longitudeName) {
203
+ emit("change", addressInfo.longitude != null ? addressInfo.longitude : null, longitudeName);
204
+ }
205
+ if (latitudeName) {
206
+ emit("change", addressInfo.latitude != null ? addressInfo.latitude : null, latitudeName);
207
+ }
208
+ emit("change", addressInfo.address || "");
209
+ handleClose();
210
+ };
211
+ const handleClose = () => {
212
+ dialogVisible.value = false;
213
+ if (poiPicker) {
214
+ poiPicker.clearSuggest();
215
+ poiPicker.clearSearchResults();
216
+ }
217
+ searchValue.value = "";
218
+ addressInfo.address = "";
219
+ addressInfo.longitude = null;
220
+ addressInfo.latitude = null;
221
+ clearMarker();
222
+ };
223
+ const handleClear = (_e) => {
224
+ _e.stopPropagation();
225
+ if (longitudeName) {
226
+ emit("change", null, longitudeName);
227
+ }
228
+ if (latitudeName) {
229
+ emit("change", null, latitudeName);
230
+ }
231
+ emit("change", "");
232
+ handleClose();
233
+ };
234
+ const handleSearchClear = () => {
235
+ searchValue.value = "";
236
+ addressInfo.address = "";
237
+ addressInfo.longitude = null;
238
+ addressInfo.latitude = null;
239
+ clearMarker();
240
+ };
241
+ vue.onUnmounted(() => {
242
+ map == null ? void 0 : map.destroy();
243
+ });
244
+ return {
245
+ ns,
246
+ c,
247
+ inputRef,
248
+ searchRef,
249
+ mapContainerRef,
250
+ searchResultContainerRef,
251
+ dialogVisible,
252
+ isLoading,
253
+ searchValue,
254
+ handleShow,
255
+ handleConfirm,
256
+ handleClose,
257
+ handleClear,
258
+ handleSearchClear
259
+ };
260
+ },
261
+ render() {
262
+ let content;
263
+ if (this.readonly) {
264
+ content = this.value;
265
+ } else {
266
+ content = [vue.createVNode(vue.resolveComponent("van-field"), {
267
+ "class": this.ns.b("input"),
268
+ "ref": "inputRef",
269
+ "modelValue": this.value,
270
+ "onUpdate:modelValue": ($event) => this.value = $event,
271
+ "readonly": true,
272
+ "placeholder": this.c.placeHolder,
273
+ "disabled": this.disabled,
274
+ "onClick": this.handleShow
275
+ }, {
276
+ button: () => {
277
+ if (this.readonly || !this.value)
278
+ return;
279
+ return vue.createVNode(vue.resolveComponent("van-button"), {
280
+ "icon": "clear",
281
+ "onClick": this.handleClear
282
+ }, null);
283
+ }
284
+ }), vue.createVNode(vue.resolveComponent("van-popup"), {
285
+ "class": this.ns.b("popup"),
286
+ "show": this.dialogVisible,
287
+ "onUpdate:show": ($event) => this.dialogVisible = $event,
288
+ "round": true,
289
+ "position": "bottom",
290
+ "teleport": "body",
291
+ "close-on-popstate": true
292
+ }, {
293
+ default: () => {
294
+ let _slot, _slot2;
295
+ return vue.createVNode("div", {
296
+ "class": this.ns.b("popup-wrapper")
297
+ }, [vue.createVNode("div", {
298
+ "class": this.ns.b("popup-wrapper-content")
299
+ }, [vue.createVNode("div", {
300
+ "class": this.ns.b("popup-content-search")
301
+ }, [vue.createVNode(vue.resolveComponent("van-search"), {
302
+ "ref": "searchRef",
303
+ "modelValue": this.searchValue,
304
+ "onUpdate:modelValue": ($event) => this.searchValue = $event,
305
+ "placeholder": ibiz.i18n.t("editor.mapPicker.searchPlaceholder"),
306
+ "disabled": this.isLoading
307
+ }, null)]), vue.withDirectives(vue.createVNode("div", {
308
+ "class": this.ns.b("popup-map-content")
309
+ }, [vue.createVNode("div", {
310
+ "class": this.ns.b("popup-map-container"),
311
+ "ref": "mapContainerRef"
312
+ }, null), vue.createVNode("div", {
313
+ "class": this.ns.b("popup-search-result-container"),
314
+ "ref": "searchResultContainerRef"
315
+ }, null)]), [[vue.resolveDirective("loading"), this.isLoading]])]), vue.createVNode("div", {
316
+ "class": this.ns.b("popup-wrapper-footer")
317
+ }, [vue.createVNode(vue.resolveComponent("van-button"), {
318
+ "class": this.ns.b("popup-confirm"),
319
+ "onClick": this.handleClose
320
+ }, _isSlot(_slot = ibiz.i18n.t("editor.common.cancel")) ? _slot : {
321
+ default: () => [_slot]
322
+ }), vue.createVNode(vue.resolveComponent("van-button"), {
323
+ "class": this.ns.b("popup-footer-button"),
324
+ "type": "primary",
325
+ "disabled": this.isLoading,
326
+ "onClick": this.handleConfirm
327
+ }, _isSlot(_slot2 = ibiz.i18n.t("editor.common.confirm")) ? _slot2 : {
328
+ default: () => [_slot2]
329
+ })])]);
330
+ }
331
+ })];
332
+ }
333
+ return vue.createVNode("div", {
334
+ "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : ""]
335
+ }, [content]);
336
+ }
337
+ });
338
+
339
+ exports.IBizMapPicker = IBizMapPicker;
@@ -0,0 +1 @@
1
+ .ibiz-map-picker--readonly{height:auto;overflow:auto;line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-readonly-color);word-break:break-word;white-space:pre-wrap}.ibiz-map-picker-popup{width:100%;height:100%}.ibiz-map-picker-popup.van-popup--bottom.van-popup--round{border-radius:0}.ibiz-map-picker-input .van-field__button{position:relative;display:flex;align-items:center;justify-content:center;padding:0}.ibiz-map-picker-input .van-field__button .van-button{position:relative;width:var(--ibiz-width-icon-large);height:auto;padding:0 0 0 var(--ibiz-spacing-loose);background-color:transparent;border:none}.ibiz-map-picker-input .van-field__button .van-button::before{display:none}.ibiz-map-picker-input .van-field__button .van-icon-clear{position:absolute;left:2px;font-size:var(--ibiz-width-icon-large);color:var(--ibiz-color-text-3)}.ibiz-map-picker-popup-wrapper{display:flex;flex-direction:column;width:100%;height:100%}.ibiz-map-picker-popup-wrapper-content{position:relative;display:flex;flex-direction:column;width:100%;height:100%}.ibiz-map-picker-popup-content-search{--ibiz-popup-content-search-input-padding-left:36px;--ibiz-popup-content-search-input-padding-right:24px;position:relative;z-index:999;width:100%}.ibiz-map-picker-popup-content-search .van-search{padding:var(--ibiz-spacing-tight)}.ibiz-map-picker-popup-content-search .van-search__content{position:relative}.ibiz-map-picker-popup-content-search .van-cell,.ibiz-map-picker-popup-content-search .van-cell__value{position:static}.ibiz-map-picker-popup-content-search .van-cell__value,.ibiz-map-picker-popup-content-search .van-field__body,.ibiz-map-picker-popup-content-search .van-field__control{height:100%}.ibiz-map-picker-popup-content-search input{position:absolute;left:0;padding-left:var(--ibiz-popup-content-search-input-padding-left);padding-right:var(--ibiz-popup-content-search-input-padding-right);margin:0}.ibiz-map-picker-popup-content-search .van-field__clear{position:absolute;right:var(--ibiz-spacing-extra-tight)}.ibiz-map-picker-popup-map{width:100%;height:100%}.ibiz-map-picker-popup-map-content{width:100%;height:100%}.ibiz-map-picker-popup-map-container{width:100%;height:100%}.ibiz-map-picker-popup-search-result-container{--ibiz-popup-search-result-container-bottom:24px;--ibiz-popup-search-result-container-placesearch-list-height:30vh;position:absolute;bottom:var(--ibiz-popup-search-result-container-bottom);left:0;display:block!important;width:100%;padding:0 var(--ibiz-spacing-tight);overflow:hidden}.ibiz-map-picker-popup-search-result-container .amap_lib_placeSearch{display:flex;flex-direction:column;border:none}.ibiz-map-picker-popup-search-result-container .amap_lib_placeSearch_list{max-height:var(--ibiz-popup-search-result-container-placesearch-list-height);overflow-y:auto}.ibiz-map-picker-popup-search-result-container .amap_lib_placeSearch_page{display:flex;overflow-x:auto}.ibiz-map-picker-popup-wrapper-footer{--ibiz-popup-wrapper-footer-height:70px;display:flex;gap:var(--ibiz-spacing-base);align-items:center;justify-content:space-between;height:var(--ibiz-popup-wrapper-footer-height);padding:0 var(--ibiz-spacing-tight)}.ibiz-map-picker-popup-wrapper-footer .van-button{width:50%}.ibiz-map-picker-popup-map-marker-text{--ibiz-popup-map-marker-text-background-color:#3d93fd;--ibiz-popup-map-marker-text-font-size:12px;--ibiz-popup-map-marker-text-padding:4px 10px;--ibiz-popup-map-marker-text-border-radius:4px;position:absolute;top:-24px;padding:var(--ibiz-popup-map-marker-text-padding);font-size:var(--ibiz-popup-map-marker-text-font-size);color:var(--ibiz-color-white);white-space:nowrap;background-color:var(--ibiz-popup-map-marker-text-background-color);border-radius:var(--ibiz-popup-map-marker-text-border-radius);transform:translateX(calc(-50% - 12.5px))}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var ibizMapPicker = require('./ibiz-map-picker/ibiz-map-picker.cjs');
4
+ var mapPickerEditor_controller = require('./map-picker-editor.controller.cjs');
5
+ var mapPickerEditor_provider = require('./map-picker-editor.provider.cjs');
6
+
7
+ "use strict";
8
+
9
+ exports.IBizMapPicker = ibizMapPicker.IBizMapPicker;
10
+ exports.MapPickerEditorController = mapPickerEditor_controller.MapPickerEditorController;
11
+ exports.MapPickerEditorProvider = mapPickerEditor_provider.MapPickerEditorProvider;