element-react-codish
Version:
Element UI for React
57 lines (49 loc) • 1.32 kB
JSX
/* @flow */
import React from 'react';
import { Component, PropTypes, Transition, View } from '../../libs';
export default class Tag extends Component {
constructor(props: Object) {
super(props);
this.state = {
visible: true
};
}
handleClose() {
if (this.props.onClose) {
if (this.props.onClose()) {
this.setState({
visible: false
});
}
} else {
this.setState({
visible: false
});
}
}
render() {
const { type, hit, closable, closeTransition, color } = this.props;
return(
<Transition name={closeTransition ? '' : 'el-zoom-in-center'} duration="200">
<View key={this.state.visible} show={this.state.visible}>
<span style={this.style({
backgroundColor: color
})} className={this.className('el-tag', type && `el-tag--${type}`, {
'is-hit': hit
})}>
{this.props.children}
{ closable && <i className="el-tag__close el-icon-close" onClick={this.handleClose.bind(this)}></i> }
</span>
</View>
</Transition>
)
}
}
Tag.propTypes = {
closable: PropTypes.bool,
type: PropTypes.string,
hit: PropTypes.bool,
color: PropTypes.string,
closeTransition: PropTypes.bool,
onClose: PropTypes.func
}