add clear button & missing monsterpit visibility icons

staging
multiple creatures 2019-07-28 20:56:08 -05:00
parent b93bf4b271
commit 4fc97d77a9
3 changed files with 34 additions and 3 deletions

View File

@ -52,6 +52,7 @@ class ComposeForm extends ImmutablePureComponent {
isUploading: PropTypes.bool,
onChange: PropTypes.func,
onSubmit: PropTypes.func,
onClearAll: PropTypes.func,
onClearSuggestions: PropTypes.func,
onFetchSuggestions: PropTypes.func,
onSuggestionSelected: PropTypes.func,
@ -111,6 +112,7 @@ class ComposeForm extends ImmutablePureComponent {
text,
mediaDescriptionConfirmation,
onMediaDescriptionConfirm,
onClearAll,
} = this.props;
// If something changes inside the textarea, then we update the
@ -168,6 +170,10 @@ class ComposeForm extends ImmutablePureComponent {
this.handleSubmit();
}
handleClearAll = () => {
this.props.onClearAll();
}
// Selects a suggestion from the autofill.
onSuggestionSelected = (tokenStart, token, value) => {
this.props.onSuggestionSelected(tokenStart, token, value, ['text']);
@ -279,6 +285,7 @@ class ComposeForm extends ImmutablePureComponent {
handleSelect,
handleSubmit,
handleRefTextarea,
handleClearAll,
} = this;
const {
advancedOptions,
@ -376,6 +383,7 @@ class ComposeForm extends ImmutablePureComponent {
disabled={disabledButton}
onSecondarySubmit={handleSecondarySubmit}
onSubmit={handleSubmit}
onClearAll={handleClearAll}
privacy={privacy}
sideArm={sideArm}
/>

View File

@ -23,6 +23,10 @@ const messages = defineMessages({
defaultMessage: '{publish}!',
id: 'compose_form.publish_loud',
},
clear: {
defaultMessage: 'Clear',
id: 'compose_form.clear',
},
});
export default @injectIntl
@ -34,12 +38,13 @@ class Publisher extends ImmutablePureComponent {
intl: PropTypes.object.isRequired,
onSecondarySubmit: PropTypes.func,
onSubmit: PropTypes.func,
privacy: PropTypes.oneOf(['direct', 'private', 'unlisted', 'public']),
sideArm: PropTypes.oneOf(['none', 'direct', 'private', 'unlisted', 'public']),
onClearAll: PropTypes.func,
privacy: PropTypes.oneOf(['direct', 'private', 'unlisted', 'local', 'public']),
sideArm: PropTypes.oneOf(['none', 'direct', 'private', 'unlisted', 'local', 'public']),
};
render () {
const { countText, disabled, intl, onSecondarySubmit, onSubmit, privacy, sideArm } = this.props;
const { countText, disabled, intl, onSecondarySubmit, onSubmit, onClearAll, privacy, sideArm } = this.props;
const diff = maxChars - length(countText || '');
const computedClass = classNames('composer--publisher', {
@ -49,6 +54,17 @@ class Publisher extends ImmutablePureComponent {
return (
<div className={computedClass}>
<Button
className='clear'
onClick={onClearAll}
text={
<span>
<Icon icon='trash-o' />
{' '}
<FormattedMessage {...messages.clear} />
</span>
}
/>
<span className='count'>{diff}</span>
{sideArm && sideArm !== 'none' ? (
<Button
@ -61,6 +77,7 @@ class Publisher extends ImmutablePureComponent {
<Icon
icon={{
public: 'globe',
local: 'users',
unlisted: 'unlock',
private: 'lock',
direct: 'envelope',
@ -86,6 +103,7 @@ class Publisher extends ImmutablePureComponent {
private: 'lock',
public: 'globe',
unlisted: 'unlock',
local: 'users',
}[privacy]}
/>
{' '}

View File

@ -14,6 +14,7 @@ import {
submitCompose,
unmountCompose,
uploadCompose,
resetCompose,
} from 'flavours/glitch/actions/compose';
import {
openModal,
@ -134,6 +135,10 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
}));
},
onClearAll() {
dispatch(resetCompose());
}
});
export default injectIntl(connect(mapStateToProps, mapDispatchToProps)(ComposeForm));