press-ui
Version:
简单、易用的跨端组件库,兼容 Vue2 和 Vue3,同时支持 uni-app和普通 Vue 项目
54 lines (45 loc) • 1.2 kB
JavaScript
const PREFIX = 'press__';
function getClassList(args) {
const list = args.reduce((acc, item) => {
if (Array.isArray(item)) {
acc.push(...item);
} else {
acc.push(item);
}
return acc;
}, []);
const parsed = list.reduce((acc, item) => {
if (typeof item === 'string') {
acc.push(item);
} else if (typeof item === 'object') {
Object.keys(item).map((key) => {
if (item[key]) {
acc.push(key);
}
});
}
return acc;
}, []);
return parsed;
}
export function getActClass(useTipClass, tipClassMap, args) {
return getActClassWithPrefix(useTipClass, tipClassMap, PREFIX, args);
}
export function getActClassWithPrefix(useTipClass, tipClassMap, prefix, args) {
const list = getClassList(args);
const tipClasses = list.map(item => (item ? tipClassMap[item] || '' : ''));
const pressClasses = list.map((item) => {
const reg = new RegExp(`^${prefix}`);
if (!item) {
return '';
}
if (reg.test(item)) {
return item;
}
return `${prefix}${item}`;
});
if (!useTipClass) {
return pressClasses.join(' ');
}
return [...pressClasses, ...tipClasses].join(' ');
}