1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 |
|
8 | var _vue = require("vue");
|
9 |
|
10 | var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
|
11 |
|
12 | var _propsUtil = require("../_util/props-util");
|
13 |
|
14 | var _initDefaultProps = _interopRequireDefault(require("../_util/props-util/initDefaultProps"));
|
15 |
|
16 | var _configProvider = require("../config-provider");
|
17 |
|
18 | var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons-vue/CloseOutlined"));
|
19 |
|
20 | var _CheckOutlined = _interopRequireDefault(require("@ant-design/icons-vue/CheckOutlined"));
|
21 |
|
22 | var _CheckCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/CheckCircleFilled"));
|
23 |
|
24 | var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/CloseCircleFilled"));
|
25 |
|
26 | var _line = _interopRequireDefault(require("./line"));
|
27 |
|
28 | var _circle = _interopRequireDefault(require("./circle"));
|
29 |
|
30 | var _utils = require("./utils");
|
31 |
|
32 | var _props = require("./props");
|
33 |
|
34 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
35 |
|
36 | function _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 |
|
38 | function _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 |
|
40 | function _isSlot(s) {
|
41 | return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s);
|
42 | }
|
43 |
|
44 | var _default2 = (0, _vue.defineComponent)({
|
45 | name: 'AProgress',
|
46 | props: (0, _initDefaultProps.default)(_props.ProgressProps, {
|
47 | type: 'line',
|
48 | percent: 0,
|
49 | showInfo: true,
|
50 |
|
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;
|
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 |
|
161 | exports.default = _default2; |
\ | No newline at end of file |