UNPKG

cw-form-render-mobile

Version:

通过 JSON Schema 生成标准 Form,常用于自定义搭建配置界面生成

118 lines (117 loc) 3.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _utils = require("../utils"); var _dayjs = _interopRequireDefault(require("dayjs")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } // 首字母转大写 var strToUpperCase = function strToUpperCase(str) { if (!str) { return ''; } return str.charAt(0).toUpperCase() + str.slice(1); }; var findLabels = function findLabels(value, options) { if (!isValidateArray(value) || !isValidateArray(options)) return []; return value.map(function (v) { var _a; return (_a = options.find(function (o) { return o.value === v; })) === null || _a === void 0 ? void 0 : _a.label; }); }; var flatCascaderOptions = function flatCascaderOptions(options) { var result = []; var _walk = function walk(list) { list.forEach(function (i) { result.push(i); if (isValidateArray(i.children)) { _walk(i.children); } }); }; _walk(options); return result; }; var isValidateArray = function isValidateArray(list) { return Array.isArray(list) && list.length > 0; }; var _default = exports.default = function _default(props) { var _a; var value = props.value, options = props.options, _props$schema = props.schema, schema = _props$schema === void 0 ? {} : _props$schema; var __html; switch (strToUpperCase(schema.widget)) { case 'Input': case 'TextArea': case 'Rate': case 'Stepper': __html = value; break; case 'Slider': if (isValidateArray(value)) { __html = value.join('-'); } else { __html = value; } break; case 'Selector': if (isValidateArray(value)) { __html = findLabels(value, options).join(','); } break; case 'Switch': var _props$uncheckedText = props.uncheckedText, uncheckedText = _props$uncheckedText === void 0 ? '否' : _props$uncheckedText, _props$checkedText = props.checkedText, checkedText = _props$checkedText === void 0 ? '是' : _props$checkedText; __html = value ? checkedText : uncheckedText; break; case 'Radio': __html = (_a = options.find(function (o) { return o.value === value; })) === null || _a === void 0 ? void 0 : _a.label; break; case 'DatePicker': var format = props.format, precision = props.precision; if (!value) return '-'; var dateFormat = format || (0, _utils.getFormat)(precision); __html = (0, _dayjs.default)(value).format(dateFormat); break; case 'Cascader': var flatOptions = flatCascaderOptions(options); __html = findLabels(value, flatOptions).join('-') || '-'; break; case 'Picker': { var columns = props.columns, _options = props.options; if (_options && _options.length) { __html = findLabels(value, _options).join('-') || '-'; } else { var labels = value === null || value === void 0 ? void 0 : value.map(function (i, index) { var _a; return (_a = columns[index].find(function (j) { return j.value === i; })) === null || _a === void 0 ? void 0 : _a.label; }); __html = labels ? labels.join('-') : '-'; } break; } default: __html = '-'; } __html !== null && __html !== void 0 ? __html : __html = '-'; return /*#__PURE__*/_react.default.createElement("div", { dangerouslySetInnerHTML: { __html: __html } }); };