@cloudbase/weda-ui 3.4.0 → 3.4.2

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 (81) hide show
  1. package/dist/configs/actions/showMessage.json +45 -0
  2. package/dist/configs/actions/showModal.json +21 -0
  3. package/dist/configs/actions/showToast.json +11 -2
  4. package/dist/configs/components/button.json +1 -1
  5. package/dist/configs/components/calendar.json +1 -1
  6. package/dist/configs/components/carousel.json +76 -66
  7. package/dist/configs/components/chart/bar.json +39 -3
  8. package/dist/configs/components/chart/line.json +5 -2
  9. package/dist/configs/components/chart/pie.json +5 -2
  10. package/dist/configs/components/chart/statisticsCard.json +6 -6
  11. package/dist/configs/components/container.json +16 -2
  12. package/dist/configs/components/dataView.json +47 -4
  13. package/dist/configs/components/form/departTreeSelect.json +1 -1
  14. package/dist/configs/components/form/form.json +1 -1
  15. package/dist/configs/components/form/location.json +2 -2
  16. package/dist/configs/components/form/richText.json +2 -2
  17. package/dist/configs/components/form/uploader.json +1 -1
  18. package/dist/configs/components/form/uploaderFile.json +4 -3
  19. package/dist/configs/components/form/userTreeSelect.json +1 -1
  20. package/dist/configs/components/formdetail.json +6 -1
  21. package/dist/configs/components/graphicCard.json +1 -1
  22. package/dist/configs/components/image.json +6 -3
  23. package/dist/configs/components/link.json +5 -2
  24. package/dist/configs/components/listView.json +148 -43
  25. package/dist/configs/components/lottery.json +1 -1
  26. package/dist/configs/components/modal.json +2 -1
  27. package/dist/configs/components/navLayout.json +1 -1
  28. package/dist/configs/components/navigationBar.json +1 -1
  29. package/dist/configs/components/richtextview.json +5 -2
  30. package/dist/configs/components/scrollVeiw.json +109 -73
  31. package/dist/configs/components/swiper.json +47 -38
  32. package/dist/configs/components/tabs.json +1 -1
  33. package/dist/configs/components/text.json +12 -6
  34. package/dist/configs/components/wedaVideo.json +1 -1
  35. package/dist/configs/components/wxOpenApi/phone.json +2 -2
  36. package/dist/configs/components/wxOpenApi/phoneCode.json +2 -2
  37. package/dist/configs/components/wxOpenApi/share.json +9 -8
  38. package/dist/configs/components/wxOpenApi/userInfo.json +15 -3
  39. package/dist/configs/index.d.ts +2 -0
  40. package/dist/configs/index.js +2 -0
  41. package/dist/web/actions/index.d.ts +1 -0
  42. package/dist/web/actions/index.js +1 -0
  43. package/dist/web/actions/showMessage/index.css +6 -0
  44. package/dist/web/actions/showMessage/index.d.ts +17 -0
  45. package/dist/web/actions/showMessage/index.js +39 -0
  46. package/dist/web/components/button/index.d.ts +3 -2
  47. package/dist/web/components/button/index.js +14 -3
  48. package/dist/web/components/common/use-loop-render-detect.js +7 -6
  49. package/dist/web/components/form/form/index.js +21 -50
  50. package/dist/web/components/form/uploader/uploader.h5.js +1 -1
  51. package/dist/web/components/form/uploader/uploader.pc.js +2 -0
  52. package/dist/web/components/form/uploaderFile/uploadFile.h5.js +12 -10
  53. package/dist/web/components/form/uploaderFile/uploadFile.pc.d.ts +11 -0
  54. package/dist/web/components/form/uploaderFile/uploadFile.pc.js +10 -8
  55. package/dist/web/components/form/userOrgSelect/comTool.js +4 -3
  56. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +3 -4
  57. package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.pc.js +6 -7
  58. package/dist/web/components/form/userOrgSelect/getUserService.js +2 -1
  59. package/dist/web/components/form/userOrgSelect/userOrgSelect.css +10 -12
  60. package/dist/web/components/form/userOrgSelect/userTreeSelect.h5.js +4 -6
  61. package/dist/web/components/form/userOrgSelect/userTreeSelect.pc.js +49 -28
  62. package/dist/web/components/form/userOrgSelect/utils.d.ts +1 -0
  63. package/dist/web/components/form/userOrgSelect/utils.js +15 -0
  64. package/dist/web/components/formdetail/index.css +40 -27
  65. package/dist/web/components/formdetail/index.js +22 -19
  66. package/dist/web/components/link/index.js +2 -1
  67. package/dist/web/components/listView/index.css +5 -1
  68. package/dist/web/components/listView/index.js +22 -2
  69. package/dist/web/components/listView/interface.d.ts +1 -1
  70. package/dist/web/components/navigationBar/index.js +8 -3
  71. package/dist/web/components/phone/index.js +4 -1
  72. package/dist/web/components/phoneCode/index.js +4 -1
  73. package/dist/web/components/richText/index.d.ts +1 -1
  74. package/dist/web/components/richText/index.js +6 -6
  75. package/dist/web/components/share/index.js +4 -1
  76. package/dist/web/components/text/index.js +2 -1
  77. package/dist/web/components/userInfo/index.js +4 -1
  78. package/dist/web/utils/console.js +1 -1
  79. package/dist/web/utils/platform.d.ts +11 -1
  80. package/dist/web/utils/platform.js +61 -12
  81. package/package.json +12 -1
@@ -1,5 +1,4 @@
1
1
  import React, { useEffect, forwardRef, useImperativeHandle, useState, useCallback, } from 'react';
2
- import destr from 'destr';
3
2
  import classNames from '../../utils/classnames';
4
3
  import { usePlatform, randomStr } from '../../utils/platform';
5
4
  import isObjectEqual from '../../utils/isObjectEqual';
@@ -64,15 +63,9 @@ const FormDetailCom = forwardRef(function FormDetail(props, ref) {
64
63
  const [contextData, setContextData] = useState([]);
65
64
  const [childFormItem, setCildFormItem] = useState([]);
66
65
  const platform = usePlatform();
67
- const init = useCallback((defaultValue) => {
66
+ const init = useCallback((defaultValue, childFormItem) => {
68
67
  var _a;
69
68
  const formDetailItemValue = {};
70
- let childFormItem = defaultValue[0] ? Object.keys(defaultValue[0]) : [];
71
- // 纯数组,默认key值为'arrayItem'
72
- if (isPureArray) {
73
- childFormItem = ['arrayItem'];
74
- }
75
- setCildFormItem(childFormItem);
76
69
  let initialValues = [];
77
70
  try {
78
71
  initialValues = defaultValue.map((i, index) => {
@@ -85,9 +78,9 @@ const FormDetailCom = forwardRef(function FormDetail(props, ref) {
85
78
  }
86
79
  else {
87
80
  item = { ...i };
88
- Object.keys(i).forEach((j) => {
81
+ childFormItem.forEach((j) => {
89
82
  const key = `${name}[${index}].${j}`;
90
- const val = i[j];
83
+ const val = i[j] || null;
91
84
  item[j] = { name: key, value: val };
92
85
  formDetailItemValue[key] = val;
93
86
  });
@@ -106,19 +99,27 @@ const FormDetailCom = forwardRef(function FormDetail(props, ref) {
106
99
  (_a = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _a === void 0 ? void 0 : _a.call(events, {
107
100
  data,
108
101
  });
109
- }, [events, isPureArray, name]);
102
+ }, [isPureArray, name]);
110
103
  // 初始化context的值
111
104
  useEffect(() => {
112
- if (!isObjectEqual(initDetailValue, defaultValue)) {
105
+ if (!isObjectEqual(initDetailValue, defaultValue) &&
106
+ childFormItem.length > 0) {
113
107
  setDetailValue(initDetailValue);
114
- init(initDetailValue);
108
+ init(initDetailValue, childFormItem);
115
109
  }
116
110
  // 只有initDetailValue的值改变的时候才执行
117
111
  // eslint-disable-next-line react-hooks/exhaustive-deps
118
112
  }, [initDetailValue]);
119
113
  useEffect(() => {
120
- init(initDetailValue);
121
- setDetailValue(initDetailValue);
114
+ let childFormItem = initDetailValue[0]
115
+ ? Object.keys(initDetailValue[0])
116
+ : [];
117
+ // 纯数组,默认key值为'arrayItem'
118
+ if (isPureArray) {
119
+ childFormItem = ['arrayItem'];
120
+ }
121
+ setCildFormItem(childFormItem);
122
+ init(initDetailValue, childFormItem);
122
123
  // 组件卸载时触发
123
124
  return () => {
124
125
  var _a;
@@ -135,7 +136,7 @@ const FormDetailCom = forwardRef(function FormDetail(props, ref) {
135
136
  (parent === null || parent === void 0 ? void 0 : parent.formType) === 'read') {
136
137
  return;
137
138
  }
138
- let data = destr(contextData);
139
+ let data = JSON.parse(JSON.stringify(contextData));
139
140
  data = changeHandle({
140
141
  type,
141
142
  name,
@@ -144,8 +145,10 @@ const FormDetailCom = forwardRef(function FormDetail(props, ref) {
144
145
  isPureArray,
145
146
  params,
146
147
  });
147
- setContextData(data);
148
- (_a = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _a === void 0 ? void 0 : _a.call(events, { data });
148
+ if (!isObjectEqual(data, contextData)) {
149
+ setContextData(data);
150
+ (_a = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _a === void 0 ? void 0 : _a.call(events, { data });
151
+ }
149
152
  }, [
150
153
  childFormItem,
151
154
  contextData,
@@ -177,7 +180,7 @@ const FormDetailCom = forwardRef(function FormDetail(props, ref) {
177
180
  'weda-ui': true,
178
181
  'gsd-h5-react-formitem': true,
179
182
  'form-detail-wrap': true,
180
- 'form-detail-flex-wrap': true,
183
+ 'pc-form-detail-wrap': platform === 'pc',
181
184
  'h5-form-detail-wrap': platform === 'h5',
182
185
  [className]: className,
183
186
  disabled: disabled || !(fieldAuth === null || fieldAuth === void 0 ? void 0 : fieldAuth.includes('w')),
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import classNames from '../../utils/classnames';
3
+ import { textToString } from '../../utils/platform';
3
4
  import { emptyArray, emptyObject } from '../../utils/constant';
4
5
  import './index.css';
5
6
  // 所有绝对地址直接交由浏览器,新开窗口交由浏览器
@@ -67,5 +68,5 @@ isOpenInNewWindow, }) {
67
68
  }
68
69
  }, rel: "noopener noreferrer" },
69
70
  contentSlot && React.createElement("div", { className: "weda-link-slot" }, contentSlot),
70
- String(content)));
71
+ textToString(content)));
71
72
  }
@@ -6,6 +6,10 @@
6
6
  flex-direction: column;
7
7
  }
8
8
 
9
+ .weda-list-view__containor._wa-comp-container-empty-children {
10
+ height: unset;
11
+ }
12
+
9
13
  /* 列表内容区域 */
10
14
  .weda-list-view__containor .weda-list-view__content {
11
15
  position: relative;
@@ -173,4 +177,4 @@
173
177
  }
174
178
 
175
179
  /*# sourceURL=webpack://./src/web/components/listView/index.css */
176
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8uL3NyYy93ZWIvY29tcG9uZW50cy9saXN0Vmlldy9pbmRleC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQixhQUFhO0VBQ2Isc0JBQXNCO0FBQ3hCOztBQUVBLFdBQVc7QUFDWDtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSx5QkFBeUI7QUFDM0I7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsZUFBZTtFQUNmLHdCQUF3QjtBQUMxQjs7QUFFQTs7RUFFRSw2QkFBNkI7RUFDN0Isa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQkFBcUI7QUFDdkI7O0FBRUEsV0FBVztBQUNYO0VBQ0UsV0FBVztBQUNiOztBQUVBO0VBQ0UsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0UsdUJBQXVCO0VBQ3ZCLG9CQUFvQjtFQUNwQixvQkFBb0I7RUFDcEIsc0JBQXNCO0VBQ3RCLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsc0JBQXNCO0VBQ3RCLGVBQWU7QUFDakI7O0FBRUEsb0JBQW9CO0FBQ3BCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLDBCQUEwQjtFQUMxQixzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSxpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsa0JBQWtCO0FBQ3BCOztBQUVBOzs7RUFHRSxpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGNBQWM7QUFDaEI7O0FBRUEsWUFBWTtBQUNaOztFQUVFLDZCQUE2QjtBQUMvQjtBQUNBOzs7RUFHRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLDhCQUE4QjtFQUM5QixrQkFBa0I7RUFDbEIsb0RBQW9EO0VBQ3BELHNCQUFzQjtBQUN4Qjs7QUFFQTs7Ozs7O0VBTUUsb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0Qix5QkFBeUI7RUFDekIscUJBQXFCO0VBQ3JCLGVBQWU7QUFDakI7O0FBRUE7Ozs7OztFQU1FLHlCQUF5QjtBQUMzQjs7QUFFQTs7Ozs7O0VBTUUsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixZQUFZO0VBQ1oseURBQTJDO0FBQzdDOztBQUVBOzs7Ozs7RUFNRSxVQUFVO0FBQ1o7O0FBRUE7OztFQUdFLGdCQUFnQjtFQUNoQix5QkFBeUI7QUFDM0I7O0FBRUE7OztFQUdFLGlCQUFpQjtBQUNuQjs7QUFFQTs7O0VBR0Usb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0Qix5QkFBeUI7QUFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vciB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLyog5YiX6KGo5YaF5a655Yy65Z+fICovXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vciAud2VkYS1saXN0LXZpZXdfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMjtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19jb250ZW50LWJsYW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yIC53ZWRhLWxpc3Qtdmlld19fZW1wdHkge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQpO1xufVxuXG4ud2VkYS1saXN0LXZpZXctY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjIxNDI5cmVtO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmUud2VkYS1saXN0LXZpZXdfX2NvbnRlbnQtbG9hZGluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAuMzU3MTRyZW0gMDtcbn1cblxuLyog5Yqg6L295pu05aSa5Yy65Z+fICovXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vciAud2VkYS1saXN0LXZpZXdfX21vcmUge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19tb3JlIC53ZWRhLWxpc3Qtdmlld19fYm90dG9tLWxvYWQge1xuICBwYWRkaW5nLXRvcDogMC4wNzE0M3JlbTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19tb3JlIC53ZWRhLWxpc3Qtdmlld19fbW9yZS10ZXh0IHtcbiAgcGFkZGluZy10b3A6IDAuNzE0MjlyZW07XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xuICBmb250LXNpemU6IDAuODU3MTRlbTtcbiAgbGluZS1oZWlnaHQ6IDAuODU3MTRlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIOWKoOi9veabtOWkmueahFN5bWJvbCAuLi4gKi9cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yIC53ZWRhLWxpc3Qtdmlld19fbW9yZSAud2VkYS1saXN0LXZpZXdfX21vcmUtc3ltYm9sIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmctdG9wOiAxLjQyODU3cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMS4yODU3MXJlbTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19tb3JlIC53ZWRhLWxpc3Qtdmlld19fc3ltYm9sLWl0ZW0ge1xuICB3aWR0aDogMC41NzE0M3JlbTtcbiAgaGVpZ2h0OiAwLjU3MTQzcmVtO1xuICBiYWNrZ3JvdW5kOiAjYzRjNGM0O1xuICBtYXJnaW4tbGVmdDogMC40Mjg1N3JlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19zeW1ib2wtaXRlbTpmaXJzdC1jaGlsZCB7XG4gIHdpZHRoOiAwLjQyODU3cmVtO1xuICBoZWlnaHQ6IDAuNDI4NTdyZW07XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4vKiDliqDovb3mm7TlpJog5YiG6aG1ICovXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmUud2VkYS1saXN0LXZpZXdfX21vcmUtYm90dG9tTG9hZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZS1wYWdpbmF0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAuNzE0MjlyZW0gMS4yODU3MXJlbSAwLjg1NzE0cmVtIDEuMTQyODZyZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZVxuICAud2VkYS1saXN0LXZpZXdfX3BhZ2luYXRpb24tcHJlLFxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fcGFnaW5hdGlvbi1uZXh0IHtcbiAgZm9udC1zaXplOiAwLjg1NzE0ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjcxNDI4ZW07XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gIHBhZGRpbmc6IDAgMS43MTQyOXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXByZS5hY3RpdmUsXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLW5leHQuYWN0aXZlIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fcGFnaW5hdGlvbi1wcmU6OmJlZm9yZSxcbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZVxuICAud2VkYS1saXN0LXZpZXdfX3BhZ2luYXRpb24tbmV4dDo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGNvbnRlbnQ6ICcnO1xuICB3aWR0aDogMS43MTQyOGVtO1xuICBoZWlnaHQ6IDEuNzE0MjhlbTtcbiAgdG9wOiAwLjcxNDI5cmVtO1xuICBvcGFjaXR5OiAwLjI7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChhcnJvdy1yaWdodC1saW5lLnN2Zyk7XG59XG5cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZVxuICAuYWN0aXZlLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXByZTo6YmVmb3JlLFxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC5hY3RpdmUud2VkYS1saXN0LXZpZXdfX3BhZ2luYXRpb24tbmV4dDo6YWZ0ZXIge1xuICBvcGFjaXR5OiAxO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXByZTo6YmVmb3JlIHtcbiAgbGVmdDogMS4xNDI4NnJlbTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fcGFnaW5hdGlvbi1uZXh0OjphZnRlciB7XG4gIHJpZ2h0OiAxLjI4NTcxcmVtO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXRleHQge1xuICBmb250LXNpemU6IDAuODU3MTRlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNzE0MjhlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= */
180
+ /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8uL3NyYy93ZWIvY29tcG9uZW50cy9saXN0Vmlldy9pbmRleC5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxnQkFBZ0I7RUFDaEIsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFQUNsQixhQUFhO0VBQ2Isc0JBQXNCO0FBQ3hCOztBQUVBO0VBQ0UsYUFBYTtBQUNmOztBQUVBLFdBQVc7QUFDWDtFQUNFLGtCQUFrQjtFQUNsQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSx5QkFBeUI7QUFDM0I7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsZUFBZTtFQUNmLHdCQUF3QjtBQUMxQjs7QUFFQTs7RUFFRSw2QkFBNkI7RUFDN0Isa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixTQUFTO0VBQ1QsT0FBTztFQUNQLFFBQVE7RUFDUixhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixxQkFBcUI7QUFDdkI7O0FBRUEsV0FBVztBQUNYO0VBQ0UsV0FBVztBQUNiOztBQUVBO0VBQ0UsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0UsdUJBQXVCO0VBQ3ZCLG9CQUFvQjtFQUNwQixvQkFBb0I7RUFDcEIsc0JBQXNCO0VBQ3RCLHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsc0JBQXNCO0VBQ3RCLGVBQWU7QUFDakI7O0FBRUEsb0JBQW9CO0FBQ3BCO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLDBCQUEwQjtFQUMxQixzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSxpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsa0JBQWtCO0FBQ3BCOztBQUVBOzs7RUFHRSxpQkFBaUI7RUFDakIsa0JBQWtCO0VBQ2xCLGNBQWM7QUFDaEI7O0FBRUEsWUFBWTtBQUNaOztFQUVFLDZCQUE2QjtBQUMvQjtBQUNBOzs7RUFHRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLDhCQUE4QjtFQUM5QixrQkFBa0I7RUFDbEIsb0RBQW9EO0VBQ3BELHNCQUFzQjtBQUN4Qjs7QUFFQTs7Ozs7O0VBTUUsb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0Qix5QkFBeUI7RUFDekIscUJBQXFCO0VBQ3JCLGVBQWU7QUFDakI7O0FBRUE7Ozs7OztFQU1FLHlCQUF5QjtBQUMzQjs7QUFFQTs7Ozs7O0VBTUUsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixZQUFZO0VBQ1oseURBQTJDO0FBQzdDOztBQUVBOzs7Ozs7RUFNRSxVQUFVO0FBQ1o7O0FBRUE7OztFQUdFLGdCQUFnQjtFQUNoQix5QkFBeUI7QUFDM0I7O0FBRUE7OztFQUdFLGlCQUFpQjtBQUNuQjs7QUFFQTs7O0VBR0Usb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0Qix5QkFBeUI7QUFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vciB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IuX3dhLWNvbXAtY29udGFpbmVyLWVtcHR5LWNoaWxkcmVuIHtcbiAgaGVpZ2h0OiB1bnNldDtcbn1cblxuLyog5YiX6KGo5YaF5a655Yy65Z+fICovXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vciAud2VkYS1saXN0LXZpZXdfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMjtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19jb250ZW50LWJsYW5rIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yIC53ZWRhLWxpc3Qtdmlld19fZW1wdHkge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjQpO1xufVxuXG4ud2VkYS1saXN0LXZpZXctY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjIxNDI5cmVtO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmUud2VkYS1saXN0LXZpZXdfX2NvbnRlbnQtbG9hZGluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDAuMzU3MTRyZW0gMDtcbn1cblxuLyog5Yqg6L295pu05aSa5Yy65Z+fICovXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vciAud2VkYS1saXN0LXZpZXdfX21vcmUge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19tb3JlIC53ZWRhLWxpc3Qtdmlld19fYm90dG9tLWxvYWQge1xuICBwYWRkaW5nLXRvcDogMC4wNzE0M3JlbTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19tb3JlIC53ZWRhLWxpc3Qtdmlld19fbW9yZS10ZXh0IHtcbiAgcGFkZGluZy10b3A6IDAuNzE0MjlyZW07XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtO1xuICBmb250LXNpemU6IDAuODU3MTRlbTtcbiAgbGluZS1oZWlnaHQ6IDAuODU3MTRlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIOWKoOi9veabtOWkmueahFN5bWJvbCAuLi4gKi9cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yIC53ZWRhLWxpc3Qtdmlld19fbW9yZSAud2VkYS1saXN0LXZpZXdfX21vcmUtc3ltYm9sIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmctdG9wOiAxLjQyODU3cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMS4yODU3MXJlbTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3IgLndlZGEtbGlzdC12aWV3X19tb3JlIC53ZWRhLWxpc3Qtdmlld19fc3ltYm9sLWl0ZW0ge1xuICB3aWR0aDogMC41NzE0M3JlbTtcbiAgaGVpZ2h0OiAwLjU3MTQzcmVtO1xuICBiYWNrZ3JvdW5kOiAjYzRjNGM0O1xuICBtYXJnaW4tbGVmdDogMC40Mjg1N3JlbTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19zeW1ib2wtaXRlbTpmaXJzdC1jaGlsZCB7XG4gIHdpZHRoOiAwLjQyODU3cmVtO1xuICBoZWlnaHQ6IDAuNDI4NTdyZW07XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG4vKiDliqDovb3mm7TlpJog5YiG6aG1ICovXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmUud2VkYS1saXN0LXZpZXdfX21vcmUtYm90dG9tTG9hZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZS1wYWdpbmF0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAuNzE0MjlyZW0gMS4yODU3MXJlbSAwLjg1NzE0cmVtIDEuMTQyODZyZW07XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZVxuICAud2VkYS1saXN0LXZpZXdfX3BhZ2luYXRpb24tcHJlLFxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fcGFnaW5hdGlvbi1uZXh0IHtcbiAgZm9udC1zaXplOiAwLjg1NzE0ZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjcxNDI4ZW07XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gIHBhZGRpbmc6IDAgMS43MTQyOXJlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXByZS5hY3RpdmUsXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLW5leHQuYWN0aXZlIHtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fcGFnaW5hdGlvbi1wcmU6OmJlZm9yZSxcbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZVxuICAud2VkYS1saXN0LXZpZXdfX3BhZ2luYXRpb24tbmV4dDo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGNvbnRlbnQ6ICcnO1xuICB3aWR0aDogMS43MTQyOGVtO1xuICBoZWlnaHQ6IDEuNzE0MjhlbTtcbiAgdG9wOiAwLjcxNDI5cmVtO1xuICBvcGFjaXR5OiAwLjI7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChhcnJvdy1yaWdodC1saW5lLnN2Zyk7XG59XG5cbi53ZWRhLWxpc3Qtdmlld19fY29udGFpbm9yXG4gIC53ZWRhLWxpc3Qtdmlld19fbW9yZVxuICAuYWN0aXZlLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXByZTo6YmVmb3JlLFxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC5hY3RpdmUud2VkYS1saXN0LXZpZXdfX3BhZ2luYXRpb24tbmV4dDo6YWZ0ZXIge1xuICBvcGFjaXR5OiAxO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXByZTo6YmVmb3JlIHtcbiAgbGVmdDogMS4xNDI4NnJlbTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLndlZGEtbGlzdC12aWV3X19jb250YWlub3JcbiAgLndlZGEtbGlzdC12aWV3X19tb3JlXG4gIC53ZWRhLWxpc3Qtdmlld19fcGFnaW5hdGlvbi1uZXh0OjphZnRlciB7XG4gIHJpZ2h0OiAxLjI4NTcxcmVtO1xufVxuXG4ud2VkYS1saXN0LXZpZXdfX2NvbnRhaW5vclxuICAud2VkYS1saXN0LXZpZXdfX21vcmVcbiAgLndlZGEtbGlzdC12aWV3X19wYWdpbmF0aW9uLXRleHQge1xuICBmb250LXNpemU6IDAuODU3MTRlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNzE0MjhlbTtcbiAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC40KTtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0= */
@@ -13,9 +13,10 @@ const getIdeMockData = (length = 3) => Array.from({ length }).map(() => Object.c
13
13
  */
14
14
  export default function ListView(props) {
15
15
  var _a, _b, _c;
16
- const { dataSourceType, bindConnectMetadata, connectorMethod, connectorParams, datasource, orderBy, orderType, where, template, pageSize = 5, pagination, events, className, children, isRecords = true, //是否展示回调recoreds字段
16
+ const { dataSourceType, bindConnectMetadata, connectorMethod, connectorParams: rawConnectorParams, datasource, orderBy, orderType, where, template, pageSize = 5, pagination, events, className, children, isRecords = true, //是否展示回调recoreds字段
17
17
  isSetStatus = false, //是否开启加载状态
18
18
  appCloud = { callDataSource, isInIde }, beforeDataChange = (v) => v, ...rest } = props;
19
+ const connectorParams = rawConnectorParams && JSON.parse(JSON.stringify(rawConnectorParams));
19
20
  const isModel = dataSourceType !== 'custom-connector';
20
21
  const methodName = isModel
21
22
  ? ((_a = datasource === null || datasource === void 0 ? void 0 : datasource.extra) === null || _a === void 0 ? void 0 : _a.methodName) || 'wedaGetRecords'
@@ -43,7 +44,7 @@ export default function ListView(props) {
43
44
  return () => {
44
45
  var _a, _b;
45
46
  (_a = observeRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
46
- (_b = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _b === void 0 ? void 0 : _b.call(events, { data: beforeDataChange([]) });
47
+ (_b = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _b === void 0 ? void 0 : _b.call(events, { data: beforeDataChange([]), state: {} });
47
48
  };
48
49
  }, []);
49
50
  // props 基本类型监听,需重新分页;处于 ide 且未绑定数据源时返回mock数据
@@ -67,6 +68,7 @@ export default function ListView(props) {
67
68
  else {
68
69
  (_b = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _b === void 0 ? void 0 : _b.call(events, {
69
70
  data: beforeDataChange(getIdeMockData(pageSize)),
71
+ state: getContextState(),
70
72
  });
71
73
  }
72
74
  }, [
@@ -199,6 +201,7 @@ export default function ListView(props) {
199
201
  }
200
202
  (_b = events === null || events === void 0 ? void 0 : events.onDataChange) === null || _b === void 0 ? void 0 : _b.call(events, {
201
203
  data: beforeDataChange(dataRef.current.records || []),
204
+ state: getContextState(),
202
205
  });
203
206
  if (total === 0) {
204
207
  setStatus(isModel ? 'empty' : '');
@@ -225,6 +228,23 @@ export default function ListView(props) {
225
228
  : successCb();
226
229
  setPageNo(((_e = (_d = paramRef.current) === null || _d === void 0 ? void 0 : _d.params) === null || _e === void 0 ? void 0 : _e.pageNo) || 1);
227
230
  };
231
+ /**
232
+ * 计算上下文对象数据
233
+ */
234
+ const getContextState = (state = {}) => {
235
+ var _a, _b;
236
+ const total = (_b = (_a = dataRef.current) === null || _a === void 0 ? void 0 : _a.total) !== null && _b !== void 0 ? _b : 0;
237
+ let { pageNo, pageSize, connectorParams } = paramRef.current.params;
238
+ if (!isModel) {
239
+ connectorParams =
240
+ Object.prototype.toString.call(connectorParams) === '[object Object]'
241
+ ? connectorParams
242
+ : {};
243
+ pageNo = connectorParams.pageNo;
244
+ pageSize = connectorParams.pageSize;
245
+ }
246
+ return { total, pageNo, pageSize, ...state };
247
+ };
228
248
  /**
229
249
  * 分页,加载更多
230
250
  */
@@ -4,7 +4,7 @@ import React from 'react';
4
4
  */
5
5
  export interface IDataContainer {
6
6
  /**
7
- * 数据源类型
7
+ * 数据源
8
8
  */
9
9
  dataSourceType: 'data-model' | 'connector' | 'custom-connector';
10
10
  /**
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useEffect, useCallback } from 'react';
2
2
  import classNames from '../../utils/classnames';
3
3
  import { ConfigProvider } from 'tea-component';
4
- import { usePlatform, isInIde } from '../../utils/platform';
4
+ import { usePlatform } from '../../utils/platform';
5
5
  import { getAppCustomNav } from '../../utils/tcb';
6
6
  import './index.css';
7
7
  import VerticalMenu from './verticalMenu';
@@ -80,6 +80,8 @@ export default function NavigationBar({ navigationbar, contentSlot, className, s
80
80
  position: 'relative',
81
81
  ...style,
82
82
  };
83
+ // 是否展示菜单
84
+ const [showNav, setShowNav] = useState(false);
83
85
  // 更新导航菜单
84
86
  const updateNavigationData = useCallback(() => {
85
87
  callApi
@@ -111,9 +113,13 @@ export default function NavigationBar({ navigationbar, contentSlot, className, s
111
113
  setIsMultiTerminal(true);
112
114
  }
113
115
  }
116
+ if (!showNav) {
117
+ setShowNav(true);
118
+ }
114
119
  })
115
120
  .catch((error) => {
116
121
  console.error(error);
122
+ setShowNav(true);
117
123
  });
118
124
  }, [callApi]);
119
125
  /**
@@ -151,9 +157,8 @@ export default function NavigationBar({ navigationbar, contentSlot, className, s
151
157
  platform !== 'h5' && isHorizontal && (React.createElement(HorizontalMenu, { menuData: menuData, navigationStyle: navigationStyle, selected: selected, setSelected: setSelected })),
152
158
  platform === 'h5' && (React.createElement(H5Menu, { menuData: isMultiTerminal ? mobileMenuData : menuData, navigationStyle: navigationStyle, setMenuData: setMenuData, className: className, selected: selected, setSelected: setSelected }))));
153
159
  };
154
- const isInIdeFlag = isInIde();
155
160
  return (React.createElement(ConfigProvider, { classPrefix: "wedatea2td" },
156
161
  React.createElement("div", { className: cls, style: navigationWrapStyle, "data-testid": "navigationBar" },
157
- isInIdeFlag ? (React.createElement(MenuRender, null)) : (((menuData === null || menuData === void 0 ? void 0 : menuData.length) > 0 || (mobileMenuData === null || mobileMenuData === void 0 ? void 0 : mobileMenuData.length) > 0) && React.createElement(MenuRender, null)),
162
+ showNav && React.createElement(MenuRender, null),
158
163
  React.createElement("div", { className: "menu-solt" }, contentSlot))));
159
164
  }
@@ -1,4 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import Button from '../../components/button';
3
- const Phone = (props) => React.createElement(Button, { ...props });
3
+ import { Bubble, ConfigProvider } from 'tea-component';
4
+ const Phone = (props) => (React.createElement(ConfigProvider, { classPrefix: "wedatea2td" },
5
+ React.createElement(Bubble, { content: "\u8BE5\u7EC4\u4EF6\u5FC5\u987B\u5728\u5C0F\u7A0B\u5E8F\u771F\u5B9E\u73AF\u5883\u4F7F\u7528\u624D\u80FD\u591F\u770B\u5230\u5B9E\u9645\u6548\u679C, \u5E76\u4E14\u5C0F\u7A0B\u5E8F\u5FC5\u987B\u4E3A\u4F01\u4E1A\u4E3B\u4F53\u3002" },
6
+ React.createElement(Button, { ...props }))));
4
7
  export default Phone;
@@ -1,4 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import Button from '../../components/button';
3
- const PhoneCode = (props) => React.createElement(Button, { ...props });
3
+ import { Bubble, ConfigProvider } from 'tea-component';
4
+ const PhoneCode = (props) => (React.createElement(ConfigProvider, { classPrefix: "wedatea2td" },
5
+ React.createElement(Bubble, { content: "\u8BE5\u7EC4\u4EF6\u5FC5\u987B\u5728\u5C0F\u7A0B\u5E8F\u771F\u5B9E\u73AF\u5883\u4F7F\u7528\u624D\u80FD\u591F\u770B\u5230\u5B9E\u9645\u6548\u679C, \u5E76\u4E14\u5C0F\u7A0B\u5E8F\u5FC5\u987B\u4E3A\u4F01\u4E1A\u4E3B\u4F53\u3002" },
6
+ React.createElement(Button, { ...props }))));
4
7
  export default PhoneCode;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import './index.css';
3
- declare function RichText({ id, style, className, events, label, labelVisible, value: initialValue, readOnly, layout, requiredFlag, onChange, maxSize, acceptTypes, cloudPath, disabled, decorator, }: {
3
+ declare function RichText({ id, style, className, events, label, labelVisible, value, readOnly, layout, requiredFlag, onChange, maxSize, acceptTypes, cloudPath, disabled, decorator, }: {
4
4
  id: any;
5
5
  style: any;
6
6
  className: any;
@@ -1,4 +1,4 @@
1
- import React, { useEffect, useMemo, useRef, useState } from 'react';
1
+ import React, { useMemo, useRef, useState } from 'react';
2
2
  import { useSetState } from '../../utils/useSetState';
3
3
  import classNames from '../../utils/classnames';
4
4
  import Editor, { EditorState, convertEditorStateToHTML } from 'kedao';
@@ -12,7 +12,7 @@ import { renderDecorator } from '../form/renderDecorator';
12
12
  import { usePlatform } from '../../utils/platform';
13
13
  import './index.css';
14
14
  import styleM from './richtext.module.css';
15
- import { useSyncedRef } from '@react-hookz/web';
15
+ import { useDeepCompareEffect, useSyncedRef } from '@react-hookz/web';
16
16
  import { useTempUrl } from '../../utils/use-cloud-id-temp-url';
17
17
  // 默认图片类型
18
18
  const IMAGE_TYPES = [
@@ -57,7 +57,7 @@ export default function RichText({
57
57
  // 系统属性
58
58
  id, style, className, events,
59
59
  // 组件属性
60
- label, labelVisible, value: initialValue, readOnly, layout, requiredFlag, onChange, maxSize, acceptTypes, cloudPath, disabled, decorator, }) {
60
+ label, labelVisible, value, readOnly, layout, requiredFlag, onChange, maxSize, acceptTypes, cloudPath, disabled, decorator, }) {
61
61
  const [editorState, setEditorState] = useState();
62
62
  const latestEditorState = useSyncedRef(editorState);
63
63
  const cls = classNames({
@@ -89,10 +89,10 @@ label, labelVisible, value: initialValue, readOnly, layout, requiredFlag, onChan
89
89
  }
90
90
  previousValueRef.current = value;
91
91
  };
92
- useEffect(() => {
93
- const state = createStateFromContent(initialValue, {});
92
+ useDeepCompareEffect(() => {
93
+ const state = createStateFromContent(value, {});
94
94
  setEditorState(state);
95
- }, []);
95
+ }, [value]);
96
96
  const excludeControls = useMemo(() => {
97
97
  const result = [
98
98
  'media',
@@ -1,4 +1,7 @@
1
1
  import * as React from 'react';
2
+ import { Bubble, ConfigProvider } from 'tea-component';
2
3
  import Button from '../../components/button';
3
- const Share = (props) => React.createElement(Button, { ...props });
4
+ const Share = (props) => (React.createElement(ConfigProvider, { classPrefix: "wedatea2td" },
5
+ React.createElement(Bubble, { content: "\u8BE5\u7EC4\u4EF6\u5FC5\u987B\u5728\u5C0F\u7A0B\u5E8F\u771F\u5B9E\u73AF\u5883\u4F7F\u7528\u624D\u80FD\u591F\u770B\u5230\u5B9E\u9645\u6548\u679C\u3002" },
6
+ React.createElement(Button, { ...props }))));
4
7
  export default Share;
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import classNames from '../../utils/classnames';
3
+ import { textToString } from '../../utils/platform';
3
4
  import './index.css';
4
5
  export default function Text({ text, maxLines, space, tips, userSelect, style, className, events, id, level, contenteditable, onInput, onBlur, }) {
5
6
  const textStyle = {
@@ -13,5 +14,5 @@ export default function Text({ text, maxLines, space, tips, userSelect, style, c
13
14
  const inlineStyle = React.useMemo(() => ({ ...textStyle, ...style }), [textStyle, style]);
14
15
  return (React.createElement("p", {
15
16
  //@ts-expect-error contentEditable type def sucks
16
- contentEditable: contenteditable, onInput: onInput, onBlur: onBlur, style: inlineStyle, className: classNames('weda-text', 'weda-ui', className, levelName), id: id, title: tips ? String(text) : '', onClick: (e) => events.tap({}, { originEvent: e }) }, String(text)));
17
+ contentEditable: contenteditable, onInput: onInput, onBlur: onBlur, style: inlineStyle, className: classNames('weda-text', 'weda-ui', className, levelName), id: id, title: tips ? textToString(text) : '', onClick: (e) => events.tap({}, { originEvent: e }), "data-testid": "text" }, textToString(text)));
17
18
  }
@@ -1,4 +1,7 @@
1
1
  import * as React from 'react';
2
+ import { Bubble, ConfigProvider } from 'tea-component';
2
3
  import Button from '../../components/button';
3
- const UserInfo = (props) => React.createElement(Button, { ...props });
4
+ const UserInfo = (props) => (React.createElement(ConfigProvider, { classPrefix: "wedatea2td" },
5
+ React.createElement(Bubble, { content: "\u8BE5\u7EC4\u4EF6\u5FC5\u987B\u5728\u5C0F\u7A0B\u5E8F\u771F\u5B9E\u73AF\u5883\u4F7F\u7528\u624D\u80FD\u591F\u770B\u5230\u5B9E\u9645\u6548\u679C\u3002" },
6
+ React.createElement(Button, { ...props }))));
4
7
  export default UserInfo;
@@ -3,7 +3,7 @@ export const debug = (label) => {
3
3
  var _a;
4
4
  const envLabel = (_a = (typeof window !== 'undefined' &&
5
5
  window.localStorage.getItem('WEDA_COMP_DEBUG'))) !== null && _a !== void 0 ? _a : '';
6
- const showLog = envLabel.startsWith(label) || envLabel == '*';
6
+ const showLog = (envLabel.length > 0 && label.startsWith(envLabel)) || envLabel == '*';
7
7
  const globalVar = typeof globalThis !== 'undefined'
8
8
  ? globalThis
9
9
  : typeof self !== 'undefined'
@@ -3,12 +3,21 @@ export function usePlatform(): "h5" | "pc";
3
3
  * 在h5下,判断当前是否是移动浏览器
4
4
  */
5
5
  export function inH5IsMobile(): boolean;
6
+ /**
7
+ * 统一错误提示
8
+ *
9
+ */
10
+ export function alertErrorMessage({ message, duration, icon }: {
11
+ message: any;
12
+ duration?: number;
13
+ icon?: string;
14
+ }): void;
6
15
  export function isH5Platform(): boolean;
7
16
  export function isCloudFileID(url: any): boolean;
8
17
  export function isHttpFileID(url: any): boolean;
9
18
  export function filterStrList(value: any): any[];
10
19
  export function transSize(size: any): string;
11
- export function downloadFile(url: any): void;
20
+ export function downloadFile(url: any, name: any): void;
12
21
  export function cutFileTitle(str?: string, count?: number): string;
13
22
  export function isInIde(): boolean;
14
23
  export function resolveStaticResourceUrl(path: any): any;
@@ -16,3 +25,4 @@ export function transFileCloudidToName(fileID: any): string;
16
25
  export function isUrl(path: any): boolean;
17
26
  export function randomStr(len?: number): string;
18
27
  export function getWhereList(where: any): any[];
28
+ export function textToString(text: any): string;
@@ -1,5 +1,6 @@
1
1
  import { useMediaQuery } from '@react-hookz/web';
2
2
  import { REL_DICT } from './constant';
3
+ import { message as TeaMessage } from 'tea-component';
3
4
  /**
4
5
  * 当前环境是否为 H5 端
5
6
  */
@@ -34,9 +35,9 @@ export const isHttpFileID = (url) => {
34
35
  };
35
36
  export function usePlatform() {
36
37
  var _a, _b;
37
- const smallScreen = (_a = useMediaQuery('(max-width: 992px)')) !== null && _a !== void 0 ? _a : isH5Platform();
38
+ const smallScreen = (_a = useMediaQuery('(max-width: 1024px)')) !== null && _a !== void 0 ? _a : isH5Platform();
38
39
  const touchDevice = (_b = useMediaQuery('(pointer:coarse)')) !== null && _b !== void 0 ? _b : smallScreen;
39
- // 非高精度指针(鼠标)就直接 h5, 否则当屏幕小于992 时用h5
40
+ // 非高精度指针(鼠标)就直接 h5, 否则当屏幕小于1024 时用h5
40
41
  return touchDevice || smallScreen ? 'h5' : 'pc';
41
42
  }
42
43
  /**
@@ -84,19 +85,40 @@ export const transSize = (size) => {
84
85
  /**
85
86
  * 链接转换为下载
86
87
  */
87
- export const downloadFile = (url) => {
88
+ export const downloadFile = (url, name) => {
88
89
  if (!url) {
89
90
  return;
90
91
  }
91
- const urlObj = new URL(url);
92
- urlObj.searchParams.append('response-content-disposition', 'attawchment');
93
- const urls = urlObj.toString();
94
- window.open(urls);
95
- // 定时清object https://github.com/eligrey/FileSaver.js/blob/9806041b0e800979dddabbaa1b5f6ce6952d7cd7/src/FileSaver.js#L106
96
- // eslint-disable-next-line rulesdir/no-timer
97
- setTimeout(() => {
98
- window.URL.revokeObjectURL(urls);
99
- }, 0);
92
+ var xhr = new XMLHttpRequest();
93
+ xhr.open('GET', url, true);
94
+ xhr.setRequestHeader('Content-type', 'application/octet-stream');
95
+ xhr.setRequestHeader('Content-Disposition', 'attachment');
96
+ xhr.responseType = 'blob';
97
+ xhr.onload = function () {
98
+ if (xhr.readyState === 4) {
99
+ if (xhr.status === 200) {
100
+ // data为blob格式
101
+ var blob = new Blob([xhr.response]);
102
+ var downloadElement = document.createElement('a');
103
+ var href = window.URL.createObjectURL(blob);
104
+ downloadElement.href = href;
105
+ downloadElement.download = name;
106
+ document.body.appendChild(downloadElement);
107
+ downloadElement.click();
108
+ document.body.removeChild(downloadElement);
109
+ window.URL.revokeObjectURL(href);
110
+ }
111
+ else {
112
+ console.error(xhr.statusText);
113
+ alertErrorMessage({ message: `下载失败 ${xhr.statusText}` });
114
+ }
115
+ }
116
+ };
117
+ xhr.onerror = function () {
118
+ console.error(xhr.statusText);
119
+ alertErrorMessage({ message: `下载失败 ${xhr.statusText}` });
120
+ };
121
+ xhr.send();
100
122
  };
101
123
  /**
102
124
  * 文件名截取,保留后缀类型
@@ -191,3 +213,30 @@ export const getWhereList = (where) => {
191
213
  });
192
214
  return result;
193
215
  };
216
+ export const textToString = (text) => {
217
+ let str = String(text);
218
+ if (['undefined', 'null', 'Infinity', 'NaN'].includes(str)) {
219
+ return '';
220
+ }
221
+ return str;
222
+ };
223
+ /**
224
+ * 统一错误提示
225
+ *
226
+ */
227
+ export function alertErrorMessage({ message, duration = 1500, icon = 'none' }) {
228
+ var _a, _b, _c, _d, _e;
229
+ const smallScreen = (_b = (_a = window === null || window === void 0 ? void 0 : window.matchMedia('(max-width: 1024px)')) === null || _a === void 0 ? void 0 : _a.matches) !== null && _b !== void 0 ? _b : isH5Platform();
230
+ const touchDevice = (_d = (_c = window === null || window === void 0 ? void 0 : window.matchMedia('(pointer:coarse)')) === null || _c === void 0 ? void 0 : _c.matches) !== null && _d !== void 0 ? _d : smallScreen;
231
+ const platform = touchDevice || smallScreen ? 'h5' : 'pc';
232
+ if (platform === 'h5') {
233
+ (_e = window === null || window === void 0 ? void 0 : window.app) === null || _e === void 0 ? void 0 : _e.showToast({
234
+ title: message,
235
+ icon,
236
+ duration,
237
+ });
238
+ }
239
+ else {
240
+ TeaMessage.error({ content: message, duration });
241
+ }
242
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/weda-ui",
3
- "version": "3.4.0",
3
+ "version": "3.4.2",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index",
6
6
  "miniprogram": "mpdist",
@@ -31,6 +31,7 @@
31
31
  "pree2e:report": "npx mkdirp cypress/report && npx mochawesome-merge 'cypress/results/*.json' > cypress/report/mochawesome_full.json",
32
32
  "e2e:report": "npx marge -o storybook-static/e2e-report cypress/report/mochawesome_full.json",
33
33
  "test:all": "node tools/test-ci.mjs",
34
+ "test:coverage": "node tools/test-coverage.mjs",
34
35
  "e2e": "npx cypress open --component",
35
36
  "pretest:all": "rimraf .nyc_output || true",
36
37
  "storybook": "start-storybook -p 6006",
@@ -58,6 +59,7 @@
58
59
  "dependencies": {
59
60
  "@loadable/component": "^5.15.2",
60
61
  "@react-hookz/web": "^14.2.2",
62
+ "@sinclair/typebox": "^0.25.1",
61
63
  "@tcwd/style-wedatheme": "^1.0.4",
62
64
  "@use-gesture/react": "^10.2.14",
63
65
  "dayjs": "^1.10.7",
@@ -94,6 +96,7 @@
94
96
  "@cypress/skip-test": "^2.6.1",
95
97
  "@cypress/webpack-dev-server": "~2.0.0",
96
98
  "@istanbuljs/nyc-config-typescript": "^1.0.2",
99
+ "@shopify/semaphore": "^3.0.1",
97
100
  "@size-limit/preset-big-lib": "^7.0.8",
98
101
  "@storybook/addon-actions": "^6.5.9",
99
102
  "@storybook/addon-essentials": "^6.5.9",
@@ -106,7 +109,9 @@
106
109
  "@testing-library/jest-dom": "^5.16.4",
107
110
  "@testing-library/react": "^12.1.5",
108
111
  "@testing-library/react-hooks": "^8.0.1",
112
+ "@types/glob": "^8.0.0",
109
113
  "@types/jest": "^27.5.1",
114
+ "@types/make-fetch-happen": "^10.0.0",
110
115
  "@types/resize-observer-browser": "^0.1.7",
111
116
  "@types/testing-library__jest-dom": "^5.14.5",
112
117
  "@typescript-eslint/eslint-plugin": "^5.30.5",
@@ -128,12 +133,15 @@
128
133
  "eslint-plugin-react": "^7.30.1",
129
134
  "eslint-plugin-rulesdir": "^0.2.1",
130
135
  "eslint-plugin-storybook": "^0.5.13",
136
+ "glob": "^8.0.3",
131
137
  "husky": "^8.0.1",
132
138
  "identity-obj-proxy": "^3.0.0",
133
139
  "jest": "^27.5.1",
134
140
  "jest-canvas-mock": "^2.4.0",
135
141
  "jest-environment-jsdom": "^27",
136
142
  "jest-preview": "^0.2.6",
143
+ "json-schema-to-ts": "^2.5.5",
144
+ "make-fetch-happen": "^11.0.1",
137
145
  "miniprogram-simulate": "^1.5.7",
138
146
  "mkdirp": "^1.0.4",
139
147
  "mochawesome": "^7.1.3",
@@ -146,6 +154,7 @@
146
154
  "react-dom": "^16",
147
155
  "react-scripts": "^5.0.1",
148
156
  "react-test-renderer": "^16",
157
+ "recast": "^0.21.5",
149
158
  "regenerator-runtime": "^0.13.9",
150
159
  "resize-observer-polyfill": "^1.5.1",
151
160
  "rimraf": "^3.0.2",
@@ -153,8 +162,10 @@
153
162
  "start-server-and-test": "^1.14.0",
154
163
  "swc-loader": "0.2.3",
155
164
  "swc-plugin-coverage-instrument": "^0.0.7",
165
+ "ts-branding": "^1.0.2",
156
166
  "ts-loader": "^9.3.1",
157
167
  "ts-node": "^10.9.1",
168
+ "type-fest": "^3.0.0",
158
169
  "typescript": "^4.7.4",
159
170
  "webpack": "^5.73.0",
160
171
  "webpack-cli": "^4.10.0",