diff --git a/CHANGELOG.md b/CHANGELOG.md
index 73b383d76d..4d65a524d1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,122 @@
+Changes in [3.27.0](https://github.com/vector-im/element-desktop/releases/tag/v3.27.0) (2021-07-02)
+===================================================================================================
+
+## 🔒 SECURITY FIXES
+ * Sanitize untrusted variables from message previews before translation
+ Fixes vector-im/element-web#18314
+
+## ✨ Features
+ * Fix editing of `` & ` & ``
+ [\#6469](https://github.com/matrix-org/matrix-react-sdk/pull/6469)
+ Fixes vector-im/element-web#18211
+ * Zoom images in lightbox to where the cursor points
+ [\#6418](https://github.com/matrix-org/matrix-react-sdk/pull/6418)
+ Fixes vector-im/element-web#17870
+ * Avoid hitting the settings store from TextForEvent
+ [\#6205](https://github.com/matrix-org/matrix-react-sdk/pull/6205)
+ Fixes vector-im/element-web#17650
+ * Initial MSC3083 + MSC3244 support
+ [\#6212](https://github.com/matrix-org/matrix-react-sdk/pull/6212)
+ Fixes vector-im/element-web#17686 and vector-im/element-web#17661
+ * Navigate to the first room with notifications when clicked on space notification dot
+ [\#5974](https://github.com/matrix-org/matrix-react-sdk/pull/5974)
+ * Add matrix: to the list of permitted URL schemes
+ [\#6388](https://github.com/matrix-org/matrix-react-sdk/pull/6388)
+ * Add "Copy Link" to room context menu
+ [\#6374](https://github.com/matrix-org/matrix-react-sdk/pull/6374)
+ * 💭 Message bubble layout
+ [\#6291](https://github.com/matrix-org/matrix-react-sdk/pull/6291)
+ Fixes vector-im/element-web#4635, vector-im/element-web#17773 vector-im/element-web#16220 and vector-im/element-web#7687
+ * Play only one audio file at a time
+ [\#6417](https://github.com/matrix-org/matrix-react-sdk/pull/6417)
+ Fixes vector-im/element-web#17439
+ * Move download button for media to the action bar
+ [\#6386](https://github.com/matrix-org/matrix-react-sdk/pull/6386)
+ Fixes vector-im/element-web#17943
+ * Improved display of one-to-one call history with summary boxes for each call
+ [\#6121](https://github.com/matrix-org/matrix-react-sdk/pull/6121)
+ Fixes vector-im/element-web#16409
+ * Notification settings UI refresh
+ [\#6352](https://github.com/matrix-org/matrix-react-sdk/pull/6352)
+ Fixes vector-im/element-web#17782
+ * Fix EventIndex double handling events and erroring
+ [\#6385](https://github.com/matrix-org/matrix-react-sdk/pull/6385)
+ Fixes vector-im/element-web#18008
+ * Improve reply rendering
+ [\#3553](https://github.com/matrix-org/matrix-react-sdk/pull/3553)
+ Fixes vector-im/riot-web#9217, vector-im/riot-web#7633, vector-im/riot-web#7530, vector-im/riot-web#7169, vector-im/riot-web#7151, vector-im/riot-web#6692 vector-im/riot-web#6579 and vector-im/element-web#17440
+
+## 🐛 Bug Fixes
+ * Fix CreateRoomDialog exploding when making public room outside of a space
+ [\#6493](https://github.com/matrix-org/matrix-react-sdk/pull/6493)
+ * Fix regression where registration would soft-crash on captcha
+ [\#6505](https://github.com/matrix-org/matrix-react-sdk/pull/6505)
+ Fixes vector-im/element-web#18284
+ * only send join rule event if we have a join rule to put in it
+ [\#6517](https://github.com/matrix-org/matrix-react-sdk/pull/6517)
+ * Improve the new download button's discoverability and interactions.
+ [\#6510](https://github.com/matrix-org/matrix-react-sdk/pull/6510)
+ * Fix voice recording UI looking broken while microphone permissions are being requested.
+ [\#6479](https://github.com/matrix-org/matrix-react-sdk/pull/6479)
+ Fixes vector-im/element-web#18223
+ * Match colors of room and user avatars in DMs
+ [\#6393](https://github.com/matrix-org/matrix-react-sdk/pull/6393)
+ Fixes vector-im/element-web#2449
+ * Fix onPaste handler to work with copying files from Finder
+ [\#5389](https://github.com/matrix-org/matrix-react-sdk/pull/5389)
+ Fixes vector-im/element-web#15536 and vector-im/element-web#16255
+ * Fix infinite pagination loop when offline
+ [\#6478](https://github.com/matrix-org/matrix-react-sdk/pull/6478)
+ Fixes vector-im/element-web#18242
+ * Fix blurhash rounded corners missing regression
+ [\#6467](https://github.com/matrix-org/matrix-react-sdk/pull/6467)
+ Fixes vector-im/element-web#18110
+ * Fix position of the space hierarchy spinner
+ [\#6462](https://github.com/matrix-org/matrix-react-sdk/pull/6462)
+ Fixes vector-im/element-web#18182
+ * Fix display of image messages that lack thumbnails
+ [\#6456](https://github.com/matrix-org/matrix-react-sdk/pull/6456)
+ Fixes vector-im/element-web#18175
+ * Fix crash with large audio files.
+ [\#6436](https://github.com/matrix-org/matrix-react-sdk/pull/6436)
+ Fixes vector-im/element-web#18149
+ * Make diff colors in codeblocks more pleasant
+ [\#6355](https://github.com/matrix-org/matrix-react-sdk/pull/6355)
+ Fixes vector-im/element-web#17939
+ * Show the correct audio file duration while loading the file.
+ [\#6435](https://github.com/matrix-org/matrix-react-sdk/pull/6435)
+ Fixes vector-im/element-web#18160
+ * Fix various timeline settings not applying immediately.
+ [\#6261](https://github.com/matrix-org/matrix-react-sdk/pull/6261)
+ Fixes vector-im/element-web#17748
+ * Fix issues with room list duplication
+ [\#6391](https://github.com/matrix-org/matrix-react-sdk/pull/6391)
+ Fixes vector-im/element-web#14508
+ * Fix grecaptcha throwing useless error sometimes
+ [\#6401](https://github.com/matrix-org/matrix-react-sdk/pull/6401)
+ Fixes vector-im/element-web#15142
+ * Update Emojibase and Twemoji and switch to IamCal (Slack-style) shortcodes
+ [\#6347](https://github.com/matrix-org/matrix-react-sdk/pull/6347)
+ Fixes vector-im/element-web#13857 and vector-im/element-web#13334
+ * Respect compound emojis in default avatar initial generation
+ [\#6397](https://github.com/matrix-org/matrix-react-sdk/pull/6397)
+ Fixes vector-im/element-web#18040
+ * Fix bug where the 'other homeserver' field in the server selection dialog would become briefly focus and then unfocus when clicked.
+ [\#6394](https://github.com/matrix-org/matrix-react-sdk/pull/6394)
+ Fixes vector-im/element-web#18031
+ * Standardise spelling and casing of homeserver, identity server, and integration manager
+ [\#6365](https://github.com/matrix-org/matrix-react-sdk/pull/6365)
+ * Fix widgets not receiving decrypted events when they have permission.
+ [\#6371](https://github.com/matrix-org/matrix-react-sdk/pull/6371)
+ Fixes vector-im/element-web#17615
+ * Prevent client hangs when calculating blurhashes
+ [\#6366](https://github.com/matrix-org/matrix-react-sdk/pull/6366)
+ Fixes vector-im/element-web#17945
+ * Exclude state events from widgets reading room events
+ [\#6378](https://github.com/matrix-org/matrix-react-sdk/pull/6378)
+ * Cache feature_spaces\* flags to improve performance
+ [\#6381](https://github.com/matrix-org/matrix-react-sdk/pull/6381)
+
Changes in [3.26.0](https://github.com/matrix-org/matrix-react-sdk/releases/tag/v3.26.0) (2021-07-19)
=====================================================================================================
[Full Changelog](https://github.com/matrix-org/matrix-react-sdk/compare/v3.26.0-rc.1...v3.26.0)
diff --git a/README.md b/README.md
index b3e96ef001..67e5e12f59 100644
--- a/README.md
+++ b/README.md
@@ -34,7 +34,7 @@ All code lands on the `develop` branch - `master` is only used for stable releas
**Please file PRs against `develop`!!**
Please follow the standard Matrix contributor's guide:
-https://github.com/matrix-org/matrix-js-sdk/blob/develop/CONTRIBUTING.rst
+https://github.com/matrix-org/matrix-js-sdk/blob/develop/CONTRIBUTING.md
Please follow the Matrix JS/React code style as per:
https://github.com/matrix-org/matrix-react-sdk/blob/master/code_style.md
diff --git a/package.json b/package.json
index b73462d188..704315ca69 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "matrix-react-sdk",
- "version": "3.26.0",
+ "version": "3.27.0",
"description": "SDK for matrix.org using React",
"author": "matrix.org",
"repository": {
@@ -80,7 +80,7 @@
"katex": "^0.12.0",
"linkifyjs": "^2.1.9",
"lodash": "^4.17.20",
- "matrix-js-sdk": "12.1.0",
+ "matrix-js-sdk": "12.2.0",
"matrix-widget-api": "^0.1.0-beta.15",
"minimist": "^1.2.5",
"opus-recorder": "^8.0.3",
@@ -153,7 +153,7 @@
"enzyme": "^3.11.0",
"eslint": "7.18.0",
"eslint-config-google": "^0.14.0",
- "eslint-plugin-matrix-org": "github:matrix-org/eslint-plugin-matrix-org#main",
+ "eslint-plugin-matrix-org": "github:matrix-org/eslint-plugin-matrix-org#2306b3d4da4eba908b256014b979f1d3d43d2945",
"eslint-plugin-react": "^7.22.0",
"eslint-plugin-react-hooks": "^4.2.0",
"glob": "^7.1.6",
diff --git a/res/css/_common.scss b/res/css/_common.scss
index b128a82442..6b4e109b3a 100644
--- a/res/css/_common.scss
+++ b/res/css/_common.scss
@@ -104,8 +104,8 @@ a:visited {
input[type=text],
input[type=search],
input[type=password] {
+ font-family: inherit;
padding: 9px;
- font-family: $font-family;
font-size: $font-14px;
font-weight: 600;
min-width: 0;
@@ -146,7 +146,6 @@ input[type=text], input[type=password], textarea {
/* Required by Firefox */
textarea {
- font-family: $font-family;
color: $primary-fg-color;
}
diff --git a/res/css/_components.scss b/res/css/_components.scss
index b87b45093c..92d2bfe7f3 100644
--- a/res/css/_components.scss
+++ b/res/css/_components.scss
@@ -67,7 +67,6 @@
@import "./views/dialogs/_AddExistingToSpaceDialog.scss";
@import "./views/dialogs/_AddressPickerDialog.scss";
@import "./views/dialogs/_Analytics.scss";
-@import "./views/dialogs/_BetaFeedbackDialog.scss";
@import "./views/dialogs/_BugReportDialog.scss";
@import "./views/dialogs/_ChangelogDialog.scss";
@import "./views/dialogs/_ChatCreateOrReuseChatDialog.scss";
@@ -76,16 +75,20 @@
@import "./views/dialogs/_CreateCommunityPrototypeDialog.scss";
@import "./views/dialogs/_CreateGroupDialog.scss";
@import "./views/dialogs/_CreateRoomDialog.scss";
+@import "./views/dialogs/_CreateSubspaceDialog.scss";
@import "./views/dialogs/_DeactivateAccountDialog.scss";
@import "./views/dialogs/_DevtoolsDialog.scss";
@import "./views/dialogs/_EditCommunityPrototypeDialog.scss";
@import "./views/dialogs/_FeedbackDialog.scss";
@import "./views/dialogs/_ForwardDialog.scss";
+@import "./views/dialogs/_GenericFeatureFeedbackDialog.scss";
@import "./views/dialogs/_GroupAddressPicker.scss";
@import "./views/dialogs/_HostSignupDialog.scss";
@import "./views/dialogs/_IncomingSasDialog.scss";
@import "./views/dialogs/_InviteDialog.scss";
+@import "./views/dialogs/_JoinRuleDropdown.scss";
@import "./views/dialogs/_KeyboardShortcutsDialog.scss";
+@import "./views/dialogs/_LeaveSpaceDialog.scss";
@import "./views/dialogs/_ManageRestrictedJoinRuleDialog.scss";
@import "./views/dialogs/_MessageEditHistoryDialog.scss";
@import "./views/dialogs/_ModalWidgetDialog.scss";
@@ -270,6 +273,7 @@
@import "./views/voip/_CallPreview.scss";
@import "./views/voip/_CallView.scss";
@import "./views/voip/_CallViewForRoom.scss";
+@import "./views/voip/_CallViewSidebar.scss";
@import "./views/voip/_DialPad.scss";
@import "./views/voip/_DialPadContextMenu.scss";
@import "./views/voip/_DialPadModal.scss";
diff --git a/res/css/structures/_SpacePanel.scss b/res/css/structures/_SpacePanel.scss
index e64057d16c..1dea6332f5 100644
--- a/res/css/structures/_SpacePanel.scss
+++ b/res/css/structures/_SpacePanel.scss
@@ -297,7 +297,7 @@ $activeBorderColor: $secondary-fg-color;
.mx_SpaceButton:hover,
.mx_SpaceButton:focus-within,
.mx_SpaceButton_hasMenuOpen {
- &:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) {
+ &:not(.mx_SpaceButton_invite) {
// Hide the badge container on hover because it'll be a menu button
.mx_SpacePanel_badgeContainer {
width: 0;
@@ -368,6 +368,14 @@ $activeBorderColor: $secondary-fg-color;
.mx_SpacePanel_iconExplore::before {
mask-image: url('$(res)/img/element-icons/roomlist/browse.svg');
}
+
+ .mx_SpacePanel_noIcon {
+ display: none;
+
+ & + .mx_IconizedContextMenu_label {
+ padding-left: 5px !important; // override default iconized label style to align with header
+ }
+ }
}
diff --git a/res/css/structures/_SpaceRoomDirectory.scss b/res/css/structures/_SpaceRoomDirectory.scss
index 7925686bf1..cb91aa3c7d 100644
--- a/res/css/structures/_SpaceRoomDirectory.scss
+++ b/res/css/structures/_SpaceRoomDirectory.scss
@@ -61,6 +61,7 @@ limitations under the License.
.mx_AccessibleButton_kind_link {
padding: 0;
+ font-size: inherit;
}
.mx_SearchBox {
@@ -190,7 +191,6 @@ limitations under the License.
position: relative;
padding: 8px 16px;
border-radius: 8px;
- min-height: 56px;
box-sizing: border-box;
display: grid;
diff --git a/res/css/structures/_SpaceRoomView.scss b/res/css/structures/_SpaceRoomView.scss
index e4832d9430..58a4b426c2 100644
--- a/res/css/structures/_SpaceRoomView.scss
+++ b/res/css/structures/_SpaceRoomView.scss
@@ -335,24 +335,17 @@ $SpaceRoomViewInnerWidth: 428px;
word-wrap: break-word;
}
- > hr {
- border: none;
- height: 1px;
- background-color: $groupFilterPanel-bg-color;
- }
-
.mx_SearchBox {
margin: 0 0 20px;
flex: 0;
}
.mx_SpaceFeedbackPrompt {
- margin-bottom: 16px;
-
- // hide the HR as we have our own
- & + hr {
- display: none;
- }
+ padding: 7px; // 8px - 1px border
+ border: 1px solid $menu-border-color;
+ border-radius: 8px;
+ width: max-content;
+ margin: 0 0 -40px auto; // collapse its own height to not push other components down
}
.mx_SpaceRoomDirectory_list {
@@ -513,66 +506,3 @@ $SpaceRoomViewInnerWidth: 428px;
}
}
}
-
-.mx_SpaceFeedbackPrompt {
- margin-top: 18px;
- margin-bottom: 12px;
-
- > hr {
- border: none;
- border-top: 1px solid $input-border-color;
- margin-bottom: 12px;
- }
-
- > div {
- display: flex;
- flex-direction: row;
- font-size: $font-15px;
- line-height: $font-24px;
-
- > span {
- color: $secondary-fg-color;
- position: relative;
- padding-left: 32px;
- font-size: inherit;
- line-height: inherit;
- margin-right: auto;
-
- &::before {
- content: '';
- position: absolute;
- left: 0;
- top: 2px;
- height: 20px;
- width: 20px;
- background-color: $secondary-fg-color;
- mask-repeat: no-repeat;
- mask-size: contain;
- mask-image: url('$(res)/img/element-icons/room/room-summary.svg');
- mask-position: center;
- }
- }
-
- .mx_AccessibleButton_kind_link {
- color: $accent-color;
- position: relative;
- padding: 0 0 0 24px;
- margin-left: 8px;
- font-size: inherit;
- line-height: inherit;
-
- &::before {
- content: '';
- position: absolute;
- left: 0;
- height: 16px;
- width: 16px;
- background-color: $accent-color;
- mask-repeat: no-repeat;
- mask-size: contain;
- mask-image: url('$(res)/img/element-icons/chat-bubbles.svg');
- mask-position: center;
- }
- }
- }
-}
diff --git a/res/css/views/context_menus/_IconizedContextMenu.scss b/res/css/views/context_menus/_IconizedContextMenu.scss
index 204435995f..ff176eef7e 100644
--- a/res/css/views/context_menus/_IconizedContextMenu.scss
+++ b/res/css/views/context_menus/_IconizedContextMenu.scss
@@ -99,6 +99,10 @@ limitations under the License.
.mx_IconizedContextMenu_icon + .mx_IconizedContextMenu_label {
padding-left: 14px;
}
+
+ .mx_BetaCard_betaPill {
+ margin-left: 16px;
+ }
}
}
@@ -145,12 +149,17 @@ limitations under the License.
}
}
- .mx_IconizedContextMenu_checked {
+ .mx_IconizedContextMenu_checked,
+ .mx_IconizedContextMenu_unchecked {
margin-left: 16px;
margin-right: -5px;
+ }
- &::before {
- mask-image: url('$(res)/img/element-icons/roomlist/checkmark.svg');
- }
+ .mx_IconizedContextMenu_checked::before {
+ mask-image: url('$(res)/img/element-icons/roomlist/checkmark.svg');
+ }
+
+ .mx_IconizedContextMenu_unchecked::before {
+ content: unset;
}
}
diff --git a/res/css/views/dialogs/_AddExistingToSpaceDialog.scss b/res/css/views/dialogs/_AddExistingToSpaceDialog.scss
index 2776c477fc..42e17c8d98 100644
--- a/res/css/views/dialogs/_AddExistingToSpaceDialog.scss
+++ b/res/css/views/dialogs/_AddExistingToSpaceDialog.scss
@@ -50,64 +50,11 @@ limitations under the License.
line-height: $font-15px;
}
- .mx_AddExistingToSpace_entry {
- display: flex;
- margin-top: 12px;
-
- // we can't target .mx_BaseAvatar here as it'll break the decorated avatar styling
- .mx_DecoratedRoomAvatar {
- margin-right: 12px;
- }
-
- .mx_AddExistingToSpace_entry_name {
- font-size: $font-15px;
- line-height: 30px;
- flex-grow: 1;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- margin-right: 12px;
- }
-
- .mx_Checkbox {
- align-items: center;
- }
- }
- }
-
- .mx_AddExistingToSpace_section_spaces {
- .mx_BaseAvatar {
- margin-right: 12px;
- }
-
- .mx_BaseAvatar_image {
- border-radius: 8px;
- }
- }
-
- .mx_AddExistingToSpace_section_experimental {
- position: relative;
- border-radius: 8px;
- margin: 12px 0;
- padding: 8px 8px 8px 42px;
- background-color: $header-panel-bg-color;
-
- font-size: $font-12px;
- line-height: $font-15px;
- color: $secondary-fg-color;
-
- &::before {
- content: '';
- position: absolute;
- left: 10px;
- top: calc(50% - 8px); // vertical centering
- height: 16px;
- width: 16px;
- background-color: $secondary-fg-color;
- mask-repeat: no-repeat;
- mask-size: contain;
- mask-image: url('$(res)/img/element-icons/room/room-summary.svg');
- mask-position: center;
+ .mx_AccessibleButton_kind_link {
+ font-size: $font-12px;
+ line-height: $font-15px;
+ margin-top: 8px;
+ padding: 0;
}
}
@@ -205,77 +152,106 @@ limitations under the License.
min-height: 0;
height: 80vh;
- .mx_Dialog_title {
- display: flex;
-
- .mx_BaseAvatar_image {
- border-radius: 8px;
- margin: 0;
- vertical-align: unset;
- }
-
- .mx_BaseAvatar {
- display: inline-flex;
- margin: auto 16px auto 5px;
- vertical-align: middle;
- }
-
- > div {
- > h1 {
- font-weight: $font-semi-bold;
- font-size: $font-18px;
- line-height: $font-22px;
- margin: 0;
- }
-
- .mx_AddExistingToSpaceDialog_onlySpace {
- color: $secondary-fg-color;
- font-size: $font-15px;
- line-height: $font-24px;
- }
- }
-
- .mx_Dropdown_input {
- border: none;
-
- > .mx_Dropdown_option {
- padding-left: 0;
- flex: unset;
- height: unset;
- color: $secondary-fg-color;
- font-size: $font-15px;
- line-height: $font-24px;
-
- .mx_BaseAvatar {
- display: none;
- }
- }
-
- .mx_Dropdown_menu {
- .mx_AddExistingToSpaceDialog_dropdownOptionActive {
- color: $accent-color;
- padding-right: 32px;
- position: relative;
-
- &::before {
- content: '';
- width: 20px;
- height: 20px;
- top: 8px;
- right: 0;
- position: absolute;
- mask-position: center;
- mask-size: contain;
- mask-repeat: no-repeat;
- background-color: $accent-color;
- mask-image: url('$(res)/img/element-icons/roomlist/checkmark.svg');
- }
- }
- }
- }
- }
-
.mx_AddExistingToSpace {
display: contents;
}
}
+
+.mx_SubspaceSelector {
+ display: flex;
+
+ .mx_BaseAvatar_image {
+ border-radius: 8px;
+ margin: 0;
+ vertical-align: unset;
+ }
+
+ .mx_BaseAvatar {
+ display: inline-flex;
+ margin: auto 16px auto 5px;
+ vertical-align: middle;
+ }
+
+ > div {
+ > h1 {
+ font-weight: $font-semi-bold;
+ font-size: $font-18px;
+ line-height: $font-22px;
+ margin: 0;
+ }
+ }
+
+ .mx_Dropdown_input {
+ border: none;
+
+ > .mx_Dropdown_option {
+ padding-left: 0;
+ flex: unset;
+ height: unset;
+ color: $secondary-fg-color;
+ font-size: $font-15px;
+ line-height: $font-24px;
+
+ .mx_BaseAvatar {
+ display: none;
+ }
+ }
+
+ .mx_Dropdown_menu {
+ .mx_SubspaceSelector_dropdownOptionActive {
+ color: $accent-color;
+ padding-right: 32px;
+ position: relative;
+
+ &::before {
+ content: '';
+ width: 20px;
+ height: 20px;
+ top: 8px;
+ right: 0;
+ position: absolute;
+ mask-position: center;
+ mask-size: contain;
+ mask-repeat: no-repeat;
+ background-color: $accent-color;
+ mask-image: url('$(res)/img/element-icons/roomlist/checkmark.svg');
+ }
+ }
+ }
+ }
+
+ .mx_SubspaceSelector_onlySpace {
+ color: $secondary-fg-color;
+ font-size: $font-15px;
+ line-height: $font-24px;
+ }
+}
+
+.mx_AddExistingToSpace_entry {
+ display: flex;
+ margin-top: 12px;
+
+ .mx_DecoratedRoomAvatar, // we can't target .mx_BaseAvatar here as it'll break the decorated avatar styling
+ .mx_BaseAvatar.mx_RoomAvatar_isSpaceRoom {
+ margin-right: 12px;
+ }
+
+ img.mx_RoomAvatar_isSpaceRoom,
+ .mx_RoomAvatar_isSpaceRoom img {
+ border-radius: 8px;
+ }
+
+ .mx_AddExistingToSpace_entry_name {
+ font-size: $font-15px;
+ line-height: 30px;
+ flex-grow: 1;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ margin-right: 12px;
+ }
+
+ .mx_Checkbox {
+ align-items: center;
+ }
+}
diff --git a/res/css/views/dialogs/_AddressPickerDialog.scss b/res/css/views/dialogs/_AddressPickerDialog.scss
index 136e497994..a1147e6fbc 100644
--- a/res/css/views/dialogs/_AddressPickerDialog.scss
+++ b/res/css/views/dialogs/_AddressPickerDialog.scss
@@ -29,7 +29,6 @@ limitations under the License.
.mx_AddressPickerDialog_input:focus {
height: 26px;
font-size: $font-14px;
- font-family: $font-family;
padding-left: 12px;
padding-right: 12px;
margin: 0 !important;
diff --git a/res/css/views/dialogs/_ConfirmUserActionDialog.scss b/res/css/views/dialogs/_ConfirmUserActionDialog.scss
index 823f4d1e28..284c171f4e 100644
--- a/res/css/views/dialogs/_ConfirmUserActionDialog.scss
+++ b/res/css/views/dialogs/_ConfirmUserActionDialog.scss
@@ -34,7 +34,6 @@ limitations under the License.
}
.mx_ConfirmUserActionDialog_reasonField {
- font-family: $font-family;
font-size: $font-14px;
color: $primary-fg-color;
background-color: $primary-bg-color;
diff --git a/res/css/views/dialogs/_CreateRoomDialog.scss b/res/css/views/dialogs/_CreateRoomDialog.scss
index 5321d8ff69..e7cfbf6050 100644
--- a/res/css/views/dialogs/_CreateRoomDialog.scss
+++ b/res/css/views/dialogs/_CreateRoomDialog.scss
@@ -109,56 +109,4 @@ limitations under the License.
margin: 0 85px 0 0;
font-size: $font-12px;
}
-
- .mx_Dropdown {
- margin-bottom: 8px;
- font-weight: normal;
- font-family: $font-family;
- font-size: $font-14px;
- color: $primary-fg-color;
-
- .mx_Dropdown_input {
- border: 1px solid $input-border-color;
- }
-
- .mx_Dropdown_option {
- font-size: $font-14px;
- line-height: $font-32px;
- height: 32px;
- min-height: 32px;
-
- > div {
- padding-left: 30px;
- position: relative;
-
- &::before {
- content: "";
- position: absolute;
- height: 16px;
- width: 16px;
- left: 6px;
- top: 8px;
- mask-repeat: no-repeat;
- mask-position: center;
- background-color: $secondary-fg-color;
- }
- }
- }
-
- .mx_CreateRoomDialog_dropdown_invite::before {
- mask-image: url('$(res)/img/element-icons/lock.svg');
- mask-size: contain;
- }
-
- .mx_CreateRoomDialog_dropdown_public::before {
- mask-image: url('$(res)/img/globe.svg');
- mask-size: 12px;
- }
-
- .mx_CreateRoomDialog_dropdown_restricted::before {
- mask-image: url('$(res)/img/element-icons/community-members.svg');
- mask-size: contain;
- }
- }
}
-
diff --git a/res/css/views/dialogs/_CreateSubspaceDialog.scss b/res/css/views/dialogs/_CreateSubspaceDialog.scss
new file mode 100644
index 0000000000..1ec4731ae6
--- /dev/null
+++ b/res/css/views/dialogs/_CreateSubspaceDialog.scss
@@ -0,0 +1,81 @@
+/*
+Copyright 2021 The Matrix.org Foundation C.I.C.
+
+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_CreateSubspaceDialog_wrapper {
+ .mx_Dialog {
+ display: flex;
+ flex-direction: column;
+ }
+}
+
+.mx_CreateSubspaceDialog {
+ width: 480px;
+ color: $primary-fg-color;
+ display: flex;
+ flex-direction: column;
+ flex-wrap: nowrap;
+ min-height: 0;
+
+ .mx_CreateSubspaceDialog_content {
+ flex-grow: 1;
+
+ .mx_CreateSubspaceDialog_betaNotice {
+ padding: 12px 16px;
+ border-radius: 8px;
+ background-color: $header-panel-bg-color;
+
+ .mx_BetaCard_betaPill {
+ margin-right: 8px;
+ vertical-align: middle;
+ }
+ }
+
+ .mx_JoinRuleDropdown + p {
+ color: $muted-fg-color;
+ font-size: $font-12px;
+ }
+ }
+
+ .mx_CreateSubspaceDialog_footer {
+ display: flex;
+ margin-top: 20px;
+
+ .mx_CreateSubspaceDialog_footer_prompt {
+ flex-grow: 1;
+ font-size: $font-12px;
+ line-height: $font-15px;
+ color: $secondary-fg-color;
+
+ > * {
+ vertical-align: middle;
+ }
+ }
+
+ .mx_AccessibleButton {
+ display: inline-block;
+ align-self: center;
+ }
+
+ .mx_AccessibleButton_kind_primary {
+ margin-left: 16px;
+ padding: 8px 36px;
+ }
+
+ .mx_AccessibleButton_kind_link {
+ padding: 0;
+ }
+ }
+}
diff --git a/res/css/views/dialogs/_DevtoolsDialog.scss b/res/css/views/dialogs/_DevtoolsDialog.scss
index 8fee740016..4d35e8d569 100644
--- a/res/css/views/dialogs/_DevtoolsDialog.scss
+++ b/res/css/views/dialogs/_DevtoolsDialog.scss
@@ -55,22 +55,6 @@ limitations under the License.
padding-right: 24px;
}
-.mx_DevTools_inputCell {
- display: table-cell;
- width: 240px;
-}
-
-.mx_DevTools_inputCell input {
- display: inline-block;
- border: 0;
- border-bottom: 1px solid $input-underline-color;
- padding: 0;
- width: 240px;
- color: $input-fg-color;
- font-family: $font-family;
- font-size: $font-16px;
-}
-
.mx_DevTools_textarea {
font-size: $font-12px;
max-width: 684px;
@@ -139,7 +123,6 @@ limitations under the License.
+ .mx_DevTools_tgl-btn {
padding: 2px;
transition: all .2s ease;
- font-family: sans-serif;
perspective: 100px;
&::after,
&::before {
diff --git a/res/css/views/dialogs/_BetaFeedbackDialog.scss b/res/css/views/dialogs/_GenericFeatureFeedbackDialog.scss
similarity index 90%
rename from res/css/views/dialogs/_BetaFeedbackDialog.scss
rename to res/css/views/dialogs/_GenericFeatureFeedbackDialog.scss
index 9f5f6b512e..f83eed9c53 100644
--- a/res/css/views/dialogs/_BetaFeedbackDialog.scss
+++ b/res/css/views/dialogs/_GenericFeatureFeedbackDialog.scss
@@ -14,8 +14,8 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-.mx_BetaFeedbackDialog {
- .mx_BetaFeedbackDialog_subheading {
+.mx_GenericFeatureFeedbackDialog {
+ .mx_GenericFeatureFeedbackDialog_subheading {
color: $primary-fg-color;
font-size: $font-14px;
line-height: $font-20px;
diff --git a/res/css/views/dialogs/_JoinRuleDropdown.scss b/res/css/views/dialogs/_JoinRuleDropdown.scss
new file mode 100644
index 0000000000..c48a79af3c
--- /dev/null
+++ b/res/css/views/dialogs/_JoinRuleDropdown.scss
@@ -0,0 +1,67 @@
+/*
+Copyright 2021 The Matrix.org Foundation C.I.C.
+
+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_JoinRuleDropdown {
+ margin-bottom: 8px;
+ font-weight: normal;
+ font-family: $font-family;
+ font-size: $font-14px;
+ color: $primary-fg-color;
+
+ .mx_Dropdown_input {
+ border: 1px solid $input-border-color;
+ }
+
+ .mx_Dropdown_option {
+ font-size: $font-14px;
+ line-height: $font-32px;
+ height: 32px;
+ min-height: 32px;
+
+ > div {
+ padding-left: 30px;
+ position: relative;
+
+ &::before {
+ content: "";
+ position: absolute;
+ height: 16px;
+ width: 16px;
+ left: 6px;
+ top: 8px;
+ mask-repeat: no-repeat;
+ mask-position: center;
+ background-color: $secondary-fg-color;
+ }
+ }
+ }
+
+ .mx_JoinRuleDropdown_invite::before {
+ mask-image: url('$(res)/img/element-icons/lock.svg');
+ mask-size: contain;
+ }
+
+ .mx_JoinRuleDropdown_public::before {
+ mask-image: url('$(res)/img/globe.svg');
+ mask-size: 12px;
+ }
+
+ .mx_JoinRuleDropdown_restricted::before {
+ mask-image: url('$(res)/img/element-icons/community-members.svg');
+ mask-size: contain;
+ }
+}
+
diff --git a/res/css/views/dialogs/_LeaveSpaceDialog.scss b/res/css/views/dialogs/_LeaveSpaceDialog.scss
new file mode 100644
index 0000000000..c982f50e52
--- /dev/null
+++ b/res/css/views/dialogs/_LeaveSpaceDialog.scss
@@ -0,0 +1,96 @@
+/*
+Copyright 2021 The Matrix.org Foundation C.I.C.
+
+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_LeaveSpaceDialog_wrapper {
+ .mx_Dialog {
+ display: flex;
+ flex-direction: column;
+ padding: 24px 32px;
+ }
+}
+
+.mx_LeaveSpaceDialog {
+ width: 440px;
+ display: flex;
+ flex-direction: column;
+ flex-wrap: nowrap;
+ max-height: 520px;
+
+ .mx_Dialog_content {
+ flex-grow: 1;
+ margin: 0;
+ overflow-y: auto;
+
+ .mx_RadioButton + .mx_RadioButton {
+ margin-top: 16px;
+ }
+
+ .mx_SearchBox {
+ // To match the space around the title
+ margin: 0 0 15px 0;
+ flex-grow: 0;
+ border-radius: 8px;
+ }
+
+ .mx_LeaveSpaceDialog_noResults {
+ display: block;
+ margin-top: 24px;
+ }
+
+ .mx_LeaveSpaceDialog_section {
+ margin: 16px 0;
+ }
+
+ .mx_LeaveSpaceDialog_section_warning {
+ position: relative;
+ border-radius: 8px;
+ margin: 12px 0 0;
+ padding: 12px 8px 12px 42px;
+ background-color: $header-panel-bg-color;
+
+ font-size: $font-12px;
+ line-height: $font-15px;
+ color: $secondary-fg-color;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 10px;
+ top: calc(50% - 8px); // vertical centering
+ height: 16px;
+ width: 16px;
+ background-color: $secondary-fg-color;
+ mask-repeat: no-repeat;
+ mask-size: contain;
+ mask-image: url('$(res)/img/element-icons/room/room-summary.svg');
+ mask-position: center;
+ }
+ }
+
+ > p {
+ color: $primary-fg-color;
+ }
+ }
+
+ .mx_Dialog_buttons {
+ margin-top: 20px;
+
+ .mx_Dialog_primary {
+ background-color: $notice-primary-color !important; // override default colour
+ border-color: $notice-primary-color;
+ }
+ }
+}
diff --git a/res/css/views/elements/_DesktopCapturerSourcePicker.scss b/res/css/views/elements/_DesktopCapturerSourcePicker.scss
index 69dde5925e..49a0a44417 100644
--- a/res/css/views/elements/_DesktopCapturerSourcePicker.scss
+++ b/res/css/views/elements/_DesktopCapturerSourcePicker.scss
@@ -16,57 +16,43 @@ limitations under the License.
.mx_desktopCapturerSourcePicker {
overflow: hidden;
-}
-.mx_desktopCapturerSourcePicker_tabLabels {
- display: flex;
- padding: 0 0 8px 0;
-}
+ .mx_desktopCapturerSourcePicker_tab {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: center;
+ align-items: flex-start;
+ height: 500px;
+ overflow: overlay;
+ }
-.mx_desktopCapturerSourcePicker_tabLabel,
-.mx_desktopCapturerSourcePicker_tabLabel_selected {
- width: 100%;
- text-align: center;
- border-radius: 8px;
- padding: 8px 0;
- font-size: $font-13px;
-}
+ .mx_desktopCapturerSourcePicker_source {
+ display: flex;
+ flex-direction: column;
+ margin: 8px;
+ }
-.mx_desktopCapturerSourcePicker_tabLabel_selected {
- background-color: $tab-label-active-bg-color;
- color: $tab-label-active-fg-color;
-}
+ .mx_desktopCapturerSourcePicker_source_thumbnail {
+ margin: 4px;
+ padding: 4px;
+ width: 312px;
+ border-width: 2px;
+ border-radius: 8px;
+ border-style: solid;
+ border-color: transparent;
-.mx_desktopCapturerSourcePicker_panel {
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- align-items: flex-start;
- height: 500px;
- overflow: overlay;
-}
+ &.mx_desktopCapturerSourcePicker_source_thumbnail_selected,
+ &:hover,
+ &:focus {
+ border-color: $accent-color;
+ }
+ }
-.mx_desktopCapturerSourcePicker_stream_button {
- display: flex;
- flex-direction: column;
- margin: 8px;
- border-radius: 4px;
-}
-
-.mx_desktopCapturerSourcePicker_stream_button:hover,
-.mx_desktopCapturerSourcePicker_stream_button:focus {
- background: $roomtile-selected-bg-color;
-}
-
-.mx_desktopCapturerSourcePicker_stream_thumbnail {
- margin: 4px;
- width: 312px;
-}
-
-.mx_desktopCapturerSourcePicker_stream_name {
- margin: 0 4px;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
- width: 312px;
+ .mx_desktopCapturerSourcePicker_source_name {
+ margin: 0 4px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ width: 312px;
+ }
}
diff --git a/res/css/views/elements/_Field.scss b/res/css/views/elements/_Field.scss
index f67da6477b..cae81dcc97 100644
--- a/res/css/views/elements/_Field.scss
+++ b/res/css/views/elements/_Field.scss
@@ -39,7 +39,6 @@ limitations under the License.
.mx_Field select,
.mx_Field textarea {
font-weight: normal;
- font-family: $font-family;
font-size: $font-14px;
border: none;
// Even without a border here, we still need this avoid overlapping the rounded
diff --git a/res/css/views/messages/_CallEvent.scss b/res/css/views/messages/_CallEvent.scss
index 54c7df3e0b..0c1b41ca38 100644
--- a/res/css/views/messages/_CallEvent.scss
+++ b/res/css/views/messages/_CallEvent.scss
@@ -23,7 +23,7 @@ limitations under the License.
background-color: $dark-panel-bg-color;
border-radius: 8px;
margin: 10px auto;
- max-width: 75%;
+ width: 75%;
box-sizing: border-box;
height: 60px;
@@ -43,6 +43,14 @@ limitations under the License.
}
}
+ &.mx_CallEvent_voice.mx_CallEvent_missed .mx_CallEvent_type_icon::before {
+ mask-image: url('$(res)/img/voip/missed-voice.svg');
+ }
+
+ &.mx_CallEvent_video.mx_CallEvent_missed .mx_CallEvent_type_icon::before {
+ mask-image: url('$(res)/img/voip/missed-video.svg');
+ }
+
.mx_CallEvent_info {
display: flex;
flex-direction: row;
diff --git a/res/css/views/messages/_MFileBody.scss b/res/css/views/messages/_MFileBody.scss
index 403f671673..d941a8132f 100644
--- a/res/css/views/messages/_MFileBody.scss
+++ b/res/css/views/messages/_MFileBody.scss
@@ -1,5 +1,5 @@
/*
-Copyright 2015, 2016, 2021 The Matrix.org Foundation C.I.C.
+Copyright 2015 - 2021 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -60,6 +60,8 @@ limitations under the License.
}
.mx_MFileBody_info {
+ cursor: pointer;
+
.mx_MFileBody_info_icon {
background-color: $message-body-panel-icon-bg-color;
border-radius: 20px;
diff --git a/res/css/views/messages/_ViewSourceEvent.scss b/res/css/views/messages/_ViewSourceEvent.scss
index 66825030e0..b0e40a5152 100644
--- a/res/css/views/messages/_ViewSourceEvent.scss
+++ b/res/css/views/messages/_ViewSourceEvent.scss
@@ -43,8 +43,10 @@ limitations under the License.
margin-bottom: 7px;
mask-image: url('$(res)/img/feather-customised/minimise.svg');
}
+}
- &:hover .mx_ViewSourceEvent_toggle {
+.mx_EventTile:hover {
+ .mx_ViewSourceEvent_toggle {
visibility: visible;
}
}
diff --git a/res/css/views/rooms/_EventBubbleTile.scss b/res/css/views/rooms/_EventBubbleTile.scss
index 8629682693..1e25deba26 100644
--- a/res/css/views/rooms/_EventBubbleTile.scss
+++ b/res/css/views/rooms/_EventBubbleTile.scss
@@ -15,7 +15,7 @@ limitations under the License.
*/
.mx_EventTile[data-layout=bubble],
-.mx_EventTile[data-layout=bubble] ~ .mx_EventListSummary {
+.mx_EventListSummary[data-layout=bubble] {
--avatarSize: 32px;
--gutterSize: 11px;
--cornerRadius: 12px;
@@ -38,18 +38,22 @@ limitations under the License.
padding-top: 0;
}
+ &::before {
+ content: '';
+ position: absolute;
+ top: -1px;
+ bottom: -1px;
+ left: -60px;
+ right: -60px;
+ z-index: -1;
+ border-radius: 4px;
+ }
+
&:hover,
&.mx_EventTile_selected {
+
&::before {
- content: '';
- position: absolute;
- top: -1px;
- bottom: -1px;
- left: -60px;
- right: -60px;
- z-index: -1;
background: $eventbubble-bg-hover;
- border-radius: 4px;
}
.mx_EventTile_avatar {
@@ -155,12 +159,20 @@ limitations under the License.
.mx_EventTile_avatar {
position: absolute;
top: 0;
+ line-height: 1;
+ z-index: 9;
img {
box-shadow: 0 0 0 3px $eventbubble-avatar-outline;
border-radius: 50%;
}
}
+ &.mx_EventTile_noSender {
+ .mx_EventTile_avatar {
+ top: -19px;
+ }
+ }
+
.mx_BaseAvatar,
.mx_EventTile_avatar {
line-height: 1;
@@ -216,90 +228,6 @@ limitations under the License.
border-left-color: $eventbubble-reply-color;
}
- &.mx_EventTile_bubbleContainer,
- &.mx_EventTile_info,
- & ~ .mx_EventListSummary[data-expanded=false] {
- --backgroundColor: transparent;
- --gutterSize: 0;
-
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 5px 0;
-
- .mx_EventTile_avatar {
- position: static;
- order: -1;
- margin-right: 5px;
- }
- }
-
- & ~ .mx_EventListSummary {
- --maxWidth: 80%;
- margin-left: calc(var(--avatarSize) + var(--gutterSize));
- margin-right: calc(var(--gutterSize) + var(--avatarSize));
- .mx_EventListSummary_toggle {
- float: none;
- margin: 0;
- order: 9;
- margin-left: 5px;
- }
- .mx_EventListSummary_avatars {
- padding-top: 0;
- }
-
- &::after {
- content: "";
- clear: both;
- }
-
- .mx_EventTile {
- margin: 0 6px;
- }
-
- .mx_EventTile_line {
- margin: 0 5px;
- > a {
- left: auto;
- right: 0;
- transform: translateX(calc(100% + 5px));
- }
- }
-
- .mx_MessageActionBar {
- transform: translate3d(90%, 0, 0);
- }
- }
-
- & ~ .mx_EventListSummary[data-expanded=false] {
- padding: 0 34px;
- }
-
- /* events that do not require bubble layout */
- & ~ .mx_EventListSummary,
- &.mx_EventTile_bad {
- .mx_EventTile_line {
- background: transparent;
- }
-
- &:hover {
- &::before {
- background: transparent;
- }
- }
- }
-
- & + .mx_EventListSummary {
- .mx_EventTile {
- margin-top: 0;
- padding: 2px 0;
- }
- }
-
- .mx_EventListSummary_toggle {
- margin-right: 55px;
- }
-
/* Special layout scenario for "Unable To Decrypt (UTD)" events */
&.mx_EventTile_bad > .mx_EventTile_line {
display: grid;
@@ -334,3 +262,93 @@ limitations under the License.
max-width: 100%;
}
}
+
+.mx_EventTile.mx_EventTile_bubbleContainer[data-layout=bubble],
+.mx_EventTile.mx_EventTile_info[data-layout=bubble],
+.mx_EventListSummary[data-layout=bubble][data-expanded=false] {
+ --backgroundColor: transparent;
+ --gutterSize: 0;
+
+ display: flex;
+ align-items: center;
+ justify-content: start;
+ padding: 5px 0;
+
+ .mx_EventTile_avatar {
+ position: static;
+ order: -1;
+ margin-right: 5px;
+ }
+
+ .mx_EventTile_line,
+ .mx_EventTile_info {
+ min-width: 100%;
+ }
+
+ .mx_EventTile_e2eIcon {
+ margin-left: 9px;
+ }
+
+ .mx_EventTile_line > a {
+ right: auto;
+ top: -15px;
+ left: -68px;
+ }
+}
+
+.mx_EventListSummary[data-layout=bubble] {
+ --maxWidth: 70%;
+ margin-left: calc(var(--avatarSize) + var(--gutterSize));
+ margin-right: 94px;
+ .mx_EventListSummary_toggle {
+ float: none;
+ margin: 0;
+ order: 9;
+ margin-left: 5px;
+ margin-right: 55px;
+ }
+ .mx_EventListSummary_avatars {
+ padding-top: 0;
+ }
+
+ &::after {
+ content: "";
+ clear: both;
+ }
+
+ .mx_EventTile {
+ margin: 0 6px;
+ padding: 2px 0;
+ }
+
+ .mx_EventTile_line {
+ margin: 0 5px;
+ > a {
+ left: auto;
+ right: 0;
+ transform: translateX(calc(100% + 5px));
+ }
+ }
+
+ .mx_MessageActionBar {
+ transform: translate3d(90%, 0, 0);
+ }
+}
+
+.mx_EventListSummary[data-expanded=false][data-layout=bubble] {
+ padding: 0 34px;
+}
+
+/* events that do not require bubble layout */
+.mx_EventListSummary[data-layout=bubble],
+.mx_EventTile.mx_EventTile_bad[data-layout=bubble] {
+ .mx_EventTile_line {
+ background: transparent;
+ }
+
+ &:hover {
+ &::before {
+ background: transparent;
+ }
+ }
+}
diff --git a/res/css/views/rooms/_EventTile.scss b/res/css/views/rooms/_EventTile.scss
index bda4a15f45..6e207d674b 100644
--- a/res/css/views/rooms/_EventTile.scss
+++ b/res/css/views/rooms/_EventTile.scss
@@ -59,7 +59,6 @@ $hover-select-border: 4px;
font-size: $font-14px;
display: inline-block; /* anti-zalgo, with overflow hidden */
overflow: hidden;
- cursor: pointer;
padding-bottom: 0px;
padding-top: 0px;
margin: 0px;
@@ -132,15 +131,6 @@ $hover-select-border: 4px;
}
}
- &.mx_EventTile_info .mx_EventTile_line,
- & ~ .mx_EventListSummary .mx_EventTile_avatar ~ .mx_EventTile_line {
- padding-left: calc($left-gutter + 18px);
- }
-
- & ~ .mx_EventListSummary .mx_EventTile_line {
- padding-left: calc($left-gutter);
- }
-
&.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line {
padding-left: calc($left-gutter + 18px - $hover-select-border);
}
@@ -276,10 +266,19 @@ $hover-select-border: 4px;
.mx_ReactionsRow {
margin: 0;
- padding: 6px 60px;
+ padding: 4px 64px;
}
}
+.mx_EventTile:not([data-layout=bubble]).mx_EventTile_info .mx_EventTile_line,
+.mx_EventListSummary:not([data-layout=bubble]) > :not(.mx_EventTile) .mx_EventTile_avatar ~ .mx_EventTile_line {
+ padding-left: calc($left-gutter + 18px);
+}
+
+.mx_EventListSummary:not([data-layout=bubble]) .mx_EventTile_line {
+ padding-left: calc($left-gutter);
+}
+
/* all the overflow-y: hidden; are to trap Zalgos -
but they introduce an implicit overflow-x: auto.
so make that explicitly hidden too to avoid random
@@ -322,6 +321,10 @@ $hover-select-border: 4px;
// on ELS we need the margin to allow interaction with the expand/collapse button which is normally in the RR gutter
}
+.mx_SenderProfile {
+ cursor: pointer;
+}
+
.mx_EventTile_bubbleContainer {
display: grid;
grid-template-columns: 1fr 100px;
@@ -456,8 +459,14 @@ $hover-select-border: 4px;
/* Various markdown overrides */
-.mx_EventTile_body pre {
- border: 1px solid transparent;
+.mx_EventTile_body {
+ a:hover {
+ text-decoration: underline;
+ }
+
+ pre {
+ border: 1px solid transparent;
+ }
}
.mx_EventTile_content .markdown-body {
@@ -573,6 +582,12 @@ $hover-select-border: 4px;
color: $accent-color-alt;
}
+.mx_EventTile_content .markdown-body blockquote {
+ border-left: 2px solid $blockquote-bar-color;
+ border-radius: 2px;
+ padding: 0 10px;
+}
+
.mx_EventTile_content .markdown-body .hljs {
display: inline !important;
}
diff --git a/res/css/views/rooms/_IRCLayout.scss b/res/css/views/rooms/_IRCLayout.scss
index 97190807ca..578c0325d2 100644
--- a/res/css/views/rooms/_IRCLayout.scss
+++ b/res/css/views/rooms/_IRCLayout.scss
@@ -116,6 +116,11 @@ $irc-line-height: $font-18px;
.mx_EditMessageComposer_buttons {
position: relative;
}
+
+ .mx_ReactionsRow {
+ padding-left: 0;
+ padding-right: 0;
+ }
}
.mx_EventTile_emote {
diff --git a/res/css/views/rooms/_MessageComposer.scss b/res/css/views/rooms/_MessageComposer.scss
index e6c0cc3f46..5e2eff4047 100644
--- a/res/css/views/rooms/_MessageComposer.scss
+++ b/res/css/views/rooms/_MessageComposer.scss
@@ -165,8 +165,6 @@ limitations under the License.
font-size: $font-14px;
max-height: 120px;
overflow: auto;
- /* needed for FF */
- font-family: $font-family;
}
/* hack for FF as vertical alignment of custom placeholder text is broken */
diff --git a/res/css/views/rooms/_ReplyTile.scss b/res/css/views/rooms/_ReplyTile.scss
index f3e204e415..fd21e5f348 100644
--- a/res/css/views/rooms/_ReplyTile.scss
+++ b/res/css/views/rooms/_ReplyTile.scss
@@ -60,8 +60,6 @@ limitations under the License.
$reply-lines: 2;
$line-height: $font-22px;
- pointer-events: none;
-
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
diff --git a/res/css/views/settings/_ProfileSettings.scss b/res/css/views/settings/_ProfileSettings.scss
index 4cbcb8e708..63a5fa7edf 100644
--- a/res/css/views/settings/_ProfileSettings.scss
+++ b/res/css/views/settings/_ProfileSettings.scss
@@ -16,6 +16,7 @@ limitations under the License.
.mx_ProfileSettings_controls_topic {
& > textarea {
+ font-family: inherit;
resize: vertical;
}
}
diff --git a/res/css/views/settings/tabs/_SettingsTab.scss b/res/css/views/settings/tabs/_SettingsTab.scss
index 0d679af4e5..9f40372690 100644
--- a/res/css/views/settings/tabs/_SettingsTab.scss
+++ b/res/css/views/settings/tabs/_SettingsTab.scss
@@ -36,7 +36,6 @@ limitations under the License.
.mx_SettingsTab_subheading {
font-size: $font-16px;
display: block;
- font-family: $font-family;
font-weight: 600;
color: $primary-fg-color;
margin-bottom: 10px;
@@ -73,6 +72,13 @@ limitations under the License.
padding-right: 10px;
}
+.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_microcopy {
+ margin-top: 4px;
+ font-size: $font-12px;
+ line-height: $font-15px;
+ color: $secondary-fg-color;
+}
+
.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch {
float: right;
}
diff --git a/res/css/views/spaces/_SpaceCreateMenu.scss b/res/css/views/spaces/_SpaceCreateMenu.scss
index 88b9d8f693..097b2b648e 100644
--- a/res/css/views/spaces/_SpaceCreateMenu.scss
+++ b/res/css/views/spaces/_SpaceCreateMenu.scss
@@ -43,6 +43,12 @@ $spacePanelWidth: 71px;
color: $secondary-fg-color;
margin: 0;
}
+
+ .mx_SpaceFeedbackPrompt {
+ border-top: 1px solid $input-border-color;
+ padding-top: 12px;
+ margin-top: 16px;
+ }
}
// XXX remove this when spaces leaves Beta
@@ -99,3 +105,25 @@ $spacePanelWidth: 71px;
}
}
}
+
+.mx_SpaceFeedbackPrompt {
+ font-size: $font-15px;
+ line-height: $font-24px;
+
+ > span {
+ color: $secondary-fg-color;
+ position: relative;
+ font-size: inherit;
+ line-height: inherit;
+ margin-right: auto;
+ }
+
+ .mx_AccessibleButton_kind_link {
+ color: $accent-color;
+ position: relative;
+ padding: 0;
+ margin-left: 8px;
+ font-size: inherit;
+ line-height: inherit;
+ }
+}
diff --git a/res/css/views/voip/_CallView.scss b/res/css/views/voip/_CallView.scss
index 8299ad8f9a..60b7aa69ea 100644
--- a/res/css/views/voip/_CallView.scss
+++ b/res/css/views/voip/_CallView.scss
@@ -67,7 +67,32 @@ limitations under the License.
.mx_CallView_content {
position: relative;
display: flex;
+ justify-content: center;
border-radius: 8px;
+
+ > .mx_VideoFeed {
+ width: 100%;
+ height: 100%;
+
+ &.mx_VideoFeed_voice {
+ // We don't want to collide with the call controls that have 52px of height
+ margin-bottom: 52px;
+ background-color: $inverted-bg-color;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+
+ .mx_VideoFeed_video {
+ height: 100%;
+ background-color: #000;
+ }
+
+ .mx_VideoFeed_mic {
+ left: 10px;
+ bottom: 10px;
+ }
+ }
}
.mx_CallView_voice {
@@ -260,7 +285,7 @@ limitations under the License.
max-width: 240px;
}
-.mx_CallView_header_phoneIcon {
+.mx_CallView_header_callTypeIcon {
display: inline-block;
margin-right: 6px;
height: 16px;
@@ -274,12 +299,19 @@ limitations under the License.
height: 16px;
width: 16px;
- background-color: $warning-color;
+ background-color: $secondary-fg-color;
mask-repeat: no-repeat;
mask-size: contain;
mask-position: center;
+ }
+
+ &.mx_CallView_header_callTypeIcon_voice::before {
mask-image: url('$(res)/img/element-icons/call/voice-call.svg');
}
+
+ &.mx_CallView_header_callTypeIcon_video::before {
+ mask-image: url('$(res)/img/element-icons/call/video-call.svg');
+ }
}
.mx_CallView_callControls {
@@ -287,9 +319,9 @@ limitations under the License.
display: flex;
justify-content: center;
bottom: 5px;
- width: 100%;
opacity: 1;
transition: opacity 0.5s;
+ z-index: 200; // To be above _all_ feeds
}
.mx_CallView_callControls_hidden {
@@ -297,10 +329,29 @@ limitations under the License.
pointer-events: none;
}
+.mx_CallView_presenting {
+ opacity: 1;
+ transition: opacity 0.5s;
+
+ position: absolute;
+ margin-top: 18px;
+ padding: 4px 8px;
+ border-radius: 4px;
+
+ // Same on both themes
+ color: white;
+ background-color: #17191c;
+}
+
+.mx_CallView_presenting_hidden {
+ opacity: 0.001; // opacity 0 can cause a re-layout
+ pointer-events: none;
+}
+
.mx_CallView_callControls_button {
cursor: pointer;
- margin-left: 8px;
- margin-right: 8px;
+ margin-left: 2px;
+ margin-right: 2px;
&::before {
@@ -317,17 +368,11 @@ limitations under the License.
}
.mx_CallView_callControls_dialpad {
- margin-right: auto;
&::before {
background-image: url('$(res)/img/voip/dialpad.svg');
}
}
-.mx_CallView_callControls_button_dialpad_hidden {
- margin-right: auto;
- cursor: initial;
-}
-
.mx_CallView_callControls_button_micOn {
&::before {
background-image: url('$(res)/img/voip/mic-on.svg');
@@ -352,6 +397,30 @@ limitations under the License.
}
}
+.mx_CallView_callControls_button_screensharingOn {
+ &::before {
+ background-image: url('$(res)/img/voip/screensharing-on.svg');
+ }
+}
+
+.mx_CallView_callControls_button_screensharingOff {
+ &::before {
+ background-image: url('$(res)/img/voip/screensharing-off.svg');
+ }
+}
+
+.mx_CallView_callControls_button_sidebarOn {
+ &::before {
+ background-image: url('$(res)/img/voip/sidebar-on.svg');
+ }
+}
+
+.mx_CallView_callControls_button_sidebarOff {
+ &::before {
+ background-image: url('$(res)/img/voip/sidebar-off.svg');
+ }
+}
+
.mx_CallView_callControls_button_hangup {
&::before {
background-image: url('$(res)/img/voip/hangup.svg');
@@ -359,17 +428,11 @@ limitations under the License.
}
.mx_CallView_callControls_button_more {
- margin-left: auto;
&::before {
background-image: url('$(res)/img/voip/more.svg');
}
}
-.mx_CallView_callControls_button_more_hidden {
- margin-left: auto;
- cursor: initial;
-}
-
.mx_CallView_callControls_button_invisible {
visibility: hidden;
pointer-events: none;
diff --git a/res/css/views/voip/_CallViewSidebar.scss b/res/css/views/voip/_CallViewSidebar.scss
new file mode 100644
index 0000000000..892a137a32
--- /dev/null
+++ b/res/css/views/voip/_CallViewSidebar.scss
@@ -0,0 +1,63 @@
+/*
+Copyright 2021 Šimon Brandner { _t(
- "This action requires accessing the default identity server " +
+ title: _t("Identity server has no terms of service"),
+ description: (
+ { _t(
+ "This action requires accessing the default identity server " +
" { _t(
- "Only continue if you trust the owner of the server.",
- ) } { _t(
+ "Only continue if you trust the owner of the server.",
+ ) } { _t("We're working on this as part of the beta, but just want to let you know.") } { _t("We're working on this, but just want to let you know.") }
-
- { _t("Teammates might not be able to view or join any private rooms you make.") }
-
{ _t(
"Anyone will be able to find and join this room, not just members of
+ { _t("Anyone will be able to find and join this room.") } + + { _t("You can change this at any time from room settings.") } +
; } else if (this.state.joinRule === JoinRule.Invite) { publicPrivateLabel =
{ _t(
@@ -316,21 +322,6 @@ export default class CreateRoomDialog extends React.Component
+ { _t("Are you sure you want to leave { _t("Advanced") }
-
- { this.props.source.name }
+ { this.props.source.name }