Fixed max height for all modals using FilteredUserLists

Этот коммит содержится в:
hmhealey
2016-03-02 16:10:14 -05:00
коммит произвёл Harrison Healey
родитель c2eab07be0
Коммит 62c0920943
7 изменённых файлов: 59 добавлений и 85 удалений

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

@@ -25,7 +25,9 @@ export default class ChannelInviteModal extends React.Component {
this.createInviteButton = this.createInviteButton.bind(this);
// the state gets populated when the modal is shown
this.state = {};
this.state = {
loading: true
};
}
shouldComponentUpdate(nextProps, nextState) {
if (!this.props.show && !nextProps.show) {
@@ -79,20 +81,6 @@ export default class ChannelInviteModal extends React.Component {
loading: false
};
}
onShow() {
// TODO ugh
/*if ($(window).width() > 768) {
$(ReactDOM.findDOMNode(this.refs.modalBody)).perfectScrollbar();
$(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 200);
} else {
$(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 150);
}*/
}
componentDidUpdate(prevProps) {
if (this.props.show && !prevProps.show) {
this.onShow();
}
}
componentWillReceiveProps(nextProps) {
if (!this.props.show && nextProps.show) {
ChannelStore.addExtraInfoChangeListener(this.onListenerChange);
@@ -152,8 +140,14 @@ export default class ChannelInviteModal extends React.Component {
if (this.state.loading) {
content = (<LoadingScreen/>);
} else {
let maxHeight = 1000;
if (Utils.windowHeight() <= 1200) {
maxHeight = Utils.windowHeight() - 300;
}
content = (
<FilteredUserList
style={{maxHeight}}
users={this.state.nonmembers}
actions={[this.createInviteButton]}
/>
@@ -175,9 +169,7 @@ export default class ChannelInviteModal extends React.Component {
<span className='name'>{this.props.channel.display_name}</span>
</Modal.Title>
</Modal.Header>
<Modal.Body
ref='modalBody'
>
<Modal.Body>
{inviteError}
{content}
</Modal.Body>

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

@@ -75,17 +75,6 @@ export default class ChannelMembersModal extends React.Component {
loading: false
};
}
onShow() {
// TODO ugh
if ($(window).width() > 768) {
$(ReactDOM.findDOMNode(this.refs.modalBody)).perfectScrollbar();
}
}
componentDidUpdate(prevProps) {
if (this.props.show && !prevProps.show) {
this.onShow();
}
}
componentWillReceiveProps(nextProps) {
if (!this.props.show && nextProps.show) {
ChannelStore.addExtraInfoChangeListener(this.onChange);
@@ -148,17 +137,18 @@ export default class ChannelMembersModal extends React.Component {
);
}
render() {
var maxHeight = 1000;
if (Utils.windowHeight() <= 1200) {
maxHeight = Utils.windowHeight() - 300;
}
let content;
if (this.state.loading) {
content = (<LoadingScreen/>);
} else {
let maxHeight = 1000;
if (Utils.windowHeight() <= 1200) {
maxHeight = Utils.windowHeight() - 300;
}
content = (
<FilteredUserList
style={{maxHeight}}
users={this.state.memberList}
actions={[this.createRemoveMemberButton]}
/>
@@ -197,7 +187,6 @@ export default class ChannelMembersModal extends React.Component {
</Modal.Header>
<Modal.Body
ref='modalBody'
style={{maxHeight}}
>
{content}
</Modal.Body>

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

@@ -27,6 +27,10 @@ class FilteredUserList extends React.Component {
};
}
componentDidMount() {
$(ReactDOM.findDOMNode(this.refs.userList)).perfectScrollbar();
}
componentDidUpdate(prevProps, prevState) {
if (prevState.filter !== this.state.filter) {
$(ReactDOM.findDOMNode(this.refs.userList)).scrollTop(0);
@@ -86,7 +90,10 @@ class FilteredUserList extends React.Component {
}
return (
<div>
<div
className='filtered-user-list'
style={this.props.style}
>
<div className='filter-row'>
<div className='col-sm-6'>
<input
@@ -122,7 +129,8 @@ FilteredUserList.defaultProps = {
FilteredUserList.propTypes = {
intl: intlShape.isRequired,
users: React.PropTypes.arrayOf(React.PropTypes.object),
actions: React.PropTypes.arrayOf(React.PropTypes.func)
actions: React.PropTypes.arrayOf(React.PropTypes.func),
style: React.PropTypes.object
};
export default injectIntl(FilteredUserList);

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

@@ -47,9 +47,14 @@ export default class MemberListTeam extends React.Component {
render() {
return (
<FilteredUserList
style={this.props.style}
users={this.state.users}
actions={[TeamMembersDropdown]}
/>
);
}
}
MemberListTeam.propTypes = {
style: React.PropTypes.object
};

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

@@ -48,23 +48,6 @@ export default class MoreDirectChannels extends React.Component {
UserStore.removeChangeListener(this.handleUserChange);
}
componentDidUpdate(prevProps) {
if (!prevProps.show && this.props.show) {
this.onShow();
}
}
onShow() {
// TODO ugh
/*if (Utils.isMobile()) {
$(ReactDOM.findDOMNode(this.refs.modal)).css('max-height', $(window).height() - 250);
} else {
console.log(ReactDOM.findDOMNode(this.refs.modal));
console.log($(ReactDOM.findDOMNode(this.refs.modal)));
$(ReactDOM.findDOMNode(this.refs.modal)).css('max-height', $(window).height() - 300);
}*/
}
handleHide() {
if (this.props.onModalDismissed) {
this.props.onModalDismissed();
@@ -121,6 +104,11 @@ export default class MoreDirectChannels extends React.Component {
}
render() {
let maxHeight = 1000;
if (Utils.windowHeight() <= 1200) {
maxHeight = Utils.windowHeight() - 300;
}
return (
<Modal
dialogClassName='more-modal more-direct-channels'
@@ -137,6 +125,7 @@ export default class MoreDirectChannels extends React.Component {
</Modal.Header>
<Modal.Body>
<FilteredUserList
style={{maxHeight}}
users={this.state.users}
actions={[this.createJoinDirectChannelButton]}
/>

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

@@ -3,43 +3,21 @@
import MemberListTeam from './member_list_team.jsx';
import TeamStore from '../stores/team_store.jsx';
import * as Utils from '../utils/utils.jsx';
import {FormattedMessage} from 'mm-intl';
const Modal = ReactBootstrap.Modal;
export default class TeamMembersModal extends React.Component {
constructor(props) {
super(props);
this.onShow = this.onShow.bind(this);
}
componentDidMount() {
if (this.props.show) {
this.onShow();
}
}
componentDidUpdate(prevProps) {
if (this.props.show && !prevProps.show) {
this.onShow();
}
}
onShow() {
// TODO ugh
/*if ($(window).width() > 768) {
$(ReactDOM.findDOMNode(this.refs.modalBody)).perfectScrollbar();
$(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 200);
} else {
$(ReactDOM.findDOMNode(this.refs.modalBody)).css('max-height', $(window).height() - 150);
}*/
}
render() {
const team = TeamStore.getCurrent();
let maxHeight = 1000;
if (Utils.windowHeight() <= 1200) {
maxHeight = Utils.windowHeight() - 300;
}
return (
<Modal
dialogClassName='more-modal'
@@ -56,7 +34,7 @@ export default class TeamMembersModal extends React.Component {
/>
</Modal.Header>
<Modal.Body>
<MemberListTeam/>
<MemberListTeam style={{maxHeight}}/>
</Modal.Body>
<Modal.Footer>
<button

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

@@ -403,7 +403,6 @@
overflow-y: auto;
overflow-x: hidden;
margin-top: 10px;
max-height: 500px;
position: relative;
}
@@ -451,7 +450,6 @@
flex-shrink: 0;
}
.user-list-item__details {
flex-grow: 1;
flex-shrink: 1;
@@ -472,3 +470,18 @@
flex-shrink: 0;
}
}
.filtered-user-list {
display: flex;
flex-direction: column;
.filter-row {
flex-grow: 0;
flex-shrink: 0;
}
.user-list {
flex-grow: 1;
flex-shrink: 1;
}
}