villianjs-pro 1.0.89 → 1.0.92
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.
- package/README.md +140 -66
- package/dist/ProTable/components/list.js +1 -1
- package/package.json +35 -5
package/README.md
CHANGED
|
@@ -1,69 +1,143 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// Alternatively, use this for stricter rules
|
|
25
|
-
...tseslint.configs.strictTypeChecked,
|
|
26
|
-
// Optionally, add this for stylistic rules
|
|
27
|
-
...tseslint.configs.stylisticTypeChecked,
|
|
28
|
-
|
|
29
|
-
// Other configs...
|
|
30
|
-
],
|
|
31
|
-
languageOptions: {
|
|
32
|
-
parserOptions: {
|
|
33
|
-
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
34
|
-
tsconfigRootDir: import.meta.dirname,
|
|
35
|
-
},
|
|
36
|
-
// other options...
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
])
|
|
1
|
+
# villianjs-pro
|
|
2
|
+
|
|
3
|
+
React + TypeScript 业务组件库,基于 Ant Design / Pro Components,提供高频后台场景组件(表格、选择器、导入导出、列表、表单增强等)。
|
|
4
|
+
|
|
5
|
+
React + TypeScript component library built on Ant Design / Pro Components for admin dashboards and enterprise apps.
|
|
6
|
+
|
|
7
|
+
## Features | 核心能力
|
|
8
|
+
|
|
9
|
+
- `ProTable`:增强表格(搜索、分页、列表/网格视图、操作栏)
|
|
10
|
+
- `TabSelector`:多 Tab 弹窗选择器(单选/多选)
|
|
11
|
+
- `Imports`:文件导入流程(上传、进度、结果、历史)
|
|
12
|
+
- `Exports`:文件导出流程(同步/异步、轮询状态)
|
|
13
|
+
- `List.Container`:分页卡片列表容器
|
|
14
|
+
- `TreeSelect`:树形选择器
|
|
15
|
+
- `Image`:支持缓存与过期控制的图片组件
|
|
16
|
+
- `Button` / `ConfirmButton` / `ButtonGroup`:按钮增强组件
|
|
17
|
+
- `Card` / `Modal` / `CheckCard` / `Typography` / `Beyond`:常用业务 UI 组件
|
|
18
|
+
- 内置工具:`library`、`locale`、`hooks`
|
|
19
|
+
|
|
20
|
+
## Install | 安装
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm i villianjs-pro
|
|
40
24
|
```
|
|
41
25
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
import
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
reactX.configs['recommended-typescript'],
|
|
57
|
-
// Enable lint rules for React DOM
|
|
58
|
-
reactDom.configs.recommended,
|
|
59
|
-
],
|
|
60
|
-
languageOptions: {
|
|
61
|
-
parserOptions: {
|
|
62
|
-
project: ['./tsconfig.node.json', './tsconfig.app.json'],
|
|
63
|
-
tsconfigRootDir: import.meta.dirname,
|
|
64
|
-
},
|
|
65
|
-
// other options...
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
])
|
|
26
|
+
## Quick Start | 快速开始
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import React from "react";
|
|
30
|
+
import { ProTable, Button, Imports, Exports, TabSelector } from "villianjs-pro";
|
|
31
|
+
|
|
32
|
+
export default function DemoPage() {
|
|
33
|
+
return (
|
|
34
|
+
<div>
|
|
35
|
+
<Button type="primary">Action</Button>
|
|
36
|
+
{/* more business components */}
|
|
37
|
+
</div>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
69
40
|
```
|
|
41
|
+
|
|
42
|
+
## Components | 组件总览
|
|
43
|
+
|
|
44
|
+
### Data Display & Interaction | 数据展示与交互
|
|
45
|
+
|
|
46
|
+
- `ProTable`
|
|
47
|
+
- `List`, `ListContainer`
|
|
48
|
+
- `Card`
|
|
49
|
+
- `CheckCard`
|
|
50
|
+
- `TreeSelect`
|
|
51
|
+
- `TabSelector`
|
|
52
|
+
- `Beyond`
|
|
53
|
+
- `Typography`
|
|
54
|
+
|
|
55
|
+
### Workflow Components | 业务流程组件
|
|
56
|
+
|
|
57
|
+
- `Imports`, `ImportContextProvider`
|
|
58
|
+
- `Exports`
|
|
59
|
+
- `ProForm`
|
|
60
|
+
|
|
61
|
+
### Basic UI | 基础 UI
|
|
62
|
+
|
|
63
|
+
- `Button`
|
|
64
|
+
- `ConfirmButton`
|
|
65
|
+
- `ButtonGroup`
|
|
66
|
+
- `VaSwitch`
|
|
67
|
+
- `Modal`
|
|
68
|
+
- `Image`
|
|
69
|
+
|
|
70
|
+
### Utilities | 工具能力
|
|
71
|
+
|
|
72
|
+
- `library`(db / file / string / form / is / table 等)
|
|
73
|
+
- `locale`(`zh-cn` / `en-us`)
|
|
74
|
+
- `hooks`
|
|
75
|
+
|
|
76
|
+
## Minimal Runnable Examples | 按组件最小可运行示例目录
|
|
77
|
+
|
|
78
|
+
建议在项目中维护一套最小示例目录,便于用户按组件快速检索、复制、运行。
|
|
79
|
+
|
|
80
|
+
Recommended minimal example structure for faster component discovery and copy-run usage.
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
examples/
|
|
84
|
+
protable-basic/ # ProTable 基础分页与搜索 | Basic table with search & pagination
|
|
85
|
+
tab-selector-basic/ # TabSelector 单选/多选 | Modal tab selector (radio/checkbox)
|
|
86
|
+
imports-basic/ # Imports 上传+进度+结果 | Import workflow demo
|
|
87
|
+
exports-basic/ # Exports 同步/异步导出 | Sync/async export demo
|
|
88
|
+
list-container-basic/ # List.Container 分页卡片列表 | Paginated card list
|
|
89
|
+
tree-select-basic/ # TreeSelect 树形选择 | Tree selection
|
|
90
|
+
image-cache-basic/ # Image 缓存与过期 | Cached image with expire time
|
|
91
|
+
button-confirm-basic/ # Button + ConfirmButton 异步确认 | Async action + confirm
|
|
92
|
+
button-group-basic/ # ButtonGroup 操作组 | Action button group
|
|
93
|
+
form-proform-basic/ # ProForm 表单增强 | Form enhancement demo
|
|
94
|
+
card-modal-basic/ # Card + Modal 组合示例 | Card and modal composition
|
|
95
|
+
checkcard-basic/ # CheckCard 选择卡片 | Selectable card
|
|
96
|
+
typography-basic/ # Typography 文本排版 | Text/Title/Link/Paragraph
|
|
97
|
+
beyond-overflow-basic/ # Beyond 超出折叠展示 | Overflow collapse list
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
每个示例目录建议包含:
|
|
101
|
+
|
|
102
|
+
- `App.tsx`:单组件最小可运行代码
|
|
103
|
+
- `mock.ts`:最小 mock 数据与请求
|
|
104
|
+
- `README.md`:中英双语说明(场景、依赖、运行方式)
|
|
105
|
+
|
|
106
|
+
## npm Search Title Suggestions | npm 搜索标题建议(可同步到 GitHub Description)
|
|
107
|
+
|
|
108
|
+
下面标题可用于 npm 包描述、GitHub 仓库描述、文档首页副标题,提高中英文检索命中。
|
|
109
|
+
|
|
110
|
+
The following lines are optimized for npm and GitHub search visibility.
|
|
111
|
+
|
|
112
|
+
1. `React + TypeScript Ant Design Pro Components Library for Admin Dashboard (ProTable, Imports, Exports, TreeSelect)`
|
|
113
|
+
2. `Enterprise React UI Components: ProTable, Modal Selector, Import/Export Workflow, List & Form Enhancements`
|
|
114
|
+
3. `中后台 React 组件库(Ant Design):ProTable、导入导出、树选择、列表与表单增强`
|
|
115
|
+
4. `React 中后台业务组件库 | ProTable / TabSelector / Imports / Exports / TreeSelect`
|
|
116
|
+
5. `Ant Design 业务组件库(TypeScript)- 表格、选择器、导入导出、表单流程`
|
|
117
|
+
|
|
118
|
+
推荐同步策略:
|
|
119
|
+
|
|
120
|
+
- npm `description`:中英混合 1 行,覆盖核心组件名
|
|
121
|
+
- GitHub Description:优先使用第 1 或第 3 条
|
|
122
|
+
- 文档首页副标题:保留中英两行,覆盖 `admin dashboard`、`中后台`、`ProTable`、`import/export`
|
|
123
|
+
|
|
124
|
+
## Usage Notes | 使用说明
|
|
125
|
+
|
|
126
|
+
- 依赖 `react`、`react-dom`、`antd` 与 `@ant-design/pro-*` 生态。
|
|
127
|
+
- 建议在中后台项目中与 Ant Design 主题体系一起使用。
|
|
128
|
+
- 组件 API 与示例可查看 `components/*/README.md` 和 `src/stories/*`。
|
|
129
|
+
|
|
130
|
+
## Peer Dependencies | 对等依赖
|
|
131
|
+
|
|
132
|
+
请确保项目中已安装以下核心依赖(版本以 `package.json` 为准):
|
|
133
|
+
|
|
134
|
+
- `react`, `react-dom`
|
|
135
|
+
- `antd`
|
|
136
|
+
- `@ant-design/pro-components`
|
|
137
|
+
- `@ant-design/pro-form`
|
|
138
|
+
- `@ant-design/pro-table`
|
|
139
|
+
- `@ant-design/pro-utils`
|
|
140
|
+
|
|
141
|
+
## License
|
|
142
|
+
|
|
143
|
+
MIT
|
|
@@ -1 +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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}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 _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}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 _non_iterable_spread(){throw new TypeError("Invalid attempt to spread 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 _object_without_properties(source,excluded){if(source==null)return{};var target=_object_without_properties_loose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _object_without_properties_loose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;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 _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}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)}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{ProTableContext}from"../context";import{useContext}from"react";import{ProTable}from"@ant-design/pro-components";import useStyle from"../styles";import{useCommonStyles}from"../../hooks";import classNames from"classnames";import ProTableHeaderTitle from"./headerTitle";import*as React from"react";import{useMemo}from"react";import{usePagination}from"../hooks/usePagination";import{Tooltip,Spin}from"antd";import{AppstoreOutlined,TableOutlined}from"@ant-design/icons";import{GridView}from"./grid-view";import{GridCard}from"./grid-card";import{ColumnHelper,createOperationHandler}from"./utils";import{RowActions}from"./row-actions";import ProTableSearch from"./search";var ProTableList=function(props){var _tableProps_columnsState;var _useContext=useContext(ProTableContext),searchFormValues=_useContext.searchFormValues,viewMode=_useContext.viewMode,setViewMode=_useContext.setViewMode,actionRef=_useContext.actionRef,selectedRowKeys=_useContext.selectedRowKeys,setSelectedRowKeys=_useContext.setSelectedRowKeys,setSelectedRows=_useContext.setSelectedRows,setDataSource=_useContext.setDataSource,setLoading=_useContext.setLoading,loading=_useContext.loading,dataSource=_useContext.dataSource,setOperationType=_useContext.setOperationType,setCurrentIndex=_useContext.setCurrentIndex,setCurrentRecord=_useContext.setCurrentRecord,setOperationVisible=_useContext.setOperationVisible;var tableKey=props.tableKey,gridColumns=props.gridColumns,_props_columns=props.columns,columns=_props_columns===void 0?[]:_props_columns,_props_tableProps=props.tableProps,tableProps=_props_tableProps===void 0?{}:_props_tableProps,_props_defaultPageSize=props.defaultPageSize,defaultPageSize=_props_defaultPageSize===void 0?10:_props_defaultPageSize,_props_openPageSizeCache=props.openPageSizeCache,openPageSizeCache=_props_openPageSizeCache===void 0?false:_props_openPageSizeCache,gridCardRender=props.gridCardRender,_props_gridCardFieldsPerRow=props.gridCardFieldsPerRow,gridCardFieldsPerRow=_props_gridCardFieldsPerRow===void 0?3:_props_gridCardFieldsPerRow,_props_showViewBtn=props.showViewBtn,showViewBtn=_props_showViewBtn===void 0?true:_props_showViewBtn,viewBtnProps=props.viewBtnProps,_props_showUpdateBtn=props.showUpdateBtn,showUpdateBtn=_props_showUpdateBtn===void 0?true:_props_showUpdateBtn,updateBtnProps=props.updateBtnProps,_props_showRemoveBtn=props.showRemoveBtn,showRemoveBtn=_props_showRemoveBtn===void 0?true:_props_showRemoveBtn,removeBtnProps=props.removeBtnProps,_props_rowButtonItems=props.rowButtonItems,rowButtonItems=_props_rowButtonItems===void 0?[]:_props_rowButtonItems,_props_rowButtonMaxCount=props.rowButtonMaxCount,rowButtonMaxCount=_props_rowButtonMaxCount===void 0?3:_props_rowButtonMaxCount,buttonGroupProps=props.buttonGroupProps,_props_showOperateColumn=props.showOperateColumn,showOperateColumn=_props_showOperateColumn===void 0?true:_props_showOperateColumn,onGetDetail=props.onGetDetail,onRemove=props.onRemove,search=props.search,_props_tableExtraRenderPosition=props.tableExtraRenderPosition,tableExtraRenderPosition=_props_tableExtraRenderPosition===void 0?"below":_props_tableExtraRenderPosition;var _useCommonStyles=useCommonStyles("vlian-table",tableProps,useStyle),prefixCls=_useCommonStyles.prefixCls,wrapCSS=_useCommonStyles.wrapCSS,hashId=_useCommonStyles.hashId;var className=tableProps.className,rowSelection=tableProps.rowSelection,tableExtraRender=tableProps.tableExtraRender,restTableProps=_object_without_properties(tableProps,["className","rowSelection","tableExtraRender"]);var mergedRowSelection=useMemo(function(){if(rowSelection===false){return false}if(!rowSelection){return undefined}return _object_spread_props(_object_spread({},rowSelection),{selectedRowKeys:selectedRowKeys,onChange:function(keys,selectedRowsData,info){setSelectedRowKeys(keys);if(selectedRowsData){setSelectedRows(selectedRowsData)}if(rowSelection&&(typeof rowSelection==="undefined"?"undefined":_type_of(rowSelection))==="object"&&rowSelection.onChange){if(rowSelection.onChange.length===3){rowSelection.onChange(keys,selectedRowsData||[],info||{})}else{rowSelection.onChange(keys,selectedRowsData||[])}}}})},[selectedRowKeys,rowSelection]);var currentPagination=usePagination({openPageSizeCache:openPageSizeCache,defaultPageSize:defaultPageSize,tableKey:tableKey,tableProps:tableProps}).currentPagination;var mergedPagination=useMemo(function(){if(currentPagination===false){return false}return _object_spread_props(_object_spread({},currentPagination),{onChange:function(page,pageSize){var _actionRef_current_setPageInfo,_actionRef_current,_actionRef_current_reload,_actionRef_current1;(_actionRef_current=actionRef.current)===null||_actionRef_current===void 0?void 0:(_actionRef_current_setPageInfo=_actionRef_current.setPageInfo)===null||_actionRef_current_setPageInfo===void 0?void 0:_actionRef_current_setPageInfo.call(_actionRef_current,{current:page,pageSize:pageSize});(_actionRef_current1=actionRef.current)===null||_actionRef_current1===void 0?void 0:(_actionRef_current_reload=_actionRef_current1.reload)===null||_actionRef_current_reload===void 0?void 0:_actionRef_current_reload.call(_actionRef_current1)}})},[currentPagination,actionRef]);var mergedScroll=React.useMemo(function(){var defaultScroll={x:true};if(tableProps.scroll){return _object_spread({},defaultScroll,tableProps.scroll)}return defaultScroll},[tableProps.scroll]);var mergedOptions=React.useMemo(function(){if(tableProps.options===false){return false}var defaultOptions=tableProps.options||{};var _defaultOptions_fullScreen,_defaultOptions_reload,_defaultOptions_setting,_defaultOptions_density;return _object_spread_props(_object_spread({},defaultOptions),{fullScreen:(_defaultOptions_fullScreen=defaultOptions.fullScreen)!==null&&_defaultOptions_fullScreen!==void 0?_defaultOptions_fullScreen:true,reload:(_defaultOptions_reload=defaultOptions.reload)!==null&&_defaultOptions_reload!==void 0?_defaultOptions_reload:true,setting:(_defaultOptions_setting=defaultOptions.setting)!==null&&_defaultOptions_setting!==void 0?_defaultOptions_setting:true,density:(_defaultOptions_density=defaultOptions.density)!==null&&_defaultOptions_density!==void 0?_defaultOptions_density:true})},[tableProps.options]);var toolbar=React.useMemo(function(){var _tableProps_toolbar;var toggleViewMode=function(){setViewMode(viewMode==="table"?"grid":"table")};return _object_spread_props(_object_spread({},tableProps.toolbar),{actions:_to_consumable_array(((_tableProps_toolbar=tableProps.toolbar)===null||_tableProps_toolbar===void 0?void 0:_tableProps_toolbar.actions)||[]).concat([React.createElement(Tooltip,{key:"view-mode-switch",title:viewMode==="table"?"切换到网格视图":"切换到列表视图"},React.createElement("div",{onClick:toggleViewMode,className:"VlianTable-view-switch ".concat(hashId)},viewMode==="table"?React.createElement(AppstoreOutlined,null):React.createElement(TableOutlined,null)))])})},[tableProps.toolbar,viewMode,setViewMode]);var _React_useState=_sliced_to_array(React.useState({}),2),columnsStateMap=_React_useState[0],setColumnsStateMap=_React_useState[1];var userColumnsStateChange=tableProps===null||tableProps===void 0?void 0:(_tableProps_columnsState=tableProps.columnsState)===null||_tableProps_columnsState===void 0?void 0:_tableProps_columnsState.onChange;var handleColumnsStateChange=React.useCallback(function(map){setColumnsStateMap(map||{});userColumnsStateChange===null||userColumnsStateChange===void 0?void 0:userColumnsStateChange(map)},[userColumnsStateChange]);var handleGridSelectChange=React.useCallback(function(keys,rows,info){setSelectedRowKeys(keys);setSelectedRows(rows);if(rowSelection&&(typeof rowSelection==="undefined"?"undefined":_type_of(rowSelection))==="object"&&rowSelection.onChange){rowSelection.onChange(keys,rows,info||{})}},[rowSelection,setSelectedRowKeys,setSelectedRows]);var handleViewClick=React.useCallback(createOperationHandler("view",setOperationType,setCurrentIndex,setCurrentRecord,setOperationVisible,onGetDetail),[onGetDetail]);var handleUpdateClick=React.useCallback(createOperationHandler("update",setOperationType,setCurrentIndex,setCurrentRecord,setOperationVisible,onGetDetail),[onGetDetail]);var handleRemoveClick=React.useCallback(function(record,index){return _async_to_generator(function(){var result,_actionRef_current_reload,_actionRef_current,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!onRemove)return[3,6];_state.label=1;case 1:_state.trys.push([1,5,,6]);return[4,onRemove(record,index)];case 2:result=_state.sent();if(result===false){return[2,false]}if(!(actionRef===null||actionRef===void 0?void 0:actionRef.current))return[3,4];return[4,(_actionRef_current_reload=(_actionRef_current=actionRef.current).reload)===null||_actionRef_current_reload===void 0?void 0:_actionRef_current_reload.call(_actionRef_current,true)];case 3:_state.sent();_state.label=4;case 4:setSelectedRowKeys([]);setSelectedRows([]);return[2];case 5:error=_state.sent();console.error("删除失败:",error);return[2];case 6:return[2]}})})()},[onRemove,actionRef,setSelectedRowKeys,setSelectedRows]);var finalColumns=React.useMemo(function(){var hasActions=showViewBtn||showUpdateBtn||showRemoveBtn||rowButtonItems.length>0;var columnsWithDefaults=ColumnHelper.addDefaultConfig(columns);if(!showOperateColumn||!hasActions){return columnsWithDefaults}if(ColumnHelper.hasActionColumn(columns)){return columnsWithDefaults}return _to_consumable_array(columnsWithDefaults).concat([{title:"操作",key:"actions",dataIndex:"actions",valueType:"option",fixed:"right",width:260,render:function(_,record,index){return React.createElement(RowActions,{record:record,index:index,showViewBtn:showViewBtn,viewBtnProps:viewBtnProps,onView:handleViewClick,showUpdateBtn:showUpdateBtn,updateBtnProps:updateBtnProps,onUpdate:handleUpdateClick,showRemoveBtn:showRemoveBtn,removeBtnProps:removeBtnProps,onRemove:handleRemoveClick,rowButtonItems:rowButtonItems,maxCount:rowButtonMaxCount,buttonGroupProps:buttonGroupProps})}}])},[columns,showViewBtn,showUpdateBtn,showRemoveBtn,rowButtonItems,showOperateColumn,handleViewClick,handleUpdateClick,handleRemoveClick,viewBtnProps,updateBtnProps,removeBtnProps,rowButtonMaxCount,buttonGroupProps]);var sortedColumns=React.useMemo(function(){return _to_consumable_array(finalColumns).sort(function(a,b){var _columnsStateMap_aKey,_columnsStateMap_bKey;var aKey=String(a.key||a.dataIndex||"");var bKey=String(b.key||b.dataIndex||"");var _columnsStateMap_aKey_order;var aOrder=(_columnsStateMap_aKey_order=(_columnsStateMap_aKey=columnsStateMap[aKey])===null||_columnsStateMap_aKey===void 0?void 0:_columnsStateMap_aKey.order)!==null&&_columnsStateMap_aKey_order!==void 0?_columnsStateMap_aKey_order:0;var _columnsStateMap_bKey_order;var bOrder=(_columnsStateMap_bKey_order=(_columnsStateMap_bKey=columnsStateMap[bKey])===null||_columnsStateMap_bKey===void 0?void 0:_columnsStateMap_bKey.order)!==null&&_columnsStateMap_bKey_order!==void 0?_columnsStateMap_bKey_order:0;return aOrder-bOrder})},[finalColumns,columnsStateMap]);var defaultGridCardRender=React.useCallback(function(params){return React.createElement(GridCard,_object_spread_props(_object_spread({},params),{sortedColumns:sortedColumns,fieldsPerRow:gridCardFieldsPerRow}))},[sortedColumns,gridCardFieldsPerRow]);var finalGridCardRender=gridCardRender||defaultGridCardRender;var mergedTableExtraRender=React.useCallback(function(tableProps,dataSource){var extraNodes=[];var customExtra=tableExtraRender===null||tableExtraRender===void 0?void 0:tableExtraRender(tableProps,dataSource);var searchNode=search!==false?React.createElement(ProTableSearch,_object_spread({key:"search"},props)):null;var nodesToAdd=tableExtraRenderPosition==="above"?[customExtra,searchNode]:[searchNode,customExtra];nodesToAdd.forEach(function(node){if(node){extraNodes.push(node)}});if(extraNodes.length===0){return null}if(extraNodes.length===1){return extraNodes[0]}return React.createElement(React.Fragment,null,extraNodes)},[search,tableExtraRender,tableExtraRenderPosition,props]);var mergedParams=useMemo(function(){var baseParams=tableProps.params||{};var searchParams=searchFormValues||{};return _object_spread({},baseParams,searchParams)},[tableProps.params,searchFormValues]);React.useEffect(function(){if(viewMode!=="grid"&&dataSource.length>0){setDataSource([])}},[viewMode,dataSource.length,setDataSource]);return wrapCSS(React.createElement(ProTable,_object_spread_props(_object_spread({},restTableProps),{className:classNames(viewMode==="grid"?"".concat(prefixCls,"-grid-mode"):undefined,hashId,className),params:mergedParams,columns:finalColumns,search:false,cardProps:false,actionRef:actionRef,headerTitle:React.createElement(ProTableHeaderTitle,props),rowSelection:mergedRowSelection,pagination:mergedPagination,scroll:mergedScroll,options:mergedOptions,toolbar:toolbar,onLoadingChange:function(loading){setLoading(loading)},onDataSourceChange:function(datas){if(viewMode==="grid"){setDataSource(datas)}},columnsState:_object_spread_props(_object_spread({},tableProps.columnsState),{onChange:function onChange(map){handleColumnsStateChange(map)}}),tableExtraRender:mergedTableExtraRender,tableRender:function(_,dom){if(viewMode==="grid"){return React.createElement("div",null,React.createElement(Spin,{spinning:loading},React.createElement(GridView,{dataSource:dataSource,cardRender:finalGridCardRender,gridColumns:gridColumns,pagination:mergedPagination,rowSelection:rowSelection,selectedRowKeys:selectedRowKeys,onSelectChange:handleGridSelectChange,rowKey:tableProps.rowKey})))}return dom}})))};export default ProTableList;
|
|
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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}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 _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}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 _non_iterable_spread(){throw new TypeError("Invalid attempt to spread 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 _object_without_properties(source,excluded){if(source==null)return{};var target=_object_without_properties_loose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key]}}return target}function _object_without_properties_loose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;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 _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}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)}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{ProTableContext}from"../context";import{useContext}from"react";import{ProTable}from"@ant-design/pro-components";import useStyle from"../styles";import{useCommonStyles}from"../../hooks";import classNames from"classnames";import ProTableHeaderTitle from"./headerTitle";import*as React from"react";import{useMemo}from"react";import{usePagination}from"../hooks/usePagination";import{Tooltip,Spin}from"antd";import{AppstoreOutlined,TableOutlined}from"@ant-design/icons";import{GridView}from"./grid-view";import{GridCard}from"./grid-card";import{ColumnHelper,createOperationHandler}from"./utils";import{RowActions}from"./row-actions";import ProTableSearch from"./search";var ProTableList=function(props){var _tableProps_columnsState;var _useContext=useContext(ProTableContext),searchFormValues=_useContext.searchFormValues,viewMode=_useContext.viewMode,setViewMode=_useContext.setViewMode,actionRef=_useContext.actionRef,selectedRowKeys=_useContext.selectedRowKeys,setSelectedRowKeys=_useContext.setSelectedRowKeys,setSelectedRows=_useContext.setSelectedRows,setDataSource=_useContext.setDataSource,setLoading=_useContext.setLoading,loading=_useContext.loading,dataSource=_useContext.dataSource,setOperationType=_useContext.setOperationType,setCurrentIndex=_useContext.setCurrentIndex,setCurrentRecord=_useContext.setCurrentRecord,setOperationVisible=_useContext.setOperationVisible;var tableKey=props.tableKey,gridColumns=props.gridColumns,_props_columns=props.columns,columns=_props_columns===void 0?[]:_props_columns,_props_tableProps=props.tableProps,tableProps=_props_tableProps===void 0?{}:_props_tableProps,_props_defaultPageSize=props.defaultPageSize,defaultPageSize=_props_defaultPageSize===void 0?10:_props_defaultPageSize,_props_openPageSizeCache=props.openPageSizeCache,openPageSizeCache=_props_openPageSizeCache===void 0?false:_props_openPageSizeCache,gridCardRender=props.gridCardRender,_props_gridCardFieldsPerRow=props.gridCardFieldsPerRow,gridCardFieldsPerRow=_props_gridCardFieldsPerRow===void 0?3:_props_gridCardFieldsPerRow,_props_showViewBtn=props.showViewBtn,showViewBtn=_props_showViewBtn===void 0?true:_props_showViewBtn,viewBtnProps=props.viewBtnProps,_props_showUpdateBtn=props.showUpdateBtn,showUpdateBtn=_props_showUpdateBtn===void 0?true:_props_showUpdateBtn,updateBtnProps=props.updateBtnProps,_props_showRemoveBtn=props.showRemoveBtn,showRemoveBtn=_props_showRemoveBtn===void 0?true:_props_showRemoveBtn,removeBtnProps=props.removeBtnProps,_props_rowButtonItems=props.rowButtonItems,rowButtonItems=_props_rowButtonItems===void 0?[]:_props_rowButtonItems,_props_rowButtonMaxCount=props.rowButtonMaxCount,rowButtonMaxCount=_props_rowButtonMaxCount===void 0?3:_props_rowButtonMaxCount,buttonGroupProps=props.buttonGroupProps,_props_showOperateColumn=props.showOperateColumn,showOperateColumn=_props_showOperateColumn===void 0?true:_props_showOperateColumn,onGetDetail=props.onGetDetail,onRemove=props.onRemove,search=props.search,_props_tableExtraRenderPosition=props.tableExtraRenderPosition,tableExtraRenderPosition=_props_tableExtraRenderPosition===void 0?"below":_props_tableExtraRenderPosition;var _useCommonStyles=useCommonStyles("vlian-table",tableProps,useStyle),prefixCls=_useCommonStyles.prefixCls,wrapCSS=_useCommonStyles.wrapCSS,hashId=_useCommonStyles.hashId;var className=tableProps.className,rowSelection=tableProps.rowSelection,tableExtraRender=tableProps.tableExtraRender,restTableProps=_object_without_properties(tableProps,["className","rowSelection","tableExtraRender"]);var mergedRowSelection=useMemo(function(){if(rowSelection===false){return false}if(!rowSelection){return undefined}return _object_spread_props(_object_spread({},rowSelection),{selectedRowKeys:selectedRowKeys,onChange:function(keys,selectedRowsData,info){setSelectedRowKeys(keys);if(selectedRowsData){setSelectedRows(selectedRowsData)}if(rowSelection&&(typeof rowSelection==="undefined"?"undefined":_type_of(rowSelection))==="object"&&rowSelection.onChange){if(rowSelection.onChange.length===3){rowSelection.onChange(keys,selectedRowsData||[],info||{})}else{rowSelection.onChange(keys,selectedRowsData||[])}}}})},[selectedRowKeys,rowSelection]);var currentPagination=usePagination({openPageSizeCache:openPageSizeCache,defaultPageSize:defaultPageSize,tableKey:tableKey,tableProps:tableProps}).currentPagination;var mergedPagination=useMemo(function(){if(currentPagination===false){return false}return _object_spread_props(_object_spread({},currentPagination),{onChange:function(page,pageSize){var _actionRef_current_setPageInfo,_actionRef_current,_actionRef_current_reload,_actionRef_current1;(_actionRef_current=actionRef.current)===null||_actionRef_current===void 0?void 0:(_actionRef_current_setPageInfo=_actionRef_current.setPageInfo)===null||_actionRef_current_setPageInfo===void 0?void 0:_actionRef_current_setPageInfo.call(_actionRef_current,{current:page,pageSize:pageSize});(_actionRef_current1=actionRef.current)===null||_actionRef_current1===void 0?void 0:(_actionRef_current_reload=_actionRef_current1.reload)===null||_actionRef_current_reload===void 0?void 0:_actionRef_current_reload.call(_actionRef_current1)}})},[currentPagination,actionRef]);var mergedScroll=React.useMemo(function(){var defaultScroll={x:true};if(tableProps.scroll){return _object_spread({},defaultScroll,tableProps.scroll)}return defaultScroll},[tableProps.scroll]);var mergedOptions=React.useMemo(function(){if(tableProps.options===false){return false}var defaultOptions=tableProps.options||{};var _defaultOptions_fullScreen,_defaultOptions_reload,_defaultOptions_setting,_defaultOptions_density;return _object_spread_props(_object_spread({},defaultOptions),{fullScreen:(_defaultOptions_fullScreen=defaultOptions.fullScreen)!==null&&_defaultOptions_fullScreen!==void 0?_defaultOptions_fullScreen:true,reload:(_defaultOptions_reload=defaultOptions.reload)!==null&&_defaultOptions_reload!==void 0?_defaultOptions_reload:true,setting:(_defaultOptions_setting=defaultOptions.setting)!==null&&_defaultOptions_setting!==void 0?_defaultOptions_setting:true,density:(_defaultOptions_density=defaultOptions.density)!==null&&_defaultOptions_density!==void 0?_defaultOptions_density:true})},[tableProps.options]);var toolbar=React.useMemo(function(){var _tableProps_toolbar;var toggleViewMode=function(){setViewMode(viewMode==="table"?"grid":"table")};return _object_spread_props(_object_spread({},tableProps.toolbar),{actions:_to_consumable_array(((_tableProps_toolbar=tableProps.toolbar)===null||_tableProps_toolbar===void 0?void 0:_tableProps_toolbar.actions)||[]).concat([React.createElement(Tooltip,{key:"view-mode-switch",title:viewMode==="table"?"切换到网格视图":"切换到列表视图"},React.createElement("div",{onClick:toggleViewMode,className:"VlianTable-view-switch ".concat(hashId)},viewMode==="table"?React.createElement(AppstoreOutlined,null):React.createElement(TableOutlined,null)))])})},[tableProps.toolbar,viewMode,setViewMode]);var _React_useState=_sliced_to_array(React.useState({}),2),columnsStateMap=_React_useState[0],setColumnsStateMap=_React_useState[1];var userColumnsStateChange=tableProps===null||tableProps===void 0?void 0:(_tableProps_columnsState=tableProps.columnsState)===null||_tableProps_columnsState===void 0?void 0:_tableProps_columnsState.onChange;var handleColumnsStateChange=React.useCallback(function(map){setColumnsStateMap(map||{});userColumnsStateChange===null||userColumnsStateChange===void 0?void 0:userColumnsStateChange(map)},[userColumnsStateChange]);var handleGridSelectChange=React.useCallback(function(keys,rows,info){setSelectedRowKeys(keys);setSelectedRows(rows);if(rowSelection&&(typeof rowSelection==="undefined"?"undefined":_type_of(rowSelection))==="object"&&rowSelection.onChange){rowSelection.onChange(keys,rows,info||{})}},[rowSelection,setSelectedRowKeys,setSelectedRows]);var handleViewClick=React.useCallback(createOperationHandler("view",setOperationType,setCurrentIndex,setCurrentRecord,setOperationVisible,onGetDetail),[onGetDetail]);var handleUpdateClick=React.useCallback(createOperationHandler("update",setOperationType,setCurrentIndex,setCurrentRecord,setOperationVisible,onGetDetail),[onGetDetail]);var handleRemoveClick=React.useCallback(function(record,index){return _async_to_generator(function(){var result,_actionRef_current_reload,_actionRef_current,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!onRemove)return[3,6];_state.label=1;case 1:_state.trys.push([1,5,,6]);return[4,onRemove(record,index)];case 2:result=_state.sent();if(result===false){return[2,false]}if(!(actionRef===null||actionRef===void 0?void 0:actionRef.current))return[3,4];return[4,(_actionRef_current_reload=(_actionRef_current=actionRef.current).reload)===null||_actionRef_current_reload===void 0?void 0:_actionRef_current_reload.call(_actionRef_current,true)];case 3:_state.sent();_state.label=4;case 4:setSelectedRowKeys([]);setSelectedRows([]);return[2];case 5:error=_state.sent();console.error("删除失败:",error);return[2];case 6:return[2]}})})()},[onRemove,actionRef,setSelectedRowKeys,setSelectedRows]);var finalColumns=React.useMemo(function(){var hasActions=showViewBtn||showUpdateBtn||showRemoveBtn||rowButtonItems.length>0;var columnsWithDefaults=ColumnHelper.addDefaultConfig(columns);if(!showOperateColumn||!hasActions){return columnsWithDefaults}if(ColumnHelper.hasActionColumn(columns)){return columnsWithDefaults}return _to_consumable_array(columnsWithDefaults).concat([{title:"操作",key:"actions",dataIndex:"actions",valueType:"option",fixed:"right",width:260,render:function(_,record,index){return React.createElement(RowActions,{record:record,index:index,showViewBtn:showViewBtn,viewBtnProps:viewBtnProps,onView:handleViewClick,showUpdateBtn:showUpdateBtn,updateBtnProps:updateBtnProps,onUpdate:handleUpdateClick,showRemoveBtn:showRemoveBtn,removeBtnProps:removeBtnProps,onRemove:handleRemoveClick,rowButtonItems:rowButtonItems,maxCount:rowButtonMaxCount,buttonGroupProps:buttonGroupProps})}}])},[columns,showViewBtn,showUpdateBtn,showRemoveBtn,rowButtonItems,showOperateColumn,handleViewClick,handleUpdateClick,handleRemoveClick,viewBtnProps,updateBtnProps,removeBtnProps,rowButtonMaxCount,buttonGroupProps]);var sortedColumns=React.useMemo(function(){return _to_consumable_array(finalColumns).sort(function(a,b){var _columnsStateMap_aKey,_columnsStateMap_bKey;var aKey=String(a.key||a.dataIndex||"");var bKey=String(b.key||b.dataIndex||"");var _columnsStateMap_aKey_order;var aOrder=(_columnsStateMap_aKey_order=(_columnsStateMap_aKey=columnsStateMap[aKey])===null||_columnsStateMap_aKey===void 0?void 0:_columnsStateMap_aKey.order)!==null&&_columnsStateMap_aKey_order!==void 0?_columnsStateMap_aKey_order:0;var _columnsStateMap_bKey_order;var bOrder=(_columnsStateMap_bKey_order=(_columnsStateMap_bKey=columnsStateMap[bKey])===null||_columnsStateMap_bKey===void 0?void 0:_columnsStateMap_bKey.order)!==null&&_columnsStateMap_bKey_order!==void 0?_columnsStateMap_bKey_order:0;return aOrder-bOrder})},[finalColumns,columnsStateMap]);var defaultGridCardRender=React.useCallback(function(params){return React.createElement(GridCard,_object_spread_props(_object_spread({},params),{sortedColumns:sortedColumns,fieldsPerRow:gridCardFieldsPerRow}))},[sortedColumns,gridCardFieldsPerRow]);var finalGridCardRender=gridCardRender||defaultGridCardRender;var mergedTableExtraRender=React.useCallback(function(tableProps,dataSource){var extraNodes=[];var customExtra=tableExtraRender===null||tableExtraRender===void 0?void 0:tableExtraRender(tableProps,dataSource);var searchNode=search!==false?React.createElement(ProTableSearch,_object_spread({key:"search"},props)):null;var nodesToAdd=tableExtraRenderPosition==="above"?[customExtra,searchNode]:[searchNode,customExtra];nodesToAdd.forEach(function(node){if(node){extraNodes.push(node)}});if(extraNodes.length===0){return null}if(extraNodes.length===1){return extraNodes[0]}return React.createElement(React.Fragment,null,extraNodes)},[search,tableExtraRender,tableExtraRenderPosition,props]);var mergedParams=useMemo(function(){var baseParams=tableProps.params||{};var searchParams=searchFormValues||{};return _object_spread({},baseParams,searchParams)},[tableProps.params,searchFormValues]);return wrapCSS(React.createElement(ProTable,_object_spread_props(_object_spread({},restTableProps),{className:classNames(viewMode==="grid"?"".concat(prefixCls,"-grid-mode"):undefined,hashId,className),params:mergedParams,columns:finalColumns,search:false,cardProps:false,actionRef:actionRef,headerTitle:React.createElement(ProTableHeaderTitle,props),rowSelection:mergedRowSelection,pagination:mergedPagination,scroll:mergedScroll,options:mergedOptions,toolbar:toolbar,onLoadingChange:function(loading){setLoading(loading)},onDataSourceChange:function(datas){setDataSource(datas)},columnsState:_object_spread_props(_object_spread({},tableProps.columnsState),{onChange:function onChange(map){handleColumnsStateChange(map)}}),tableExtraRender:mergedTableExtraRender,tableRender:function(_,dom){if(viewMode==="grid"){return React.createElement("div",null,dom,React.createElement(Spin,{spinning:loading},React.createElement(GridView,{dataSource:dataSource,cardRender:finalGridCardRender,gridColumns:gridColumns,pagination:mergedPagination,rowSelection:rowSelection,selectedRowKeys:selectedRowKeys,onSelectChange:handleGridSelectChange,rowKey:tableProps.rowKey})))}return dom}})))};export default ProTableList;
|
package/package.json
CHANGED
|
@@ -1,6 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "villianjs-pro",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.92",
|
|
4
|
+
"description": "React + TypeScript business component library for Ant Design / Pro Components. 中后台业务组件库:ProTable、TabSelector、导入导出、树选择、列表与表单增强。",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react",
|
|
7
|
+
"typescript",
|
|
8
|
+
"antd",
|
|
9
|
+
"ant-design",
|
|
10
|
+
"pro-components",
|
|
11
|
+
"protable",
|
|
12
|
+
"pro-table",
|
|
13
|
+
"component-library",
|
|
14
|
+
"ui-components",
|
|
15
|
+
"admin-dashboard",
|
|
16
|
+
"enterprise-ui",
|
|
17
|
+
"table",
|
|
18
|
+
"list",
|
|
19
|
+
"tree-select",
|
|
20
|
+
"modal-selector",
|
|
21
|
+
"import",
|
|
22
|
+
"export",
|
|
23
|
+
"file-import",
|
|
24
|
+
"file-export",
|
|
25
|
+
"form",
|
|
26
|
+
"business-components",
|
|
27
|
+
"中后台",
|
|
28
|
+
"组件库",
|
|
29
|
+
"表格组件",
|
|
30
|
+
"导入导出",
|
|
31
|
+
"树选择",
|
|
32
|
+
"业务组件"
|
|
33
|
+
],
|
|
4
34
|
"license": "MIT",
|
|
5
35
|
"type": "module",
|
|
6
36
|
"module": "dist/index.js",
|
|
@@ -21,7 +51,7 @@
|
|
|
21
51
|
"@tanstack/react-virtual": "^3.13.13",
|
|
22
52
|
"@vlian/utils": "^0.0.29",
|
|
23
53
|
"ahooks": "^3.9.5",
|
|
24
|
-
"lodash": "^4.17.
|
|
54
|
+
"lodash": "^4.17.23",
|
|
25
55
|
"nanoid": "^5.1.5",
|
|
26
56
|
"react-window": "^2.2.3"
|
|
27
57
|
},
|
|
@@ -68,17 +98,17 @@
|
|
|
68
98
|
"eslint": "^9.33.0",
|
|
69
99
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
70
100
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
71
|
-
"eslint-plugin-storybook": "^
|
|
101
|
+
"eslint-plugin-storybook": "^10.2.19",
|
|
72
102
|
"globals": "^16.3.0",
|
|
73
103
|
"playwright": "^1.55.0",
|
|
74
104
|
"react": "^19.1.1",
|
|
75
105
|
"react-dom": "^19.1.1",
|
|
76
106
|
"react-router-dom": "^7.9.1",
|
|
77
|
-
"storybook": "^
|
|
107
|
+
"storybook": "^10.2.19",
|
|
78
108
|
"swc": "^1.0.11",
|
|
79
109
|
"typescript": "~5.8.3",
|
|
80
110
|
"typescript-eslint": "^8.39.1",
|
|
81
|
-
"vite": "^7.1.
|
|
111
|
+
"vite": "^7.1.11",
|
|
82
112
|
"vitest": "^3.2.4"
|
|
83
113
|
},
|
|
84
114
|
"packageManager": "pnpm@10.6.4+sha512.da3d715bfd22a9a105e6e8088cfc7826699332ded60c423b14ec613a185f1602206702ff0fe4c438cb15c979081ce4cb02568e364b15174503a63c7a8e2a5f6c"
|