@cloudbase/weda-ui 3.4.10 → 3.4.11
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/components/wd-table.js +1 -1
- package/dist/web/components/calendar/index.js +1 -1
- package/dist/web/components/form/enumSelect/MultipleSelect.js +1 -0
- package/dist/web/components/form/enumSelect/SelectContainer.js +1 -0
- package/dist/web/components/form/input/index.js +11 -5
- package/dist/web/components/form/location/components/LocationPC/Header.js +1 -0
- package/dist/web/components/form/location/index.js +1 -0
- package/dist/web/components/form/select/request.js +14 -2
- package/dist/web/components/form/uploader/uploader.h5.js +1 -1
- package/dist/web/components/form/uploader/uploader.pc.js +3 -2
- package/dist/web/components/form/uploaderFile/index.js +2 -0
- package/dist/web/components/form/userOrgSelect/common/fetch-data-service.js +47 -43
- package/dist/web/components/form/userOrgSelect/common/utils.js +0 -20
- package/dist/web/components/form/userOrgSelect/component/depart-select/depart-select-pc.js +8 -3
- package/dist/web/components/form/userOrgSelect/component/depart-select/index.js +18 -14
- package/dist/web/components/form/userOrgSelect/component/depart-select/org-modal-pc.js +14 -20
- package/dist/web/components/form/userOrgSelect/component/modal-select-h5.js +1 -1
- package/dist/web/components/form/userOrgSelect/component/org-tree.js +1 -3
- package/dist/web/components/form/userOrgSelect/component/user-select-h5/index.js +4 -29
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-model.js +7 -2
- package/dist/web/components/form/userOrgSelect/component/user-select-pc/user-select-pc.js +4 -6
- package/dist/web/components/form/userOrgSelect/component/userOrgSelect.css +2 -8
- package/dist/web/components/form/userOrgSelect/departTreeSelect/departTreeSelect.h5.js +51 -25
- package/dist/web/components/form-input-hooks/index.js +2 -1
- package/dist/web/components/repeater/index.js +1 -0
- package/dist/web/components/repeater-item/index.js +1 -0
- package/dist/web/components/statusContent/index.js +1 -0
- package/dist/web/components/table/ImportFileModalByApi/uploadCSVFile.js +1 -1
- package/dist/web/components/wd-form/index.js +3 -2
- package/dist/web/components/wd-table/components/FieldRender/index.js +15 -18
- package/dist/web/components/wd-table/wd-table.js +18 -18
- package/dist/web/utils/datasource.js +23 -17
- package/package.json +1 -1
- package/dist/web/components/emptyContent/index.js +0 -46
- package/dist/web/components/flow/components/FlowModuleText/Content.js +0 -6
- package/dist/web/components/flow/components/FlowModuleText/Title.js +0 -16
- package/dist/web/components/flow/components/FlowModuleText/index.js +0 -7
- package/dist/web/components/flow/components/FlowModuleText/utils.js +0 -34
- package/dist/web/components/flow/components/FlowStatusText/index.js +0 -37
- package/dist/web/components/flow/components/HighLightComment/index.js +0 -31
- package/dist/web/components/flow/components/index.js +0 -3
- package/dist/web/components/flow/constants/index.js +0 -65
- package/dist/web/components/flow/frame/getCommonFlowData.js +0 -80
- package/dist/web/components/flow/frame/hooks/index.js +0 -2
- package/dist/web/components/flow/frame/hooks/useCommonFlowRequest.js +0 -148
- package/dist/web/components/flow/frame/hooks/useElementMediaQuery.js +0 -15
- package/dist/web/components/flow/frame/index.js +0 -76
- package/dist/web/components/flow/frame/types.js +0 -277
- package/dist/web/components/flow/frame/utils.js +0 -149
- package/dist/web/components/flow/modules/chart/Chart.js +0 -282
- package/dist/web/components/flow/modules/chart/constants.js +0 -28
- package/dist/web/components/flow/modules/chart/index.css +0 -84
- package/dist/web/components/flow/modules/chart/isString.js +0 -5
- package/dist/web/components/flow/modules/chart/utils.js +0 -111
- package/dist/web/components/flow/modules/operations/controls-items/flow-task-info-modal.js +0 -98
- package/dist/web/components/flow/modules/process/Process.js +0 -73
- package/dist/web/components/flow/modules/process/ProcessMobile.js +0 -81
- package/dist/web/components/flow/modules/process/index.js +0 -14
- package/dist/web/components/flow/modules/process/utils/index.js +0 -32
- package/dist/web/components/flow/services/flow.js +0 -111
- package/dist/web/components/flow/services/ideData/chart.js +0 -88
- package/dist/web/components/flow/services/ideData/index.js +0 -5
- package/dist/web/components/flow/services/ideData/instance.js +0 -23
- package/dist/web/components/flow/services/ideData/pageDetail.js +0 -42
- package/dist/web/components/flow/services/ideData/process.js +0 -27
- package/dist/web/components/flow/services/index.js +0 -2
- package/dist/web/components/flow/services/user.js +0 -23
- package/dist/web/components/flow/services/utils.js +0 -28
- package/dist/web/components/form/userOrgSelect/component/OrgPaths.js +0 -12
- package/dist/web/components/form/userOrgSelect/component/depart-select/departTreeSelect.h5.js +0 -156
|
@@ -20,7 +20,7 @@ const commonProperties = {
|
|
|
20
20
|
'x-linkages': [
|
|
21
21
|
{
|
|
22
22
|
type: 'value:state',
|
|
23
|
-
target: '*( filterFields,bindMetadata,queryCondition,orderBy,orderType,defaultPageSize)',
|
|
23
|
+
target: '*( filterFields,bindMetadata,queryCondition,orderBy,orderType,defaultPageSize,defaultPageIndex)',
|
|
24
24
|
condition: "{{$self.value !='custom-connector'}}",
|
|
25
25
|
state: {
|
|
26
26
|
display: true,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useEffect, useMemo } from 'react';
|
|
2
|
+
import React, { useState, useEffect, useMemo } from 'react';
|
|
3
3
|
import { usePlatform } from '../../utils/platform';
|
|
4
4
|
import { ConfigProvider, Select } from 'tea-component';
|
|
5
5
|
import * as PropTypes from 'prop-types';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import classNames from '../../../utils/classnames';
|
|
4
4
|
import { usePlatform } from '../../../utils/platform';
|
|
@@ -59,14 +59,20 @@ label = '标题', labelVisible = true, name = 'formInput', defaultValue = '', pa
|
|
|
59
59
|
e.preventDefault();
|
|
60
60
|
};
|
|
61
61
|
const onKeyDown = function (e) {
|
|
62
|
-
var _a;
|
|
62
|
+
var _a, _b;
|
|
63
63
|
// 确认逻辑
|
|
64
64
|
if (e.key === 'enter' || e.keyCode === 13) {
|
|
65
65
|
(_a = events === null || events === void 0 ? void 0 : events.confirm) === null || _a === void 0 ? void 0 : _a.call(events, { value: e.target.value }, { originEvent: e });
|
|
66
66
|
}
|
|
67
67
|
// 数字类型的键盘, 不能输入e
|
|
68
|
-
if (inputType === 'number'
|
|
69
|
-
e.
|
|
68
|
+
if (inputType === 'number') {
|
|
69
|
+
if (e.key === 'e') {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
}
|
|
72
|
+
// 不能输入 -
|
|
73
|
+
if (e.key === '-' && ((_b = e.target.value) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
}
|
|
70
76
|
}
|
|
71
77
|
};
|
|
72
78
|
const onFocus = function (e) {
|
|
@@ -79,7 +85,7 @@ label = '标题', labelVisible = true, name = 'formInput', defaultValue = '', pa
|
|
|
79
85
|
(_a = events === null || events === void 0 ? void 0 : events.blur) === null || _a === void 0 ? void 0 : _a.call(events, { value: e.target.value }, { originEvent: e });
|
|
80
86
|
setIsFocus(false);
|
|
81
87
|
};
|
|
82
|
-
const fieldEl = platform === 'h5' ? (_jsx("div", { className: subCls, children: _jsxs("div", { className: "weui-cell__bd weui-flex", children: [_jsx("input", { className: "weui-input", "data-testid": "weui-input-test", type: inputType, placeholder: placeholder, value: value, disabled: disabled, name: name, autoFocus: autoFocus, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, role: "input" }), clearable && (_jsx("button", { "data-testid": "weui-btn_input-clear-test", className: "weui-btn_reset weui-btn_icon weui-btn_input-clear", onMouseDown: onClear, children: _jsx("i", { className: "weui-icon-clear" }) }))] }) })) : (_jsx(ConfigProvider, { classPrefix: "wedatea2td", children: _jsxs("div", { className: 'weui-pc-input', children: [_jsx(TeaInput, { "data-testid": "weui-input-test-pc", className: 'pc-input', size: size, type: inputType, placeholder: placeholder, value: value, disabled: disabled, name: name, autoFocus: autoFocus, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown }), showPcClear && (_jsx(Icon, { "data-testid": "weui-input-test-pc-clear", className: 'pc-clear', type: "dismiss", size: "s", onMouseDown: onClear }))] }) }));
|
|
88
|
+
const fieldEl = platform === 'h5' ? (_jsx(_Fragment, { children: _jsx("div", { className: subCls, children: _jsxs("div", { className: "weui-cell__bd weui-flex", children: [_jsx("input", { className: "weui-input", "data-testid": "weui-input-test", type: inputType, placeholder: placeholder, value: value, disabled: disabled, name: name, autoFocus: autoFocus, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, role: "input" }), clearable && (_jsx("button", { "data-testid": "weui-btn_input-clear-test", className: "weui-btn_reset weui-btn_icon weui-btn_input-clear", onMouseDown: onClear, children: _jsx("i", { className: "weui-icon-clear" }) }))] }) }) })) : (_jsx(ConfigProvider, { classPrefix: "wedatea2td", children: _jsxs("div", { className: 'weui-pc-input', children: [_jsx(TeaInput, { "data-testid": "weui-input-test-pc", className: 'pc-input', size: size, type: inputType, placeholder: placeholder, value: value, disabled: disabled, name: name, autoFocus: autoFocus, onChange: onChange, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown }), showPcClear && (_jsx(Icon, { "data-testid": "weui-input-test-pc-clear", className: 'pc-clear', type: "dismiss", size: "s", onMouseDown: onClear }))] }) }));
|
|
83
89
|
return renderDecorator(fieldEl, decorator)({
|
|
84
90
|
id,
|
|
85
91
|
className: cls,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
import { Button } from 'tea-component';
|
|
3
4
|
import classNames from '../../../../../utils/classnames';
|
|
4
5
|
const Header = ({ onClick, isEdit, info, disabled, showLngLat, locationType, dataSourceStatus, apiKeyStatus, currentLocStatus, }) => {
|
|
@@ -30,10 +30,22 @@ export const requestFatherRelatedOption = async (params, pageNo, type, searchVal
|
|
|
30
30
|
let realWhere = [];
|
|
31
31
|
if (searchValue) {
|
|
32
32
|
if (type === RequestOptionType.SEARCH) {
|
|
33
|
-
realWhere = [
|
|
33
|
+
realWhere = [
|
|
34
|
+
{
|
|
35
|
+
[primaryField]: {
|
|
36
|
+
$search: searchValue,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
];
|
|
34
40
|
}
|
|
35
41
|
else if (type === RequestOptionType.EQUAL) {
|
|
36
|
-
realWhere = [
|
|
42
|
+
realWhere = [
|
|
43
|
+
{
|
|
44
|
+
_id: {
|
|
45
|
+
$eq: searchValue,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
];
|
|
37
49
|
}
|
|
38
50
|
}
|
|
39
51
|
realWhere = [{ $and: [...getWhereList(where), ...realWhere] }];
|
|
@@ -137,7 +137,7 @@ export function ImageUploaderH5({ title: label, maxUploadCount, maxSize = 10, ac
|
|
|
137
137
|
if (!islegalType(files, accepts))
|
|
138
138
|
return;
|
|
139
139
|
if (files.some((f) => f.size > maxSize * 1024 * 1024)) {
|
|
140
|
-
weui.alert(
|
|
140
|
+
weui.alert(`请上传不超过 ${maxSize}M 的图片`);
|
|
141
141
|
return false;
|
|
142
142
|
}
|
|
143
143
|
if (files.length > finalMaxImgCount) {
|
|
@@ -36,7 +36,8 @@ export function UploaderPC({ layout, className, id, style, title, tips, ...props
|
|
|
36
36
|
export function UploaderPCInner(props) {
|
|
37
37
|
var _a;
|
|
38
38
|
const { tips = '', btnTitle = '上传图片', maxUploadCount = 9, maxSize = 10, defaultValue, // 需要兼容 cloud:和https: 协议,需要兼容 字符串和字符串数组
|
|
39
|
-
acceptTypes = IMAGE_TYPES, uploadPath = 'weda-uploader', events = emptyObject, single = false, disabled = false, onChange, imgTypeCls, $node,
|
|
39
|
+
acceptTypes = IMAGE_TYPES, uploadPath = 'weda-uploader', events = emptyObject, single = false, disabled = false, onChange, imgTypeCls, $node, value, // 数据管理后台中,formily使用此字段传默认值
|
|
40
|
+
} = props;
|
|
40
41
|
// 上传中
|
|
41
42
|
const [uploading, setUploading] = React.useState(false);
|
|
42
43
|
//上传进度
|
|
@@ -47,7 +48,7 @@ export function UploaderPCInner(props) {
|
|
|
47
48
|
const formType = ((_a = getParentForm($node)) === null || _a === void 0 ? void 0 : _a.formType) || 'create';
|
|
48
49
|
React.useEffect(() => {
|
|
49
50
|
let initialValue = []
|
|
50
|
-
.concat(defaultValue)
|
|
51
|
+
.concat(value ? value : defaultValue)
|
|
51
52
|
.filter((d) => typeof d === 'string' && d !== '');
|
|
52
53
|
if (single) {
|
|
53
54
|
initialValue = initialValue[0] ? [initialValue[0]] : [];
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable react/prop-types */
|
|
3
|
+
import * as React from 'react';
|
|
2
4
|
import { usePlatform } from '../../../utils/platform';
|
|
3
5
|
import { UploadFileH5 as UploaderH5 } from './uploadFile.h5';
|
|
4
6
|
import { UploadFilePc } from './uploadFile.pc';
|
|
@@ -42,26 +42,23 @@ export const errorHandle = (error, action) => {
|
|
|
42
42
|
*/
|
|
43
43
|
export const fetchUserListByIds = async (selectUserIds = [], request) => {
|
|
44
44
|
try {
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
for (let index =
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
UserIds: selectUserIds
|
|
45
|
+
let pageNo = 1;
|
|
46
|
+
const pageSize = 50;
|
|
47
|
+
let records = [];
|
|
48
|
+
let total = 9999;
|
|
49
|
+
for (let index = 0; index < Math.floor(total / pageSize) + 1; index++) {
|
|
50
|
+
const data = await request('DescribeWedaUsersRuntime', {
|
|
51
|
+
pageNo: pageNo,
|
|
52
|
+
pageSize: pageSize,
|
|
53
|
+
UserIds: selectUserIds || [],
|
|
54
54
|
UserType: 'internalUser',
|
|
55
55
|
NeedPrimaryColumn: true,
|
|
56
56
|
IsNoRelatedOrgFlag: false,
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
Array.isArray(res.UserList) &&
|
|
63
|
-
res.UserList.length > 0) {
|
|
64
|
-
records.push(...res.UserList);
|
|
57
|
+
});
|
|
58
|
+
pageNo = pageNo + 1;
|
|
59
|
+
if (data === null || data === void 0 ? void 0 : data.UserList) {
|
|
60
|
+
total = (data === null || data === void 0 ? void 0 : data.Total) || 0;
|
|
61
|
+
records = records.concat(data === null || data === void 0 ? void 0 : data.UserList);
|
|
65
62
|
}
|
|
66
63
|
}
|
|
67
64
|
return records;
|
|
@@ -175,36 +172,43 @@ async function fetchUsersByOrgId(params, request) {
|
|
|
175
172
|
}
|
|
176
173
|
}
|
|
177
174
|
/**
|
|
178
|
-
|
|
175
|
+
* 获取当前组织列表总数
|
|
179
176
|
*/
|
|
180
|
-
export const
|
|
177
|
+
export const fetchOrgTotal = async (request) => {
|
|
181
178
|
try {
|
|
182
|
-
|
|
183
|
-
const { Total = 0, DataList = [] } = await request('DescribeOrgs', {
|
|
179
|
+
return await request('DescribeOrgs', {
|
|
184
180
|
pageNo: 1,
|
|
185
|
-
pageSize:
|
|
181
|
+
pageSize: 1,
|
|
182
|
+
}).then((data) => {
|
|
183
|
+
return (data === null || data === void 0 ? void 0 : data.Total) || 0;
|
|
186
184
|
});
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
console.error('错误', error);
|
|
188
|
+
throw errorHandle(error, 'fetchOrgTotal');
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
*获取全量组织数据
|
|
193
|
+
*/
|
|
194
|
+
export const DescribeOrgs = async (request) => {
|
|
195
|
+
try {
|
|
196
|
+
const total = await fetchOrgTotal(request);
|
|
197
|
+
let records = [];
|
|
198
|
+
if (total > 0) {
|
|
199
|
+
const resultPromise = [];
|
|
200
|
+
for (let index = 1; index <= Math.ceil(total / 1000); index++) {
|
|
201
|
+
const DescribeOrgsByPage = request('DescribeOrgs', {
|
|
202
|
+
pageNo: index,
|
|
203
|
+
pageSize: 1000,
|
|
204
|
+
}) || {};
|
|
205
|
+
resultPromise.push(DescribeOrgsByPage);
|
|
207
206
|
}
|
|
207
|
+
await Promise.all(resultPromise).then((data) => {
|
|
208
|
+
(data || []).map((item) => {
|
|
209
|
+
records = records.concat(item === null || item === void 0 ? void 0 : item.DataList);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
208
212
|
}
|
|
209
213
|
return records;
|
|
210
214
|
}
|
|
@@ -252,6 +256,6 @@ export const fetchViewList = async () => {
|
|
|
252
256
|
}
|
|
253
257
|
catch (error) {
|
|
254
258
|
console.error('错误', error);
|
|
255
|
-
throw errorHandle(error, '
|
|
259
|
+
throw errorHandle(error, 'DescribeOrgs');
|
|
256
260
|
}
|
|
257
261
|
};
|
|
@@ -306,23 +306,3 @@ export const formatTree = (nodes) => {
|
|
|
306
306
|
}
|
|
307
307
|
return [];
|
|
308
308
|
};
|
|
309
|
-
/**
|
|
310
|
-
* 根据code再树结构中查找节点
|
|
311
|
-
* @param treeData
|
|
312
|
-
* @param code
|
|
313
|
-
* @returns
|
|
314
|
-
*/
|
|
315
|
-
export const getNodeFromTreeByCode = (treeData, code) => {
|
|
316
|
-
for (const node of treeData) {
|
|
317
|
-
if (node.code === code) {
|
|
318
|
-
return node;
|
|
319
|
-
}
|
|
320
|
-
if (node.children) {
|
|
321
|
-
const result = getNodeFromTreeByCode(node.children, code);
|
|
322
|
-
if (result) {
|
|
323
|
-
return result;
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
return null;
|
|
328
|
-
};
|
|
@@ -3,12 +3,14 @@ import React, { useState } from 'react';
|
|
|
3
3
|
import { renderDecorator } from '../../../renderDecorator';
|
|
4
4
|
import classNames from '../../../../../utils/classnames';
|
|
5
5
|
import { Dropdown, ConfigProvider } from 'tea-component';
|
|
6
|
+
//import {dealOrgData } from '../../utils';
|
|
6
7
|
import { defaultRequest } from '../../common/fetch-data-service';
|
|
7
8
|
import '../index.css';
|
|
8
9
|
import { OrgModalPC } from './org-modal-pc';
|
|
9
10
|
import { InputTags } from '../../component/input-tags';
|
|
11
|
+
import { filterStrList } from '../../../../../utils/platform';
|
|
10
12
|
export const OrgTreeContext = React.createContext(null);
|
|
11
|
-
export function DepartTreeSelectPC({ id, className, style, label = '部门选择', labelVisible = true, placeholder = '请选择部门', disabled = false, layout = 'horizontal', requiredFlag = false, size = 'l', multiple = false, decorator, request = defaultRequest, confirmOrgList, setConfirmOrgList, selectedOrgList, setSelectedOrgList, errorInfo, setErrorInfo, treeData, orgList, error, defaultExpandedIds, }) {
|
|
13
|
+
export function DepartTreeSelectPC({ id, className, style, label = '部门选择', labelVisible = true, placeholder = '请选择部门', disabled = false, layout = 'horizontal', requiredFlag = false, size = 'l', multiple = false, decorator, request = defaultRequest, confirmOrgList, confirmOrgIds, setConfirmOrgList, selectedOrgIds, setSelectedOrgIds, selectedOrgList, setSelectedOrgList, errorInfo, setErrorInfo, treeData, orgList, error, defaultExpandedIds, }) {
|
|
12
14
|
const [open, setOpen] = useState(false);
|
|
13
15
|
// 外层组件类
|
|
14
16
|
const cls = classNames({
|
|
@@ -23,18 +25,21 @@ export function DepartTreeSelectPC({ id, className, style, label = '部门选择
|
|
|
23
25
|
};
|
|
24
26
|
//取消 关闭弹窗
|
|
25
27
|
const onCancel = () => {
|
|
26
|
-
setSelectedOrgList(
|
|
28
|
+
setSelectedOrgList([]);
|
|
27
29
|
setOpen(false);
|
|
28
30
|
};
|
|
29
31
|
return renderDecorator(_jsx(ConfigProvider, { classPrefix: "wedatea2td", children: _jsx(OrgTreeContext.Provider, { value: {
|
|
32
|
+
selectedOrgList,
|
|
30
33
|
multiple,
|
|
31
34
|
setSelectedOrgList,
|
|
32
|
-
selectedOrgList,
|
|
33
35
|
confirmOrgList,
|
|
36
|
+
selectedOrgIds,
|
|
37
|
+
setSelectedOrgIds,
|
|
34
38
|
defaultExpandedIds,
|
|
35
39
|
request,
|
|
36
40
|
}, children: _jsx(Dropdown, { className: classNames(`weda-ui-org-selected`, `size-${size}`), open: open, onOpenChange: (open) => {
|
|
37
41
|
setOpen(open);
|
|
42
|
+
setSelectedOrgIds(filterStrList(confirmOrgIds));
|
|
38
43
|
setErrorInfo({ errorStatus: false, errorMessage: null });
|
|
39
44
|
}, appearance: 'button', button: _jsx(InputTags, { tagsList: confirmOrgList, placeholder: placeholder, multiple: multiple, errInfo: errorInfo, disabled: disabled, onClose: (e, item) => {
|
|
40
45
|
setConfirmOrgList(confirmOrgList.filter((l) => (l === null || l === void 0 ? void 0 : l.id) !== (item === null || item === void 0 ? void 0 : item.id)));
|
|
@@ -22,6 +22,8 @@ export default function DepartTreeSelect(props) {
|
|
|
22
22
|
const prevDefaultRef = React.useRef(null);
|
|
23
23
|
// 最终选定部门id
|
|
24
24
|
const [confirmOrgIds, setConfirmOrgIds] = useSyncValue(defaultValue, isObjectEqual);
|
|
25
|
+
//弹窗中被选中部门id集合
|
|
26
|
+
const [selectedOrgIds, setSelectedOrgIds] = useState([]);
|
|
25
27
|
// 最终选定部门集合
|
|
26
28
|
const [confirmOrgList, setConfirmOrgList] = useState([]);
|
|
27
29
|
//弹窗中被选中部门集合
|
|
@@ -59,23 +61,23 @@ export default function DepartTreeSelect(props) {
|
|
|
59
61
|
}
|
|
60
62
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
61
63
|
}, [defaultValueType, confirmValue]);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
setConfirmOrgList(orgList || []);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
setConfirmOrgList([]);
|
|
72
|
-
}
|
|
64
|
+
const getDefaultOrg = async (ids) => {
|
|
65
|
+
try {
|
|
66
|
+
setErrorInfo({ errorStatus: false, errorMessage: null });
|
|
67
|
+
if (ids && ids.length !== 0 && !isInIde()) {
|
|
68
|
+
const { orgList } = await getDepartByIds({ ids, request });
|
|
69
|
+
setConfirmOrgList(orgList || []);
|
|
73
70
|
}
|
|
74
|
-
|
|
71
|
+
else {
|
|
75
72
|
setConfirmOrgList([]);
|
|
76
|
-
setErrorInfo({ errorStatus: true, errorMessage: e });
|
|
77
73
|
}
|
|
78
|
-
}
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
setConfirmOrgList([]);
|
|
77
|
+
setErrorInfo({ errorStatus: true, errorMessage: e });
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
useEffect(() => {
|
|
79
81
|
try {
|
|
80
82
|
if (!isObjectEqual(prevDefaultRef.current, confirmOrgIds)) {
|
|
81
83
|
getDefaultOrg(confirmOrgIds);
|
|
@@ -114,6 +116,8 @@ export default function DepartTreeSelect(props) {
|
|
|
114
116
|
confirmOrgIds,
|
|
115
117
|
confirmOrgList,
|
|
116
118
|
setConfirmOrgList,
|
|
119
|
+
selectedOrgIds,
|
|
120
|
+
setSelectedOrgIds,
|
|
117
121
|
selectedOrgList,
|
|
118
122
|
setSelectedOrgList,
|
|
119
123
|
errorInfo,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import React, { useState,
|
|
2
|
+
import React, { useState, useEffect } from 'react';
|
|
3
3
|
import { Button, Modal, Bubble } from 'tea-component';
|
|
4
4
|
import { ModalSearch } from '../modal-search';
|
|
5
5
|
import { OrgTreeContext } from './depart-select-pc';
|
|
@@ -10,7 +10,7 @@ import debounce from '../../../../../utils/debounce';
|
|
|
10
10
|
import '../index.css';
|
|
11
11
|
export const OrgModalPC = (props) => {
|
|
12
12
|
const { open, setOpen, onCancel, onConfirm, treeData, orgList, treeDataError, } = props;
|
|
13
|
-
const { multiple, setSelectedOrgList,
|
|
13
|
+
const { selectedOrgList, multiple, setSelectedOrgList, confirmOrgList, selectedOrgIds, setSelectedOrgIds, defaultExpandedIds, } = React.useContext(OrgTreeContext) || {};
|
|
14
14
|
const [searchOrgList, setSearchOrgList] = useState([]);
|
|
15
15
|
// 是否有搜索项
|
|
16
16
|
const [keyWords, setKeyWords] = useState('');
|
|
@@ -19,7 +19,13 @@ export const OrgModalPC = (props) => {
|
|
|
19
19
|
errorMessage: null,
|
|
20
20
|
});
|
|
21
21
|
const [loading, setLoading] = useState(false);
|
|
22
|
-
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
let selectOrgList = [];
|
|
24
|
+
[]
|
|
25
|
+
.concat(selectedOrgIds)
|
|
26
|
+
.map((e) => (selectOrgList = selectOrgList.concat(orgList.filter((item) => (item === null || item === void 0 ? void 0 : item.id) === e))));
|
|
27
|
+
setSelectedOrgList(selectOrgList);
|
|
28
|
+
}, [selectedOrgIds]);
|
|
23
29
|
//搜索值变化延迟响应,节流处理
|
|
24
30
|
const onSearch = debounce((key) => {
|
|
25
31
|
try {
|
|
@@ -39,24 +45,12 @@ export const OrgModalPC = (props) => {
|
|
|
39
45
|
setErrInfo({ errorStatus: true, errorMessage: e });
|
|
40
46
|
}
|
|
41
47
|
}, 500);
|
|
42
|
-
|
|
43
|
-
const items = [];
|
|
44
|
-
if (ids.length > 0) {
|
|
45
|
-
for (const id of ids) {
|
|
46
|
-
const item = orgList.find((i) => i.id === id);
|
|
47
|
-
if (item) {
|
|
48
|
-
items.push(item);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
if (items.length > 0) {
|
|
53
|
-
setSelectedOrgList(items);
|
|
54
|
-
}
|
|
55
|
-
}, [orgList, setSelectedOrgList]);
|
|
56
|
-
return (_jsxs(Modal, { disableEscape: true, maskClosable: false, visible: open, caption: "\u9009\u62E9\u90E8\u95E8", onClose: () => setOpen(false), className: "weda-ui weda-ui-user-select-modal", children: [_jsxs(Modal.Body, { children: [_jsxs("div", { className: "weda-ui-user-select-container", children: [_jsx(ModalSearch, { searchList: searchOrgList, errInfo: errInfo, loading: loading, keyWords: keyWords, selectedList: selectedOrgList, multiple: multiple, setSelectedList: setSelectedOrgList, setSelectedIds: handleSelectedIdsChange, selectedIds: selectedIds, onSearch: (key) => onSearch(key), onReset: () => setSearchOrgList([]), isUser: false }), keyWords.length === 0 && (_jsx(_Fragment, { children: _jsx("div", { className: "weda-ui-user-select-container-list", children: _jsx("div", { className: "weda-ui-user-select-container-list__start", children: _jsx(OrgTree, { selectedOrgId: selectedIds, mutiple: multiple,
|
|
48
|
+
return (_jsxs(Modal, { visible: open, caption: "\u9009\u62E9\u90E8\u95E8", onClose: () => setOpen(false), className: "weda-ui weda-ui-user-select-modal", children: [_jsxs(Modal.Body, { children: [_jsxs("div", { className: "weda-ui-user-select-container", children: [_jsx(ModalSearch, { searchList: searchOrgList, errInfo: errInfo, loading: loading, keyWords: keyWords, selectedList: selectedOrgList, multiple: multiple, setSelectedList: setSelectedOrgList, setSelectedIds: setSelectedOrgIds, selectedIds: selectedOrgIds, onSearch: (key) => onSearch(key), onReset: () => setSearchOrgList([]), isUser: false }), keyWords.length === 0 && (_jsx(_Fragment, { children: _jsx("div", { className: "weda-ui-user-select-container-list", children: _jsx("div", { className: "weda-ui-user-select-container-list__start", children: _jsx(OrgTree, { selectedOrgId: selectedOrgIds, mutiple: multiple,
|
|
57
49
|
//setSelectedOrgId={setSelectedOrgId}
|
|
58
|
-
isUser: false, treeData: treeData, treeDataError: treeDataError, selectable: true, defaultExpandedIds: defaultExpandedIds, onActive: (ids) =>
|
|
59
|
-
|
|
50
|
+
isUser: false, treeData: treeData, treeDataError: treeDataError, selectable: true, defaultExpandedIds: defaultExpandedIds, onActive: (ids) => {
|
|
51
|
+
setSelectedOrgIds(ids);
|
|
52
|
+
} }) }) }) }))] }), _jsx(SelectedList, { selectedList: selectedOrgList, isUser: false, onClose: (item) => {
|
|
53
|
+
setSelectedOrgIds(selectedOrgIds.filter((e) => e !== (item === null || item === void 0 ? void 0 : item.id)));
|
|
60
54
|
} })] }), _jsxs(Modal.Footer, { children: [_jsx(Button, { type: "weak", onClick: onCancel, children: "\u53D6\u6D88" }), _jsx(Bubble, { content: selectedOrgList.length === 0 && confirmOrgList.length === 0
|
|
61
55
|
? '请选择部门'
|
|
62
56
|
: null, children: _jsx(Button, { type: "primary", onClick: onConfirm, disabled: selectedOrgList.length === 0 && confirmOrgList.length === 0, children: "\u786E\u5B9A" }) })] })] }));
|
|
@@ -197,7 +197,7 @@ export const ModalSelectH5 = (props) => {
|
|
|
197
197
|
document.getElementById('wd-search-input').blur();
|
|
198
198
|
e.stopPropagation();
|
|
199
199
|
};
|
|
200
|
-
return (_jsxs(Modal, {
|
|
200
|
+
return (_jsxs(Modal, { visible: open, onClose: () => {
|
|
201
201
|
onrest();
|
|
202
202
|
onClose();
|
|
203
203
|
}, destroyOnClose: true, className: `weda-ui weda-select-user-dept__dialog`, children: [_jsxs(Modal.Body, { className: ((_a = selectedUserList[0]) === null || _a === void 0 ? void 0 : _a.userId) ? 'is-selected-value' : '', children: [_jsx("div", { className: "weda-select-user-dept__dialog-header", children: '选择成员' }), _jsx(ModalSearchH5, { value: keyWords, onChange: (key) => {
|
|
@@ -35,7 +35,5 @@ export const OrgTree = (props) => {
|
|
|
35
35
|
onChange(ids, context === null || context === void 0 ? void 0 : context.active, context === null || context === void 0 ? void 0 : context.nodeId, (_a = context === null || context === void 0 ? void 0 : context.data) === null || _a === void 0 ? void 0 : _a.selectable);
|
|
36
36
|
}, onSelect: (ids, context) => {
|
|
37
37
|
onChange(ids, context === null || context === void 0 ? void 0 : context.selected, context === null || context === void 0 ? void 0 : context.nodeId, true);
|
|
38
|
-
},
|
|
39
|
-
// 开启虚拟滚动,优化大数据量性能!!
|
|
40
|
-
height: 320 })) : (_jsx(LoadingStatus, {})) })) }));
|
|
38
|
+
} })) : (_jsx(LoadingStatus, {})) })) }));
|
|
41
39
|
};
|
|
@@ -12,14 +12,7 @@ import { useViewData } from '../../hooks/use-views-data';
|
|
|
12
12
|
import { useDepartData } from '../../hooks/use-depart-data';
|
|
13
13
|
import { parseStrToArr } from '../../common/utils';
|
|
14
14
|
export default function UserTreeSelect(props) {
|
|
15
|
-
const { events = emptyObject, defaultValue = emptyArray, confirmValue = '', defaultValueType = 'noneUser', onChange = null, multiple = false, request = defaultRequest, where, confirmAction, closeAction,
|
|
16
|
-
/**
|
|
17
|
-
* 以下两个属性 不用在组件库,企业工作台使用该组件时支持外部定义样式
|
|
18
|
-
* naked: 单纯使用该组件,而不在FormCell中使用(该组件实现默认在在)
|
|
19
|
-
* containerClass: string
|
|
20
|
-
* triggerElement: React.ReactNode
|
|
21
|
-
*/
|
|
22
|
-
naked = false, containerClass = '', triggerElement = null, } = props;
|
|
15
|
+
const { events = emptyObject, defaultValue = emptyArray, confirmValue = '', defaultValueType = 'noneUser', onChange = null, multiple = false, request = defaultRequest, where, confirmAction, closeAction, } = props;
|
|
23
16
|
const platform = usePlatform();
|
|
24
17
|
const [errInfo, setErrInfo] = useState({
|
|
25
18
|
errorStatus: false,
|
|
@@ -29,8 +22,6 @@ export default function UserTreeSelect(props) {
|
|
|
29
22
|
const [selectUserIds, setSelectUserIds] = useSyncValue(defaultValue, isObjectEqual);
|
|
30
23
|
// 两次默认值不同, 需要刷新
|
|
31
24
|
const prevDefaultRef = React.useRef(null);
|
|
32
|
-
// 当前选中的部门id
|
|
33
|
-
const [selectedOrgId, setSelectedOrgId] = useState(null);
|
|
34
25
|
//弹窗中被选中用户集合
|
|
35
26
|
const [selectedUserList, setSelectedUserList] = useState([]);
|
|
36
27
|
//弹窗中被选中用户id集合
|
|
@@ -43,13 +34,6 @@ export default function UserTreeSelect(props) {
|
|
|
43
34
|
const pageSize = 200;
|
|
44
35
|
const { filterParams } = useViewData(where);
|
|
45
36
|
const { treeData, error } = useDepartData({ request });
|
|
46
|
-
// 默认选中第一个部门
|
|
47
|
-
useEffect(() => {
|
|
48
|
-
var _a;
|
|
49
|
-
if (!selectedOrgId && treeData && treeData.length > 0) {
|
|
50
|
-
setSelectedOrgId((_a = treeData[0]) === null || _a === void 0 ? void 0 : _a.id);
|
|
51
|
-
}
|
|
52
|
-
}, [selectedOrgId, treeData]);
|
|
53
37
|
useEffect(() => {
|
|
54
38
|
// 仅执行一次
|
|
55
39
|
if (defaultValueType === 'loginUser') {
|
|
@@ -131,8 +115,6 @@ export default function UserTreeSelect(props) {
|
|
|
131
115
|
errInfo,
|
|
132
116
|
open,
|
|
133
117
|
setOpen,
|
|
134
|
-
selectedOrgId,
|
|
135
|
-
setSelectedOrgId,
|
|
136
118
|
selectedUserList,
|
|
137
119
|
setSelectedUserList,
|
|
138
120
|
confirmUserList,
|
|
@@ -149,21 +131,14 @@ export default function UserTreeSelect(props) {
|
|
|
149
131
|
treeData,
|
|
150
132
|
error,
|
|
151
133
|
onConfirmSelectUser,
|
|
152
|
-
secondDisplay,
|
|
153
|
-
};
|
|
154
|
-
// 企业工作台使用该组件时,支持自定义样式
|
|
155
|
-
const extraProps = {
|
|
156
|
-
naked,
|
|
157
|
-
containerClass,
|
|
158
|
-
triggerElement,
|
|
159
134
|
};
|
|
160
135
|
if ((props === null || props === void 0 ? void 0 : props.showType) === 'pc') {
|
|
161
|
-
return _jsx(UserSelectPC, { ...
|
|
136
|
+
return _jsx(UserSelectPC, { ...restProps, ...props });
|
|
162
137
|
}
|
|
163
138
|
if ((props === null || props === void 0 ? void 0 : props.showType) === 'h5') {
|
|
164
|
-
return _jsx(UserSelectH5, { ...
|
|
139
|
+
return _jsx(UserSelectH5, { ...restProps, ...props });
|
|
165
140
|
}
|
|
166
|
-
return platform === 'h5' ? (_jsx(UserSelectH5, { ...
|
|
141
|
+
return platform === 'h5' ? (_jsx(UserSelectH5, { ...restProps, ...props })) : (_jsx(UserSelectPC, { ...restProps, ...props }));
|
|
167
142
|
}
|
|
168
143
|
/**
|
|
169
144
|
* 设置onChange值
|
|
@@ -10,7 +10,9 @@ import { fetchSearchUser } from '../../common/fetch-data-service';
|
|
|
10
10
|
import debounce from '../../../../../utils/debounce';
|
|
11
11
|
import '../index.css';
|
|
12
12
|
export const UserModel = ({ open, onCancel, onConfirm, treeData, treeDataError, filterParams, secondDisplay, }) => {
|
|
13
|
-
|
|
13
|
+
var _a;
|
|
14
|
+
const { selectedUserList, setSelectedUserIds, request, selectedUserIds, setSelectedUserList, multiple, setPageNo, confirmUserList, } = React.useContext(UserOrgContext) || {};
|
|
15
|
+
const [selectedOrgId, setSelectedOrgId] = useState(null);
|
|
14
16
|
//当前页人员列表
|
|
15
17
|
const [curPageUserList, setCurPageUserList] = useState(null);
|
|
16
18
|
const [searchUserList, setSearchUserList] = useState([]);
|
|
@@ -21,6 +23,9 @@ export const UserModel = ({ open, onCancel, onConfirm, treeData, treeDataError,
|
|
|
21
23
|
errorMessage: null,
|
|
22
24
|
});
|
|
23
25
|
const [loading, setLoading] = useState(false);
|
|
26
|
+
treeData.length > 0 && !selectedOrgId
|
|
27
|
+
? setSelectedOrgId((_a = treeData[0]) === null || _a === void 0 ? void 0 : _a.id)
|
|
28
|
+
: [];
|
|
24
29
|
useEffect(() => {
|
|
25
30
|
setSelectedUserIds((selectedUserList || []).map((e) => e === null || e === void 0 ? void 0 : e.id));
|
|
26
31
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -45,7 +50,7 @@ export const UserModel = ({ open, onCancel, onConfirm, treeData, treeDataError,
|
|
|
45
50
|
setErrInfo({ errorStatus: true, errorMessage: e });
|
|
46
51
|
}
|
|
47
52
|
}, 500);
|
|
48
|
-
return (_jsxs(Modal, {
|
|
53
|
+
return (_jsxs(Modal, { visible: open, caption: "\u9009\u62E9\u6210\u5458", onClose: () => onCancel(null), className: "weda-ui weda-ui-user-select-modal", children: [_jsxs(Modal.Body, { children: [_jsxs("div", { className: "weda-ui-user-select-container", children: [_jsx(ModalSearch, { searchList: searchUserList, errInfo: errInfo, loading: loading, keyWords: keyWords, selectedList: selectedUserList, multiple: multiple, setSelectedList: setSelectedUserList, selectedIds: selectedUserIds, filterParams: filterParams, onSearch: (key) => onSearch(key), onReset: () => setSearchUserList([]) }), keyWords.length === 0 && (_jsx(_Fragment, { children: _jsxs("div", { className: "weda-ui-user-select-container-list", children: [_jsx("div", { className: "weda-ui-user-select-container-list__start", children: _jsx(OrgTree, { selectedOrgId: [selectedOrgId], treeData: treeData, treeDataError: treeDataError, onActive: (ids) => {
|
|
49
54
|
setSelectedOrgId(ids[0]);
|
|
50
55
|
setPageNo(1);
|
|
51
56
|
} }) }), _jsx("div", { className: "weda-ui-user-select-container-list__end", children: _jsx(ModelUserList, { selectedOrgId: selectedOrgId, curPageUserList: curPageUserList, setCurPageUserList: setCurPageUserList, filterParams: filterParams, secondDisplay: secondDisplay }) })] }) }))] }), _jsx(SelectedList, { selectedList: selectedUserList, secondDisplay: secondDisplay, onClose: (item) => {
|
|
@@ -11,7 +11,7 @@ export const UserOrgContext = React.createContext(null);
|
|
|
11
11
|
export function UserSelectPC({ id, className, style, label = '人员选择', labelVisible = true, //标题显隐
|
|
12
12
|
placeholder = '请选择人员', disabled = false, layout = 'horizontal', requiredFlag = false, size = 'l', multiple = false, //多选
|
|
13
13
|
outerRef, request = defaultRequest, //接口请求
|
|
14
|
-
decorator, onCancel, onConfirm, errInfo, open, setOpen,
|
|
14
|
+
decorator, onCancel, onConfirm, errInfo, open, setOpen, selectedUserList, setSelectedUserList, confirmUserList, setConfirmUserList, selectedUserIds, setSelectedUserIds, pageNo, setPageNo, pageSize, filterParams, treeData, error, onConfirmSelectUser, secondDisplay, }) {
|
|
15
15
|
// 外层组件类
|
|
16
16
|
const cls = classNames({
|
|
17
17
|
'weda-ui': true,
|
|
@@ -32,8 +32,6 @@ decorator, onCancel, onConfirm, errInfo, open, setOpen, selectedOrgId, setSelect
|
|
|
32
32
|
};
|
|
33
33
|
}, [setOpen]);
|
|
34
34
|
return renderDecorator(_jsx(ConfigProvider, { classPrefix: "wedatea2td", children: _jsx(UserOrgContext.Provider, { value: {
|
|
35
|
-
selectedOrgId,
|
|
36
|
-
setSelectedOrgId,
|
|
37
35
|
selectedUserList,
|
|
38
36
|
multiple,
|
|
39
37
|
setSelectedUserList,
|
|
@@ -44,16 +42,16 @@ decorator, onCancel, onConfirm, errInfo, open, setOpen, selectedOrgId, setSelect
|
|
|
44
42
|
pageNo,
|
|
45
43
|
setPageNo,
|
|
46
44
|
pageSize,
|
|
47
|
-
}, children: _jsx(Dropdown, { "data-testid": "userSelectDropdown", className: classNames(selectInputCls, `size-${size}
|
|
45
|
+
}, children: _jsx(Dropdown, { "data-testid": "userSelectDropdown", className: classNames(selectInputCls, `size-${size}`), disabled: disabled, open: open, onOpenChange: (open) => {
|
|
48
46
|
if (open)
|
|
49
47
|
setSelectedUserList(confirmUserList);
|
|
50
48
|
setOpen(open);
|
|
51
|
-
}, appearance: 'button', button:
|
|
49
|
+
}, appearance: 'button', button: _jsx(InputTags, { tagsList: confirmUserList, placeholder: placeholder, multiple: multiple, errInfo: errInfo, disabled: disabled, onClose: (e, item) => {
|
|
52
50
|
const currentConfirmUserList = confirmUserList.filter((l) => (l === null || l === void 0 ? void 0 : l.id) !== (item === null || item === void 0 ? void 0 : item.id));
|
|
53
51
|
setConfirmUserList(currentConfirmUserList);
|
|
54
52
|
onConfirmSelectUser(currentConfirmUserList);
|
|
55
53
|
e.stopPropagation();
|
|
56
|
-
} })
|
|
54
|
+
} }), overlayClassName: 'weda-ui-user-selected-overlay-hidden', style: { width: '100%' }, children: _jsx(UserModel, { open: open, setOpen: setOpen, onConfirm: onConfirm, onCancel: onCancel, treeData: treeData || [], treeDataError: error, filterParams: filterParams, secondDisplay: secondDisplay }) }) }) }))({
|
|
57
55
|
id,
|
|
58
56
|
className: cls,
|
|
59
57
|
style,
|