/* utils */
|
|
/**
|
* addUnit */
|
// 为 css 添加单位
|
function addUnit(value) {
|
var REGEXP = getRegExp('^-?\d+(.\d+)?$');
|
if (value == null) {
|
return undefined;
|
}
|
return REGEXP.test('' + value) ? value + 'px' : value;
|
}
|
|
function isString(string) {
|
return string && string.constructor === 'String';
|
}
|
|
function isArray(array) {
|
return array && array.constructor === 'Array';
|
}
|
|
function isObject(obj) {
|
return obj && obj.constructor === 'Object';
|
}
|
|
var isNoEmptyObj = function (obj) {
|
return isObject(obj) && JSON.stringify(obj) !== '{}';
|
};
|
|
function includes(arr, value) {
|
if (!arr || !isArray(arr)) return false;
|
|
var i = 0;
|
var len = arr.length;
|
|
for (; i < len; i++) {
|
if (arr[i] === value) return true;
|
}
|
return false;
|
}
|
|
function cls(base, arr) {
|
var res = [base];
|
var i = 0;
|
for (var size = arr.length; i < size; i++) {
|
var item = arr[i];
|
|
if (item && item.constructor === 'Array') {
|
var key = arr[i][0];
|
var value = arr[i][1];
|
|
if (value) {
|
res.push(base + '--' + key);
|
}
|
} else if (typeof item === 'string' || typeof item === 'number') {
|
if (item) {
|
res.push(base + '--' + item);
|
}
|
}
|
}
|
return res.join(' ');
|
}
|
|
function getBadgeAriaLabel(options) {
|
var maxCount = options.maxCount || 99;
|
if (options.dot) {
|
return '有新的消息';
|
}
|
if (options.count === '...') {
|
return '有很多消息';
|
}
|
if (isNaN(options.count)) {
|
return options.count;
|
}
|
var str1 = '有' + maxCount + '+条消息';
|
var str2 = '有' + options.count + '条消息';
|
return Number(options.count) > maxCount ? str1 : str2;
|
}
|
|
function endsWith(str, endStr) {
|
return str.slice(-endStr.length) === endStr ? str : str + endStr;
|
}
|
|
function keys(obj) {
|
return JSON.stringify(obj)
|
.replace(getRegExp('{|}|"', 'g'), '')
|
.split(',')
|
.map(function (item) {
|
return item.split(':')[0];
|
});
|
}
|
|
function kebabCase(str) {
|
return str
|
.replace(getRegExp('[A-Z]', 'g'), function (ele) {
|
return '-' + ele;
|
})
|
.toLowerCase();
|
}
|
|
function _style(styles) {
|
if (isArray(styles)) {
|
return styles
|
.filter(function (item) {
|
return item != null && item !== '';
|
})
|
.map(function (item) {
|
return isArray(item) ? _style(item) : endsWith(item, ';');
|
})
|
.join(' ');
|
}
|
|
if (isObject(styles)) {
|
return keys(styles)
|
.filter(function (key) {
|
return styles[key] != null && styles[key] !== '';
|
})
|
.map(function (key) {
|
return [kebabCase(key), [styles[key]]].join(':');
|
})
|
.join(';');
|
}
|
|
return styles;
|
}
|
|
module.exports = {
|
addUnit: addUnit,
|
isString: isString,
|
isArray: isArray,
|
isObject: isObject,
|
isNoEmptyObj: isNoEmptyObj,
|
includes: includes,
|
cls: cls,
|
getBadgeAriaLabel: getBadgeAriaLabel,
|
_style: _style,
|
};
|