UNPKG

sunmao-sdk

Version:

榫卯-开箱即用赋能-sdk

120 lines (104 loc) 3.5 kB
import React from "react"; import { isHidden } from "../base/isHidden"; import { isFunction } from "../base/utils"; var getEnumValue = function getEnumValue(value, enums, enumNames) { if (Array.isArray(enums) && Array.isArray(enumNames)) { if (typeof value === "string" || typeof value === "number") { var count = enums.indexOf(value); if (count > -1) { return enumNames[count]; } return value; } else if (Array.isArray(value)) { var result = value.map(function (v) { return getEnumValue(v, enums, enumNames); }); return String(result); } return value; } return value; }; var isEnumText = function isEnumText(text) { return typeof text === "string" || typeof text === "number" || Array.isArray(text); }; var DescriptionList = function DescriptionList(_ref) { var _ref$schema = _ref.schema, schema = _ref$schema === void 0 ? {} : _ref$schema, _ref$value = _ref.value, value = _ref$value === void 0 ? [] : _ref$value, index = _ref.index; var list = getDescription({ schema: schema, value: value, index: index }).filter(function (item) { return item.title; }).slice(0, 3); return /*#__PURE__*/React.createElement("ul", { className: "flex overflow-hidden", style: { paddingRight: 45 } }, list.map(function (item, i) { return item.title ? /*#__PURE__*/React.createElement("li", { className: "overflow-hidden truncate", style: { width: "33%", paddingRight: 8 }, key: i }, /*#__PURE__*/React.createElement("span", { className: "fw5" }, item.title, ": "), /*#__PURE__*/React.createElement("span", { className: "truncate" }, item.text)) : null; })); }; export default DescriptionList; // 获得title,value值list export var getDescription = function getDescription(_ref2) { var _ref2$schema = _ref2.schema, schema = _ref2$schema === void 0 ? {} : _ref2$schema, _ref2$value = _ref2.value, value = _ref2$value === void 0 ? [] : _ref2$value, index = _ref2.index; var _schema$items = schema.items, items = _schema$items === void 0 ? {} : _schema$items; // 只有当items为object时才做收起(fold)处理 if (items.type !== "object") { return []; } var titles = items && items.properties || {}; titles = Object.values(titles); var description = value && value.length && value[index] || {}; var valueList = Object.values(description); var descList = titles.map(function (t, idx) { var hidden = t && t["ui:hidden"]; // ui:hidden为判断式时解析 TODO: 解析在外部集中做 if (typeof hidden === "string" && isFunction(hidden) === false) { hidden = isHidden({ hidden: hidden, rootValue: description }); } if (hidden) return; var title = t.title; var text = valueList[idx]; if (text === null && text === undefined) { text = ""; } else if (typeof text === "boolean") { text = text ? "是" : "否"; } else if (t.enum && t.enumNames && text && isEnumText(text)) { // 先判断是否有枚举配置 text = getEnumValue(text, t.enum, t.enumNames); } else if (typeof text !== "string" && typeof text !== "number" && text) { // 最后的兜底处理 text = "{复杂结构}"; } return { title: title, text: text }; }); // 去空 return descList.filter(function (d) { return !!d; }); };