villianjs-pro 1.0.0 → 1.0.3

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 (119) 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/ProTable/components/Container.d.ts +27 -0
  20. package/dist/ProTable/components/Container.js +1 -0
  21. package/dist/ProTable/components/form-content.d.ts +34 -0
  22. package/dist/ProTable/{update/update.js → components/form-content.js} +1 -1
  23. package/dist/ProTable/components/form-footer.d.ts +32 -0
  24. package/dist/ProTable/components/form-footer.js +1 -0
  25. package/dist/ProTable/components/grid-card.d.ts +27 -0
  26. package/dist/ProTable/components/grid-card.js +1 -0
  27. package/dist/ProTable/components/grid-view.d.ts +52 -0
  28. package/dist/ProTable/components/grid-view.js +1 -0
  29. package/dist/ProTable/components/header-buttons-wrapper.d.ts +10 -0
  30. package/dist/ProTable/components/header-buttons-wrapper.js +1 -0
  31. package/dist/ProTable/components/list/index.d.ts +19 -0
  32. package/dist/ProTable/components/list/index.js +1 -0
  33. package/dist/ProTable/components/operation-container.d.ts +39 -0
  34. package/dist/ProTable/components/operation-container.js +1 -0
  35. package/dist/ProTable/components/operation-content-router.d.ts +37 -0
  36. package/dist/ProTable/components/operation-content-router.js +1 -0
  37. package/dist/ProTable/components/operation-content.d.ts +35 -0
  38. package/dist/ProTable/components/operation-content.js +1 -0
  39. package/dist/ProTable/components/row-actions-router.d.ts +8 -0
  40. package/dist/{ProTable3/hooks/utils.js → ProTable/components/row-actions-router.js} +1 -1
  41. package/dist/ProTable/components/row-actions.d.ts +59 -0
  42. package/dist/ProTable/components/row-actions.js +1 -0
  43. package/dist/ProTable/components/search.d.ts +3 -0
  44. package/dist/{ProTable2 → ProTable}/components/search.js +1 -1
  45. package/dist/ProTable/context.d.ts +20 -58
  46. package/dist/ProTable/context.js +1 -1
  47. package/dist/ProTable/hooks/usePagination.js +1 -0
  48. package/dist/ProTable/hooks/useRouterNavigation.d.ts +10 -0
  49. package/dist/ProTable/hooks/useRouterNavigation.js +1 -0
  50. package/dist/ProTable/index.d.ts +3 -2
  51. package/dist/ProTable/index.js +1 -1
  52. package/dist/ProTable/styles.d.ts +1 -0
  53. package/dist/ProTable/styles.js +1 -1
  54. package/dist/ProTable/table.d.ts +2 -3
  55. package/dist/ProTable/table.js +1 -1
  56. package/dist/ProTable/types.d.ts +389 -90
  57. package/dist/ProTable/utils.d.ts +83 -0
  58. package/dist/ProTable/utils.js +1 -0
  59. package/dist/TabSelector/TabSelector.d.ts +3 -0
  60. package/dist/TabSelector/TabSelector.js +1 -0
  61. package/dist/TabSelector/index.d.ts +2 -0
  62. package/dist/TabSelector/index.js +1 -0
  63. package/dist/TabSelector/modal.d.ts +16 -0
  64. package/dist/TabSelector/modal.js +1 -0
  65. package/dist/TabSelector/selected-items-display.d.ts +11 -0
  66. package/dist/TabSelector/selected-items-display.js +1 -0
  67. package/dist/TabSelector/styles.d.ts +2 -0
  68. package/dist/TabSelector/styles.js +1 -0
  69. package/dist/TabSelector/types.d.ts +24 -0
  70. package/dist/index.d.ts +4 -0
  71. package/dist/index.js +1 -1
  72. package/dist/locale/langs/zh-cn/index.js +1 -1
  73. package/package.json +30 -17
  74. package/dist/ProTable/form-footer.d.ts +0 -26
  75. package/dist/ProTable/form-footer.js +0 -1
  76. package/dist/ProTable/list.d.ts +0 -5
  77. package/dist/ProTable/list.js +0 -1
  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/ProTable2/components/search.d.ts +0 -2
  82. package/dist/ProTable2/index.d.ts +0 -2
  83. package/dist/ProTable2/index.js +0 -1
  84. package/dist/ProTable2/styles.d.ts +0 -7
  85. package/dist/ProTable2/styles.js +0 -1
  86. package/dist/ProTable2/table.d.ts +0 -2
  87. package/dist/ProTable2/table.js +0 -1
  88. package/dist/ProTable2/types.d.ts +0 -23
  89. package/dist/ProTable3/components/index.d.ts +0 -2
  90. package/dist/ProTable3/components/index.js +0 -1
  91. package/dist/ProTable3/components/list/index.d.ts +0 -19
  92. package/dist/ProTable3/components/list/index.js +0 -1
  93. package/dist/ProTable3/components/search/index.d.ts +0 -2
  94. package/dist/ProTable3/components/search/index.js +0 -1
  95. package/dist/ProTable3/container.d.ts +0 -3
  96. package/dist/ProTable3/container.js +0 -1
  97. package/dist/ProTable3/context.d.ts +0 -13
  98. package/dist/ProTable3/context.js +0 -1
  99. package/dist/ProTable3/hooks/types.d.ts +0 -72
  100. package/dist/ProTable3/hooks/useBatchRemoveButton.d.ts +0 -38
  101. package/dist/ProTable3/hooks/useBatchRemoveButton.js +0 -1
  102. package/dist/ProTable3/hooks/useCreateButton.d.ts +0 -34
  103. package/dist/ProTable3/hooks/useCreateButton.js +0 -1
  104. package/dist/ProTable3/hooks/useExtraButtons.d.ts +0 -26
  105. package/dist/ProTable3/hooks/useExtraButtons.js +0 -1
  106. package/dist/ProTable3/hooks/useOptionRender.d.ts +0 -30
  107. package/dist/ProTable3/hooks/useOptionRender.js +0 -1
  108. package/dist/ProTable3/hooks/usePagination.js +0 -1
  109. package/dist/ProTable3/hooks/utils.d.ts +0 -12
  110. package/dist/ProTable3/index.js +0 -1
  111. package/dist/ProTable3/styles.d.ts +0 -7
  112. package/dist/ProTable3/styles.js +0 -1
  113. package/dist/ProTable3/table.d.ts +0 -2
  114. package/dist/ProTable3/table.js +0 -1
  115. package/dist/ProTable3/types.d.ts +0 -106
  116. /package/dist/{ProTable2 → Beyond}/types.js +0 -0
  117. /package/dist/{ProTable3/hooks → Exports}/types.js +0 -0
  118. /package/dist/{ProTable3 → ProTable}/hooks/usePagination.d.ts +0 -0
  119. /package/dist/{ProTable3 → TabSelector}/types.js +0 -0
@@ -1,2 +1,2 @@
1
1
  export * from "./types";
2
- export * from "./table";
2
+ export * from "./list";
@@ -0,0 +1 @@
1
+ export*from"./types";export*from"./list";
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ import type { BeyondListModalProps, BeyondModalInstance } from "./types";
3
+ export declare const BeyondListModal: (props: BeyondListModalProps & {
4
+ children?: React.ReactNode | undefined;
5
+ } & React.RefAttributes<BeyondModalInstance>) => 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 _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{Flex,Popover,Tag}from"antd";import*as React from"react";import{forwardRef,useImperativeHandle}from"react";import{useComponentConfig}from"antd/es/config-provider/context";import useStyle from"./styles";import classNames from"classnames";import{EllipsisOutlined}from"@ant-design/icons";export var BeyondListModal=forwardRef(function(props,ref){var customizePrefixCls=props.prefixCls,className=props.className,style=props.style,_props_gap=props.gap,gap=_props_gap===void 0?7:_props_gap,_props_ellipsis=props.ellipsis,ellipsis=_props_ellipsis===void 0?false:_props_ellipsis,_props_maxVisibleItems=props.maxVisibleItems,maxVisibleItems=_props_maxVisibleItems===void 0?3:_props_maxVisibleItems,itemRender=props.itemRender,popoverContent=props.popoverContent,hideContainerStyle=props.hideContainerStyle,_props_dataSource=props.dataSource,dataSource=_props_dataSource===void 0?[]:_props_dataSource,_props_mode=props.mode,mode=_props_mode===void 0?"popover":_props_mode,onEllipsisClick=props.onEllipsisClick;var getPrefixCls=useComponentConfig("tags-modal").getPrefixCls;var prefixCls=getPrefixCls("tags-modal",customizePrefixCls);var _useStyle=_sliced_to_array(useStyle(prefixCls),3),wrapCSSVar=_useStyle[0],hashId=_useStyle[1],cssVarCls=_useStyle[2];var _React_useState=_sliced_to_array(React.useState(dataSource||[]),2),selectedItems=_React_useState[0],setSelectedItems=_React_useState[1];var setValues=function(values){setSelectedItems(values)};useImperativeHandle(ref,function(){return{setValues:setValues,close:function(){}}});var shouldShowEllipsis=ellipsis&&selectedItems.length>maxVisibleItems;var visibleItems=shouldShowEllipsis?selectedItems.slice(0,maxVisibleItems):selectedItems;var hiddenItems=shouldShowEllipsis?selectedItems.slice(maxVisibleItems):[];return wrapCSSVar(React.createElement(Flex,{className:classNames(prefixCls,className,cssVarCls,hashId),gap:gap,justify:"start",align:"center",wrap:true,style:style},visibleItems.map(itemRender),shouldShowEllipsis&&hiddenItems.length>0&&React.createElement(Popover,{content:popoverContent?popoverContent(hiddenItems):React.createElement(Flex,{gap:gap,style:hideContainerStyle},hiddenItems.map(itemRender)),trigger:"click",open:mode==="custom"?false:undefined},React.createElement(Tag,{bordered:false,style:{cursor:"pointer"},onClick:function(e){e.stopPropagation();e.preventDefault();onEllipsisClick===null||onEllipsisClick===void 0?void 0:onEllipsisClick(hiddenItems,selectedItems)},title:"更多"},"+",hiddenItems.length,React.createElement(EllipsisOutlined,null)))))});
@@ -0,0 +1,8 @@
1
+ import type { FullToken, GenerateStyle, GetDefaultToken } from 'antd/es/theme/internal';
2
+ type DepartmentTreeToken = FullToken<'TagsModal'> & {
3
+ extraPadding?: number;
4
+ };
5
+ export declare const genBaseStyle: GenerateStyle<DepartmentTreeToken>;
6
+ export declare const prepareComponentToken: GetDefaultToken<'TagsModal'>;
7
+ declare const _default: (prefixCls: string, rootCls?: string) => readonly [(node: React.ReactElement) => React.ReactElement, string, string];
8
+ export default _default;
@@ -0,0 +1 @@
1
+ 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}import{genStyleHooks}from"antd/es/theme/internal";export var genBaseStyle=function(token){var componentCls=token.componentCls;return _define_property({},componentCls,{})};export var prepareComponentToken=function(){return{}};export default genStyleHooks("TagsModal",function(token){return[genBaseStyle(token)]},prepareComponentToken);
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ export type BeyondProps = Record<string, any>;
3
+ export type BeyondListModalProps = {
4
+ prefixCls?: string;
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ size?: "small" | "middle" | "large";
8
+ gap?: number;
9
+ ellipsis?: boolean;
10
+ maxVisibleItems?: number;
11
+ placeholder?: string;
12
+ dataSource?: any[];
13
+ itemRender: (item: any, index: number) => React.ReactNode;
14
+ hideContainerStyle?: React.CSSProperties;
15
+ popoverContent?: (list: any[]) => React.ReactNode;
16
+ mode?: "popover" | "custom";
17
+ /**
18
+ * 只有在 mode 为custom 生效
19
+ * @param list
20
+ */
21
+ onEllipsisClick?: (list: any[], all: any[]) => void;
22
+ };
23
+ export type BeyondModalInstance = {
24
+ setValues: (values: Record<string, any>[]) => void;
25
+ close: () => void;
26
+ };
@@ -1,5 +1,5 @@
1
1
  import type { ButtonProps as AntdButtonProps } from "antd";
2
2
  export type ButtonProps = Omit<AntdButtonProps, "onClick"> & {
3
3
  enableLoading?: boolean;
4
- onClick?: (e: React.MouseEvent<HTMLElement>) => Promise<any>;
4
+ onClick?: (e: React.MouseEvent<HTMLElement>) => (Promise<any> | any);
5
5
  };
@@ -1 +1 @@
1
- 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}import{genStyleHooks}from"antd/es/theme/internal";export var genBaseStyle=function(token){var componentCls=token.componentCls;return _define_property({},componentCls,{display:"flex",gap:token.paddingXS,alignItems:"center",".ant-btn":{display:"flex",alignItems:"center"},".ant-dropdown-trigger":{display:"flex",alignItems:"center"}})};export var prepareComponentToken=function(){return{}};export default genStyleHooks("ButtonGroup",function(token){return[genBaseStyle(token)]},prepareComponentToken);
1
+ 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}import{genStyleHooks}from"antd/es/theme/internal";export var genBaseStyle=function(token){var componentCls=token.componentCls;return _define_property({},componentCls,{display:"flex",gap:token.paddingXS,alignItems:"center",".ant-btn":{display:"flex",alignItems:"center"},".ant-btn-link":{paddingLeft:token.paddingXXS,paddingRight:token.paddingXXS},".ant-dropdown-trigger":{display:"flex",alignItems:"center"}})};export var prepareComponentToken=function(){return{}};export default genStyleHooks("ButtonGroup",function(token){return[genBaseStyle(token)]},prepareComponentToken);
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ import type { ExportProps, ExportInstance } from './types';
3
+ export declare const Exports: (props: ExportProps & React.RefAttributes<ExportInstance>) => 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 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_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)}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{useCallback,useEffect,useImperativeHandle}from"react";import{Button}from"../Button";import{Progress,Result}from"antd";import{useLocale}from"../locale";import{CloudDownloadOutlined}from"@ant-design/icons";import{getFilenameFromContentDisposition,downloadFileByBlob}from"../library";import{useState,useRef}from"react";import{Modal}from"../Modal";export var Exports=React.forwardRef(function(props,ref){var trigger=props.trigger,buttonProps=props.buttonProps,_props_params=props.params,params=_props_params===void 0?{}:_props_params,exportApi=props.exportApi,title=props.title,sync=props.sync,onError=props.onError,onSuccess=props.onSuccess,_props_showProgress=props.showProgress,showProgress=_props_showProgress===void 0?true:_props_showProgress,showRetry=props.showRetry,desc=props.desc,checkExportStatusApi=props.checkExportStatusApi,extra=props.extra,modalProps=props.modalProps;var messages=useLocale().messages;var _React_useState=_sliced_to_array(React.useState(false),2),visible=_React_useState[0],setVisible=_React_useState[1];var _useState=_sliced_to_array(useState("idle"),2),status=_useState[0],setStatus=_useState[1];var _useState1=_sliced_to_array(useState(0),2),progress=_useState1[0],setProgress=_useState1[1];var _useState2=_sliced_to_array(useState(null),2),result=_useState2[0],setResult=_useState2[1];var _useState3=_sliced_to_array(useState(""),2),error=_useState3[0],setError=_useState3[1];var pollIntervalRef=useRef(null);var abortControllerRef=useRef(null);var stopPolling=useCallback(function(){if(pollIntervalRef.current){clearTimeout(pollIntervalRef.current);pollIntervalRef.current=null}},[]);var handleCancel=useCallback(function(){if(abortControllerRef.current){abortControllerRef.current.abort()}stopPolling();setStatus("idle");setProgress(0);setError("");setResult(null)},[stopPolling]);var handleClose=useCallback(function(){handleCancel();setVisible(false)},[handleCancel]);var startPolling=useCallback(function(taskId,data){setStatus("checking");var poll=function(){return _async_to_generator(function(){var _ref,result,error,link,err;return _ts_generator(this,function(_state){switch(_state.label){case 0:_state.trys.push([0,2,,3]);if(!abortControllerRef.current)return[2];console.log("轮询检查任务状态:",taskId);return[4,checkExportStatusApi===null||checkExportStatusApi===void 0?void 0:checkExportStatusApi(taskId,data)];case 1:_ref=_state.sent(),result=_ref.data,error=_ref.error;if(error){console.error("检查状态失败:",error);throw new Error("检查状态失败: ".concat(error))}console.log("任务状态结果:",result);if(result.progress){setProgress(Math.min(result.progress,95))}if(result.status==="success"){setProgress(100);setStatus("success");setResult(result);if(result.downloadUrl){link=document.createElement("a");link.href=result.downloadUrl;link.download="export.xlsx";link.click()}onSuccess===null||onSuccess===void 0?void 0:onSuccess(result);stopPolling()}else if(result.status==="error"){setStatus("error");setError(result.message||"导出失败");onError===null||onError===void 0?void 0:onError(result);stopPolling()}else{pollIntervalRef.current=setTimeout(poll,2e3)}return[3,3];case 2:err=_state.sent();if(err.name==="AbortError"){console.log("轮询被取消");return[2]}console.error("轮询检查失败:",err);setStatus("error");setError(err.message||"检查导出状态失败");onError===null||onError===void 0?void 0:onError(err);stopPolling();return[3,3];case 3:return[2]}})})()};void poll()},[checkExportStatusApi,onError,onSuccess,stopPolling]);var handleAsyncExport=React.useCallback(function(){return _async_to_generator(function(){var _ref,data,error,exportResult,err;return _ts_generator(this,function(_state){switch(_state.label){case 0:setStatus("exporting");setProgress(10);abortControllerRef.current=new AbortController;_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,exportApi(params,{signal:abortControllerRef.current.signal})];case 2:_ref=_state.sent(),data=_ref.data,error=_ref.error;if(error){setError(error);handleClose();throw new Error("导出请求失败: ".concat(error))}exportResult=data||{};setProgress(20);if(checkExportStatusApi&&exportResult.taskId){startPolling(exportResult.taskId,exportResult)}else{throw new Error("缺少任务ID或检查接口")}return[3,4];case 3:err=_state.sent();if(err.name==="AbortError"){console.log("异步导出被取消");setStatus("idle");return[2]}console.error("异步导出失败:",err);setStatus("error");setError(err.message||"异步导出失败");onError===null||onError===void 0?void 0:onError(err);stopPolling();return[3,4];case 4:return[2]}})})()},[params,exportApi,checkExportStatusApi,startPolling,handleClose,onError,stopPolling]);var handleSyncExport=React.useCallback(function(){return _async_to_generator(function(){var _response_headers,response,blob,filename,err;return _ts_generator(this,function(_state){switch(_state.label){case 0:setStatus("exporting");setProgress(50);abortControllerRef.current=new AbortController;_state.label=1;case 1:_state.trys.push([1,4,,5]);return[4,exportApi(params,{signal:abortControllerRef.current.signal})];case 2:response=_state.sent();if(response.status!==200){throw new Error("导出失败: ".concat(response.statusText))}return[4,response.blob()];case 3:blob=_state.sent();setProgress(100);setStatus("success");filename=getFilenameFromContentDisposition(response===null||response===void 0?void 0:(_response_headers=response.headers)===null||_response_headers===void 0?void 0:_response_headers["content-disposition"]);downloadFileByBlob(blob,filename);setResult({downloadUrl:URL.createObjectURL(blob),filename:filename});onSuccess===null||onSuccess===void 0?void 0:onSuccess(blob);return[3,5];case 4:err=_state.sent();if(err.name==="AbortError"){setStatus("idle");return[2]}setStatus("error");setError(err.message||messages.exports.errorResText);onError===null||onError===void 0?void 0:onError(err);return[3,5];case 5:return[2]}})})()},[params,exportApi,onSuccess,onError,messages.exports.errorResText]);var start=useCallback(function(){setVisible(true);setStatus("idle");setProgress(0);setError("");setResult(null);setTimeout(function(){if(!sync){void handleAsyncExport()}else{void handleSyncExport()}},100)},[sync,handleAsyncExport,handleSyncExport]);useImperativeHandle(ref,function(){return{start:start}});var handleClick=React.useCallback(function(){start()},[start]);var renderTrigger=React.useMemo(function(){if(trigger){if(React.isValidElement(trigger)){return React.cloneElement(trigger,{onClick:function(e){var _trigger_props_onClick,_trigger_props;(_trigger_props=trigger.props)===null||_trigger_props===void 0?void 0:(_trigger_props_onClick=_trigger_props.onClick)===null||_trigger_props_onClick===void 0?void 0:_trigger_props_onClick.call(_trigger_props,e);void handleClick()}})}}var currentProps=_object_spread_props(_object_spread({type:"primary",icon:React.createElement(CloudDownloadOutlined,null)},buttonProps||{}),{onClick:handleClick,loading:buttonProps===null||buttonProps===void 0?void 0:buttonProps.loading});return React.createElement(Button,currentProps,trigger||messages.exports.text)},[trigger,buttonProps,handleClick,messages.exports.text]);var handleRetry=useCallback(function(){if(!showRetry){return}setStatus("idle");setProgress(0);setError("");setResult(null);if(!sync){void handleAsyncExport()}else{void handleSyncExport()}},[showRetry,sync,handleAsyncExport,handleSyncExport]);var renderContent=React.useMemo(function(){var subTitle=desc===null||desc===void 0?void 0:desc(status);switch(status){case"exporting":case"checking":return React.createElement(Result,{icon:showProgress&&React.createElement(Progress,{type:"circle",percent:progress}),status:!showProgress?"success":undefined,title:messages.exports.progressResText,subTitle:subTitle,extra:[React.createElement(Button,{key:"checking-1",onClick:handleCancel},messages.exports.cancelBtnText),extra===null||extra===void 0?void 0:extra(status,result)]});case"success":return React.createElement(Result,{status:"success",title:messages.exports.successResText,subTitle:subTitle,extra:[React.createElement(Button,{key:"success-1",onClick:handleClose},messages.exports.cancelBtnText),extra===null||extra===void 0?void 0:extra(status,result)]});case"error":return React.createElement(Result,{status:"error",title:error||messages.exports.errorResText,subTitle:subTitle,extra:[React.createElement(Button,{key:"err-1",onClick:handleClose},messages.exports.cancelBtnText),showRetry&&React.createElement(Button,{key:"err-2",onClick:handleRetry},messages.exports.retryText),extra===null||extra===void 0?void 0:extra(status,result)].filter(Boolean)});default:return null}},[result,progress,status,desc,showProgress,messages.exports.progressResText,messages.exports.cancelBtnText,extra,handleCancel,handleClose,messages.exports.successResText,error,messages.exports.errorResText,showRetry,handleRetry]);var currentModalProps=React.useMemo(function(){return _object_spread({centered:true,style:{top:0}},modalProps)},[modalProps]);useEffect(function(){return function(){stopPolling()}},[stopPolling]);return React.createElement(React.Fragment,null,React.createElement(Modal,_object_spread({title:title!==null&&title!==void 0?title:messages.exports.exportTitle,open:visible,onCancel:handleClose,footer:false},currentModalProps),renderContent),renderTrigger)});
@@ -0,0 +1,2 @@
1
+ export * from "./types";
2
+ export * from "./exports";
@@ -0,0 +1 @@
1
+ export*from"./types";export*from"./exports";
@@ -0,0 +1,61 @@
1
+ import * as React from 'react';
2
+ import { type ButtonProps, type ModalProps } from "antd";
3
+ export type CheckApiResult = {
4
+ status: 'success' | 'progress' | 'error';
5
+ [key: string]: any;
6
+ };
7
+ export type ExportStatus = "idle" | "exporting" | "checking" | "success" | "error";
8
+ export interface AsyncExportResult {
9
+ taskId: string;
10
+ status: "pending" | "processing" | "success" | "error";
11
+ downloadUrl?: string;
12
+ message?: string;
13
+ progress?: number;
14
+ }
15
+ export interface ExportProps {
16
+ /**
17
+ * 自定义导出按钮
18
+ */
19
+ trigger?: React.ReactNode;
20
+ /**
21
+ * 导出按钮属性
22
+ */
23
+ buttonProps?: Omit<ButtonProps, "children" | "onClick">;
24
+ /**
25
+ * 导出请求参数
26
+ */
27
+ params?: Record<string, any>;
28
+ /**
29
+ * @description 导出API
30
+ */
31
+ exportApi: (params: Record<string, any>, options: Record<string, any>) => Promise<any>;
32
+ /**
33
+ * @description 是否同步
34
+ */
35
+ sync?: boolean;
36
+ /**
37
+ * 检查导出状态
38
+ * @param params
39
+ */
40
+ checkExportStatusApi?: (params: any, data: any) => Promise<any>;
41
+ onSuccess?: (result: any) => void;
42
+ onError?: (error: any) => void;
43
+ /**
44
+ * 标题
45
+ */
46
+ title?: React.ReactNode;
47
+ /**
48
+ * 是否显示进度条
49
+ */
50
+ showProgress?: boolean;
51
+ /**
52
+ * 是否开启重试
53
+ */
54
+ showRetry?: boolean;
55
+ desc?: (status: ExportStatus) => React.ReactNode;
56
+ extra?: (status: ExportStatus, result: any) => React.ReactNode;
57
+ modalProps?: Omit<ModalProps, "children" | "open" | "onCancel" | "footer">;
58
+ }
59
+ export type ExportInstance = {
60
+ start: () => void;
61
+ };
@@ -0,0 +1,8 @@
1
+ import ListContainer from "./list-container";
2
+ export type { ListContainerProps, ListContainerRef } from "./list-container";
3
+ declare const List: {
4
+ Container: <T>(props: import("./list-container").ListContainerProps<T> & {
5
+ ref?: React.Ref<import("./list-container").ListContainerRef>;
6
+ }) => React.ReactElement;
7
+ };
8
+ export { List, ListContainer };
@@ -0,0 +1 @@
1
+ import ListContainer from"./list-container";var List={Container:ListContainer};export{List,ListContainer};
@@ -0,0 +1,37 @@
1
+ import { type ReactNode } from "react";
2
+ import type { ColProps } from "antd";
3
+ import type { CSSProperties } from "react";
4
+ export interface ListContainerProps<T = any> {
5
+ searchArea?: ReactNode;
6
+ renderItem: (item: T, index: number) => ReactNode;
7
+ rowKey?: keyof T | ((item: T) => React.Key);
8
+ colProps?: ColProps;
9
+ paginationAlign?: "left" | "center" | "right";
10
+ pageSize?: number;
11
+ showSizeChanger?: boolean;
12
+ pageSizeOptions?: number[];
13
+ fetchData: (params: {
14
+ page: number;
15
+ pageSize: number;
16
+ [key: string]: any;
17
+ }) => Promise<{
18
+ data: T[];
19
+ total: number;
20
+ }>;
21
+ extraParams?: Record<string, any>;
22
+ gutter?: [number, number] | number;
23
+ loading?: boolean;
24
+ emptyText?: ReactNode;
25
+ className?: string;
26
+ listWrapperStyle?: CSSProperties;
27
+ }
28
+ export interface ListContainerRef {
29
+ reset: () => void;
30
+ setPage: (page: number) => void;
31
+ setPageSize: (pageSize: number) => void;
32
+ refresh: () => void;
33
+ }
34
+ export declare const ListContainer: <T>(props: ListContainerProps<T> & {
35
+ ref?: React.Ref<ListContainerRef>;
36
+ }) => React.ReactElement;
37
+ export default ListContainer;
@@ -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 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_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 _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{useState,useEffect,forwardRef,useImperativeHandle}from"react";import{Row,Col,Pagination,Spin,Empty,Flex}from"antd";function ListContainerInner(props,ref){var searchArea=props.searchArea,renderItem=props.renderItem,rowKey=props.rowKey,_props_colProps=props.colProps,colProps=_props_colProps===void 0?{xs:24,sm:12,md:8,lg:6,xl:6}:_props_colProps,_props_paginationAlign=props.paginationAlign,paginationAlign=_props_paginationAlign===void 0?"center":_props_paginationAlign,tmp=props.pageSize,initialPageSize=tmp===void 0?10:tmp,_props_showSizeChanger=props.showSizeChanger,showSizeChanger=_props_showSizeChanger===void 0?true:_props_showSizeChanger,_props_pageSizeOptions=props.pageSizeOptions,pageSizeOptions=_props_pageSizeOptions===void 0?[10,20,50,100]:_props_pageSizeOptions,fetchData=props.fetchData,_props_extraParams=props.extraParams,extraParams=_props_extraParams===void 0?{}:_props_extraParams,_props_gutter=props.gutter,gutter=_props_gutter===void 0?[16,16]:_props_gutter,externalLoading=props.loading,_props_emptyText=props.emptyText,emptyText=_props_emptyText===void 0?"暂无数据":_props_emptyText,className=props.className,listWrapperStyle=props.listWrapperStyle;var _useState=_sliced_to_array(useState([]),2),data=_useState[0],setData=_useState[1];var _useState1=_sliced_to_array(useState(0),2),total=_useState1[0],setTotal=_useState1[1];var _useState2=_sliced_to_array(useState(1),2),page=_useState2[0],setPageState=_useState2[1];var _useState3=_sliced_to_array(useState(initialPageSize),2),pageSize=_useState3[0],setPageSizeState=_useState3[1];var _useState4=_sliced_to_array(useState(false),2),loading=_useState4[0],setLoading=_useState4[1];var loadData=function(){return _async_to_generator(function(){var result,error;return _ts_generator(this,function(_state){switch(_state.label){case 0:setLoading(true);_state.label=1;case 1:_state.trys.push([1,3,4,5]);return[4,fetchData(_object_spread({page:page,pageSize:pageSize},extraParams))];case 2:result=_state.sent();setData(result.data);setTotal(result.total);return[3,5];case 3:error=_state.sent();console.error("Failed to fetch data:",error);setData([]);setTotal(0);return[3,5];case 4:setLoading(false);return[7];case 5:return[2]}})})()};useEffect(function(){loadData()},[page,pageSize,JSON.stringify(extraParams)]);var reset=function(){setPageState(1);setPageSizeState(initialPageSize)};var setPage=function(newPage){setPageState(newPage)};var setPageSize=function(newPageSize){setPageState(1);setPageSizeState(newPageSize)};var refresh=function(){loadData()};useImperativeHandle(ref,function(){return{reset:reset,setPage:setPage,setPageSize:setPageSize,refresh:refresh}});var getKey=function(item,index){if(typeof rowKey==="function"){return rowKey(item)}if(typeof rowKey==="string"&&item&&(typeof item==="undefined"?"undefined":_type_of(item))==="object"){return item[rowKey]}return index};var handlePaginationChange=function(newPage,newPageSize){if(newPageSize!==pageSize){setPageSize(newPageSize)}else{setPage(newPage)}};var paginationAlignStyle={left:"flex-start",center:"center",right:"flex-end"}[paginationAlign];var isLoading=externalLoading!==undefined?externalLoading:loading;return React.createElement(Flex,{className:" ".concat(className||""),vertical:true,gap:4},searchArea&&React.createElement("div",{className:"bg-card rounded-lg border border-border p-4"},searchArea),React.createElement("div",{className:"bg-card rounded-lg border border-border p-4 min-h-[400px]",style:listWrapperStyle},isLoading?React.createElement(Spin,{spinning:true}):data.length===0?React.createElement(Empty,null):React.createElement(Row,{gutter:gutter},data.map(function(item,index){return React.createElement(Col,_object_spread({key:getKey(item,index)},colProps),renderItem(item,index))}))),total>0&&React.createElement("div",{className:"flex bg-card rounded-lg border border-border p-4",style:{justifyContent:paginationAlignStyle}},React.createElement(Pagination,{current:page,pageSize:pageSize,total:total,onChange:handlePaginationChange,showSizeChanger:showSizeChanger,pageSizeOptions:pageSizeOptions,showTotal:function(total){return"共 ".concat(total," 条")}})))}export var ListContainer=forwardRef(ListContainerInner);export default ListContainer;
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import type { ProTableProps, ProTableSearchProps, GridCardRender } from "../types";
3
+ export declare const Container: <DataSource extends Record<string, any> = Record<string, any>, ParamsType extends Record<string, any> = Record<string, any>, ValueType = "text">(props: {
4
+ prefixCls: string;
5
+ cssVarCls: string;
6
+ className?: string;
7
+ style?: React.CSSProperties;
8
+ searchConfig: Omit<ProTableSearchProps<DataSource, ValueType extends string ? ValueType : "text">, "columns"> | null;
9
+ searchColumns: any[];
10
+ columns: any[];
11
+ headerTitle: React.ReactNode;
12
+ rowSelection: any;
13
+ pagination: any;
14
+ tableProps: Omit<ProTableProps<DataSource, ParamsType, ValueType>, "columns" | "search" | "searchType" | "showCreateBtn" | "createBtnProps" | "onCreate" | "showBatchRemoveBtn" | "batchRemoveBtnProps" | "onBatchRemove" | "headerButtonItems" | "headerButtonMaxCount" | "openPageSizeCache" | "defaultPageSize">;
15
+ actionRef?: any;
16
+ wrapCSS: (element: React.ReactElement) => React.ReactElement;
17
+ gridCardRender?: GridCardRender<DataSource>;
18
+ gridColumns?: {
19
+ xs?: number;
20
+ sm?: number;
21
+ md?: number;
22
+ lg?: number;
23
+ xl?: number;
24
+ xxl?: number;
25
+ };
26
+ gridCardFieldsPerRow?: number;
27
+ }) => React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
@@ -0,0 +1 @@
1
+ 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}import React from"react";import{Flex}from"antd";import classNames from"classnames";import ProTableSearch from"./search";import{ProTableList}from"./list/index";export var Container=function(props){var prefixCls=props.prefixCls,cssVarCls=props.cssVarCls,className=props.className,style=props.style,searchConfig=props.searchConfig,searchColumns=props.searchColumns,columns=props.columns,headerTitle=props.headerTitle,rowSelection=props.rowSelection,pagination=props.pagination,tableProps=props.tableProps,actionRef=props.actionRef,wrapCSS=props.wrapCSS,gridCardRender=props.gridCardRender,gridColumns=props.gridColumns,gridCardFieldsPerRow=props.gridCardFieldsPerRow;return wrapCSS(React.createElement(Flex,{vertical:true,gap:8,className:classNames(prefixCls,cssVarCls,className),style:style},searchConfig&&React.createElement(ProTableSearch,_object_spread({columns:searchColumns},searchConfig)),React.createElement(ProTableList,{columns:columns,headerTitle:headerTitle,rowSelection:rowSelection,pagination:pagination,tableProps:_object_spread_props(_object_spread({},tableProps),{gridCardFieldsPerRow:gridCardFieldsPerRow}),actionRef:actionRef,gridCardRender:gridCardRender,gridColumns:gridColumns})))};
@@ -0,0 +1,34 @@
1
+ import React from "react";
2
+ import type { ProColumns } from "@ant-design/pro-components";
3
+ import type { OperationType, FormConfig } from "../types";
4
+ export interface FormContentProps<T = any, ValueType extends string = 'text'> {
5
+ /**
6
+ * 操作类型
7
+ */
8
+ type: OperationType;
9
+ /**
10
+ * 当前记录(编辑和查看时使用)
11
+ */
12
+ record?: T;
13
+ /**
14
+ * 表格列配置(用于自动生成表单)
15
+ */
16
+ tableColumns?: ProColumns<T, ValueType>[];
17
+ /**
18
+ * 表单配置
19
+ */
20
+ formConfig?: FormConfig<T, ValueType>;
21
+ /**
22
+ * 表单提交回调
23
+ */
24
+ onSubmit?: (values: T) => Promise<void>;
25
+ /**
26
+ * 表单实例引用
27
+ */
28
+ formRef?: React.MutableRefObject<any>;
29
+ }
30
+ /**
31
+ * 表单内容组件
32
+ * 用于显示具体的表单内容(新增/编辑/查看)
33
+ */
34
+ export declare const FormContent: <T extends Record<string, any> = Record<string, any>, ValueType extends string = "text">(props: FormContentProps<T, ValueType>) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
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 _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 _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 React,{useContext}from"react";import{ProForm,BetaSchemaForm}from"@ant-design/pro-components";import{VlianTableContext}from"../context.ts";import{Card}from"../../Card";import{Button}from"../../Button";import{useLocale}from"../../locale";import{useNavigate}from"react-router-dom";import{useRequest}from"ahooks";import{isNumeric}from"../../library";export var UpdateView=function(props){var messages=useLocale().messages;var navigate=useNavigate();var title=props.title,_props_columns=props.columns,columns=_props_columns===void 0?[]:_props_columns,children=props.children,footer=props.footer,detail=props.detail,_props_initialValues=props.initialValues,initialValues=_props_initialValues===void 0?{}:_props_initialValues,width=props.width,onUpdate=props.onUpdate,onUpdateSubmitBefore=props.onUpdateSubmitBefore,onUpdateSubmitAfter=props.onUpdateSubmitAfter,rest=_object_without_properties(props,["title","columns","children","footer","detail","initialValues","width","onUpdate","onUpdateSubmitBefore","onUpdateSubmitAfter"]);var context=useContext(VlianTableContext);var _context_mode=context.mode,mode=_context_mode===void 0?"modal":_context_mode,baseUrl=context.baseUrl,currentRecord=context.currentRecord,currentIndex=context.currentIndex,closePopup=context.closePopup;var _useRequest=useRequest(function(){return _async_to_generator(function(){var record;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(currentIndex===-1||!currentRecord||Object.keys(currentRecord).length===0){throw new Error("列表记录传参错误")}record=currentRecord;if(!detail)return[3,2];return[4,detail(currentRecord,currentIndex)];case 1:record=_state.sent();_state.label=2;case 2:return[2,record]}})})()},{refreshDeps:[currentRecord],ready:!!currentRecord}),data=_useRequest.data,loading=_useRequest.loading;var onFinish=function(values){return _async_to_generator(function(){var res,res1,e;return _ts_generator(this,function(_state){switch(_state.label){case 0:_state.trys.push([0,5,,6]);if(!onUpdateSubmitBefore)return[3,2];return[4,onUpdateSubmitBefore(values)];case 1:res=_state.sent();if(!res){return[2,false]}_state.label=2;case 2:if(!onUpdate)return[3,4];return[4,onUpdate(values)];case 3:res1=_state.sent();if(!res1){return[2,false]}onUpdateSubmitAfter===null||onUpdateSubmitAfter===void 0?void 0:onUpdateSubmitAfter(res1,values);navigate("".concat(baseUrl,"/"));_state.label=4;case 4:return[2,true];case 5:e=_state.sent();return[2,false];case 6:return[2]}})})()};var ContainerComponent=mode==="router"?Card:Card;var ContainerProps=mode==="router"?{title:title,variant:"borderless",extra:React.createElement(Button,{onClick:function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,closePopup===null||closePopup===void 0?void 0:closePopup()];case 1:_state.sent();navigate("".concat(baseUrl,"/"));return[2]}})})()}},messages.table.backText),fixedHeader:true,style:{height:"100%"},styles:{body:{padding:"10px",width:width?isNumeric(width)?"".concat(width,"px"):width:"100%",margin:"0 auto"},header:{padding:"10px",minHeight:"46px"}}}:{fixedHeader:true,style:{height:"100%"},styles:{body:{padding:"10px"}}};return React.createElement(React.Fragment,null,React.createElement(ContainerComponent,_object_spread({loading:loading},ContainerProps),React.createElement(ProForm,_object_spread_props(_object_spread({submitter:false},rest),{onFinish:onFinish,initialValues:_object_spread({},initialValues,data)}),children?children:React.createElement(BetaSchemaForm,{layoutType:"Embed",columns:columns})),footer))};
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 _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 _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 React from"react";import{ProForm}from"../../Form";export var FormContent=function(props){var type=props.type,record=props.record,_props_tableColumns=props.tableColumns,tableColumns=_props_tableColumns===void 0?[]:_props_tableColumns,_props_formConfig=props.formConfig,formConfig=_props_formConfig===void 0?{}:_props_formConfig,onSubmit=props.onSubmit,externalFormRef=props.formRef;var customColumns=formConfig.columns,_formConfig_formProps=formConfig.formProps,formProps=_formConfig_formProps===void 0?{}:_formConfig_formProps,_formConfig_layout=formConfig.layout,layout=_formConfig_layout===void 0?"horizontal":_formConfig_layout,labelCol=formConfig.labelCol,wrapperCol=formConfig.wrapperCol;var internalFormRef=React.useRef(null);var formRef=externalFormRef||internalFormRef;var generateFormColumns=React.useMemo(function(){if(customColumns&&customColumns.length>0){return customColumns}return tableColumns.filter(function(col){var _col_hideInForm=col.hideInForm,hideInForm=_col_hideInForm===void 0?false:_col_hideInForm,valueType=col.valueType;if(valueType==="option"){return false}return!hideInForm}).map(function(col){var title=col.title,dataIndex=col.dataIndex,_col_valueType=col.valueType,valueType=_col_valueType===void 0?"text":_col_valueType,valueEnum=col.valueEnum,fieldProps=col.fieldProps,formItemProps=col.formItemProps,restCol=_object_without_properties(col,["title","dataIndex","valueType","valueEnum","fieldProps","formItemProps"]);var formColumn=_object_spread({title:title,dataIndex:dataIndex,valueType:valueType,valueEnum:valueEnum,fieldProps:_object_spread({},fieldProps),formItemProps:_object_spread({},formItemProps)},restCol);if(type==="view"){formColumn.readonly=true;formColumn.fieldProps=_object_spread_props(_object_spread({},formColumn.fieldProps),{disabled:true})}return formColumn})},[tableColumns,customColumns,type]);var initialValues=React.useMemo(function(){if(type==="create"){return formProps.initialValues||{}}return record||formProps.initialValues||{}},[type,record,formProps.initialValues]);var handleFinish=function(values){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!onSubmit)return[3,2];return[4,onSubmit(values)];case 1:_state.sent();_state.label=2;case 2:return[2]}})})()};return React.createElement(ProForm,_object_spread({formRef:formRef,columns:generateFormColumns,layout:layout,layoutType:"Form",labelCol:_object_spread({flex:"0 0 auto"},labelCol),wrapperCol:wrapperCol,initialValues:initialValues,onFinish:handleFinish,submitter:false},formProps))};
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import type { OperationType } from "../types";
3
+ export interface FormFooterProps {
4
+ /**
5
+ * 操作类型
6
+ */
7
+ type: OperationType;
8
+ /**
9
+ * 提交按钮文本
10
+ */
11
+ submitText?: string;
12
+ /**
13
+ * 取消按钮文本
14
+ */
15
+ cancelText?: string;
16
+ /**
17
+ * 提交中状态
18
+ */
19
+ loading?: boolean;
20
+ /**
21
+ * 提交回调
22
+ */
23
+ onSubmit: () => void;
24
+ /**
25
+ * 取消回调
26
+ */
27
+ onCancel: () => void;
28
+ }
29
+ /**
30
+ * 表单底部按钮组件
31
+ */
32
+ export declare const FormFooter: React.FC<FormFooterProps>;
@@ -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 React from"react";import{Space}from"antd";import{Button}from"../../Button";import{useLocale}from"../../locale";import useStyle from"../styles";export var FormFooter=function(props){var type=props.type,submitText=props.submitText,cancelText=props.cancelText,_props_loading=props.loading,loading=_props_loading===void 0?false:_props_loading,onSubmit=props.onSubmit,onCancel=props.onCancel;var messages=useLocale().messages;var _useStyle=_sliced_to_array(useStyle("VlianTable"),2),wrapSSR=_useStyle[0],hashId=_useStyle[1];var getSubmitText=function(){if(submitText){return submitText}switch(type){case"create":return messages.table.createSubmitText||"创建";case"update":return messages.table.updateSubmitText||"保存";case"view":return messages.table.closeText||"关闭";default:return messages.table.submitText||"提交"}};if(type==="view"){return wrapSSR(React.createElement("div",{className:"VlianTable-form-footer ".concat(hashId)},React.createElement(Button,{onClick:onCancel},cancelText||messages.table.closeText||"关闭")))}return wrapSSR(React.createElement("div",{className:"VlianTable-form-footer ".concat(hashId)},React.createElement(Space,null,React.createElement(Button,{onClick:onCancel},cancelText||messages.table.cancelText||"取消"),React.createElement(Button,{type:"primary",loading:loading,onClick:onSubmit},getSubmitText()))))};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 网格卡片组件
3
+ * 从 list/index.tsx 中提取,减少组件职责
4
+ */
5
+ import React from "react";
6
+ export interface GridCardProps<T = any> {
7
+ /** 当前记录 */
8
+ record: T;
9
+ /** 记录索引 */
10
+ index: number;
11
+ /** 排序后的列配置 */
12
+ sortedColumns: any[];
13
+ /** rowKey 配置 */
14
+ rowKey?: string | ((record: T, index: number) => React.Key);
15
+ /** 是否选中 */
16
+ isSelected?: boolean;
17
+ /** 选择变化回调 */
18
+ onSelect?: (checked: boolean) => void;
19
+ /** 是否显示选择框 */
20
+ showSelection?: boolean;
21
+ /** 每行显示的字段数量 */
22
+ fieldsPerRow?: number;
23
+ }
24
+ /**
25
+ * 默认网格卡片组件
26
+ */
27
+ export declare const GridCard: <T extends Record<string, any> = Record<string, any>>(props: GridCardProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -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 React from"react";import{Card,Checkbox,Row,Col,Space}from"antd";import useStyle from"../styles";import{getResponsiveSpan,formatDisplayValue}from"../utils";export var GridCard=function(props){var _actionColumn_render;var record=props.record,index=props.index,sortedColumns=props.sortedColumns,rowKey=props.rowKey,_props_isSelected=props.isSelected,isSelected=_props_isSelected===void 0?false:_props_isSelected,onSelect=props.onSelect,_props_showSelection=props.showSelection,showSelection=_props_showSelection===void 0?true:_props_showSelection;var _useStyle=_sliced_to_array(useStyle("VlianTable"),2),hashId=_useStyle[1];var recordKey=React.useMemo(function(){if(typeof rowKey==="function"){return rowKey(record,index)}return record[rowKey||"id"]},[rowKey,record,index]);var displayColumns=React.useMemo(function(){return sortedColumns.filter(function(col){return!col.hideInTable&&col.dataIndex&&col.valueType!=="option"&&col.key!=="actions"&&col.dataIndex!=="actions"})},[sortedColumns]);var actionColumn=React.useMemo(function(){return sortedColumns.find(function(col){return col.valueType==="option"||col.key==="actions"||col.dataIndex==="actions"})},[sortedColumns]);var titleColumn=displayColumns[0];var titleValue=titleColumn?record[titleColumn.dataIndex]:"";var titleDisplay=(titleColumn===null||titleColumn===void 0?void 0:titleColumn.render)?titleColumn.render(titleValue,record,index):titleValue;var titleFullText=titleColumn?"".concat(titleColumn.title,": ").concat(formatDisplayValue(titleDisplay)):"";var remainingColumns=displayColumns.slice(1);var handleCheckboxChange=React.useCallback(function(e){e.stopPropagation();var checked=e.target.checked;onSelect===null||onSelect===void 0?void 0:onSelect(checked)},[onSelect]);return React.createElement(Card,{hoverable:true,className:"VlianTable-grid-card ".concat(hashId),styles:{body:{padding:"8px 16px"},header:{padding:"0 16px",minHeight:"40px",height:"40px"}},title:React.createElement("div",{className:"VlianTable-grid-card-title ".concat(hashId),title:titleFullText},titleColumn&&React.createElement(React.Fragment,null,React.createElement("span",{className:"VlianTable-grid-card-title-label ".concat(hashId)},titleColumn.title,":")," ",React.createElement("span",{className:"VlianTable-grid-card-title-value ".concat(hashId)},titleDisplay||"-"))),extra:showSelection?React.createElement(Checkbox,{checked:isSelected,onChange:handleCheckboxChange,onClick:function(e){return e.stopPropagation()}}):null},remainingColumns.length>0&&React.createElement(Row,{gutter:[12,12],className:"VlianTable-grid-card-fields-row ".concat(actionColumn?"":"VlianTable-grid-card-fields-row-no-actions"," ").concat(hashId)},remainingColumns.map(function(col){var value=record[col.dataIndex];var displayValue=col.render?col.render(value,record,index):value;var gridSpan=col.gridSpan||"half";var responsiveSpan=getResponsiveSpan(gridSpan);return React.createElement(Col,_object_spread_props(_object_spread({key:col.dataIndex},responsiveSpan),{className:"VlianTable-grid-card-field-col ".concat(hashId)}),React.createElement("div",{className:"VlianTable-grid-card-field-container ".concat(hashId)},React.createElement("div",{className:"VlianTable-grid-card-field-label ".concat(hashId),title:col.title},col.title,":"),React.createElement("div",{className:"VlianTable-grid-card-field-value ".concat(hashId),title:formatDisplayValue(displayValue)},displayValue||"-")))})),actionColumn&&React.createElement("div",{className:"VlianTable-grid-card-actions ".concat(remainingColumns.length>0?"VlianTable-grid-card-actions-with-gap":"VlianTable-grid-card-actions-no-gap"," ").concat(hashId)},React.createElement(Space,{size:"small"},(_actionColumn_render=actionColumn.render)===null||_actionColumn_render===void 0?void 0:_actionColumn_render.call(actionColumn,null,record,index))))};
@@ -0,0 +1,52 @@
1
+ import React from "react";
2
+ import type { PaginationProps } from "antd";
3
+ import type { GridCardRender } from "../types";
4
+ export interface GridViewProps<T = any> {
5
+ /**
6
+ * 数据源
7
+ */
8
+ dataSource: T[];
9
+ /**
10
+ * 网格卡片渲染函数
11
+ */
12
+ cardRender: GridCardRender<T>;
13
+ /**
14
+ * 网格列数配置
15
+ */
16
+ gridColumns?: {
17
+ xs?: number;
18
+ sm?: number;
19
+ md?: number;
20
+ lg?: number;
21
+ xl?: number;
22
+ xxl?: number;
23
+ };
24
+ /**
25
+ * 分页配置
26
+ */
27
+ pagination?: false | PaginationProps;
28
+ /**
29
+ * ProTable actionRef,用于获取实时分页状态
30
+ */
31
+ actionRef?: any;
32
+ /**
33
+ * 行选择配置
34
+ */
35
+ rowSelection?: any;
36
+ /**
37
+ * 已选中的行 keys
38
+ */
39
+ selectedRowKeys?: React.Key[];
40
+ /**
41
+ * 选择变化的回调
42
+ */
43
+ onSelectChange?: (keys: React.Key[], rows: T[]) => void;
44
+ /**
45
+ * 获取行的 key
46
+ */
47
+ rowKey?: string | ((record: T, index: number) => React.Key);
48
+ }
49
+ /**
50
+ * 网格视图组件
51
+ */
52
+ export declare const GridView: <T extends Record<string, any> = Record<string, any>>(props: GridViewProps<T>) => React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
@@ -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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(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(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 _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 _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 React from"react";import{Row,Col,Card,Pagination}from"antd";import useStyle from"../styles";export var GridView=function(props){var _actionRef_current;var _props_dataSource=props.dataSource,dataSource=_props_dataSource===void 0?[]:_props_dataSource,cardRender=props.cardRender,_props_gridColumns=props.gridColumns,gridColumns=_props_gridColumns===void 0?{xs:1,sm:2,md:3,lg:3,xl:3,xxl:3}:_props_gridColumns,pagination=props.pagination,actionRef=props.actionRef,rowSelection=props.rowSelection,_props_selectedRowKeys=props.selectedRowKeys,selectedRowKeys=_props_selectedRowKeys===void 0?[]:_props_selectedRowKeys,onSelectChange=props.onSelectChange,_props_rowKey=props.rowKey,rowKey=_props_rowKey===void 0?"id":_props_rowKey;var _useStyle=_sliced_to_array(useStyle("VlianTable"),2),wrapSSR=_useStyle[0],hashId=_useStyle[1];var pageInfo=actionRef===null||actionRef===void 0?void 0:(_actionRef_current=actionRef.current)===null||_actionRef_current===void 0?void 0:_actionRef_current.pageInfo;var mergedPagination=React.useMemo(function(){if(pagination===false){return false}return _object_spread_props(_object_spread({},pagination),{current:(pageInfo===null||pageInfo===void 0?void 0:pageInfo.current)||(pagination===null||pagination===void 0?void 0:pagination.current)||1,pageSize:(pageInfo===null||pageInfo===void 0?void 0:pageInfo.pageSize)||(pagination===null||pagination===void 0?void 0:pagination.pageSize)||10,total:(pageInfo===null||pageInfo===void 0?void 0:pageInfo.total)||(pagination===null||pagination===void 0?void 0:pagination.total)||0})},[pagination,pageInfo]);var handlePageChange=React.useCallback(function(page,pageSize){var _pagination_onChange,_actionRef_current;pagination===null||pagination===void 0?void 0:(_pagination_onChange=pagination.onChange)===null||_pagination_onChange===void 0?void 0:_pagination_onChange.call(pagination,page,pageSize);if(actionRef===null||actionRef===void 0?void 0:(_actionRef_current=actionRef.current)===null||_actionRef_current===void 0?void 0:_actionRef_current.setPageInfo){actionRef.current.setPageInfo({current:page,pageSize:pageSize})}},[pagination,actionRef]);var handlePageSizeChange=React.useCallback(function(current,size){var _pagination_onShowSizeChange,_actionRef_current;pagination===null||pagination===void 0?void 0:(_pagination_onShowSizeChange=pagination.onShowSizeChange)===null||_pagination_onShowSizeChange===void 0?void 0:_pagination_onShowSizeChange.call(pagination,current,size);if(actionRef===null||actionRef===void 0?void 0:(_actionRef_current=actionRef.current)===null||_actionRef_current===void 0?void 0:_actionRef_current.setPageInfo){actionRef.current.setPageInfo({current:current,pageSize:size})}},[pagination,actionRef]);var colSpan=React.useMemo(function(){return{xs:gridColumns.xs?24/gridColumns.xs:24,sm:gridColumns.sm?24/gridColumns.sm:12,md:gridColumns.md?24/gridColumns.md:8,lg:gridColumns.lg?24/gridColumns.lg:6,xl:gridColumns.xl?24/gridColumns.xl:6,xxl:gridColumns.xxl?24/gridColumns.xxl:4}},[gridColumns]);var getRecordKey=React.useCallback(function(record,index){if(typeof rowKey==="function"){return rowKey(record,index)}return record[rowKey]},[rowKey]);var handleSelect=React.useCallback(function(record,index){return function(selected){var key=getRecordKey(record,index);var newKeys;var newRows;if(selected){newKeys=_to_consumable_array(selectedRowKeys).concat([key]);newRows=dataSource.filter(function(item,idx){var itemKey=getRecordKey(item,idx);return selectedRowKeys.includes(itemKey)||itemKey===key})}else{newKeys=selectedRowKeys.filter(function(k){return k!==key});newRows=dataSource.filter(function(item,idx){var itemKey=getRecordKey(item,idx);return newKeys.includes(itemKey)})}onSelectChange===null||onSelectChange===void 0?void 0:onSelectChange(newKeys,newRows)}},[dataSource,selectedRowKeys,onSelectChange,getRecordKey]);if(!dataSource||dataSource.length===0){return wrapSSR(React.createElement(Card,null,React.createElement("div",{className:"VlianTable-grid-view-empty ".concat(hashId)},"暂无数据")))}return wrapSSR(React.createElement("div",null,React.createElement(Row,{gutter:[16,16]},dataSource.map(function(record,index){var key=getRecordKey(record,index);var isSelected=selectedRowKeys.includes(key);var showSelection=rowSelection&&rowSelection!==false;return React.createElement(Col,_object_spread({key:index},colSpan),cardRender({record:record,index:index,isSelected:isSelected,rowKey:key,onSelect:handleSelect(record,index),showSelection:showSelection}))})),mergedPagination!==false&&React.createElement("div",{className:"VlianTable-grid-view-pagination ".concat(hashId)},React.createElement(Pagination,_object_spread_props(_object_spread({showQuickJumper:false,showSizeChanger:true,align:"end",showTotal:function(total,range){return"第 ".concat(range[0],"-").concat(range[1]," 条/总共 ").concat(total," 条")}},mergedPagination),{onChange:handlePageChange,onShowSizeChange:handlePageSizeChange})))))};
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ /**
3
+ * Router 模式下的表头按钮包装器
4
+ * 在 Router 模式下,为表头按钮添加导航功能
5
+ */
6
+ export declare const HeaderButtonsWrapper: React.FC<{
7
+ children: React.ReactNode;
8
+ mode: 'modal' | 'drawer' | 'router';
9
+ operationType: string;
10
+ }>;
@@ -0,0 +1 @@
1
+ import React from"react";import{useNavigate}from"react-router-dom";export var HeaderButtonsWrapper=function(param){var children=param.children,mode=param.mode,operationType=param.operationType;var navigate=useNavigate();React.useEffect(function(){if(mode==="router"&&operationType==="create"){navigate("/create")}},[mode,operationType,navigate]);return React.createElement(React.Fragment,null,children)};
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import type { ProTableProps, GridCardRender } from "../../types";
3
+ export declare const ProTableList: <DataSource extends Record<string, any> = Record<string, any>, ParamsType extends Record<string, any> = Record<string, any>, ValueType = "text">(props: {
4
+ columns: any[];
5
+ headerTitle?: React.ReactNode;
6
+ rowSelection?: any;
7
+ pagination?: any;
8
+ tableProps: Omit<ProTableProps<DataSource, ParamsType, ValueType>, "columns" | "search" | "searchType" | "showCreateBtn" | "createBtnProps" | "onCreate" | "showBatchRemoveBtn" | "batchRemoveBtnProps" | "onBatchRemove" | "headerButtonItems" | "headerButtonMaxCount" | "openPageSizeCache" | "defaultPageSize">;
9
+ actionRef?: any;
10
+ gridCardRender?: GridCardRender<DataSource>;
11
+ gridColumns?: {
12
+ xs?: number;
13
+ sm?: number;
14
+ md?: number;
15
+ lg?: number;
16
+ xl?: number;
17
+ xxl?: number;
18
+ };
19
+ }) => React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
@@ -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 _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(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(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 _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)}import React from"react";import{ProTable as AntdProTable}from"@ant-design/pro-components";import{ProTableContext}from"../../context";import{useContext}from"react";import{AppstoreOutlined,TableOutlined}from"@ant-design/icons";import{GridView}from"../grid-view";import{Spin,Tooltip}from"antd";import useStyle from"../../styles";import{GridCard}from"../grid-card";export var ProTableList=function(props){var columns=props.columns,headerTitle=props.headerTitle,rowSelection=props.rowSelection,pagination=props.pagination,tableProps=props.tableProps,actionRef=props.actionRef,gridCardRender=props.gridCardRender,gridColumns=props.gridColumns;var _useContext=useContext(ProTableContext),selectedRowKeys=_useContext.selectedRowKeys,setSelectedRowKeys=_useContext.setSelectedRowKeys,setSelectedRows=_useContext.setSelectedRows,viewMode=_useContext.viewMode,setViewMode=_useContext.setViewMode,dataSource=_useContext.dataSource,setDataSource=_useContext.setDataSource,loading=_useContext.loading;var _useStyle=_sliced_to_array(useStyle("VlianTable"),2),wrapSSR=_useStyle[0],hashId=_useStyle[1];var _React_useState=_sliced_to_array(React.useState(columns),2),sortedColumns=_React_useState[0],setSortedColumns=_React_useState[1];var fieldsPerRow=tableProps.gridCardFieldsPerRow||3;var handleColumnsStateChange=React.useCallback(function(map){var newSortedColumns=_to_consumable_array(columns).sort(function(a,b){var _map_aKey,_map_bKey;var aKey=a.key||a.dataIndex;var bKey=b.key||b.dataIndex;var _map_aKey_order;var aOrder=(_map_aKey_order=(_map_aKey=map[aKey])===null||_map_aKey===void 0?void 0:_map_aKey.order)!==null&&_map_aKey_order!==void 0?_map_aKey_order:0;var _map_bKey_order;var bOrder=(_map_bKey_order=(_map_bKey=map[bKey])===null||_map_bKey===void 0?void 0:_map_bKey.order)!==null&&_map_bKey_order!==void 0?_map_bKey_order:0;return aOrder-bOrder});setSortedColumns(newSortedColumns)},[columns]);var defaultGridCardRender=React.useCallback(function(params){return React.createElement(GridCard,_object_spread_props(_object_spread({},params),{sortedColumns:sortedColumns,rowKey:tableProps.rowKey,fieldsPerRow:fieldsPerRow}))},[sortedColumns,tableProps.rowKey,fieldsPerRow]);var finalGridCardRender=gridCardRender||defaultGridCardRender;var handleGridSelectChange=React.useCallback(function(keys,rows){setSelectedRowKeys(keys);setSelectedRows(rows);if(rowSelection&&(typeof rowSelection==="undefined"?"undefined":_type_of(rowSelection))==="object"&&rowSelection.onChange){rowSelection.onChange(keys,rows)}},[rowSelection,setSelectedRowKeys,setSelectedRows]);var mergedRowSelection=React.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||[])}}}})},[rowSelection,selectedRowKeys,setSelectedRowKeys,setSelectedRows]);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(){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]);return wrapSSR(React.createElement("div",{className:"VlianTable-list ".concat(hashId)},React.createElement(AntdProTable,_object_spread_props(_object_spread({},tableProps),{className:viewMode==="grid"?"VlianTable-grid-mode ".concat(hashId):undefined,columns:columns,search:false,cardProps:false,headerTitle:headerTitle,rowSelection:mergedRowSelection,pagination:pagination,actionRef:actionRef,scroll:mergedScroll,options:mergedOptions,toolbar:toolbar,onDataSourceChange:function(datas){setDataSource(datas)},onColumnsStateChange:function(map){var _tableProps_onColumnsStateChange;handleColumnsStateChange(map);(_tableProps_onColumnsStateChange=tableProps.onColumnsStateChange)===null||_tableProps_onColumnsStateChange===void 0?void 0:_tableProps_onColumnsStateChange.call(tableProps,map)},tableRender:function(_,dom){if(viewMode==="grid"){return React.createElement(React.Fragment,null,dom,React.createElement("div",null,React.createElement(Spin,{spinning:loading},React.createElement(GridView,{dataSource:dataSource,cardRender:finalGridCardRender,gridColumns:gridColumns,pagination:pagination,actionRef:actionRef,rowSelection:rowSelection,selectedRowKeys:selectedRowKeys,onSelectChange:handleGridSelectChange,rowKey:tableProps.rowKey}))))}return dom}}))))};