UNPKG

6.35 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _vue = require("vue");
9
10var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
11
12var _propsUtil = require("../_util/props-util");
13
14var _initDefaultProps = _interopRequireDefault(require("../_util/props-util/initDefaultProps"));
15
16var _configProvider = require("../config-provider");
17
18var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons-vue/CloseOutlined"));
19
20var _CheckOutlined = _interopRequireDefault(require("@ant-design/icons-vue/CheckOutlined"));
21
22var _CheckCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/CheckCircleFilled"));
23
24var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/CloseCircleFilled"));
25
26var _line = _interopRequireDefault(require("./line"));
27
28var _circle = _interopRequireDefault(require("./circle"));
29
30var _utils = require("./utils");
31
32var _props = require("./props");
33
34function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
36function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
37
38function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
39
40function _isSlot(s) {
41 return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s);
42}
43
44var _default2 = (0, _vue.defineComponent)({
45 name: 'AProgress',
46 props: (0, _initDefaultProps.default)(_props.ProgressProps, {
47 type: 'line',
48 percent: 0,
49 showInfo: true,
50 // null for different theme definition
51 trailColor: null,
52 size: 'default',
53 gapDegree: 0,
54 strokeLinecap: 'round'
55 }),
56 setup: function setup() {
57 return {
58 configProvider: (0, _vue.inject)('configProvider', _configProvider.defaultConfigProvider)
59 };
60 },
61 methods: {
62 getPercentNumber: function getPercentNumber() {
63 var _this$$props = this.$props,
64 successPercent = _this$$props.successPercent,
65 _this$$props$percent = _this$$props.percent,
66 percent = _this$$props$percent === void 0 ? 0 : _this$$props$percent;
67 return parseInt(successPercent !== undefined ? successPercent.toString() : percent.toString(), 10);
68 },
69 getProgressStatus: function getProgressStatus() {
70 var status = this.$props.status;
71
72 if (_props.ProgressStatuses.indexOf(status) < 0 && this.getPercentNumber() >= 100) {
73 return 'success';
74 }
75
76 return status || 'normal';
77 },
78 renderProcessInfo: function renderProcessInfo(prefixCls, progressStatus) {
79 var _this$$props2 = this.$props,
80 showInfo = _this$$props2.showInfo,
81 format = _this$$props2.format,
82 type = _this$$props2.type,
83 percent = _this$$props2.percent,
84 successPercent = _this$$props2.successPercent;
85 if (!showInfo) return null;
86 var text;
87
88 var textFormatter = format || this.$slots.format || function (percentNumber) {
89 return "".concat(percentNumber, "%");
90 };
91
92 var isLineType = type === 'line';
93
94 if (format || this.$slots.format || progressStatus !== 'exception' && progressStatus !== 'success') {
95 text = textFormatter((0, _utils.validProgress)(percent), (0, _utils.validProgress)(successPercent));
96 } else if (progressStatus === 'exception') {
97 text = isLineType ? (0, _vue.createVNode)(_CloseCircleFilled.default, null, null) : (0, _vue.createVNode)(_CloseOutlined.default, null, null);
98 } else if (progressStatus === 'success') {
99 text = isLineType ? (0, _vue.createVNode)(_CheckCircleFilled.default, null, null) : (0, _vue.createVNode)(_CheckOutlined.default, null, null);
100 }
101
102 return (0, _vue.createVNode)("span", {
103 "class": "".concat(prefixCls, "-text"),
104 "title": typeof text === 'string' ? text : undefined
105 }, _isSlot(text) ? text : {
106 default: function _default() {
107 return [text];
108 }
109 });
110 }
111 },
112 render: function render() {
113 var _classNames;
114
115 var props = (0, _propsUtil.getOptionProps)(this);
116 var customizePrefixCls = props.prefixCls,
117 size = props.size,
118 type = props.type,
119 showInfo = props.showInfo;
120 var getPrefixCls = this.configProvider.getPrefixCls;
121 var prefixCls = getPrefixCls('progress', customizePrefixCls);
122 var progressStatus = this.getProgressStatus();
123 var progressInfo = this.renderProcessInfo(prefixCls, progressStatus);
124 var progress; // Render progress shape
125
126 if (type === 'line') {
127 var lineProps = _extends(_extends({}, props), {
128 prefixCls: prefixCls
129 });
130
131 progress = (0, _vue.createVNode)(_line.default, lineProps, _isSlot(progressInfo) ? progressInfo : {
132 default: function _default() {
133 return [progressInfo];
134 }
135 });
136 } else if (type === 'circle' || type === 'dashboard') {
137 var circleProps = _extends(_extends({}, props), {
138 prefixCls: prefixCls,
139 progressStatus: progressStatus
140 });
141
142 progress = (0, _vue.createVNode)(_circle.default, circleProps, _isSlot(progressInfo) ? progressInfo : {
143 default: function _default() {
144 return [progressInfo];
145 }
146 });
147 }
148
149 var classString = (0, _classNames2.default)(prefixCls, (_classNames = {}, _defineProperty(_classNames, "".concat(prefixCls, "-").concat(type === 'dashboard' && 'circle' || type), true), _defineProperty(_classNames, "".concat(prefixCls, "-status-").concat(progressStatus), true), _defineProperty(_classNames, "".concat(prefixCls, "-show-info"), showInfo), _defineProperty(_classNames, "".concat(prefixCls, "-").concat(size), size), _classNames));
150 var progressProps = {
151 class: classString
152 };
153 return (0, _vue.createVNode)("div", progressProps, _isSlot(progress) ? progress : {
154 default: function _default() {
155 return [progress];
156 }
157 });
158 }
159});
160
161exports.default = _default2;
\No newline at end of file