linkmore-design
Version:
🌈 🚀lm组件库。🚀
165 lines (159 loc) • 4.7 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _UploadRoot = _interopRequireDefault(require("./wrapper/UploadRoot"));
var _DisabledContext = _interopRequireDefault(require("../config-provider/DisabledContext"));
var _LocaleReceiver = _interopRequireDefault(require("../locale-provider/LocaleReceiver"));
const LmUpload = ({
fileConfig,
fileNames,
components,
ossConfig,
...resetProps
}, ref) => {
const defaultRef = (0, _react.useRef)(null);
const disabled = _react.default.useContext(_DisabledContext.default);
// 仅在初始化触发一次
const initConfig = (0, _react.useMemo)(() => {
return {
// 文件参数配置: 存储时的数据
fileConfig: fileConfigProps => {
const {
file,
timestamp,
fileName,
filePath,
shortlink,
url,
realFileName
} = fileConfigProps;
return {
uid: timestamp,
fileTypeCode: file.type,
fileTypeName: file.type,
fileName,
// 上传时的文件名
realFileName: realFileName || file.name,
// oss的文件名
fileSize: file.size,
internalUrl: shortlink,
externalUrl: shortlink,
filePath,
seq: 0,
url,
status: 'done',
...fileConfig?.(fileConfigProps)
};
},
// 读取字段配置: 读取存储的参数字段
fileNames: {
uid: 'uid',
fileTypeCode: 'fileTypeCode',
fileTypeName: 'fileTypeName',
fileName: 'fileName',
// 上传时的文件名
realFileName: 'realFileName',
// oss的文件名
fileSize: 'fileSize',
internalUrl: 'internalUrl',
externalUrl: 'externalUrl',
filePath: 'filePath',
seq: 'seq',
url: 'url',
status: 'status',
...fileNames
},
// 初始化
components: {
wrapper: null,
// 结构定义
...(components || {})
}
};
}, []);
const defaultProps = {
size: 100,
// 宽高大小 仅 listType 为 'card' 时有效
fileSize: 10,
// 限制的文件大小 M
fileSizeType: 'M',
// 文件大小类型 M/Mb/K/kb
uid: 'fileName',
// 文件列表的key字段
accept: '',
// 接收上传的文件类型
type: ['jpg', 'jpeg', 'png'],
// 文件类型
listType: 'card',
// 上传列表的内建样式: text/card/picture
readOnly: false,
// 是否只读
disabled: disabled || false,
// 是否禁用
showUploadList: true,
// 是否展示文件列表
fileList: null,
// 受控文件列表
defaultFileList: [],
// 默认已经上传的文件列表
limit: null,
// 允许上传的最大数量
maxCount: null,
// 允许上传的最大数量
children: null,
itemRender: null,
// 自定义文件列表
enabledPreview: true,
// 是否可预览
enabledCrop: false,
// 是否剪裁
enableDrag: false,
// 是否可拖拽
multiple: false,
// 是否支持多选
enabledOss: false,
// 是否开启OSS上传
// oss配置
ossConfig: () => ({
dir: '/BizFile/4595/Supplier/',
// 文件路径
region: 'oss-cn-hangzhou',
// 所在地域
accessKeyId: '',
// ak
accessKeySecret: '',
// aks
stsToken: '',
// st
bucket: 'linkmore-scm-test',
// Bucket名称
shortlink: 'https://linkmore-scm-test.oss-cn-hangzhou.aliyuncs.com',
// 域名前缀
...(typeof ossConfig === 'function' ? ossConfig() : ossConfig)
}),
// 根据返回值决定是否可删除
onRemove: () => true,
/** 是否开启粘贴快捷上传 */
onPasteUpload: false,
/** 是否开启设置主图 */
showMaster: false,
...resetProps
};
return /*#__PURE__*/_react.default.createElement(_LocaleReceiver.default, {
componentName: "LmUpload"
}, contextLocale => {
return /*#__PURE__*/_react.default.createElement(_UploadRoot.default, (0, _extends2.default)({
ref: ref || defaultRef
}, initConfig, defaultProps, {
locale: contextLocale
}));
});
};
var _default = /*#__PURE__*/(0, _react.forwardRef)(LmUpload);
exports.default = _default;