5 changed files with 97 additions and 13 deletions
@ -0,0 +1,54 @@ |
|||||
|
import React, { PureComponent } from 'react'; |
||||
|
import { Input, Icon } from 'antd'; |
||||
|
import styles from './index.less'; |
||||
|
|
||||
|
export default class EditableItem extends PureComponent { |
||||
|
state = { |
||||
|
value: this.props.value, |
||||
|
editable: false, |
||||
|
}; |
||||
|
handleChange = (e) => { |
||||
|
const value = e.target.value; |
||||
|
this.setState({ value }); |
||||
|
} |
||||
|
check = () => { |
||||
|
this.setState({ editable: false }); |
||||
|
if (this.props.onChange) { |
||||
|
this.props.onChange(this.state.value); |
||||
|
} |
||||
|
} |
||||
|
edit = () => { |
||||
|
this.setState({ editable: true }); |
||||
|
} |
||||
|
render() { |
||||
|
const { value, editable } = this.state; |
||||
|
return ( |
||||
|
<div className={styles.editableItem}> |
||||
|
{ |
||||
|
editable ? |
||||
|
<div className={styles.wrapper}> |
||||
|
<Input |
||||
|
value={value} |
||||
|
onChange={this.handleChange} |
||||
|
onPressEnter={this.check} |
||||
|
/> |
||||
|
<Icon |
||||
|
type="check" |
||||
|
className={styles.icon} |
||||
|
onClick={this.check} |
||||
|
/> |
||||
|
</div> |
||||
|
: |
||||
|
<div className={styles.wrapper}> |
||||
|
<span>{value || ' '}</span> |
||||
|
<Icon |
||||
|
type="edit" |
||||
|
className={styles.icon} |
||||
|
onClick={this.edit} |
||||
|
/> |
||||
|
</div> |
||||
|
} |
||||
|
</div> |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
@import "~antd/lib/style/themes/default.less"; |
||||
|
|
||||
|
.editableItem { |
||||
|
line-height: @input-height-base; |
||||
|
display: table; |
||||
|
width: 100%; |
||||
|
margin-top: (@font-size-base * @line-height-base - @input-height-base) / 2; |
||||
|
|
||||
|
.wrapper { |
||||
|
display: table-row; |
||||
|
|
||||
|
& > * { |
||||
|
display: table-cell; |
||||
|
} |
||||
|
|
||||
|
& > *:first-child { |
||||
|
width: 85%; |
||||
|
} |
||||
|
|
||||
|
.icon { |
||||
|
cursor: pointer; |
||||
|
text-align: right; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue