You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.7 KiB

  1. import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown';
  2. import EmojiPicker from 'emojione-picker';
  3. import PropTypes from 'prop-types';
  4. import { defineMessages, injectIntl } from 'react-intl';
  5. const messages = defineMessages({
  6. emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' },
  7. emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' }
  8. });
  9. const settings = {
  10. imageType: 'png',
  11. sprites: false,
  12. imagePathPNG: '/emoji/'
  13. };
  14. const style = {
  15. position: 'absolute',
  16. right: '5px',
  17. top: '5px'
  18. };
  19. class EmojiPickerDropdown extends React.PureComponent {
  20. constructor (props, context) {
  21. super(props, context);
  22. this.setRef = this.setRef.bind(this);
  23. this.handleChange = this.handleChange.bind(this);
  24. }
  25. setRef (c) {
  26. this.dropdown = c;
  27. }
  28. handleChange (data) {
  29. this.dropdown.hide();
  30. this.props.onPickEmoji(data);
  31. }
  32. render () {
  33. const { intl } = this.props;
  34. return (
  35. <Dropdown ref={this.setRef} style={style}>
  36. <DropdownTrigger className='emoji-button' title={intl.formatMessage(messages.emoji)} style={{ fontSize: `24px`, width: `24px`, lineHeight: `24px`, display: 'block', marginLeft: '2px' }}>
  37. <img draggable="false" className="emojione" alt="🙂" src="/emoji/1f602.svg" />
  38. </DropdownTrigger>
  39. <DropdownContent className='dropdown__left light'>
  40. <EmojiPicker emojione={settings} onChange={this.handleChange} searchPlaceholder={intl.formatMessage(messages.emoji_search)} search={true} />
  41. </DropdownContent>
  42. </Dropdown>
  43. );
  44. }
  45. }
  46. EmojiPickerDropdown.propTypes = {
  47. intl: PropTypes.object.isRequired,
  48. onPickEmoji: PropTypes.func.isRequired
  49. };
  50. export default injectIntl(EmojiPickerDropdown);