Add translations, close button and make Giphy modal more beautiful

This commit is contained in:
koyu 2021-01-19 17:51:44 +01:00 committed by Essem
parent 6da827ace9
commit 4d57353991
No known key found for this signature in database
GPG key ID: 7D497397CC3A2A8C
2 changed files with 27 additions and 108 deletions

View file

@ -1,15 +1,20 @@
import React from 'react';
import PropTypes from 'prop-types';
import Button from 'flavours/glitch/components/button';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { connect } from 'react-redux';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { giphySet, uploadCompose } from 'flavours/glitch/actions/compose';
import IconButton from 'flavours/glitch/components/icon_button';
import { debounce, mapValues } from 'lodash';
import classNames from 'classnames';
import ReactGiphySearchbox from 'react-giphy-searchbox'
import { changeCompose } from 'flavours/glitch/actions/compose';
import { defineMessages, injectIntl } from 'react-intl';
const messages = defineMessages({
search: { id: 'giphy.search', defaultMessage: 'Search for GIFs' },
error: { id: 'giphy.error', defaultMessage: 'Oops! Something went wrong. Please, try again.' },
loading: { id: 'giphy.loading', defaultMessage: 'Loading...'},
nomatches: { id: 'giphy.nomatches', defaultMessage: 'No matches found.' },
close: { id: 'settings.close', defaultMessage: 'Close' },
});
// Utility for converting base64 image to binary for upload
// https://stackoverflow.com/questions/35940290/how-to-convert-base64-string-to-javascript-file-object-like-as-from-file-input-f
@ -34,19 +39,17 @@ const mapDispatchToProps = dispatch => ({
});
export default @connect(mapStateToProps, mapDispatchToProps)
@injectIntl
class GIFModal extends ImmutablePureComponent {
static propTypes = {
intl: PropTypes.object.isRequired,
options: ImmutablePropTypes.map,
onClose: PropTypes.func.isRequired,
setOpt: PropTypes.func.isRequired,
submit: PropTypes.func.isRequired,
};
componentDidMount() {
//If component mounted
}
onDoneButton = (item) => {
const url = item["images"]["original"]["mp4"];
var modal = this;
@ -64,31 +67,14 @@ class GIFModal extends ImmutablePureComponent {
});
};
handleClick = () => {
this.props.onClose();
}
handleCancel = () => {
this.props.onClose();
}
setRef = (c) => {
this.button = c;
}
toggleNotifications = () => {
this.props.onToggleNotifications();
}
changeMuteDuration = (e) => {
this.props.onChangeMuteDuration(e);
}
render () {
const { intl } = this.props;
return (
<div className='modal-root__modal mute-modal'>
<div className='mute-modal__container'>
<div className='modal-root__modal giphy-modal'>
<div className='giphy-modal__container'>
<IconButton title={intl.formatMessage(messages.close)} icon="close" size="16" onClick={this.props.onClose} style={{float: "right"}} /><br />
<ReactGiphySearchbox
apiKey="1ttK05MF98dLllFFknTAVo0U4CGcQb4J"
onSelect={item => this.onDoneButton(item)}
@ -96,6 +82,12 @@ class GIFModal extends ImmutablePureComponent {
{ columns: 2, imageWidth: 190, gutter: 5 },
{ mq: "700px", columns: 2, imageWidth: 210, gutter: 5 }
]}
autoFocus="true"
searchPlaceholder={intl.formatMessage(messages.search)}
messageError={intl.formatMessage(messages.error)}
messageLoading={intl.formatMessage(messages.loading)}
messageNoMatches={intl.formatMessage(messages.nomatches)}
wrapperClassName="giphy-modal__searchbox"
/>
</div>
</div>

View file

@ -1,86 +1,13 @@
$giphyBg: #d9e1e8;
.giphy-modal {
@extend .boost-modal;
width: unset;
width: 500px;
}
.giphy-modal__container {
background: $giphyBg;
text-align: center;
line-height: 0; // remove weird gap under canvas
canvas {
border: 5px solid $giphyBg;
}
padding: 20px;
}
.giphy-modal__action-bar {
@extend .boost-modal__action-bar;
.filler {
flex-grow: 1;
margin: 0;
padding: 0;
}
.giphy-toolbar {
line-height: 1;
display: flex;
flex-direction: column;
flex-grow: 0;
justify-content: space-around;
&.with-inputs {
label {
display: inline-block;
width: 70px;
text-align: right;
margin-right: 2px;
}
input[type="number"],input[type="text"] {
width: 40px;
}
span.val {
display: inline-block;
text-align: left;
width: 50px;
}
}
}
.giphy-palette {
padding-right: 0 !important;
border: 1px solid black;
line-height: .2rem;
flex-grow: 0;
background: white;
button {
appearance: none;
width: 1rem;
height: 1rem;
margin: 0; padding: 0;
text-align: center;
color: black;
text-shadow: 0 0 1px white;
cursor: pointer;
box-shadow: inset 0 0 1px rgba(white, .5);
border: 1px solid black;
outline-offset:-1px;
&.foreground {
outline: 1px dashed white;
}
&.background {
outline: 1px dashed red;
}
&.foreground.background {
outline: 1px dashed red;
border-color: white;
}
}
}
}
.giphy-modal__searchbox {
width: 450px !important;
}