villianjs-pro 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ProTable3 → Beyond}/index.d.ts +1 -1
- package/dist/Beyond/index.js +1 -0
- package/dist/Beyond/list.d.ts +5 -0
- package/dist/Beyond/list.js +1 -0
- package/dist/Beyond/styles/index.d.ts +8 -0
- package/dist/Beyond/styles/index.js +1 -0
- package/dist/Beyond/types.d.ts +26 -0
- package/dist/Button/types.d.ts +1 -1
- package/dist/ButtonGroup/styles.js +1 -1
- package/dist/Exports/exports.d.ts +3 -0
- package/dist/Exports/exports.js +1 -0
- package/dist/Exports/index.d.ts +2 -0
- package/dist/Exports/index.js +1 -0
- package/dist/Exports/types.d.ts +61 -0
- package/dist/List/index.d.ts +8 -0
- package/dist/List/index.js +1 -0
- package/dist/List/list-container.d.ts +37 -0
- package/dist/List/list-container.js +1 -0
- package/dist/ProTable2/components/Container.d.ts +27 -0
- package/dist/ProTable2/components/Container.js +1 -0
- package/dist/ProTable2/components/form-content.d.ts +34 -0
- package/dist/{ProTable/update/update.js → ProTable2/components/form-content.js} +1 -1
- package/dist/ProTable2/components/form-footer.d.ts +32 -0
- package/dist/ProTable2/components/form-footer.js +1 -0
- package/dist/ProTable2/components/grid-view.d.ts +35 -0
- package/dist/ProTable2/components/grid-view.js +1 -0
- package/dist/ProTable2/components/header-buttons-wrapper.d.ts +10 -0
- package/dist/ProTable2/components/header-buttons-wrapper.js +1 -0
- package/dist/ProTable2/components/list/index.d.ts +19 -0
- package/dist/ProTable2/components/list/index.js +1 -0
- package/dist/ProTable2/components/operation-container.d.ts +39 -0
- package/dist/ProTable2/components/operation-container.js +1 -0
- package/dist/ProTable2/components/operation-content-router.d.ts +37 -0
- package/dist/ProTable2/components/operation-content-router.js +1 -0
- package/dist/ProTable2/components/operation-content.d.ts +35 -0
- package/dist/ProTable2/components/operation-content.js +1 -0
- package/dist/ProTable2/components/row-actions-router.d.ts +8 -0
- package/dist/{ProTable3/hooks/utils.js → ProTable2/components/row-actions-router.js} +1 -1
- package/dist/ProTable2/components/row-actions.d.ts +59 -0
- package/dist/ProTable2/components/row-actions.js +1 -0
- package/dist/ProTable2/components/search.d.ts +2 -1
- package/dist/ProTable2/components/search.js +1 -1
- package/dist/ProTable2/context.d.ts +21 -0
- package/dist/ProTable2/context.js +1 -0
- package/dist/ProTable2/hooks/usePagination.js +1 -0
- package/dist/ProTable2/hooks/useRouterNavigation.d.ts +10 -0
- package/dist/ProTable2/hooks/useRouterNavigation.js +1 -0
- package/dist/ProTable2/table.js +1 -1
- package/dist/ProTable2/types.d.ts +382 -2
- package/dist/TabSelector/TabSelector.d.ts +3 -0
- package/dist/TabSelector/TabSelector.js +1 -0
- package/dist/TabSelector/index.d.ts +2 -0
- package/dist/TabSelector/index.js +1 -0
- package/dist/TabSelector/modal.d.ts +16 -0
- package/dist/TabSelector/modal.js +1 -0
- package/dist/TabSelector/selected-items-display.d.ts +11 -0
- package/dist/TabSelector/selected-items-display.js +1 -0
- package/dist/TabSelector/styles.d.ts +2 -0
- package/dist/TabSelector/styles.js +1 -0
- package/dist/TabSelector/types.d.ts +24 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.js +1 -1
- package/dist/locale/langs/zh-cn/index.js +1 -1
- package/package.json +1 -1
- package/dist/ProTable/context.d.ts +0 -59
- package/dist/ProTable/context.js +0 -1
- package/dist/ProTable/form-footer.d.ts +0 -26
- package/dist/ProTable/form-footer.js +0 -1
- package/dist/ProTable/index.d.ts +0 -2
- package/dist/ProTable/index.js +0 -1
- package/dist/ProTable/list.d.ts +0 -5
- package/dist/ProTable/list.js +0 -1
- package/dist/ProTable/styles.d.ts +0 -7
- package/dist/ProTable/styles.js +0 -1
- package/dist/ProTable/table.d.ts +0 -3
- package/dist/ProTable/table.js +0 -1
- package/dist/ProTable/types.d.ts +0 -121
- package/dist/ProTable/update/index.d.ts +0 -1
- package/dist/ProTable/update/index.js +0 -1
- package/dist/ProTable/update/update.d.ts +0 -3
- package/dist/ProTable3/components/index.d.ts +0 -2
- package/dist/ProTable3/components/index.js +0 -1
- package/dist/ProTable3/components/list/index.d.ts +0 -19
- package/dist/ProTable3/components/list/index.js +0 -1
- package/dist/ProTable3/components/search/index.d.ts +0 -2
- package/dist/ProTable3/components/search/index.js +0 -1
- package/dist/ProTable3/container.d.ts +0 -3
- package/dist/ProTable3/container.js +0 -1
- package/dist/ProTable3/context.d.ts +0 -13
- package/dist/ProTable3/context.js +0 -1
- package/dist/ProTable3/hooks/types.d.ts +0 -72
- package/dist/ProTable3/hooks/useBatchRemoveButton.d.ts +0 -38
- package/dist/ProTable3/hooks/useBatchRemoveButton.js +0 -1
- package/dist/ProTable3/hooks/useCreateButton.d.ts +0 -34
- package/dist/ProTable3/hooks/useCreateButton.js +0 -1
- package/dist/ProTable3/hooks/useExtraButtons.d.ts +0 -26
- package/dist/ProTable3/hooks/useExtraButtons.js +0 -1
- package/dist/ProTable3/hooks/useOptionRender.d.ts +0 -30
- package/dist/ProTable3/hooks/useOptionRender.js +0 -1
- package/dist/ProTable3/hooks/usePagination.js +0 -1
- package/dist/ProTable3/hooks/utils.d.ts +0 -12
- package/dist/ProTable3/index.js +0 -1
- package/dist/ProTable3/styles.d.ts +0 -7
- package/dist/ProTable3/styles.js +0 -1
- package/dist/ProTable3/table.d.ts +0 -2
- package/dist/ProTable3/table.js +0 -1
- package/dist/ProTable3/types.d.ts +0 -106
- /package/dist/{ProTable → Beyond}/types.js +0 -0
- /package/dist/{ProTable3/hooks → Exports}/types.js +0 -0
- /package/dist/{ProTable3 → ProTable2}/hooks/usePagination.d.ts +0 -0
- /package/dist/{ProTable3 → TabSelector}/types.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from "./types";
|
|
2
|
-
export * from "./
|
|
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
|
+
};
|
package/dist/Button/types.d.ts
CHANGED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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
|
|
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
|
+
import React from"react";import{Space}from"antd";import{Button}from"../../Button";import{useLocale}from"../../locale";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 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 React.createElement("div",{style:{textAlign:"right",padding:"16px 0"}},React.createElement(Button,{onClick:onCancel},cancelText||messages.table.closeText||"关闭"))}return React.createElement("div",{style:{textAlign:"right",padding:"16px 0"}},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,35 @@
|
|
|
1
|
+
import type { PaginationProps } from "antd";
|
|
2
|
+
import type { GridCardRender } from "../types";
|
|
3
|
+
export interface GridViewProps<T = any> {
|
|
4
|
+
/**
|
|
5
|
+
* 数据源
|
|
6
|
+
*/
|
|
7
|
+
dataSource: T[];
|
|
8
|
+
/**
|
|
9
|
+
* 网格卡片渲染函数
|
|
10
|
+
*/
|
|
11
|
+
cardRender: GridCardRender<T>;
|
|
12
|
+
/**
|
|
13
|
+
* 网格列数配置
|
|
14
|
+
*/
|
|
15
|
+
gridColumns?: {
|
|
16
|
+
xs?: number;
|
|
17
|
+
sm?: number;
|
|
18
|
+
md?: number;
|
|
19
|
+
lg?: number;
|
|
20
|
+
xl?: number;
|
|
21
|
+
xxl?: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* 分页配置
|
|
25
|
+
*/
|
|
26
|
+
pagination?: false | PaginationProps;
|
|
27
|
+
/**
|
|
28
|
+
* ProTable actionRef,用于获取实时分页状态
|
|
29
|
+
*/
|
|
30
|
+
actionRef?: any;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 网格视图组件
|
|
34
|
+
*/
|
|
35
|
+
export declare const GridView: <T extends Record<string, any> = Record<string, any>>(props: GridViewProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -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{Row,Col,Card,Pagination}from"antd";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;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]);if(!dataSource||dataSource.length===0){return React.createElement(Card,null,React.createElement("div",{style:{textAlign:"center",padding:"40px 0",color:"#999"}},"暂无数据"))}return React.createElement("div",null,React.createElement(Row,{gutter:[16,16]},dataSource.map(function(record,index){return React.createElement(Col,_object_spread({key:index},colSpan),cardRender(record,index))})),mergedPagination!==false&&React.createElement("div",{style:{marginTop:16,display:"flex",justifyContent:"flex-end"}},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 @@
|
|
|
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
|
+
}) => 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 _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{Card,Checkbox,Row,Col,Space,Spin,Tooltip}from"antd";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 _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(record,index){var _actionColumn_render;var rowKey=typeof tableProps.rowKey==="function"?tableProps.rowKey(record,index):record[tableProps.rowKey||"id"];var isSelected=selectedRowKeys.includes(rowKey);var displayColumns=sortedColumns.filter(function(col){return!col.hideInTable&&col.dataIndex&&col.valueType!=="option"&&col.key!=="actions"&&col.dataIndex!=="actions"});var actionColumn=sortedColumns.find(function(col){return col.valueType==="option"||col.key==="actions"||col.dataIndex==="actions"});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(typeof titleDisplay==="string"||typeof titleDisplay==="number"?String(titleDisplay):titleDisplay):"";var remainingColumns=displayColumns.slice(1);var handleCheckboxChange=function(e){e.stopPropagation();var checked=e.target.checked;var newKeys;var newRows;if(checked){newKeys=_to_consumable_array(selectedRowKeys).concat([rowKey]);newRows=_to_consumable_array(dataSource.filter(function(item){var itemKey=typeof tableProps.rowKey==="function"?tableProps.rowKey(item,0):item[tableProps.rowKey||"id"];return selectedRowKeys.includes(itemKey)||itemKey===rowKey}))}else{newKeys=selectedRowKeys.filter(function(key){return key!==rowKey});newRows=dataSource.filter(function(item){var itemKey=typeof tableProps.rowKey==="function"?tableProps.rowKey(item,0):item[tableProps.rowKey||"id"];return newKeys.includes(itemKey)})}setSelectedRowKeys(newKeys);setSelectedRows(newRows);if(rowSelection&&(typeof rowSelection==="undefined"?"undefined":_type_of(rowSelection))==="object"&&rowSelection.onChange){rowSelection.onChange(newKeys,newRows)}};return React.createElement(Card,{hoverable:true,style:{height:"100%",minHeight:"180px"},styles:{body:{padding:"8px 16px"},header:{padding:"0 16px",minHeight:"40px",height:"40px"}},title:React.createElement("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:"14px"},title:titleFullText},titleColumn&&React.createElement(React.Fragment,null,React.createElement("span",{style:{color:"#999",fontWeight:"normal"}},titleColumn.title,":")," ",React.createElement("span",{style:{fontWeight:600}},titleDisplay||"-"))),extra:rowSelection&&rowSelection!==false?React.createElement(Checkbox,{checked:isSelected,onChange:handleCheckboxChange,onClick:function(e){return e.stopPropagation()}}):null},remainingColumns.length>0&&React.createElement(Row,{gutter:[12,12],style:{marginBottom:actionColumn?"10px":0}},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 getResponsiveSpan=function(){if(gridSpan==="full"){return{xs:24,sm:24,md:24,lg:24,xl:24}}return{xs:24,sm:12,md:12,lg:12,xl:12}};return React.createElement(Col,_object_spread_props(_object_spread({key:col.dataIndex},getResponsiveSpan()),{style:{minWidth:0}}),React.createElement("div",{style:{display:"flex",alignItems:"center",fontSize:"13px",gap:"8px",minWidth:0}},React.createElement("div",{style:{color:"#999",fontSize:"14px",flexShrink:0,whiteSpace:"nowrap"},title:col.title},col.title,":"),React.createElement("div",{style:{fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"#262626",flex:1,minWidth:0,fontSize:"14px"},title:typeof displayValue==="string"||typeof displayValue==="number"?String(displayValue):""},displayValue||"-")))})),actionColumn&&React.createElement("div",{style:{borderTop:"1px solid #f0f0f0",paddingTop:"3px",marginTop:remainingColumns.length>0?"0":"10px",display:"flex",justifyContent:"flex-end"}},React.createElement(Space,{size:"small"},(_actionColumn_render=actionColumn.render)===null||_actionColumn_render===void 0?void 0:_actionColumn_render.call(actionColumn,null,record,index))))},[sortedColumns,rowSelection,selectedRowKeys,setSelectedRowKeys,setSelectedRows,dataSource,tableProps.rowKey,fieldsPerRow]);var finalGridCardRender=gridCardRender||defaultGridCardRender;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 _React_useState1=_sliced_to_array(React.useState(false),2),isViewSwitchHovered=_React_useState1[0],setIsViewSwitchHovered=_React_useState1[1];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,onMouseEnter:function(){return setIsViewSwitchHovered(true)},onMouseLeave:function(){return setIsViewSwitchHovered(false)},style:{cursor:"pointer",fontSize:"16px",display:"flex",alignItems:"center",justifyContent:"center",color:isViewSwitchHovered?"#1677ff":"inherit",transition:"color 0.3s"}},viewMode==="table"?React.createElement(AppstoreOutlined,null):React.createElement(TableOutlined,null)))])})},[tableProps.toolbar,viewMode,setViewMode,isViewSwitchHovered]);return React.createElement("div",{style:{position:"relative"}},React.createElement("style",null,"\n .pro-table-grid-mode .ant-table-wrapper,\n .pro-table-grid-mode .ant-table-pagination {\n display: none !important;\n }\n "),React.createElement(AntdProTable,_object_spread_props(_object_spread({},tableProps),{className:viewMode==="grid"?"pro-table-grid-mode":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}))))}return dom}})))};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { VlianTableMode, OperationType } from "../types";
|
|
3
|
+
import type { DrawerProps } from "antd";
|
|
4
|
+
import type { ModalProps } from "../../Modal/components/antd";
|
|
5
|
+
export interface OperationContainerProps {
|
|
6
|
+
/**
|
|
7
|
+
* 操作模式
|
|
8
|
+
*/
|
|
9
|
+
mode: VlianTableMode;
|
|
10
|
+
/**
|
|
11
|
+
* 操作类型
|
|
12
|
+
*/
|
|
13
|
+
operationType: OperationType;
|
|
14
|
+
/**
|
|
15
|
+
* 是否显示
|
|
16
|
+
*/
|
|
17
|
+
visible: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* 关闭回调
|
|
20
|
+
*/
|
|
21
|
+
onClose: () => void;
|
|
22
|
+
/**
|
|
23
|
+
* 子组件
|
|
24
|
+
*/
|
|
25
|
+
children: React.ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Modal 配置
|
|
28
|
+
*/
|
|
29
|
+
modalProps?: Omit<ModalProps, 'open' | 'onCancel' | 'children'>;
|
|
30
|
+
/**
|
|
31
|
+
* Drawer 配置
|
|
32
|
+
*/
|
|
33
|
+
drawerProps?: Omit<DrawerProps, 'open' | 'onClose' | 'children'>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 操作容器组件
|
|
37
|
+
* 根据 mode 渲染不同的容器(Modal/Drawer)
|
|
38
|
+
*/
|
|
39
|
+
export declare const OperationContainer: React.FC<OperationContainerProps>;
|
|
@@ -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}import React from"react";import{Drawer}from"antd";import{Modal}from"../../Modal/components/antd";import{useLocale}from"../../locale";export var OperationContainer=function(props){var mode=props.mode,operationType=props.operationType,visible=props.visible,onClose=props.onClose,children=props.children,modalProps=props.modalProps,drawerProps=props.drawerProps;var messages=useLocale().messages;var getTitle=function(){switch(operationType){case"create":return messages.table.createTitle||"新增";case"update":return messages.table.updateTitle||"编辑";case"view":return messages.table.viewTitle||"查看";default:return""}};if(mode==="modal"){return React.createElement(Modal,_object_spread({title:getTitle(),open:visible,onCancel:onClose,footer:null,width:800,maxHeight:"80vh"},modalProps),children)}if(mode==="drawer"){return React.createElement(Drawer,_object_spread({title:getTitle(),open:visible,onClose:onClose,width:720},drawerProps),children)}return React.createElement(React.Fragment,null,children)};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { OperationType, OperationContentRender, FormConfig } from '../types';
|
|
2
|
+
import type { ProColumns } from "@ant-design/pro-components";
|
|
3
|
+
export interface OperationContentRouterProps<T = any, ValueType extends string = 'text'> {
|
|
4
|
+
/**
|
|
5
|
+
* 操作类型
|
|
6
|
+
*/
|
|
7
|
+
type: OperationType;
|
|
8
|
+
/**
|
|
9
|
+
* 当前记录
|
|
10
|
+
*/
|
|
11
|
+
currentRecord: T | null;
|
|
12
|
+
/**
|
|
13
|
+
* 操作内容渲染函数
|
|
14
|
+
*/
|
|
15
|
+
operationContent?: OperationContentRender<T>;
|
|
16
|
+
/**
|
|
17
|
+
* 关闭回调
|
|
18
|
+
*/
|
|
19
|
+
onClose: () => void;
|
|
20
|
+
/**
|
|
21
|
+
* 成功回调
|
|
22
|
+
*/
|
|
23
|
+
onSuccess: () => void;
|
|
24
|
+
/**
|
|
25
|
+
* 表格列配置(用于自动生成表单)
|
|
26
|
+
*/
|
|
27
|
+
tableColumns?: ProColumns<T, ValueType>[];
|
|
28
|
+
/**
|
|
29
|
+
* 表单配置
|
|
30
|
+
*/
|
|
31
|
+
formConfig?: FormConfig<T, ValueType>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Router 模式下的操作内容包装器
|
|
35
|
+
* 在关闭或成功时自动导航回列表页
|
|
36
|
+
*/
|
|
37
|
+
export declare const OperationContentRouter: <T extends Record<string, any> = Record<string, any>, ValueType extends string = "text">(props: OperationContentRouterProps<T, ValueType>) => import("react/jsx-runtime").JSX.Element;
|