@topthink/components 1.0.58 → 1.0.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/es/{editor-widget-ebec8493.js → editor-widget-CQ3zv-Xu.js} +0 -1
  2. package/es/{image-zoom-912e2b3b.js → image-zoom-OrIPGqh0.js} +0 -1
  3. package/es/{index-563b11c6.js → index-3GYeZqTw.js} +13 -14
  4. package/es/index-5gZRXtbb.js +1 -0
  5. package/es/index-UK__bsMk.js +39 -0
  6. package/es/index.js +1 -2
  7. package/es/{steps-afba29a7.js → steps-b_BcYIwk.js} +1 -2
  8. package/package.json +15 -15
  9. package/types/components/button.d.ts +9 -9
  10. package/types/components/card.d.ts +7 -7
  11. package/types/components/dimmer.d.ts +7 -7
  12. package/types/components/error.d.ts +5 -5
  13. package/types/components/form.d.ts +4 -4
  14. package/types/components/image-zoom.d.ts +4 -4
  15. package/types/components/lazy/form/index.d.ts +19 -19
  16. package/types/components/lazy/form/widgets/editor-widget.d.ts +6 -5
  17. package/types/components/lazy/image-zoom.d.ts +3 -3
  18. package/types/components/lazy/steps.d.ts +9 -9
  19. package/types/components/lazy/table/context.d.ts +2 -2
  20. package/types/components/lazy/table/index.d.ts +45 -45
  21. package/types/components/lazy/table/search.d.ts +23 -23
  22. package/types/components/lazy/table/use-selection.d.ts +3 -3
  23. package/types/components/loader.d.ts +9 -9
  24. package/types/components/loading-button.d.ts +7 -7
  25. package/types/components/modal/confirm.d.ts +8 -8
  26. package/types/components/modal/index.d.ts +32 -32
  27. package/types/components/modal/message.d.ts +26 -26
  28. package/types/components/modal/show.d.ts +3 -3
  29. package/types/components/modal-button.d.ts +17 -17
  30. package/types/components/modal-form.d.ts +10 -10
  31. package/types/components/number-format.d.ts +10 -10
  32. package/types/components/pagination.d.ts +11 -11
  33. package/types/components/request-button.d.ts +13 -13
  34. package/types/components/result.d.ts +15 -15
  35. package/types/components/space.d.ts +9 -9
  36. package/types/components/statistic.d.ts +7 -7
  37. package/types/components/steps.d.ts +10 -10
  38. package/types/components/table.d.ts +4 -4
  39. package/types/components/tooltip.d.ts +9 -9
  40. package/types/hooks/use-callback-ref.d.ts +2 -2
  41. package/types/hooks/use-controllable-state.d.ts +8 -8
  42. package/types/hooks/use-debounce.d.ts +2 -2
  43. package/types/hooks/use-overlay-state.d.ts +16 -16
  44. package/types/hooks/use-request.d.ts +21 -21
  45. package/types/hooks/use-safe-state.d.ts +4 -4
  46. package/types/hooks/use-state-with-callback.d.ts +2 -2
  47. package/types/hooks/use-unmounted-ref.d.ts +3 -3
  48. package/types/index.d.ts +33 -33
  49. package/types/request.d.ts +32 -32
  50. package/types/utils/is-record.d.ts +1 -1
  51. package/types/utils/message.d.ts +11 -11
  52. package/types/utils/toast.d.ts +11 -11
  53. package/types/utils/types.d.ts +7 -7
  54. package/types/utils/wait-pay-complete.d.ts +11 -11
  55. package/es/editor-widget-ebec8493.js.map +0 -1
  56. package/es/form-01bf45e9.js +0 -233
  57. package/es/form-01bf45e9.js.map +0 -1
  58. package/es/form-0a372a24.js +0 -2
  59. package/es/form-0a372a24.js.map +0 -1
  60. package/es/form-1791ea39.js +0 -236
  61. package/es/form-1791ea39.js.map +0 -1
  62. package/es/form-74ef0417.js +0 -2
  63. package/es/form-74ef0417.js.map +0 -1
  64. package/es/form-8925a750.js +0 -231
  65. package/es/form-8925a750.js.map +0 -1
  66. package/es/form-95db7eac.js +0 -2
  67. package/es/form-95db7eac.js.map +0 -1
  68. package/es/form-9c0e638a.js +0 -231
  69. package/es/form-9c0e638a.js.map +0 -1
  70. package/es/image-zoom-912e2b3b.js.map +0 -1
  71. package/es/index-1930b692.js +0 -67
  72. package/es/index-1930b692.js.map +0 -1
  73. package/es/index-1d379f3a.js +0 -562
  74. package/es/index-1d379f3a.js.map +0 -1
  75. package/es/index-2b97b70d.js +0 -2
  76. package/es/index-2b97b70d.js.map +0 -1
  77. package/es/index-303e1845.js +0 -560
  78. package/es/index-303e1845.js.map +0 -1
  79. package/es/index-4f51cece.js +0 -1352
  80. package/es/index-4f51cece.js.map +0 -1
  81. package/es/index-5142110c.js +0 -67
  82. package/es/index-5142110c.js.map +0 -1
  83. package/es/index-563b11c6.js.map +0 -1
  84. package/es/index-6ae8237d.js +0 -67
  85. package/es/index-6ae8237d.js.map +0 -1
  86. package/es/index-7a7c06a9.js +0 -40
  87. package/es/index-7a7c06a9.js.map +0 -1
  88. package/es/index-9869b1c6.js +0 -1350
  89. package/es/index-9869b1c6.js.map +0 -1
  90. package/es/index-a214613e.js +0 -40
  91. package/es/index-a214613e.js.map +0 -1
  92. package/es/index-a48179db.js +0 -1382
  93. package/es/index-a48179db.js.map +0 -1
  94. package/es/index-b34ecf90.js +0 -40
  95. package/es/index-b34ecf90.js.map +0 -1
  96. package/es/index-d964165a.js +0 -560
  97. package/es/index-d964165a.js.map +0 -1
  98. package/es/index-e17dc6f0.js +0 -40
  99. package/es/index-e17dc6f0.js.map +0 -1
  100. package/es/index.js.map +0 -1
  101. package/es/steps-afba29a7.js.map +0 -1
  102. package/es/steps-c27a3885.js +0 -34
  103. package/es/steps-c27a3885.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-2b97b70d.js","sources":["../src/components/lazy/form/index.tsx"],"sourcesContent":["import JsonForm, { getRegistry, JsonFormProps, JsonFormType } from '@topthink/json-form';\r\nimport * as React from 'react';\r\nimport {\r\n forwardRef,\r\n ForwardRefExoticComponent,\r\n PropsWithoutRef,\r\n ReactNode,\r\n RefAttributes,\r\n useCallback,\r\n useState\r\n} from 'react';\r\nimport axios, { AxiosError, Method } from 'axios';\r\nimport request from '../../../request';\r\nimport { mapValues } from 'lodash';\r\nimport type { AjvError, ISubmitEvent, WidgetProps } from '@rjsf/core';\r\nimport Button from '../../button';\r\nimport useSafeState from '../../../hooks/use-safe-state';\r\n\r\nconst localize = require('ajv-i18n/localize/zh');\r\n\r\nconst LazyEditorWidget = React.lazy(() => import('./widgets/editor-widget'));\r\nconst EditorWidget = (props: WidgetProps) => {\r\n return <React.Suspense fallback={null}>\r\n <LazyEditorWidget {...props} />\r\n </React.Suspense>;\r\n};\r\n\r\nexport interface FormProps<T = any> extends JsonFormProps<T> {\r\n onSuccess?: (data: any) => void;\r\n method?: Method;\r\n children?: ReactNode | ((props: { submit: ReactNode, loading: boolean }) => ReactNode);\r\n submitText?: string;\r\n onSubmitting?: (submitting: boolean) => void;\r\n transformData?: (data: T) => T;\r\n}\r\n\r\ntype Error = {\r\n __errors: string[]\r\n}\r\n\r\ntype Errors = Error | {\r\n [key: string]: Error\r\n}\r\n\r\nconst toExtraErrors = (error: AxiosError): Errors => {\r\n const errors = error.errors;\r\n if (typeof errors === 'string') {\r\n return {\r\n __errors: [errors]\r\n };\r\n }\r\n return mapValues(errors, (e) => {\r\n return {\r\n __errors: [e]\r\n };\r\n });\r\n};\r\n\r\nconst widgets = {\r\n upload: function({ options, ...props }: WidgetProps) {\r\n const { widgets } = getRegistry();\r\n\r\n if (options.endpoint) {\r\n options.onUpload = async (file: File) => {\r\n\r\n const data = new FormData();\r\n\r\n data.set('file', file);\r\n\r\n const { url, value } = await request({\r\n url: options.endpoint as string,\r\n method: 'post',\r\n data\r\n });\r\n\r\n return { url, value };\r\n };\r\n }\r\n\r\n return <widgets.upload {...props} options={options} />;\r\n },\r\n editor: function({ options, ...props }: WidgetProps) {\r\n if (options.endpoint) {\r\n options.onUpload = async (file: File) => {\r\n\r\n const data = new FormData();\r\n\r\n data.set('file', file);\r\n\r\n const { url } = await request({\r\n url: options.endpoint as string,\r\n method: 'post',\r\n data\r\n });\r\n\r\n return url;\r\n };\r\n }\r\n\r\n return <EditorWidget {...props} options={options} />;\r\n },\r\n typeahead: function({ options, ...props }: WidgetProps) {\r\n const { widgets } = getRegistry();\r\n\r\n if (options.endpoint) {\r\n options.onSearch = async ({ value, query }) => {\r\n return await request({\r\n url: options.endpoint as string,\r\n params: { value, query }\r\n });\r\n };\r\n }\r\n\r\n return <widgets.typeahead {...props} options={options} />;\r\n }\r\n};\r\n\r\nexport interface FormType extends JsonFormType {\r\n\r\n}\r\n\r\nexport type CustomFormType<T = any> = ForwardRefExoticComponent<PropsWithoutRef<FormProps<T>> & RefAttributes<FormType>>\r\n\r\nconst Form: CustomFormType = forwardRef(({\r\n action,\r\n method = 'post',\r\n onSuccess,\r\n formData,\r\n onSubmitting,\r\n onSubmit,\r\n onChange,\r\n submitText = '提交',\r\n transformData,\r\n children,\r\n ...props\r\n}, ref) => {\r\n\r\n const [extraErrors, setExtraErrors] = useState<Errors>();\r\n const [loading, setLoading] = useSafeState(false);\r\n const [data, setData] = useState(formData);\r\n\r\n const handleSubmit = useCallback(async (e: ISubmitEvent<any>, nativeEvent: React.FormEvent<HTMLFormElement>) => {\r\n if (!loading) {\r\n try {\r\n setLoading(true);\r\n if (onSubmitting) {\r\n onSubmitting(true);\r\n }\r\n if (action) {\r\n let { formData } = e;\r\n\r\n if (transformData) {\r\n formData = transformData(formData);\r\n }\r\n\r\n //todo 包含File对象需转FormData\r\n try {\r\n const result = await request({\r\n url: action,\r\n method,\r\n data: formData\r\n });\r\n setExtraErrors(undefined);\r\n if (onSuccess) {\r\n await onSuccess(result);\r\n }\r\n return result;\r\n } catch (e) {\r\n if (axios.isAxiosError(e)) {\r\n setExtraErrors(toExtraErrors(e));\r\n } else {\r\n throw e;\r\n }\r\n }\r\n } else if (onSubmit) {\r\n return await onSubmit(e, nativeEvent);\r\n }\r\n } finally {\r\n setLoading(false);\r\n if (onSubmitting) {\r\n onSubmitting(false);\r\n }\r\n }\r\n }\r\n }, [action, method, onSubmit]);\r\n\r\n const handleChange = useCallback((e: ISubmitEvent<any>) => {\r\n const { formData } = e;\r\n setData(formData);\r\n if (onChange) {\r\n onChange(e);\r\n }\r\n }, [setData, onChange]);\r\n\r\n const transformErrors = useCallback((errors: AjvError[]) => {\r\n errors = errors.map(error => ({\r\n keyword: error.name,\r\n dataPath: error.property,\r\n ...error\r\n }));\r\n\r\n localize(errors);\r\n\r\n return errors;\r\n }, []);\r\n\r\n const submit = <Button className={'px-4'} loading={loading} type='submit' variant='primary'>{submitText}</Button>;\r\n\r\n if (typeof children === 'function') {\r\n children = children({ submit, loading });\r\n }\r\n\r\n return <JsonForm\r\n ref={ref}\r\n extraErrors={extraErrors}\r\n onSubmit={handleSubmit}\r\n transformErrors={transformErrors}\r\n noHtml5Validate\r\n noValidate\r\n {...props}\r\n formData={data}\r\n onChange={handleChange}\r\n widgets={widgets}\r\n >\r\n {children || <div className='col-12'>\r\n {submit}\r\n </div>}\r\n </JsonForm>;\r\n});\r\n\r\nexport default Form;\r\n"],"names":["localize","require","LazyEditorWidget","React","lazy","import","EditorWidget","props","_jsx","Suspense","fallback","children","widgets","upload","_ref","options","getRegistry","endpoint","onUpload","async","data","FormData","set","file","url","value","request","method","editor","_ref2","typeahead","_ref3","onSearch","query","_ref4","params","Form","forwardRef","_ref5","ref","action","onSuccess","formData","onSubmitting","onSubmit","onChange","submitText","transformData","extraErrors","setExtraErrors","useState","loading","setLoading","useSafeState","setData","handleSubmit","useCallback","e","nativeEvent","result","undefined","axios","isAxiosError","error","errors","__errors","mapValues","toExtraErrors","handleChange","transformErrors","map","keyword","name","dataPath","property","submit","Button","className","type","variant","JsonForm","noHtml5Validate","noValidate"],"mappings":"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"}
@@ -1,560 +0,0 @@
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
@@ -1 +0,0 @@
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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"}