summaryrefslogtreecommitdiffstats
path: root/webapp/components/emoji_picker
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/emoji_picker')
-rw-r--r--webapp/components/emoji_picker/emoji_picker.jsx102
-rw-r--r--webapp/components/emoji_picker/emoji_picker_overlay.jsx17
2 files changed, 72 insertions, 47 deletions
diff --git a/webapp/components/emoji_picker/emoji_picker.jsx b/webapp/components/emoji_picker/emoji_picker.jsx
index a047c1277..0d9b34176 100644
--- a/webapp/components/emoji_picker/emoji_picker.jsx
+++ b/webapp/components/emoji_picker/emoji_picker.jsx
@@ -309,7 +309,7 @@ export default class EmojiPicker extends React.Component {
right: this.props.rightOffset
};
} else {
- pickerStyle = this.props.style;
+ pickerStyle = {...this.props.style};
}
}
@@ -325,91 +325,111 @@ export default class EmojiPicker extends React.Component {
<div className='emoji-picker__categories'>
<EmojiPickerCategory
category='recent'
- icon={<i
- className='fa fa-clock-o'
- title={Utils.localizeMessage('emoji_picker.recent', 'Recently Used')}
- />}
+ icon={
+ <i
+ className='fa fa-clock-o'
+ title={Utils.localizeMessage('emoji_picker.recent', 'Recently Used')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'recent'}
/>
<EmojiPickerCategory
category='people'
- icon={<i
- className='fa fa-smile-o'
- title={Utils.localizeMessage('emoji_picker.people', 'People')}
- />}
+ icon={
+ <i
+ className='fa fa-smile-o'
+ title={Utils.localizeMessage('emoji_picker.people', 'People')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'people'}
/>
<EmojiPickerCategory
category='nature'
- icon={<i
- className='fa fa-leaf'
- title={Utils.localizeMessage('emoji_picker.nature', 'Nature')}
- />}
+ icon={
+ <i
+ className='fa fa-leaf'
+ title={Utils.localizeMessage('emoji_picker.nature', 'Nature')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'nature'}
/>
<EmojiPickerCategory
category='food'
- icon={<i
- className='fa fa-cutlery'
- title={Utils.localizeMessage('emoji_picker.food', 'Food')}
- />}
+ icon={
+ <i
+ className='fa fa-cutlery'
+ title={Utils.localizeMessage('emoji_picker.food', 'Food')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'food'}
/>
<EmojiPickerCategory
category='activity'
- icon={<i
- className='fa fa-futbol-o'
- title={Utils.localizeMessage('emoji_picker.activity', 'Activity')}
- />}
+ icon={
+ <i
+ className='fa fa-futbol-o'
+ title={Utils.localizeMessage('emoji_picker.activity', 'Activity')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'activity'}
/>
<EmojiPickerCategory
category='travel'
- icon={<i
- className='fa fa-plane'
- title={Utils.localizeMessage('emoji_picker.travel', 'Travel')}
- />}
+ icon={
+ <i
+ className='fa fa-plane'
+ title={Utils.localizeMessage('emoji_picker.travel', 'Travel')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'travel'}
/>
<EmojiPickerCategory
category='objects'
- icon={<i
- className='fa fa-lightbulb-o'
- title={Utils.localizeMessage('emoji_picker.objects', 'Objects')}
- />}
+ icon={
+ <i
+ className='fa fa-lightbulb-o'
+ title={Utils.localizeMessage('emoji_picker.objects', 'Objects')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'objects'}
/>
<EmojiPickerCategory
category='symbols'
- icon={<i
- className='fa fa-heart-o'
- title={Utils.localizeMessage('emoji_picker.symbols', 'Symbols')}
- />}
+ icon={
+ <i
+ className='fa fa-heart-o'
+ title={Utils.localizeMessage('emoji_picker.symbols', 'Symbols')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'symbols'}
/>
<EmojiPickerCategory
category='flags'
- icon={<i
- className='fa fa-flag-o'
- title={Utils.localizeMessage('emoji_picker.flags', 'Flags')}
- />}
+ icon={
+ <i
+ className='fa fa-flag-o'
+ title={Utils.localizeMessage('emoji_picker.flags', 'Flags')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'flags'}
/>
<EmojiPickerCategory
category='custom'
- icon={<i
- className='fa fa-at'
- title={Utils.localizeMessage('emoji_picker.custom', 'Custom')}
- />}
+ icon={
+ <i
+ className='fa fa-at'
+ title={Utils.localizeMessage('emoji_picker.custom', 'Custom')}
+ />
+ }
onCategoryClick={this.handleCategoryClick}
selected={this.state.category === 'custom'}
/>
diff --git a/webapp/components/emoji_picker/emoji_picker_overlay.jsx b/webapp/components/emoji_picker/emoji_picker_overlay.jsx
index 0a289a242..7174e004c 100644
--- a/webapp/components/emoji_picker/emoji_picker_overlay.jsx
+++ b/webapp/components/emoji_picker/emoji_picker_overlay.jsx
@@ -15,7 +15,15 @@ export default class EmojiPickerOverlay extends React.PureComponent {
onEmojiClick: PropTypes.func.isRequired,
onHide: PropTypes.func.isRequired,
rightOffset: PropTypes.number,
- topOffset: PropTypes.number
+ topOffset: PropTypes.number,
+ spaceRequiredAbove: PropTypes.number,
+ spaceRequiredBelow: PropTypes.number
+ }
+
+ // Reasonable defaults calculated from from the center channel
+ static defaultProps = {
+ spaceRequiredAbove: 422,
+ spaceRequiredBelow: 436
}
constructor(props) {
@@ -28,15 +36,12 @@ export default class EmojiPickerOverlay extends React.PureComponent {
componentWillUpdate(nextProps) {
if (nextProps.show && !this.props.show) {
- const spaceRequiredAbove = 422;
- const spaceRequiredBelow = 436;
-
const targetBounds = nextProps.target().getBoundingClientRect();
let placement;
- if (targetBounds.top > spaceRequiredAbove) {
+ if (targetBounds.top > nextProps.spaceRequiredAbove) {
placement = 'top';
- } else if (window.innerHeight - targetBounds.bottom > spaceRequiredBelow) {
+ } else if (window.innerHeight - targetBounds.bottom > nextProps.spaceRequiredBelow) {
placement = 'bottom';
} else {
placement = 'left';