city-casereport/miniprogram_npm/tdesign-miniprogram/common/utils.wxs
2023-12-06 14:22:42 +08:00

138 lines
2.8 KiB
XML

/* 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,
};