@topthink/components 1.0.55 → 1.0.57

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.
@@ -0,0 +1,560 @@
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-9869b1c6.js';
9
+ import styled from 'styled-components';
10
+ import Form from './form-8925a750.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 'rc-notification';
18
+ import 'classnames';
19
+ import 'react-async-hook';
20
+ import '@babel/runtime/helpers/defineProperty';
21
+ import '@topthink/json-form';
22
+
23
+ const Checkbox = function (_ref) {
24
+ let {
25
+ indeterminate = false,
26
+ ...props
27
+ } = _ref;
28
+ const ref = useRef(null);
29
+ useEffect(() => {
30
+ if (ref.current) {
31
+ ref.current.indeterminate = indeterminate;
32
+ }
33
+ }, [indeterminate]);
34
+ return jsx("input", {
35
+ ref: ref,
36
+ ...props,
37
+ className: 'form-check-input',
38
+ type: 'checkbox'
39
+ });
40
+ };
41
+ function useSelection(rowSelection, rowKey, data) {
42
+ const [keys, setKeys] = useState(() => new Set(rowSelection?.selectedRowKeys || []));
43
+ const getRowKey = record => {
44
+ if (typeof rowKey === 'string') {
45
+ // @ts-ignore
46
+ return record[rowKey];
47
+ } else {
48
+ return rowKey(record);
49
+ }
50
+ };
51
+ const getRecordByKey = key => {
52
+ return data.find(record => {
53
+ return getRowKey(record) === key;
54
+ });
55
+ };
56
+ const setSelectedKeys = useCallback(keys => {
57
+ if (!(keys instanceof Set)) {
58
+ keys = new Set(keys);
59
+ }
60
+ setKeys(keys);
61
+ const changedKeys = Array.from(keys);
62
+ const records = changedKeys.map(function (key) {
63
+ return getRecordByKey(key);
64
+ });
65
+ if (rowSelection?.onChange) {
66
+ rowSelection?.onChange(changedKeys, records);
67
+ }
68
+ }, [getRecordByKey]);
69
+ const transformColumns = useCallback(columns => {
70
+ if (!rowSelection) {
71
+ return columns;
72
+ }
73
+ const recordKeys = data.map(getRowKey);
74
+ const checkedCurrentAll = recordKeys.every(function (key) {
75
+ return keys.has(key);
76
+ });
77
+ const checkedCurrentSome = recordKeys.some(function (key) {
78
+ return keys.has(key);
79
+ });
80
+ return [{
81
+ key: 'selection',
82
+ title: jsx(Checkbox, {
83
+ checked: checkedCurrentAll && data.length > 0,
84
+ indeterminate: !checkedCurrentAll && checkedCurrentSome,
85
+ onChange: () => {
86
+ if (checkedCurrentAll) {
87
+ recordKeys.forEach(function (key) {
88
+ keys.delete(key);
89
+ });
90
+ } else {
91
+ recordKeys.forEach(function (key) {
92
+ keys.add(key);
93
+ });
94
+ }
95
+ setSelectedKeys(new Set(keys));
96
+ }
97
+ }),
98
+ width: 30,
99
+ align: 'center',
100
+ render(_ref2) {
101
+ let {
102
+ record
103
+ } = _ref2;
104
+ const key = getRowKey(record);
105
+ const checked = keys.has(key);
106
+ return jsx(Checkbox, {
107
+ checked: checked,
108
+ onChange: () => {
109
+ if (checked) {
110
+ keys.delete(key);
111
+ } else {
112
+ keys.add(key);
113
+ }
114
+ setSelectedKeys(new Set(keys));
115
+ }
116
+ });
117
+ }
118
+ }, ...columns];
119
+ }, [data, rowSelection, keys]);
120
+ return [transformColumns, setSelectedKeys];
121
+ }
122
+
123
+ var _path$1;
124
+ 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); }
125
+ const SvgPlusSquare = props => /*#__PURE__*/React.createElement("svg", _extends$1({
126
+ viewBox: "0 0 1024 1024",
127
+ xmlns: "http://www.w3.org/2000/svg",
128
+ width: 16,
129
+ height: 16,
130
+ fill: "currentColor"
131
+ }, props), _path$1 || (_path$1 = /*#__PURE__*/React.createElement("path", {
132
+ 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"
133
+ })));
134
+
135
+ var _path;
136
+ 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); }
137
+ const SvgMinusSquare = props => /*#__PURE__*/React.createElement("svg", _extends({
138
+ viewBox: "0 0 1024 1024",
139
+ xmlns: "http://www.w3.org/2000/svg",
140
+ width: 16,
141
+ height: 16,
142
+ fill: "currentColor"
143
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
144
+ 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"
145
+ })));
146
+
147
+ function Search(_ref) {
148
+ let {
149
+ data,
150
+ options,
151
+ columns,
152
+ onSearch
153
+ } = _ref;
154
+ const [key, setKey] = useState(0);
155
+ const uiSchema = {
156
+ 'ui:col': 10,
157
+ 'ui:order': options.order
158
+ };
159
+ const properties = {};
160
+ options.fields.forEach(field => {
161
+ const column = columns.find(column => column.dataIndex === field);
162
+ if (column) {
163
+ const title = column.title;
164
+ if (typeof title === 'string') {
165
+ uiSchema[field] = {
166
+ 'ui:col': 4,
167
+ 'ui:labelCol': 3,
168
+ 'ui:placeholder': '请输入',
169
+ ...options.ui?.[field]
170
+ };
171
+ if (column.valueEnum) {
172
+ const valueEnum = column.valueEnum;
173
+ uiSchema[field]['ui:placeholder'] = '请选择';
174
+ return properties[field] = {
175
+ title,
176
+ type: 'string',
177
+ enum: Object.keys(valueEnum).flatMap(key => {
178
+ const text = valueEnum[key].text;
179
+ if (typeof text === 'string') {
180
+ return [key];
181
+ }
182
+ return [];
183
+ }),
184
+ enumNames: Object.keys(valueEnum).flatMap(key => {
185
+ const text = valueEnum[key].text;
186
+ if (typeof text === 'string') {
187
+ return [text];
188
+ }
189
+ return [];
190
+ })
191
+ };
192
+ }
193
+ return properties[field] = {
194
+ title,
195
+ type: 'string'
196
+ };
197
+ }
198
+ }
199
+ });
200
+ if (options.extraFields) {
201
+ Object.entries(options.extraFields).forEach(_ref2 => {
202
+ let [field, title] = _ref2;
203
+ uiSchema[field] = {
204
+ 'ui:col': 4,
205
+ 'ui:labelCol': 3,
206
+ 'ui:placeholder': '请输入',
207
+ ...options.ui?.[field]
208
+ };
209
+ properties[field] = {
210
+ title,
211
+ type: 'string'
212
+ };
213
+ });
214
+ }
215
+ const schema = {
216
+ type: 'object',
217
+ properties
218
+ };
219
+ const onSubmit = useCallback(_ref3 => {
220
+ let {
221
+ formData
222
+ } = _ref3;
223
+ onSearch(formData);
224
+ }, [onSearch]);
225
+ const onReset = useCallback(() => {
226
+ setKey(key => key + 1);
227
+ onSearch({});
228
+ }, []);
229
+ return jsx(Container, {
230
+ children: jsx(Form, {
231
+ formContext: {
232
+ layout: 'horizontal'
233
+ },
234
+ schema: schema,
235
+ uiSchema: uiSchema,
236
+ onSubmit: onSubmit,
237
+ formData: data,
238
+ children: jsx("div", {
239
+ className: 'col-2 ms-auto mt-auto',
240
+ children: jsxs("div", {
241
+ className: 'justify-content-end d-flex gap-2 ',
242
+ children: [jsx(Button, {
243
+ className: 'px-4',
244
+ onClick: onReset,
245
+ variant: 'secondary',
246
+ children: "\u91CD\u7F6E"
247
+ }), jsx(Button, {
248
+ className: 'px-4',
249
+ type: 'submit',
250
+ variant: 'primary',
251
+ children: "\u67E5\u8BE2"
252
+ })]
253
+ })
254
+ })
255
+ })
256
+ }, key);
257
+ }
258
+ const Container = styled.div`
259
+ margin-bottom: 1rem;
260
+ `;
261
+ function LightSearch(_ref4) {
262
+ let {
263
+ keyword,
264
+ onKeywordChange
265
+ } = _ref4;
266
+ const [value, setValue] = useState(keyword);
267
+ const debouncedOnKeywordChange = useDebounce(onKeywordChange, 500);
268
+ useEffect(() => {
269
+ setValue(keyword);
270
+ }, [keyword]);
271
+ const onChange = useCallback(e => {
272
+ setValue(e.target.value);
273
+ debouncedOnKeywordChange(e.target.value);
274
+ }, [debouncedOnKeywordChange, setValue]);
275
+ return jsx(FormControl, {
276
+ value: value,
277
+ onChange: onChange,
278
+ type: 'search',
279
+ placeholder: 'Search...'
280
+ });
281
+ }
282
+
283
+ const CustomTHead = styled.thead`
284
+ th {
285
+ padding: 0.5rem 0.5rem;
286
+ border-bottom-width: 1px;
287
+ border-color: var(--bs-border-color);
288
+ }
289
+ `;
290
+ const components = {
291
+ table: props => {
292
+ return jsx(Table$1, {
293
+ ...props,
294
+ className: 'mb-0 align-middle table-hover'
295
+ });
296
+ },
297
+ header: {
298
+ wrapper(props) {
299
+ return jsx(CustomTHead, {
300
+ ...props
301
+ });
302
+ }
303
+ }
304
+ };
305
+ const ExpandIconContainer = styled.a`
306
+ cursor: pointer;
307
+ width: 28px;
308
+ height: 28px;
309
+ display: inline-flex;
310
+ align-items: center;
311
+ justify-content: center;
312
+ vertical-align: middle;
313
+ `;
314
+ const ExpandIcon = function (_ref) {
315
+ let {
316
+ record,
317
+ expanded,
318
+ expandable,
319
+ onExpand
320
+ } = _ref;
321
+ if (!expandable) return jsx(ExpandIconContainer, {});
322
+ return jsx(ExpandIconContainer, {
323
+ onClick: e => onExpand(record, e),
324
+ children: expanded ? jsx(SvgMinusSquare, {}) : jsx(SvgPlusSquare, {})
325
+ });
326
+ };
327
+ const CustomPagination = styled(Pagination)`
328
+ margin-bottom: 0;
329
+ justify-content: flex-end;
330
+ margin-top: 1rem;
331
+ `;
332
+ function isPagination(data) {
333
+ return 'current_page' in data;
334
+ }
335
+ const Table = forwardRef((_ref2, ref) => {
336
+ let {
337
+ source,
338
+ rowKey = 'id',
339
+ paginate = true,
340
+ toolBarRender,
341
+ columns = [],
342
+ search,
343
+ rowSelection,
344
+ card = true,
345
+ expandable = {},
346
+ sync = false,
347
+ ...props
348
+ } = _ref2;
349
+ const [data, setData] = useState([]);
350
+ const [pagination, setPagination] = useState(paginate ? {
351
+ total: 0,
352
+ current: 1,
353
+ pageSize: 10
354
+ } : null);
355
+ const [loading, setLoading] = useState(true);
356
+ const [params, setParams] = useUrlSearchParams({});
357
+ //多选
358
+ const [transformColumns, setSelectionRowKeys] = useSelection(rowSelection, rowKey, data);
359
+ const [filters, setFilters] = useControllableState({
360
+ value: sync ? params || {} : undefined,
361
+ defaultValue: {},
362
+ onChange: value => {
363
+ if (sync) {
364
+ setParams(value);
365
+ }
366
+ }
367
+ });
368
+ const [keyword, setKeyword] = useControllableState({
369
+ value: sync ? params.q || '' : undefined,
370
+ defaultValue: '',
371
+ onChange: value => {
372
+ if (sync) {
373
+ setParams({
374
+ q: value || undefined
375
+ });
376
+ }
377
+ }
378
+ });
379
+ const [page, setPage] = useControllableState({
380
+ value: sync ? params.page || 1 : undefined,
381
+ defaultValue: 1,
382
+ onChange: value => {
383
+ if (sync) {
384
+ setParams({
385
+ page: value || undefined
386
+ });
387
+ }
388
+ }
389
+ });
390
+ const fetchData = useCallback(async () => {
391
+ setLoading(true);
392
+ setSelectionRowKeys([]);
393
+ try {
394
+ let result;
395
+ const params = {
396
+ ...filters,
397
+ q: keyword,
398
+ page: page > 1 ? page : undefined
399
+ };
400
+ if (typeof source === 'string') {
401
+ result = await request({
402
+ url: source,
403
+ params
404
+ });
405
+ } else {
406
+ result = await source(params);
407
+ }
408
+ if (paginate && isPagination(result)) {
409
+ setPagination({
410
+ total: result.total,
411
+ current: result.current_page,
412
+ pageSize: result.per_page
413
+ });
414
+ result = result.data;
415
+ }
416
+ setData(result);
417
+ } catch (e) {} finally {
418
+ setLoading(false);
419
+ }
420
+ }, [source, setData, keyword, page, filters]);
421
+ useEffect(() => {
422
+ fetchData();
423
+ }, [keyword, page, filters]);
424
+ const action = useRef({
425
+ reload: fetchData
426
+ });
427
+ useEffect(() => {
428
+ action.current = {
429
+ reload: fetchData
430
+ };
431
+ }, [fetchData]);
432
+ useImperativeHandle(ref, () => action.current);
433
+ const customColumns = useMemo(() => {
434
+ return transformColumns(columns).map(_ref3 => {
435
+ let {
436
+ render,
437
+ valueType,
438
+ valueEnum,
439
+ ...column
440
+ } = _ref3;
441
+ const customColumn = {
442
+ ...column
443
+ };
444
+ if (render) {
445
+ customColumn.render = (value, record, index) => {
446
+ return render({
447
+ value,
448
+ record,
449
+ index,
450
+ action: action.current
451
+ });
452
+ };
453
+ } else if (valueType === 'currency') {
454
+ customColumn.render = value => {
455
+ return jsx(NumberFormat, {
456
+ value: value
457
+ });
458
+ };
459
+ } else if (valueEnum) {
460
+ customColumn.render = value => {
461
+ if (valueEnum[value]) {
462
+ if (valueEnum[value].status) {
463
+ return jsx("span", {
464
+ className: `text-${valueEnum[value].status}`,
465
+ children: valueEnum[value].text
466
+ });
467
+ }
468
+ return valueEnum[value].text;
469
+ }
470
+ return value;
471
+ };
472
+ }
473
+ return customColumn;
474
+ });
475
+ }, [columns, transformColumns, action]);
476
+ const children = jsxs(Fragment, {
477
+ children: [jsx(Loader, {
478
+ loading: loading
479
+ }), typeof search === 'object' && jsx(Search, {
480
+ data: filters,
481
+ columns: columns,
482
+ options: search,
483
+ onSearch: data => {
484
+ unstable_batchedUpdates(() => {
485
+ setPage(1);
486
+ setFilters(data);
487
+ });
488
+ }
489
+ }), toolBarRender !== false && jsxs(Header, {
490
+ children: [jsx(LeftTools, {
491
+ size: 12,
492
+ children: toolBarRender && toolBarRender(action.current)
493
+ }), jsxs(RightTools, {
494
+ size: 12,
495
+ children: [search === true && jsx(LightSearch, {
496
+ keyword: keyword,
497
+ onKeywordChange: value => {
498
+ unstable_batchedUpdates(() => {
499
+ setPage(1);
500
+ setKeyword(value);
501
+ });
502
+ }
503
+ }), jsx(Action, {
504
+ onClick: action.current.reload,
505
+ children: jsx("i", {
506
+ className: 'bi bi-arrow-repeat'
507
+ })
508
+ })]
509
+ })]
510
+ }), jsx(TableContext.Provider, {
511
+ value: true,
512
+ children: jsx(RcTable, {
513
+ ...props,
514
+ expandable: {
515
+ expandIcon: ExpandIcon,
516
+ ...expandable
517
+ },
518
+ rowKey: rowKey,
519
+ columns: customColumns,
520
+ components: components,
521
+ data: data
522
+ })
523
+ }), pagination && jsx(CustomPagination, {
524
+ ...pagination,
525
+ onChange: setPage
526
+ })]
527
+ });
528
+ if (card) {
529
+ return jsx(Card, {
530
+ children: children
531
+ });
532
+ }
533
+ return children;
534
+ });
535
+ var index = memo(Table);
536
+ const Header = styled.div`
537
+ display: flex;
538
+ justify-content: space-between;
539
+ padding-bottom: 1rem;
540
+ height: 48px;
541
+ border-bottom: 2px solid #212529;
542
+ `;
543
+ const RightTools = styled(Space)`
544
+
545
+ `;
546
+ const LeftTools = styled(Space)`
547
+
548
+ `;
549
+ const Action = styled.span`
550
+ cursor: pointer;
551
+ font-size: 20px;
552
+ line-height: 1;
553
+
554
+ &:hover {
555
+ color: var(--bs-primary);
556
+ }
557
+ `;
558
+
559
+ export { index as default };
560
+ //# sourceMappingURL=index-303e1845.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-303e1845.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\nexport type 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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"}