);
} else {
media = (
- <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} >
+ <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}>
{Component => <Component media={status.get('media_attachments')} sensitive={status.get('sensitive')} height={110} onOpenMedia={this.props.onOpenMedia} />}
</Bundle>
);
-import React from 'react';
+import React, { Fragment } from 'react';
+import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import PropTypes from 'prop-types';
import configureStore from '../store/configureStore';
import PublicTimeline from '../features/standalone/public_timeline';
import CommunityTimeline from '../features/standalone/community_timeline';
import HashtagTimeline from '../features/standalone/hashtag_timeline';
+import ModalContainer from '../features/ui/containers/modal_container';
import initialState from '../initial_state';
const { localeData, messages } = getLocale();
return (
<IntlProvider locale={locale} messages={messages}>
<Provider store={store}>
- {timeline}
+ <Fragment>
+ {timeline}
+ {ReactDOM.createPortal(
+ <ModalContainer />,
+ document.getElementById('modal-container'),
+ )}
+ </Fragment>
</Provider>
</IntlProvider>
);
onClose: PropTypes.func.isRequired,
};
+ getSnapshotBeforeUpdate () {
+ const visible = !!this.props.type;
+ return {
+ overflowY: visible ? 'hidden' : null,
+ };
+ }
+
+ componentDidUpdate (prevProps, prevState, { overflowY }) {
+ document.body.style.overflowY = overflowY;
+ }
+
renderLoading = modalId => () => {
return ['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].indexOf(modalId) === -1 ? <ModalLoading /> : null;
}