Skip to content
Extraits de code Groupes Projets
Valider ad5d3134 rédigé par ThibG's avatar ThibG Validation de Eugen Rochko
Parcourir les fichiers

Place emoji picker top if it is closer to the bottom of the viewport (fixes #7277) (#7314)

parent a5293fdf
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -162,12 +162,12 @@ class EmojiPickerMenu extends React.PureComponent { ...@@ -162,12 +162,12 @@ class EmojiPickerMenu extends React.PureComponent {
static defaultProps = { static defaultProps = {
style: {}, style: {},
loading: true, loading: true,
placement: 'bottom',
frequentlyUsedEmojis: [], frequentlyUsedEmojis: [],
}; };
state = { state = {
modifierOpen: false, modifierOpen: false,
placement: null,
}; };
handleDocumentClick = e => { handleDocumentClick = e => {
...@@ -298,7 +298,7 @@ export default class EmojiPickerDropdown extends React.PureComponent { ...@@ -298,7 +298,7 @@ export default class EmojiPickerDropdown extends React.PureComponent {
this.dropdown = c; this.dropdown = c;
} }
onShowDropdown = () => { onShowDropdown = ({ target }) => {
this.setState({ active: true }); this.setState({ active: true });
if (!EmojiPicker) { if (!EmojiPicker) {
...@@ -313,6 +313,9 @@ export default class EmojiPickerDropdown extends React.PureComponent { ...@@ -313,6 +313,9 @@ export default class EmojiPickerDropdown extends React.PureComponent {
this.setState({ loading: false }); this.setState({ loading: false });
}); });
} }
const { top } = target.getBoundingClientRect();
this.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });
} }
onHideDropdown = () => { onHideDropdown = () => {
...@@ -324,7 +327,7 @@ export default class EmojiPickerDropdown extends React.PureComponent { ...@@ -324,7 +327,7 @@ export default class EmojiPickerDropdown extends React.PureComponent {
if (this.state.active) { if (this.state.active) {
this.onHideDropdown(); this.onHideDropdown();
} else { } else {
this.onShowDropdown(); this.onShowDropdown(e);
} }
} }
} }
...@@ -346,7 +349,7 @@ export default class EmojiPickerDropdown extends React.PureComponent { ...@@ -346,7 +349,7 @@ export default class EmojiPickerDropdown extends React.PureComponent {
render () { render () {
const { intl, onPickEmoji, onSkinTone, skinTone, frequentlyUsedEmojis } = this.props; const { intl, onPickEmoji, onSkinTone, skinTone, frequentlyUsedEmojis } = this.props;
const title = intl.formatMessage(messages.emoji); const title = intl.formatMessage(messages.emoji);
const { active, loading } = this.state; const { active, loading, placement } = this.state;
return ( return (
<div className='emoji-picker-dropdown' onKeyDown={this.handleKeyDown}> <div className='emoji-picker-dropdown' onKeyDown={this.handleKeyDown}>
...@@ -358,7 +361,7 @@ export default class EmojiPickerDropdown extends React.PureComponent { ...@@ -358,7 +361,7 @@ export default class EmojiPickerDropdown extends React.PureComponent {
/> />
</div> </div>
<Overlay show={active} placement='bottom' target={this.findTarget}> <Overlay show={active} placement={placement} target={this.findTarget}>
<EmojiPickerMenu <EmojiPickerMenu
custom_emojis={this.props.custom_emojis} custom_emojis={this.props.custom_emojis}
loading={loading} loading={loading}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter