Make right panel collpasing work in GroupView
This commit is contained in:
parent
be611f53e1
commit
57eb2feeb6
|
@ -98,11 +98,15 @@ module.exports = React.createClass({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// call ChatInviteDialog
|
if (this.state.phase === this.Phase.GroupMemberList) {
|
||||||
|
// TODO: display UserPickeDialog
|
||||||
|
} else {
|
||||||
|
// call UserPickerDialog
|
||||||
dis.dispatch({
|
dis.dispatch({
|
||||||
action: 'view_invite',
|
action: 'view_invite',
|
||||||
roomId: this.props.roomId,
|
roomId: this.props.roomId,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
onRoomStateMember: function(ev, state, member) {
|
onRoomStateMember: function(ev, state, member) {
|
||||||
|
@ -169,7 +173,6 @@ module.exports = React.createClass({
|
||||||
const NotificationPanel = sdk.getComponent('structures.NotificationPanel');
|
const NotificationPanel = sdk.getComponent('structures.NotificationPanel');
|
||||||
const FilePanel = sdk.getComponent('structures.FilePanel');
|
const FilePanel = sdk.getComponent('structures.FilePanel');
|
||||||
const TintableSvg = sdk.getComponent("elements.TintableSvg");
|
const TintableSvg = sdk.getComponent("elements.TintableSvg");
|
||||||
let buttonGroup;
|
|
||||||
let inviteGroup;
|
let inviteGroup;
|
||||||
let panel;
|
let panel;
|
||||||
|
|
||||||
|
@ -212,50 +215,72 @@ module.exports = React.createClass({
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let headerButtons = [];
|
||||||
if (this.props.roomId) {
|
if (this.props.roomId) {
|
||||||
buttonGroup =
|
headerButtons.push(
|
||||||
<div className="mx_RightPanel_headerButtonGroup">
|
<AccessibleButton className="mx_RightPanel_headerButton" key="_membersButton"
|
||||||
<AccessibleButton className="mx_RightPanel_headerButton"
|
|
||||||
title={ _t('Members') } onClick={ this.onMemberListButtonClick }>
|
title={ _t('Members') } onClick={ this.onMemberListButtonClick }>
|
||||||
<div className="mx_RightPanel_headerButton_badge">{ membersBadge ? membersBadge : <span> </span>}</div>
|
<div className="mx_RightPanel_headerButton_badge">{ membersBadge ? membersBadge : <span> </span>}</div>
|
||||||
<TintableSvg src="img/icons-people.svg" width="25" height="25"/>
|
<TintableSvg src="img/icons-people.svg" width="25" height="25"/>
|
||||||
{ membersHighlight }
|
{ membersHighlight }
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
|
);
|
||||||
|
headerButtons.push(
|
||||||
<AccessibleButton
|
<AccessibleButton
|
||||||
className="mx_RightPanel_headerButton mx_RightPanel_filebutton"
|
className="mx_RightPanel_headerButton mx_RightPanel_filebutton" key="_filesButton"
|
||||||
title={ _t('Files') } onClick={ this.onFileListButtonClick }>
|
title={ _t('Files') } onClick={ this.onFileListButtonClick }>
|
||||||
<div className="mx_RightPanel_headerButton_badge"> </div>
|
<div className="mx_RightPanel_headerButton_badge"> </div>
|
||||||
<TintableSvg src="img/icons-files.svg" width="25" height="25"/>
|
<TintableSvg src="img/icons-files.svg" width="25" height="25"/>
|
||||||
{ filesHighlight }
|
{ filesHighlight }
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
|
);
|
||||||
|
headerButtons.push(
|
||||||
<AccessibleButton
|
<AccessibleButton
|
||||||
className="mx_RightPanel_headerButton mx_RightPanel_notificationbutton"
|
className="mx_RightPanel_headerButton mx_RightPanel_notificationbutton" key="_notifsButton"
|
||||||
title={ _t('Notifications') } onClick={ this.onNotificationListButtonClick }>
|
title={ _t('Notifications') } onClick={ this.onNotificationListButtonClick }>
|
||||||
<div className="mx_RightPanel_headerButton_badge"> </div>
|
<div className="mx_RightPanel_headerButton_badge"> </div>
|
||||||
<TintableSvg src="img/icons-notifications.svg" width="25" height="25"/>
|
<TintableSvg src="img/icons-notifications.svg" width="25" height="25"/>
|
||||||
{ notificationsHighlight }
|
{ notificationsHighlight }
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
<div className="mx_RightPanel_headerButton mx_RightPanel_collapsebutton" title={ _t("Hide panel") } onClick={ this.onCollapseClick }>
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.props.roomId || this.props.groupId) {
|
||||||
|
// Hiding the right panel hides it completely and relies on an 'expand' button
|
||||||
|
// being put in the RoomHeader or GroupView header, so only show the minimise
|
||||||
|
// button on these 2 screens or you won't be able to re-expand the panel.
|
||||||
|
headerButtons.push(
|
||||||
|
<div className="mx_RightPanel_headerButton mx_RightPanel_collapsebutton" key="_minimizeButton"
|
||||||
|
title={ _t("Hide panel") } onClick={ this.onCollapseClick }
|
||||||
|
>
|
||||||
<TintableSvg src="img/minimise.svg" width="10" height="16"/>
|
<TintableSvg src="img/minimise.svg" width="10" height="16"/>
|
||||||
</div>
|
</div>
|
||||||
</div>;
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.props.collapsed) {
|
if (!this.props.collapsed) {
|
||||||
if (this.props.roomId && this.state.phase == this.Phase.RoomMemberList) {
|
if (this.props.roomId && this.state.phase == this.Phase.RoomMemberList) {
|
||||||
panel = <MemberList roomId={this.props.roomId} key={this.props.roomId} />
|
panel = <MemberList roomId={this.props.roomId} key={this.props.roomId} />
|
||||||
} else if (this.props.groupId && this.state.phase == this.Phase.GroupMemberList) {
|
} else if (this.props.groupId && this.state.phase == this.Phase.GroupMemberList) {
|
||||||
panel = <GroupMemberList groupId={this.props.groupId} key={this.props.groupId} />
|
panel = <GroupMemberList groupId={this.props.groupId} key={this.props.groupId} />;
|
||||||
|
inviteGroup = (
|
||||||
|
<AccessibleButton className="mx_RightPanel_invite" onClick={ this.onInviteButtonClick } >
|
||||||
|
<div className="mx_RightPanel_icon" >
|
||||||
|
<TintableSvg src="img/icon-invite-people.svg" width="35" height="35" />
|
||||||
|
</div>
|
||||||
|
<div className="mx_RightPanel_message">{ _t('Invite to this group') }</div>
|
||||||
|
</AccessibleButton>
|
||||||
|
);
|
||||||
} else if (this.state.phase == this.Phase.RoomMemberInfo) {
|
} else if (this.state.phase == this.Phase.RoomMemberInfo) {
|
||||||
const MemberInfo = sdk.getComponent('rooms.MemberInfo');
|
const MemberInfo = sdk.getComponent('rooms.MemberInfo');
|
||||||
panel = <MemberInfo member={this.state.member} key={this.props.roomId || this.state.member.userId} />
|
panel = <MemberInfo member={this.state.member} key={this.props.roomId || this.state.member.userId} />
|
||||||
} else if (this.state.phase == this.Phase.GroupMemberInfo) {
|
} else if (this.state.phase == this.Phase.GroupMemberInfo) {
|
||||||
const GroupMemberInfo = sdk.getComponent('groups.GroupMemberInfo');
|
const GroupMemberInfo = sdk.getComponent('groups.GroupMemberInfo');
|
||||||
panel = <GroupMemberInfo member={this.state.member} groupId={this.props.groupId} key={this.state.member.user_id} />
|
panel = <GroupMemberInfo member={this.state.member} groupId={this.props.groupId} key={this.state.member.user_id} />;
|
||||||
} else if (this.state.phase == this.Phase.NotificationPanel) {
|
} else if (this.state.phase == this.Phase.NotificationPanel) {
|
||||||
panel = <NotificationPanel />
|
panel = <NotificationPanel />;
|
||||||
} else if (this.state.phase == this.Phase.FilePanel) {
|
} else if (this.state.phase == this.Phase.FilePanel) {
|
||||||
panel = <FilePanel roomId={this.props.roomId} />
|
panel = <FilePanel roomId={this.props.roomId} />;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,7 +296,9 @@ module.exports = React.createClass({
|
||||||
return (
|
return (
|
||||||
<aside className={classes} style={{ opacity: this.props.opacity }}>
|
<aside className={classes} style={{ opacity: this.props.opacity }}>
|
||||||
<div className="mx_RightPanel_header">
|
<div className="mx_RightPanel_header">
|
||||||
{ buttonGroup }
|
<div className="mx_RightPanel_headerButtonGroup">
|
||||||
|
{headerButtons}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{ panel }
|
{ panel }
|
||||||
<div className="mx_RightPanel_footer">
|
<div className="mx_RightPanel_footer">
|
||||||
|
|
|
@ -205,5 +205,6 @@
|
||||||
"Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.",
|
"Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.",
|
||||||
"To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>",
|
"To return to your account in future you need to <u>set a password</u>": "To return to your account in future you need to <u>set a password</u>",
|
||||||
"Set Password": "Set Password",
|
"Set Password": "Set Password",
|
||||||
"Couldn't load home page": "Couldn't load home page"
|
"Couldn't load home page": "Couldn't load home page",
|
||||||
|
"Invite to this group": "Invite to this group"
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,10 @@ limitations under the License.
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_GroupView_header_rightCol {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
.mx_GroupView_saveButton, .mx_GroupView_cancelButton {
|
.mx_GroupView_saveButton, .mx_GroupView_cancelButton {
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue