UNPKG

amis

Version:

一种MIS页面生成工具

103 lines (102 loc) 5.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StepsRenderer = exports.Steps = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importDefault(require("react")); var factory_1 = require("../factory"); var icons_1 = require("../components/icons"); var WithRemoteConfig_1 = require("../components/WithRemoteConfig"); var tpl_builtin_1 = require("../utils/tpl-builtin"); var tpl_1 = require("../utils/tpl"); var StepStatus; (function (StepStatus) { StepStatus["wait"] = "wait"; StepStatus["process"] = "process"; StepStatus["finish"] = "finish"; StepStatus["error"] = "error"; })(StepStatus || (StepStatus = {})); function Steps(props) { var className = props.className, cx = props.classnames, steps = props.steps, _a = props.value, value = _a === void 0 ? 0 : _a, status = props.status, data = props.data, source = props.source, config = props.config; var stepsRow = tpl_builtin_1.resolveVariable(source, data) || config || steps || []; var resolveValue = typeof value === 'string' && isNaN(+value) ? tpl_builtin_1.resolveVariable(value, data) || +value : +value; var valueIndex = stepsRow.findIndex(function (item) { return item.value && item.value === resolveValue; }); var currentValue = valueIndex !== -1 ? valueIndex : resolveValue; var FINISH_ICON = 'check'; var ERROR_ICON = 'close'; function getStepStatus(step, i) { var stepStatus = StepStatus.wait; var icon = step.icon; if (i < currentValue) { stepStatus = StepStatus.finish; !icon && (icon = FINISH_ICON); } else if (i === currentValue) { stepStatus = StepStatus.process; } if (typeof status === 'string') { if (i === currentValue) { var resolveStatus = tpl_builtin_1.resolveVariable(status, data); stepStatus = resolveStatus || status || StepStatus.process; stepStatus === StepStatus.error && !icon && (icon = ERROR_ICON); } } else if (typeof status === 'object') { var key = step.value; key && status[key] && (stepStatus = status[key]); } return { stepStatus: stepStatus, icon: icon }; } return (react_1.default.createElement("ul", { className: cx('Steps', className) }, stepsRow.map(function (step, i) { var _a = getStepStatus(step, i), stepStatus = _a.stepStatus, icon = _a.icon; return (react_1.default.createElement("li", { key: i, className: cx('StepsItem', "is-" + stepStatus, step.className) }, react_1.default.createElement("div", { className: cx('StepsItem-container') }, react_1.default.createElement("div", { className: cx('StepsItem-containerIcon') }, react_1.default.createElement("span", { className: cx('StepsItem-icon') }, icon ? react_1.default.createElement(icons_1.Icon, { icon: icon, className: "icon" }) : i + 1)), react_1.default.createElement("div", { className: cx('StepsItem-containerWrapper') }, react_1.default.createElement("div", { className: cx('StepsItem-body') }, react_1.default.createElement("div", { className: cx('StepsItem-title', i < currentValue && 'is-success') }, react_1.default.createElement("span", null, tpl_1.filter(step.title, data)), react_1.default.createElement("span", { className: cx('StepsItem-subTitle') }, tpl_1.filter(step.subTitle || step.value, data))), react_1.default.createElement("div", { className: cx('StepsItem-description') }, tpl_1.filter(step.description, data))))))); }))); } exports.Steps = Steps; var StepsWithRemoteConfig = WithRemoteConfig_1.withRemoteConfig({ adaptor: function (data) { return data.steps || data; } })(/** @class */ (function (_super) { tslib_1.__extends(class_1, _super); function class_1() { return _super !== null && _super.apply(this, arguments) || this; } class_1.prototype.render = function () { var _a = this.props, config = _a.config, deferLoad = _a.deferLoad, loading = _a.loading, updateConfig = _a.updateConfig, rest = tslib_1.__rest(_a, ["config", "deferLoad", "loading", "updateConfig"]); return react_1.default.createElement(Steps, tslib_1.__assign({ config: config }, rest)); }; return class_1; }(react_1.default.Component))); var StepsRenderer = /** @class */ (function (_super) { tslib_1.__extends(StepsRenderer, _super); function StepsRenderer() { return _super !== null && _super.apply(this, arguments) || this; } StepsRenderer.prototype.render = function () { return react_1.default.createElement(StepsWithRemoteConfig, tslib_1.__assign({}, this.props)); }; StepsRenderer = tslib_1.__decorate([ factory_1.Renderer({ test: /(^|\/)steps$/, name: 'steps' }) ], StepsRenderer); return StepsRenderer; }(react_1.default.Component)); exports.StepsRenderer = StepsRenderer; //# sourceMappingURL=./renderers/Steps.js.map