[improvement] use component name (#2450)

This commit is contained in:
neverland
2019-01-06 23:08:14 +08:00
committed by GitHub
parent e437e9c10d
commit bf50db9ea0
13 changed files with 87 additions and 76 deletions
+5 -33
View File
@@ -1,46 +1,18 @@
/**
* Create a basic component with common options
*/
import '../locale';
import createBem from './bem';
import useSfc from './use/sfc';
import useBem from './use/bem';
import i18n from '../mixins/i18n';
import { isDef, camelize } from '.';
function install(Vue) {
const { name } = this;
Vue.component(name, this);
Vue.component((camelize(`-${name}`)), this);
}
function returnArray() {
return [];
}
function defaultProps(props) {
Object.keys(props).forEach(key => {
if (props[key] === Array) {
props[key] = {
type: Array,
default: returnArray
};
} else if (props[key] === Number) {
props[key] = {
type: Number,
default: 0
};
}
});
}
import { isDef } from '.';
export default function (sfc) {
sfc.name = 'van-' + sfc.name;
sfc.install = sfc.install || install;
sfc = useSfc('van-' + sfc.name)(sfc);
sfc.mixins = sfc.mixins || [];
sfc.mixins.push(i18n);
sfc.methods = sfc.methods || {};
sfc.methods.isDef = isDef;
sfc.methods.b = createBem(sfc.name);
sfc.props && defaultProps(sfc.props);
sfc.methods.b = useBem(sfc.name);
return sfc;
}