@spacego/fe-components 0.1.1 → 0.2.1

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 (202) hide show
  1. package/lib/_virtual/Resizable.js +4 -0
  2. package/lib/_virtual/ResizableBox.js +4 -0
  3. package/lib/_virtual/index.js +5 -0
  4. package/lib/_virtual/index2.js +4 -0
  5. package/lib/_virtual/index3.js +4 -0
  6. package/lib/_virtual/index4.js +4 -0
  7. package/lib/_virtual/propTypes.js +4 -0
  8. package/lib/_virtual/react-is.development.js +4 -0
  9. package/lib/_virtual/react-is.production.min.js +4 -0
  10. package/lib/_virtual/utils.js +4 -0
  11. package/lib/fe-auto-complete/index.js +6 -0
  12. package/lib/fe-button/index.js +27 -0
  13. package/lib/fe-cascader/index.js +19 -0
  14. package/lib/fe-checkbox/index.js +6 -0
  15. package/lib/fe-checkbox-group/index.js +6 -0
  16. package/lib/fe-date-picker/index.js +19 -0
  17. package/lib/fe-description-render/index.js +43 -0
  18. package/lib/fe-descriptions/index.js +6 -0
  19. package/lib/fe-empty/index.js +6 -0
  20. package/lib/fe-error-block/index.js +6 -0
  21. package/lib/fe-form/fe-form/index.js +133 -0
  22. package/lib/fe-form/fe-form-auto-complete/index.js +57 -0
  23. package/lib/fe-form/fe-form-btn-group/index.js +29 -0
  24. package/lib/fe-form/fe-form-cascader/index.js +25 -0
  25. package/lib/fe-form/fe-form-checkbox-group/index.js +21 -0
  26. package/lib/fe-form/fe-form-date-picker/index.js +75 -0
  27. package/lib/fe-form/fe-form-date-range-picker/index.js +99 -0
  28. package/lib/fe-form/fe-form-input/index.js +53 -0
  29. package/lib/fe-form/fe-form-input-input/index.js +63 -0
  30. package/lib/fe-form/fe-form-input-number/index.js +43 -0
  31. package/lib/fe-form/fe-form-item/index.js +46 -0
  32. package/lib/fe-form/fe-form-label/index.js +20 -0
  33. package/lib/fe-form/fe-form-radio/index.js +21 -0
  34. package/lib/fe-form/fe-form-render/index.js +33 -0
  35. package/lib/fe-form/fe-form-rich-text/index.js +25 -0
  36. package/lib/fe-form/fe-form-select/index.js +93 -0
  37. package/lib/fe-form/fe-form-switch/index.js +21 -0
  38. package/lib/fe-form/fe-form-text/index.js +20 -0
  39. package/lib/fe-form/fe-form-text-area/index.js +24 -0
  40. package/lib/fe-form/fe-form-time-picker/index.js +21 -0
  41. package/lib/fe-form/fe-form-upload/index.js +63 -0
  42. package/lib/fe-form/utils/index.js +28 -0
  43. package/lib/fe-input/index.js +32 -0
  44. package/lib/fe-input-number/index.js +19 -0
  45. package/lib/fe-layouts/auth-layout/index.js +35 -17
  46. package/lib/fe-layouts/basics-layout/index.js +2 -2
  47. package/lib/fe-layouts/layout.js +34 -16
  48. package/lib/fe-link/index.js +23 -0
  49. package/lib/fe-map/index.js +263 -0
  50. package/lib/fe-modal/index.js +85 -0
  51. package/lib/fe-pagination/index.js +6 -0
  52. package/lib/fe-panel/fe-panel-toolbar.js +40 -0
  53. package/lib/fe-panel/index.js +49 -0
  54. package/lib/fe-panel/use-panel-context.js +9 -0
  55. package/lib/fe-permission/index.js +12 -0
  56. package/lib/fe-permission-provider/index.js +29 -0
  57. package/lib/fe-radio/index.js +11 -0
  58. package/lib/fe-radio-group/index.js +6 -0
  59. package/lib/fe-rich-text/index.js +293 -0
  60. package/lib/fe-select/index.js +24 -0
  61. package/lib/fe-switch/index.js +6 -0
  62. package/lib/fe-table/fe-edit-table/index.js +39 -0
  63. package/lib/fe-table/fe-edit-table-cell/index.js +63 -0
  64. package/lib/fe-table/fe-head-title/index.js +9 -0
  65. package/lib/fe-table/fe-normal-table/index.js +192 -0
  66. package/lib/fe-table/fe-sub-table/index.js +74 -0
  67. package/lib/fe-table/fe-table/index.js +7 -0
  68. package/lib/fe-table/fe-table-alert/index.js +42 -0
  69. package/lib/fe-table/fe-table-link/index.js +87 -0
  70. package/lib/fe-table/fe-table-render/index.js +56 -0
  71. package/lib/fe-table/fe-table-setting/index.js +165 -0
  72. package/lib/fe-table/fe-table-toolbar/index.js +63 -0
  73. package/lib/fe-table/fe-table-utils/index.js +157 -0
  74. package/lib/fe-table/type/table.d.js +4 -0
  75. package/lib/fe-table/use-edit-table/index.js +151 -0
  76. package/lib/fe-table/use-pagination/index.js +59 -0
  77. package/lib/fe-table/use-sub-table/index.js +23 -0
  78. package/lib/fe-table/use-table/index.js +177 -0
  79. package/lib/fe-table/use-table-columns/index.js +53 -0
  80. package/lib/fe-table/use-table-form-context/index.js +14 -0
  81. package/lib/fe-table/use-table-selection/index.js +53 -0
  82. package/lib/fe-text-area/index.js +21 -0
  83. package/lib/fe-time-picker/index.js +19 -0
  84. package/lib/fe-upload/index.js +182 -0
  85. package/lib/fe-upload/upload.constant.js +91 -0
  86. package/lib/fe-upload-atomic/index.js +6 -0
  87. package/lib/fe-upload-crop/index.js +207 -0
  88. package/lib/hooks/{use-auth.hook.js → use-auth.hook/index.js} +3 -3
  89. package/lib/hooks/use-form/index.js +38 -0
  90. package/lib/hooks/use-permission.hook/index.js +9 -0
  91. package/lib/index.css +7 -1
  92. package/lib/index.js +161 -42
  93. package/lib/node_modules/.pnpm/@dnd-kit_accessibility@3.1.1_react@18.3.1/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +56 -0
  94. package/lib/node_modules/.pnpm/@dnd-kit_core@6.3.1_nnrd3gsncyragczmpvfhocinkq/node_modules/@dnd-kit/core/dist/core.esm.js +2344 -0
  95. package/lib/node_modules/.pnpm/@dnd-kit_modifiers@9.0.0_55ztycxty3xzw7t4rzpvix55vq/node_modules/@dnd-kit/modifiers/dist/modifiers.esm.js +13 -0
  96. package/lib/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_55ztycxty3xzw7t4rzpvix55vq/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +439 -0
  97. package/lib/node_modules/.pnpm/@dnd-kit_utilities@3.2.2_react@18.3.1/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +235 -0
  98. package/lib/node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js +54 -0
  99. package/lib/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/checkPropTypes.js +54 -0
  100. package/lib/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithThrowingShims.js +52 -0
  101. package/lib/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/factoryWithTypeCheckers.js +329 -0
  102. package/lib/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +17 -0
  103. package/lib/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/ReactPropTypesSecret.js +10 -0
  104. package/lib/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/lib/has.js +7 -0
  105. package/lib/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js +95 -0
  106. package/lib/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js +78 -0
  107. package/lib/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +10 -0
  108. package/lib/node_modules/.pnpm/react-resizable@3.1.3_nnrd3gsncyragczmpvfhocinkq/node_modules/react-resizable/build/Resizable.js +233 -0
  109. package/lib/node_modules/.pnpm/react-resizable@3.1.3_nnrd3gsncyragczmpvfhocinkq/node_modules/react-resizable/build/ResizableBox.js +164 -0
  110. package/lib/node_modules/.pnpm/react-resizable@3.1.3_nnrd3gsncyragczmpvfhocinkq/node_modules/react-resizable/build/propTypes.js +113 -0
  111. package/lib/node_modules/.pnpm/react-resizable@3.1.3_nnrd3gsncyragczmpvfhocinkq/node_modules/react-resizable/build/utils.js +56 -0
  112. package/lib/node_modules/.pnpm/react-resizable@3.1.3_nnrd3gsncyragczmpvfhocinkq/node_modules/react-resizable/index.js +12 -0
  113. package/lib/store/modules/layout-config.store.js +83 -65
  114. package/lib/store/modules/theme.store.js +36 -18
  115. package/lib/types/fe-auto-complete/index.d.ts +2 -0
  116. package/lib/types/fe-button/index.d.ts +16 -0
  117. package/lib/types/fe-cascader/index.d.ts +7 -0
  118. package/lib/types/fe-checkbox/index.d.ts +6 -0
  119. package/lib/types/fe-checkbox-group/index.d.ts +5 -0
  120. package/lib/types/fe-date-picker/index.d.ts +3 -0
  121. package/lib/types/fe-description-render/index.d.ts +31 -0
  122. package/lib/types/fe-descriptions/index.d.ts +2 -0
  123. package/lib/types/fe-empty/index.d.ts +2 -0
  124. package/lib/types/fe-error-block/index.d.ts +6 -0
  125. package/lib/types/fe-form/fe-form/index.d.ts +354 -0
  126. package/lib/types/fe-form/fe-form-auto-complete/index.d.ts +3 -0
  127. package/lib/types/fe-form/fe-form-btn-group/index.d.ts +3 -0
  128. package/lib/types/fe-form/fe-form-cascader/index.d.ts +3 -0
  129. package/lib/types/fe-form/fe-form-checkbox-group/index.d.ts +3 -0
  130. package/lib/types/fe-form/fe-form-date-picker/index.d.ts +3 -0
  131. package/lib/types/fe-form/fe-form-date-range-picker/index.d.ts +3 -0
  132. package/lib/types/fe-form/fe-form-input/index.d.ts +3 -0
  133. package/lib/types/fe-form/fe-form-input-input/index.d.ts +3 -0
  134. package/lib/types/fe-form/fe-form-input-number/index.d.ts +3 -0
  135. package/lib/types/fe-form/fe-form-item/index.d.ts +68 -0
  136. package/lib/types/fe-form/fe-form-label/index.d.ts +43 -0
  137. package/lib/types/fe-form/fe-form-radio/index.d.ts +3 -0
  138. package/lib/types/fe-form/fe-form-render/index.d.ts +3 -0
  139. package/lib/types/fe-form/fe-form-rich-text/index.d.ts +3 -0
  140. package/lib/types/fe-form/fe-form-select/index.d.ts +3 -0
  141. package/lib/types/fe-form/fe-form-switch/index.d.ts +3 -0
  142. package/lib/types/fe-form/fe-form-text/index.d.ts +3 -0
  143. package/lib/types/fe-form/fe-form-text-area/index.d.ts +3 -0
  144. package/lib/types/fe-form/fe-form-time-picker/index.d.ts +3 -0
  145. package/lib/types/fe-form/fe-form-upload/index.d.ts +3 -0
  146. package/lib/types/fe-form/index.d.ts +26 -0
  147. package/lib/types/fe-form/utils/index.d.ts +24 -0
  148. package/lib/types/fe-input/index.d.ts +12 -0
  149. package/lib/types/fe-input-number/index.d.ts +2 -0
  150. package/lib/types/fe-link/index.d.ts +6 -0
  151. package/lib/types/fe-map/index.d.ts +73 -0
  152. package/lib/types/fe-modal/index.d.ts +20 -0
  153. package/lib/types/fe-pagination/index.d.ts +2 -0
  154. package/lib/types/fe-panel/fe-panel-toolbar.d.ts +3 -0
  155. package/lib/types/fe-panel/index.d.ts +61 -0
  156. package/lib/types/fe-panel/panel-toolbar.d.ts +4 -0
  157. package/lib/types/fe-panel/use-panel-context.d.ts +6 -0
  158. package/lib/types/fe-permission/index.d.ts +10 -0
  159. package/lib/types/fe-permission-provider/index.d.ts +8 -0
  160. package/lib/types/fe-radio/index.d.ts +2 -0
  161. package/lib/types/fe-radio-group/index.d.ts +2 -0
  162. package/lib/types/fe-rich-text/index.d.ts +167 -0
  163. package/lib/types/fe-select/index.d.ts +8 -0
  164. package/lib/types/fe-switch/index.d.ts +2 -0
  165. package/lib/types/fe-table/fe-edit-table/index.d.ts +3 -0
  166. package/lib/types/fe-table/fe-edit-table-cell/index.d.ts +16 -0
  167. package/lib/types/fe-table/fe-head-title/index.d.ts +6 -0
  168. package/lib/types/fe-table/fe-normal-table/index.d.ts +3 -0
  169. package/lib/types/fe-table/fe-sub-table/index.d.ts +3 -0
  170. package/lib/types/fe-table/fe-table/index.d.ts +3 -0
  171. package/lib/types/fe-table/fe-table-alert/index.d.ts +13 -0
  172. package/lib/types/fe-table/fe-table-link/index.d.ts +10 -0
  173. package/lib/types/fe-table/fe-table-render/index.d.ts +11 -0
  174. package/lib/types/fe-table/fe-table-setting/index.d.ts +22 -0
  175. package/lib/types/fe-table/fe-table-toolbar/index.d.ts +16 -0
  176. package/lib/types/fe-table/fe-table-utils/index.d.ts +193 -0
  177. package/lib/types/fe-table/index.d.ts +6 -0
  178. package/lib/types/fe-table/type/table-context.d.ts +60 -0
  179. package/lib/types/fe-table/type/table.d.ts +795 -0
  180. package/lib/types/fe-table/use-edit-table/index.d.ts +6 -0
  181. package/lib/types/fe-table/use-pagination/index.d.ts +3 -0
  182. package/lib/types/fe-table/use-sub-table/index.d.ts +8 -0
  183. package/lib/types/fe-table/use-table/index.d.ts +3 -0
  184. package/lib/types/fe-table/use-table-columns/index.d.ts +47 -0
  185. package/lib/types/fe-table/use-table-form-context/index.d.ts +10 -0
  186. package/lib/types/fe-table/use-table-selection/index.d.ts +46 -0
  187. package/lib/types/fe-text-area/index.d.ts +4 -0
  188. package/lib/types/fe-time-picker/index.d.ts +3 -0
  189. package/lib/types/fe-upload/index.d.ts +85 -0
  190. package/lib/types/fe-upload/upload.constant.d.ts +39 -0
  191. package/lib/types/fe-upload-atomic/index.d.ts +2 -0
  192. package/lib/types/fe-upload-crop/index.d.ts +10 -0
  193. package/lib/types/hooks/index.d.ts +1 -0
  194. package/lib/types/hooks/use-descriptions/index.d.ts +3 -0
  195. package/lib/types/hooks/use-form/index.d.ts +14 -0
  196. package/lib/types/hooks/use-permission.hook/index.d.ts +10 -0
  197. package/lib/types/index.d.ts +32 -0
  198. package/lib/types/typings/index.d.ts +39 -0
  199. package/package.json +18 -8
  200. /package/lib/hooks/{use-nprogress.hook.js → use-nprogress.hook/index.js} +0 -0
  201. /package/lib/types/hooks/{use-auth.hook.d.ts → use-auth.hook/index.d.ts} +0 -0
  202. /package/lib/types/hooks/{use-nprogress.hook.d.ts → use-nprogress.hook/index.d.ts} +0 -0
@@ -0,0 +1,795 @@
1
+ import { TableProps } from 'antd';
2
+ import { Key } from 'antd/es/table/interface';
3
+ import { DebouncedFunc } from 'lodash-es';
4
+ import { default as React } from 'react';
5
+ import { IFeFormItems } from '../../../form/fe-form/index.d';
6
+ import { TableContext } from '../utils/table-utils';
7
+ export interface FeTableProps {
8
+ [key: string]: any;
9
+ tableKey?: string;
10
+ columnSetting?: boolean;
11
+ }
12
+
13
+ export interface FeEditTableProps extends FeTableProps {
14
+ onTableValueChange?: (values: any) => void;
15
+ onInternalStateChange?: (params: { values: Record<string, any>; record: Record<string, any> }) => void;
16
+ formData?: any;
17
+ editTable?: boolean;
18
+ }
19
+
20
+ export interface FeFullTableProps extends FeTableProps, FeEditTableProps {
21
+ edit?: boolean;
22
+ }
23
+
24
+ interface FeTableTitlePropsType {
25
+ width: number;
26
+ onResize: (e: React.SyntheticEvent<Element>, data: ResizeCallbackData) => void;
27
+ }
28
+
29
+ // 基础分页响应接口
30
+ interface IBasePageRsp<T> {
31
+ pageNo: number;
32
+ pageSize: number;
33
+ totalCount: number;
34
+ totalPage?: number;
35
+ records: T[];
36
+ }
37
+
38
+ // 子表格配置接口
39
+ interface ISubTableConfig extends TableProps {
40
+ /**
41
+ * 子表格列配置
42
+ */
43
+ columns: ITableColumns[];
44
+ /**
45
+ * 默认展开所有行
46
+ */
47
+ defaultExpandAllRows?: boolean;
48
+ /**
49
+ * 通过点击行来展开子行
50
+ */
51
+ expandRowByClick?: boolean;
52
+ /**
53
+ * 是否显示序号列
54
+ */
55
+ showIndex?: boolean;
56
+ /**
57
+ * 子表格行键
58
+ */
59
+ rowKey?: string;
60
+ /**
61
+ * 子表格操作列配置
62
+ */
63
+ columnsHandleConfig?: any[];
64
+ /**
65
+ * 按钮权限列表
66
+ */
67
+ btnPermissionList?: string[];
68
+ /**
69
+ * 子表格初始数据
70
+ */
71
+ initDataSource?: any[];
72
+ /**
73
+ * 子表格展开行key
74
+ */
75
+ expandRowKey?: string;
76
+ /**
77
+ * 子表格数据获取函数
78
+ */
79
+ fetchModel?: (
80
+ record: DataType,
81
+ pageOption: ITablePageOption & Record<string, any>
82
+ ) => Promise<IBasePageRsp<SubDataType>>;
83
+ /**
84
+ * 分页配置
85
+ */
86
+ pageOption?: ITablePageOption;
87
+ /**
88
+ * 是否启用分页
89
+ */
90
+ pagination?: boolean;
91
+
92
+ expandableConfig?: TableProps['expandable'];
93
+
94
+ columnsHandleAttr?: {
95
+ fixed?: false | 'left' | 'right';
96
+ width?: number;
97
+ };
98
+ }
99
+
100
+ interface FeSubTableProps<MainData = any, SubData = any> {
101
+ /**
102
+ * 子表格列配置
103
+ */
104
+ columns: ITableColumns<SubData>[];
105
+ /**
106
+ * 父行数据
107
+ */
108
+ record: MainData;
109
+ /**
110
+ * 子表格配置
111
+ */
112
+ config: ISubTableConfig;
113
+ }
114
+
115
+ interface SubTableState<T> {
116
+ data: T[];
117
+ pageInfo: ITablePageOption;
118
+ }
119
+
120
+ // 请求结果类型
121
+ interface RequestResult<T> {
122
+ data: T[];
123
+ pageInfo: ITablePageOption;
124
+ }
125
+
126
+ type SubData = any;
127
+
128
+ export interface EditableCellProps extends ITableColumns {
129
+ /*
130
+ * 数据索引
131
+ */
132
+ dataIndex: string;
133
+ /*
134
+ * 标签
135
+ */
136
+ label: string;
137
+ /*
138
+ * 是否编辑
139
+ */
140
+ editing: boolean;
141
+ /*
142
+ * 记录
143
+ */
144
+ record: any;
145
+ /*
146
+ * 行key
147
+ */
148
+ rowKey: string;
149
+ /*
150
+ * 索引
151
+ */
152
+ index: number;
153
+ /*
154
+ * 子元素
155
+ */
156
+ children: React.ReactNode;
157
+ /*
158
+ * 表单引用
159
+ */
160
+ formRef: React.RefObject<any>;
161
+ /*
162
+ * 表格值变化
163
+ */
164
+ onTableValueChange: (values: any) => void;
165
+ /*
166
+ * 错误
167
+ */
168
+ errorKey: Array<string>;
169
+ /*
170
+ * 其他属性
171
+ */
172
+ [key: string]: any;
173
+ }
174
+
175
+ interface IFeTableFormItems extends IFeFormItems {
176
+ /**
177
+ * @name 与实体映射的key
178
+ */
179
+ dataIndex?: keyof DataType;
180
+ /**
181
+ * @name 标题
182
+ */
183
+ label?: string;
184
+ }
185
+
186
+ export interface IEditRenderParams {
187
+ /**
188
+ * @name 是否可编辑
189
+ */
190
+ editable: boolean;
191
+ /**
192
+ * @name 是否需要提示
193
+ */
194
+ formProps?: IFeTableFormItems | ((ctx: TableContext) => IFeTableFormItems);
195
+ }
196
+
197
+ export interface ITableColumns<T = any> {
198
+ /**
199
+ * T
200
+ *
201
+ * @name 与实体映射的key
202
+ */
203
+ dataIndex: keyof T | 'handle';
204
+ /**
205
+ * @name 确定这个列的唯一值,一般用于 dataIndex 重复的情况
206
+ */
207
+ key?: React.Key;
208
+ /**
209
+ * @name 标题
210
+ */
211
+ title: string | React.ReactNode;
212
+ /**
213
+ * @name 自定义标题渲染
214
+ */
215
+ titleRender?: React.ReactNode;
216
+ /**
217
+ * @name 是否开启标题hint
218
+ */
219
+ showHint?: boolean;
220
+ /**
221
+ * @name 标题hint内容
222
+ */
223
+ hintText?: string | React.ReactNode;
224
+ /**
225
+ * @name 是否开启ellipsis
226
+ */
227
+ ellipsis?: boolean | { showTitle: boolean };
228
+ /**
229
+ * Render 方法只管理的只读模式,编辑模式需要使用 renderFormItem
230
+ *
231
+ * @name 自定义只读模式的dom
232
+ */
233
+ render?: (text: any, record: any, index: number) => React.ReactNode;
234
+ /**
235
+ * @name 对齐方式 left | center | right
236
+ * @default center
237
+ */
238
+ align?: 'left' | 'center' | 'right';
239
+ /**
240
+ * @name 固定列
241
+ * @default false
242
+ */
243
+ fixed?: false | 'left' | 'right';
244
+ /**
245
+ * @name 列宽
246
+ */
247
+ width?: number;
248
+ /**
249
+ * @name 数据类型
250
+ * @default string
251
+ */
252
+ dataType?: 'string' | 'integer' | 'double' | 'dict';
253
+ /**
254
+ * @name 渲染类型
255
+ * @default default
256
+ * @options default:纯文本静态展示
257
+ * tag:枚举tag展示,支持多个tag
258
+ */
259
+ renderType?: TRenderType;
260
+ /**
261
+ * 默认过滤器猜数
262
+ */
263
+ renderParams?: {
264
+ /**
265
+ * 是否开启tooltip
266
+ */
267
+ tooltip: boolean;
268
+ /**
269
+ * 是否开启省略
270
+ */
271
+ ellipsis: boolean;
272
+ /**
273
+ * 溢出省略时最多展示行数
274
+ * */
275
+ maxLines?: number;
276
+ };
277
+ /**
278
+ * @name 默认渲染器参数
279
+ */
280
+ defaultRenderParams?: {
281
+ /**
282
+ * @name 过滤器
283
+ */
284
+ filter?: any;
285
+ /**
286
+ * @name 过滤器参数
287
+ */
288
+ dictfilterParams?: {
289
+ dictList: Array<{ dataIndex: string; label: string }>;
290
+ };
291
+ };
292
+ /**
293
+ * @name 枚举字典配置
294
+ */
295
+ tagRenderParams?: {
296
+ /**
297
+ * @name 过滤器
298
+ */
299
+ filter?: any;
300
+ /**
301
+ * @name 过滤器参数
302
+ */
303
+ dictfilterParams?: {
304
+ dictList: Array<{ dataIndex: string; label: string }>;
305
+ };
306
+ /**
307
+ * @name 分割符
308
+ * @default |
309
+ */
310
+ separator?: string;
311
+ /**
312
+ * @name 颜色类型枚举
313
+ */
314
+ themeEnums?: Record<string, 'processing' | 'success' | 'error' | 'default' | 'warning'>;
315
+ };
316
+ /**
317
+ * @name 编辑器配置
318
+ */
319
+ editRenderParams?: IEditRenderParams;
320
+ /**
321
+ * @name 千分位配置
322
+ */
323
+ thousandsParams?: {
324
+ /**
325
+ * @name 小数位
326
+ */
327
+ precision?: number;
328
+ /**
329
+ * @name 是否补0
330
+ * @default false
331
+ */
332
+ fillZero?: boolean;
333
+ /**
334
+ * @name 千分位分隔符
335
+ * @default ,
336
+ */
337
+ separator?: string;
338
+ };
339
+ /**
340
+ * @name 是否在列配置中隐藏
341
+ * @description 设置为true时,该列不会出现在列配置面板中
342
+ * @default false
343
+ */
344
+ hideInSetting?: boolean;
345
+ }
346
+
347
+ /**
348
+ * @name 渲染类型
349
+ * @default default
350
+ * @options default:纯文本静态展示
351
+ * tag:枚举tag展示,支持多个tag
352
+ *
353
+ */
354
+ export type TRenderType = 'default' | 'tag' | 'thousands';
355
+
356
+ export interface ITablePageOption {
357
+ /**
358
+ * @name 当前页码
359
+ */
360
+ pageNo: number;
361
+ /**
362
+ * @name 每页条数
363
+ */
364
+ pageSize: number;
365
+ /**
366
+ * @name 总条数
367
+ */
368
+ totalCount?: number;
369
+ }
370
+
371
+ export interface ITableParams<DataType> {
372
+ /**
373
+ * @name 列表加载类型
374
+ * @default page
375
+ */
376
+ loadType?: 'static' | 'page';
377
+ /**
378
+ * @name 表格列配置
379
+ */
380
+ columns: ITableColumns<DataType>[];
381
+ /**
382
+ * @name 表格数据
383
+ */
384
+ initDataSource?: DataType[];
385
+ /**
386
+ * @name 表格最大宽度,超过此宽度会出现横向滚动条
387
+ */
388
+ scrollX?: string;
389
+ /**
390
+ * @name 表格最大高度,超过此高度会出现纵向滚动条
391
+ */
392
+ scrollY?: string;
393
+ /**
394
+ * @name 表格行唯一标识,默认id
395
+ */
396
+ rowKey?: string;
397
+ /**
398
+ * @name 是否展示分页
399
+ */
400
+ pageVisible?: boolean;
401
+ /**
402
+ * @name 表格搜索配置
403
+ */
404
+ searchOption?: Record<string, any>;
405
+ /**
406
+ * @name 分页配置
407
+ */
408
+ pageOption?: ITablePageOption;
409
+ /**
410
+ * @name 表格标题
411
+ */
412
+ headerTitle?: string | React.ReactNode;
413
+ /**
414
+ * @name 表格副标题
415
+ */
416
+ subTitle?: string;
417
+ /**
418
+ * @name 表格功能区按钮配置
419
+ */
420
+ toolBarConfig?: IToolBarBtnConfig[];
421
+ /**
422
+ * @name 表格操作列配置属性
423
+ */
424
+ columnsHandleAttr?: {
425
+ fixed?: false | 'left' | 'right';
426
+ width?: number;
427
+ };
428
+ /**
429
+ * @name 表格操作列配置
430
+ */
431
+ columnsHandleConfig?: IColumnsHandleConfig[];
432
+ /**
433
+ * @name 是否展示索引
434
+ * @default true
435
+ */
436
+ showIndex?: boolean;
437
+ /**
438
+ * @name 表格功能区
439
+ */
440
+ toolBarRender?: () => React.ReactNode[];
441
+ /**
442
+ * @name 获取列表数据
443
+ */
444
+ fetchModel?: (pageOption: ITablePageOption & Record<string, any>) => Promise<IBasePageRsp<DataType>>;
445
+ /**
446
+ * @name 唯一标识,更改后刷新columns
447
+ */
448
+ rawKeyRef?: React.RefObject<string>;
449
+ /**
450
+ * @name 按钮权限
451
+ */
452
+ btnPermissionList?: string[];
453
+ /**
454
+ * @name 行展开配置
455
+ */
456
+ rowExpandable?: (record: DataType) => boolean;
457
+ /**
458
+ * @name 子表格配置
459
+ */
460
+ subTableConfig?: ISubTableConfig;
461
+ /**
462
+ * 扩展属性
463
+ */
464
+ expandable?: ExpandableConfig;
465
+ /**
466
+ * @name 批量操作工具栏渲染函数
467
+ * @description 自定义批量操作工具栏左侧信息区域,false 时不显示
468
+ */
469
+ tableAlertRender?:
470
+ | ((params: { selectedRowKeys: Key[]; selectedRows: DataType[]; onCleanSelected: () => void }) => React.ReactNode)
471
+ | false;
472
+ /**
473
+ * @name 表格行选择配置
474
+ * @description 表格行是否可选择,配置项
475
+ */
476
+ rowSelection?: TableProps<DataType>['rowSelection'];
477
+ /**
478
+ * @name 是否启用列配置功能
479
+ * @description 是否显示列设置按钮,支持拖拽排序和显示/隐藏列
480
+ * @default true
481
+ */
482
+ columnSetting?: boolean;
483
+ /**
484
+ * @name 默认隐藏的列
485
+ * @description 默认隐藏的列的dataIndex数组
486
+ */
487
+ }
488
+
489
+ export interface IColumnsHandleConfig {
490
+ /**
491
+ * @name 按钮文字
492
+ */
493
+ label: string;
494
+ /**
495
+ * @name 按钮点击事件
496
+ * @param record 表格行数据
497
+ * @param index 表格行索引
498
+ * @returns
499
+ */
500
+ onClick: (record: any, index: number) => Promise<void>;
501
+ /**
502
+ * @name 是否需要二次确认
503
+ */
504
+ needConfirm?: boolean;
505
+ /**
506
+ * @name 确认文案
507
+ * @default 确定{$label}吗?
508
+ */
509
+ confirmText?: string | ((record?: any) => string);
510
+ /**
511
+ * @name 是否隐藏
512
+ * @param record 表格行数据
513
+ * @param index 表格行索引
514
+ * @returns
515
+ */
516
+ hidden?: (record: any, index: number) => boolean;
517
+ /**
518
+ * @name 按钮权限
519
+ */
520
+ btnPermission?: string;
521
+ /**
522
+ * @name 是否禁用
523
+ */
524
+ disabled?: (record: any, index: number) => boolean;
525
+ /**
526
+ * @name 按钮禁用文案
527
+ */
528
+ disabledText?: string;
529
+ }
530
+
531
+ export interface IToolBarBtnConfig {
532
+ /**
533
+ * @name 按钮类型
534
+ * @default primary
535
+ */
536
+ type?: 'primary' | 'default';
537
+ /**
538
+ * @name 按钮文案
539
+ */
540
+ label: string;
541
+ /**
542
+ * @name 按钮权限
543
+ */
544
+ btnPermission?: string;
545
+ /**
546
+ * @name 是否禁用
547
+ */
548
+ disabled?: () => boolean;
549
+ /**
550
+ * @name 按钮禁用文案
551
+ */
552
+ disabledText?: string;
553
+ /**
554
+ * @name 按钮点击事件
555
+ */
556
+ onClick: () => void;
557
+ /**
558
+ * @name 是否需要二次确认
559
+ */
560
+ needConfirm?: boolean;
561
+ /**
562
+ * @name 确认文案
563
+ * @default 确定{$label}吗?
564
+ */
565
+ confirmText?: string;
566
+ }
567
+
568
+ export interface IUseTableRsp<DataType = Record<string, any>> {
569
+ tableProps: {
570
+ actionRef: React.MutableRefObject<any>;
571
+ columns: any[];
572
+ dataSource: any[];
573
+ scroll: { x: string; y: string };
574
+ rowKey: string;
575
+ headerTitle: string;
576
+ toolBarRender: any;
577
+ pagination: any;
578
+ options: any;
579
+ search: any;
580
+ cardProps: any;
581
+ tableLayout: any;
582
+ subTableConfig: any;
583
+ expandable: any;
584
+ tableAlertRender?:
585
+ | ((params: { selectedRowKeys: Key[]; selectedRows: DataType[]; onCleanSelected: () => void }) => React.ReactNode)
586
+ | false;
587
+ rowSelection?: any;
588
+ columnSetting?: boolean;
589
+ };
590
+ fetchPageOption: () => any;
591
+ search: (searchOption?: Record<string, any>) => void;
592
+ refresh: () => void;
593
+ shouldRequestPreviousPage: (record: any[], pageNo: number) => boolean;
594
+ }
595
+
596
+ export const useTable = <DataType = Record<string, any>>(params: ITableParams<DataType>) => IUseTableRsp<DataType>;
597
+
598
+ export interface UseTableSelectionProps<T = any> {
599
+ /**
600
+ * 表格行选择配置
601
+ */
602
+ rowSelection?: TableProps<T>['rowSelection'];
603
+ /**
604
+ * 表格数据源,用于根据selectedRowKeys获取selectedRows
605
+ */
606
+ dataSource?: T[];
607
+ /**
608
+ * 行唯一标识键名,默认为 'id'
609
+ */
610
+ rowKey?: string | ((record: T) => string);
611
+ }
612
+
613
+ export interface UseTableSelectionReturn<T = any> {
614
+ /**
615
+ * 当前选中的行keys
616
+ */
617
+ selectedRowKeys: Key[];
618
+ /**
619
+ * 当前选中的行数据
620
+ */
621
+ selectedRows: T[];
622
+ /**
623
+ * 处理后的rowSelection配置,传递给Table组件
624
+ */
625
+ rowSelection: TableProps<T>['rowSelection'] | undefined;
626
+ /**
627
+ * 清空选择
628
+ */
629
+ onCleanSelected: () => void;
630
+ /**
631
+ * 是否为受控模式
632
+ */
633
+ isControlled: boolean;
634
+ }
635
+
636
+ export interface IEditTableHookProps<DataType = Record<string, any>> {
637
+ /**
638
+ * @name 表格属性
639
+ */
640
+ tableProps: IUseTableRsp<DataType>['tableProps'];
641
+ /**
642
+ * @name 表格变化事件
643
+ */
644
+ onTableChange?: (params: {
645
+ key: string;
646
+ value: any;
647
+ record: DataType;
648
+ form: {
649
+ setFieldValue: (key: string, value: any) => void;
650
+ setFieldsValue: (values: Record<string, any>) => void;
651
+ validate: (key?: string) => Promise<any>;
652
+ onReload: () => void;
653
+ };
654
+ }) => void;
655
+ /**
656
+ * @name 是否开启编辑
657
+ */
658
+ editTable?: boolean;
659
+ }
660
+
661
+ export type IUseEditTableRsp<DataType = Record<string, any>> = {
662
+ /**
663
+ * @name 表单引用
664
+ */
665
+ formRef: React.MutableRefObject<{
666
+ validate: (key?: string) => Promise<any>;
667
+ setFieldsValue: (values: Record<string, any>) => void;
668
+ setFieldValue: (key: string, value: any) => void;
669
+ onReload: () => void;
670
+ }>;
671
+ /**
672
+ * @name 表格变化事件
673
+ */
674
+ onTableValueChange: DebouncedFunc<(params: { values: Record<string, any>; record: DataType }) => void>;
675
+ /**
676
+ * @name 更新内部状态(不触发外部回调)
677
+ */
678
+ onInternalStateChange: (params: { values: Record<string, any>; record: Record<string, any> }) => void;
679
+ /**
680
+ * @name 表单数据
681
+ */
682
+ formData: Record<string, any>;
683
+ /**
684
+ * @name 表格数据
685
+ */
686
+ tableData: Record<string, any>[];
687
+ /**
688
+ * @name 读取最新表格数据
689
+ */
690
+ getTableData: () => Record<string, any>[];
691
+ /**
692
+ * @name 错误key
693
+ */
694
+ errorKey: string[];
695
+ /**
696
+ * @name 是否全部使用编辑功能
697
+ */
698
+ editTable: boolean;
699
+ /**
700
+ * @name 是否使用编辑组件
701
+ */
702
+ edit: boolean;
703
+ /**
704
+ * @name 表格变化事件
705
+ */
706
+ onEditingChange: (record: Record<string, any>) => void;
707
+ /**
708
+ * @name 取消变化事件
709
+ */
710
+ onCancelChange: () => void;
711
+ /**
712
+ * @name 验证事件
713
+ */
714
+ onValidate: () => Promise<any>;
715
+ /**
716
+ * @name 是否开启编辑单行功能
717
+ */
718
+ isEditing: (record: Record<string, any>, rowKey: string) => boolean;
719
+ /**
720
+ * @name 重置表单数据
721
+ */
722
+ onReload: () => void;
723
+ };
724
+
725
+ // 分页Hook所需类型定义
726
+ export type Data = Record<string, any>;
727
+
728
+ export interface Params {
729
+ [key: string]: any;
730
+ }
731
+
732
+ export interface PaginationOptions<TData extends Data, TParams extends Params> {
733
+ defaultPageSize?: number;
734
+ defaultCurrent?: number;
735
+ onSuccess?: (data: IBasePageRsp<TData>, params: [TParams & Partial<ITablePageOption>]) => void;
736
+ onError?: (e: Error) => void;
737
+ refreshDeps?: any[];
738
+ manual?: boolean;
739
+ ready?: boolean;
740
+ }
741
+
742
+ export type Service<TData extends Data, TParams extends Params> = (
743
+ params: TParams & Partial<ITablePageOption>
744
+ ) => Promise<IBasePageRsp<TData>>;
745
+
746
+ export interface PaginationResult<TData extends Data, TParams extends Params> {
747
+ data: TData[];
748
+ pageInfo: ITablePageOption;
749
+ pagination: {
750
+ pageNo: number;
751
+ pageSize: number;
752
+ totalCount: number;
753
+ totalPage: number;
754
+ onChange: (page: number, pageSize: number) => void;
755
+ changePageNo: (page: number) => void;
756
+ changePageSize: (pageSize: number) => void;
757
+ };
758
+ loading: boolean;
759
+ run: (params?: TParams & Partial<ITablePageOption>) => void;
760
+ params: (TParams & Partial<ITablePageOption>)[];
761
+ refresh: () => void;
762
+ mutate: (data: IBasePageRsp<TData> | ((oldData: IBasePageRsp<TData>) => IBasePageRsp<TData>)) => void;
763
+ error?: Error;
764
+ }
765
+
766
+ /**
767
+ * 表格校验上下文类型
768
+ *
769
+ * 使用方式:
770
+ * validator: (rule, value, callback, tableContext) => {
771
+ * const { currentRecord, allTableData, form } = tableContext;
772
+ * // 校验逻辑...
773
+ * }
774
+ *
775
+ * 注意:保持antd原有的callback参数顺序,tableContext作为第4个参数
776
+ */
777
+ export interface ITableValidatorContext {
778
+ /**
779
+ * 当前行的记录数据(已合并最新的表单输入值)
780
+ * 包含原始record数据和用户当前输入的最新值
781
+ */
782
+ currentRecord: any;
783
+ /**
784
+ * 所有行的数据,按行ID分组
785
+ * 每行数据都是最新的表单值
786
+ * 开发者可以从中过滤出需要的其他行数据
787
+ */
788
+ allTableData: Record<string, any>;
789
+ /**
790
+ * 表单实例,可用于获取表单数据或执行表单操作
791
+ */
792
+ form: any;
793
+ }
794
+
795
+ declare const FeTable: React.ForwardRefExoticComponent<FeTableProps>;