UNPKG

plus-pro-components

Version:

Page level components developed based on Element Plus.

161 lines (157 loc) 5.07 kB
'use strict'; 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;