UNPKG

@ant-design/pro-form

Version:
67 lines (66 loc) 3.39 kB
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; var _excluded = ["fieldProps", "action", "accept", "listType", "title", "max", "icon", "buttonProps", "disabled", "proFieldProps"]; import { UploadOutlined } from '@ant-design/icons'; import { Button, Upload } from 'antd'; import React, { useContext, useMemo } from 'react'; import { EditOrReadOnlyContext } from "../../BaseForm/EditOrReadOnlyContext"; import { createField } from "../../BaseForm/createField"; import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; /** * 上传按钮组件 * * @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__*/_jsx(UploadOutlined, {}) : _ref$icon, buttonProps = _ref.buttonProps, disabled = _ref.disabled, proFieldProps = _ref.proFieldProps, restProps = _objectWithoutProperties(_ref, _excluded); var value = useMemo(function () { var _restProps$fileList; return (_restProps$fileList = restProps.fileList) !== null && _restProps$fileList !== void 0 ? _restProps$fileList : restProps.value; }, [restProps.fileList, restProps.value]); var modeContext = useContext(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__*/_jsx(Upload, _objectSpread(_objectSpread({ action: action, accept: accept, ref: ref, listType: listType || 'picture', fileList: value }, 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__*/_jsxs("span", { children: [icon, " ", title] }) : /*#__PURE__*/_jsxs(Button, _objectSpread(_objectSpread({ disabled: disabled || (fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.disabled) }, buttonProps), {}, { children: [icon, title] }))) })); }; var ProFormUploadButton = createField( /*#__PURE__*/React.forwardRef(BaseProFormUploadButton), { getValueFromEvent: function getValueFromEvent(value) { return value.fileList; } }); export default ProFormUploadButton;