@flatbiz/antd 4.2.47 → 4.2.49
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/esm/anchor-steps/index.js +2 -1
- package/esm/anchor-steps-fba86c87.js +3 -0
- package/esm/anchor-steps-fba86c87.js.map +1 -0
- package/esm/button-operate/index.css +1 -1
- package/esm/button-operate/index.js +4 -1
- package/esm/button-operate-9983acab.js +3 -0
- package/esm/button-operate-9983acab.js.map +1 -0
- package/esm/{cell-render-61a5922f.js → cell-render-6439daca.js} +2 -2
- package/esm/{cell-render-61a5922f.js.map → cell-render-6439daca.js.map} +1 -1
- package/esm/dialog-alert/index.js +1 -1
- package/esm/{dialog-alert-23b4a533.js → dialog-alert-6c8a38d1.js} +2 -2
- package/esm/{dialog-alert-23b4a533.js.map → dialog-alert-6c8a38d1.js.map} +1 -1
- package/esm/dialog-confirm/index.js +1 -1
- package/esm/{dialog-confirm-2656caad.js → dialog-confirm-371e0756.js} +2 -2
- package/esm/{dialog-confirm-2656caad.js.map → dialog-confirm-371e0756.js.map} +1 -1
- package/esm/dialog-drawer/index.js +1 -1
- package/esm/dialog-drawer-3173799f.js +3 -0
- package/esm/dialog-drawer-3173799f.js.map +1 -0
- package/esm/dialog-modal/index.js +1 -1
- package/esm/{dialog-modal-7b705b44.js → dialog-modal-6a753c75.js} +2 -2
- package/esm/dialog-modal-6a753c75.js.map +1 -0
- package/esm/dropdown-menu-wrapper/index.css +0 -1
- package/esm/dropdown-menu-wrapper/index.js +4 -1
- package/esm/dropdown-menu-wrapper-a6008e35.js +3 -0
- package/esm/dropdown-menu-wrapper-a6008e35.js.map +1 -0
- package/esm/editable-table/index.js +1 -1
- package/esm/{editable-table-98f1cdf7.js → editable-table-8cb8f895.js} +2 -2
- package/esm/{editable-table-98f1cdf7.js.map → editable-table-8cb8f895.js.map} +1 -1
- package/esm/index.js +6 -5
- package/esm/table-cell-render/index.js +4 -1
- package/esm/text-css-ellipsis/index.css +1 -0
- package/esm/text-css-ellipsis/index.js +5 -0
- package/esm/text-css-ellipsis/index.js.map +1 -0
- package/esm/text-css-ellipsis-9135d4c5.js +3 -0
- package/esm/text-css-ellipsis-9135d4c5.js.map +1 -0
- package/esm/text-overflow-render/index.js +2 -1
- package/esm/text-overflow-render-57730b19.js +3 -0
- package/esm/text-overflow-render-57730b19.js.map +1 -0
- package/esm/tree-selector-wrapper-9cd9da23.js.map +1 -1
- package/esm/tree-wrapper/index.js +4 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/esm/upload-wrapper/index.js +1 -1
- package/esm/upload-wrapper-4de4e5b3.js +3 -0
- package/esm/upload-wrapper-4de4e5b3.js.map +1 -0
- package/index.d.ts +111 -82
- package/package.json +1 -1
- package/esm/anchor-steps-616cd173.js +0 -3
- package/esm/anchor-steps-616cd173.js.map +0 -1
- package/esm/button-operate-37069516.js +0 -3
- package/esm/button-operate-37069516.js.map +0 -1
- package/esm/dialog-drawer-a741961f.js +0 -3
- package/esm/dialog-drawer-a741961f.js.map +0 -1
- package/esm/dialog-modal-7b705b44.js.map +0 -1
- package/esm/dropdown-menu-wrapper-3544d20e.js +0 -3
- package/esm/dropdown-menu-wrapper-3544d20e.js.map +0 -1
- package/esm/text-overflow-render-2ec38800.js +0 -3
- package/esm/text-overflow-render-2ec38800.js.map +0 -1
- package/esm/upload-wrapper-df8a2277.js +0 -3
- package/esm/upload-wrapper-df8a2277.js.map +0 -1
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
import './../fba-hooks/index.css';
|
|
3
3
|
import './index.css';
|
|
4
4
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
5
|
-
export{U as UploadWrapper}from"../upload-wrapper-
|
|
5
|
+
export{U as UploadWrapper}from"../upload-wrapper-4de4e5b3.js";import"@ant-design/icons/es/icons/PlusOutlined";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@dimjs/utils/cjs/class-names";import"@wove/react/cjs/hooks";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/utils/cjs/extend";import"antd";import"react";import"react-dom";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"react/jsx-runtime";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
+
import r from"@ant-design/icons/es/icons/PlusOutlined";import{_ as e,a as i}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{hooks as t}from"@wove/react/cjs/hooks";import{isPlainObject as a}from"@dimjs/lang/cjs/is-plain-object";import{extend as u}from"@dimjs/utils/cjs/extend";import{message as o,Upload as s,Button as l}from"antd";import{useState as d,useMemo as f,Fragment as m}from"react";import{flushSync as c}from"react-dom";import{fbaHooks as p}from"./fba-hooks/index.js";import{jsx as v,jsxs as g}from"react/jsx-runtime";var h=["onChange","onUploadError","value","triggerText","limitHidden"];var x=function r(l){var m=l.onChange,g=l.onUploadError,x=l.value,C=l.triggerText,T=l.limitHidden,y=e(l,h);var b=d(),O=b[0],R=b[1];var U=u({uid:"uid",name:"name",url:"url"},l.fieldNames);p.useEffectCustom((function(){var r=(O==null?void 0:O.filter((function(r){return r["status"]==="error"})))||[];var e=(x==null?void 0:x.map((function(r){return{uid:r[U.uid],name:r[U.name],url:r[U.url],status:"done",isOriginal:true}})))||[];if(r.length>0){var i=r.map((function(r){return{uid:r.uid,name:r.name,status:"error",isOriginal:true,response:r["response"]}}));e=e.concat(i)}R(e)}),[U.name,U.uid,U.url,x]);var E=function r(e){var i=[];var n=false;e.forEach((function(r){if(r["isOriginal"]){if(r["status"]!=="error"){var e;i.push((e={},e[U.uid]=r.uid,e[U.name]=r.name,e[U.url]=r.url,e))}}else if(a(r.response)){if(r.response.code==="0000"){var t;var u=r.response.data;var o=(l.onRequestResultAdapter==null?void 0:l.onRequestResultAdapter(u))||u;i.push((t={},t[U.uid]=o[U.uid]||r.uid,t[U.name]=o[U.name]||r.name,t[U.url]=o[U.url],t))}else{n=true;r.status="error";r.response=r.response.message||"上传失败"}}}));if(n){R([].concat(e))}m==null?void 0:m(i)};var k=t.useCallbackRef((function(r){var e=r.fileList;if(r.file.status==="done"){var i=[].concat(r.fileList);var n=i.filter((function(r){return r.status==="done"||r["isOriginal"]}));var t=n.length===i.length;if(t){E(i)}c((function(){return R(i)}));return}else if(r.file.status==="removed"){var a=r.file.uid;var u=x!==undefined?[].concat(x):[];var s=u.findIndex((function(r){var e=r[U.uid];return e===a}));if(s>=0){u.splice(s,1)}m==null?void 0:m(u)}else if(r.file.status==="error"){if(g){g()}else{void o.error("上传操作失败...")}}R([].concat(e));l.onUploadChange==null?void 0:l.onUploadChange(r)}));var H=f((function(){if(y.maxCount===undefined||!T)return false;if(y.maxCount===0)return true;if(O&&O.length>=y.maxCount)return true;return false}),[T,y.maxCount,O]);return v(s,i({},y,{onChange:k,fileList:O,className:n("v-upload-wrapper",y.className),children:y.disabled||H?null:v(j,{triggerText:C,listType:y.listType,children:l.children})}))};var j=function e(i){if(i.children)return v(m,{children:i.children});if(i.listType==="picture-card"){return g("div",{children:[v(r,{}),v("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return v(l,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return v(l,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{x as U};
|
|
3
|
+
//# sourceMappingURL=upload-wrapper-4de4e5b3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-wrapper-4de4e5b3.js","sources":["@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { Fragment, ReactNode, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[];\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const { onChange, onUploadError, value, triggerText, limitHidden, ...otherProps } = props;\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList =\n value?.map((item) => {\n return {\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n status: 'done',\n isOriginal: true,\n };\n }) || [];\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, value]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n newFileList.push({\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n });\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n newFileList.push({\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n });\n } else {\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = value !== undefined ? [...value] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid];\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const hiddenEmtry = useMemo(() => {\n if (otherProps.maxCount === undefined || !limitHidden) return false;\n if (otherProps.maxCount === 0) return true;\n if (uploadList && uploadList.length >= otherProps.maxCount) return true;\n return false;\n }, [limitHidden, otherProps.maxCount, uploadList]);\n\n return (\n <Upload\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled || hiddenEmtry ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","uploadList","setUploadList","fieldNames","_extend","uid","name","url","fbaHooks","useEffectCustom","errorList","filter","item","newList","map","status","isOriginal","length","newErrorList","response","concat","handleResponse","fileList","newFileList","hasError","forEach","_newFileList$push","push","_isPlainObject","code","_newFileList$push2","respData","data","result","onRequestResultAdapter","message","onUploadChange","_hooks","useCallbackRef","info","file","donwList","allDone","flushSync","targetList","undefined","targetIndex","findIndex","tempUid","splice","error","hiddenEmtry","useMemo","maxCount","_jsx","Upload","_extends","className","_classNames","children","disabled","UploadTrigger","listType","Fragment","_jsxs","_PlusOutlined","style","marginTop","Button","type","ghost"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -49,7 +49,74 @@ export type ButtonWrapperProps = Omit<ButtonProps, "onClick"> & {
|
|
|
49
49
|
* @returns
|
|
50
50
|
*/
|
|
51
51
|
export declare const ButtonWrapper: (props: ButtonWrapperProps) => JSX.Element | null;
|
|
52
|
+
export type ConfigProviderWrapperProps = Omit<ConfigProviderProps, "locale"> & {
|
|
53
|
+
locale?: "en" | "zh-cn";
|
|
54
|
+
};
|
|
55
|
+
export declare const ConfigProviderWrapper: (props: ConfigProviderWrapperProps) => JSX.Element;
|
|
56
|
+
export type DialogModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContainer" | "open" | "open" | "okButtonProps" | "cancelButtonProps"> & {
|
|
57
|
+
onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
58
|
+
onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
59
|
+
content: string | ReactElement | ((form: FormInstance, operate: {
|
|
60
|
+
onClose: TNoopDefine;
|
|
61
|
+
}) => ReactElement);
|
|
62
|
+
configProviderProps?: ConfigProviderWrapperProps;
|
|
63
|
+
okHidden?: boolean;
|
|
64
|
+
cancelHidden?: boolean;
|
|
65
|
+
okButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">;
|
|
66
|
+
cancelButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">;
|
|
67
|
+
/**
|
|
68
|
+
* 设置modal body height 为当前窗口height的百分比,例如:30
|
|
69
|
+
* ```
|
|
70
|
+
* 1. 最大值:80
|
|
71
|
+
* 1. 设置bodyStyle.height 后,bodyHeightPercent失效
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
bodyHeightPercent?: number;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* 函数式调用弹框;初始化后,内容无法更新
|
|
78
|
+
*```
|
|
79
|
+
* 1. 基础使用方式
|
|
80
|
+
* dialogModal.open({
|
|
81
|
+
* title: '我是弹框',
|
|
82
|
+
* content: <div>我是内容</div>,
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
* ```
|
|
86
|
+
* ***************************
|
|
87
|
+
* 2. 结合内置form使用,可在onOK、onCancel获取form对象
|
|
88
|
+
* dialogModal.open({
|
|
89
|
+
* title: '我是弹框',
|
|
90
|
+
* content: (form, operate) => {
|
|
91
|
+
* return (
|
|
92
|
+
* <Form form={form}>
|
|
93
|
+
* <Form.Item name="useName">
|
|
94
|
+
* <Input placeholder="请输入" />
|
|
95
|
+
* </Form.Item>
|
|
96
|
+
* </Form>
|
|
97
|
+
* );
|
|
98
|
+
* },
|
|
99
|
+
* onOK: (form) => {
|
|
100
|
+
* console.log('content form数据', form.getFieldsValue());
|
|
101
|
+
* return Promise.resolve();
|
|
102
|
+
* },
|
|
103
|
+
* });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare const dialogModal: {
|
|
107
|
+
open: (props: DialogModalProps) => {
|
|
108
|
+
close: () => void;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* ```
|
|
112
|
+
* 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个
|
|
113
|
+
* 2. 多个弹框主动关闭,只能使用 dialogModal.open()返回值中的close
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
close: () => void;
|
|
117
|
+
};
|
|
52
118
|
export interface ButtonOperateItem extends ButtonWrapperProps {
|
|
119
|
+
hidden?: boolean;
|
|
53
120
|
/** hover 提示文字 */
|
|
54
121
|
hoverTips?: string | React.ReactElement;
|
|
55
122
|
/** hover 提示类型 默认:'tooltip' */
|
|
@@ -58,11 +125,14 @@ export interface ButtonOperateItem extends ButtonWrapperProps {
|
|
|
58
125
|
color?: string;
|
|
59
126
|
onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
60
127
|
permission?: string;
|
|
128
|
+
/** 是否需要二次弹框确认 */
|
|
61
129
|
needConfirm?: boolean;
|
|
130
|
+
/** 二次弹框确认文案 */
|
|
62
131
|
confirmMessage?: string;
|
|
63
|
-
hidden?: boolean;
|
|
64
132
|
popconfirmProps?: Pick<PopconfirmProps, "placement" | "okText" | "cancelText" | "trigger">;
|
|
133
|
+
/** 是否折叠合拢 */
|
|
65
134
|
isFold?: boolean;
|
|
135
|
+
confirmModalProps?: DialogModalProps;
|
|
66
136
|
}
|
|
67
137
|
export interface ButtonOperateProps {
|
|
68
138
|
/**
|
|
@@ -85,6 +155,14 @@ export interface ButtonOperateProps {
|
|
|
85
155
|
export declare const ButtonOperateItemContent: (props: Pick<ButtonOperateItem, "hoverTips" | "tipsType"> & {
|
|
86
156
|
children?: ReactNode;
|
|
87
157
|
}) => JSX.Element;
|
|
158
|
+
/**
|
|
159
|
+
* 按钮组合处理组件
|
|
160
|
+
* ```
|
|
161
|
+
* @flatbiz/antd@4.2.49
|
|
162
|
+
* 1. 替换 Fold 中 needConfirm交互,有 Popconfirm 改为 dialogConfirm组件实现二次弹框确认功能
|
|
163
|
+
* 2. 修改原因:升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框组合使用存在问题
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
88
166
|
export declare const ButtonOperate: FC<ButtonOperateProps>;
|
|
89
167
|
export type TRequestStatus = "request-init" | "request-progress" | "request-success" | "request-error" | "no-dependencies-params";
|
|
90
168
|
export type TRequestStatusProps = {
|
|
@@ -205,10 +283,6 @@ export type CheckboxWrapperProps = Omit<CheckboxProps, "checked" | "defaultCheck
|
|
|
205
283
|
* ```
|
|
206
284
|
*/
|
|
207
285
|
export declare const CheckboxWrapper: (props: CheckboxWrapperProps) => JSX.Element;
|
|
208
|
-
export type ConfigProviderWrapperProps = Omit<ConfigProviderProps, "locale"> & {
|
|
209
|
-
locale?: "en" | "zh-cn";
|
|
210
|
-
};
|
|
211
|
-
export declare const ConfigProviderWrapper: (props: ConfigProviderWrapperProps) => JSX.Element;
|
|
212
286
|
export interface DrawerStateType {
|
|
213
287
|
title: string;
|
|
214
288
|
/**
|
|
@@ -403,68 +477,6 @@ export type DateRangePickerWrapperFormItemProps = Omit<FormItemProps, "name"> &
|
|
|
403
477
|
* ```
|
|
404
478
|
*/
|
|
405
479
|
export declare const DateRangePickerWrapperFormItem: (props: DateRangePickerWrapperFormItemProps) => JSX.Element;
|
|
406
|
-
export type DialogModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContainer" | "open" | "open" | "okButtonProps" | "cancelButtonProps"> & {
|
|
407
|
-
onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
408
|
-
onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
409
|
-
content: string | ReactElement | ((form: FormInstance, operate: {
|
|
410
|
-
onClose: TNoopDefine;
|
|
411
|
-
}) => ReactElement);
|
|
412
|
-
configProviderProps?: ConfigProviderWrapperProps;
|
|
413
|
-
okHidden?: boolean;
|
|
414
|
-
cancelHidden?: boolean;
|
|
415
|
-
okButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">;
|
|
416
|
-
cancelButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">;
|
|
417
|
-
/**
|
|
418
|
-
* 设置modal body height 为当前窗口height的百分比,例如:30
|
|
419
|
-
* ```
|
|
420
|
-
* 1. 最大值:80
|
|
421
|
-
* 1. 设置bodyStyle.height 后,bodyHeightPercent失效
|
|
422
|
-
* ```
|
|
423
|
-
*/
|
|
424
|
-
bodyHeightPercent?: number;
|
|
425
|
-
};
|
|
426
|
-
/**
|
|
427
|
-
* 函数式调用弹框;初始化后,内容无法更新
|
|
428
|
-
*```
|
|
429
|
-
* 1. 基础使用方式
|
|
430
|
-
* dialogModal.open({
|
|
431
|
-
* title: '我是弹框',
|
|
432
|
-
* content: <div>我是内容</div>,
|
|
433
|
-
* });
|
|
434
|
-
* ```
|
|
435
|
-
* ```
|
|
436
|
-
* ***************************
|
|
437
|
-
* 2. 结合内置form使用,可在onOK、onCancel获取form对象
|
|
438
|
-
* dialogModal.open({
|
|
439
|
-
* title: '我是弹框',
|
|
440
|
-
* content: (form, operate) => {
|
|
441
|
-
* return (
|
|
442
|
-
* <Form form={form}>
|
|
443
|
-
* <Form.Item name="useName">
|
|
444
|
-
* <Input placeholder="请输入" />
|
|
445
|
-
* </Form.Item>
|
|
446
|
-
* </Form>
|
|
447
|
-
* );
|
|
448
|
-
* },
|
|
449
|
-
* onOK: (form) => {
|
|
450
|
-
* console.log('content form数据', form.getFieldsValue());
|
|
451
|
-
* return Promise.resolve();
|
|
452
|
-
* },
|
|
453
|
-
* });
|
|
454
|
-
* ```
|
|
455
|
-
*/
|
|
456
|
-
export declare const dialogModal: {
|
|
457
|
-
open: (props: DialogModalProps) => {
|
|
458
|
-
close: () => void;
|
|
459
|
-
};
|
|
460
|
-
/**
|
|
461
|
-
* ```
|
|
462
|
-
* 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个
|
|
463
|
-
* 2. 多个弹框主动关闭,只能使用 dialogModal.open()返回值中的close
|
|
464
|
-
* ```
|
|
465
|
-
*/
|
|
466
|
-
close: () => void;
|
|
467
|
-
};
|
|
468
480
|
export type DialogAlertProps = Omit<DialogModalProps, "onOk" | "cancelHidden" | "cancelButtonProps" | "onCancel" | "onClick"> & {
|
|
469
481
|
onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
470
482
|
};
|
|
@@ -478,7 +490,7 @@ export declare const dialogConfirm: {
|
|
|
478
490
|
close: () => void;
|
|
479
491
|
};
|
|
480
492
|
};
|
|
481
|
-
export type DialogDrawerProps = Omit<DrawerProps, "onOk" | "onCancel" | "getContainer" | "open" | "open" | "footer"> & {
|
|
493
|
+
export type DialogDrawerProps = Omit<DrawerProps, "onOk" | "onCancel" | "getContainer" | "open" | "open" | "footer" | "extra"> & {
|
|
482
494
|
okText?: string | ReactElement;
|
|
483
495
|
cancelText?: string | ReactElement;
|
|
484
496
|
onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
@@ -493,6 +505,7 @@ export type DialogDrawerProps = Omit<DrawerProps, "onOk" | "onCancel" | "getCont
|
|
|
493
505
|
operateRender?: (form: FormInstance) => ReactElement;
|
|
494
506
|
okHidden?: boolean;
|
|
495
507
|
cancelHidden?: boolean;
|
|
508
|
+
extra?: ReactNode | ((form: FormInstance) => ReactElement);
|
|
496
509
|
};
|
|
497
510
|
/**
|
|
498
511
|
* 函数式调用弹框;初始化后,内容无法更新
|
|
@@ -604,12 +617,18 @@ export interface DropdownMenuItem extends ButtonProps {
|
|
|
604
617
|
needConfirm?: boolean;
|
|
605
618
|
confirmMessage?: string;
|
|
606
619
|
hidden?: boolean;
|
|
607
|
-
|
|
620
|
+
confirmModalProps?: DialogModalProps;
|
|
608
621
|
}
|
|
609
622
|
export interface DropdownMenuWrapperProps extends Omit<DropdownProps, "menu"> {
|
|
610
623
|
menuList: Array<DropdownMenuItem | null>;
|
|
611
624
|
isFixed?: boolean;
|
|
612
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* DropdownMenuWrapper
|
|
628
|
+
* 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能
|
|
629
|
+
* @param props
|
|
630
|
+
* @returns
|
|
631
|
+
*/
|
|
613
632
|
export declare const DropdownMenuWrapper: (props: DropdownMenuWrapperProps) => JSX.Element;
|
|
614
633
|
export type TDynamicNodeProps = {
|
|
615
634
|
className?: string;
|
|
@@ -1017,6 +1036,8 @@ export type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {
|
|
|
1017
1036
|
onRequestResultAdapter?: (respData: TAny) => TPlainObject;
|
|
1018
1037
|
/** 操作触发显示文本 */
|
|
1019
1038
|
triggerText?: string;
|
|
1039
|
+
/** 超过maxCount 隐藏上传入口 */
|
|
1040
|
+
limitHidden?: boolean;
|
|
1020
1041
|
} & Omit<UploadProps, "onChange" | "fileList">;
|
|
1021
1042
|
/**
|
|
1022
1043
|
* 文件上传
|
|
@@ -2291,29 +2312,37 @@ export type TagWrapperProps = Omit<TagProps, "onClick"> & {
|
|
|
2291
2312
|
* 为 Tag 添加 loading 效果
|
|
2292
2313
|
*/
|
|
2293
2314
|
export declare const TagWrapper: (props: TagWrapperProps) => JSX.Element;
|
|
2315
|
+
export type CssTextEllipsisProps = {
|
|
2316
|
+
text?: string;
|
|
2317
|
+
width: number;
|
|
2318
|
+
};
|
|
2319
|
+
/**
|
|
2320
|
+
* 根据配置宽度显示数据,内容超过宽度截取,并在尾部添加...,被截取的添加Tooltip显示完整数据
|
|
2321
|
+
* @param props
|
|
2322
|
+
* @returns
|
|
2323
|
+
*/
|
|
2324
|
+
export declare const TextCssEllipsis: (props: CssTextEllipsisProps) => JSX.Element;
|
|
2294
2325
|
export type TextOverflowRenderProps = {
|
|
2295
|
-
/**
|
|
2326
|
+
/** width 宽度控制超长 */
|
|
2327
|
+
width?: number;
|
|
2328
|
+
/** maxLength 数字控制超长 */
|
|
2296
2329
|
maxLength?: number;
|
|
2297
2330
|
/** 完整文本 */
|
|
2298
2331
|
text?: string;
|
|
2299
|
-
/**
|
|
2300
|
-
children?: string | ReactElement;
|
|
2301
|
-
/**
|
|
2302
|
-
* 文本前缀显示
|
|
2303
|
-
* 设置 children 属性后,prefix失效
|
|
2304
|
-
*/
|
|
2332
|
+
/** 文本前缀显示 */
|
|
2305
2333
|
prefix?: string | ReactElement;
|
|
2306
2334
|
/** 数据不存在时,占位符 */
|
|
2307
2335
|
placeholder?: ReactElement | string;
|
|
2308
2336
|
onClick?: (e: any) => void;
|
|
2309
2337
|
};
|
|
2310
2338
|
/**
|
|
2311
|
-
*
|
|
2339
|
+
* 文本显示超出截取,被截取的添加Tooltip显示完整数据
|
|
2312
2340
|
* ```
|
|
2313
|
-
*
|
|
2314
|
-
* 1.
|
|
2315
|
-
* 2.
|
|
2316
|
-
*
|
|
2341
|
+
* 控制文本显示两种方式
|
|
2342
|
+
* 1. 通过 maxLength 控制超长
|
|
2343
|
+
* 2. 通过 width 控制超长
|
|
2344
|
+
*
|
|
2345
|
+
* 3. maxLength 与 width 互斥,优先级:maxLength > width
|
|
2317
2346
|
* ```
|
|
2318
2347
|
* @param props
|
|
2319
2348
|
* @returns
|
|
@@ -2499,7 +2528,7 @@ export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys"
|
|
|
2499
2528
|
selectedParentCheckedAllChildrenList?: boolean;
|
|
2500
2529
|
};
|
|
2501
2530
|
/**
|
|
2502
|
-
*
|
|
2531
|
+
* 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现
|
|
2503
2532
|
* @param props
|
|
2504
2533
|
* @returns
|
|
2505
2534
|
* ```
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{classNames as t}from"@dimjs/utils/cjs/class-names";import{Gap as e}from"@flatbiz/antd";import{Anchor as r,Steps as n}from"antd";import{useState as i,useRef as a}from"react";import{jsxs as o,jsx as s}from"react/jsx-runtime";function c(t){var e=1;return t.tagName!=="HTML"&&t.tagName!=="BODY"&&t.nodeType===e}function f(t){var e=t;while(e&&c(e)){var r=window.getComputedStyle(e),n=r.overflowY;if(/scroll|auto/i.test(n)){return e}e=e.parentNode}return undefined}var d=function c(d){var u=i(),m=u[0],l=u[1];var p=a();var v=function t(e){if(e){l(e.replace("#vas-",""))}};var h=function t(){return f(p.current)||window};var w=function t(e){if(e){p.current=e}};return o("div",{className:t("v-anchor-steps",d.className),ref:w,children:[s(r,{onChange:v,className:"v-fixed-anchor",affix:false,getContainer:h,children:s(n,{size:"small",direction:"vertical",current:d.steps.findIndex((function(t){return t.id===m})),items:d.steps.map((function(t){return{title:s(r.Link,{href:"#vas-"+t.id,title:t.title}),description:s(e,{height:20}),status:t.id===m?"process":"wait"}}))})}),d.steps.map((function(t){return s("div",{id:"vas-"+t.id,children:t.content},t.id)}))]})};export{d as A};
|
|
3
|
-
//# sourceMappingURL=anchor-steps-616cd173.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anchor-steps-616cd173.js","sources":["@flatbiz/antd/src/anchor-steps/anchor-steps.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { Gap } from '@flatbiz/antd';\nimport { Anchor, Steps } from 'antd';\nimport { ReactElement, useRef, useState } from 'react';\nimport './style.less';\n\nfunction isElement(node: Element) {\n const ELEMENT_NODE_TYPE = 1;\n return node.tagName !== 'HTML' && node.tagName !== 'BODY' && node.nodeType === ELEMENT_NODE_TYPE;\n}\n\nfunction getParentScroll(el: HTMLElement) {\n let node = el;\n\n while (node && isElement(node)) {\n const { overflowY } = window.getComputedStyle(node);\n if (/scroll|auto/i.test(overflowY)) {\n return node;\n }\n node = node.parentNode as HTMLElement;\n }\n return undefined;\n}\n\nexport type AnchorStepsProps = {\n steps: {\n id: string;\n title: string;\n content: ReactElement;\n }[];\n className?: string;\n};\n\n/**\n * 锚点步骤组件\n * @param props\n * @returns\n */\nexport const AnchorSteps = (props: AnchorStepsProps) => {\n const [activeKey, setActiveKey] = useState<string>();\n const rootNode = useRef<HTMLDivElement>();\n\n const onChange = (link: string) => {\n if (link) {\n setActiveKey(link.replace('#vas-', ''));\n }\n };\n\n const getContainer = () => {\n return getParentScroll(rootNode.current as HTMLElement) || (window as Window);\n };\n const refHandle = (node) => {\n if (node) {\n rootNode.current = node;\n }\n };\n\n return (\n <div className={classNames('v-anchor-steps', props.className)} ref={refHandle}>\n <Anchor onChange={onChange} className=\"v-fixed-anchor\" affix={false} getContainer={getContainer}>\n <Steps\n size=\"small\"\n direction=\"vertical\"\n current={props.steps.findIndex((item) => item.id === activeKey)}\n items={props.steps.map((item) => {\n return {\n title: <Anchor.Link href={`#vas-${item.id}`} title={item.title} />,\n description: <Gap height={20} />,\n status: item.id === activeKey ? 'process' : 'wait',\n };\n })}\n />\n </Anchor>\n {props.steps.map((item) => {\n return (\n <div id={`vas-${item.id}`} key={item.id}>\n {item.content}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["isElement","node","ELEMENT_NODE_TYPE","tagName","nodeType","getParentScroll","el","_window$getComputedSt","window","getComputedStyle","overflowY","test","parentNode","undefined","AnchorSteps","props","_useState","useState","activeKey","setActiveKey","rootNode","useRef","onChange","link","replace","getContainer","current","refHandle","_jsxs","className","_classNames","ref","children","_jsx","Anchor","affix","Steps","size","direction","steps","findIndex","item","id","items","map","title","Link","href","description","Gap","height","status","content"],"mappings":";sOAMA,SAASA,EAAUC,GACjB,IAAMC,EAAoB,EAC1B,OAAOD,EAAKE,UAAY,QAAUF,EAAKE,UAAY,QAAUF,EAAKG,WAAaF,CACjF,CAEA,SAASG,EAAgBC,GACvB,IAAIL,EAAOK,EAEX,MAAOL,GAAQD,EAAUC,GAAO,CAC9B,IAAAM,EAAsBC,OAAOC,iBAAiBR,GAAtCS,EAASH,EAATG,UACR,GAAI,eAAeC,KAAKD,GAAY,CAClC,OAAOT,CACT,CACAA,EAAOA,EAAKW,UACd,CACA,OAAOC,SACT,KAgBaC,EAAc,SAAdA,EAAeC,GAC1B,IAAAC,EAAkCC,IAA3BC,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAC9B,IAAMI,EAAWC,IAEjB,IAAMC,EAAW,SAAXA,EAAYC,GAChB,GAAIA,EAAM,CACRJ,EAAaI,EAAKC,QAAQ,QAAS,IACrC,GAGF,IAAMC,EAAe,SAAfA,IACJ,OAAOpB,EAAgBe,EAASM,UAA4BlB,QAE9D,IAAMmB,EAAY,SAAZA,EAAa1B,GACjB,GAAIA,EAAM,CACRmB,EAASM,QAAUzB,CACrB,GAGF,OACE2B,EAAA,MAAA,CAAKC,UAAWC,EAAW,iBAAkBf,EAAMc,WAAYE,IAAKJ,EAAUK,SAAA,CAC5EC,EAACC,EAAM,CAACZ,SAAUA,EAAUO,UAAU,iBAAiBM,MAAO,MAAOV,aAAcA,EAAaO,SAC9FC,EAACG,EAAK,CACJC,KAAK,QACLC,UAAU,WACVZ,QAASX,EAAMwB,MAAMC,WAAU,SAACC,GAAI,OAAKA,EAAKC,KAAOxB,KACrDyB,MAAO5B,EAAMwB,MAAMK,KAAI,SAACH,GACtB,MAAO,CACLI,MAAOZ,EAACC,EAAOY,KAAI,CAACC,KAAI,QAAUN,EAAKC,GAAMG,MAAOJ,EAAKI,QACzDG,YAAaf,EAACgB,EAAG,CAACC,OAAQ,KAC1BC,OAAQV,EAAKC,KAAOxB,EAAY,UAAY,eAKnDH,EAAMwB,MAAMK,KAAI,SAACH,GAChB,OACER,EAAA,MAAA,CAAKS,GAAE,OAASD,EAAKC,GAAKV,SACvBS,EAAKW,SADwBX,EAAKC,GAIzC,MAGN"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import r from"@ant-design/icons/es/icons/MoreOutlined";import{a as e,_ as i}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isUndefined as n}from"@dimjs/lang/cjs/is-undefined";import{classNames as o}from"@dimjs/utils/cjs/class-names";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as l}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Popover as p,Tooltip as c,Space as f,Divider as u,Popconfirm as d,Button as m}from"antd";import{Fragment as h,useState as v,isValidElement as g,useMemo as T,createElement as j}from"react";import{B as y}from"./button-wrapper-e833e139.js";import{D as k}from"./dropdown-menu-wrapper-3544d20e.js";import{f as C}from"./fba-utils-1e895394.js";import{jsx as P,jsxs as b}from"react/jsx-runtime";var w=["text","onClick","needConfirm","confirmMessage","popconfirmProps","hoverTips"];var x=function r(e){if(e.hoverTips){if(e.tipsType==="popover"){return P(p,{content:e.hoverTips,zIndex:1e3,children:P(h,{children:e.children})})}return P(c,{title:e.hoverTips,zIndex:1e3,children:P(h,{children:e.children})})}return P(h,{children:e.children})};var B=function p(c){var h=v(false),B=h[0],I=h[1];var z=a.useCallbackRef((function(r,e){var i=r.onClick==null?void 0:r.onClick(e);if(i&&l(i)){I(true);return i.finally((function(){I(false)}))}return}));var F=c.operateList.filter((function(r){if(!r)return false;if(g(r)){var e,i;if(((e=r.props)==null?void 0:e["hidden"])===true)return false;var n=(i=r.props)==null?void 0:i["v-permission"];if(s(n)){return C.hasPermission(n)}return true}if(t(r)){if(!C.hasPermission(r["permission"])){return false}return!r["hidden"]}return false}));var M=T((function(){return F.filter((function(r){if(g(r)){return true}return!r["isFold"]}))}),[F]);var N=T((function(){var r=F.filter((function(r){if(g(r)){return false}return r["isFold"]}));var i=[];r.forEach((function(r){var n=e({},r);delete n.isFold;i.push(n)}));return i}),[F]);var O=c.gap===undefined?10:c.gap;var H=!c.split?O:0;return P("div",{className:o("table-operate",c.className),style:c.style,children:b(f,e({split:c.split?P(u,{type:"vertical"}):null,size:H,wrap:n(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(r,n){if(r&&g(r)){return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:r},n)}var o=r.text,t=r.onClick,s=r.needConfirm,l=r.confirmMessage,a=r.popconfirmProps,p=r.hoverTips,c=i(r,w);var f=r.type||"link";if(s&&!c.disabled){var u=!!r.color?false:true;return P(x,{hoverTips:p,tipsType:r.tipsType,children:j(d,e({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},a,{title:l,onConfirm:z.bind(null,r),key:n,okButtonProps:{loading:B},onOpenChange:function r(e){if(!e){I(false)}},onCancel:function r(e){e==null?void 0:e.stopPropagation()}}),P(y,e({danger:u},c,{onClick:function r(e){e.stopPropagation()},type:f,children:g(o)?P("span",{children:o}):o})))},n)}return P(x,{hoverTips:p,tipsType:r.tipsType,children:P(y,e({loadingPosition:"center"},c,{type:f,onClick:function r(e){e.stopPropagation();return t==null?void 0:t(e)},children:g(o)?P("span",{children:o}):o}))},n)})),N.length>0?P(k,{menuList:N,children:P(m,{type:"link",className:"fold-more-button",onClick:function r(e){e.stopPropagation()},children:c.foldIcon?c.foldIcon:P(r,{})})}):null]}))})};B.defaultProps={split:true};export{x as B,B as a};
|
|
3
|
-
//# sourceMappingURL=button-operate-37069516.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-operate-37069516.js","sources":["@flatbiz/antd/src/button-operate/button-operate.tsx"],"sourcesContent":["import { MoreOutlined } from '@ant-design/icons';\nimport { isPlainObject, isPromise, isString, isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Divider, Popconfirm, PopconfirmProps, Popover, Space, SpaceProps, Tooltip } from 'antd';\nimport {\n CSSProperties,\n FC,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useMemo,\n useState,\n} from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaUtils } from '../fba-utils';\n\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonWrapperProps {\n /** hover 提示文字 */\n hoverTips?: string | React.ReactElement;\n /** hover 提示类型 默认:'tooltip' */\n tipsType?: 'popover' | 'tooltip';\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n // 是否折叠合拢\n isFold?: boolean;\n}\n\nexport interface ButtonOperateProps {\n /**\n * 如果数组中元素为ReactElement类型\n * 1. 一般为antd Button组件,如果组件存在属性hidden=true,则会隐藏\n * 2. 可配置 v-permission 权限值,例如 v-permission=\"add\"\n * 3. 任何confirm、disabled等状态在外部控制\n * 3. 不支持fold效果\n */\n operateList: Array<ButtonOperateItem | null | ReactElement>;\n wrap?: boolean;\n foldIcon?: ReactElement;\n className?: string;\n split?: boolean;\n spaceProps?: SpaceProps;\n /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */\n gap?: number;\n style?: CSSProperties;\n}\n\nexport const ButtonOperateItemContent = (\n props: Pick<ButtonOperateItem, 'hoverTips' | 'tipsType'> & { children?: ReactNode },\n) => {\n if (props.hoverTips) {\n if (props.tipsType === 'popover') {\n return (\n <Popover content={props.hoverTips} zIndex={1000}>\n <Fragment>{props.children}</Fragment>\n </Popover>\n );\n }\n return (\n <Tooltip title={props.hoverTips} zIndex={1000}>\n <Fragment>{props.children}</Fragment>\n </Tooltip>\n );\n }\n return <Fragment>{props.children}</Fragment>;\n};\n\nexport const ButtonOperate: FC<ButtonOperateProps> = (props) => {\n const [loading, setLoading] = useState(false);\n\n const onConfirm = hooks.useCallbackRef((item: ButtonOperateItem, event) => {\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n setLoading(true);\n return result.finally(() => {\n setLoading(false);\n });\n }\n return;\n });\n\n const operateList = props.operateList.filter((item) => {\n if (!item) return false;\n if (isValidElement(item)) {\n if (item.props?.['hidden'] === true) return false;\n const permission = item.props?.['v-permission'];\n if (isString(permission)) {\n return fbaUtils.hasPermission(permission);\n }\n return true;\n }\n if (isPlainObject(item)) {\n if (!fbaUtils.hasPermission(item['permission'])) {\n return false;\n }\n return !item['hidden'];\n }\n return false;\n }) as Array<ButtonOperateItem | ReactElement>;\n\n const viewList = useMemo(() => {\n return operateList.filter((item) => {\n if (isValidElement(item)) {\n return true;\n }\n return !item['isFold'];\n }) as ButtonOperateItem[];\n }, [operateList]);\n\n const foldList = useMemo(() => {\n const filterList = operateList.filter((item) => {\n if (isValidElement(item)) {\n return false;\n }\n return item['isFold'];\n }) as ButtonOperateItem[];\n const result = [] as ButtonOperateItem[];\n filterList.forEach((item) => {\n const target = { ...item };\n // 多余字段渲染到react dom上,出现警告\n delete target.isFold;\n result.push(target);\n });\n return result;\n }, [operateList]);\n\n const gap = props.gap === undefined ? 10 : props.gap;\n const size = !props.split ? gap : 0;\n\n return (\n <div className={classNames('table-operate', props.className)} style={props.style}>\n <Space\n split={props.split ? <Divider type=\"vertical\" /> : null}\n size={size}\n wrap={isUndefined(props.wrap) ? true : props.wrap}\n {...props.spaceProps}\n >\n {viewList.map((item, index) => {\n if (item && isValidElement(item)) {\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType} key={index}>\n {item}\n </ButtonOperateItemContent>\n );\n }\n const { text, onClick, needConfirm, confirmMessage, popconfirmProps, hoverTips, ...otherProps } =\n item;\n const type = item.type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = !!item.color ? false : true;\n return (\n <ButtonOperateItemContent hoverTips={hoverTips} tipsType={item.tipsType} key={index}>\n <Popconfirm\n okText=\"确定\"\n cancelText=\"取消\"\n trigger={['click']}\n placement=\"topRight\"\n arrow={true}\n destroyTooltipOnHide={true}\n {...popconfirmProps}\n title={confirmMessage}\n onConfirm={onConfirm.bind(null, item)}\n key={index}\n okButtonProps={{\n loading,\n }}\n onOpenChange={(_open) => {\n if (!_open) {\n setLoading(false);\n }\n }}\n onCancel={(event) => {\n event?.stopPropagation();\n }}\n >\n <ButtonWrapper\n danger={danger}\n {...otherProps}\n onClick={(event) => {\n event.stopPropagation();\n }}\n type={type}\n >\n {isValidElement(text) ? <span>{text}</span> : text}\n </ButtonWrapper>\n </Popconfirm>\n </ButtonOperateItemContent>\n );\n }\n return (\n <ButtonOperateItemContent hoverTips={hoverTips} tipsType={item.tipsType} key={index}>\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={type}\n onClick={(event) => {\n event.stopPropagation();\n return onClick?.(event);\n }}\n >\n {isValidElement(text) ? <span>{text}</span> : text}\n </ButtonWrapper>\n </ButtonOperateItemContent>\n );\n })}\n {foldList.length > 0 ? (\n <DropdownMenuWrapper menuList={foldList}>\n <Button\n type=\"link\"\n className=\"fold-more-button\"\n onClick={(event) => {\n event.stopPropagation();\n }}\n >\n {props.foldIcon ? props.foldIcon : <MoreOutlined />}\n </Button>\n </DropdownMenuWrapper>\n ) : null}\n </Space>\n </div>\n );\n};\n\nButtonOperate.defaultProps = {\n split: true,\n};\n"],"names":["ButtonOperateItemContent","props","hoverTips","tipsType","_jsx","Popover","content","zIndex","children","Fragment","Tooltip","title","ButtonOperate","_useState","useState","loading","setLoading","onConfirm","_hooks","useCallbackRef","item","event","result","onClick","_isPromise","finally","operateList","filter","isValidElement","_item$props","_item$props2","permission","_isString","fbaUtils","hasPermission","_isPlainObject","viewList","useMemo","foldList","filterList","forEach","target","_extends","isFold","push","gap","undefined","size","split","className","_classNames","style","_jsxs","Space","Divider","type","wrap","_isUndefined","spaceProps","map","index","text","needConfirm","confirmMessage","popconfirmProps","otherProps","_objectWithoutPropertiesLoose","_excluded","disabled","danger","color","_createElement","Popconfirm","okText","cancelText","trigger","placement","arrow","destroyTooltipOnHide","bind","key","okButtonProps","onOpenChange","_open","onCancel","stopPropagation","ButtonWrapper","loadingPosition","length","DropdownMenuWrapper","menuList","Button","foldIcon","_MoreOutlined","defaultProps"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{isString as e}from"@dimjs/lang/cjs/is-string";import{a as r,_ as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isPromise as n}from"@dimjs/lang/cjs/is-promise";import{hooks as t}from"@wove/react/cjs/hooks";import{Form as i,Space as a,Drawer as l}from"antd";import{useState as d}from"react";import{createRoot as c}from"react-dom/client";import{B as s}from"./button-wrapper-e833e139.js";import{C as m}from"./config-provider-wrapper-dfe8f592.js";import{fbaHooks as u}from"./fba-hooks/index.js";import{b as f}from"./dom-4d04aa64.js";import{jsx as p,jsxs as v}from"react/jsx-runtime";var w=["divElement","elementId","onOk","onCancel","content","configProviderProps","okText","cancelText","okButtonExtraProps","cancelButtonExtraProps","operatePosition","operateRender","width","okHidden","cancelHidden"];var h=function e(c){var f=c.divElement,h=c.elementId,k=c.onOk,C=c.onCancel,x=c.content,j=c.configProviderProps,P=c.okText,g=c.cancelText,_=c.okButtonExtraProps,E=c.cancelButtonExtraProps,b=c.operatePosition,y=b===void 0?"footer":b,B=c.operateRender,I=c.width,H=I===void 0?600:I,R=c.okHidden,T=c.cancelHidden,O=o(c,w);var W=d(true),F=W[0],S=W[1];var q=i.useForm(),z=q[0];var A=t.useCallbackRef((function(){try{delete window[h]}catch(e){}S(false)}));u.useEffectCustom((function(){window[h]=A}),[A]);var D=t.useCallbackRef((function(e){if(C){var r=C(z,e);if(r&&n(r)){return r.then(A)}}return A()}));var G=t.useCallbackRef((function(e){if(k){var r=k(z,e);if(r&&n(r)){return r.then(A)}}return A()}));var J=v(a,{children:[T||E!=null&&E.hidden?null:p(s,r({},E,{onClick:D,children:g||"取消"})),R||_!=null&&_.hidden?null:p(s,r({type:"primary"},_,{onClick:G,children:P||"提交"}))]});var K=function e(){if(B){return B(z)}if(!R||!T){return J}return null};return p(m,r({},j,{children:p(l,r({maskClosable:true,destroyOnClose:true,onClose:A,width:"80%",contentWrapperStyle:{maxWidth:H},extra:y==="header"?K():null,footer:y==="footer"?K():null},O,{open:F,getContainer:f,children:typeof x==="function"?x(z,{onClose:A}):x}))}))};var k={open:function e(o){var n=f(),t=n.divElement,i=n.elementId;window["__dialog_drawer_elementId"]=i;var a=c(t);a.render(p(h,r({},o,{divElement:t,elementId:i})));return{close:function e(){var r,o;(r=(o=window)[i])==null?void 0:r.call(o)}}},close:function r(){try{var o,n;var t=window["__dialog_drawer_elementId"];if(e(t))(o=(n=window)[t])==null?void 0:o.call(n)}catch(e){}}};export{k as d};
|
|
3
|
-
//# sourceMappingURL=dialog-drawer-a741961f.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-drawer-a741961f.js","sources":["@flatbiz/antd/src/dialog-drawer/dialog-drawer.tsx"],"sourcesContent":["import { isPromise, isString } from '@dimjs/lang';\nimport { TNoopDefine } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Drawer, DrawerProps, Form, FormInstance, Space } from 'antd';\nimport { ReactElement, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { bodyAppendDivElement, BodyAppendDivElementProps } from '../_utils/dom';\n\nexport type DialogDrawerProps = Omit<\n DrawerProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'footer'\n> & {\n okText?: string | ReactElement;\n cancelText?: string | ReactElement;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n okButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children' | 'loading'>;\n cancelButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children'>;\n operatePosition?: 'header' | 'footer';\n operateRender?: (form: FormInstance) => ReactElement;\n okHidden?: boolean;\n cancelHidden?: boolean;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogDrawerProps) => {\n const {\n divElement,\n elementId,\n onOk,\n onCancel,\n content,\n configProviderProps,\n okText,\n cancelText,\n okButtonExtraProps,\n cancelButtonExtraProps,\n operatePosition = 'footer',\n operateRender,\n width = 600,\n okHidden,\n cancelHidden,\n ...otherProps\n } = props;\n const [open, setOpen] = useState(true);\n const [form] = Form.useForm();\n\n const onClose = hooks.useCallbackRef(() => {\n try {\n delete window[elementId];\n } catch (error) {\n //\n }\n setOpen(false);\n });\n\n fbaHooks.useEffectCustom(() => {\n window[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const operateGroup = (\n <Space>\n {cancelHidden || cancelButtonExtraProps?.hidden ? null : (\n <ButtonWrapper {...cancelButtonExtraProps} onClick={onCancelHandle}>\n {cancelText || '取消'}\n </ButtonWrapper>\n )}\n {okHidden || okButtonExtraProps?.hidden ? null : (\n <ButtonWrapper type=\"primary\" {...okButtonExtraProps} onClick={onOkHandle}>\n {okText || '提交'}\n </ButtonWrapper>\n )}\n </Space>\n );\n\n const operateRenderHandle = () => {\n if (operateRender) {\n return operateRender(form);\n }\n if (!okHidden || !cancelHidden) {\n return operateGroup;\n }\n return null;\n };\n\n return (\n <ConfigProviderWrapper {...configProviderProps}>\n <Drawer\n maskClosable={true}\n destroyOnClose\n onClose={onClose}\n width={'80%'}\n contentWrapperStyle={{ maxWidth: width }}\n extra={operatePosition === 'header' ? operateRenderHandle() : null}\n footer={operatePosition === 'footer' ? operateRenderHandle() : null}\n {...otherProps}\n open={open}\n getContainer={divElement}\n >\n {typeof content === 'function' ? content(form, { onClose }) : content}\n </Drawer>\n </ConfigProviderWrapper>\n );\n};\n\n/**\n * 函数式调用弹框;初始化后,内容无法更新\n *```\n * 1. 基础使用方式\n * dialogDrawer.open({\n * title: '我是弹框',\n * content: <div>我是内容</div>,\n * });\n * ```\n * ```\n * ***************************\n * 2. 结合内置form使用,可在onOK、onCancel获取form对象\n * dialogDrawer.open({\n * title: '我是弹框',\n * content: (form, operate) => {\n * return (\n * <Form form={form}>\n * <Form.Item name=\"useName\">\n * <Input placeholder=\"请输入\" />\n * </Form.Item>\n * </Form>\n * );\n * },\n * onOK: (form) => {\n * console.log('content form数据', form.getFieldsValue());\n * return Promise.resolve();\n * },\n * });\n * 注意:\n * 1. 设置operateRender后,需要自定义操作按钮,onOk、onCancel、okText、cancelText、okButtonExtraProps、cancelButtonExtraProps配置失效\n * ```\n */\nexport const dialogDrawer = {\n open: (props: DialogDrawerProps) => {\n const { divElement, elementId } = bodyAppendDivElement();\n window['__dialog_drawer_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogDrawer.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_drawer_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n};\n"],"names":["ModalRender","props","divElement","elementId","onOk","onCancel","content","configProviderProps","okText","cancelText","okButtonExtraProps","cancelButtonExtraProps","_props$operatePositio","operatePosition","operateRender","_props$width","width","okHidden","cancelHidden","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_Form$useForm","Form","useForm","form","onClose","_hooks","useCallbackRef","window","error","fbaHooks","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","operateGroup","_jsxs","Space","children","hidden","_jsx","ButtonWrapper","_extends","onClick","type","operateRenderHandle","ConfigProviderWrapper","Drawer","maskClosable","destroyOnClose","contentWrapperStyle","maxWidth","extra","footer","getContainer","dialogDrawer","_bodyAppendDivElement","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-modal-7b705b44.js","sources":["@flatbiz/antd/src/dialog-modal/dialog-modal.tsx"],"sourcesContent":["import { isPromise, isString } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { BodyAppendDivElementProps, dom, TNoopDefine } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Form, FormInstance, Modal, ModalProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type DialogModalProps = Omit<\n ModalProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'okButtonProps' | 'cancelButtonProps'\n> & {\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n okHidden?: boolean;\n cancelHidden?: boolean;\n okButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n cancelButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n /**\n * 设置modal body height 为当前窗口height的百分比,例如:30\n * ```\n * 1. 最大值:80\n * 1. 设置bodyStyle.height 后,bodyHeightPercent失效\n * ```\n */\n bodyHeightPercent?: number;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogModalProps) => {\n const {\n divElement,\n elementId,\n onOk,\n onCancel,\n okButtonProps,\n cancelButtonProps,\n content,\n configProviderProps,\n className,\n okHidden,\n cancelHidden,\n footer,\n cancelText,\n okText,\n bodyHeightPercent,\n ...otherProps\n } = props;\n const [open, setOpen] = useState(true);\n const [form] = Form.useForm();\n const size = useSize(document.querySelector('html'));\n\n const onClose = hooks.useCallbackRef(() => {\n try {\n delete window[elementId];\n } catch (error) {\n //\n }\n setOpen(false);\n });\n\n fbaHooks.useEffectCustom(() => {\n window[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onAfterClose = hooks.useCallbackRef(() => {\n dom.removeBodyChild(`#${elementId}`);\n props.afterClose?.();\n });\n\n const operateGroup = [\n <ButtonWrapper key=\"0\" {...cancelButtonProps} onClick={onCancelHandle} hidden={cancelHidden}>\n {cancelText || '取消'}\n </ButtonWrapper>,\n <ButtonWrapper key=\"1\" type=\"primary\" {...okButtonProps} onClick={onOkHandle} hidden={okHidden}>\n {okText || '提交'}\n </ButtonWrapper>,\n ];\n\n const footerNew = footer || operateGroup;\n\n const height = useMemo(() => {\n if (!size?.height || !bodyHeightPercent) {\n return 'auto';\n }\n return size?.height * (bodyHeightPercent / 100);\n }, [bodyHeightPercent, size?.height]);\n\n return (\n <ConfigProviderWrapper {...configProviderProps}>\n <Modal\n maskClosable={true}\n centered={true}\n onCancel={onClose}\n destroyOnClose\n {...otherProps}\n bodyStyle={{\n height,\n maxHeight: size?.height ? size?.height * 0.8 : 'calc(100vh - 200px)',\n ...otherProps.bodyStyle,\n }}\n className={classNames('v-dialog-modal', className)}\n open={open}\n afterClose={onAfterClose}\n getContainer={divElement}\n footer={footerNew}\n style={{ color: 'red' }}\n >\n {typeof content === 'function' ? content(form, { onClose }) : content}\n </Modal>\n </ConfigProviderWrapper>\n );\n};\n\n/**\n * 函数式调用弹框;初始化后,内容无法更新\n *```\n * 1. 基础使用方式\n * dialogModal.open({\n * title: '我是弹框',\n * content: <div>我是内容</div>,\n * });\n * ```\n * ```\n * ***************************\n * 2. 结合内置form使用,可在onOK、onCancel获取form对象\n * dialogModal.open({\n * title: '我是弹框',\n * content: (form, operate) => {\n * return (\n * <Form form={form}>\n * <Form.Item name=\"useName\">\n * <Input placeholder=\"请输入\" />\n * </Form.Item>\n * </Form>\n * );\n * },\n * onOK: (form) => {\n * console.log('content form数据', form.getFieldsValue());\n * return Promise.resolve();\n * },\n * });\n * ```\n */\nexport const dialogModal = {\n open: (props: DialogModalProps) => {\n const { divElement, elementId } = dom.bodyAppendDivElement();\n window['__dialog_modal_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogModal.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_modal_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n};\n"],"names":["ModalRender","props","divElement","elementId","onOk","onCancel","okButtonProps","cancelButtonProps","content","configProviderProps","className","okHidden","cancelHidden","footer","cancelText","okText","bodyHeightPercent","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_Form$useForm","Form","useForm","form","size","useSize","document","querySelector","onClose","_hooks","useCallbackRef","window","error","fbaHooks","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","onAfterClose","dom","removeBodyChild","afterClose","operateGroup","_jsx","ButtonWrapper","_extends","onClick","hidden","children","type","footerNew","height","useMemo","ConfigProviderWrapper","Modal","maskClosable","centered","destroyOnClose","bodyStyle","maxHeight","_classNames","getContainer","style","color","dialogModal","_dom$bodyAppendDivEle","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{_ as e,a as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isPromise as r}from"@dimjs/lang/cjs/is-promise";import{hooks as n}from"@wove/react/cjs/hooks";import{Popconfirm as i,Dropdown as t}from"antd";import{useState as a,createElement as l,useMemo as s}from"react";import{B as f}from"./button-wrapper-e833e139.js";import{fbaHooks as u}from"./fba-hooks/index.js";import{f as p}from"./fba-utils-1e895394.js";import{jsx as d}from"react/jsx-runtime";function c(e){var o=true;var r=false;while(o){if(e.tagName==="HTML"||e.tagName==="BODY"){o=false;r=false}else{var n=window.getComputedStyle(e),i=n.position;if(i==="sticky"){r=true;o=false}else{if(!e||!e.parentNode){o=false}else{e=e.parentNode}}}}return r}var m=["menuList"],v=["text","color","permission","needConfirm","confirmMessage","hidden","type","style","popconfirmProps"];var g=function g(y){var k=y.menuList,C=e(y,m);var h=a([]),b=h[0],P=h[1];var x=n.useId(undefined,"DropdownMenuWrapper");var w=a({}),j=w[0],N=w[1];var B=n.useCallbackRef((function(e,o){var r;o.stopPropagation();N((r={},r[e]={open:true},r))}));var S=n.useCallbackRef((function(e,n,i){i.stopPropagation();var t=e.onClick==null?void 0:e.onClick(i);if(t&&r(t)){j[n]={loading:true,open:true};N(o({},j));t.finally((function(){j[n]={loading:false,open:false};N(o({},j))}));return}j[n]={loading:false,open:false};N(o({},j))}));var z=n.useCallbackRef((function(e,o){o.stopPropagation();return e.onClick==null?void 0:e.onClick(o)}));u.useEffectCustom((function(){var r=[];k.filter(Boolean).forEach((function(n,t){var a,s;if(!n)return;var u=n.text,c=n.color,m=n.permission,g=n.needConfirm,y=n.confirmMessage,k=n.hidden,C=n.type,h=n.style,b=n.popconfirmProps,P=e(n,v);if(k)return;if(m&&!p.hasPermission(m))return;var x=c?o({color:c},h):h;var w=C||"link";var M={key:t,label:l(f,o({loadingPosition:"center",size:"small"},P,{type:w,style:x,key:t,onClick:z.bind(null,n)}),u)};var T={key:t,label:l(i,o({okText:"确定",cancelText:"取消",trigger:["click"],destroyTooltipOnHide:true},b,{title:y,onConfirm:S.bind(null,n,t),onCancel:function e(o){o==null?void 0:o.stopPropagation();N({})},overlayClassName:"dmw-popconfirm",arrow:true,key:t,overlayStyle:{zIndex:10},open:((a=j[t])==null?void 0:a.open)||false,okButtonProps:{loading:(s=j[t])==null?void 0:s.loading}}),d(f,o({loadingPosition:"center",size:"small",danger:c?false:P.danger},P,{onClick:B.bind(null,t),type:w,style:x,children:u})))};if(g&&!P.disabled){r.push(T)}else{r.push(M)}}));P(r)}),[k,j]);var M=document.querySelector("."+x);var T=s((function(){if(y.isFixed||M&&c(M)){return undefined}return M}),[y.isFixed,M]);return d("div",{className:x,style:{position:"relative"},children:d(t,o({trigger:(C==null?void 0:C.trigger)||["hover"],getPopupContainer:T?function(){return M}:undefined,arrow:{pointAtCenter:true}},C,{overlayStyle:o({zIndex:9},C.overlayStyle),menu:{items:b},onOpenChange:function e(o){if(!o){N({})}},children:y.children}))})};export{g as D};
|
|
3
|
-
//# sourceMappingURL=dropdown-menu-wrapper-3544d20e.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-wrapper-3544d20e.js","sources":["@flatbiz/antd/src/dropdown-menu-wrapper/utils.ts","@flatbiz/antd/src/dropdown-menu-wrapper/dropdown-menu-wrapper.tsx"],"sourcesContent":["export function parentsHasSticky(node: Element) {\n let condition = true;\n let result = false;\n while (condition) {\n if (node.tagName === 'HTML' || node.tagName === 'BODY') {\n condition = false;\n result = false;\n } else {\n const { position } = window.getComputedStyle(node);\n if (position === 'sticky') {\n result = true;\n condition = false;\n } else {\n if (!node || !node.parentNode) {\n condition = false;\n } else {\n node = node.parentNode as Element;\n }\n }\n }\n }\n return result;\n}\n","import { isPromise } from '@dimjs/lang';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Dropdown, DropdownProps, Popconfirm, PopconfirmProps } from 'antd';\nimport { ItemType } from 'antd/lib/menu/hooks/useItems';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport './style.less';\nimport { parentsHasSticky } from './utils';\n\nexport interface DropdownMenuItem extends ButtonProps {\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n}\n\nexport interface DropdownMenuWrapperProps extends Omit<DropdownProps, 'menu'> {\n menuList: Array<DropdownMenuItem | null>;\n isFixed?: boolean;\n}\n\nexport const DropdownMenuWrapper = (props: DropdownMenuWrapperProps) => {\n const { menuList, ...dropdownOtherProps } = props;\n const [menuItems, setMenuItems] = useState<ItemType[]>([]);\n const clsName = hooks.useId(undefined, 'DropdownMenuWrapper');\n\n const [statusMap, setStatusMap] = useState<Record<string, { open?: boolean; loading?: boolean }>>({});\n const onConfirmtTriggerClick = hooks.useCallbackRef((index, event) => {\n event.stopPropagation();\n setStatusMap({ [index]: { open: true } });\n });\n\n const onConfirm = hooks.useCallbackRef((item: DropdownMenuItem, index: number, event) => {\n event.stopPropagation();\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n statusMap[index] = { loading: true, open: true };\n setStatusMap({ ...statusMap });\n result.finally(() => {\n statusMap[index] = { loading: false, open: false };\n setStatusMap({ ...statusMap });\n });\n return;\n }\n statusMap[index] = { loading: false, open: false };\n setStatusMap({ ...statusMap });\n });\n\n const onClick = hooks.useCallbackRef((item: DropdownMenuItem, event) => {\n event.stopPropagation();\n return item.onClick?.(event);\n });\n\n fbaHooks.useEffectCustom(() => {\n const menuItemsNew: ItemType[] = [];\n menuList.filter(Boolean).forEach((item, index) => {\n if (!item) return;\n const {\n text,\n color,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n type,\n style,\n popconfirmProps,\n ...otherProps\n } = item;\n if (hidden) return;\n if (permission && !fbaUtils.hasPermission(permission)) return;\n const newStyle = color ? { color, ...style } : style;\n const buttonType = type || 'link';\n const nromal = {\n key: index,\n label: (\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n {...otherProps}\n type={buttonType}\n style={newStyle}\n key={index}\n onClick={onClick.bind(null, item)}\n >\n {text}\n </ButtonWrapper>\n ),\n };\n const confirm = {\n key: index,\n label: (\n <Popconfirm\n okText=\"确定\"\n cancelText=\"取消\"\n trigger={['click']}\n destroyTooltipOnHide={true}\n {...popconfirmProps}\n title={confirmMessage}\n onConfirm={onConfirm.bind(null, item, index)}\n onCancel={(event) => {\n event?.stopPropagation();\n setStatusMap({});\n }}\n overlayClassName=\"dmw-popconfirm\"\n arrow={true}\n key={index}\n overlayStyle={{ zIndex: 10 }}\n open={statusMap[index]?.open || false}\n okButtonProps={{\n loading: statusMap[index]?.loading,\n }}\n >\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n danger={color ? false : otherProps.danger}\n {...otherProps}\n onClick={onConfirmtTriggerClick.bind(null, index)}\n type={buttonType}\n style={newStyle}\n >\n {text}\n </ButtonWrapper>\n </Popconfirm>\n ),\n };\n if (needConfirm && !otherProps.disabled) {\n menuItemsNew.push(confirm);\n } else {\n menuItemsNew.push(nromal);\n }\n });\n setMenuItems(menuItemsNew);\n }, [menuList, statusMap]);\n\n const target = document.querySelector(`.${clsName}`);\n const container = useMemo(() => {\n if (props.isFixed || (target && parentsHasSticky(target))) {\n return undefined;\n }\n return target;\n }, [props.isFixed, target]);\n\n return (\n <div className={clsName} style={{ position: 'relative' }}>\n <Dropdown\n trigger={dropdownOtherProps?.trigger || ['hover']}\n getPopupContainer={container ? () => target as HTMLElement : undefined}\n arrow={{ pointAtCenter: true }}\n {...dropdownOtherProps}\n overlayStyle={{ zIndex: 9, ...dropdownOtherProps.overlayStyle }}\n menu={{ items: menuItems }}\n onOpenChange={(_open) => {\n if (!_open) {\n setStatusMap({});\n }\n }}\n >\n {props.children}\n </Dropdown>\n </div>\n );\n};\n"],"names":["parentsHasSticky","node","condition","result","tagName","_window$getComputedSt","window","getComputedStyle","position","parentNode","DropdownMenuWrapper","props","menuList","dropdownOtherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","menuItems","setMenuItems","clsName","_hooks","useId","undefined","_useState2","statusMap","setStatusMap","onConfirmtTriggerClick","useCallbackRef","index","event","_setStatusMap","stopPropagation","open","onConfirm","item","onClick","_isPromise","loading","_extends","finally","fbaHooks","useEffectCustom","menuItemsNew","filter","Boolean","forEach","_statusMap$index","_statusMap$index2","text","color","permission","needConfirm","confirmMessage","hidden","type","style","popconfirmProps","otherProps","_excluded2","fbaUtils","hasPermission","newStyle","buttonType","nromal","key","label","_createElement","ButtonWrapper","loadingPosition","size","bind","confirm","Popconfirm","okText","cancelText","trigger","destroyTooltipOnHide","title","onCancel","overlayClassName","arrow","overlayStyle","zIndex","okButtonProps","_jsx","danger","children","disabled","push","target","document","querySelector","container","useMemo","isFixed","className","Dropdown","getPopupContainer","pointAtCenter","menu","items","onOpenChange","_open"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{isEmpty as r}from"@dimjs/lang/cjs/is-empty";import{_ as i,a as e}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{getStrByteLen as n,cutString as l}from"@flatbiz/utils";import{Tooltip as t}from"antd";import{Fragment as a}from"react";import{B as p}from"./button-wrapper-e833e139.js";import{jsx as o,jsxs as c}from"react/jsx-runtime";var d=["onClick","children","prefix"];var f=function r(n){var l=n.onClick,t=n.children,a=n.prefix,f=i(n,d);if(!!l){return c(p,e({type:"link",onClick:l,style:{padding:0,height:"initial"}},f,{children:[a?o("span",{style:{paddingRight:5},children:a}):null,t]}))}return c("span",e({},f,{children:[a?o("span",{style:{paddingRight:5},children:a}):null,t]}))};var s=function i(e){var p=e.text,c=e.maxLength,d=e.placeholder,s=e.onClick,m=e.children,h=e.prefix;if(!p||r(p)||p==="")return o(a,{children:d});var u=!m?h:null;if(!!c){var x=n(p);if(x<=c*2){return o(f,{onClick:s,prefix:u,children:m||p})}else{var g=l(p,c*2);return o(t,{placement:"topLeft",title:p,children:o(f,{onClick:s,prefix:u,children:m||g})})}}else{return o(f,{onClick:s,prefix:u,children:m||p})}};export{s as T};
|
|
3
|
-
//# sourceMappingURL=text-overflow-render-2ec38800.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-overflow-render-2ec38800.js","sources":["@flatbiz/antd/src/text-overflow-render/text-overflow-render.tsx"],"sourcesContent":["import { isEmpty } from '@dimjs/lang';\nimport { cutString, getStrByteLen } from '@flatbiz/utils';\nimport { Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\n\nconst LinkRender = (props: {\n onClick?: (e) => void;\n children: ReactElement | string;\n prefix?: string | ReactElement | null;\n}) => {\n const { onClick, children, prefix, ...otherProps } = props;\n if (!!onClick) {\n return (\n <ButtonWrapper type=\"link\" onClick={onClick} style={{ padding: 0, height: 'initial' }} {...otherProps}>\n {prefix ? <span style={{ paddingRight: 5 }}>{prefix}</span> : null}\n {children}\n </ButtonWrapper>\n );\n }\n return (\n <span {...otherProps}>\n {prefix ? <span style={{ paddingRight: 5 }}>{prefix}</span> : null}\n {children}\n </span>\n );\n};\n\nexport type TextOverflowRenderProps = {\n /** 设置 children 属性后,maxLength失效 */\n maxLength?: number;\n /** 完整文本 */\n text?: string;\n /** 配置children属性(maxLength、prefix失效) */\n children?: string | ReactElement;\n /**\n * 文本前缀显示\n * 设置 children 属性后,prefix失效\n */\n prefix?: string | ReactElement;\n /** 数据不存在时,占位符 */\n placeholder?: ReactElement | string;\n onClick?: (e) => void;\n};\n\n/**\n * 文本显示,可通过长度控制溢出效果\n * ```\n * 显示文本通过两种方式\n * 1. 配置text属性\n * 2. 配置children属性(maxLength、prefix失效)\n * 3. 需要控制长度配置 maxLength\n * ```\n * @param props\n * @returns\n */\nexport const TextOverflowRender = (props: TextOverflowRenderProps) => {\n const { text, maxLength, placeholder, onClick, children, prefix } = props;\n\n if (!text || isEmpty(text) || text === '') return <Fragment>{placeholder}</Fragment>;\n const prefixNew = !children ? prefix : null;\n if (!!maxLength) {\n const strByteLen = getStrByteLen(text);\n if (strByteLen <= maxLength * 2) {\n return (\n <LinkRender onClick={onClick} prefix={prefixNew}>\n {children || text}\n </LinkRender>\n );\n } else {\n const resultTitle = cutString(text, maxLength * 2);\n return (\n <Tooltip placement=\"topLeft\" title={text}>\n <LinkRender onClick={onClick} prefix={prefixNew}>\n {children || resultTitle}\n </LinkRender>\n </Tooltip>\n );\n }\n } else {\n return (\n <LinkRender onClick={onClick} prefix={prefixNew}>\n {children || text}\n </LinkRender>\n );\n }\n};\n"],"names":["LinkRender","props","onClick","children","prefix","otherProps","_objectWithoutPropertiesLoose","_excluded","_jsxs","ButtonWrapper","_extends","type","style","padding","height","_jsx","paddingRight","TextOverflowRender","text","maxLength","placeholder","_isEmpty","Fragment","prefixNew","strByteLen","getStrByteLen","resultTitle","cutString","Tooltip","placement","title"],"mappings":";6XAMA,IAAMA,EAAa,SAAbA,EAAcC,GAKlB,IAAQC,EAA6CD,EAA7CC,QAASC,EAAoCF,EAApCE,SAAUC,EAA0BH,EAA1BG,OAAWC,EAAUC,EAAKL,EAAKM,GAC1D,KAAML,EAAS,CACb,OACEM,EAACC,EAAaC,EAAA,CAACC,KAAK,OAAOT,QAASA,EAASU,MAAO,CAAEC,QAAS,EAAGC,OAAQ,YAAiBT,EAAU,CAAAF,SAAA,CAClGC,EAASW,EAAA,OAAA,CAAMH,MAAO,CAAEI,aAAc,GAAIb,SAAEC,IAAiB,KAC7DD,KAGP,CACA,OACEK,EAAA,OAAAE,EAAA,CAAA,EAAUL,EAAU,CAAAF,SAAA,CACjBC,EAASW,EAAA,OAAA,CAAMH,MAAO,CAAEI,aAAc,GAAIb,SAAEC,IAAiB,KAC7DD,KAGP,MA8Bac,EAAqB,SAArBA,EAAsBhB,GACjC,IAAQiB,EAA4DjB,EAA5DiB,KAAMC,EAAsDlB,EAAtDkB,UAAWC,EAA2CnB,EAA3CmB,YAAalB,EAA8BD,EAA9BC,QAASC,EAAqBF,EAArBE,SAAUC,EAAWH,EAAXG,OAEzD,IAAKc,GAAQG,EAAQH,IAASA,IAAS,GAAI,OAAOH,EAACO,EAAQ,CAAAnB,SAAEiB,IAC7D,IAAMG,GAAapB,EAAWC,EAAS,KACvC,KAAMe,EAAW,CACf,IAAMK,EAAaC,EAAcP,GACjC,GAAIM,GAAcL,EAAY,EAAG,CAC/B,OACEJ,EAACf,EAAU,CAACE,QAASA,EAASE,OAAQmB,EAAUpB,SAC7CA,GAAYe,GAGnB,KAAO,CACL,IAAMQ,EAAcC,EAAUT,EAAMC,EAAY,GAChD,OACEJ,EAACa,EAAO,CAACC,UAAU,UAAUC,MAAOZ,EAAKf,SACvCY,EAACf,EAAU,CAACE,QAASA,EAASE,OAAQmB,EAAUpB,SAC7CA,GAAYuB,KAIrB,CACF,KAAO,CACL,OACEX,EAACf,EAAU,CAACE,QAASA,EAASE,OAAQmB,EAAUpB,SAC7CA,GAAYe,GAGnB,CACF"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import r from"@ant-design/icons/es/icons/PlusOutlined";import{_ as e,a as i}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isEmpty as t}from"@dimjs/lang/cjs/is-empty";import{hooks as a}from"@wove/react/cjs/hooks";import{isPlainObject as o}from"@dimjs/lang/cjs/is-plain-object";import{extend as s}from"@dimjs/utils/cjs/extend";import{toArray as u}from"@flatbiz/utils";import{message as l,Upload as d,Button as f}from"antd";import{useState as m,Fragment as c}from"react";import{flushSync as p}from"react-dom";import{fbaHooks as v}from"./fba-hooks/index.js";import{jsx as g,jsxs as h}from"react/jsx-runtime";var j=["onChange","onUploadError","value","triggerText"];var x=function r(f){var c=f.onChange,h=f.onUploadError,x=f.value,y=f.triggerText,C=e(f,j);var b=m(),O=b[0],R=b[1];var U=s({uid:"uid",name:"name",url:"url"},f.fieldNames);v.useEffectCustom((function(){var r=(O==null?void 0:O.filter((function(r){return r["status"]==="error"})))||[];var e=(x==null?void 0:x.map((function(r){return{uid:r[U.uid],name:r[U.name],url:r[U.url],status:"done",isOriginal:true}})))||[];if(r.length>0){var i=r.map((function(r){return{uid:r.uid,name:r.name,status:"error",isOriginal:true,response:r["response"]}}));e=e.concat(i)}R(e)}),[U.name,U.uid,U.url,x]);var E=function r(e){var i=[];var n=false;e.forEach((function(r){if(r["isOriginal"]){if(r["status"]!=="error"){var e;i.push((e={},e[U.uid]=r.uid,e[U.name]=r.name,e[U.url]=r.url,e))}}else if(o(r.response)){if(r.response.code==="0000"){var t;var a=r.response.data;var s=(f.onRequestResultAdapter==null?void 0:f.onRequestResultAdapter(a))||a;i.push((t={},t[U.uid]=s[U.uid]||r.uid,t[U.name]=s[U.name]||r.name,t[U.url]=s[U.url],t))}else{n=true;r.status="error";r.response=r.response.message||"上传失败"}}}));if(n){R([].concat(e))}c==null?void 0:c(i)};var k=a.useCallbackRef((function(r){var e=r.fileList;if(r.file.status==="done"){var i=[].concat(r.fileList);var n=i.filter((function(r){return r.status==="done"||r["isOriginal"]}));var t=n.length===i.length;if(t){E(i)}p((function(){return R(i)}));return}else if(r.file.status==="removed"){var a=r.file.uid;var o=x!==undefined?[].concat(x):[];var s=o.findIndex((function(r){var e=r[U.uid];return e===a}));if(s>=0){o.splice(s,1)}c==null?void 0:c(o)}else if(r.file.status==="error"){if(h){h()}else{void l.error("上传操作失败...")}}R([].concat(e));f.onUploadChange==null?void 0:f.onUploadChange(r)}));var L=t(C.maxCount)?undefined:C.maxCount;return g(d,i({},C,{onChange:k,fileList:O,className:n("v-upload-wrapper",C.className),children:C.disabled||L===0||L&&u(O).length>=L?null:g(T,{triggerText:y,listType:C.listType,children:f.children})}))};var T=function e(i){if(i.children)return g(c,{children:i.children});if(i.listType==="picture-card"){return h("div",{children:[g(r,{}),g("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return g(f,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return g(f,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{x as U};
|
|
3
|
-
//# sourceMappingURL=upload-wrapper-df8a2277.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-wrapper-df8a2277.js","sources":["@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isEmpty, isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { Fragment, ReactNode, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[];\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const { onChange, onUploadError, value, triggerText, ...otherProps } = props;\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList =\n value?.map((item) => {\n return {\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n status: 'done',\n isOriginal: true,\n };\n }) || [];\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, value]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n newFileList.push({\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n });\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n newFileList.push({\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n });\n } else {\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = value !== undefined ? [...value] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid];\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const maxCount = isEmpty(otherProps.maxCount) ? undefined : otherProps.maxCount;\n\n return (\n <Upload\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled ||\n maxCount === 0 ||\n (maxCount && toArray(uploadList).length >= maxCount) ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["UploadWrapper","props","onChange","onUploadError","value","triggerText","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","uploadList","setUploadList","fieldNames","_extend","uid","name","url","fbaHooks","useEffectCustom","errorList","filter","item","newList","map","status","isOriginal","length","newErrorList","response","concat","handleResponse","fileList","newFileList","hasError","forEach","_newFileList$push","push","_isPlainObject","code","_newFileList$push2","respData","data","result","onRequestResultAdapter","message","onUploadChange","_hooks","useCallbackRef","info","file","donwList","allDone","flushSync","targetList","undefined","targetIndex","findIndex","tempUid","splice","error","maxCount","_isEmpty","_jsx","Upload","_extends","className","_classNames","children","disabled","toArray","UploadTrigger","listType","Fragment","_jsxs","_PlusOutlined","style","marginTop","Button","type","ghost"],"mappings":"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"}
|