UNPKG

swan-ui

Version:
116 lines (102 loc) 3.74 kB
'use strict'; 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; }