@arco-vue-pro-components/pro-components
Version:
基于@arco-design/web-vue组件的高级组件,包括pro-table
168 lines (167 loc) • 5.5 kB
JavaScript
;
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
var vue = require("vue");
var webVue = require("@arco-design/web-vue");
var dayjs = require("dayjs");
var index = require("../../pro-select/index.js");
function _interopDefaultLegacy(e) {
return e && typeof e === "object" && "default" in e ? e : { "default": e };
}
var dayjs__default = /* @__PURE__ */ _interopDefaultLegacy(dayjs);
const moneyIntl = new Intl.NumberFormat("zh-Hans-CN", {
currency: "CNY",
style: "currency",
minimumFractionDigits: 2
});
const enMoneyIntl = new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD"
});
const ruMoneyIntl = new Intl.NumberFormat("ru-RU", {
style: "currency",
currency: "RUB"
});
const msMoneyIntl = new Intl.NumberFormat("ms-MY", {
style: "currency",
currency: "MYR"
});
function showUnitColumn(value, unit) {
let str = "";
if (value == null) {
return str;
}
str = `${value}`;
if (!unit) {
return str;
}
str = `${value}${unit}`;
return str;
}
const defaultRenderTextByObject = (text, value) => {
if (value.type === "progress") {
return vue.createVNode(webVue.Progress, {
"size": "small",
"percent": parseFloat(text),
"status": value.status || getProgressStatus(parseFloat(text))
}, null);
}
if (value.type === "money") {
if (value.locale === "en_US") {
return enMoneyIntl.format(text);
}
if (value.locale === "ru_RU") {
return ruMoneyIntl.format(text);
}
if (value.locale === "ms_MY") {
return msMoneyIntl.format(text);
}
return moneyIntl.format(text);
}
if (value.type === "percent") {
return text ? showUnitColumn(text, "%") : "-";
}
return text;
};
const defaultRenderText = (text, valueType, rowIndex, item, columnEmptyText, itemColumn, columnKey) => {
var _a;
if (typeof valueType === "function" && item) {
const value = valueType(item);
if (typeof value === "string") {
return defaultRenderText(text, value, rowIndex, item, columnEmptyText, itemColumn, columnKey);
}
if (typeof value === "object") {
return defaultRenderTextByObject(text, value);
}
}
if (valueType === "select" && ((_a = itemColumn == null ? void 0 : itemColumn.fieldProps) == null ? void 0 : _a.request)) {
return vue.createVNode(index, vue.mergeProps({
"cacheForSwr": true,
"mode": "read",
"columnKey": columnKey,
"modelValue": text
}, itemColumn == null ? void 0 : itemColumn.fieldProps), null);
}
if (valueType === "money" && (text || text === 0)) {
if (typeof text === "string") {
return moneyIntl.format(parseFloat(text));
}
return moneyIntl.format(text);
}
if (typeof text === "string" || typeof text === "number") {
if (valueType === "date" && text) {
return dayjs__default["default"](text).format("YYYY-MM-DD");
}
if (valueType === "dateTime" && text) {
return dayjs__default["default"](text).format("YYYY-MM-DD HH:mm:ss");
}
if (valueType === "time" && text) {
return dayjs__default["default"](text).format("HH:mm:ss");
}
}
if (valueType === "dateRange" && text && Array.isArray(text) && text.length === 2) {
const [startText, endText] = text;
return vue.createVNode("div", null, [vue.createVNode("div", null, [startText ? dayjs__default["default"](startText).format("YYYY-MM-DD") : "-"]), vue.createVNode("div", null, [endText ? dayjs__default["default"](endText).format("YYYY-MM-DD") : "-"])]);
}
if (valueType === "dateTimeRange" && text && Array.isArray(text) && text.length === 2) {
const [startText, endText] = text;
return vue.createVNode("div", null, [vue.createVNode("div", null, [startText ? dayjs__default["default"](startText).format("YYYY-MM-DD HH:mm:ss") : "-"]), vue.createVNode("div", null, [endText ? dayjs__default["default"](endText).format("YYYY-MM-DD HH:mm:ss") : "-"])]);
}
if (valueType === "progress") {
const status = getProgressStatus(parseFloat(text));
return vue.createVNode(webVue.Progress, {
"size": "small",
"percent": parseFloat(text),
"animation": status === "normal",
"status": status
}, null);
}
if (valueType === "percent") {
return text ? showUnitColumn(text, "%") : columnEmptyText;
}
if (valueType === "avatar" && typeof text === "string") {
return vue.createVNode(webVue.Avatar, {
"imageUrl": text,
"size": 22,
"shape": "circle"
}, null);
}
if (valueType === "image") {
return vue.createVNode(webVue.Image, {
"src": text,
"width": 32
}, null);
}
if (valueType === "code" && text) {
return vue.createVNode("pre", {
"style": {
padding: 16,
overflow: "auto",
fontSize: "85%",
lineHeight: 1.45,
backgroundColor: "#f6f8fa",
borderRadius: 3
}
}, [vue.createVNode("code", null, [text])]);
}
if (columnEmptyText) {
if (typeof text !== "boolean" && typeof text !== "number" && !text) {
return typeof columnEmptyText === "string" ? columnEmptyText : "-";
}
}
return text;
};
function getProgressStatus(text) {
if (typeof text !== "number") {
return "danger";
}
if (text === 100) {
return "success";
}
if (text < 0) {
return "danger";
}
return "normal";
}
exports["default"] = defaultRenderText;
exports.getProgressStatus = getProgressStatus;
exports.showUnitColumn = showUnitColumn;