ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
131 lines (130 loc) • 6.44 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _initDefaultProps = _interopRequireDefault(require("../_util/props-util/initDefaultProps"));
var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CloseOutlined"));
var _CheckOutlined = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CheckOutlined"));
var _CheckCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CheckCircleFilled"));
var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/lib/icons/CloseCircleFilled"));
var _Line = _interopRequireDefault(require("./Line"));
var _Circle = _interopRequireDefault(require("./Circle"));
var _Steps = _interopRequireDefault(require("./Steps"));
var _utils = require("./utils");
var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
var _devWarning = _interopRequireDefault(require("../vc-util/devWarning"));
var _props = require("./props");
var _default2 = (0, _vue.defineComponent)({
compatConfig: {
MODE: 3
},
name: 'AProgress',
props: (0, _initDefaultProps.default)((0, _props.progressProps)(), {
type: 'line',
percent: 0,
showInfo: true,
// null for different theme definition
trailColor: null,
size: 'default',
strokeLinecap: 'round'
}),
slots: ['format'],
setup: function setup(props, _ref) {
var slots = _ref.slots;
var _useConfigInject = (0, _useConfigInject2.default)('progress', props),
prefixCls = _useConfigInject.prefixCls,
direction = _useConfigInject.direction;
(0, _devWarning.default)(props.successPercent == undefined, 'Progress', '`successPercent` is deprecated. Please use `success.percent` instead.');
var classString = (0, _vue.computed)(function () {
var _ref2;
var type = props.type,
showInfo = props.showInfo,
size = props.size;
var pre = prefixCls.value;
return _ref2 = {}, (0, _defineProperty2.default)(_ref2, pre, true), (0, _defineProperty2.default)(_ref2, "".concat(pre, "-").concat(type === 'dashboard' && 'circle' || type), true), (0, _defineProperty2.default)(_ref2, "".concat(pre, "-show-info"), showInfo), (0, _defineProperty2.default)(_ref2, "".concat(pre, "-").concat(size), size), (0, _defineProperty2.default)(_ref2, "".concat(pre, "-rtl"), direction.value === 'rtl'), _ref2;
});
var percentNumber = (0, _vue.computed)(function () {
var _props$percent = props.percent,
percent = _props$percent === void 0 ? 0 : _props$percent;
var successPercent = (0, _utils.getSuccessPercent)(props);
return parseInt(successPercent !== undefined ? successPercent.toString() : percent.toString(), 10);
});
var progressStatus = (0, _vue.computed)(function () {
var status = props.status;
if (_props.progressStatuses.indexOf(status) < 0 && percentNumber.value >= 100) {
return 'success';
}
return status || 'normal';
});
var renderProcessInfo = function renderProcessInfo() {
var showInfo = props.showInfo,
format = props.format,
type = props.type,
percent = props.percent,
title = props.title;
var successPercent = (0, _utils.getSuccessPercent)(props);
if (!showInfo) return null;
var text;
var textFormatter = format || (slots === null || slots === void 0 ? void 0 : slots.format) || function (val) {
return "".concat(val, "%");
};
var isLineType = type === 'line';
if (format || slots !== null && slots !== void 0 && slots.format || progressStatus.value !== 'exception' && progressStatus.value !== 'success') {
text = textFormatter((0, _utils.validProgress)(percent), (0, _utils.validProgress)(successPercent));
} else if (progressStatus.value === 'exception') {
text = isLineType ? (0, _vue.createVNode)(_CloseCircleFilled.default, null, null) : (0, _vue.createVNode)(_CloseOutlined.default, null, null);
} else if (progressStatus.value === 'success') {
text = isLineType ? (0, _vue.createVNode)(_CheckCircleFilled.default, null, null) : (0, _vue.createVNode)(_CheckOutlined.default, null, null);
}
return (0, _vue.createVNode)("span", {
"class": "".concat(prefixCls.value, "-text"),
"title": title === undefined && typeof text === 'string' ? text : undefined
}, [text]);
};
return function () {
var type = props.type,
steps = props.steps,
strokeColor = props.strokeColor,
title = props.title;
var progressInfo = renderProcessInfo();
var progress;
// Render progress shape
if (type === 'line') {
progress = steps ? (0, _vue.createVNode)(_Steps.default, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, props), {}, {
"strokeColor": typeof strokeColor === 'string' ? strokeColor : undefined,
"prefixCls": prefixCls.value,
"steps": steps
}), {
default: function _default() {
return [progressInfo];
}
}) : (0, _vue.createVNode)(_Line.default, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, props), {}, {
"prefixCls": prefixCls.value
}), {
default: function _default() {
return [progressInfo];
}
});
} else if (type === 'circle' || type === 'dashboard') {
progress = (0, _vue.createVNode)(_Circle.default, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, props), {}, {
"prefixCls": prefixCls.value
}), {
default: function _default() {
return [progressInfo];
}
});
}
var classNames = (0, _objectSpread3.default)((0, _objectSpread3.default)({}, classString.value), {}, (0, _defineProperty2.default)({}, "".concat(prefixCls.value, "-status-").concat(progressStatus.value), true));
return (0, _vue.createVNode)("div", {
"class": classNames,
"title": title
}, [progress]);
};
}
});
exports.default = _default2;
;