villianjs-pro 1.0.0 → 1.0.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 (111) hide show
  1. package/dist/{ProTable3 → Beyond}/index.d.ts +1 -1
  2. package/dist/Beyond/index.js +1 -0
  3. package/dist/Beyond/list.d.ts +5 -0
  4. package/dist/Beyond/list.js +1 -0
  5. package/dist/Beyond/styles/index.d.ts +8 -0
  6. package/dist/Beyond/styles/index.js +1 -0
  7. package/dist/Beyond/types.d.ts +26 -0
  8. package/dist/Button/types.d.ts +1 -1
  9. package/dist/ButtonGroup/styles.js +1 -1
  10. package/dist/Exports/exports.d.ts +3 -0
  11. package/dist/Exports/exports.js +1 -0
  12. package/dist/Exports/index.d.ts +2 -0
  13. package/dist/Exports/index.js +1 -0
  14. package/dist/Exports/types.d.ts +61 -0
  15. package/dist/List/index.d.ts +8 -0
  16. package/dist/List/index.js +1 -0
  17. package/dist/List/list-container.d.ts +37 -0
  18. package/dist/List/list-container.js +1 -0
  19. package/dist/ProTable2/components/Container.d.ts +27 -0
  20. package/dist/ProTable2/components/Container.js +1 -0
  21. package/dist/ProTable2/components/form-content.d.ts +34 -0
  22. package/dist/{ProTable/update/update.js → ProTable2/components/form-content.js} +1 -1
  23. package/dist/ProTable2/components/form-footer.d.ts +32 -0
  24. package/dist/ProTable2/components/form-footer.js +1 -0
  25. package/dist/ProTable2/components/grid-view.d.ts +35 -0
  26. package/dist/ProTable2/components/grid-view.js +1 -0
  27. package/dist/ProTable2/components/header-buttons-wrapper.d.ts +10 -0
  28. package/dist/ProTable2/components/header-buttons-wrapper.js +1 -0
  29. package/dist/ProTable2/components/list/index.d.ts +19 -0
  30. package/dist/ProTable2/components/list/index.js +1 -0
  31. package/dist/ProTable2/components/operation-container.d.ts +39 -0
  32. package/dist/ProTable2/components/operation-container.js +1 -0
  33. package/dist/ProTable2/components/operation-content-router.d.ts +37 -0
  34. package/dist/ProTable2/components/operation-content-router.js +1 -0
  35. package/dist/ProTable2/components/operation-content.d.ts +35 -0
  36. package/dist/ProTable2/components/operation-content.js +1 -0
  37. package/dist/ProTable2/components/row-actions-router.d.ts +8 -0
  38. package/dist/{ProTable3/hooks/utils.js → ProTable2/components/row-actions-router.js} +1 -1
  39. package/dist/ProTable2/components/row-actions.d.ts +59 -0
  40. package/dist/ProTable2/components/row-actions.js +1 -0
  41. package/dist/ProTable2/components/search.d.ts +2 -1
  42. package/dist/ProTable2/components/search.js +1 -1
  43. package/dist/ProTable2/context.d.ts +21 -0
  44. package/dist/ProTable2/context.js +1 -0
  45. package/dist/ProTable2/hooks/usePagination.js +1 -0
  46. package/dist/ProTable2/hooks/useRouterNavigation.d.ts +10 -0
  47. package/dist/ProTable2/hooks/useRouterNavigation.js +1 -0
  48. package/dist/ProTable2/table.js +1 -1
  49. package/dist/ProTable2/types.d.ts +382 -2
  50. package/dist/TabSelector/TabSelector.d.ts +3 -0
  51. package/dist/TabSelector/TabSelector.js +1 -0
  52. package/dist/TabSelector/index.d.ts +2 -0
  53. package/dist/TabSelector/index.js +1 -0
  54. package/dist/TabSelector/modal.d.ts +16 -0
  55. package/dist/TabSelector/modal.js +1 -0
  56. package/dist/TabSelector/selected-items-display.d.ts +11 -0
  57. package/dist/TabSelector/selected-items-display.js +1 -0
  58. package/dist/TabSelector/styles.d.ts +2 -0
  59. package/dist/TabSelector/styles.js +1 -0
  60. package/dist/TabSelector/types.d.ts +24 -0
  61. package/dist/index.d.ts +5 -1
  62. package/dist/index.js +1 -1
  63. package/dist/locale/langs/zh-cn/index.js +1 -1
  64. package/package.json +1 -1
  65. package/dist/ProTable/context.d.ts +0 -59
  66. package/dist/ProTable/context.js +0 -1
  67. package/dist/ProTable/form-footer.d.ts +0 -26
  68. package/dist/ProTable/form-footer.js +0 -1
  69. package/dist/ProTable/index.d.ts +0 -2
  70. package/dist/ProTable/index.js +0 -1
  71. package/dist/ProTable/list.d.ts +0 -5
  72. package/dist/ProTable/list.js +0 -1
  73. package/dist/ProTable/styles.d.ts +0 -7
  74. package/dist/ProTable/styles.js +0 -1
  75. package/dist/ProTable/table.d.ts +0 -3
  76. package/dist/ProTable/table.js +0 -1
  77. package/dist/ProTable/types.d.ts +0 -121
  78. package/dist/ProTable/update/index.d.ts +0 -1
  79. package/dist/ProTable/update/index.js +0 -1
  80. package/dist/ProTable/update/update.d.ts +0 -3
  81. package/dist/ProTable3/components/index.d.ts +0 -2
  82. package/dist/ProTable3/components/index.js +0 -1
  83. package/dist/ProTable3/components/list/index.d.ts +0 -19
  84. package/dist/ProTable3/components/list/index.js +0 -1
  85. package/dist/ProTable3/components/search/index.d.ts +0 -2
  86. package/dist/ProTable3/components/search/index.js +0 -1
  87. package/dist/ProTable3/container.d.ts +0 -3
  88. package/dist/ProTable3/container.js +0 -1
  89. package/dist/ProTable3/context.d.ts +0 -13
  90. package/dist/ProTable3/context.js +0 -1
  91. package/dist/ProTable3/hooks/types.d.ts +0 -72
  92. package/dist/ProTable3/hooks/useBatchRemoveButton.d.ts +0 -38
  93. package/dist/ProTable3/hooks/useBatchRemoveButton.js +0 -1
  94. package/dist/ProTable3/hooks/useCreateButton.d.ts +0 -34
  95. package/dist/ProTable3/hooks/useCreateButton.js +0 -1
  96. package/dist/ProTable3/hooks/useExtraButtons.d.ts +0 -26
  97. package/dist/ProTable3/hooks/useExtraButtons.js +0 -1
  98. package/dist/ProTable3/hooks/useOptionRender.d.ts +0 -30
  99. package/dist/ProTable3/hooks/useOptionRender.js +0 -1
  100. package/dist/ProTable3/hooks/usePagination.js +0 -1
  101. package/dist/ProTable3/hooks/utils.d.ts +0 -12
  102. package/dist/ProTable3/index.js +0 -1
  103. package/dist/ProTable3/styles.d.ts +0 -7
  104. package/dist/ProTable3/styles.js +0 -1
  105. package/dist/ProTable3/table.d.ts +0 -2
  106. package/dist/ProTable3/table.js +0 -1
  107. package/dist/ProTable3/types.d.ts +0 -106
  108. /package/dist/{ProTable → Beyond}/types.js +0 -0
  109. /package/dist/{ProTable3/hooks → Exports}/types.js +0 -0
  110. /package/dist/{ProTable3 → ProTable2}/hooks/usePagination.d.ts +0 -0
  111. /package/dist/{ProTable3 → TabSelector}/types.js +0 -0
@@ -1,11 +1,239 @@
1
1
  import * as React from "react";
2
2
  import type { SizeType } from "antd/es/config-provider/SizeContext";
3
- import { type ProTableProps as AntdProTableProps } from "@ant-design/pro-components";
3
+ import { type ProTableProps as AntdProTableProps, type ProColumns } from "@ant-design/pro-components";
4
+ import type { Key } from "react";
5
+ import type { ButtonGroupItem } from "../ButtonGroup";
6
+ import type { DrawerProps } from "antd";
4
7
  import type { FormSchema } from "@ant-design/pro-form/es/components/SchemaForm/typing";
8
+ import type { ProFormColumnsType } from "../Form/types";
9
+ import type { ModalProps } from "../Modal/components/antd";
10
+ /**
11
+ * 表格操作模式
12
+ */
13
+ export type VlianTableMode = "modal" | "drawer" | "router";
14
+ /**
15
+ * 操作类型
16
+ */
17
+ export type OperationType = "list" | "create" | "update" | "view";
18
+ /**
19
+ * 视图显示模式
20
+ */
21
+ export type ViewMode = "table" | "grid";
22
+ /**
23
+ * 网格卡片渲染函数
24
+ */
25
+ export type GridCardRender<T = any> = (record: T, index: number) => React.ReactNode;
26
+ /**
27
+ * 提取 FormSchema 的 submitter 类型
28
+ */
29
+ type FormSchemaSubmitter<T, ValueType extends string = 'text'> = FormSchema<T, ValueType>['submitter'];
5
30
  /**
6
31
  * 搜索表单类型
7
32
  */
8
33
  export type SearchType = Extract<FormSchema["layoutType"], "QueryFilter" | "Form">;
34
+ /**
35
+ * ProTableSearch 组件属性
36
+ * 继承 FormSchema 的所有属性,并扩展自定义属性
37
+ */
38
+ export type ProTableSearchProps<T = Record<string, any>, ValueType extends string = 'text'> = Omit<FormSchema<T, ValueType>, 'layoutType' | 'submitter' | 'columns'> & {
39
+ /**
40
+ * @description 布局类型
41
+ * @default Form
42
+ */
43
+ layoutType?: SearchType;
44
+ /**
45
+ * @description 表单列配置(支持 ProColumns 和 ProFormColumnsType)
46
+ * @default []
47
+ */
48
+ columns?: ProColumns<T, ValueType>[] | ProFormColumnsType<T, ValueType>[];
49
+ /**
50
+ * @description 标签宽度
51
+ * @default auto
52
+ */
53
+ labelWidth?: string | number;
54
+ /**
55
+ * @description 标签布局属性
56
+ */
57
+ labelCol?: React.CSSProperties;
58
+ /**
59
+ * @description 提交按钮配置,设置为 false 时隐藏提交按钮
60
+ */
61
+ submitter?: FormSchemaSubmitter<T, ValueType> | {
62
+ /**
63
+ * @description 自定义渲染提交按钮
64
+ */
65
+ render?: false | ((props: any, doms: React.ReactNode[]) => React.ReactNode);
66
+ /**
67
+ * @description 搜索配置
68
+ */
69
+ searchConfig?: {
70
+ /**
71
+ * @description 提交按钮文本
72
+ */
73
+ submitText?: string;
74
+ /**
75
+ * @description 重置按钮文本
76
+ */
77
+ resetText?: string;
78
+ };
79
+ [key: string]: any;
80
+ };
81
+ };
82
+ /**
83
+ * 搜索配置
84
+ */
85
+ export type SearchConfig<T = Record<string, any>, ValueType = "text"> = {
86
+ /**
87
+ * @description 布局类型
88
+ * @default Form
89
+ */
90
+ layoutType?: SearchType;
91
+ /**
92
+ * @description 表单布局
93
+ * @default inline
94
+ */
95
+ layout?: "horizontal" | "vertical" | "inline";
96
+ /**
97
+ * @description 搜索表单其他属性(排除 columns,因为 columns 由表格 columns 自动生成)
98
+ */
99
+ searchProps?: Omit<ProTableSearchProps<T, ValueType extends string ? ValueType : "text">, "columns" | "layoutType" | "layout">;
100
+ };
101
+ /**
102
+ * 操作按钮配置
103
+ */
104
+ export interface HeaderButtonItem extends Omit<ButtonGroupItem, 'key' | 'onClick' | 'disabled'> {
105
+ /**
106
+ * @description 按钮 key
107
+ */
108
+ key?: string;
109
+ /**
110
+ * @description 按钮是否可见(支持函数形式,根据 selectedRowKeys 动态判断)
111
+ */
112
+ visible?: boolean | ((selectKeys: Key[]) => boolean);
113
+ /**
114
+ * @description 按钮是否禁用(支持函数形式,根据 selectedRowKeys 动态判断)
115
+ */
116
+ disabled?: boolean | ((selectKeys: Key[]) => boolean);
117
+ /**
118
+ * @description 点击回调
119
+ */
120
+ onClick?: (selectKeys: Key[]) => void | Promise<void>;
121
+ }
122
+ /**
123
+ * 操作行按钮配置
124
+ */
125
+ export interface RowButtonItem<T = any> extends Omit<ButtonGroupItem, 'key' | 'onClick' | 'disabled'> {
126
+ /**
127
+ * @description 按钮 key
128
+ */
129
+ key?: string;
130
+ /**
131
+ * @description 按钮是否可见
132
+ */
133
+ visible?: boolean | ((record: T, index: number) => boolean);
134
+ /**
135
+ * @description 按钮是否禁用
136
+ */
137
+ disabled?: boolean | ((record: T, index: number) => boolean);
138
+ /**
139
+ * @description 点击回调
140
+ */
141
+ onClick?: (record: T, index: number) => void | Promise<void>;
142
+ }
143
+ /**
144
+ * 操作内容渲染函数
145
+ */
146
+ export type OperationContentRender<T = any> = (params: {
147
+ type: OperationType;
148
+ record?: T;
149
+ onClose: () => void;
150
+ onSuccess?: () => void;
151
+ }) => React.ReactNode;
152
+ /**
153
+ * 表单底部渲染函数
154
+ */
155
+ export type FormFooterRender<T = any> = (params: {
156
+ /**
157
+ * @description 操作类型
158
+ */
159
+ type: OperationType;
160
+ /**
161
+ * @description 当前记录
162
+ */
163
+ record?: T;
164
+ /**
165
+ * @description 表单实例
166
+ */
167
+ form: any;
168
+ /**
169
+ * @description 提交处理
170
+ */
171
+ onSubmit: () => void;
172
+ /**
173
+ * @description 取消处理
174
+ */
175
+ onCancel: () => void;
176
+ /**
177
+ * @description 提交中状态
178
+ */
179
+ loading?: boolean;
180
+ }) => React.ReactNode;
181
+ /**
182
+ * 表单提交回调
183
+ * @returns 返回 false 时不关闭弹窗和刷新数据;返回 void 或 true 时正常关闭和刷新
184
+ */
185
+ export type FormSubmitCallback<T = any> = (values: T, type: OperationType, record?: T) => Promise<void | false> | void | false;
186
+ /**
187
+ * 内置表单配置
188
+ */
189
+ export interface FormConfig<T = any, ValueType extends string = 'text'> {
190
+ /**
191
+ * @description 是否启用内置表单(设置为 false 时使用 operationContent 自定义)
192
+ * @default true
193
+ */
194
+ enabled?: boolean;
195
+ /**
196
+ * @description 表单列配置(不传则从表格 columns 自动生成)
197
+ */
198
+ columns?: ProFormColumnsType<T, ValueType>[];
199
+ /**
200
+ * @description 表单属性(透传给 Form 组件)
201
+ */
202
+ formProps?: Omit<FormSchema<T, ValueType>, 'columns' | 'onFinish' | 'submitter'>;
203
+ /**
204
+ * @description 自定义表单底部渲染(返回 false 则隐藏底部)
205
+ */
206
+ footerRender?: false | FormFooterRender<T>;
207
+ /**
208
+ * @description 表单提交回调
209
+ */
210
+ onSubmit?: FormSubmitCallback<T>;
211
+ /**
212
+ * @description 新增时的提交按钮文本
213
+ */
214
+ createSubmitText?: string;
215
+ /**
216
+ * @description 编辑时的提交按钮文本
217
+ */
218
+ updateSubmitText?: string;
219
+ /**
220
+ * @description 取消按钮文本
221
+ */
222
+ cancelText?: string;
223
+ /**
224
+ * @description 表单布局
225
+ * @default horizontal
226
+ */
227
+ layout?: "horizontal" | "vertical" | "inline";
228
+ /**
229
+ * @description 标签宽度
230
+ */
231
+ labelCol?: any;
232
+ /**
233
+ * @description 控件宽度
234
+ */
235
+ wrapperCol?: any;
236
+ }
9
237
  /**
10
238
  * 公共属性
11
239
  */
@@ -16,8 +244,160 @@ export type ProTableProps<DataSource = Record<string, any>, ParamsType = Record<
16
244
  size?: SizeType;
17
245
  tableKey?: string;
18
246
  /**
19
- * @description 搜索表单类型
247
+ * @description Table action 的引用,便于自定义触发
248
+ */
249
+ actionRef?: AntdProTableProps<DataSource, ParamsType, ValueType>['actionRef'];
250
+ /**
251
+ * @description 搜索表单类型(已废弃,请使用 search.layoutType)
20
252
  * @default QueryFilter
253
+ * @deprecated 请使用 search.layoutType
21
254
  */
22
255
  searchType?: SearchType;
256
+ /**
257
+ * @description 搜索表单配置
258
+ */
259
+ search?: false | SearchConfig<DataSource, ValueType>;
260
+ /**
261
+ * @description 是否显示新增按钮
262
+ * @default true
263
+ */
264
+ showCreateBtn?: boolean;
265
+ /**
266
+ * @description 新增按钮配置,设置为 false 时不显示
267
+ */
268
+ createBtnProps?: HeaderButtonItem | false;
269
+ /**
270
+ * @description 新增按钮点击回调
271
+ */
272
+ onCreate?: (selectKeys: Key[]) => void | Promise<void>;
273
+ /**
274
+ * @description 是否显示批量删除按钮
275
+ * @default true
276
+ */
277
+ showBatchRemoveBtn?: boolean;
278
+ /**
279
+ * @description 批量删除按钮配置,设置为 false 时不显示
280
+ */
281
+ batchRemoveBtnProps?: HeaderButtonItem | false;
282
+ /**
283
+ * @description 批量删除点击回调
284
+ * @returns 返回 false 时不刷新数据;返回 void 或 true 时正常刷新
285
+ */
286
+ onBatchRemove?: (selectKeys: Key[]) => void | false | Promise<void | false>;
287
+ /**
288
+ * @description 自定义操作按钮列表
289
+ */
290
+ headerButtonItems?: HeaderButtonItem[];
291
+ /**
292
+ * @description ButtonGroup 最大显示按钮数量
293
+ * @default 3
294
+ */
295
+ headerButtonMaxCount?: number;
296
+ /**
297
+ * @description 是否开启页面大小缓存
298
+ * @default false
299
+ */
300
+ openPageSizeCache?: boolean;
301
+ /**
302
+ * @description 默认页面大小
303
+ * @default 10
304
+ */
305
+ defaultPageSize?: number;
306
+ /**
307
+ * @description 操作模式
308
+ * @default modal
309
+ */
310
+ mode?: VlianTableMode;
311
+ /**
312
+ * @description 是否显示查看按钮
313
+ * @default true
314
+ */
315
+ showViewBtn?: boolean;
316
+ /**
317
+ * @description 查看按钮配置
318
+ */
319
+ viewBtnProps?: RowButtonItem<DataSource> | false;
320
+ /**
321
+ * @description 是否显示编辑按钮
322
+ * @default true
323
+ */
324
+ showUpdateBtn?: boolean;
325
+ /**
326
+ * @description 编辑按钮配置
327
+ */
328
+ updateBtnProps?: RowButtonItem<DataSource> | false;
329
+ /**
330
+ * @description 是否显示删除按钮
331
+ * @default true
332
+ */
333
+ showRemoveBtn?: boolean;
334
+ /**
335
+ * @description 删除按钮配置
336
+ */
337
+ removeBtnProps?: RowButtonItem<DataSource> | false;
338
+ /**
339
+ * @description 自定义行操作按钮列表
340
+ */
341
+ rowButtonItems?: RowButtonItem<DataSource>[];
342
+ /**
343
+ * @description 行操作按钮最大显示数量
344
+ * @default 3
345
+ */
346
+ rowButtonMaxCount?: number;
347
+ /**
348
+ * @description Modal 配置
349
+ */
350
+ modalProps?: Omit<ModalProps, 'open' | 'onCancel' | 'children'>;
351
+ /**
352
+ * @description Drawer 配置
353
+ */
354
+ drawerProps?: Omit<DrawerProps, 'open' | 'onClose' | 'children'>;
355
+ /**
356
+ * @description 路由基础路径(router 模式下使用)
357
+ */
358
+ routerBasePath?: string;
359
+ /**
360
+ * @description 操作内容渲染函数
361
+ */
362
+ operationContent?: OperationContentRender<DataSource>;
363
+ /**
364
+ * @description 获取详情数据(用于编辑和查看)
365
+ */
366
+ onGetDetail?: (record: DataSource, index: number) => Promise<DataSource>;
367
+ /**
368
+ * @description 删除回调
369
+ * @returns 返回 false 时不刷新数据;返回 void 或 true 时正常刷新
370
+ */
371
+ onRemove?: (record: DataSource, index: number) => void | false | Promise<void | false>;
372
+ /**
373
+ * @description 内置表单配置
374
+ */
375
+ formConfig?: FormConfig<DataSource, ValueType extends string ? ValueType : 'text'>;
376
+ /**
377
+ * @description 默认视图模式
378
+ * @default table
379
+ */
380
+ defaultViewMode?: ViewMode;
381
+ /**
382
+ * @description 网格卡片渲染函数(网格模式下必需)
383
+ */
384
+ gridCardRender?: GridCardRender<DataSource>;
385
+ /**
386
+ * @description 网格列数配置
387
+ * @default { xs: 1, sm: 2, md: 3, lg: 4, xl: 4, xxl: 6 }
388
+ */
389
+ gridColumns?: {
390
+ xs?: number;
391
+ sm?: number;
392
+ md?: number;
393
+ lg?: number;
394
+ xl?: number;
395
+ xxl?: number;
396
+ };
397
+ /**
398
+ * @description 网格卡片中每行显示的字段数量
399
+ * @default 3
400
+ */
401
+ gridCardFieldsPerRow?: number;
23
402
  };
403
+ export {};
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ import type { TabSelectorProps } from "./types";
3
+ export declare const TabSelector: React.FC<TabSelectorProps>;
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{useState}from"react";import*as React from"react";import{theme}from"antd";import classNames from"classnames";import{Typography}from"../Text";import{useStyles}from"./styles";import{SelectedItemsDisplay}from"./selected-items-display";import{SelectorModal}from"./modal";export var TabSelector=function(param){var tabs=param.tabs,_param_value=param.value,value=_param_value===void 0?{}:_param_value,onChange=param.onChange,_param_placeholder=param.placeholder,placeholder=_param_placeholder===void 0?"点击选择项目...":_param_placeholder,_param_disabled=param.disabled,disabled=_param_disabled===void 0?false:_param_disabled,_param_readonly=param.readonly,readonly=_param_readonly===void 0?false:_param_readonly,columns=param.columns;var hashId=theme.useToken().hashId;var modalRef=React.useRef(null);var _useState=_sliced_to_array(useState(value),2),selectedData=_useState[0],setSelectedData=_useState[1];useStyles();var handleClick=function(){var _modalRef_current;if(disabled||readonly){return}if(!tabs||tabs&&tabs.length===0){console.error("未配置tabs");return}console.info("a");(_modalRef_current=modalRef.current)===null||_modalRef_current===void 0?void 0:_modalRef_current.open()};var handleConfirm=function(data){setSelectedData(data);onChange===null||onChange===void 0?void 0:onChange(data)};var handleRemoveItem=function(item){var newData=_object_spread({},selectedData);var _iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;try{for(var _iterator=Object.keys(newData)[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){var tabKey=_step.value;var tabItems=newData[tabKey]||[];var itemIndex=tabItems.findIndex(function(selected){return selected.id===item.id});if(itemIndex!==-1){newData[tabKey]=tabItems.filter(function(selected){return selected.id!==item.id});break}}}catch(err){_didIteratorError=true;_iteratorError=err}finally{try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}}setSelectedData(newData);onChange===null||onChange===void 0?void 0:onChange(newData)};var getAllSelectedItems=function(){return Object.values(selectedData).flat()};var getTotalCount=function(){return getAllSelectedItems().length};return React.createElement("div",{className:classNames(hashId,"vlian-tab-modal"),onClick:handleClick},getTotalCount()>0?React.createElement(SelectedItemsDisplay,{items:getAllSelectedItems(),onRemove:handleRemoveItem,compact:true}):React.createElement(Typography.Text,{type:"secondary"},placeholder),React.createElement(SelectorModal,{tabs:tabs,ref:modalRef,onConfirm:handleConfirm,initialValue:selectedData,columns:columns}))};
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./TabSelector";
@@ -0,0 +1 @@
1
+ export*from"./types";export*from"./TabSelector";
@@ -0,0 +1,16 @@
1
+ import * as React from "react";
2
+ import type { TabConfig, TableItem } from "./types";
3
+ import type { ProColumns } from '@ant-design/pro-components';
4
+ export type ModalProps = {
5
+ tabs: TabConfig[];
6
+ initialValue: Record<string, TableItem[]>;
7
+ onConfirm: (value: Record<string, TableItem[]>) => void;
8
+ columns?: ProColumns<Record<string, any>>[];
9
+ rowKey?: string;
10
+ width?: string;
11
+ };
12
+ export type ModalInst = {
13
+ open: () => void;
14
+ close: () => void;
15
+ };
16
+ export declare const SelectorModal: (props: ModalProps & React.RefAttributes<ModalInst>) => React.ReactElement | null;
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{forwardRef,useImperativeHandle,useState,useEffect}from"react";import*as React from"react";import{Modal}from"../Modal";import{Tabs,Badge}from"antd";import{ProTable}from"@ant-design/pro-components";import{Typography}from"../Text";export var SelectorModal=forwardRef(function(param,ref){var _param_tabs=param.tabs,tabs=_param_tabs===void 0?[]:_param_tabs,initialValue=param.initialValue,onConfirm=param.onConfirm,columns=param.columns,_param_rowKey=param.rowKey,rowKey=_param_rowKey===void 0?"id":_param_rowKey,_param_width=param.width,width=_param_width===void 0?"800px":_param_width;var _tabs_;var _useState=_sliced_to_array(useState(false),2),open=_useState[0],setOpen=_useState[1];var _useState1=_sliced_to_array(useState(initialValue),2),selectedData=_useState1[0],setSelectedData=_useState1[1];var _useState2=_sliced_to_array(useState(((_tabs_=tabs[0])===null||_tabs_===void 0?void 0:_tabs_.key)||""),2),activeTab=_useState2[0],setActiveTab=_useState2[1];useEffect(function(){if(open){var _tabs_;setSelectedData(initialValue);setActiveTab(((_tabs_=tabs[0])===null||_tabs_===void 0?void 0:_tabs_.key)||"")}},[open,initialValue,tabs]);var handleSelectionChange=function(tabKey,items){setSelectedData(function(prev){return _object_spread_props(_object_spread({},prev),_define_property({},tabKey,items))})};var handleCancel=function(e){e===null||e===void 0?void 0:e.stopPropagation();e===null||e===void 0?void 0:e.preventDefault();setOpen(false)};var handleConfirm=function(e){e.stopPropagation();e.preventDefault();onConfirm===null||onConfirm===void 0?void 0:onConfirm(selectedData);handleCancel(e)};var getTotalSelectedCount=function(){return Object.values(selectedData).reduce(function(total,items){return total+items.length},0)};var getTabSelectedCount=function(tabKey){var _selectedData_tabKey;return((_selectedData_tabKey=selectedData[tabKey])===null||_selectedData_tabKey===void 0?void 0:_selectedData_tabKey.length)||0};useImperativeHandle(ref,function(){return{open:function(){setOpen(true)},close:function(){return handleCancel()}}});return React.createElement(Modal.CustomModal,{width:width,maxHeight:"80vh",title:React.createElement(Tabs,{activeKey:activeTab,items:tabs,onChange:setActiveTab}),open:open,maskClosable:false,keyboard:false,destroyOnHidden:true,okText:"确认选择 (".concat(getTotalSelectedCount()>0?getTotalSelectedCount():0,")"),onCancel:handleCancel,onOk:handleConfirm,getContainer:false,styles:{body:{padding:0}}},tabs.map(function(tab){return React.createElement(ProTable,{style:{display:activeTab!==tab.key?"none":"block"},cardProps:{bodyStyle:{padding:0}},key:tab.key,columns:columns,dataSource:tab.data,headerTitle:React.createElement(Typography,null,tab.label,React.createElement(Badge,null,getTabSelectedCount(tab.key)," ")),search:false,toolbar:{search:(tab===null||tab===void 0?void 0:tab.onSearch)?{onSearch:tab===null||tab===void 0?void 0:tab.onSearch,placeholder:"请输入关键字"}:undefined},options:false,rowKey:rowKey,rowSelection:{type:tab.selectionType,defaultSelectedRowKeys:(selectedData[tab.key]||[]).map(function(item){console.info("ad",item,item[rowKey]);return item[rowKey]}),onChange:function(_,selectedRows){handleSelectionChange(tab.key,selectedRows)}}})}))});
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import type { TableItem } from "./types";
3
+ interface SelectedItemsDisplayProps {
4
+ items: TableItem[];
5
+ onRemove?: (item: TableItem) => void;
6
+ readonly?: boolean;
7
+ compact?: boolean;
8
+ renderItem?: (item: TableItem) => React.ReactNode;
9
+ }
10
+ export declare function SelectedItemsDisplay({ items, onRemove, readonly, compact, renderItem, }: SelectedItemsDisplayProps): import("react/jsx-runtime").JSX.Element | null;
11
+ export {};
@@ -0,0 +1 @@
1
+ function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}import{useState,useRef,useEffect}from"react";import*as React from"react";import{useSelectedItemStyles}from"./styles";import classNames from"classnames";import{Tag,theme,Popover}from"antd";import{PlusOutlined}from"@ant-design/icons";export function SelectedItemsDisplay(param){var items=param.items,onRemove=param.onRemove,_param_readonly=param.readonly,readonly=_param_readonly===void 0?false:_param_readonly,_param_compact=param.compact,compact=_param_compact===void 0?false:_param_compact,renderItem=param.renderItem;var hashId=theme.useToken().hashId;var _useState=_sliced_to_array(useState(items.length),2),visibleCount=_useState[0],setVisibleCount=_useState[1];var containerRef=useRef(null);var itemRefs=useRef([]);useSelectedItemStyles();useEffect(function(){var calculateVisibleItems=function(){if(!containerRef.current||items.length===0)return;var container=containerRef.current;var containerWidth=container.offsetWidth;var reservedWidth=80;var currentWidth=0;var visibleItems=0;for(var i=0;i<items.length;i++){var itemRef=itemRefs.current[i];if(!itemRef)continue;var itemWidth=itemRef.offsetWidth+(compact?4:8);if(currentWidth+itemWidth>containerWidth){break}if(i<items.length-1&&currentWidth+itemWidth+reservedWidth>containerWidth){break}currentWidth+=itemWidth;visibleItems=i+1}setVisibleCount(Math.max(1,visibleItems))};var timer=setTimeout(calculateVisibleItems,100);window.addEventListener("resize",calculateVisibleItems);return function(){clearTimeout(timer);window.removeEventListener("resize",calculateVisibleItems)}},[items,compact]);if(items.length===0){return null}var visibleItems=items.slice(0,visibleCount);var hiddenItems=items.slice(visibleCount);var hasHiddenItems=hiddenItems.length>0;return React.createElement("div",{ref:containerRef,className:classNames(hashId,"vlian-tab-modal__slected-items")},visibleItems.map(function(item,index){return React.createElement(Tag,{key:item.id,ref:function(el){return itemRefs.current[index]=el},closable:!readonly,onClose:function(e){e.preventDefault();e.stopPropagation();onRemove===null||onRemove===void 0?void 0:onRemove(item)}},renderItem?renderItem(item):item.name)}),hasHiddenItems&&React.createElement(Popover,{content:React.createElement("div",{className:classNames(hashId,"vlian-tab-modal__slected-items-hidden")},hiddenItems.map(function(item){return React.createElement(Tag,{key:item.id,closable:!readonly,onClose:function(e){e.preventDefault();e.stopPropagation();onRemove===null||onRemove===void 0?void 0:onRemove(item)}},renderItem?renderItem(item):item.name)})),title:"title"},React.createElement(PlusOutlined,null),hiddenItems.length))}
@@ -0,0 +1,2 @@
1
+ export declare const useStyles: () => void;
2
+ export declare const useSelectedItemStyles: () => void;
@@ -0,0 +1 @@
1
+ import{theme}from"antd";import{useStyleRegister}from"@ant-design/cssinjs";export var useStyles=function(){var _theme_useToken=theme.useToken(),hashId=_theme_useToken.hashId,token=_theme_useToken.token,GlobalToken=_theme_useToken.theme;useStyleRegister({theme:GlobalToken,token:token,path:["VlianTabModal"],hashId:hashId},function(){return{".vlian-tab-modal":{width:"100%",padding:token.paddingXS,borderRadius:token.borderRadiusSM,border:"1px solid ".concat(token.colorBorderSecondary),cursor:"pointer","& .ant-tabs-nav":{marginBottom:0}}}})};export var useSelectedItemStyles=function(){var _theme_useToken=theme.useToken(),hashId=_theme_useToken.hashId,token=_theme_useToken.token,GlobalToken=_theme_useToken.theme;useStyleRegister({theme:GlobalToken,token:token,path:["VlianTabModalSelectedItems"],hashId:hashId},function(){return{".vlian-tab-modal__slected-items":{display:"flex",flexWrap:"wrap",gap:"5px",alignItems:"center",width:"100%"},".vlian-tab-modal__slected-items-hidden":{display:"flex",flexWrap:"wrap",gap:"5px",alignItems:"center"}}})};
@@ -0,0 +1,24 @@
1
+ import type { ProColumns } from "@ant-design/pro-components";
2
+ export interface TableItem {
3
+ id: number;
4
+ name: string;
5
+ code: string;
6
+ category: string;
7
+ [key: string]: any;
8
+ }
9
+ export interface TabConfig {
10
+ key: string;
11
+ label: string;
12
+ selectionType: 'checkbox' | 'radio';
13
+ data: TableItem[];
14
+ onSearch?: (value: string) => void;
15
+ }
16
+ export interface TabSelectorProps {
17
+ tabs: TabConfig[];
18
+ value?: Record<string, TableItem[]>;
19
+ onChange?: (value: Record<string, TableItem[]>) => void;
20
+ placeholder?: string;
21
+ disabled?: boolean;
22
+ readonly?: boolean;
23
+ columns?: ProColumns<Record<string, any>>[];
24
+ }
package/dist/index.d.ts CHANGED
@@ -6,6 +6,10 @@ export { VaSwitch, type VASwitchProps } from "./Switch";
6
6
  export { CheckCard, type CheckCardProps } from "./CheckCard";
7
7
  export { Typography } from "./Text";
8
8
  export { Image } from "./images";
9
- export * from "./ProTable";
9
+ export * from "./ProTable2";
10
10
  export { ButtonGroup, type ButtonGroupProps, type ButtonGroupItem } from './ButtonGroup';
11
11
  export { ConfirmButton, type ConfirmButtonProps } from './ConfirmButton';
12
+ export * from "./TabSelector";
13
+ export * from "./Beyond";
14
+ export * from "./List";
15
+ export * from "./Exports";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export{Card}from"./Card";export*from"./Card";export{Modal}from"./Modal";export*from"./Modal";export{VaSwitch}from"./Switch";export{CheckCard}from"./CheckCard";export{Typography}from"./Text";export{Image}from"./images";export*from"./ProTable";export{ButtonGroup}from"./ButtonGroup";export{ConfirmButton}from"./ConfirmButton";
1
+ export{Card}from"./Card";export*from"./Card";export{Modal}from"./Modal";export*from"./Modal";export{VaSwitch}from"./Switch";export{CheckCard}from"./CheckCard";export{Typography}from"./Text";export{Image}from"./images";export*from"./ProTable2";export{ButtonGroup}from"./ButtonGroup";export{ConfirmButton}from"./ConfirmButton";export*from"./TabSelector";export*from"./Beyond";export*from"./List";export*from"./Exports";
@@ -1 +1 @@
1
- var local={switch:{activeText:"启用",inactiveText:"禁用"},form:{text:"请输入",select:"请选择",start:"开始",ended:"结束",reset:"重置",submit:"提交",query:"查询"},table:{createBtnText:"新增",batchRemoveBtnText:"批量删除",batchRemoveModalTitle:"警告",batchRemoveModalContent:"即将删除{count}项数据,删除后无法恢复,是否继续?",createTitle:"新增",updateTitle:"更新",viewTitle:"详情",operateColumnTitle:"操作",viewBtnText:"查看",updateBtnText:"编辑",removeBtnText:"删除",moreBtnText:"更多",removeConfirm:"确定要删除这项吗?",removeTip:"警告?",backText:"返回",pagePt:"请输入添加项",pageAddText:"保存"},upload:{btnText:"上传",limitSize:"文件大小不能超过 {limit}MB!",uploadFail:"上传失败"},adminTransfer:{unSelectText:"取消选择",selectText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除"},treeTable:{triggerText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除",waitSelectListText:"待选列表",selectedListText:"已选列表",searchTextPt:"请输入关键字",selectedText:"已选",unselectedText:"未选",treeTitle:"树型列表"},exports:{text:"导出",progressResText:"正在导出",successResText:"导出成功",errorResText:"导出失败",cancelBtnText:"取消",exportTitle:"导出",retryText:"重试"},treePanel:{selectedText:"已选",clearText:"清空",rootText:"全部",limitText:"最多选择${maxCount}项。",searchPlaceholder:"请输入关键字"}};export default local;
1
+ var local={switch:{activeText:"启用",inactiveText:"禁用"},form:{text:"请输入",select:"请选择",start:"开始",ended:"结束",reset:"重置",submit:"提交",query:"查询"},table:{createBtnText:"新增",batchRemoveBtnText:"批量删除",batchRemoveModalTitle:"警告",batchRemoveModalContent:"即将删除{count}项数据,删除后无法恢复,是否继续?",createTitle:"新增",updateTitle:"更新",viewTitle:"详情",operateColumnTitle:"操作",viewBtnText:"查看",updateBtnText:"编辑",removeBtnText:"删除",moreBtnText:"更多",removeConfirm:"确定要删除这项吗?",removeTip:"警告?",backText:"返回",pagePt:"请输入添加项",pageAddText:"保存",createSubmitText:"创建",updateSubmitText:"保存",submitText:"提交",cancelText:"取消",closeText:"关闭"},upload:{btnText:"上传",limitSize:"文件大小不能超过 {limit}MB!",uploadFail:"上传失败"},adminTransfer:{unSelectText:"取消选择",selectText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除"},treeTable:{triggerText:"选择",selectedOption:"已选{length}项",clear:"清空",removeBtnText:"删除",waitSelectListText:"待选列表",selectedListText:"已选列表",searchTextPt:"请输入关键字",selectedText:"已选",unselectedText:"未选",treeTitle:"树型列表"},exports:{text:"导出",progressResText:"正在导出",successResText:"导出成功",errorResText:"导出失败",cancelBtnText:"取消",exportTitle:"导出",retryText:"重试"},treePanel:{selectedText:"已选",clearText:"清空",rootText:"全部",limitText:"最多选择${maxCount}项。",searchPlaceholder:"请输入关键字"}};export default local;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "villianjs-pro",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "type": "module",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,59 +0,0 @@
1
- import { type Dispatch, type SetStateAction } from "react";
2
- import type { VlianTableMode, OperateType, TablePermissionMap, HasPermissionFn } from "./types";
3
- import type { ConfirmMode } from "../ConfirmButton";
4
- import type { SizeType } from "antd/es/config-provider/SizeContext";
5
- export interface VlianTableContextType {
6
- size?: SizeType;
7
- baseUrl: string;
8
- /**
9
- * @description 模式
10
- */
11
- mode: VlianTableMode;
12
- /**
13
- * @description 是否显示搜索
14
- */
15
- visibleSearch: boolean;
16
- /**
17
- * @description 设置是否显示搜索
18
- */
19
- setVisibleSearch: Dispatch<SetStateAction<boolean>>;
20
- /**
21
- * @description 当前操作
22
- */
23
- operateType: OperateType;
24
- /**
25
- * @description 设置当前操作
26
- */
27
- setOperateType: Dispatch<SetStateAction<OperateType>>;
28
- /**
29
- * @description 当前记录
30
- */
31
- currentRecord?: any;
32
- /**
33
- * @description 设置当前记录
34
- */
35
- setCurrentRecord: Dispatch<SetStateAction<any>>;
36
- removeMode: ConfirmMode;
37
- currentIndex: number;
38
- onViewClick: (record: any, index: number, action: any) => Promise<any>;
39
- onUpdateClick: (record: any, index: number, action: any) => Promise<any>;
40
- onRemoveClick: (record: any, index: number, action: any) => Promise<any>;
41
- handleOpenPopup: () => Promise<any>;
42
- /**
43
- * @description 权限
44
- */
45
- permission?: TablePermissionMap;
46
- /**
47
- * @description 判断权限
48
- */
49
- hasPermission?: HasPermissionFn;
50
- /**
51
- * 设置当前信息
52
- * @param type
53
- * @param record
54
- * @param index
55
- */
56
- setCurrentInfo: (type: OperateType, record: any, index: number) => Promise<void>;
57
- closePopup: () => Promise<void>;
58
- }
59
- export declare const VlianTableContext: import("react").Context<VlianTableContextType | undefined>;
@@ -1 +0,0 @@
1
- import{createContext}from"react";export var VlianTableContext=createContext(undefined);
@@ -1,26 +0,0 @@
1
- import * as React from 'react';
2
- import { type ButtonProps } from "../Button";
3
- export type FormFooterConfig = {
4
- cancelText?: React.ReactNode;
5
- confirmText?: React.ReactNode;
6
- };
7
- export type FormFooterProps = {
8
- config?: FormFooterConfig;
9
- /** @name 提交按钮的 props */
10
- submitButtonProps?: false | (ButtonProps & {
11
- preventDefault?: boolean;
12
- });
13
- /** @name 重置按钮的 props */
14
- resetButtonProps?: false | (ButtonProps & {
15
- preventDefault?: boolean;
16
- });
17
- render?: ((props: FormFooterProps & Record<string, any> & {
18
- submit: () => void;
19
- reset: () => void;
20
- }, dom: React.JSX.Element[]) => React.ReactNode[] | React.ReactNode | false) | false;
21
- onSubmit?: () => void;
22
- onReset?: () => void;
23
- submitterPosition?: React.CSSProperties['justifyContent'];
24
- submitLoading?: boolean;
25
- };
26
- export declare const FormFooter: React.FC<FormFooterProps>;
@@ -1 +0,0 @@
1
- function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}import*as React from"react";import{Flex}from"antd";import{Button}from"../Button";import{useLocale}from"../locale";import{useContext}from"react";import{VlianTableContext}from"./context.ts";export var FormFooter=function(props){var tmp=props.config,_ref=tmp===void 0?{}:tmp,cancelText=_ref.cancelText,confirmText=_ref.confirmText,resetButtonProps=props.resetButtonProps,submitButtonProps=props.submitButtonProps,onSubmit=props.onSubmit,onReset=props.onReset,render=props.render,submitLoading=props.submitLoading,submitterPosition=props.submitterPosition;var context=useContext(VlianTableContext);var size=(context||{}).size;var messages=useLocale().messages;var handleSubmitClick=function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){onSubmit===null||onSubmit===void 0?void 0:onSubmit();return[2]})})()};var handleCancelClick=function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){onReset===null||onReset===void 0?void 0:onReset();return[2]})})()};var ResetButton=React.useMemo(function(){if(resetButtonProps===false){return null}var _$props=_object_spread_props(_object_spread({size:size},resetButtonProps),{onClick:handleCancelClick});return React.createElement(Button,_object_spread({key:"cancel"},_$props),cancelText!==null&&cancelText!==void 0?cancelText:messages.form.reset)},[cancelText,resetButtonProps]);var SubmitButton=React.useMemo(function(){if(resetButtonProps===false){return null}var _$props=_object_spread_props(_object_spread({type:"primary",size:size,loading:submitLoading},submitButtonProps),{onClick:handleSubmitClick});return React.createElement(Button,_object_spread({key:"submit"},_$props),confirmText!==null&&confirmText!==void 0?confirmText:messages.form.submit)},[confirmText,submitButtonProps,handleSubmitClick]);var currentRender=React.useCallback(function(){if(render===false){return null}if(render){return render(_object_spread_props(_object_spread({},props),{submit:handleSubmitClick,reset:handleCancelClick}),[ResetButton,SubmitButton].filter(Boolean))}return[ResetButton,SubmitButton]},[ResetButton,SubmitButton]);return React.createElement(Flex,{justify:submitterPosition,align:"center",gap:8},currentRender())};
@@ -1,2 +0,0 @@
1
- export { VlianTable } from './table.tsx';
2
- export type { VlianTableProps, VlianTableListInst } from './types';