MM-52082 : Emoji Picker doesn't appear when clicking on Add Reaction from post menu in mobile view (#23174)

Этот коммит содержится в:
Hamza
2023-07-05 10:15:12 -04:00
коммит произвёл GitHub
родитель b153a39d3e
Коммит 2bb6830242
4 изменённых файлов: 32 добавлений и 15 удалений

Просмотреть файл

@@ -10,15 +10,18 @@ import {Constants} from 'utils/constants';
import {Emoji} from '@mattermost/types/emojis'; import {Emoji} from '@mattermost/types/emojis';
import EmojiPickerTabs from './emoji_picker_tabs'; import EmojiPickerTabs from '../emoji_picker_tabs';
type Props = { import type {PropsFromRedux} from './index';
show: boolean;
export interface Props extends PropsFromRedux {
container?: () => ReactNode; container?: () => ReactNode;
target: () => ReactNode; target: () => ReactNode;
onEmojiClick: (emoji: Emoji) => void; onEmojiClick: (emoji: Emoji) => void;
onGifClick?: (gif: string) => void; onGifClick?: (gif: string) => void;
onHide: () => void; onHide: () => void;
onExited?: () => void;
show: boolean;
topOffset?: number; topOffset?: number;
rightOffset?: number; rightOffset?: number;
leftOffset?: number; leftOffset?: number;
@@ -26,7 +29,6 @@ type Props = {
spaceRequiredBelow?: number; spaceRequiredBelow?: number;
enableGifPicker?: boolean; enableGifPicker?: boolean;
defaultHorizontalPosition?: 'left' | 'right'; defaultHorizontalPosition?: 'left' | 'right';
onExited?: () => void;
} }
export default class EmojiPickerOverlay extends React.PureComponent<Props> { export default class EmojiPickerOverlay extends React.PureComponent<Props> {
@@ -79,8 +81,7 @@ export default class EmojiPickerOverlay extends React.PureComponent<Props> {
}); });
render() { render() {
const {target, rightOffset, spaceRequiredAbove, spaceRequiredBelow, defaultHorizontalPosition, show} = this.props; const {target, rightOffset, spaceRequiredAbove, spaceRequiredBelow, defaultHorizontalPosition, show, isMobileView} = this.props;
const calculatedRightOffset = typeof rightOffset === 'undefined' ? this.emojiPickerPosition(target(), show) : rightOffset; const calculatedRightOffset = typeof rightOffset === 'undefined' ? this.emojiPickerPosition(target(), show) : rightOffset;
const placement = this.getPlacement(target(), spaceRequiredAbove, spaceRequiredBelow, defaultHorizontalPosition, show); const placement = this.getPlacement(target(), spaceRequiredAbove, spaceRequiredBelow, defaultHorizontalPosition, show);
@@ -88,7 +89,7 @@ export default class EmojiPickerOverlay extends React.PureComponent<Props> {
<Overlay <Overlay
show={show} show={show}
placement={placement} placement={placement}
rootClose={true} rootClose={!isMobileView}
container={this.props.container} container={this.props.container}
onHide={this.props.onHide} onHide={this.props.onHide}
target={target} target={target}

Просмотреть файл

@@ -0,0 +1,22 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {connect, ConnectedProps} from 'react-redux';
import {GlobalState} from 'types/store';
import {getIsMobileView} from 'selectors/views/browser';
import EmojiPickerOverlay from './emoji_picker_overlay';
function mapStateToProps(state: GlobalState) {
return {
isMobileView: getIsMobileView(state),
};
}
const connector = connect(mapStateToProps);
export type PropsFromRedux = ConnectedProps<typeof connector>;
export default connector(EmojiPickerOverlay);

Просмотреть файл

@@ -10,13 +10,10 @@ exports[`components/post_view/PostReaction should match snapshot 1`] = `
} }
teamId="current_team_id" teamId="current_team_id"
> >
<EmojiPickerOverlay <Connect(EmojiPickerOverlay)
enableGifPicker={false}
onEmojiClick={[Function]} onEmojiClick={[Function]}
onHide={[MockFunction]} onHide={[MockFunction]}
show={false} show={false}
spaceRequiredAbove={476}
spaceRequiredBelow={497}
target={[MockFunction]} target={[MockFunction]}
topOffset={-7} topOffset={-7}
/> />

Просмотреть файл

@@ -54,14 +54,11 @@ exports[`components/ReactionList should render when there are reactions 1`] = `
<span <span
className="emoji-picker__container" className="emoji-picker__container"
> >
<EmojiPickerOverlay <Connect(EmojiPickerOverlay)
enableGifPicker={false}
onEmojiClick={[Function]} onEmojiClick={[Function]}
onHide={[Function]} onHide={[Function]}
rightOffset={15} rightOffset={15}
show={false} show={false}
spaceRequiredAbove={476}
spaceRequiredBelow={497}
target={[Function]} target={[Function]}
topOffset={-5} topOffset={-5}
/> />