@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.
- package/dist/configs/actions/showMessage.json +45 -0
- package/dist/configs/actions/showModal.json +21 -0
- package/dist/configs/actions/showToast.json +11 -2
- package/dist/configs/components/button.json +1 -1
- package/dist/configs/components/calendar.json +1 -1
- package/dist/configs/components/carousel.json +76 -66
- package/dist/configs/components/chart/bar.json +39 -3
- package/dist/configs/components/chart/line.json +5 -2
- package/dist/configs/components/chart/pie.json +5 -2
- package/dist/configs/components/chart/statisticsCard.json +6 -6
- package/dist/configs/components/container.json +16 -2
- package/dist/configs/components/dataView.json +47 -4
- package/dist/configs/components/form/departTreeSelect.json +1 -1
- package/dist/configs/components/form/form.json +1 -1
- package/dist/configs/components/form/location.json +2 -2
- package/dist/configs/components/form/richText.json +2 -2
- package/dist/configs/components/form/uploader.json +1 -1
- package/dist/configs/components/form/uploaderFile.json +4 -3
- package/dist/configs/components/form/userTreeSelect.json +1 -1
- package/dist/configs/components/formdetail.json +6 -1
- package/dist/configs/components/graphicCard.json +1 -1
- package/dist/configs/components/image.json +6 -3
- package/dist/configs/components/link.json +5 -2
- package/dist/configs/components/listView.json +148 -43
- package/dist/configs/components/lottery.json +1 -1
- package/dist/configs/components/modal.json +2 -1
- package/dist/configs/components/navLayout.json +1 -1
- package/dist/configs/components/navigationBar.json +1 -1
- package/dist/configs/components/richtextview.json +5 -2
- package/dist/configs/components/scrollVeiw.json +109 -73
- package/dist/configs/components/swiper.json +47 -38
- package/dist/configs/components/tabs.json +1 -1
- package/dist/configs/components/text.json +12 -6
- package/dist/configs/components/wedaVideo.json +1 -1
- package/dist/configs/components/wxOpenApi/phone.json +2 -2
- package/dist/configs/components/wxOpenApi/phoneCode.json +2 -2
- package/dist/configs/components/wxOpenApi/share.json +9 -8
- package/dist/configs/components/wxOpenApi/userInfo.json +15 -3
- package/dist/configs/index.d.ts +2 -0
- package/dist/configs/index.js +2 -0
- package/dist/web/actions/index.d.ts +1 -0
- package/dist/web/actions/index.js +1 -0
- package/dist/web/actions/showMessage/index.css +6 -0
- package/dist/web/actions/showMessage/index.d.ts +17 -0
- package/dist/web/actions/showMessage/index.js +39 -0
- package/dist/web/components/button/index.d.ts +3 -2
- package/dist/web/components/button/index.js +14 -3
- package/dist/web/components/common/use-loop-render-detect.js +7 -6
- package/dist/web/components/form/form/index.js +21 -50
- package/dist/web/components/form/uploader/uploader.h5.js +1 -1
- package/dist/web/components/form/uploader/uploader.pc.js +2 -0
- package/dist/web/components/form/uploaderFile/uploadFile.h5.js +12 -10
- package/dist/web/components/form/uploaderFile/uploadFile.pc.d.ts +11 -0
- package/dist/web/components/form/uploaderFile/uploadFile.pc.js +10 -8
- package/dist/web/components/form/userOrgSelect/comTool.js +4 -3
- package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +3 -4
- package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.pc.js +6 -7
- package/dist/web/components/form/userOrgSelect/getUserService.js +2 -1
- package/dist/web/components/form/userOrgSelect/userOrgSelect.css +10 -12
- package/dist/web/components/form/userOrgSelect/userTreeSelect.h5.js +4 -6
- package/dist/web/components/form/userOrgSelect/userTreeSelect.pc.js +49 -28
- package/dist/web/components/form/userOrgSelect/utils.d.ts +1 -0
- package/dist/web/components/form/userOrgSelect/utils.js +15 -0
- package/dist/web/components/formdetail/index.css +40 -27
- package/dist/web/components/formdetail/index.js +22 -19
- package/dist/web/components/link/index.js +2 -1
- package/dist/web/components/listView/index.css +5 -1
- package/dist/web/components/listView/index.js +22 -2
- package/dist/web/components/listView/interface.d.ts +1 -1
- package/dist/web/components/navigationBar/index.js +8 -3
- package/dist/web/components/phone/index.js +4 -1
- package/dist/web/components/phoneCode/index.js +4 -1
- package/dist/web/components/richText/index.d.ts +1 -1
- package/dist/web/components/richText/index.js +6 -6
- package/dist/web/components/share/index.js +4 -1
- package/dist/web/components/text/index.js +2 -1
- package/dist/web/components/userInfo/index.js +4 -1
- package/dist/web/utils/console.js +1 -1
- package/dist/web/utils/platform.d.ts +11 -1
- package/dist/web/utils/platform.js +61 -12
- 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
|
-
|
|
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
|
-
}, [
|
|
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
|
-
|
|
121
|
-
|
|
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 =
|
|
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
|
-
|
|
148
|
-
|
|
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-
|
|
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
|
-
|
|
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,
|
|
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
|
*/
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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, {
|
|
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
|
|
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
|
-
|
|
93
|
-
const state = createStateFromContent(
|
|
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(
|
|
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 ?
|
|
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(
|
|
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(
|
|
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:
|
|
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, 否则当屏幕小于
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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.
|
|
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",
|