|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /**
- * 该文件截取自 "ant-design-vue/es/_util/props-util.js" 文件,并对其做出特殊修改
- */
- function classNames() {
- let classes = []
-
- for (let i = 0; i < arguments.length; i++) {
- let arg = arguments[i]
- if (!arg) continue
-
- let argType = typeof arg
-
- if (argType === 'string' || argType === 'number') {
- classes.push(arg)
- } else if (Array.isArray(arg) && arg.length) {
- let inner = classNames.apply(null, arg)
- if (inner) {
- classes.push(inner)
- }
- } else if (argType === 'object') {
- for (let key in arg) {
- if (arg.hasOwnProperty(key) && arg[key]) {
- classes.push(key)
- }
- }
- }
- }
- return classes.join(' ')
- }
-
- const camelizeRE = /-(\w)/g
-
- function camelize(str) {
- return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''))
- }
-
-
- function objectCamelize(obj) {
- let res = {}
- Object.keys(obj).forEach(k => (res[camelize(k)] = obj[k]))
- return res
- }
-
- function parseStyleText(cssText = '', camel) {
- const res = {}
- const listDelimiter = /;(?![^(]*\))/g
- const propertyDelimiter = /:(.+)/
- cssText.split(listDelimiter).forEach(function (item) {
- if (item) {
- const tmp = item.split(propertyDelimiter)
- if (tmp.length > 1) {
- const k = camel ? camelize(tmp[0].trim()) : tmp[0].trim()
- res[k] = tmp[1].trim()
- }
- }
- })
- return res
- }
-
- export function getClass(ele) {
- let data = {}
- if (ele.data) {
- data = ele.data
- } else if (ele.$vnode && ele.$vnode.data) {
- data = ele.$vnode.data
- }
- const tempCls = data.class || {}
- const staticClass = data.staticClass
- let cls = {}
- staticClass &&
- staticClass.split(' ').forEach(c => {
- cls[c.trim()] = true
- })
- if (typeof tempCls === 'string') {
- tempCls.split(' ').forEach(c => {
- cls[c.trim()] = true
- })
- } else if (Array.isArray(tempCls)) {
- classNames(tempCls)
- .split(' ')
- .forEach(c => {
- cls[c.trim()] = true
- })
- } else {
- cls = { ...cls, ...tempCls }
- }
- return cls
- }
-
- export function getStyle(ele, camel) {
-
- getClass(ele)
-
- let data = {}
- if (ele.data) {
- data = ele.data
- } else if (ele.$vnode && ele.$vnode.data) {
- data = ele.$vnode.data
- }
-
- // update-begin-author:sunjianlei date:20200303 for: style 和 staticStyle 可以共存
- let style = data.style || {}
- let staticStyle = data.staticStyle
- staticStyle = staticStyle ? objectCamelize(data.staticStyle) : {}
- // update-end-author:sunjianlei date:20200303 for: style 和 staticStyle 可以共存
-
- if (typeof style === 'string') {
- style = parseStyleText(style, camel)
- } else if (camel && style) {
- // 驼峰化
- style = objectCamelize(style)
- }
- return { ...staticStyle, ...style }
- }
-
|