@flatbiz/antd 4.5.41 → 4.5.43
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/_rollupPluginBabelHelpers-c0dbec57.js +3 -0
- package/esm/_rollupPluginBabelHelpers-c0dbec57.js.map +1 -0
- package/esm/ace-editor-groovy/index.js +1 -1
- package/esm/ace-editor-groovy/index.js.map +1 -1
- package/esm/ace-editor-java/index.js +1 -1
- package/esm/ace-editor-java/index.js.map +1 -1
- package/esm/ace-editor-json/index.js +1 -1
- package/esm/ace-editor-json/index.js.map +1 -1
- package/esm/ace-editor-mysql/index.js +1 -1
- package/esm/ace-editor-mysql/index.js.map +1 -1
- package/esm/ace-editor-xml/index.js +1 -1
- package/esm/ace-editor-xml/index.js.map +1 -1
- package/esm/alert-wrapper/index.js +1 -1
- package/esm/amount-fen-input/index.js +1 -1
- package/esm/amount-fen-input/index.js.map +1 -1
- package/esm/amount-fen-input-form-item/index.js +1 -1
- package/esm/anchor-steps/index.js +1 -1
- package/esm/anchor-steps/index.js.map +1 -1
- package/esm/block-layout/index.js +1 -1
- package/esm/bootstrap/index.js +1 -1
- package/esm/box-grid/index.js +1 -1
- package/esm/box-grid/index.js.map +1 -1
- package/esm/button-operate/index.js +1 -1
- package/esm/button-operate/index.js.map +1 -1
- package/esm/button-wrapper/index.js +1 -1
- package/esm/card-layout/index.js +1 -1
- package/esm/card-wrapper/index.js +1 -1
- package/esm/cascader-wrapper/index.js +1 -1
- package/esm/cascader-wrapper/index.js.map +1 -1
- package/esm/check-list/index.js +1 -1
- package/esm/check-list/index.js.map +1 -1
- package/esm/checkbox-wrapper/index.js +1 -1
- package/esm/checkbox-wrapper/index.js.map +1 -1
- package/esm/color-picker-wrapper/index.js +1 -1
- package/esm/color-picker-wrapper/index.js.map +1 -1
- package/esm/config-provider-wrapper/index.js +1 -1
- package/esm/create-drawer-wrapper-model/index.js.map +1 -1
- package/esm/create-modal-wrapper-model/index.js.map +1 -1
- package/esm/css-node-hover/index.js +1 -1
- package/esm/date-picker-wrapper/index.js +1 -1
- package/esm/date-picker-wrapper/index.js.map +1 -1
- package/esm/date-range-picker-wrapper/index.js +1 -1
- package/esm/date-range-picker-wrapper/index.js.map +1 -1
- package/esm/date-range-picker-wrapper-form-item/index.js +1 -1
- package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
- package/esm/delete-node/index.js +1 -1
- package/esm/dialog-alert/index.js +1 -1
- package/esm/dialog-alert/index.js.map +1 -1
- package/esm/dialog-confirm/index.js +1 -1
- package/esm/dialog-confirm/index.js.map +1 -1
- package/esm/dialog-drawer/index.js +1 -1
- package/esm/dialog-drawer/index.js.map +1 -1
- package/esm/dialog-drawer-content/index.js +1 -1
- package/esm/dialog-loading/index.js +1 -1
- package/esm/dialog-loading/index.js.map +1 -1
- package/esm/dialog-modal/index.js +1 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/dialog-preview-image/index.js +1 -1
- package/esm/dialog-preview-image/index.js.map +1 -1
- package/esm/drag-collapse/index.js +1 -1
- package/esm/drag-collapse/index.js.map +1 -1
- package/esm/drag-collapse-form-list/index.js +1 -1
- package/esm/drag-collapse-form-list/index.js.map +1 -1
- package/esm/drag-editable-card/index.js +1 -1
- package/esm/drag-editable-card/index.js.map +1 -1
- package/esm/drag-editable-table/index.js +1 -1
- package/esm/drag-editable-table/index.js.map +1 -1
- package/esm/drag-editable-table-pro/index.js +1 -1
- package/esm/drag-editable-table-pro/index.js.map +1 -1
- package/esm/drag-form-list/index.js +1 -1
- package/esm/drag-form-list/index.js.map +1 -1
- package/esm/drag-table/index.js +1 -1
- package/esm/drag-table/index.js.map +1 -1
- package/esm/drawer-wrapper/index.js +1 -1
- package/esm/dropdown-menu-wrapper/index.js +1 -1
- package/esm/dynamic-node/index.js +1 -1
- package/esm/dynamic-node/index.js.map +1 -1
- package/esm/easy-form/index.js +1 -1
- package/esm/easy-table/index.css +1 -1
- package/esm/easy-table/index.js +1 -1
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-card/index.js +1 -1
- package/esm/editable-card/index.js.map +1 -1
- package/esm/editable-field/index.js +1 -1
- package/esm/editable-field/index.js.map +1 -1
- package/esm/editable-table/index.js +1 -1
- package/esm/editable-table/index.js.map +1 -1
- package/esm/editable-table-pro/index.js +1 -1
- package/esm/editable-table-pro/index.js.map +1 -1
- package/esm/editor-wrapper/index.js +1 -1
- package/esm/editor-wrapper/index.js.map +1 -1
- package/esm/error-boundary-wrapper/index.js +1 -1
- package/esm/error-boundary-wrapper/index.js.map +1 -1
- package/esm/fba-app/index.js +1 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/fba-hooks/index.js +1 -1
- package/esm/file-export/index.js +1 -1
- package/esm/file-export/index.js.map +1 -1
- package/esm/file-import/index.js +1 -1
- package/esm/file-select/index.js +1 -1
- package/esm/file-select/index.js.map +1 -1
- package/esm/flex-layout/index.js +1 -1
- package/esm/form-grid/index.js +1 -1
- package/esm/form-item-group/index.js +1 -1
- package/esm/form-item-span/index.js +1 -1
- package/esm/form-item-text/index.js +1 -1
- package/esm/form-item-text/index.js.map +1 -1
- package/esm/form-item-wrapper/index.js +1 -1
- package/esm/form-item-wrapper/index.js.map +1 -1
- package/esm/form-item-wrapper-dependencies/index.js +1 -1
- package/esm/form-list-wrapper/index.js +1 -1
- package/esm/form-list-wrapper/index.js.map +1 -1
- package/esm/form-wrapper/index.js +1 -1
- package/esm/gap/index.js +1 -1
- package/esm/icon-wrapper/index.css +1 -1
- package/esm/icon-wrapper/index.js +1 -1
- package/esm/icon-wrapper/index.js.map +1 -1
- package/esm/{index-7f4ad045.js → index-83bede1b.js} +2 -2
- package/esm/{index-7f4ad045.js.map → index-83bede1b.js.map} +1 -1
- package/esm/index.js +1 -1
- package/esm/input-search-wrapper/index.js +1 -1
- package/esm/input-search-wrapper/index.js.map +1 -1
- package/esm/input-text-area-wrapper/index.js +1 -1
- package/esm/input-text-area-wrapper/index.js.map +1 -1
- package/esm/input-wrapper/index.js +1 -1
- package/esm/input-wrapper/index.js.map +1 -1
- package/esm/json-editor/index.js +1 -1
- package/esm/json-editor/index.js.map +1 -1
- package/esm/label-value-layout/index.js +1 -1
- package/esm/label-value-render/index.js +1 -1
- package/esm/label-value-render/index.js.map +1 -1
- package/esm/local-loading/index.js +1 -1
- package/esm/local-loading/index.js.map +1 -1
- package/esm/mention-editor/index.js +1 -1
- package/esm/mention-editor/index.js.map +1 -1
- package/esm/mentions-wrapper/index.js +1 -1
- package/esm/mentions-wrapper/index.js.map +1 -1
- package/esm/modal-action/index.js +1 -1
- package/esm/modal-wrapper/index.js +1 -1
- package/esm/number-range-form-item/index.js +1 -1
- package/esm/number-range-form-item/index.js.map +1 -1
- package/esm/pagination-wrapper/index.js +1 -1
- package/esm/pdf/index.js +1 -1
- package/esm/pdf/index.js.map +1 -1
- package/esm/pdf-preview/index.js +1 -1
- package/esm/pdf-preview/index.js.map +1 -1
- package/esm/radio-group-wrapper/index.js +1 -1
- package/esm/radio-group-wrapper/index.js.map +1 -1
- package/esm/relation-tree/index.js +1 -1
- package/esm/relation-tree/index.js.map +1 -1
- package/esm/rich-text-editor/index.js +1 -1
- package/esm/rich-text-editor/index.js.map +1 -1
- package/esm/rich-text-viewer/index.js +1 -1
- package/esm/rich-text-viewer/index.js.map +1 -1
- package/esm/roll-location-center/index.js +1 -1
- package/esm/roll-location-center/index.js.map +1 -1
- package/esm/roll-location-in-view/index.js +1 -1
- package/esm/roll-location-in-view/index.js.map +1 -1
- package/esm/rule-describe/index.js +1 -1
- package/esm/search-form/index.js +1 -1
- package/esm/search-form/index.js.map +1 -1
- package/esm/search-menu/index.js +1 -1
- package/esm/search-menu/index.js.map +1 -1
- package/esm/selector-wrapper/index.js +1 -1
- package/esm/selector-wrapper/index.js.map +1 -1
- package/esm/selector-wrapper-search/index.js +1 -1
- package/esm/selector-wrapper-search/index.js.map +1 -1
- package/esm/selector-wrapper-simple/index.js +1 -1
- package/esm/selector-wrapper-simple/index.js.map +1 -1
- package/esm/simple-layout/index.js +1 -1
- package/esm/sms-count-down/index.js +1 -1
- package/esm/sms-count-down/index.js.map +1 -1
- package/esm/split-wrapper/index.js +1 -1
- package/esm/svg-http-view/index.js +1 -1
- package/esm/switch-confirm-wrapper/index.js +1 -1
- package/esm/switch-confirm-wrapper/index.js.map +1 -1
- package/esm/switch-wrapper/index.js +1 -1
- package/esm/switch-wrapper/index.js.map +1 -1
- package/esm/table-cell-render/index.js +1 -1
- package/esm/table-scrollbar/index.js +1 -1
- package/esm/table-scrollbar/index.js.map +1 -1
- package/esm/tabs-sticky/index.js +1 -1
- package/esm/tabs-sticky/index.js.map +1 -1
- package/esm/tabs-wrapper/index.js +1 -1
- package/esm/tabs-wrapper/index.js.map +1 -1
- package/esm/tag-group/index.js +1 -1
- package/esm/tag-list-render/index.js +1 -1
- package/esm/tag-list-render/index.js.map +1 -1
- package/esm/tag-wrapper/index.js +1 -1
- package/esm/text-css-ellipsis/index.js +1 -1
- package/esm/text-css-ellipsis/index.js.map +1 -1
- package/esm/text-overflow/index.js +1 -1
- package/esm/text-overflow-render/index.js +1 -1
- package/esm/text-symbol-wrapper/index.js +1 -1
- package/esm/time-picker-wrapper/index.js +1 -1
- package/esm/time-picker-wrapper/index.js.map +1 -1
- package/esm/time-range-picker-wrapper/index.js +1 -1
- package/esm/time-range-picker-wrapper/index.js.map +1 -1
- package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
- package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
- package/esm/tips-title/index.js +1 -1
- package/esm/tips-wrapper/index.js +1 -1
- package/esm/tree-modal/index.js +1 -1
- package/esm/tree-modal/index.js.map +1 -1
- package/esm/tree-modal-selector/index.js +1 -1
- package/esm/tree-modal-selector/index.js.map +1 -1
- package/esm/tree-selector-wrapper/index.js +1 -1
- package/esm/tree-selector-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.css +1 -1
- package/esm/tree-wrapper/index.js +1 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/esm/upload-wrapper/index.js +1 -1
- package/esm/upload-wrapper/index.js.map +1 -1
- package/esm/x-mind-preview/index.js +1 -1
- package/esm/x-mind-preview/index.js.map +1 -1
- package/index.d.ts +74 -63
- package/package.json +1 -1
- package/esm/_rollupPluginBabelHelpers-a0769acd.js +0 -3
- package/esm/_rollupPluginBabelHelpers-a0769acd.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/utils.ts","@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["export const getBase64 = (file): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n","import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { isUndefinedOrNull, openNewWindow, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { UploadProps } from 'antd';\nimport { Button, Image, message, Upload } from 'antd';\nimport type { UploadChangeParam } from 'antd/lib/upload';\nimport type { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport type { ReactElement, ReactNode } from 'react';\nimport { cloneElement, Fragment, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\nimport { getBase64 } from './utils';\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[] | 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 size?: string | number;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n /** 图片预览开关, 重写 onPreview 方法后失效 */\n imagePreviewSwitch?: boolean;\n /** 图片预览文件类型,默认:['png', 'jpg', 'jpeg', 'gif'] */\n imagePreviewAccept?: string[];\n /**\n * 配置文件额外操作\n * ```\n * 额外操作超过两项后,listType为 picture-card、picture-circle 时会出现显示异常,需要自行修改覆盖样式\n * ```\n */\n extraOperate?: {\n icon: ReactElement;\n onClick: (file: UploadFile, fileList: UploadFile[], e) => void;\n }[];\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\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 * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 1. 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可,\n * 2. 其他需要的字段可在对象中添加 responseData 对象\n * 例如:\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * responseData: { 'xx':'xxx' }\n * }]\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const {\n onChange,\n onUploadError,\n value,\n triggerText,\n limitHidden,\n autoSubmit,\n imagePreviewSwitch,\n imagePreviewAccept,\n extraOperate,\n ...otherProps\n } = props;\n const imagePreviewAcceptFt = isUndefinedOrNull(imagePreviewAccept)\n ? ['png', 'jpg', 'jpeg', 'gif']\n : imagePreviewAccept;\n const [previewImage, setPreviewImage] = useState<string>();\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n size: 'size',\n },\n props.fieldNames,\n );\n\n const valueList = useMemo(\n () => (isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value)),\n [value],\n );\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n size: item[fieldNames.size],\n responseData: item['responseData'],\n status: 'done',\n isOriginal: true,\n });\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, valueList]);\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 const target: TPlainObject = {\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n };\n if (!isUndefinedOrNull(item.size)) {\n target[fieldNames.size] = item.size;\n }\n if (item['responseData']) {\n target.responseData = item['responseData'];\n }\n newFileList.push(target);\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 const target: TPlainObject = {\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n };\n if (!isUndefinedOrNull(result[fieldNames.size])) {\n target[fieldNames.size] = result[fieldNames.size];\n }\n newFileList.push({\n ...target,\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\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 = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.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 const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n const handlePreview = async (file: UploadFile) => {\n const name = file.name || '';\n const extension = name.slice(name.lastIndexOf('.') + 1);\n const acceptTarget = imagePreviewAcceptFt?.find((item) => {\n return item.toLocaleLowerCase() === extension.toLocaleLowerCase();\n });\n if (acceptTarget) {\n if (!file.url && !file.preview) {\n file.preview = await getBase64(file.originFileObj);\n }\n setPreviewImage(file.url || (file.preview as string));\n } else {\n openNewWindow(file.url as string);\n }\n };\n\n return (\n <Fragment>\n <Upload\n beforeUpload={beforeUpload}\n onPreview={imagePreviewSwitch ? handlePreview : undefined}\n showUploadList\n itemRender={(originNode, file, fileList) => {\n if (!extraOperate || !extraOperate.length) return originNode;\n const countSign = `${otherProps.disabled ? 1 : 2}-${extraOperate.length}`;\n return (\n <div\n className={classNames(\n 'v-upload-list-item-actions-wrapper',\n `v-upload-list-item-extra-actions-${countSign}`,\n )}\n style={{ height: '100%' }}\n >\n {cloneElement(originNode, {\n children: [\n originNode.props.children,\n <div key=\"extra-actions\" className=\"v-upload-list-item-extra-actions\">\n {extraOperate.map((item, index) => {\n return (\n <ButtonWrapper\n key={index}\n size=\"small\"\n type=\"text\"\n icon={item.icon}\n onClick={item.onClick.bind(null, file, fileList)}\n />\n );\n })}\n </div>,\n ].filter(Boolean),\n })}\n </div>\n );\n }}\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 {previewImage ? (\n <Image\n wrapperStyle={{ display: 'none' }}\n preview={{\n visible: !!previewImage,\n onVisibleChange: () => setPreviewImage(undefined),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n ) : null}\n </Fragment>\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":["getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","error","UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate","otherProps","_objectWithoutPropertiesLoose","_excluded","imagePreviewAcceptFt","isUndefinedOrNull","_useState","useState","previewImage","setPreviewImage","_useState2","uploadList","setUploadList","fieldNames","_extend","uid","name","url","size","valueList","useMemo","undefined","toArray","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","responseData","status","isOriginal","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_target","target","_isPlainObject","code","_target3","respData","data","onRequestResultAdapter","_extends","errorMsg","message","onUploadChange","_hooks","useCallbackRef","info","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","handlePreview","$return","$error","extension","acceptTarget","lastIndexOf","find","toLocaleLowerCase","preview","originFileObj","then","$await_3","$If_2","call","this","$boundEx","bind","$If_1","openNewWindow","_jsxs","Fragment","children","_jsx","Upload","onPreview","showUploadList","itemRender","originNode","countSign","disabled","className","_classNames","style","height","cloneElement","index","ButtonWrapper","type","icon","onClick","Boolean","UploadTrigger","listType","Image","wrapperStyle","display","visible","onVisibleChange","afterOpenChange","src","_PlusOutlined","marginTop","Button","ghost"],"mappings":";w0CAAO,IAAMA,EAAY,SAAZA,EAAaC,GAAI,OAC5B,IAAIC,SAAQ,SAACC,EAASC,GACpB,IAAMC,EAAS,IAAIC,WACnBD,EAAOE,cAAcN,GACrBI,EAAOG,OAAS,WAAA,OAAML,EAAQE,EAAOI,OAAiB,EACtDJ,EAAOK,QAAU,SAACC,GAAK,OAAKP,EAAOO,EAAM,CAC3C,GAAE,mJCwGSC,EAAgB,SAAhBA,EAAiBC,GAC5B,IACEC,EAUED,EAVFC,SACAC,EASEF,EATFE,cACAC,EAQEH,EARFG,MACAC,EAOEJ,EAPFI,YACAC,EAMEL,EANFK,YACAC,EAKEN,EALFM,WACAC,EAIEP,EAJFO,mBACAC,EAGER,EAHFQ,mBACAC,EAEET,EAFFS,aACGC,EAAUC,EACXX,EAAKY,GACT,IAAMC,EAAuBC,EAAkBN,GAC3C,CAAC,MAAO,MAAO,OAAQ,OACvBA,EACJ,IAAAO,EAAwCC,IAAjCC,EAAYF,EAAA,GAAEG,EAAeH,EAAA,GACpC,IAAAI,EAAoCH,IAA7BI,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChC,IAAMG,EAAaC,EACjB,CACEC,IAAK,MACLC,KAAM,OACNC,IAAK,MACLC,KAAM,QAER3B,EAAMsB,YAGR,IAAMM,EAAYC,GAChB,WAAA,OAAOf,EAAkBX,GAAS2B,UAAYC,EAAsB5B,EAAM,GAC1E,CAACA,IAGH6B,EAASC,iBAAgB,WACvB,IAAMC,GAAYd,GAAU,UAAA,EAAVA,EAAYe,QAAO,SAACC,GAAI,OAAKA,EAAK,YAAc,OAAO,MAAK,GAC9E,IAAIC,EAAU,GACdT,eAAAA,EAAWU,SAAQ,SAACF,GAElB,GAAIA,EAAK,gBAAiB,CACxBC,EAAQE,KAAKH,EACf,KAAO,CACLC,EAAQE,KAAK,CACXf,IAAKY,EAAKd,EAAWE,KACrBC,KAAMW,EAAKd,EAAWG,MACtBC,IAAKU,EAAKd,EAAWI,KACrBC,KAAMS,EAAKd,EAAWK,MACtBa,aAAcJ,EAAK,gBACnBK,OAAQ,OACRC,WAAY,MAEhB,CACF,IACA,GAAIR,EAAUS,OAAS,EAAG,CACxB,IAAMC,EAAeV,EAAUW,KAAI,SAACT,GAClC,MAAO,CACLZ,IAAKY,EAAKZ,IACVC,KAAMW,EAAKX,KACXgB,OAAQ,QACRC,WAAY,KACZI,SAAUV,EAAK,YAEnB,IACAC,EAAUA,EAAQU,OAAOH,EAC3B,CACAvB,EAAcgB,EAChB,GAAG,CAACf,EAAWG,KAAMH,EAAWE,IAAKF,EAAWI,IAAKE,IAErD,IAAMoB,EAAiB,SAAjBA,EAAkBC,GACtB,IAAMC,EAAsB,GAC5B,IAAIC,EAAW,MACfF,EAASX,SAAQ,SAACF,GAChB,GAAIA,EAAK,cAAe,CACtB,GAAIA,EAAK,YAAc,QAAS,CAAA,IAAAgB,EAC9B,IAAMC,GAAoBD,EAAA,CAAA,EAAAA,EACvB9B,EAAWE,KAAMY,EAAKZ,IAAG4B,EACzB9B,EAAWG,MAAOW,EAAKX,KAAI2B,EAC3B9B,EAAWI,KAAMU,EAAKV,IAAG0B,GAE5B,IAAKtC,EAAkBsB,EAAKT,MAAO,CACjC0B,EAAO/B,EAAWK,MAAQS,EAAKT,IACjC,CACA,GAAIS,EAAK,gBAAiB,CACxBiB,EAAOb,aAAeJ,EAAK,eAC7B,CACAc,EAAYX,KAAKc,EACnB,CACD,MAAM,GAAIC,EAAclB,EAAKU,UAAW,CACvC,GAAIV,EAAKU,SAASS,OAAS,OAAQ,CAAA,IAAAC,EACjC,IAAMC,EAAWrB,EAAKU,SAASY,KAC/B,IAAM9D,GAAUI,EAAM2D,wBAAsB,UAAA,EAA5B3D,EAAM2D,uBAAyBF,KAAaA,EAC5D,IAAMJ,GAAoBG,EAAAA,CAAAA,EAAAA,EACvBlC,EAAWE,KAAM5B,EAAO0B,EAAWE,MAAQY,EAAKZ,IAAGgC,EACnDlC,EAAWG,MAAO7B,EAAO0B,EAAWG,OAASW,EAAKX,KAAI+B,EACtDlC,EAAWI,KAAM9B,EAAO0B,EAAWI,KAAI8B,GAE1C,IAAK1C,EAAkBlB,EAAO0B,EAAWK,OAAQ,CAC/C0B,EAAO/B,EAAWK,MAAQ/B,EAAO0B,EAAWK,KAC9C,CACAuB,EAAYX,KAAIqB,KACXP,EAAM,CACTb,aAAciB,IAElB,KAAO,CACL,IAAMI,EAAWzB,EAAKU,SAASgB,SAAW,OAC1CX,EAAW,KACXf,EAAKK,OAAS,QACdL,EAAKU,SAAWV,EAAKU,SAASgB,SAAW,OACzC,GAAI5D,EAAe,CACjBA,GAAAA,UAAAA,EAAAA,EAAgB2D,EAClB,KAAO,MACAC,EAAQhE,MAAM,YACrB,CACF,CACF,CACF,IACA,GAAIqD,EAAU,CACZ9B,EAAa0B,GAAAA,OAAKE,GACpB,CACAhD,GAAAA,UAAAA,EAAAA,EAAWiD,IAGb,IAAMa,EAAiBC,EAAMC,gBAAe,SAACC,GAC3C,IAAMjB,EAAWiB,EAAKjB,SACtB,GAAIiB,EAAK9E,KAAKqD,SAAW,OAAQ,CAC/B,IAAMS,EAAWH,GAAAA,OAAOmB,EAAKjB,UAC7B,IAAMkB,EAAWjB,EAAYf,QAAO,SAACC,GAAI,OAAKA,EAAKK,SAAW,QAAUL,EAAK,iBAE7E,IAAMgC,EAAUD,EAASxB,SAAWO,EAAYP,OAChD,GAAIyB,EAAS,CACXpB,EAAeE,EACjB,CACAmB,GAAU,WAAA,OAAMhD,EAAc6B,MAC9B,MACD,MAAM,GAAIgB,EAAK9E,KAAKqD,SAAW,UAAW,CACzC,IAAMjB,EAAM0C,EAAK9E,KAAKoC,IACtB,IAAM8C,EAAa1C,IAAcE,aAASiB,OAAOnB,GAAa,GAC9D,IAAM2C,EAAcD,EAAWE,WAAU,SAACpC,GACxC,IAAMqC,EAAUrC,EAAKd,EAAWE,MAAQY,EAAKZ,IAC7C,OAAOiD,IAAYjD,CACrB,IACA,GAAI+C,GAAe,EAAG,CACpBD,EAAWI,OAAOH,EAAa,EACjC,CACAtE,GAAAA,UAAAA,EAAAA,EAAWqE,EACZ,MAAM,GAAIJ,EAAK9E,KAAKqD,SAAW,QAAS,CACvC,GAAIvC,EAAe,CACjBA,GACF,KAAO,MACA4D,EAAQhE,MAAM,YACrB,CACF,CAEAuB,EAAa0B,GAAAA,OAAKE,IAClBjD,EAAM+D,gBAAN/D,UAAAA,EAAAA,EAAM+D,eAAiBG,EACzB,IAEA,IAAMS,EAAc9C,GAAQ,WAC1B,GAAInB,EAAWkE,WAAa9C,YAAczB,EAAa,OAAO,MAC9D,GAAIK,EAAWkE,WAAa,EAAG,OAAO,KACtC,GAAIxD,GAAcA,EAAWuB,QAAUjC,EAAWkE,SAAU,OAAO,KACnE,OAAO,KACR,GAAE,CAACvE,EAAaK,EAAWkE,SAAUxD,IAEtC,IAAMyD,EAAe,SAAfA,EAAgBC,EAAO7B,GAC3B,GAAI3C,IAAe,MAAO,CACxB,IAAMsE,EAAWlE,EAAWkE,SAC5B,IAAIG,KAAShC,OAAQnB,GAAa,GAAQqB,GAC1C,IAAI+B,KAAejC,OAAQ3B,GAAc,GAAQ6B,GACjD,GAAI2B,IAAa9C,WAAa8C,IAAa,KAAM,CAC/C,GAAIG,EAAUpC,OAASiC,EAAU,CAC/BG,EAAYA,EAAUE,MAAMF,EAAUpC,OAASiC,GAC/CI,EAAkBA,EAAgBC,MAAMD,EAAgBrC,OAASiC,EACnE,CACF,CACAvD,EAAc2D,GACdhF,EAAMC,UAAND,UAAAA,EAAAA,EAAMC,SAAW8E,GACjB,OAAO,KACT,CACA,OAAO,MAGT,IAAMG,EAAgB,SAAhBA,EAAuB9F,GAAP,OAAA,IAAAC,SAAA,SAAA8F,EAAAC,GAAA,IACd3D,EACA4D,EACAC,EAFA7D,EAAOrC,EAAKqC,MAAQ,GACpB4D,EAAY5D,EAAKwD,MAAMxD,EAAK8D,YAAY,KAAO,GAC/CD,EAAezE,GAAAA,UAAAA,EAAAA,EAAsB2E,MAAK,SAACpD,GAC/C,OAAOA,EAAKqD,sBAAwBJ,EAAUI,mBAChD,IACA,GAAIH,EAAc,CAChB,IAAKlG,EAAKsC,MAAQtC,EAAKsG,QAAS,CACf,OAAArG,QAAAC,QAAMH,EAAUC,EAAKuG,gBAArBC,KA3SvB,SAAAC,GAAA,IA2SQzG,EAAKsG,QAAUG,EAAoC,OA3S3DC,EAAGC,KAAIC,KAAE,CAAC,MAAAC,GAAW,OAAOb,EAAAa,EAAM,CAAC,EAAhCC,KAAKF,MAAKZ,EA4SP,CAAC,SAAAU,IACD5E,EAAgB9B,EAAKsC,KAAQtC,EAAKsG,SAAoB,OA7S5DS,EAAGJ,KAAIC,KAAI,CAAA,OAAXF,EAAGC,KAAIC,KA8SH,KAAO,CACLI,EAAchH,EAAKsC,KAAe,OA/SxCyE,EAAGJ,KAAIC,KAgTH,CAAC,SAAAG,IAAA,OAAAhB,GAAA,CAAA,GACF,EAED,OACEkB,EAACC,EAAQ,CAAAC,SACPC,CAAAA,EAACC,EAAM7C,EAAA,CACLiB,aAAcA,EACd6B,UAAWnG,EAAqB2E,EAAgBpD,UAChD6E,eAAc,KACdC,WAAY,SAAAA,EAACC,EAAYzH,EAAM6D,GAC7B,IAAKxC,IAAiBA,EAAakC,OAAQ,OAAOkE,EAClD,IAAMC,GAAepG,EAAWqG,SAAW,EAAI,GAAC,IAAItG,EAAakC,OACjE,OACE6D,EAAA,MAAA,CACEQ,UAAWC,EACT,qCAAoC,oCACAH,GAEtCI,MAAO,CAAEC,OAAQ,QAASZ,SAEzBa,EAAaP,EAAY,CACxBN,SAAU,CACRM,EAAW7G,MAAMuG,SACjBC,EAAA,MAAA,CAAyBQ,UAAU,mCAAkCT,SAClE9F,EAAaoC,KAAI,SAACT,EAAMiF,GACvB,OACEb,EAACc,EAAa,CAEZ3F,KAAK,QACL4F,KAAK,OACLC,KAAMpF,EAAKoF,KACXC,QAASrF,EAAKqF,QAAQvB,KAAK,KAAM9G,EAAM6D,IAJlCoE,OAJJ,kBAaTlF,OAAOuF,YAIjB,GACIhH,EAAU,CACdT,SAAU8D,EACVd,SAAU7B,EACV4F,UAAWC,EAAW,mBAAoBvG,EAAWsG,WAAWT,SAE/D7F,EAAWqG,UAAYpC,EAAc,KACpC6B,EAACmB,EAAa,CAACvH,YAAaA,EAAawH,SAAUlH,EAAWkH,SAASrB,SACpEvG,EAAMuG,cAIZtF,EACCuF,EAACqB,EAAK,CACJC,aAAc,CAAEC,QAAS,QACzBrC,QAAS,CACPsC,UAAW/G,EACXgH,gBAAiB,SAAAA,IAAA,OAAM/G,EAAgBY,UAAU,EACjDoG,gBAAiB,SAAAA,EAACF,GAAO,OAAMA,GAAW9G,EAAgB,GAAG,GAE/DiH,IAAKlH,IAEL,OAGV,EAEA,IAAM0G,EAAgB,SAAhBA,EAAiB3H,GAKrB,GAAIA,EAAMuG,SAAU,OAAOC,EAACF,EAAQ,CAAAC,SAAEvG,EAAMuG,WAC5C,GAAIvG,EAAM4H,WAAa,eAAgB,CACrC,OACEvB,EAAA,MAAA,CAAAE,UACEC,EAAA4B,EAAe,CAAA,GACf5B,EAAA,MAAA,CAAKU,MAAO,CAAEmB,UAAW,GAAI9B,SAAEvG,EAAMI,aAAe,WAG1D,CACA,GAAIJ,EAAM4H,WAAa,UAAW,CAChC,OACEpB,EAAC8B,EAAM,CAACf,KAAK,UAAUgB,MAAK,KAAAhC,SACzBvG,EAAMI,aAAe,UAG5B,CACA,OACEoG,EAAC8B,EAAM,CAACf,KAAK,UAAUgB,MAAK,KAAAhC,SACzBvG,EAAMI,aAAe,UAG5B"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/upload-wrapper/utils.ts","@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["export const getBase64 = (file): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = (error) => reject(error);\n });\n","import { PlusOutlined } from '@ant-design/icons';\nimport { isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { isUndefinedOrNull, openNewWindow, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { UploadProps } from 'antd';\nimport { Button, Image, message, Upload } from 'antd';\nimport type { UploadChangeParam } from 'antd/lib/upload';\nimport type { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport type { ReactElement, ReactNode } from 'react';\nimport { cloneElement, Fragment, useMemo, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\nimport { getBase64 } from './utils';\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[] | 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 size?: string | number;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n /** 超过maxCount 隐藏上传入口 */\n limitHidden?: boolean;\n /**\n * 自动提交,默认:true\n * ```\n * 1. 自定义beforeUpload配置后 autoSubmit 失效\n * ```\n */\n autoSubmit?: boolean;\n /** 图片预览开关, 重写 onPreview 方法后失效 */\n imagePreviewSwitch?: boolean;\n /** 图片预览文件类型,默认:['png', 'jpg', 'jpeg', 'gif'] */\n imagePreviewAccept?: string[];\n /**\n * 配置文件额外操作\n * ```\n * 额外操作超过两项后,listType为 picture-card、picture-circle 时会出现显示异常,需要自行修改覆盖样式\n * ```\n */\n extraOperate?: {\n icon: ReactElement;\n onClick: (file: UploadFile, fileList: UploadFile[], e) => void;\n }[];\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/file/upload\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 * 5. 回填数据结构\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * }]\n * 1. 其中 uid、name、url 可为其他命名,通过 fieldNames 进行映射即可,\n * 2. 其他需要的字段可在对象中添加 responseData 对象\n * 例如:\n * [{\n * uid: '唯一值',\n * name(非必填): 'image.png',\n * url: 'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',\n * responseData: { 'xx':'xxx' }\n * }]\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const {\n onChange,\n onUploadError,\n value,\n triggerText,\n limitHidden,\n autoSubmit,\n imagePreviewSwitch,\n imagePreviewAccept,\n extraOperate,\n ...otherProps\n } = props;\n const imagePreviewAcceptFt = isUndefinedOrNull(imagePreviewAccept)\n ? ['png', 'jpg', 'jpeg', 'gif']\n : imagePreviewAccept;\n const [previewImage, setPreviewImage] = useState<string>();\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n size: 'size',\n },\n props.fieldNames,\n );\n\n const valueList = useMemo(\n () => (isUndefinedOrNull(value) ? undefined : toArray<TPlainObject>(value)),\n [value],\n );\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList = [] as TAny[];\n valueList?.forEach((item) => {\n // 判断item 为 File类型\n if (item['lastModified']) {\n newList.push(item);\n } else {\n newList.push({\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n size: item[fieldNames.size],\n responseData: item['responseData'],\n status: 'done',\n isOriginal: true,\n });\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, valueList]);\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 const target: TPlainObject = {\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n };\n if (!isUndefinedOrNull(item.size)) {\n target[fieldNames.size] = item.size;\n }\n if (item['responseData']) {\n target.responseData = item['responseData'];\n }\n newFileList.push(target);\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 const target: TPlainObject = {\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n };\n if (!isUndefinedOrNull(result[fieldNames.size])) {\n target[fieldNames.size] = result[fieldNames.size];\n }\n newFileList.push({\n ...target,\n responseData: respData,\n });\n } else {\n const errorMsg = item.response.message || '上传失败';\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n if (onUploadError) {\n onUploadError?.(errorMsg);\n } else {\n void message.error('上传操作失败...');\n }\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 = valueList !== undefined ? [...valueList] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid] || item.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 const beforeUpload = (_file, fileList) => {\n if (autoSubmit === false) {\n const maxCount = otherProps.maxCount;\n let mergeList = [...(valueList || []), ...fileList];\n let uploadListMerge = [...(uploadList || []), ...fileList];\n if (maxCount !== undefined && maxCount !== null) {\n if (mergeList.length > maxCount) {\n mergeList = mergeList.slice(mergeList.length - maxCount);\n uploadListMerge = uploadListMerge.slice(uploadListMerge.length - maxCount);\n }\n }\n setUploadList(uploadListMerge);\n props.onChange?.(mergeList);\n return false;\n }\n return true;\n };\n\n const handlePreview = async (file: UploadFile) => {\n const name = file.name || '';\n const extension = name.slice(name.lastIndexOf('.') + 1);\n const acceptTarget = imagePreviewAcceptFt?.find((item) => {\n return item.toLocaleLowerCase() === extension.toLocaleLowerCase();\n });\n if (acceptTarget) {\n if (!file.url && !file.preview) {\n file.preview = await getBase64(file.originFileObj);\n }\n setPreviewImage(file.url || (file.preview as string));\n } else {\n openNewWindow(file.url as string);\n }\n };\n\n return (\n <Fragment>\n <Upload\n beforeUpload={beforeUpload}\n onPreview={imagePreviewSwitch ? handlePreview : undefined}\n showUploadList\n itemRender={(originNode, file, fileList) => {\n if (!extraOperate || !extraOperate.length) return originNode;\n const countSign = `${otherProps.disabled ? 1 : 2}-${extraOperate.length}`;\n return (\n <div\n className={classNames(\n 'v-upload-list-item-actions-wrapper',\n `v-upload-list-item-extra-actions-${countSign}`,\n )}\n style={{ height: '100%' }}\n >\n {cloneElement(originNode, {\n children: [\n originNode.props.children,\n <div key=\"extra-actions\" className=\"v-upload-list-item-extra-actions\">\n {extraOperate.map((item, index) => {\n return (\n <ButtonWrapper\n key={index}\n size=\"small\"\n type=\"text\"\n icon={item.icon}\n onClick={item.onClick.bind(null, file, fileList)}\n />\n );\n })}\n </div>,\n ].filter(Boolean),\n })}\n </div>\n );\n }}\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 {previewImage ? (\n <Image\n wrapperStyle={{ display: 'none' }}\n preview={{\n visible: !!previewImage,\n onVisibleChange: () => setPreviewImage(undefined),\n afterOpenChange: (visible) => !visible && setPreviewImage(''),\n }}\n src={previewImage}\n />\n ) : null}\n </Fragment>\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":["getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","result","onerror","error","UploadWrapper","props","onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate","otherProps","_objectWithoutPropertiesLoose","_excluded","imagePreviewAcceptFt","isUndefinedOrNull","_useState","useState","previewImage","setPreviewImage","_useState2","uploadList","setUploadList","fieldNames","_extend","uid","name","url","size","valueList","useMemo","undefined","toArray","fbaHooks","useEffectCustom","errorList","filter","item","newList","forEach","push","responseData","status","isOriginal","length","newErrorList","map","response","concat","handleResponse","fileList","newFileList","hasError","_target","target","_isPlainObject","code","_target3","respData","data","onRequestResultAdapter","_extends","errorMsg","message","onUploadChange","_hooks","useCallbackRef","info","donwList","allDone","flushSync","targetList","targetIndex","findIndex","tempUid","splice","hiddenEmtry","maxCount","beforeUpload","_file","mergeList","uploadListMerge","slice","handlePreview","$return","$error","extension","acceptTarget","lastIndexOf","find","toLocaleLowerCase","preview","originFileObj","then","$await_3","$If_2","call","this","$boundEx","bind","$If_1","openNewWindow","_jsxs","Fragment","children","_jsx","Upload","onPreview","showUploadList","itemRender","originNode","countSign","disabled","className","_classNames","style","height","cloneElement","index","ButtonWrapper","type","icon","onClick","Boolean","UploadTrigger","listType","Image","wrapperStyle","display","visible","onVisibleChange","afterOpenChange","src","_PlusOutlined","marginTop","Button","ghost"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{classNames as r}from"@dimjs/utils/cjs/class-names";import{getUuid as e}from"@flatbiz/utils";import{useDebounceFn as n}from"ahooks";import{useRef as t,useCallback as i,useState as a,useEffect as o}from"react";import{createRoot as u}from"react-dom/client";import d from"simple-mind-map";import{jsx as c}from"react/jsx-runtime";function m(r){var e=t(r);e.current=r;return i((function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++){n[t]=arguments[t]}return e.current==null?void 0:e.current.apply(e,n)}),[])}var l=function i(l){var f=l.data,s=l.className,v=l.style,p=l.renderNode;var w=a(false),h=w[0],y=w[1];var M=t({id:"",mindMap:{}});if(!M.current.id){M.current.id="mindMapContainer-"+e()}o((function(){var r=new d({el:document.getElementById(M.current.id),fit:true,data:f,readonly:true,isUseCustomNodeContent:!!p,customCreateNodeContent:function r(e){var n=p==null?void 0:p(e.nodeData);if(!n)return null;var t=document.createElement("div");var i=n.width,a=n.height,o=n.reactNode;t.style.width=(i||200)+"px";t.style.height=(a||22)+"px";var d=u(t);d.render(o);return t}});M.current.mindMap=r;f&&y(true);return function(){r.destroy()}}),[]);o((function(){var r=M.current.mindMap;if(!r)return;!h&&g("node_tree_render_end",(function(){r.view.fit();y(true)}));r.setData(f||{})}),[f]);o((function(){window.addEventListener("resize",C);return function(){window.removeEventListener("resize",C)}}),[]);var N=n((function(){var r;M==null||(r=M.current.mindMap)==null
|
|
4
|
+
import{classNames as r}from"@dimjs/utils/cjs/class-names";import{getUuid as e}from"@flatbiz/utils";import{useDebounceFn as n}from"ahooks";import{useRef as t,useCallback as i,useState as a,useEffect as o}from"react";import{createRoot as u}from"react-dom/client";import d from"simple-mind-map";import{jsx as c}from"react/jsx-runtime";function m(r){var e=t(r);e.current=r;return i((function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++){n[t]=arguments[t]}return e.current==null?void 0:e.current.apply(e,n)}),[])}var l=function i(l){var f=l.data,s=l.className,v=l.style,p=l.renderNode;var w=a(false),h=w[0],y=w[1];var M=t({id:"",mindMap:{}});if(!M.current.id){M.current.id="mindMapContainer-"+e()}o((function(){var r=new d({el:document.getElementById(M.current.id),fit:true,data:f,readonly:true,isUseCustomNodeContent:!!p,customCreateNodeContent:function r(e){var n=p==null?void 0:p(e.nodeData);if(!n)return null;var t=document.createElement("div");var i=n.width,a=n.height,o=n.reactNode;t.style.width=(i||200)+"px";t.style.height=(a||22)+"px";var d=u(t);d.render(o);return t}});M.current.mindMap=r;f&&y(true);return function(){r.destroy()}}),[]);o((function(){var r=M.current.mindMap;if(!r)return;!h&&g("node_tree_render_end",(function(){r.view.fit();y(true)}));r.setData(f||{})}),[f]);o((function(){window.addEventListener("resize",C);return function(){window.removeEventListener("resize",C)}}),[]);var N=n((function(){var r;M==null||(r=M.current.mindMap)==null||r.resize()})),x=N.run;var C=m(x);var g=m((function(r,e){var n=function t(){e();M.current.mindMap.off(r,n)};M.current.mindMap.on(r,n)}));return c("div",{className:r("x-mind-preview-panel-wrap",s),style:v,children:c("div",{id:M.current.id})})};export{l as XMindPreview};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/x-mind-preview/_hooks/use-callback-ref.tsx","@flatbiz/antd/src/x-mind-preview/x-mind-preview.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nexport function useCallbackRef<T extends (...args) => unknown>(fn: T | undefined): T {\n const ref = useRef(fn);\n\n ref.current = fn;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback(((...args) => ref.current?.(...args)) as T, []);\n}\n","import { classNames } from '@dimjs/utils';\nimport { getUuid } from '@flatbiz/utils';\nimport { useDebounceFn } from 'ahooks';\nimport { useEffect, useRef, useState, type FC } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport MindMap from 'simple-mind-map';\nimport type { TXMindTreeItem } from './type';\nimport './x-mind-preview.less';\nimport { useCallbackRef } from './_hooks/use-callback-ref';\n\nexport interface IXMindPreviewProps {\n data?: TXMindTreeItem;\n className?: string;\n style?: React.CSSProperties;\n /**\n * 自定义节点渲染内容:\n * 默认情况 xmind 会自动计算节点的宽高,\n * 自定义渲染react组件,因为初始拿不到宽高,所以要返回一个节点宽高\n * - 默认宽高 200 22\n * - 返回值为空则使用默认渲染\n * @param node\n * @returns\n */\n renderNode?: (node: TXMindTreeItem) => {\n width?: number;\n height?: number;\n reactNode: React.ReactNode;\n } | void;\n}\nexport const XMindPreview: FC<IXMindPreviewProps> = (props) => {\n const { data, className, style, renderNode } = props;\n const [isInitData, setIsInitData] = useState(false);\n\n const comRef = useRef({\n id: '',\n mindMap: {} as MindMap,\n });\n /** 防止dom id重复,id在一个组件内需要时唯一的 */\n if (!comRef.current.id) {\n comRef.current.id = `mindMapContainer-${getUuid()}`;\n }\n\n useEffect(() => {\n const mindMap = new MindMap({\n el: document.getElementById(comRef.current.id),\n fit: true,\n data,\n readonly: true,\n isUseCustomNodeContent: !!renderNode,\n customCreateNodeContent: (node) => {\n const customRenderOption = renderNode?.(node.nodeData);\n // 默认渲染\n if (!customRenderOption) return null;\n\n const el = document.createElement('div');\n // 自定义渲染\n const { width, height, reactNode } = customRenderOption;\n el.style.width = `${width || 200}px`;\n el.style.height = `${height || 22}px`;\n const root = createRoot(el);\n root.render(reactNode);\n\n return el;\n },\n } as ConstructorParameters<typeof MindMap>[0]);\n comRef.current.mindMap = mindMap;\n data && setIsInitData(true);\n\n return () => {\n mindMap.destroy();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /** 数据更新重置状态 */\n useEffect(() => {\n const { mindMap } = comRef.current;\n if (!mindMap) return;\n\n /** 只有第一次渲染的时候更新画布位置 */\n !isInitData &&\n handleListenOnce('node_tree_render_end', () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n mindMap.view.fit();\n setIsInitData(true);\n });\n mindMap.setData(data || {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n // 屏幕自适应\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const { run: handleResizeDebounce } = useDebounceFn(() => {\n comRef?.current.mindMap?.resize();\n });\n const handleResize = useCallbackRef(handleResizeDebounce);\n\n // 监听一次事件\n const handleListenOnce = useCallbackRef((eventName: string, callback: () => void) => {\n const fun = () => {\n callback();\n comRef.current.mindMap.off(eventName, fun);\n };\n comRef.current.mindMap.on(eventName, fun);\n });\n\n return (\n <div className={classNames('x-mind-preview-panel-wrap', className)} style={style}>\n <div id={comRef.current.id}></div>\n </div>\n );\n};\n"],"names":["useCallbackRef","fn","ref","useRef","current","useCallback","_len","arguments","length","args","Array","_key","apply","XMindPreview","props","data","className","style","renderNode","_useState","useState","isInitData","setIsInitData","comRef","id","mindMap","getUuid","useEffect","MindMap","el","document","getElementById","fit","readonly","isUseCustomNodeContent","customCreateNodeContent","node","customRenderOption","nodeData","createElement","width","height","reactNode","root","createRoot","render","destroy","handleListenOnce","view","setData","window","addEventListener","handleResize","removeEventListener","_useDebounceFn","useDebounceFn","_comRef$current$mindM","resize","handleResizeDebounce","run","eventName","callback","fun","off","on","_jsx","_classNames","children"],"mappings":";4UAEO,SAASA,EAA+CC,GAC7D,IAAMC,EAAMC,EAAOF,GAEnBC,EAAIE,QAAUH,EAGd,OAAOI,GAAa,WAAA,IAAA,IAAAC,EAAAC,UAAAC,OAAIC,EAAIC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAA,CAAJF,EAAIE,GAAAJ,UAAAI,EAAA,CAAA,OAAKT,EAAIE,SAAO,UAAA,EAAXF,EAAIE,QAAOQ,MAAXV,EAAiBO,EAAK,GAAQ,GACjE,KCoBaI,EAAuC,SAAvCA,EAAwCC,GACnD,IAAQC,EAAuCD,EAAvCC,KAAMC,EAAiCF,EAAjCE,UAAWC,EAAsBH,EAAtBG,MAAOC,EAAeJ,EAAfI,WAChC,IAAAC,EAAoCC,EAAS,OAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAEhC,IAAMI,EAASpB,EAAO,CACpBqB,GAAI,GACJC,QAAS,CAAC,IAGZ,IAAKF,EAAOnB,QAAQoB,GAAI,CACtBD,EAAOnB,QAAQoB,GAAyBE,oBAAAA,GAC1C,CAEAC,GAAU,WACR,IAAMF,EAAU,IAAIG,EAAQ,CAC1BC,GAAIC,SAASC,eAAeR,EAAOnB,QAAQoB,IAC3CQ,IAAK,KACLjB,KAAAA,EACAkB,SAAU,KACVC,yBAA0BhB,EAC1BiB,wBAAyB,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/x-mind-preview/_hooks/use-callback-ref.tsx","@flatbiz/antd/src/x-mind-preview/x-mind-preview.tsx"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nexport function useCallbackRef<T extends (...args) => unknown>(fn: T | undefined): T {\n const ref = useRef(fn);\n\n ref.current = fn;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback(((...args) => ref.current?.(...args)) as T, []);\n}\n","import { classNames } from '@dimjs/utils';\nimport { getUuid } from '@flatbiz/utils';\nimport { useDebounceFn } from 'ahooks';\nimport { useEffect, useRef, useState, type FC } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport MindMap from 'simple-mind-map';\nimport type { TXMindTreeItem } from './type';\nimport './x-mind-preview.less';\nimport { useCallbackRef } from './_hooks/use-callback-ref';\n\nexport interface IXMindPreviewProps {\n data?: TXMindTreeItem;\n className?: string;\n style?: React.CSSProperties;\n /**\n * 自定义节点渲染内容:\n * 默认情况 xmind 会自动计算节点的宽高,\n * 自定义渲染react组件,因为初始拿不到宽高,所以要返回一个节点宽高\n * - 默认宽高 200 22\n * - 返回值为空则使用默认渲染\n * @param node\n * @returns\n */\n renderNode?: (node: TXMindTreeItem) => {\n width?: number;\n height?: number;\n reactNode: React.ReactNode;\n } | void;\n}\nexport const XMindPreview: FC<IXMindPreviewProps> = (props) => {\n const { data, className, style, renderNode } = props;\n const [isInitData, setIsInitData] = useState(false);\n\n const comRef = useRef({\n id: '',\n mindMap: {} as MindMap,\n });\n /** 防止dom id重复,id在一个组件内需要时唯一的 */\n if (!comRef.current.id) {\n comRef.current.id = `mindMapContainer-${getUuid()}`;\n }\n\n useEffect(() => {\n const mindMap = new MindMap({\n el: document.getElementById(comRef.current.id),\n fit: true,\n data,\n readonly: true,\n isUseCustomNodeContent: !!renderNode,\n customCreateNodeContent: (node) => {\n const customRenderOption = renderNode?.(node.nodeData);\n // 默认渲染\n if (!customRenderOption) return null;\n\n const el = document.createElement('div');\n // 自定义渲染\n const { width, height, reactNode } = customRenderOption;\n el.style.width = `${width || 200}px`;\n el.style.height = `${height || 22}px`;\n const root = createRoot(el);\n root.render(reactNode);\n\n return el;\n },\n } as ConstructorParameters<typeof MindMap>[0]);\n comRef.current.mindMap = mindMap;\n data && setIsInitData(true);\n\n return () => {\n mindMap.destroy();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /** 数据更新重置状态 */\n useEffect(() => {\n const { mindMap } = comRef.current;\n if (!mindMap) return;\n\n /** 只有第一次渲染的时候更新画布位置 */\n !isInitData &&\n handleListenOnce('node_tree_render_end', () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n mindMap.view.fit();\n setIsInitData(true);\n });\n mindMap.setData(data || {});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data]);\n\n // 屏幕自适应\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const { run: handleResizeDebounce } = useDebounceFn(() => {\n comRef?.current.mindMap?.resize();\n });\n const handleResize = useCallbackRef(handleResizeDebounce);\n\n // 监听一次事件\n const handleListenOnce = useCallbackRef((eventName: string, callback: () => void) => {\n const fun = () => {\n callback();\n comRef.current.mindMap.off(eventName, fun);\n };\n comRef.current.mindMap.on(eventName, fun);\n });\n\n return (\n <div className={classNames('x-mind-preview-panel-wrap', className)} style={style}>\n <div id={comRef.current.id}></div>\n </div>\n );\n};\n"],"names":["useCallbackRef","fn","ref","useRef","current","useCallback","_len","arguments","length","args","Array","_key","apply","XMindPreview","props","data","className","style","renderNode","_useState","useState","isInitData","setIsInitData","comRef","id","mindMap","getUuid","useEffect","MindMap","el","document","getElementById","fit","readonly","isUseCustomNodeContent","customCreateNodeContent","node","customRenderOption","nodeData","createElement","width","height","reactNode","root","createRoot","render","destroy","handleListenOnce","view","setData","window","addEventListener","handleResize","removeEventListener","_useDebounceFn","useDebounceFn","_comRef$current$mindM","resize","handleResizeDebounce","run","eventName","callback","fun","off","on","_jsx","_classNames","children"],"mappings":";4UAEO,SAASA,EAA+CC,GAC7D,IAAMC,EAAMC,EAAOF,GAEnBC,EAAIE,QAAUH,EAGd,OAAOI,GAAa,WAAA,IAAA,IAAAC,EAAAC,UAAAC,OAAIC,EAAIC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAA,CAAJF,EAAIE,GAAAJ,UAAAI,EAAA,CAAA,OAAKT,EAAIE,SAAO,UAAA,EAAXF,EAAIE,QAAOQ,MAAXV,EAAiBO,EAAK,GAAQ,GACjE,KCoBaI,EAAuC,SAAvCA,EAAwCC,GACnD,IAAQC,EAAuCD,EAAvCC,KAAMC,EAAiCF,EAAjCE,UAAWC,EAAsBH,EAAtBG,MAAOC,EAAeJ,EAAfI,WAChC,IAAAC,EAAoCC,EAAS,OAAtCC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAEhC,IAAMI,EAASpB,EAAO,CACpBqB,GAAI,GACJC,QAAS,CAAC,IAGZ,IAAKF,EAAOnB,QAAQoB,GAAI,CACtBD,EAAOnB,QAAQoB,GAAyBE,oBAAAA,GAC1C,CAEAC,GAAU,WACR,IAAMF,EAAU,IAAIG,EAAQ,CAC1BC,GAAIC,SAASC,eAAeR,EAAOnB,QAAQoB,IAC3CQ,IAAK,KACLjB,KAAAA,EACAkB,SAAU,KACVC,yBAA0BhB,EAC1BiB,wBAAyB,SAAzBA,EAA0BC,GACxB,IAAMC,EAAqBnB,GAAU,UAAA,EAAVA,EAAakB,EAAKE,UAE7C,IAAKD,EAAoB,OAAO,KAEhC,IAAMR,EAAKC,SAASS,cAAc,OAElC,IAAQC,EAA6BH,EAA7BG,MAAOC,EAAsBJ,EAAtBI,OAAQC,EAAcL,EAAdK,UACvBb,EAAGZ,MAAMuB,OAAWA,GAAS,KAAO,KACpCX,EAAGZ,MAAMwB,QAAYA,GAAU,IAAM,KACrC,IAAME,EAAOC,EAAWf,GACxBc,EAAKE,OAAOH,GAEZ,OAAOb,CACT,IAEFN,EAAOnB,QAAQqB,QAAUA,EACzBV,GAAQO,EAAc,MAEtB,OAAO,WACLG,EAAQqB,UAGX,GAAE,IAGHnB,GAAU,WACR,IAAQF,EAAYF,EAAOnB,QAAnBqB,QACR,IAAKA,EAAS,QAGbJ,GACC0B,EAAiB,wBAAwB,WAGvCtB,EAAQuB,KAAKhB,MACbV,EAAc,KAChB,IACFG,EAAQwB,QAAQlC,GAAQ,CAAA,EAE1B,GAAG,CAACA,IAGJY,GAAU,WACRuB,OAAOC,iBAAiB,SAAUC,GAClC,OAAO,WACLF,OAAOG,oBAAoB,SAAUD,GAGxC,GAAE,IACH,IAAAE,EAAsCC,GAAc,WAAM,IAAAC,EACxDjC,GAAMiC,OAAAA,EAANjC,EAAQnB,QAAQqB,UAAhB+B,MAAAA,EAAyBC,QAC3B,IAFaC,EAAoBJ,EAAzBK,IAGR,IAAMP,EAAepD,EAAe0D,GAGpC,IAAMX,EAAmB/C,GAAe,SAAC4D,EAAmBC,GAC1D,IAAMC,EAAM,SAANA,IACJD,IACAtC,EAAOnB,QAAQqB,QAAQsC,IAAIH,EAAWE,IAExCvC,EAAOnB,QAAQqB,QAAQuC,GAAGJ,EAAWE,EACvC,IAEA,OACEG,EAAA,MAAA,CAAKjD,UAAWkD,EAAW,4BAA6BlD,GAAYC,MAAOA,EAAMkD,SAC/EF,EAAA,MAAA,CAAKzC,GAAID,EAAOnB,QAAQoB,MAG9B"}
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
/// <reference types="prop-types" />
|
|
3
|
-
/// <reference types="scheduler" />
|
|
4
2
|
|
|
5
3
|
import { API, ModelType } from '@dimjs/model';
|
|
6
4
|
import { DateFormatType, LabelValueItem, TAny, TNoopDefine, TPlainObject } from '@flatbiz/utils';
|
|
@@ -751,23 +749,23 @@ export declare const CascaderWrapper: import("react").ForwardRefExoticComponent<
|
|
|
751
749
|
* ```
|
|
752
750
|
*/
|
|
753
751
|
fieldNames?: {
|
|
754
|
-
list?: string
|
|
755
|
-
label?: string
|
|
756
|
-
value?: string
|
|
757
|
-
children?: string
|
|
758
|
-
}
|
|
752
|
+
list?: string;
|
|
753
|
+
label?: string;
|
|
754
|
+
value?: string;
|
|
755
|
+
children?: string;
|
|
756
|
+
};
|
|
759
757
|
/**
|
|
760
758
|
* 请求服务需求的数据,当设置`selectorList`后无效果
|
|
761
759
|
*/
|
|
762
|
-
serviceConfig?: CascaderWrapperServiceConfig
|
|
763
|
-
onLabelRenderAdapter?: (
|
|
764
|
-
onSelectorListChange?: (
|
|
760
|
+
serviceConfig?: CascaderWrapperServiceConfig;
|
|
761
|
+
onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;
|
|
762
|
+
onSelectorListChange?: (dataList: TPlainObject[]) => void;
|
|
765
763
|
/**
|
|
766
764
|
* 是否动态加载选项
|
|
767
765
|
*/
|
|
768
|
-
isDynamicLoad?: boolean
|
|
769
|
-
value?: string | number |
|
|
770
|
-
onChange?: (
|
|
766
|
+
isDynamicLoad?: boolean;
|
|
767
|
+
value?: string | number | Array<string | number> | LabelValueItem | LabelValueItem[];
|
|
768
|
+
onChange?: (value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void;
|
|
771
769
|
/** 配置数据查询状态描述,比如有依赖字段描述 */
|
|
772
770
|
requestMessageConfig?: TRequestStatusProps["messageConfig"];
|
|
773
771
|
/**
|
|
@@ -777,9 +775,9 @@ export declare const CascaderWrapper: import("react").ForwardRefExoticComponent<
|
|
|
777
775
|
* 2. all 响应选中的多级数据
|
|
778
776
|
* ```
|
|
779
777
|
*/
|
|
780
|
-
responseType?: "
|
|
778
|
+
responseType?: "last" | "all";
|
|
781
779
|
/** 响应数据是否包含label、value */
|
|
782
|
-
labelInValue?: boolean
|
|
780
|
+
labelInValue?: boolean;
|
|
783
781
|
} & import("react").RefAttributes<CascaderWrapperRefApi>>;
|
|
784
782
|
export interface CommonPropsWithChildren<S extends TPlainObject = TPlainObject> {
|
|
785
783
|
className?: string;
|
|
@@ -815,7 +813,7 @@ export type CheckListItemProps = {
|
|
|
815
813
|
className?: string;
|
|
816
814
|
style?: CSSProperties;
|
|
817
815
|
};
|
|
818
|
-
export declare const CheckList: (<T extends "
|
|
816
|
+
export declare const CheckList: (<T extends "multi" | "radio">(props: CheckListProps<T>) => import("react/jsx-runtime").JSX.Element) & {
|
|
819
817
|
Item: (props: CheckListItemProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null;
|
|
820
818
|
};
|
|
821
819
|
export type CheckboxWrapperProps = Omit<CheckboxProps, "checked" | "defaultChecked" | "onChange"> & {
|
|
@@ -3436,6 +3434,7 @@ export type FbaAppModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContai
|
|
|
3436
3434
|
/** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */
|
|
3437
3435
|
bodyHeight?: number;
|
|
3438
3436
|
};
|
|
3437
|
+
export type FbaAppConfirmProps = FbaAppModalProps;
|
|
3439
3438
|
export type FbaAppAlertProps = Omit<FbaAppModalProps, "onOk" | "cancelHidden" | "cancelButtonProps" | "onCancel" | "onClick"> & {
|
|
3440
3439
|
onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;
|
|
3441
3440
|
};
|
|
@@ -3455,7 +3454,7 @@ export declare const FbaApp: ((props: {
|
|
|
3455
3454
|
};
|
|
3456
3455
|
close: () => void;
|
|
3457
3456
|
useAppDialogDrawer: () => {
|
|
3458
|
-
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject
|
|
3457
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
|
|
3459
3458
|
};
|
|
3460
3459
|
};
|
|
3461
3460
|
};
|
|
@@ -3466,7 +3465,7 @@ export declare const FbaApp: ((props: {
|
|
|
3466
3465
|
};
|
|
3467
3466
|
close: () => void;
|
|
3468
3467
|
useAppDialogDrawer: () => {
|
|
3469
|
-
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject
|
|
3468
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
|
|
3470
3469
|
};
|
|
3471
3470
|
};
|
|
3472
3471
|
};
|
|
@@ -3478,7 +3477,7 @@ export declare const FbaApp: ((props: {
|
|
|
3478
3477
|
};
|
|
3479
3478
|
close: () => void;
|
|
3480
3479
|
useAppDialogModal: () => {
|
|
3481
|
-
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject
|
|
3480
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
|
|
3482
3481
|
};
|
|
3483
3482
|
};
|
|
3484
3483
|
};
|
|
@@ -3489,14 +3488,14 @@ export declare const FbaApp: ((props: {
|
|
|
3489
3488
|
};
|
|
3490
3489
|
close: () => void;
|
|
3491
3490
|
useAppDialogModal: () => {
|
|
3492
|
-
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject
|
|
3491
|
+
rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void;
|
|
3493
3492
|
};
|
|
3494
3493
|
};
|
|
3495
3494
|
};
|
|
3496
3495
|
/** 不支持多次弹框 */
|
|
3497
3496
|
useDialogConfirm: () => {
|
|
3498
3497
|
appDialogConfirm: {
|
|
3499
|
-
open: (data:
|
|
3498
|
+
open: (data: FbaAppConfirmProps) => {
|
|
3500
3499
|
onClose: () => void;
|
|
3501
3500
|
};
|
|
3502
3501
|
close: () => void;
|
|
@@ -3514,7 +3513,7 @@ export declare const FbaApp: ((props: {
|
|
|
3514
3513
|
/** 不支持多次弹框 */
|
|
3515
3514
|
useDialogLoading: () => {
|
|
3516
3515
|
appDialogLoading: {
|
|
3517
|
-
open: (data?: FbaAppLoadingProps
|
|
3516
|
+
open: (data?: FbaAppLoadingProps) => {
|
|
3518
3517
|
onClose: () => void;
|
|
3519
3518
|
};
|
|
3520
3519
|
close: () => void;
|
|
@@ -3539,24 +3538,24 @@ export declare const fbaHooks: {
|
|
|
3539
3538
|
useEffectCustom: (fn: import("react").EffectCallback, deps: import("react").DependencyList) => void;
|
|
3540
3539
|
useEffectCustomAsync: (fn: () => Promise<void>, deps: import("react").DependencyList) => void;
|
|
3541
3540
|
useThemeToken: () => import("antd").GlobalToken;
|
|
3542
|
-
useArrayChange: <T>(defautDataList: T
|
|
3541
|
+
useArrayChange: <T>(defautDataList: Array<T>, forceUpdate?: boolean) => readonly [
|
|
3543
3542
|
T[],
|
|
3544
3543
|
{
|
|
3545
|
-
add: (dataItem: T | T
|
|
3544
|
+
add: (dataItem: T | Array<T>, isUnshift?: boolean) => void;
|
|
3546
3545
|
update: (index: number, dataItem: T) => void;
|
|
3547
3546
|
delete: (index: number) => T[];
|
|
3548
|
-
resetList: (dataList: T
|
|
3547
|
+
resetList: (dataList: Array<T>) => void;
|
|
3549
3548
|
getList: () => T[];
|
|
3550
3549
|
}
|
|
3551
3550
|
];
|
|
3552
3551
|
usePrevious: typeof usePrevious;
|
|
3553
3552
|
useResponsivePoint: () => string | undefined;
|
|
3554
|
-
useSafeState: <S extends unknown>(initialState?: S | (() => S)
|
|
3553
|
+
useSafeState: <S extends undefined | unknown>(initialState?: S | (() => S)) => [
|
|
3555
3554
|
S,
|
|
3556
3555
|
import("react").Dispatch<import("react").SetStateAction<S>>
|
|
3557
3556
|
];
|
|
3558
|
-
useMemoCustom: <
|
|
3559
|
-
useCopyRemoveSpace: (props?: CopyRemoveSpaceProps
|
|
3557
|
+
useMemoCustom: <T>(fn: () => T, deps: import("react").DependencyList) => T;
|
|
3558
|
+
useCopyRemoveSpace: (props?: CopyRemoveSpaceProps) => void;
|
|
3560
3559
|
};
|
|
3561
3560
|
declare function attachPropertiesToComponent<C, P extends Record<string, unknown>>(component: C, properties: P): C & P;
|
|
3562
3561
|
export declare const fbaUtils: {
|
|
@@ -4391,13 +4390,13 @@ export type MentionsWrapperProps = Omit<MentionProps, "value" | "onChange" | "on
|
|
|
4391
4390
|
*
|
|
4392
4391
|
*/
|
|
4393
4392
|
export declare const MentionsWrapper: import("react").ForwardRefExoticComponent<Omit<MentionProps, "split" | "id" | "value" | "prefix" | "options" | "ref" | "onChange" | "onClick" | "onCursorChange" | "validateSearch"> & {
|
|
4394
|
-
value?: string
|
|
4395
|
-
onChange?: (
|
|
4393
|
+
value?: string;
|
|
4394
|
+
onChange?: (value?: string) => void;
|
|
4396
4395
|
/** 设置列表提示关键字,例如:@、$等 */
|
|
4397
|
-
prefix?: string | string[]
|
|
4398
|
-
onClick?: (
|
|
4396
|
+
prefix?: string | string[];
|
|
4397
|
+
onClick?: (value?: string) => void;
|
|
4399
4398
|
/** 光标移动回调 */
|
|
4400
|
-
onCursorChange?: (
|
|
4399
|
+
onCursorChange?: (position: number) => void;
|
|
4401
4400
|
/**
|
|
4402
4401
|
* 输入框内整体关键词列表
|
|
4403
4402
|
* ```
|
|
@@ -4407,7 +4406,7 @@ export declare const MentionsWrapper: import("react").ForwardRefExoticComponent<
|
|
|
4407
4406
|
* 3. 删除时,整体删除
|
|
4408
4407
|
* ```
|
|
4409
4408
|
*/
|
|
4410
|
-
options?: string[]
|
|
4409
|
+
options?: string[];
|
|
4411
4410
|
} & import("react").RefAttributes<MentionsWrapperRef>>;
|
|
4412
4411
|
export type ParamItem = {
|
|
4413
4412
|
/** 模版参数code */
|
|
@@ -4568,23 +4567,23 @@ export declare const PaginationWrapper: (props: PaginationProps) => import("reac
|
|
|
4568
4567
|
export declare const Pdf: {
|
|
4569
4568
|
Document: (props: {
|
|
4570
4569
|
pdfUrl: string;
|
|
4571
|
-
onLoadError?: (
|
|
4572
|
-
onLoadSuccess?: (
|
|
4570
|
+
onLoadError?: (error: any) => void;
|
|
4571
|
+
onLoadSuccess?: (pdfInstance: any) => void;
|
|
4573
4572
|
children: import("react").ReactNode;
|
|
4574
|
-
error?: import("react").ReactElement
|
|
4575
|
-
className?: string
|
|
4573
|
+
error?: import("react").ReactElement | ((error: any) => import("react").ReactElement);
|
|
4574
|
+
className?: string;
|
|
4576
4575
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
4577
4576
|
Page: (props: {
|
|
4578
|
-
onRenderSuccess?: (
|
|
4579
|
-
onRenderError?: (
|
|
4580
|
-
width?: number
|
|
4581
|
-
scale?: number
|
|
4582
|
-
gap?: number
|
|
4577
|
+
onRenderSuccess?: (pageInstance: any, pdfInstance: any) => void;
|
|
4578
|
+
onRenderError?: (error: any, pdfInstance: any) => void;
|
|
4579
|
+
width?: number;
|
|
4580
|
+
scale?: number;
|
|
4581
|
+
gap?: number;
|
|
4583
4582
|
pageNumber: number;
|
|
4584
4583
|
children?: import("react").ReactNode;
|
|
4585
|
-
onClick?: (
|
|
4586
|
-
className?: string
|
|
4587
|
-
style?: import("react").CSSProperties
|
|
4584
|
+
onClick?: (e: any) => void;
|
|
4585
|
+
className?: string;
|
|
4586
|
+
style?: import("react").CSSProperties;
|
|
4588
4587
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
4589
4588
|
};
|
|
4590
4589
|
export type PdfPreviewProps = {
|
|
@@ -4649,27 +4648,12 @@ export declare const preDefinedClassName: {
|
|
|
4649
4648
|
label_width_130: string;
|
|
4650
4649
|
label_width_140: string;
|
|
4651
4650
|
label_width_150: string;
|
|
4652
|
-
label_width_160: string;
|
|
4653
|
-
* 获取针对Form下全部label布局的预设className,包括
|
|
4654
|
-
* ```
|
|
4655
|
-
* 1. formLabel宽度
|
|
4656
|
-
* 2. formLabel对齐方式
|
|
4657
|
-
* 3. form label value的竖直布局
|
|
4658
|
-
* 4. formItem之间的间距
|
|
4659
|
-
* ```
|
|
4660
|
-
*/
|
|
4651
|
+
label_width_160: string;
|
|
4661
4652
|
label_width_170: string;
|
|
4662
4653
|
label_width_180: string;
|
|
4663
4654
|
label_width_190: string;
|
|
4664
4655
|
label_width_200: string;
|
|
4665
|
-
label_width_auto: string;
|
|
4666
|
-
* 获取针对单个FormItem label布局的预设className,包括
|
|
4667
|
-
* ```
|
|
4668
|
-
* 1. formLabel宽度
|
|
4669
|
-
* 2. formLabel对齐方式
|
|
4670
|
-
* 3. form label value的竖直布局
|
|
4671
|
-
* ```
|
|
4672
|
-
*/
|
|
4656
|
+
label_width_auto: string;
|
|
4673
4657
|
label_align_left: string;
|
|
4674
4658
|
label_align_right: string;
|
|
4675
4659
|
label_value_vertical: string;
|
|
@@ -6225,6 +6209,28 @@ export type TreeWrapperProps = Omit<TreeProps, "treeData" | "onExpand" | "select
|
|
|
6225
6209
|
* 自定义搜索规则
|
|
6226
6210
|
*/
|
|
6227
6211
|
customSearchRule?: (nodeData: TPlainObject, searchValue?: string) => boolean;
|
|
6212
|
+
/**
|
|
6213
|
+
* 点击父节点 是否切换折叠
|
|
6214
|
+
* ```
|
|
6215
|
+
* 1. 设置 titleRender 后,此配置失效
|
|
6216
|
+
* ```
|
|
6217
|
+
*/
|
|
6218
|
+
clickParentNodeToggleExpand?: boolean;
|
|
6219
|
+
/**
|
|
6220
|
+
* 禁用节点选中
|
|
6221
|
+
* ```
|
|
6222
|
+
* 1. checkable = true,此配置失效
|
|
6223
|
+
* 2. 在未设置节点 disabled 属性情况下,满足此配置不会触发onChange事件
|
|
6224
|
+
* ```
|
|
6225
|
+
*/
|
|
6226
|
+
disableNodeSelect?: (item: TPlainObject) => boolean;
|
|
6227
|
+
/**
|
|
6228
|
+
* 是否必选,最后一个不能取消
|
|
6229
|
+
* ```
|
|
6230
|
+
* 1. 设置 checkable = true 时无效
|
|
6231
|
+
* ```
|
|
6232
|
+
*/
|
|
6233
|
+
required?: boolean;
|
|
6228
6234
|
};
|
|
6229
6235
|
export type TreeWrapperRefApi = {
|
|
6230
6236
|
onClearSelectorList: () => void;
|
|
@@ -6334,6 +6340,11 @@ export type TreeSelectorServiceConfig = {
|
|
|
6334
6340
|
export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys" | "treeData" | "loading" | "onTreeExpand" | "onChange" | "value" | "fieldNames" | "defaultValue" | "treeDataSimpleMode" | "onSearch"> & {
|
|
6335
6341
|
modelKey: string;
|
|
6336
6342
|
fieldNames?: {
|
|
6343
|
+
/**
|
|
6344
|
+
* 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'
|
|
6345
|
+
* 2. 配置 serviceConfig.onRequestResultAdapter 后此配置失效
|
|
6346
|
+
*/
|
|
6347
|
+
list?: string;
|
|
6337
6348
|
label?: string;
|
|
6338
6349
|
value?: string;
|
|
6339
6350
|
children?: string;
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
function t(){t=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var e in n){if(Object.prototype.hasOwnProperty.call(n,e)){t[e]=n[e]}}}return t};return t.apply(this,arguments)}function r(t,r){t.prototype=Object.create(r.prototype);t.prototype.constructor=t;n(t,r)}function n(t,r){n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function t(r,n){r.__proto__=n;return r};return n(t,r)}function e(t,r){if(t==null)return{};var n={};var e=Object.keys(t);var o,c;for(c=0;c<e.length;c++){o=e[c];if(r.indexOf(o)>=0)continue;n[o]=t[o]}return n}export{t as _,e as a,r as b};
|
|
3
|
-
//# sourceMappingURL=_rollupPluginBabelHelpers-a0769acd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_rollupPluginBabelHelpers-a0769acd.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|