diff --git a/packages/mixins/bem.js b/packages/utils/bem.js similarity index 63% rename from packages/mixins/bem.js rename to packages/utils/bem.js index 20cce2b8d..12451dc6f 100644 --- a/packages/mixins/bem.js +++ b/packages/utils/bem.js @@ -22,24 +22,19 @@ const prefix = (name, mods) => { } const ret = {}; - mods && Object.keys(mods).forEach(key => { - ret[name + MODS + key] = mods[key]; - }); + mods && + Object.keys(mods).forEach(key => { + ret[name + MODS + key] = mods[key]; + }); return ret; }; -export default { - methods: { - b(el, mods) { - const { name } = this.$options; - - if (el && typeof el !== 'string') { - mods = el; - el = ''; - } - el = join(name, el, ELEMENT); - - return mods ? [el, prefix(el, mods)] : el; - } +export default name => (el, mods) => { + if (el && typeof el !== 'string') { + mods = el; + el = ''; } + el = join(name, el, ELEMENT); + + return mods ? [el, prefix(el, mods)] : el; }; diff --git a/packages/utils/create-basic.js b/packages/utils/create-basic.js index f85314c51..b2acd1655 100644 --- a/packages/utils/create-basic.js +++ b/packages/utils/create-basic.js @@ -2,7 +2,7 @@ * Create a basic component with common options */ import '../locale'; -import bem from '../mixins/bem'; +import createBem from './bem'; import i18n from '../mixins/i18n'; import { isDef, camelize } from '.'; @@ -36,9 +36,10 @@ export default function (sfc) { sfc.name = 'van-' + sfc.name; sfc.install = sfc.install || install; sfc.mixins = sfc.mixins || []; - sfc.mixins.push(i18n, bem); + sfc.mixins.push(i18n); sfc.methods = sfc.methods || {}; sfc.methods.isDef = isDef; + sfc.methods.b = createBem(sfc.name); sfc.props && defaultProps(sfc.props); return sfc;