UNPKG

acud

Version:

acg react 组件库

104 lines (102 loc) • 4.9 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _MultiToneSuccess = _interopRequireDefault(require("acud-icon/lib/icons/MultiToneSuccess")); var _MultiToneError = _interopRequireDefault(require("acud-icon/lib/icons/MultiToneError")); var _common = require("./common"); /** * @file 条形进度条 * @author liuhanwei */ var LineProgress = function LineProgress(_ref) { var _ref$percent = _ref.percent, percent = _ref$percent === void 0 ? 0 : _ref$percent, _ref$type = _ref.type, type = _ref$type === void 0 ? 'line' : _ref$type, status = _ref.status, size = _ref.size, strokeColor = _ref.strokeColor, iconStrokeColor = _ref.iconStrokeColor, _ref$infoType = _ref.infoType, infoType = _ref$infoType === void 0 ? 'text' : _ref$infoType, trailColor = _ref.trailColor, textColor = _ref.textColor, textSize = _ref.textSize, labelText = _ref.labelText, _ref$strokeLinecap = _ref.strokeLinecap, strokeLinecap = _ref$strokeLinecap === void 0 ? 'round' : _ref$strokeLinecap, customizeStrokeWidth = _ref.strokeWidth, _ref$infoPosition = _ref.infoPosition, customizeInfoPosition = _ref$infoPosition === void 0 ? 'outer' : _ref$infoPosition, style = _ref.style, className = _ref.className, prefixCls = _ref.prefixCls; var BASE_LINE_WIDTH = 4; // strokeWidth取值异常时,将使用size对应的宽度 var strokeWidth = (0, _common.isNumber)(customizeStrokeWidth) ? customizeStrokeWidth : _common.sizeRatioMap[size] * BASE_LINE_WIDTH; // 最外层容器的类名,将所有状态类名尽可能地代理到这层处理 var extendedName = (0, _classnames["default"])(prefixCls, "".concat(prefixCls, "-").concat(type), "".concat(prefixCls, "-").concat(size), "".concat(prefixCls, "-").concat(status), (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-label-hidden"), infoType === 'none'), "".concat(prefixCls, "-linecap-round"), strokeLinecap !== 'square'), className); // 设置进度条宽度 var wrapperStyles = { height: "".concat(strokeWidth, "px") }; // 设置进度轨道颜色 var trailStyles = { backgroundColor: trailColor }; // 设置进度百分比长度和颜色 var barStyles = { width: "".concat(percent, "%"), backgroundColor: strokeColor }; // 当infoPosition值为inner或infoType值为icon,信息显示在进度条外 var infoPosition = customizeInfoPosition !== 'inner' || infoType === 'icon' ? 'outer' : 'inner'; // 当文本显示在进度条内时,进度小于50,显示在未完成部分;大于50,显示在完成部分 var innerLabelPosition = percent < 50 ? 'right' : 'left'; // 设置自定义文本样式 var labelStyles = { color: textColor, fontSize: "".concat(textSize, "px") }; var labelClassNames = (0, _classnames["default"])("".concat(prefixCls, "-label"), "".concat(prefixCls, "-label-").concat(infoPosition), (0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-label-icon"), infoType === 'icon'), "".concat(prefixCls, "-label-inner-").concat(innerLabelPosition), infoPosition === 'inner')); var ProgressLabel = /*#__PURE__*/_react["default"].createElement("span", { className: labelClassNames, style: labelStyles }, labelText); // 若信息类型为图标,在成功和异常时,显示图标 if (infoType === 'icon') { if (status === 'success') { ProgressLabel = /*#__PURE__*/_react["default"].createElement(_MultiToneSuccess["default"], { className: labelClassNames, color: iconStrokeColor, width: "16px" }); } else if (status === 'error') { ProgressLabel = /*#__PURE__*/_react["default"].createElement(_MultiToneError["default"], { className: labelClassNames, color: iconStrokeColor, width: "16px" }); } } return /*#__PURE__*/_react["default"].createElement("div", { className: extendedName, style: style }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-wrapper"), style: wrapperStyles }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-trail"), style: trailStyles }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-bar"), style: barStyles }, infoPosition === 'inner' && ProgressLabel))), infoPosition === 'outer' && ProgressLabel); }; var _default = exports["default"] = LineProgress;