Add list title editing (#9748)
* Add list title editing Port changes made by ash for glitch-soc * Code style fixesmaster
parent
dad339da6d
commit
188f1c7c89
@ -0,0 +1,70 @@ |
|||||||
|
import React from 'react'; |
||||||
|
import { connect } from 'react-redux'; |
||||||
|
import PropTypes from 'prop-types'; |
||||||
|
import { changeListEditorTitle, submitListEditor } from '../../../actions/lists'; |
||||||
|
import IconButton from '../../../components/icon_button'; |
||||||
|
import { defineMessages, injectIntl } from 'react-intl'; |
||||||
|
|
||||||
|
const messages = defineMessages({ |
||||||
|
title: { id: 'lists.edit.submit', defaultMessage: 'Change title' }, |
||||||
|
}); |
||||||
|
|
||||||
|
const mapStateToProps = state => ({ |
||||||
|
value: state.getIn(['listEditor', 'title']), |
||||||
|
disabled: !state.getIn(['listEditor', 'isChanged']), |
||||||
|
}); |
||||||
|
|
||||||
|
const mapDispatchToProps = dispatch => ({ |
||||||
|
onChange: value => dispatch(changeListEditorTitle(value)), |
||||||
|
onSubmit: () => dispatch(submitListEditor(false)), |
||||||
|
}); |
||||||
|
|
||||||
|
export default @connect(mapStateToProps, mapDispatchToProps) |
||||||
|
@injectIntl |
||||||
|
class ListForm extends React.PureComponent { |
||||||
|
|
||||||
|
static propTypes = { |
||||||
|
value: PropTypes.string.isRequired, |
||||||
|
disabled: PropTypes.bool, |
||||||
|
intl: PropTypes.object.isRequired, |
||||||
|
onChange: PropTypes.func.isRequired, |
||||||
|
onSubmit: PropTypes.func.isRequired, |
||||||
|
}; |
||||||
|
|
||||||
|
handleChange = e => { |
||||||
|
this.props.onChange(e.target.value); |
||||||
|
} |
||||||
|
|
||||||
|
handleSubmit = e => { |
||||||
|
e.preventDefault(); |
||||||
|
this.props.onSubmit(); |
||||||
|
} |
||||||
|
|
||||||
|
handleClick = () => { |
||||||
|
this.props.onSubmit(); |
||||||
|
} |
||||||
|
|
||||||
|
render () { |
||||||
|
const { value, disabled, intl } = this.props; |
||||||
|
|
||||||
|
const title = intl.formatMessage(messages.title); |
||||||
|
|
||||||
|
return ( |
||||||
|
<form className='column-inline-form' onSubmit={this.handleSubmit}> |
||||||
|
<input |
||||||
|
className='setting-text' |
||||||
|
value={value} |
||||||
|
onChange={this.handleChange} |
||||||
|
/> |
||||||
|
|
||||||
|
<IconButton |
||||||
|
disabled={disabled} |
||||||
|
icon='check' |
||||||
|
title={title} |
||||||
|
onClick={this.handleClick} |
||||||
|
/> |
||||||
|
</form> |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue