plus-pro-components
Version:
Page level components developed based on Element Plus.
161 lines (157 loc) • 5.07 kB
JavaScript
;
var version = require('element-plus/es/version');
var lodashEs = require('lodash-es');
var vue = require('vue');
var is = require('./is.js');
var format = require('./format.js');
const getTableKey = (item, hasEditable = false) => hasEditable && is.isBoolean(item.editable) ? item.label + item.prop + item.editable : item.label + item.prop;
const getTooltip = (tooltip) => {
const tooltipData = vue.unref(tooltip);
if (is.isString(tooltipData)) {
return { content: tooltipData };
}
if (is.isPlainObject(tooltipData)) {
return tooltipData;
}
return { content: "" };
};
const throwError = (data, type) => {
if (!is.isPlainObject(data)) {
throw new Error(`${type} expected Object but got ${is.toRawType(data)}`);
}
};
const getCustomProps = async (props, value, row, index, type) => {
try {
let data = {};
const params = { row, index };
if (!props) {
data = {};
} else if (vue.isRef(props)) {
data = props.value;
} else if (is.isPlainObject(props)) {
data = { ...props };
} else if (is.isFunction(props)) {
data = await props(value, params);
} else if (is.isPromise(props)) {
data = await props;
} else {
data = props;
}
throwError(data, type);
return data;
} catch (error) {
return Promise.reject(error);
}
};
const handleSlots = (slots, value, params) => {
if (!slots || !is.isPlainObject(slots) || is.isEmptyObject(slots)) {
return {};
}
const slotsRes = {};
if (slots && !is.isEmptyObject(slots)) {
Object.keys(slots).forEach((key) => {
const temp = (...arg) => {
return () => slots[key](...arg);
};
slotsRes[key] = temp(value, params);
});
}
return slotsRes;
};
const getSlotName = (type, prop) => {
return prop ? `plus-${type}-${prop}` : `plus-${type}`;
};
const getFieldSlotName = (prop) => {
return `${getSlotName("field", prop)}`;
};
const getLabelSlotName = (prop) => {
return `${getSlotName("label", prop)}`;
};
const getExtraSlotName = (prop) => {
return `${getSlotName("extra", prop)}`;
};
const getTableHeaderSlotName = (prop) => {
return `${getSlotName("header", prop)}`;
};
const getTableCellSlotName = (prop) => {
return `${getSlotName("cell", prop)}`;
};
const getDescSlotName = (prop) => {
return `${getSlotName("desc", prop)}`;
};
const getDescLabelSlotName = (prop) => {
return `${getSlotName("desc-label", prop)}`;
};
const filterSlots = (slots, name) => {
const data = {};
Object.keys(slots || {}).forEach((key) => {
if (key.startsWith(name)) {
data[key] = slots[key];
}
});
return data;
};
const getValue = (target, key) => {
return lodashEs.get(target, key);
};
const setValue = (target, key, value) => {
return lodashEs.set(target, key, value);
};
const compareVersion = (version1, version2) => {
const arr1 = version1.split(".").map((item) => Number(item));
const arr2 = version2.split(".").map((item) => Number(item));
const length = Math.max(arr1.length, arr2.length);
for (let i = 0; i < length; i++) {
if ((arr1[i] || 0) > (arr2[i] || 0)) return 1;
if ((arr1[i] || 0) < (arr2[i] || 0)) return -1;
}
return 0;
};
const versionIsLessThan260 = compareVersion(version.version, "2.6.0") < 0;
const versionIsLessThan299 = compareVersion(version.version, "2.9.9") < 0;
const getLabel = (label) => label ? vue.unref(label) : "";
const removeChildrenField = (item) => {
const { children, ...rest } = item;
const data = { ...rest, __children: children };
return data;
};
exports.isArray = is.isArray;
exports.isBoolean = is.isBoolean;
exports.isDate = is.isDate;
exports.isEmptyObject = is.isEmptyObject;
exports.isFunction = is.isFunction;
exports.isMap = is.isMap;
exports.isObject = is.isObject;
exports.isPlainObject = is.isPlainObject;
exports.isPromise = is.isPromise;
exports.isRegExp = is.isRegExp;
exports.isSVGElement = is.isSVGElement;
exports.isSet = is.isSet;
exports.isString = is.isString;
exports.isSymbol = is.isSymbol;
exports.isUrl = is.isUrl;
exports.objectToString = is.objectToString;
exports.toRawType = is.toRawType;
exports.toTypeString = is.toTypeString;
exports.formatDate = format.formatDate;
exports.formatMoney = format.formatMoney;
exports.compareVersion = compareVersion;
exports.filterSlots = filterSlots;
exports.getCustomProps = getCustomProps;
exports.getDescLabelSlotName = getDescLabelSlotName;
exports.getDescSlotName = getDescSlotName;
exports.getExtraSlotName = getExtraSlotName;
exports.getFieldSlotName = getFieldSlotName;
exports.getLabel = getLabel;
exports.getLabelSlotName = getLabelSlotName;
exports.getSlotName = getSlotName;
exports.getTableCellSlotName = getTableCellSlotName;
exports.getTableHeaderSlotName = getTableHeaderSlotName;
exports.getTableKey = getTableKey;
exports.getTooltip = getTooltip;
exports.getValue = getValue;
exports.handleSlots = handleSlots;
exports.removeChildrenField = removeChildrenField;
exports.setValue = setValue;
exports.versionIsLessThan260 = versionIsLessThan260;
exports.versionIsLessThan299 = versionIsLessThan299;