tommoor / emojione-picker

A react emoji picker for use with emojione
http://tommoor.github.io/emojione-picker
MIT License
261 stars 61 forks source link

Using emojione-picker with react-onclickoutside #40

Closed Olena377 closed 7 years ago

Olena377 commented 7 years ago

Hello everybody, I need some help. How can I wrap emojione-picker class into react-onclickoutside in order to use them together?

import React from 'react';
import ReactDOM from 'react-dom';
import OnClickOutside from 'react-onclickoutside';
import FileInput from 'react-file-input';
import EmojiPicker from 'emojione-picker';

class Conversation extends React.Component {
    constructor() {
        super();
        this.state = {
            text: '',
            isOpened: false
        }
    }
    showEmoji() {
        this.setState({
            isOpened: !this.state.isOpened
        });
    };
    render(){
        return (
            <div className="conversation">
                <div className="conversation__footer">
                    <div className="conversation__wrapper">
                        <a className={this.state.isOpened ? "fa fa-smile-o fa-2x conversation__icon conversation__icon--smile" : "fa fa-smile-o fa-2x conversation__icon conversation__icon--smile conversation__icon--opened"}
                                    aria-hidden="true"
                                    onClick={this.showEmoji.bind(this)}/>
                        <EmojiPicker className={this.state.isOpened ? " " : "display-none"} onChange={function(data){
                          console.log("Emoji chosen", data);
                        }} />
                    </div>
                </div>
            </div>

        )
    }
};

export default Conversation;
tommoor commented 7 years ago

It looks like you would want to use the optional second parameter of react-onclickoutside to a function that would set state.isOpened to false. See the second example under the Installation heading of the readme here: https://github.com/Pomax/react-onclickoutside#installation