diff --git a/src/component-index.js b/src/component-index.js index b3baf22a..819420f8 100644 --- a/src/component-index.js +++ b/src/component-index.js @@ -34,6 +34,8 @@ module.exports.components['structures.RoomDirectory'] = require('./components/st module.exports.components['structures.RoomSubList'] = require('./components/structures/RoomSubList'); module.exports.components['structures.SearchBox'] = require('./components/structures/SearchBox'); module.exports.components['structures.ViewSource'] = require('./components/structures/ViewSource'); +module.exports.components['views.context_menus.MessageContextMenu'] = require('./components/views/context_menus/MessageContextMenu'); +module.exports.components['views.context_menus.NotificationStateContextMenu'] = require('./components/views/context_menus/NotificationStateContextMenu'); module.exports.components['views.elements.ImageView'] = require('./components/views/elements/ImageView'); module.exports.components['views.elements.Spinner'] = require('./components/views/elements/Spinner'); module.exports.components['views.globals.GuestWarningBar'] = require('./components/views/globals/GuestWarningBar'); @@ -46,7 +48,6 @@ module.exports.components['views.messages.DateSeparator'] = require('./component module.exports.components['views.messages.MessageTimestamp'] = require('./components/views/messages/MessageTimestamp'); module.exports.components['views.messages.SenderProfile'] = require('./components/views/messages/SenderProfile'); module.exports.components['views.rooms.BottomLeftMenuTile'] = require('./components/views/rooms/BottomLeftMenuTile'); -module.exports.components['views.rooms.MessageContextMenu'] = require('./components/views/rooms/MessageContextMenu'); module.exports.components['views.rooms.RoomDNDView'] = require('./components/views/rooms/RoomDNDView'); module.exports.components['views.rooms.RoomDropTarget'] = require('./components/views/rooms/RoomDropTarget'); module.exports.components['views.rooms.RoomTooltip'] = require('./components/views/rooms/RoomTooltip'); diff --git a/src/components/views/rooms/MessageContextMenu.js b/src/components/views/context_menus/MessageContextMenu.js similarity index 89% rename from src/components/views/rooms/MessageContextMenu.js rename to src/components/views/context_menus/MessageContextMenu.js index 91c59bd0..401c0c6c 100644 --- a/src/components/views/rooms/MessageContextMenu.js +++ b/src/components/views/context_menus/MessageContextMenu.js @@ -95,7 +95,7 @@ module.exports = React.createClass({ if (eventStatus === 'not_sent') { resendButton = ( -
+
Resend
); @@ -103,7 +103,7 @@ module.exports = React.createClass({ if (!eventStatus) { // sent redactButton = ( -
+
Redact
); @@ -111,14 +111,14 @@ module.exports = React.createClass({ if (eventStatus === "queued" || eventStatus === "not_sent") { cancelButton = ( -
+
Cancel Sending
); } viewSourceButton = ( -
+
View Source
); @@ -126,7 +126,7 @@ module.exports = React.createClass({ if (this.props.eventTileOps) { if (this.props.eventTileOps.isWidgetHidden()) { unhidePreviewButton = ( -
+
Unhide Preview
) @@ -136,7 +136,7 @@ module.exports = React.createClass({ // XXX: this should be https://matrix.to. // XXX: if we use room ID, we should also include a server where the event can be found (other than in the domain of the event ID) permalinkButton = ( -
+ diff --git a/src/components/views/context_menus/NotificationStateContextMenu.js b/src/components/views/context_menus/NotificationStateContextMenu.js new file mode 100644 index 00000000..cadc8287 --- /dev/null +++ b/src/components/views/context_menus/NotificationStateContextMenu.js @@ -0,0 +1,150 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +'use strict'; + +var q = require("q"); +var React = require('react'); +var classNames = require('classnames'); +var MatrixClientPeg = require('matrix-react-sdk/lib/MatrixClientPeg'); +var dis = require('matrix-react-sdk/lib/dispatcher'); + +module.exports = React.createClass({ + displayName: 'NotificationStateContextMenu', + + propTypes: { + room: React.PropTypes.object.isRequired, + /* callback called when the menu is dismissed */ + onFinished: React.PropTypes.func, + }, + + getInitialState: function() { + var areNotifsMuted = false; + var cli = MatrixClientPeg.get(); + if (!cli.isGuest()) { + var roomPushRule = cli.getRoomPushRule("global", this.props.room.roomId); + if (roomPushRule) { + if (0 <= roomPushRule.actions.indexOf("dont_notify")) { + areNotifsMuted = true; + } + } + } + + return { + areNotifsMuted: areNotifsMuted, + }; + }, + + _save: function( isMuted ) { + var self = this; + const roomId = this.props.room.roomId; + var cli = MatrixClientPeg.get(); + + if (!cli.isGuest()) { + cli.setRoomMutePushRule( + "global", roomId, isMuted + ).then(function() { + self.setState({areNotifsMuted: isMuted}); + + // delay slightly so that the user can see their state change + // before closing the menu + q.delay(500).then(function() { + // tell everyone that wants to know of the change in + // notification state + dis.dispatch({ + action: 'notification_change', + roomId: self.props.room.roomId, + isMuted: isMuted, + }); + + // Close the context menu + if (self.props.onFinished) { + self.props.onFinished(); + }; + }); + }).fail(function(error) { + // TODO: some form of error notification to the user + // to inform them that their state change failed. + }); + } + }, + + _onClickAlertMe: function() { + // Placeholder + }, + + _onClickAllNotifs: function() { + this._save(false); + }, + + _onClickMentions: function() { + // Placeholder + }, + + _onClickMute: function() { + this._save(true); + }, + + render: function() { + var cli = MatrixClientPeg.get(); + + var alertMeClasses = classNames({ + 'mx_NotificationStateContextMenu_field': true, + 'mx_NotificationStateContextMenu_fieldDisabled': true, + }); + + var allNotifsClasses = classNames({ + 'mx_NotificationStateContextMenu_field': true, + 'mx_NotificationStateContextMenu_fieldSet': !this.state.areNotifsMuted, + }); + + var mentionsClasses = classNames({ + 'mx_NotificationStateContextMenu_field': true, + 'mx_NotificationStateContextMenu_fieldDisabled': true, + }); + + var muteNotifsClasses = classNames({ + 'mx_NotificationStateContextMenu_field': true, + 'mx_NotificationStateContextMenu_fieldSet': this.state.areNotifsMuted, + }); + + return ( +
+
+ +
+
+ + Alert me +
+
+ + + All notifications +
+
+ + Mentions only +
+
+ + + Mute +
+
+ ); + } +}); diff --git a/src/skins/vector/css/common.css b/src/skins/vector/css/common.css index bc217309..cacf8f8d 100644 --- a/src/skins/vector/css/common.css +++ b/src/skins/vector/css/common.css @@ -85,50 +85,6 @@ input[type=text]:focus, textarea:focus { border-left: 6px solid transparent; } -.mx_ContextualMenu_background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 1.0; - z-index: 2000; -} - -.mx_ContextualMenu { - border: 1px solid #a4a4a4; - border-radius: 8px; - background-color: #fff; - color: #747474; - position: fixed; - z-index: 2001; - padding: 6px; -} - -.mx_ContextualMenu_chevron_right { - padding: 12px; - position: absolute; - right: -21px; - top: 0px; -} - -.mx_ContextualMenu_chevron_left { - padding: 12px; - position: absolute; - left: -21px; - top: 0px; -} - -.mx_ContextualMenu_field { - padding: 3px 6px 3px 6px; - cursor: pointer; -} - -.mx_ContextualMenu_spinner { - display: block; - margin: 0 auto; -} - .mx_Dialog_wrapper { position: fixed; z-index: 4000; diff --git a/src/skins/vector/css/matrix-react-sdk/structures/ContextualMenu.css b/src/skins/vector/css/matrix-react-sdk/structures/ContextualMenu.css new file mode 100644 index 00000000..7523bd10 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/structures/ContextualMenu.css @@ -0,0 +1,106 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_ContextualMenu_wrapper { + position: fixed; + z-index: 2000; +} + +.mx_ContextualMenu_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1.0; + z-index: 2000; +} + +.mx_ContextualMenu { + border: solid 1px rgba(187, 187, 187, 0.5); + border-radius: 4px; + background-color: #f6f6f6; + color: #4a4a4a; + position: absolute; + padding: 6px; + font-size: 14px; + z-index: 2001; +} + +.mx_ContextualMenu.mx_ContextualMenu_right { + right: 8px; +} + +.mx_ContextualMenu_chevron_right { + position: absolute; + right: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-left: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} + +.mx_ContextualMenu_chevron_right:after{ + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-left: 7px solid #f6f6f6; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + right: 1px; +} + +.mx_ContextualMenu.mx_ContextualMenu_left { + left: 8px; +} + +.mx_ContextualMenu_chevron_left { + position: absolute; + left: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} + +.mx_ContextualMenu_chevron_left:after{ + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #f6f6f6; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + left: 1px; +} + +.mx_ContextualMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} + +.mx_ContextualMenu_spinner { + display: block; + margin: 0 auto; +} diff --git a/src/skins/vector/css/matrix-react-sdk/structures/MatrixChat.css b/src/skins/vector/css/matrix-react-sdk/structures/MatrixChat.css index d28f4d94..95455601 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/MatrixChat.css +++ b/src/skins/vector/css/matrix-react-sdk/structures/MatrixChat.css @@ -93,8 +93,8 @@ limitations under the License. background-color: #eaf5f0; - -webkit-flex: 0 0 210px; - flex: 0 0 210px; + -webkit-flex: 0 0 235px; + flex: 0 0 235px; } .mx_MatrixChat .mx_LeftPanel.collapsed { diff --git a/src/skins/vector/css/matrix-react-sdk/structures/SearchBox.css b/src/skins/vector/css/matrix-react-sdk/structures/SearchBox.css index 96f192c4..59895238 100644 --- a/src/skins/vector/css/matrix-react-sdk/structures/SearchBox.css +++ b/src/skins/vector/css/matrix-react-sdk/structures/SearchBox.css @@ -16,8 +16,8 @@ limitations under the License. .mx_SearchBox { height: 24px; - margin-left: 16px; - margin-right: 20px; + margin-left: 18px; + margin-right: 18px; padding-top: 24px; padding-bottom: 22px; border-bottom: 1px solid rgba(0, 0, 0, 0.1); diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css b/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css index 770a3a62..d995243b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/RoomTile.css @@ -15,18 +15,29 @@ limitations under the License. */ .mx_RoomTile { + position: relative; cursor: pointer; - /* This fixes wrapping of long room names, but breaks drag & drop previews */ - /* display: table-row; */ font-size: 13px; display: block; + height: 34px; +} + +.mx_RoomTile .mx_RoomTile_mute { + opacity: 0.4; +} + +.mx_RoomTile_nameContainer { + display: inline-block; + width: 180px; + height: 24px; } .mx_RoomTile_avatar { display: inline-block; - padding-top: 6px; - padding-bottom: 6px; + padding-top: 5px; + padding-bottom: 5px; padding-left: 18px; + padding-right: 6px; width: 24px; height: 24px; vertical-align: middle; @@ -34,13 +45,17 @@ limitations under the License. .mx_RoomTile_name { display: inline-block; - width: 100px; + position: relative; + width: 165px; vertical-align: middle; - overflow: hidden; - word-break: break-word; - padding-left: 11px; - padding-right: 15px; + padding-left: 6px; + padding-right: 6px; + padding-top: 2px; + padding-bottom: 3px; color: rgba(69, 69, 69, 0.8); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .mx_RoomTile_ellipsis .mx_RoomTile_name { @@ -53,17 +68,16 @@ limitations under the License. */ } +.collapsed .mx_RoomTile_nameContainer { + height: 0; +} + .collapsed .mx_RoomTile_name { display: none; } -.collapsed .mx_RoomTile { - height: 36px; -} - .collapsed .mx_RoomTile_badge { - top: -40px; - left: 30px; + top: -2px; min-width: 12px; height: 16px; border-radius: 16px; @@ -71,46 +85,81 @@ limitations under the License. z-index: 200; } -/* This is the bottom of the speech bubble */ -.mx_RoomTile_highlight .mx_RoomTile_badge:after { +/* Position mute icon when room muted and collapsed - invisible at the moment */ +.collapsed .mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeMute { + background-color: rgba(0,0,0,0); + opacity: 0; + top: -2px; +} + +/* Position menu icon when room muted and collapsed */ +.collapsed .mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton.mx_RoomTile_badgeMute, +.collapsed .mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton.mx_RoomTile_badgeMute { + display: inline-block; + background-color: rgb(214, 214, 214); + letter-spacing: 0.1em; + opacity: 1; + top: -2px; +} + +/* Hide the bottom of speech bubble */ +.collapsed .mx_RoomTile_highlight .mx_RoomTile_badge:not(.mx_RoomTile_badgeMute):after { + display: none; +} + +/* This is the bottom of the speech bubble - not drawn when room muted */ +.mx_RoomTile_highlight .mx_RoomTile_badge:not(.mx_RoomTile_badgeMute):after { content: ""; position: absolute; display: block; width: 0; height: 0; - margin-left: 4px; + margin-left: 6px; border-top: 8px solid #ff0064; border-right: 10px solid transparent; } -/* Because the specificity of this and the above ".mx_RoomTile_highlight .mx_RoomTile_badge:after" -style are the same, this style needs to be AFTER it to take effect when matched */ -.collapsed .mx_RoomTile_badge:after { - display: none; -} - .mx_RoomTile_badge { display: inline-block; - min-width: 14px; - height: 18px; - position: relative; - left: 8px; - top: 2px; - border-radius: 18px; + min-width: 19px; + height: 17px; + position: absolute; + right: 8px; /*gutter */ + top: 9px; + border-radius: 14px; color: #fff; - font-weight: bold; + font-weight: 600; font-size: 11px; text-align: center; - padding-top: 2px; + padding-top: 1px; padding-left: 4px; padding-right: 4px; } -.mx_RoomTile_badge:hover { +.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton, +.mx_RoomTile.mx_RoomTile_menu .mx_RoomTile_badge { letter-spacing: 0.1em; opacity: 1; } +/* Position menu icon when room muted */ +.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton.mx_RoomTile_badgeMute, +.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton.mx_RoomTile_badgeMute { + background-color: rgb(214, 214, 214); + letter-spacing: 0.1em; + opacity: 1; + top: 9px; + right: 8px; /* gutter */ +} + +/* Position mute icon when room muted */ +.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeMute { + background-color: rgba(0,0,0,0); + opacity: 1; + top: 11px; + right: 6px; +} + .mx_RoomTile_unreadNotify .mx_RoomTile_badge { background-color: #76cfa6; } @@ -119,26 +168,23 @@ style are the same, this style needs to be AFTER it to take effect when matched background-color: #ff0064; } -.mx_RoomTile_badge_no_unread { +.mx_RoomTile_read .mx_RoomTile_badge { background-color: rgb(214, 214, 214); opacity: 0; } .mx_RoomTile_unread, .mx_RoomTile_highlight { - font-weight: bold; + font-weight: 600; } -.mx_RoomTile_selected .mx_RoomTile_name span { - display: inline-block; - position: relative; - width: 100%; - padding: 4px; - margin-top: -4px; - margin-bottom: -4px; - border-radius: 2px; +.mx_RoomTile_selected { background-color: rgba(118,207,166,0.2); } +.mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { + width: 144px; +} + .mx_RoomTile_arrow { position: absolute; right: 0px; diff --git a/src/skins/vector/css/vector-web/structures/LeftPanel.css b/src/skins/vector/css/vector-web/structures/LeftPanel.css index ea12c953..316246cb 100644 --- a/src/skins/vector/css/vector-web/structures/LeftPanel.css +++ b/src/skins/vector/css/vector-web/structures/LeftPanel.css @@ -51,6 +51,10 @@ limitations under the License. overflow-y: auto; } +.mx_LeftPanel.collapsed .mx_BottomLeftMenu { + flex: 0 0 120px; +} + .mx_LeftPanel .mx_BottomLeftMenu { -webkit-box-ordinal-group: 3; -moz-box-ordinal-group: 3; @@ -59,10 +63,11 @@ limitations under the License. order: 3; border-top: 1px solid rgba(0, 0, 0, 0.1); - margin-left: 18px; - margin-right: 18px; + margin-left: 16px; /* gutter */ + margin-right: 16px; /* gutter */ -webkit-flex: 0 0 60px; flex: 0 0 60px; + z-index: 1; } .mx_LeftPanel .mx_BottomLeftMenu_options { @@ -95,3 +100,7 @@ limitations under the License. .mx_LeftPanel .mx_BottomLeftMenu_settings { float: right; } + +.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings { + float: none; +} diff --git a/src/skins/vector/css/vector-web/structures/RoomSubList.css b/src/skins/vector/css/vector-web/structures/RoomSubList.css index 8f9db8fe..b54fea98 100644 --- a/src/skins/vector/css/vector-web/structures/RoomSubList.css +++ b/src/skins/vector/css/vector-web/structures/RoomSubList.css @@ -25,8 +25,8 @@ limitations under the License. color: #3d3b39; font-weight: 600; font-size: 13px; - padding-left: 12px; - padding-right: 12px; + padding-left: 16px; /* gutter */ + padding-right: 16px; /* gutter */ margin-top: 8px; margin-bottom: 4px; cursor: pointer; diff --git a/src/skins/vector/css/vector-web/views/context_menus/MessageContextMenu.css b/src/skins/vector/css/vector-web/views/context_menus/MessageContextMenu.css new file mode 100644 index 00000000..85e8080c --- /dev/null +++ b/src/skins/vector/css/vector-web/views/context_menus/MessageContextMenu.css @@ -0,0 +1,25 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_MessageContextMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} + +.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet { + font-weight: bold; +} diff --git a/src/skins/vector/css/vector-web/views/context_menus/NotificationStateContextMenu.css b/src/skins/vector/css/vector-web/views/context_menus/NotificationStateContextMenu.css new file mode 100644 index 00000000..1a186178 --- /dev/null +++ b/src/skins/vector/css/vector-web/views/context_menus/NotificationStateContextMenu.css @@ -0,0 +1,56 @@ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +.mx_NotificationStateContextMenu_picker { + position: absolute; + top: 16px; + left: 5px; +} + +.mx_NotificationStateContextMenu_field { + padding-top: 4px; + padding-right: 6px; + padding-bottom: 10px; + padding-left: 20px; + cursor: pointer; + white-space: nowrap; + display: flex; + align-items: center; +} + +.mx_NotificationStateContextMenu_field.mx_NotificationStateContextMenu_fieldSet { + font-weight: bold; + padding-left: 8px; +} + +.mx_NotificationStateContextMenu_field.mx_NotificationStateContextMenu_fieldDisabled { + color: rgba(0, 0, 0, 0.2); +} + +.mx_NotificationStateContextMenu_icon { + padding-right: 4px; + padding-left: 4px; +} + +.mx_NotificationStateContextMenu_activeIcon { + display: none; + position: relative; + left: -5px; +} + +.mx_NotificationStateContextMenu_fieldSet .mx_NotificationStateContextMenu_activeIcon { + display: inline-block; +} diff --git a/src/skins/vector/css/vector-web/views/rooms/RoomDropTarget.css b/src/skins/vector/css/vector-web/views/rooms/RoomDropTarget.css index 7ad5e893..61fbbf74 100644 --- a/src/skins/vector/css/vector-web/views/rooms/RoomDropTarget.css +++ b/src/skins/vector/css/vector-web/views/rooms/RoomDropTarget.css @@ -16,8 +16,8 @@ limitations under the License. .mx_RoomDropTarget { font-size: 13px; - margin-left: 10px; - margin-right: 15px; + margin-left: 18px; + margin-right: 18px; padding-top: 5px; padding-bottom: 5px; border: 1px dashed #76cfa6; @@ -28,6 +28,7 @@ limitations under the License. .collapsed .mx_RoomDropTarget { margin-right: 10px; + margin-left: 10px; } .mx_RoomDropTarget_placeholder { diff --git a/src/skins/vector/css/vector-web/views/rooms/RoomTooltip.css b/src/skins/vector/css/vector-web/views/rooms/RoomTooltip.css index 3aec0fa7..deb8cd3f 100644 --- a/src/skins/vector/css/vector-web/views/rooms/RoomTooltip.css +++ b/src/skins/vector/css/vector-web/views/rooms/RoomTooltip.css @@ -14,19 +14,19 @@ See the License for the specific language governing permissions and limitations under the License. */ +.mx_RoomTooltip_chevron { + position: absolute; + left: -9px; + top: 7px; +} + .mx_RoomTooltip { display: none; position: fixed; border: 1px solid #a4a4a4; border-radius: 8px; background-color: #fff; - z-index: 1000; - left: 64px; + z-index: 2000; + left: 52px; padding: 6px; } - -.mx_RoomTooltip_chevron { - position: absolute; - left: -9px; - top: 8px; -} diff --git a/src/skins/vector/img/icon-context-mute-mentions.svg b/src/skins/vector/img/icon-context-mute-mentions.svg new file mode 100644 index 00000000..3693b7a8 --- /dev/null +++ b/src/skins/vector/img/icon-context-mute-mentions.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/skins/vector/img/icon-context-mute-off-copy.svg b/src/skins/vector/img/icon-context-mute-off-copy.svg new file mode 100644 index 00000000..861f2975 --- /dev/null +++ b/src/skins/vector/img/icon-context-mute-off-copy.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/skins/vector/img/icon-context-mute-off.svg b/src/skins/vector/img/icon-context-mute-off.svg new file mode 100644 index 00000000..d801823b --- /dev/null +++ b/src/skins/vector/img/icon-context-mute-off.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/skins/vector/img/icon-context-mute.svg b/src/skins/vector/img/icon-context-mute.svg new file mode 100644 index 00000000..f53b868a --- /dev/null +++ b/src/skins/vector/img/icon-context-mute.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/skins/vector/img/notif-active.svg b/src/skins/vector/img/notif-active.svg new file mode 100644 index 00000000..9eb279f8 --- /dev/null +++ b/src/skins/vector/img/notif-active.svg @@ -0,0 +1,20 @@ + + + + E15782FC-B5FA-472A-AE12-CFFF484E7253 + Created with sketchtool. + + + + + + + + + + + + + + + diff --git a/src/skins/vector/img/notif-slider.svg b/src/skins/vector/img/notif-slider.svg new file mode 100644 index 00000000..55fa06d1 --- /dev/null +++ b/src/skins/vector/img/notif-slider.svg @@ -0,0 +1,22 @@ + + + + 16CB4618-0BD3-4568-BB20-FC56EBC46046 + Created with sketchtool. + + + + + + + + + + + + + + + + +