vant/packages/utils/create-basic.js

46 lines
946 B
JavaScript

/**
* Create a basic component with common options
*/
import '../locale';
import bem from '../mixins/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
};
}
});
}
export default function (sfc) {
sfc.name = 'van-' + sfc.name;
sfc.install = sfc.install || install;
sfc.mixins = sfc.mixins || [];
sfc.mixins.push(i18n, bem);
sfc.methods = sfc.methods || {};
sfc.methods.isDef = isDef;
sfc.props && defaultProps(sfc.props);
return sfc;
}