142 lines
6.5 KiB
JavaScript
142 lines
6.5 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
|
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
var _icons = require("@ant-design/icons");
|
|
var _antd = require("antd");
|
|
var _react = _interopRequireWildcard(require("react"));
|
|
var _EditOrReadOnlyContext = require("../../BaseForm/EditOrReadOnlyContext");
|
|
var _createField = require("../../BaseForm/createField");
|
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
var _excluded = ["fieldProps", "action", "accept", "listType", "title", "max", "icon", "buttonProps", "disabled", "proFieldProps", "imageProps"];
|
|
var getBase64 = function getBase64(file) {
|
|
return new Promise(function (resolve, reject) {
|
|
var reader = new FileReader();
|
|
reader.readAsDataURL(file);
|
|
reader.onload = function () {
|
|
return resolve(reader.result);
|
|
};
|
|
reader.onerror = function (error) {
|
|
return reject(error);
|
|
};
|
|
});
|
|
};
|
|
/**
|
|
* 上传按钮组件
|
|
*
|
|
* @param
|
|
*/
|
|
var BaseProFormUploadButton = function BaseProFormUploadButton(_ref, ref) {
|
|
var _fieldProps$name;
|
|
var fieldProps = _ref.fieldProps,
|
|
action = _ref.action,
|
|
accept = _ref.accept,
|
|
listType = _ref.listType,
|
|
_ref$title = _ref.title,
|
|
title = _ref$title === void 0 ? '单击上传' : _ref$title,
|
|
max = _ref.max,
|
|
_ref$icon = _ref.icon,
|
|
icon = _ref$icon === void 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.UploadOutlined, {}) : _ref$icon,
|
|
buttonProps = _ref.buttonProps,
|
|
disabled = _ref.disabled,
|
|
proFieldProps = _ref.proFieldProps,
|
|
imageProps = _ref.imageProps,
|
|
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
var _useState = (0, _react.useState)(false),
|
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
previewOpen = _useState2[0],
|
|
setPreviewOpen = _useState2[1];
|
|
var _useState3 = (0, _react.useState)(''),
|
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
previewImage = _useState4[0],
|
|
setPreviewImage = _useState4[1];
|
|
var value = (0, _react.useMemo)(function () {
|
|
var _restProps$fileList;
|
|
return (_restProps$fileList = restProps.fileList) !== null && _restProps$fileList !== void 0 ? _restProps$fileList : restProps.value;
|
|
}, [restProps.fileList, restProps.value]);
|
|
var handlePreview = /*#__PURE__*/function () {
|
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(file) {
|
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
while (1) switch (_context.prev = _context.next) {
|
|
case 0:
|
|
if (!(!file.url && !file.preview)) {
|
|
_context.next = 4;
|
|
break;
|
|
}
|
|
_context.next = 3;
|
|
return getBase64(file.originFileObj);
|
|
case 3:
|
|
file.preview = _context.sent;
|
|
case 4:
|
|
setPreviewImage(file.url || file.preview);
|
|
setPreviewOpen(true);
|
|
case 6:
|
|
case "end":
|
|
return _context.stop();
|
|
}
|
|
}, _callee);
|
|
}));
|
|
return function handlePreview(_x) {
|
|
return _ref2.apply(this, arguments);
|
|
};
|
|
}();
|
|
var modeContext = (0, _react.useContext)(_EditOrReadOnlyContext.EditOrReadOnlyContext);
|
|
var mode = (proFieldProps === null || proFieldProps === void 0 ? void 0 : proFieldProps.mode) || modeContext.mode || 'edit';
|
|
|
|
// 如果配置了 max ,并且 超过了文件列表的大小,就不展示按钮
|
|
var showUploadButton = (max === undefined || !value || (value === null || value === void 0 ? void 0 : value.length) < max) && mode !== 'read';
|
|
var isPictureCard = (listType !== null && listType !== void 0 ? listType : fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.listType) === 'picture-card';
|
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Upload, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
action: action,
|
|
accept: accept,
|
|
ref: ref,
|
|
listType: listType || 'picture',
|
|
fileList: value,
|
|
onPreview: handlePreview
|
|
}, fieldProps), {}, {
|
|
name: (_fieldProps$name = fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.name) !== null && _fieldProps$name !== void 0 ? _fieldProps$name : 'file',
|
|
onChange: function onChange(info) {
|
|
var _fieldProps$onChange;
|
|
fieldProps === null || fieldProps === void 0 || (_fieldProps$onChange = fieldProps.onChange) === null || _fieldProps$onChange === void 0 || _fieldProps$onChange.call(fieldProps, info);
|
|
},
|
|
children: showUploadButton && (isPictureCard ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
|
|
children: [icon, " ", title]
|
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_antd.Button, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
disabled: disabled || (fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.disabled)
|
|
}, buttonProps), {}, {
|
|
children: [icon, title]
|
|
})))
|
|
})), previewImage && /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Image, (0, _objectSpread2.default)((0, _objectSpread2.default)({
|
|
wrapperStyle: {
|
|
display: 'none'
|
|
}
|
|
}, imageProps), {}, {
|
|
preview: (0, _objectSpread2.default)({
|
|
visible: previewOpen,
|
|
onVisibleChange: function onVisibleChange(visible) {
|
|
return setPreviewOpen(visible);
|
|
},
|
|
afterOpenChange: function afterOpenChange(visible) {
|
|
return !visible && setPreviewImage('');
|
|
}
|
|
}, (imageProps === null || imageProps === void 0 ? void 0 : imageProps.preview) || {}),
|
|
src: previewImage
|
|
}))]
|
|
});
|
|
};
|
|
var ProFormUploadButton = (0, _createField.createField)( /*#__PURE__*/_react.default.forwardRef(BaseProFormUploadButton), {
|
|
getValueFromEvent: function getValueFromEvent(value) {
|
|
return value.fileList;
|
|
}
|
|
});
|
|
var _default = exports.default = ProFormUploadButton; |