swan-ui
Version:
Vue Components for Mobile App.
116 lines (102 loc) • 3.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
exports.getClassObject = getClassObject;
exports.getStyleProps = getStyleProps;
exports.setPrefix = setPrefix;
exports.setPhPrefix = setPhPrefix;
var _propertyConfig = require('./propertyConfig');
var _propertyConfig2 = _interopRequireDefault(_propertyConfig);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var PREFIX = 'ph-';
/**
* 给class属性值添加前缀
* @param classProps {Array} 如: [primary,sm]
* @param withPrefix {String} 如: button
* @param withConstPrefix {String} 如:'ph-'
* @returns {Object} 如:{'ph-button-primary':true,'ph-button-sm':true}
*/
function getClassObject() {
var classProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var classPrefix = arguments[1];
var withPrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var withConstPrefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
classProps.unshift('');
var classObject = {};
classProps.forEach(function (item) {
if (withConstPrefix) {
classObject[PREFIX + setPrefix(item, classPrefix, withPrefix)] = true;
} else {
classObject[setPrefix(item, withPrefix)] = true;
}
});
return classObject;
}
/**
* 根据配置文件 propertyConfig.js 获取props中的class和style属性
* @method getStyleProps
* @param props {Object}
* @returns {{classProps: Array, styleObject: {}}}
*/
function getStyleProps(props) {
var classProps = [];
var styleProps = {};
for (var key in props) {
var value = props[key],
propConfig = _propertyConfig2.default[key];
if (value && propConfig) {
switch (typeof propConfig === 'undefined' ? 'undefined' : _typeof(propConfig)) {
case 'boolean':
if (value) {
classProps.push(filterClass(props, key));
}
break;
case 'function':
var param = propConfig.call(this, value);
if (typeof param == 'string') {
classProps.push(filterClass(props, param));
} else {
styleProps.push(filterClass(props, param));
}
break;
default:
classProps.push(filterClass(props, propConfig));
break;
}
}
}
return {
classProps: classProps,
styleObject: styleProps
};
}
/*
* 设置css类名前缀
* @method setPrefix
* @param name{String} class名字
* @param pre{Boolean} 是否添加前缀
* @return {String}
* */
function setPrefix(name, classPrefix) {
var pre = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var classArray = [];
if (pre && classPrefix) {
classArray.push(classPrefix);
}
if (name && name != classPrefix) {
classArray.push(name);
}
return classArray.join(classArray.length > 1 ? '-' : '');
}
function setPhPrefix(val) {
return 'ph-' + val;
}
function filterClass(props, key) {
if (!props.classMapping) {
return key;
}
var value = typeof key == 'string' ? props.classMapping[key] : key;
return value ? value : key;
}