preact-arco-design
Version:
Arco Design React UI Library.
76 lines (70 loc) • 3.26 kB
JavaScript
var __assign = this && this.__assign || function () {
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
}
return t;
};
return __assign.apply(this, arguments);
};
import React, { useContext } from "preact/compat";
import { STATUS } from "../interface";
import Progress from "../../Progress";
import { ConfigContext } from "../../ConfigProvider";
import IconCheck from "../../../icon/react-icon/IconCheck";
import IconUpload from "../../../icon/react-icon/IconUpload";
import IconPlayArrowFill from "../../../icon/react-icon/IconPlayArrowFill";
import IconPause from "../../../icon/react-icon/IconPause";
import Tooltip from "../../Tooltip";
import { isFunction } from "../../_util/is";
var UploadProgress = function UploadProgress(props) {
var file = props.file,
prefixCls = props.prefixCls,
progressProps = props.progressProps,
progressRender = props.progressRender;
var locale = useContext(ConfigContext).locale;
var status = file.status,
_a = file.percent,
percent = _a === void 0 ? 0 : _a;
var cls = "".concat(prefixCls, "-list");
var widthStyle = progressProps && progressProps.width ? {
width: progressProps.width
} : {};
var dom = React.createElement(React.Fragment, null, status === STATUS.fail && props.reuploadIcon !== null && React.createElement("span", {
className: "".concat(prefixCls, "-list-reupload-icon"),
onClick: function onClick() {
props.onReupload && props.onReupload(file);
}
}, props.reuploadIcon || (props.listType === 'picture-card' ? React.createElement(IconUpload, null) : locale.Upload.reupload)), status === STATUS.success && props.successIcon !== null && React.createElement("span", {
className: "".concat(prefixCls, "-list-success-icon")
}, props.successIcon || React.createElement(IconCheck, null)), status !== STATUS.success && React.createElement("div", {
className: "".concat(cls, "-status"),
style: widthStyle
}, React.createElement(Progress, __assign({
showText: false,
className: "".concat(cls, "-progress"),
type: "circle",
status: status === STATUS.fail ? 'error' : status === STATUS.success ? 'success' : 'normal',
percent: percent,
size: "mini"
}, progressProps)), status === STATUS.init && props.startIcon !== null && React.createElement("span", {
className: "".concat(prefixCls, "-list-start-icon"),
onClick: function onClick() {
props.onUpload && props.onUpload(file);
}
}, props.startIcon || React.createElement(Tooltip, {
content: locale.Upload.start
}, React.createElement(IconPlayArrowFill, null))), status === STATUS.uploading && props.cancelIcon !== null && React.createElement("span", {
className: "".concat(props.prefixCls, "-list-cancel-icon"),
onClick: function onClick() {
props.onAbort && props.onAbort(file);
}
}, props.cancelIcon || React.createElement(Tooltip, {
content: locale.Upload.cancel
}, React.createElement(IconPause, null)))));
return isFunction(progressRender) ? progressRender(file, dom) : dom;
};
export default UploadProgress;