@spacego/fe-components 0.1.0 → 0.2.0

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