mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
66 lines
1.0 KiB
JavaScript
66 lines
1.0 KiB
JavaScript
import { use } from '../utils';
|
|
|
|
const [sfc, bem] = use('key');
|
|
|
|
export default sfc({
|
|
props: {
|
|
type: String,
|
|
theme: Array,
|
|
text: [String, Number]
|
|
},
|
|
|
|
data() {
|
|
return {
|
|
active: false
|
|
};
|
|
},
|
|
|
|
computed: {
|
|
className() {
|
|
const classNames = this.theme.slice(0);
|
|
|
|
if (this.active) {
|
|
classNames.push('active');
|
|
}
|
|
|
|
if (this.type) {
|
|
classNames.push(this.type);
|
|
}
|
|
|
|
return bem(classNames);
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
onFocus() {
|
|
this.active = true;
|
|
},
|
|
|
|
onBlur(event) {
|
|
this.active = false;
|
|
},
|
|
|
|
onClick() {
|
|
this.$emit('press', this.text, this.type);
|
|
}
|
|
},
|
|
|
|
render(h) {
|
|
const { onBlur } = this;
|
|
return (
|
|
<i
|
|
role="button"
|
|
tabindex="0"
|
|
class={['van-hairline', this.className]}
|
|
onClick={this.onClick}
|
|
onTouchstart={this.onFocus}
|
|
onTouchmove={onBlur}
|
|
onTouchend={onBlur}
|
|
onTouchcancel={onBlur}
|
|
>
|
|
{this.slots('default') || this.text}
|
|
</i>
|
|
);
|
|
}
|
|
});
|