@topthink/components 1.0.52 → 1.0.54
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/es/form-01bf45e9.js +233 -0
- package/es/form-01bf45e9.js.map +1 -0
- package/es/form-1791ea39.js +236 -0
- package/es/form-1791ea39.js.map +1 -0
- package/es/form-95db7eac.js +2 -0
- package/es/form-95db7eac.js.map +1 -0
- package/es/index-1930b692.js +67 -0
- package/es/index-1930b692.js.map +1 -0
- package/es/index-1d379f3a.js +562 -0
- package/es/index-1d379f3a.js.map +1 -0
- package/es/index-a48179db.js +1382 -0
- package/es/index-a48179db.js.map +1 -0
- package/es/index-b34ecf90.js +40 -0
- package/es/index-b34ecf90.js.map +1 -0
- package/es/index.js +1 -136
- package/es/index.js.map +1 -1
- package/es/steps-c27a3885.js +34 -0
- package/es/steps-c27a3885.js.map +1 -0
- package/package.json +3 -3
- package/types/components/form.d.ts +4 -19
- package/types/components/lazy/form.d.ts +19 -0
- package/types/components/lazy/steps.d.ts +8 -0
- package/types/components/steps.d.ts +3 -7
- package/types/components/table.d.ts +6 -0
- package/types/index.d.ts +1 -1
- /package/types/components/{table → lazy/table}/context.d.ts +0 -0
- /package/types/components/{table → lazy/table}/index.d.ts +0 -0
- /package/types/components/{table → lazy/table}/search.d.ts +0 -0
- /package/types/components/{table → lazy/table}/use-selection.d.ts +0 -0
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import RcTable from 'rc-table';
|
|
3
|
+
import { unstable_batchedUpdates } from 'react-dom';
|
|
4
|
+
import { FormControl, Table as Table$1 } from 'react-bootstrap';
|
|
5
|
+
import { useUrlSearchParams } from 'use-url-search-params';
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import { useState, useCallback, useRef, useEffect, memo, forwardRef, useImperativeHandle, useMemo } from 'react';
|
|
8
|
+
import { B as Button, a as useDebounce, P as Pagination, b as useControllableState, r as request, N as NumberFormat, L as Loader, T as TableContext, C as Card, S as Space } from './index-a48179db.js';
|
|
9
|
+
import styled from 'styled-components';
|
|
10
|
+
import Form from './form-01bf45e9.js';
|
|
11
|
+
import 'sweetalert2/dist/sweetalert2.js';
|
|
12
|
+
import 'sweetalert2-react-content';
|
|
13
|
+
import 'lodash';
|
|
14
|
+
import 'axios';
|
|
15
|
+
import 'query-string';
|
|
16
|
+
import 'retry-axios';
|
|
17
|
+
import '@babel/runtime/helpers/defineProperty';
|
|
18
|
+
import 'rc-notification';
|
|
19
|
+
import 'classnames';
|
|
20
|
+
import 'rc-steps';
|
|
21
|
+
import 'rc-steps/assets/index.css';
|
|
22
|
+
import 'react-async-hook';
|
|
23
|
+
import '@topthink/json-form';
|
|
24
|
+
|
|
25
|
+
const Checkbox = function (_ref) {
|
|
26
|
+
let {
|
|
27
|
+
indeterminate = false,
|
|
28
|
+
...props
|
|
29
|
+
} = _ref;
|
|
30
|
+
const ref = useRef(null);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (ref.current) {
|
|
33
|
+
ref.current.indeterminate = indeterminate;
|
|
34
|
+
}
|
|
35
|
+
}, [indeterminate]);
|
|
36
|
+
return jsx("input", {
|
|
37
|
+
ref: ref,
|
|
38
|
+
...props,
|
|
39
|
+
className: 'form-check-input',
|
|
40
|
+
type: 'checkbox'
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
function useSelection(rowSelection, rowKey, data) {
|
|
44
|
+
const [keys, setKeys] = useState(() => new Set(rowSelection?.selectedRowKeys || []));
|
|
45
|
+
const getRowKey = record => {
|
|
46
|
+
if (typeof rowKey === 'string') {
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
return record[rowKey];
|
|
49
|
+
} else {
|
|
50
|
+
return rowKey(record);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const getRecordByKey = key => {
|
|
54
|
+
return data.find(record => {
|
|
55
|
+
return getRowKey(record) === key;
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const setSelectedKeys = useCallback(keys => {
|
|
59
|
+
if (!(keys instanceof Set)) {
|
|
60
|
+
keys = new Set(keys);
|
|
61
|
+
}
|
|
62
|
+
setKeys(keys);
|
|
63
|
+
const changedKeys = Array.from(keys);
|
|
64
|
+
const records = changedKeys.map(function (key) {
|
|
65
|
+
return getRecordByKey(key);
|
|
66
|
+
});
|
|
67
|
+
if (rowSelection?.onChange) {
|
|
68
|
+
rowSelection?.onChange(changedKeys, records);
|
|
69
|
+
}
|
|
70
|
+
}, [getRecordByKey]);
|
|
71
|
+
const transformColumns = useCallback(columns => {
|
|
72
|
+
if (!rowSelection) {
|
|
73
|
+
return columns;
|
|
74
|
+
}
|
|
75
|
+
const recordKeys = data.map(getRowKey);
|
|
76
|
+
const checkedCurrentAll = recordKeys.every(function (key) {
|
|
77
|
+
return keys.has(key);
|
|
78
|
+
});
|
|
79
|
+
const checkedCurrentSome = recordKeys.some(function (key) {
|
|
80
|
+
return keys.has(key);
|
|
81
|
+
});
|
|
82
|
+
return [{
|
|
83
|
+
key: 'selection',
|
|
84
|
+
title: jsx(Checkbox, {
|
|
85
|
+
checked: checkedCurrentAll && data.length > 0,
|
|
86
|
+
indeterminate: !checkedCurrentAll && checkedCurrentSome,
|
|
87
|
+
onChange: () => {
|
|
88
|
+
if (checkedCurrentAll) {
|
|
89
|
+
recordKeys.forEach(function (key) {
|
|
90
|
+
keys.delete(key);
|
|
91
|
+
});
|
|
92
|
+
} else {
|
|
93
|
+
recordKeys.forEach(function (key) {
|
|
94
|
+
keys.add(key);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
setSelectedKeys(new Set(keys));
|
|
98
|
+
}
|
|
99
|
+
}),
|
|
100
|
+
width: 30,
|
|
101
|
+
align: 'center',
|
|
102
|
+
render(_ref2) {
|
|
103
|
+
let {
|
|
104
|
+
record
|
|
105
|
+
} = _ref2;
|
|
106
|
+
const key = getRowKey(record);
|
|
107
|
+
const checked = keys.has(key);
|
|
108
|
+
return jsx(Checkbox, {
|
|
109
|
+
checked: checked,
|
|
110
|
+
onChange: () => {
|
|
111
|
+
if (checked) {
|
|
112
|
+
keys.delete(key);
|
|
113
|
+
} else {
|
|
114
|
+
keys.add(key);
|
|
115
|
+
}
|
|
116
|
+
setSelectedKeys(new Set(keys));
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}, ...columns];
|
|
121
|
+
}, [data, rowSelection, keys]);
|
|
122
|
+
return [transformColumns, setSelectedKeys];
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
var _path$1;
|
|
126
|
+
function _extends$1() { _extends$1 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$1.apply(this, arguments); }
|
|
127
|
+
const SvgPlusSquare = props => /*#__PURE__*/React.createElement("svg", _extends$1({
|
|
128
|
+
viewBox: "0 0 1024 1024",
|
|
129
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
130
|
+
width: 16,
|
|
131
|
+
height: 16,
|
|
132
|
+
fill: "currentColor"
|
|
133
|
+
}, props), _path$1 || (_path$1 = /*#__PURE__*/React.createElement("path", {
|
|
134
|
+
d: "M252.069 906.496h520.283c89.582 0 134.144-44.562 134.144-132.846V250.331c0-88.283-44.562-132.845-134.144-132.845H252.069c-89.143 0-134.583 44.141-134.583 132.845V773.67c0 88.704 45.44 132.845 134.583 132.845zm1.28-68.992c-42.844 0-66.853-22.71-66.853-67.291V253.806c0-44.58 24.01-67.292 66.853-67.292h517.723c42.423 0 66.432 22.711 66.432 67.292v516.388c0 44.58-24.01 67.292-66.432 67.292zM511.78 714.496c22.71 0 36.425-15.854 36.425-40.704V547.365H682.35c24.009 0 40.722-12.874 40.722-35.584 0-23.132-15.854-36.426-40.722-36.426H548.206V340.773c0-24.85-13.715-40.704-36.425-40.704s-35.566 16.713-35.566 40.722v134.583H342.49c-24.85 0-41.142 13.275-41.142 36.407 0 22.71 17.152 35.584 41.142 35.584h133.724v126.427c0 23.99 12.855 40.704 35.566 40.704z"
|
|
135
|
+
})));
|
|
136
|
+
|
|
137
|
+
var _path;
|
|
138
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
139
|
+
const SvgMinusSquare = props => /*#__PURE__*/React.createElement("svg", _extends({
|
|
140
|
+
viewBox: "0 0 1024 1024",
|
|
141
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
142
|
+
width: 16,
|
|
143
|
+
height: 16,
|
|
144
|
+
fill: "currentColor"
|
|
145
|
+
}, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
|
|
146
|
+
d: "M252.069 906.496h520.283c89.582 0 134.144-44.562 134.144-132.846V250.331c0-88.283-44.562-132.845-134.144-132.845H252.069c-89.143 0-134.583 44.141-134.583 132.845V773.67c0 88.704 45.44 132.845 134.583 132.845zm1.28-68.992c-42.844 0-66.853-22.71-66.853-67.291V253.806c0-44.58 24.01-67.292 66.853-67.292h517.723c42.423 0 66.432 22.711 66.432 67.292v516.388c0 44.58-24.01 67.292-66.432 67.292zm86.582-289.719h344.576c23.991 0 40.704-12.855 40.704-35.566 0-23.15-15.433-36.425-40.704-36.425H339.931c-24.868 0-40.722 13.276-40.722 36.425 0 22.711 16.713 35.566 40.722 35.566z"
|
|
147
|
+
})));
|
|
148
|
+
|
|
149
|
+
function Search(_ref) {
|
|
150
|
+
let {
|
|
151
|
+
data,
|
|
152
|
+
options,
|
|
153
|
+
columns,
|
|
154
|
+
onSearch
|
|
155
|
+
} = _ref;
|
|
156
|
+
const [key, setKey] = useState(0);
|
|
157
|
+
const uiSchema = {
|
|
158
|
+
'ui:col': 10,
|
|
159
|
+
'ui:order': options.order
|
|
160
|
+
};
|
|
161
|
+
const properties = {};
|
|
162
|
+
options.fields.forEach(field => {
|
|
163
|
+
const column = columns.find(column => column.dataIndex === field);
|
|
164
|
+
if (column) {
|
|
165
|
+
const title = column.title;
|
|
166
|
+
if (typeof title === 'string') {
|
|
167
|
+
uiSchema[field] = {
|
|
168
|
+
'ui:col': 4,
|
|
169
|
+
'ui:labelCol': 3,
|
|
170
|
+
'ui:placeholder': '请输入',
|
|
171
|
+
...options.ui?.[field]
|
|
172
|
+
};
|
|
173
|
+
if (column.valueEnum) {
|
|
174
|
+
const valueEnum = column.valueEnum;
|
|
175
|
+
uiSchema[field]['ui:placeholder'] = '请选择';
|
|
176
|
+
return properties[field] = {
|
|
177
|
+
title,
|
|
178
|
+
type: 'string',
|
|
179
|
+
enum: Object.keys(valueEnum).flatMap(key => {
|
|
180
|
+
const text = valueEnum[key].text;
|
|
181
|
+
if (typeof text === 'string') {
|
|
182
|
+
return [key];
|
|
183
|
+
}
|
|
184
|
+
return [];
|
|
185
|
+
}),
|
|
186
|
+
enumNames: Object.keys(valueEnum).flatMap(key => {
|
|
187
|
+
const text = valueEnum[key].text;
|
|
188
|
+
if (typeof text === 'string') {
|
|
189
|
+
return [text];
|
|
190
|
+
}
|
|
191
|
+
return [];
|
|
192
|
+
})
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
return properties[field] = {
|
|
196
|
+
title,
|
|
197
|
+
type: 'string'
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
if (options.extraFields) {
|
|
203
|
+
Object.entries(options.extraFields).forEach(_ref2 => {
|
|
204
|
+
let [field, title] = _ref2;
|
|
205
|
+
uiSchema[field] = {
|
|
206
|
+
'ui:col': 4,
|
|
207
|
+
'ui:labelCol': 3,
|
|
208
|
+
'ui:placeholder': '请输入',
|
|
209
|
+
...options.ui?.[field]
|
|
210
|
+
};
|
|
211
|
+
properties[field] = {
|
|
212
|
+
title,
|
|
213
|
+
type: 'string'
|
|
214
|
+
};
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
const schema = {
|
|
218
|
+
type: 'object',
|
|
219
|
+
properties
|
|
220
|
+
};
|
|
221
|
+
const onSubmit = useCallback(_ref3 => {
|
|
222
|
+
let {
|
|
223
|
+
formData
|
|
224
|
+
} = _ref3;
|
|
225
|
+
onSearch(formData);
|
|
226
|
+
}, [onSearch]);
|
|
227
|
+
const onReset = useCallback(() => {
|
|
228
|
+
setKey(key => key + 1);
|
|
229
|
+
onSearch({});
|
|
230
|
+
}, []);
|
|
231
|
+
return jsx(Container, {
|
|
232
|
+
children: jsx(Form, {
|
|
233
|
+
formContext: {
|
|
234
|
+
layout: 'horizontal'
|
|
235
|
+
},
|
|
236
|
+
schema: schema,
|
|
237
|
+
uiSchema: uiSchema,
|
|
238
|
+
onSubmit: onSubmit,
|
|
239
|
+
formData: data,
|
|
240
|
+
children: jsx("div", {
|
|
241
|
+
className: 'col-2 ms-auto mt-auto',
|
|
242
|
+
children: jsxs("div", {
|
|
243
|
+
className: 'justify-content-end d-flex gap-2 ',
|
|
244
|
+
children: [jsx(Button, {
|
|
245
|
+
className: 'px-4',
|
|
246
|
+
onClick: onReset,
|
|
247
|
+
variant: 'secondary',
|
|
248
|
+
children: "\u91CD\u7F6E"
|
|
249
|
+
}), jsx(Button, {
|
|
250
|
+
className: 'px-4',
|
|
251
|
+
type: 'submit',
|
|
252
|
+
variant: 'primary',
|
|
253
|
+
children: "\u67E5\u8BE2"
|
|
254
|
+
})]
|
|
255
|
+
})
|
|
256
|
+
})
|
|
257
|
+
})
|
|
258
|
+
}, key);
|
|
259
|
+
}
|
|
260
|
+
const Container = styled.div`
|
|
261
|
+
margin-bottom: 1rem;
|
|
262
|
+
`;
|
|
263
|
+
function LightSearch(_ref4) {
|
|
264
|
+
let {
|
|
265
|
+
keyword,
|
|
266
|
+
onKeywordChange
|
|
267
|
+
} = _ref4;
|
|
268
|
+
const [value, setValue] = useState(keyword);
|
|
269
|
+
const debouncedOnKeywordChange = useDebounce(onKeywordChange, 500);
|
|
270
|
+
useEffect(() => {
|
|
271
|
+
setValue(keyword);
|
|
272
|
+
}, [keyword]);
|
|
273
|
+
const onChange = useCallback(e => {
|
|
274
|
+
setValue(e.target.value);
|
|
275
|
+
debouncedOnKeywordChange(e.target.value);
|
|
276
|
+
}, [debouncedOnKeywordChange, setValue]);
|
|
277
|
+
return jsx(FormControl, {
|
|
278
|
+
value: value,
|
|
279
|
+
onChange: onChange,
|
|
280
|
+
type: 'search',
|
|
281
|
+
placeholder: 'Search...'
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
const CustomTHead = styled.thead`
|
|
286
|
+
th {
|
|
287
|
+
padding: 0.5rem 0.5rem;
|
|
288
|
+
border-bottom-width: 1px;
|
|
289
|
+
border-color: var(--bs-border-color);
|
|
290
|
+
}
|
|
291
|
+
`;
|
|
292
|
+
const components = {
|
|
293
|
+
table: props => {
|
|
294
|
+
return jsx(Table$1, {
|
|
295
|
+
...props,
|
|
296
|
+
className: 'mb-0 align-middle table-hover'
|
|
297
|
+
});
|
|
298
|
+
},
|
|
299
|
+
header: {
|
|
300
|
+
wrapper(props) {
|
|
301
|
+
return jsx(CustomTHead, {
|
|
302
|
+
...props
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
};
|
|
307
|
+
const ExpandIconContainer = styled.a`
|
|
308
|
+
cursor: pointer;
|
|
309
|
+
width: 28px;
|
|
310
|
+
height: 28px;
|
|
311
|
+
display: inline-flex;
|
|
312
|
+
align-items: center;
|
|
313
|
+
justify-content: center;
|
|
314
|
+
vertical-align: middle;
|
|
315
|
+
`;
|
|
316
|
+
const ExpandIcon = function (_ref) {
|
|
317
|
+
let {
|
|
318
|
+
record,
|
|
319
|
+
expanded,
|
|
320
|
+
expandable,
|
|
321
|
+
onExpand
|
|
322
|
+
} = _ref;
|
|
323
|
+
if (!expandable) return jsx(ExpandIconContainer, {});
|
|
324
|
+
return jsx(ExpandIconContainer, {
|
|
325
|
+
onClick: e => onExpand(record, e),
|
|
326
|
+
children: expanded ? jsx(SvgMinusSquare, {}) : jsx(SvgPlusSquare, {})
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
const CustomPagination = styled(Pagination)`
|
|
330
|
+
margin-bottom: 0;
|
|
331
|
+
justify-content: flex-end;
|
|
332
|
+
margin-top: 1rem;
|
|
333
|
+
`;
|
|
334
|
+
function isPagination(data) {
|
|
335
|
+
return 'current_page' in data;
|
|
336
|
+
}
|
|
337
|
+
const Table = forwardRef((_ref2, ref) => {
|
|
338
|
+
let {
|
|
339
|
+
source,
|
|
340
|
+
rowKey = 'id',
|
|
341
|
+
paginate = true,
|
|
342
|
+
toolBarRender,
|
|
343
|
+
columns = [],
|
|
344
|
+
search,
|
|
345
|
+
rowSelection,
|
|
346
|
+
card = true,
|
|
347
|
+
expandable = {},
|
|
348
|
+
sync = false,
|
|
349
|
+
...props
|
|
350
|
+
} = _ref2;
|
|
351
|
+
const [data, setData] = useState([]);
|
|
352
|
+
const [pagination, setPagination] = useState(paginate ? {
|
|
353
|
+
total: 0,
|
|
354
|
+
current: 1,
|
|
355
|
+
pageSize: 10
|
|
356
|
+
} : null);
|
|
357
|
+
const [loading, setLoading] = useState(true);
|
|
358
|
+
const [params, setParams] = useUrlSearchParams({});
|
|
359
|
+
//多选
|
|
360
|
+
const [transformColumns, setSelectionRowKeys] = useSelection(rowSelection, rowKey, data);
|
|
361
|
+
const [filters, setFilters] = useControllableState({
|
|
362
|
+
value: sync ? params || {} : undefined,
|
|
363
|
+
defaultValue: {},
|
|
364
|
+
onChange: value => {
|
|
365
|
+
if (sync) {
|
|
366
|
+
setParams(value);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
const [keyword, setKeyword] = useControllableState({
|
|
371
|
+
value: sync ? params.q || '' : undefined,
|
|
372
|
+
defaultValue: '',
|
|
373
|
+
onChange: value => {
|
|
374
|
+
if (sync) {
|
|
375
|
+
setParams({
|
|
376
|
+
q: value || undefined
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
const [page, setPage] = useControllableState({
|
|
382
|
+
value: sync ? params.page || 1 : undefined,
|
|
383
|
+
defaultValue: 1,
|
|
384
|
+
onChange: value => {
|
|
385
|
+
if (sync) {
|
|
386
|
+
setParams({
|
|
387
|
+
page: value || undefined
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
const fetchData = useCallback(async () => {
|
|
393
|
+
setLoading(true);
|
|
394
|
+
setSelectionRowKeys([]);
|
|
395
|
+
try {
|
|
396
|
+
let result;
|
|
397
|
+
const params = {
|
|
398
|
+
...filters,
|
|
399
|
+
q: keyword,
|
|
400
|
+
page: page > 1 ? page : undefined
|
|
401
|
+
};
|
|
402
|
+
if (typeof source === 'string') {
|
|
403
|
+
result = await request({
|
|
404
|
+
url: source,
|
|
405
|
+
params
|
|
406
|
+
});
|
|
407
|
+
} else {
|
|
408
|
+
result = await source(params);
|
|
409
|
+
}
|
|
410
|
+
if (paginate && isPagination(result)) {
|
|
411
|
+
setPagination({
|
|
412
|
+
total: result.total,
|
|
413
|
+
current: result.current_page,
|
|
414
|
+
pageSize: result.per_page
|
|
415
|
+
});
|
|
416
|
+
result = result.data;
|
|
417
|
+
}
|
|
418
|
+
setData(result);
|
|
419
|
+
} catch (e) {} finally {
|
|
420
|
+
setLoading(false);
|
|
421
|
+
}
|
|
422
|
+
}, [source, setData, keyword, page, filters]);
|
|
423
|
+
useEffect(() => {
|
|
424
|
+
fetchData();
|
|
425
|
+
}, [keyword, page, filters]);
|
|
426
|
+
const action = useRef({
|
|
427
|
+
reload: fetchData
|
|
428
|
+
});
|
|
429
|
+
useEffect(() => {
|
|
430
|
+
action.current = {
|
|
431
|
+
reload: fetchData
|
|
432
|
+
};
|
|
433
|
+
}, [fetchData]);
|
|
434
|
+
useImperativeHandle(ref, () => action.current);
|
|
435
|
+
const customColumns = useMemo(() => {
|
|
436
|
+
return transformColumns(columns).map(_ref3 => {
|
|
437
|
+
let {
|
|
438
|
+
render,
|
|
439
|
+
valueType,
|
|
440
|
+
valueEnum,
|
|
441
|
+
...column
|
|
442
|
+
} = _ref3;
|
|
443
|
+
const customColumn = {
|
|
444
|
+
...column
|
|
445
|
+
};
|
|
446
|
+
if (render) {
|
|
447
|
+
customColumn.render = (value, record, index) => {
|
|
448
|
+
return render({
|
|
449
|
+
value,
|
|
450
|
+
record,
|
|
451
|
+
index,
|
|
452
|
+
action: action.current
|
|
453
|
+
});
|
|
454
|
+
};
|
|
455
|
+
} else if (valueType === 'currency') {
|
|
456
|
+
customColumn.render = value => {
|
|
457
|
+
return jsx(NumberFormat, {
|
|
458
|
+
value: value
|
|
459
|
+
});
|
|
460
|
+
};
|
|
461
|
+
} else if (valueEnum) {
|
|
462
|
+
customColumn.render = value => {
|
|
463
|
+
if (valueEnum[value]) {
|
|
464
|
+
if (valueEnum[value].status) {
|
|
465
|
+
return jsx("span", {
|
|
466
|
+
className: `text-${valueEnum[value].status}`,
|
|
467
|
+
children: valueEnum[value].text
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
return valueEnum[value].text;
|
|
471
|
+
}
|
|
472
|
+
return value;
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
return customColumn;
|
|
476
|
+
});
|
|
477
|
+
}, [columns, transformColumns, action]);
|
|
478
|
+
const children = jsxs(Fragment, {
|
|
479
|
+
children: [jsx(Loader, {
|
|
480
|
+
loading: loading
|
|
481
|
+
}), typeof search === 'object' && jsx(Search, {
|
|
482
|
+
data: filters,
|
|
483
|
+
columns: columns,
|
|
484
|
+
options: search,
|
|
485
|
+
onSearch: data => {
|
|
486
|
+
unstable_batchedUpdates(() => {
|
|
487
|
+
setPage(1);
|
|
488
|
+
setFilters(data);
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
}), toolBarRender !== false && jsxs(Header, {
|
|
492
|
+
children: [jsx(LeftTools, {
|
|
493
|
+
size: 12,
|
|
494
|
+
children: toolBarRender && toolBarRender(action.current)
|
|
495
|
+
}), jsxs(RightTools, {
|
|
496
|
+
size: 12,
|
|
497
|
+
children: [search === true && jsx(LightSearch, {
|
|
498
|
+
keyword: keyword,
|
|
499
|
+
onKeywordChange: value => {
|
|
500
|
+
unstable_batchedUpdates(() => {
|
|
501
|
+
setPage(1);
|
|
502
|
+
setKeyword(value);
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
}), jsx(Action, {
|
|
506
|
+
onClick: action.current.reload,
|
|
507
|
+
children: jsx("i", {
|
|
508
|
+
className: 'bi bi-arrow-repeat'
|
|
509
|
+
})
|
|
510
|
+
})]
|
|
511
|
+
})]
|
|
512
|
+
}), jsx(TableContext.Provider, {
|
|
513
|
+
value: true,
|
|
514
|
+
children: jsx(RcTable, {
|
|
515
|
+
...props,
|
|
516
|
+
expandable: {
|
|
517
|
+
expandIcon: ExpandIcon,
|
|
518
|
+
...expandable
|
|
519
|
+
},
|
|
520
|
+
rowKey: rowKey,
|
|
521
|
+
columns: customColumns,
|
|
522
|
+
components: components,
|
|
523
|
+
data: data
|
|
524
|
+
})
|
|
525
|
+
}), pagination && jsx(CustomPagination, {
|
|
526
|
+
...pagination,
|
|
527
|
+
onChange: setPage
|
|
528
|
+
})]
|
|
529
|
+
});
|
|
530
|
+
if (card) {
|
|
531
|
+
return jsx(Card, {
|
|
532
|
+
children: children
|
|
533
|
+
});
|
|
534
|
+
}
|
|
535
|
+
return children;
|
|
536
|
+
});
|
|
537
|
+
var index = memo(Table);
|
|
538
|
+
const Header = styled.div`
|
|
539
|
+
display: flex;
|
|
540
|
+
justify-content: space-between;
|
|
541
|
+
padding-bottom: 1rem;
|
|
542
|
+
height: 48px;
|
|
543
|
+
border-bottom: 2px solid #212529;
|
|
544
|
+
`;
|
|
545
|
+
const RightTools = styled(Space)`
|
|
546
|
+
|
|
547
|
+
`;
|
|
548
|
+
const LeftTools = styled(Space)`
|
|
549
|
+
|
|
550
|
+
`;
|
|
551
|
+
const Action = styled.span`
|
|
552
|
+
cursor: pointer;
|
|
553
|
+
font-size: 20px;
|
|
554
|
+
line-height: 1;
|
|
555
|
+
|
|
556
|
+
&:hover {
|
|
557
|
+
color: var(--bs-primary);
|
|
558
|
+
}
|
|
559
|
+
`;
|
|
560
|
+
|
|
561
|
+
export { index as default };
|
|
562
|
+
//# sourceMappingURL=index-1d379f3a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-1d379f3a.js","sources":["../src/components/lazy/table/use-selection.tsx","../src/images/plus_square.svg","../src/images/minus_square.svg","../src/components/lazy/table/search.tsx","../src/components/lazy/table/index.tsx"],"sourcesContent":["import { Columns, TableProps, TableRowSelection } from './index';\r\nimport { InputHTMLAttributes, Key, useCallback, useEffect, useRef, useState } from 'react';\r\n\r\nconst Checkbox = function({\r\n indeterminate = false,\r\n ...props\r\n}: InputHTMLAttributes<HTMLInputElement> & { indeterminate?: boolean }) {\r\n\r\n const ref = useRef<HTMLInputElement>(null);\r\n\r\n useEffect(() => {\r\n if (ref.current) {\r\n ref.current.indeterminate = indeterminate;\r\n }\r\n }, [indeterminate]);\r\n\r\n return <input\r\n ref={ref}\r\n {...props}\r\n className='form-check-input'\r\n type='checkbox'\r\n />;\r\n};\r\n\r\nexport default function useSelection<T = any>(\r\n rowSelection: TableRowSelection<T> | undefined,\r\n rowKey: Required<TableProps<T>>['rowKey'],\r\n data: T[]\r\n): [(columns: Columns<T>) => Columns<T>, (keys: Key[]) => void] {\r\n const [keys, setKeys] = useState(() => new Set(rowSelection?.selectedRowKeys || []));\r\n\r\n const getRowKey = (record: T) => {\r\n if (typeof rowKey === 'string') {\r\n // @ts-ignore\r\n return record[rowKey];\r\n } else {\r\n return rowKey(record);\r\n }\r\n };\r\n\r\n const getRecordByKey = (key: Key) => {\r\n return data.find((record) => {\r\n return getRowKey(record) === key;\r\n })!;\r\n };\r\n\r\n const setSelectedKeys = useCallback((keys: Set<Key> | Key[]) => {\r\n if (!(keys instanceof Set)) {\r\n keys = new Set(keys);\r\n }\r\n\r\n setKeys(keys);\r\n const changedKeys = Array.from(keys);\r\n\r\n const records = changedKeys.map(function(key) {\r\n return getRecordByKey(key);\r\n });\r\n\r\n if (rowSelection?.onChange) {\r\n rowSelection?.onChange(changedKeys, records);\r\n }\r\n }, [getRecordByKey]);\r\n\r\n const transformColumns = useCallback((columns: Columns): Columns => {\r\n if (!rowSelection) {\r\n return columns;\r\n }\r\n\r\n const recordKeys = data.map(getRowKey);\r\n\r\n const checkedCurrentAll = recordKeys.every(function(key) {\r\n return keys.has(key);\r\n });\r\n\r\n const checkedCurrentSome = recordKeys.some(function(key) {\r\n return keys.has(key);\r\n });\r\n\r\n return [{\r\n key: 'selection',\r\n title: <Checkbox\r\n checked={checkedCurrentAll && data.length > 0}\r\n indeterminate={!checkedCurrentAll && checkedCurrentSome}\r\n onChange={() => {\r\n if (checkedCurrentAll) {\r\n recordKeys.forEach(function(key) {\r\n keys.delete(key);\r\n });\r\n } else {\r\n recordKeys.forEach(function(key) {\r\n keys.add(key);\r\n });\r\n }\r\n setSelectedKeys(new Set(keys));\r\n }}\r\n />,\r\n width: 30,\r\n align: 'center',\r\n render({ record }) {\r\n const key = getRowKey(record);\r\n const checked = keys.has(key);\r\n return <Checkbox\r\n checked={checked}\r\n onChange={() => {\r\n if (checked) {\r\n keys.delete(key);\r\n } else {\r\n keys.add(key);\r\n }\r\n setSelectedKeys(new Set(keys));\r\n }}\r\n />;\r\n }\r\n }, ...columns];\r\n }, [data, rowSelection, keys]);\r\n\r\n return [transformColumns, setSelectedKeys];\r\n}\r\n","var img = \"data:image/svg+xml,%3csvg t='1681378941268' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='11434' width='16' height='16' fill='currentColor'%3e %3cpath d='M252.068571 906.496h520.283429c89.581714 0 134.144-44.562286 134.144-132.845714V250.331429c0-88.283429-44.562286-132.845714-134.144-132.845715H252.068571c-89.142857 0-134.582857 44.141714-134.582857 132.845715V773.668571c0 88.704 45.44 132.845714 134.582857 132.845715z m1.28-68.992c-42.843429 0-66.852571-22.710857-66.852571-67.291429V253.805714c0-44.580571 24.009143-67.291429 66.852571-67.291428h517.723429c42.422857 0 66.432 22.710857 66.432 67.291428V770.194286c0 44.580571-24.009143 67.291429-66.432 67.291428z m258.432-123.008c22.710857 0 36.425143-15.853714 36.425143-40.704v-126.427429h134.144c24.009143 0 40.722286-12.873143 40.722286-35.584 0-23.131429-15.853714-36.425143-40.722286-36.425142H548.205714v-134.582858c0-24.850286-13.714286-40.704-36.425143-40.704s-35.565714 16.713143-35.565714 40.722286v134.582857H342.491429c-24.850286 0-41.142857 13.275429-41.142858 36.406857 0 22.710857 17.152 35.584 41.142858 35.584h133.723428v126.427429c0 23.990857 12.854857 40.704 35.565714 40.704z' p-id='11435'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3csvg t='1681378996359' viewBox='0 0 1024 1024' version='1.1' xmlns='http://www.w3.org/2000/svg' p-id='12821' width='16' height='16' fill='currentColor'%3e %3cpath d='M252.068571 906.496h520.283429c89.581714 0 134.144-44.562286 134.144-132.845714V250.331429c0-88.283429-44.562286-132.845714-134.144-132.845715H252.068571c-89.142857 0-134.582857 44.141714-134.582857 132.845715V773.668571c0 88.704 45.44 132.845714 134.582857 132.845715z m1.28-68.992c-42.843429 0-66.852571-22.710857-66.852571-67.291429V253.805714c0-44.580571 24.009143-67.291429 66.852571-67.291428h517.723429c42.422857 0 66.432 22.710857 66.432 67.291428V770.194286c0 44.580571-24.009143 67.291429-66.432 67.291428z m86.582858-289.718857h344.576c23.990857 0 40.704-12.854857 40.704-35.565714 0-23.149714-15.433143-36.425143-40.704-36.425143H339.931429c-24.868571 0-40.722286 13.275429-40.722286 36.425143 0 22.710857 16.713143 35.565714 40.722286 35.565714z' p-id='12822'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","import { ChangeEvent, useCallback, useEffect, useState } from 'react';\r\nimport useDebounce from '../../../hooks/use-debounce';\r\nimport styled from 'styled-components';\r\nimport Button from '../../button';\r\nimport Form from '../form';\r\nimport { FormControl } from 'react-bootstrap';\r\nimport type { Columns } from './index';\r\nimport { Schema, UiSchema } from '@topthink/json-form';\r\n\r\nexport type SearchOptions = {\r\n fields: string[];\r\n extraFields?: Record<string, string>;\r\n ui?: Record<string, UiSchema>;\r\n order?: string[];\r\n};\r\n\r\ninterface SearchProps {\r\n data: Record<string, string>;\r\n options: SearchOptions;\r\n columns: Columns;\r\n onSearch: (params: Record<string, any>) => void;\r\n}\r\n\r\nexport default function Search({ data, options, columns, onSearch }: SearchProps) {\r\n\r\n const [key, setKey] = useState(0);\r\n\r\n const uiSchema: UiSchema = {\r\n 'ui:col': 10,\r\n 'ui:order': options.order\r\n };\r\n\r\n const properties: Schema['properties'] = {};\r\n\r\n options.fields.forEach(field => {\r\n const column = columns.find(column => column.dataIndex === field);\r\n\r\n if (column) {\r\n const title = column.title;\r\n if (typeof title === 'string') {\r\n uiSchema[field] = {\r\n 'ui:col': 4,\r\n 'ui:labelCol': 3,\r\n 'ui:placeholder': '请输入',\r\n ...options.ui?.[field]\r\n };\r\n\r\n if (column.valueEnum) {\r\n const valueEnum = column.valueEnum;\r\n\r\n uiSchema[field]['ui:placeholder'] = '请选择';\r\n\r\n return properties[field] = {\r\n title,\r\n type: 'string',\r\n enum: Object.keys(valueEnum).flatMap(key => {\r\n const text = valueEnum[key].text;\r\n if (typeof text === 'string') {\r\n return [key];\r\n }\r\n return [];\r\n }),\r\n enumNames: Object.keys(valueEnum).flatMap(key => {\r\n const text = valueEnum[key].text;\r\n if (typeof text === 'string') {\r\n return [text];\r\n }\r\n return [];\r\n }),\r\n };\r\n }\r\n\r\n return properties[field] = {\r\n title,\r\n type: 'string',\r\n };\r\n }\r\n }\r\n });\r\n\r\n if (options.extraFields) {\r\n Object.entries(options.extraFields).forEach(([field, title]) => {\r\n uiSchema[field] = {\r\n 'ui:col': 4,\r\n 'ui:labelCol': 3,\r\n 'ui:placeholder': '请输入',\r\n ...options.ui?.[field]\r\n };\r\n properties[field] = {\r\n title,\r\n type: 'string',\r\n };\r\n });\r\n }\r\n\r\n const schema: Schema = {\r\n type: 'object',\r\n properties\r\n };\r\n\r\n const onSubmit = useCallback(({ formData }) => {\r\n onSearch(formData);\r\n }, [onSearch]);\r\n\r\n const onReset = useCallback(() => {\r\n setKey(key => key + 1);\r\n onSearch({});\r\n }, []);\r\n\r\n return <Container key={key}>\r\n <Form\r\n formContext={{ layout: 'horizontal' }}\r\n schema={schema}\r\n uiSchema={uiSchema}\r\n onSubmit={onSubmit}\r\n formData={data}\r\n >\r\n <div className='col-2 ms-auto mt-auto'>\r\n <div className='justify-content-end d-flex gap-2 '>\r\n <Button className={'px-4'} onClick={onReset} variant='secondary'>重置</Button>\r\n <Button className={'px-4'} type='submit' variant='primary'>查询</Button>\r\n </div>\r\n </div>\r\n </Form>\r\n </Container>;\r\n}\r\n\r\nconst Container = styled.div`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\ninterface Props {\r\n keyword: string;\r\n onKeywordChange: (value: string) => void;\r\n}\r\n\r\nexport function LightSearch({ keyword, onKeywordChange }: Props) {\r\n\r\n const [value, setValue] = useState(keyword);\r\n\r\n const debouncedOnKeywordChange = useDebounce(onKeywordChange, 500);\r\n\r\n useEffect(() => {\r\n setValue(keyword);\r\n }, [keyword]);\r\n\r\n const onChange = useCallback((e: ChangeEvent<HTMLInputElement>) => {\r\n setValue(e.target.value);\r\n debouncedOnKeywordChange(e.target.value);\r\n }, [debouncedOnKeywordChange, setValue]);\r\n\r\n return <FormControl value={value} onChange={onChange} type={'search'} placeholder={'Search...'} />;\r\n}\r\n","import RcTable, { TableProps as RcTableProps } from 'rc-table';\r\nimport { unstable_batchedUpdates } from 'react-dom';\r\nimport { ColumnType as BsColumnType, RenderedCell, RenderExpandIconProps } from 'rc-table/es/interface';\r\nimport { Table as BsTable } from 'react-bootstrap';\r\nimport { useUrlSearchParams } from 'use-url-search-params';\r\nimport {\r\n forwardRef,\r\n ForwardRefExoticComponent,\r\n Key,\r\n memo,\r\n PropsWithChildren,\r\n PropsWithoutRef,\r\n ReactNode,\r\n RefAttributes,\r\n useCallback,\r\n useEffect,\r\n useImperativeHandle,\r\n useMemo,\r\n useRef,\r\n useState\r\n} from 'react';\r\nimport Pagination from '../../pagination';\r\nimport styled from 'styled-components';\r\nimport request from '../../../request';\r\nimport Card from '../../card';\r\nimport Loader from '../../loader';\r\nimport Space from '../../space';\r\nimport useSelection from './use-selection';\r\nimport { PaginationType } from '../../../utils/types';\r\nimport { ReactComponent as PlusIcon } from '../../../images/plus_square.svg';\r\nimport { ReactComponent as MinusIcon } from '../../../images/minus_square.svg';\r\nimport useControllableState from '../../../hooks/use-controllable-state';\r\nimport Search, { LightSearch, SearchOptions } from './search';\r\nimport NumberFormat from '../../number-format';\r\nimport { TableContext } from './context';\r\n\r\nexport interface TableType {\r\n reload: () => void;\r\n}\r\n\r\ninterface ColumnType<RecordType> extends BsColumnType<RecordType> {\r\n render?: (data: {\r\n value: any,\r\n record: RecordType,\r\n index: number,\r\n action: TableType\r\n }) => ReactNode | RenderedCell<RecordType>;\r\n valueType?: 'currency';\r\n valueEnum?: Record<number | string, {\r\n text: ReactNode;\r\n status?: string;\r\n }>;\r\n}\r\n\r\nexport type Columns<RecordType = any> = ColumnType<RecordType>[]\r\n\r\nconst CustomTHead = styled.thead`\r\n th {\r\n padding: 0.5rem 0.5rem;\r\n border-bottom-width: 1px;\r\n border-color: var(--bs-border-color);\r\n }\r\n`;\r\n\r\nconst components: RcTableProps['components'] = {\r\n table: (props) => {\r\n return <BsTable {...props} className='mb-0 align-middle table-hover' />;\r\n },\r\n header: {\r\n wrapper(props) {\r\n return <CustomTHead {...props} />;\r\n }\r\n }\r\n};\r\n\r\nconst ExpandIconContainer = styled.a`\r\n cursor: pointer;\r\n width: 28px;\r\n height: 28px;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n vertical-align: middle;\r\n`;\r\n\r\nconst ExpandIcon = function <RecordType>({\r\n record,\r\n expanded,\r\n expandable,\r\n onExpand\r\n}: RenderExpandIconProps<RecordType>) {\r\n if (!expandable) return <ExpandIconContainer />;\r\n return <ExpandIconContainer onClick={e => onExpand(record, e)}>\r\n {expanded ? <MinusIcon /> : <PlusIcon />}\r\n </ExpandIconContainer>;\r\n};\r\n\r\nconst CustomPagination = styled(Pagination)`\r\n margin-bottom: 0;\r\n justify-content: flex-end;\r\n margin-top: 1rem;\r\n`;\r\n\r\nfunction isPagination<T>(data: any): data is PaginationType<T> {\r\n return 'current_page' in data;\r\n}\r\n\r\nexport interface TableRowSelection<RecordType = any> {\r\n selectedRowKeys?: Key[];\r\n onChange?: (selectedRowKeys: Key[], selectedRows: RecordType[]) => void;\r\n}\r\n\r\nexport interface TableProps<RecordType = any> extends Omit<RcTableProps<RecordType>, 'children' | 'columns'> {\r\n source: string | ((params: Params) => Promise<RecordType>);\r\n paginate?: boolean;\r\n columns: Columns<RecordType>;\r\n toolBarRender?: ((action: TableType) => ReactNode) | false;\r\n search?: boolean | SearchOptions;\r\n rowSelection?: TableRowSelection<RecordType>;\r\n card?: boolean;\r\n sync?: boolean;\r\n}\r\n\r\ntype Params = {\r\n page?: number;\r\n sortField?: string;\r\n sortOrder?: number;\r\n q?: string;\r\n [key: string]: any;\r\n};\r\n\r\ntype CustomTableType<T = any> = ForwardRefExoticComponent<PropsWithoutRef<PropsWithChildren<TableProps<T>>>\r\n & RefAttributes<TableType>>\r\n\r\nconst Table: CustomTableType = forwardRef((\r\n {\r\n source,\r\n rowKey = 'id',\r\n paginate = true,\r\n toolBarRender,\r\n columns = [],\r\n search,\r\n rowSelection,\r\n card = true,\r\n expandable = {},\r\n sync = false,\r\n ...props\r\n },\r\n ref\r\n) => {\r\n const [data, setData] = useState<any[]>([]);\r\n const [pagination, setPagination] = useState(paginate ? { total: 0, current: 1, pageSize: 10 } : null);\r\n const [loading, setLoading] = useState(true);\r\n\r\n const [params, setParams] = useUrlSearchParams({});\r\n\r\n //多选\r\n const [transformColumns, setSelectionRowKeys] = useSelection(rowSelection, rowKey, data);\r\n\r\n const [filters, setFilters] = useControllableState<Record<string, string>>({\r\n value: sync ? (params as Record<string, string> || {}) : undefined,\r\n defaultValue: {},\r\n onChange: (value) => {\r\n if (sync) {\r\n setParams(value);\r\n }\r\n }\r\n });\r\n\r\n const [keyword, setKeyword] = useControllableState<string>({\r\n value: sync ? (params.q as string || '') : undefined,\r\n defaultValue: '',\r\n onChange: (value) => {\r\n if (sync) {\r\n setParams({ q: value || undefined });\r\n }\r\n }\r\n });\r\n\r\n const [page, setPage] = useControllableState<number>({\r\n value: sync ? (params.page as number || 1) : undefined,\r\n defaultValue: 1,\r\n onChange: (value) => {\r\n if (sync) {\r\n setParams({ page: value || undefined });\r\n }\r\n }\r\n });\r\n\r\n const fetchData = useCallback(async () => {\r\n setLoading(true);\r\n setSelectionRowKeys([]);\r\n try {\r\n let result;\r\n const params: Params = {\r\n ...filters,\r\n q: keyword,\r\n page: page > 1 ? page : undefined,\r\n };\r\n\r\n if (typeof source === 'string') {\r\n result = await request({\r\n url: source,\r\n params,\r\n });\r\n } else {\r\n result = await source(params);\r\n }\r\n\r\n if (paginate && isPagination<any>(result)) {\r\n setPagination({\r\n total: result.total,\r\n current: result.current_page,\r\n pageSize: result.per_page\r\n });\r\n result = result.data;\r\n }\r\n setData(result);\r\n } catch (e) {\r\n\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [source, setData, keyword, page, filters]);\r\n\r\n useEffect(() => {\r\n fetchData();\r\n }, [keyword, page, filters]);\r\n\r\n const action = useRef<TableType>({\r\n reload: fetchData\r\n });\r\n\r\n useEffect(() => {\r\n action.current = {\r\n reload: fetchData\r\n };\r\n }, [fetchData]);\r\n\r\n useImperativeHandle(ref, () => action.current);\r\n\r\n const customColumns = useMemo(() => {\r\n return transformColumns(columns).map(({ render, valueType, valueEnum, ...column }) => {\r\n const customColumn: BsColumnType<any> = { ...column };\r\n\r\n if (render) {\r\n customColumn.render = (value, record, index) => {\r\n return render({ value, record, index, action: action.current });\r\n };\r\n } else if (valueType === 'currency') {\r\n customColumn.render = (value) => {\r\n return <NumberFormat value={value} />;\r\n };\r\n } else if (valueEnum) {\r\n customColumn.render = (value) => {\r\n if (valueEnum[value]) {\r\n if (valueEnum[value].status) {\r\n return <span className={`text-${valueEnum[value].status}`}>{valueEnum[value].text}</span>;\r\n }\r\n return valueEnum[value].text;\r\n }\r\n return value;\r\n };\r\n }\r\n return customColumn;\r\n });\r\n }, [columns, transformColumns, action]);\r\n\r\n const children = <>\r\n <Loader loading={loading} />\r\n {typeof search === 'object' && <Search\r\n data={filters}\r\n columns={columns}\r\n options={search}\r\n onSearch={(data) => {\r\n unstable_batchedUpdates(() => {\r\n setPage(1);\r\n setFilters(data);\r\n });\r\n }}\r\n />}\r\n {toolBarRender !== false && <Header>\r\n <LeftTools size={12}>\r\n {toolBarRender && toolBarRender(action.current)}\r\n </LeftTools>\r\n <RightTools size={12}>\r\n {search === true && <LightSearch keyword={keyword} onKeywordChange={(value) => {\r\n unstable_batchedUpdates(() => {\r\n setPage(1);\r\n setKeyword(value);\r\n });\r\n }} />}\r\n <Action onClick={action.current.reload}><i className='bi bi-arrow-repeat' /></Action>\r\n </RightTools>\r\n </Header>}\r\n <TableContext.Provider value={true}>\r\n <RcTable {...props} expandable={{ expandIcon: ExpandIcon, ...expandable }} rowKey={rowKey} columns={customColumns} components={components} data={data} />\r\n </TableContext.Provider>\r\n {pagination && <CustomPagination {...pagination} onChange={setPage} />}\r\n </>;\r\n\r\n if (card) {\r\n return <Card>\r\n {children}\r\n </Card>;\r\n }\r\n return children;\r\n});\r\n\r\nexport default memo(Table) as CustomTableType;\r\n\r\nconst Header = styled.div`\r\n display: flex;\r\n justify-content: space-between;\r\n padding-bottom: 1rem;\r\n height: 48px;\r\n border-bottom: 2px solid #212529;\r\n`;\r\n\r\nconst RightTools = styled(Space)`\r\n\r\n`;\r\nconst LeftTools = styled(Space)`\r\n\r\n`;\r\n\r\nconst Action = styled.span`\r\n cursor: pointer;\r\n font-size: 20px;\r\n line-height: 1;\r\n\r\n &:hover {\r\n color: var(--bs-primary);\r\n }\r\n`;\r\n"],"names":["Checkbox","indeterminate","props","ref","useRef","useEffect","current","_jsx","className","type","useSelection","rowSelection","rowKey","data","keys","setKeys","useState","Set","selectedRowKeys","getRowKey","record","getRecordByKey","key","find","setSelectedKeys","useCallback","changedKeys","Array","from","records","map","onChange","transformColumns","columns","recordKeys","checkedCurrentAll","every","has","checkedCurrentSome","some","title","checked","length","forEach","delete","add","width","align","render","_path","_extends","Search","options","onSearch","setKey","uiSchema","order","properties","fields","field","column","dataIndex","ui","valueEnum","enum","Object","flatMap","text","enumNames","extraFields","entries","schema","onSubmit","formData","onReset","Container","children","Form","formContext","layout","_jsxs","Button","onClick","variant","styled","div","LightSearch","keyword","onKeywordChange","value","setValue","debouncedOnKeywordChange","useDebounce","e","target","FormControl","placeholder","CustomTHead","thead","components","table","BsTable","header","wrapper","ExpandIconContainer","a","ExpandIcon","expanded","expandable","onExpand","MinusIcon","PlusIcon","CustomPagination","Pagination","isPagination","Table","forwardRef","source","paginate","toolBarRender","search","card","sync","setData","pagination","setPagination","total","pageSize","loading","setLoading","params","setParams","useUrlSearchParams","setSelectionRowKeys","filters","setFilters","useControllableState","undefined","defaultValue","setKeyword","q","page","setPage","fetchData","result","request","url","current_page","per_page","action","reload","useImperativeHandle","customColumns","useMemo","valueType","customColumn","index","NumberFormat","status","_Fragment","Loader","unstable_batchedUpdates","Header","LeftTools","size","RightTools","Action","TableContext","Provider","RcTable","expandIcon","Card","memo","Space","span"],"mappings":"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"}
|