diff --git a/res/css/structures/_ContextualMenu.scss b/res/css/structures/_ContextualMenu.scss index a01cd896a8..001c405e15 100644 --- a/res/css/structures/_ContextualMenu.scss +++ b/res/css/structures/_ContextualMenu.scss @@ -43,10 +43,6 @@ limitations under the License. right: 8px; } -.mx_ContextualMenu_noChevron { - border-radius: unset !important; -} - .mx_ContextualMenu_chevron_right { position: absolute; right: -8px; diff --git a/res/css/views/context_menus/_TopLeftMenu.scss b/res/css/views/context_menus/_TopLeftMenu.scss index fb2c972fe3..18463da824 100644 --- a/res/css/views/context_menus/_TopLeftMenu.scss +++ b/res/css/views/context_menus/_TopLeftMenu.scss @@ -16,6 +16,7 @@ limitations under the License. .mx_TopLeftMenu { min-width: 180px; + border-radius: 4px; .mx_TopLeftMenu_section:not(:last-child) { border-bottom: 1px solid $menu-border-color; @@ -26,10 +27,32 @@ limitations under the License. margin: 5px 0; padding: 0; + li.mx_TopLeftMenu_icon_settings::after { + mask-image: url('$(res)/img/feather-icons/settings.svg'); + } + + li.mx_TopLeftMenu_icon_signout::after { + mask-image: url('$(res)/img/feather-icons/sign-out.svg'); + } + + li::after { + mask-repeat: no-repeat; + mask-position: 0 center; + mask-size: 16px; + position: absolute; + width: 16px; + height: 16px; + content: ""; + top: 5px; + left: 14px; + background-color: $primary-fg-color; + } + li { + position: relative; cursor: pointer; white-space: nowrap; - padding: 5px 20px; + padding: 5px 20px 5px 43px; } li:hover { diff --git a/res/css/views/elements/_ResizeHandle.scss b/res/css/views/elements/_ResizeHandle.scss index 42ff6e3825..5544799a34 100644 --- a/res/css/views/elements/_ResizeHandle.scss +++ b/res/css/views/elements/_ResizeHandle.scss @@ -32,6 +32,11 @@ limitations under the License. cursor: row-resize; } +.mx_MatrixChat > .mx_ResizeHandle.mx_ResizeHandle_horizontal { + margin: 0 -10px 0 0; + padding: 0 10px 0 0; +} + .mx_ResizeHandle > div { background: $panel-divider-color; } diff --git a/res/img/feather-icons/sign-out.svg b/res/img/feather-icons/sign-out.svg new file mode 100644 index 0000000000..06ab9903ec --- /dev/null +++ b/res/img/feather-icons/sign-out.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/components/structures/AutoHideScrollbar.js b/src/components/structures/AutoHideScrollbar.js index a8fccec08e..a385df0401 100644 --- a/src/components/structures/AutoHideScrollbar.js +++ b/src/components/structures/AutoHideScrollbar.js @@ -102,10 +102,6 @@ export default class AutoHideScrollbar extends React.Component { installBodyClassesIfNeeded(); this._needsOverflowListener = document.body.classList.contains("mx_scrollbar_nooverlay"); - if (this._needsOverflowListener) { - this.containerRef.addEventListener("overflow", this.onOverflow); - this.containerRef.addEventListener("underflow", this.onUnderflow); - } this.checkOverflow(); } @@ -118,13 +114,6 @@ export default class AutoHideScrollbar extends React.Component { } } - componentWillUnmount() { - if (this._needsOverflowListener && this.containerRef) { - this.containerRef.removeEventListener("overflow", this.onOverflow); - this.containerRef.removeEventListener("underflow", this.onUnderflow); - } - } - render() { return (
{ FormattingUtils.formatCount(subListNotifCount) }
; - } else if (this.props.isInvite) { + } else if (this.props.isInvite && this.props.list.length) { // no notifications but highlight anyway because this is an invite badge - badge =
!
; + badge =
{this.props.list.length}
; } } diff --git a/src/components/structures/TopLeftMenuButton.js b/src/components/structures/TopLeftMenuButton.js index 592b64634f..601fb2e654 100644 --- a/src/components/structures/TopLeftMenuButton.js +++ b/src/components/structures/TopLeftMenuButton.js @@ -22,6 +22,7 @@ import AccessibleButton from '../views/elements/AccessibleButton'; import BaseAvatar from '../views/avatars/BaseAvatar'; import MatrixClientPeg from '../../MatrixClientPeg'; import Avatar from '../../Avatar'; +import { _t } from '../../languageHandler'; const AVATAR_SIZE = 28; @@ -70,7 +71,14 @@ export default class TopLeftMenuButton extends React.Component { render() { const fallbackUserId = MatrixClientPeg.get().getUserId(); const profileInfo = this.state.profileInfo; - const name = profileInfo ? profileInfo.name : fallbackUserId; + let name; + if (MatrixClientPeg.get().isGuest()) { + name = _t("Guest"); + } else if (profileInfo) { + name = profileInfo.name; + } else { + name = fallbackUserId; + } let nameElement; if (!this.props.collapsed) { nameElement =
diff --git a/src/components/views/context_menus/TopLeftMenu.js b/src/components/views/context_menus/TopLeftMenu.js index b8e82a92e4..87b277215b 100644 --- a/src/components/views/context_menus/TopLeftMenu.js +++ b/src/components/views/context_menus/TopLeftMenu.js @@ -30,10 +30,10 @@ export class TopLeftMenu extends React.Component { render() { return
; } diff --git a/src/components/views/rooms/RoomList.js b/src/components/views/rooms/RoomList.js index 44fb14476a..c6d70c4cd5 100644 --- a/src/components/views/rooms/RoomList.js +++ b/src/components/views/rooms/RoomList.js @@ -83,7 +83,7 @@ module.exports = React.createClass({ this._layoutSections = []; const unfilteredOptions = { - allowWhitespace: true, + allowWhitespace: false, handleHeight: 1, }; this._unfilteredlayout = new Layout((key, size) => { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 4ae95f7559..89be104e41 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -430,9 +430,9 @@ "Upload profile picture": "Upload profile picture", "Display Name": "Display Name", "Save": "Save", + "Flair": "Flair", "General": "General", "Room Addresses": "Room Addresses", - "Flair": "Flair", "URL Previews": "URL Previews", "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", "Success": "Success", @@ -823,8 +823,6 @@ "Failed to load group members": "Failed to load group members", "Filter community members": "Filter community members", "Invite to this community": "Invite to this community", - "Flair will appear if enabled in room settings": "Flair will appear if enabled in room settings", - "Flair will not appear": "Flair will not appear", "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?", "Removing a room from the community will also remove it from the community page.": "Removing a room from the community will also remove it from the community page.", "Failed to remove room from community": "Failed to remove room from community", @@ -1339,6 +1337,7 @@ "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", "Failed to load timeline position": "Failed to load timeline position", + "Guest": "Guest", "Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others", "Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s", "Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",