vant/packages/button/index.vue
2018-11-15 15:30:17 +08:00

75 lines
1.2 KiB
Vue

<template>
<component
:is="tag"
:type="nativeType"
:disabled="disabled"
:class="b([
type,
size,
{
block,
plain,
round,
square,
loading,
disabled,
unclickable: disabled || loading,
'bottom-action': bottomAction
}
])"
@click="onClick"
>
<loading
v-if="loading"
size="20px"
:color="type === 'default' ? void 0 : ''"
/>
<span
v-else
:class="b('text')"
>
<slot>{{ text }}</slot>
</span>
</component>
</template>
<script>
import create from '../utils/create';
export default create({
name: 'button',
props: {
text: String,
block: Boolean,
plain: Boolean,
round: Boolean,
square: Boolean,
loading: Boolean,
disabled: Boolean,
nativeType: String,
bottomAction: Boolean,
tag: {
type: String,
default: 'button'
},
type: {
type: String,
default: 'default'
},
size: {
type: String,
default: 'normal'
}
},
methods: {
onClick(event) {
if (!this.loading && !this.disabled) {
this.$emit('click', event);
}
}
}
});
</script>