From f8e00e43e3613f6c71bb6da024a9cf75b6288337 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 9 Jan 2018 15:59:04 +0000 Subject: [PATCH 01/28] Show / hide sitckers icons --- src/skins/vector/img/icons-hide-stickers.svg | 16 ++++++++++++++++ src/skins/vector/img/icons-show-stickers.svg | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/skins/vector/img/icons-hide-stickers.svg create mode 100644 src/skins/vector/img/icons-show-stickers.svg diff --git a/src/skins/vector/img/icons-hide-stickers.svg b/src/skins/vector/img/icons-hide-stickers.svg new file mode 100644 index 0000000000..54178f8d26 --- /dev/null +++ b/src/skins/vector/img/icons-hide-stickers.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/src/skins/vector/img/icons-show-stickers.svg b/src/skins/vector/img/icons-show-stickers.svg new file mode 100644 index 0000000000..00e70f8cf7 --- /dev/null +++ b/src/skins/vector/img/icons-show-stickers.svg @@ -0,0 +1,16 @@ + + + + + + + + + From fa1059e2024430bcbee0e81c10797e0c40921599 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 9 Jan 2018 15:59:28 +0000 Subject: [PATCH 02/28] Show / hide stickers icon styling --- .../css/matrix-react-sdk/views/rooms/_MessageComposer.scss | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index e6b1a1f0d0..41fd3062d6 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -154,7 +154,8 @@ limitations under the License. .mx_MessageComposer_hangup, .mx_MessageComposer_voicecall, .mx_MessageComposer_videocall, -.mx_MessageComposer_apps { +.mx_MessageComposer_apps, +.mx_MessageComposer_stickers { /*display: table-cell;*/ /*vertical-align: middle;*/ /*padding-left: 10px;*/ @@ -167,7 +168,8 @@ limitations under the License. .mx_MessageComposer_hangup object, .mx_MessageComposer_voicecall object, .mx_MessageComposer_videocall object, -.mx_MessageComposer_apps object { +.mx_MessageComposer_apps object, +.mx_MessageComposer_stickers object { pointer-events: none; } From 409bb5ff4d448a3ae8eeedb06aea7ba10984fe2d Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 9 Jan 2018 16:01:33 +0000 Subject: [PATCH 03/28] Improved icons. --- src/skins/vector/img/icons-hide-stickers.svg | 12 ++++++------ src/skins/vector/img/icons-show-stickers.svg | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/skins/vector/img/icons-hide-stickers.svg b/src/skins/vector/img/icons-hide-stickers.svg index 54178f8d26..c138f34bda 100644 --- a/src/skins/vector/img/icons-hide-stickers.svg +++ b/src/skins/vector/img/icons-hide-stickers.svg @@ -7,10 +7,10 @@ - + diff --git a/src/skins/vector/img/icons-show-stickers.svg b/src/skins/vector/img/icons-show-stickers.svg index 00e70f8cf7..300e2c6d5b 100644 --- a/src/skins/vector/img/icons-show-stickers.svg +++ b/src/skins/vector/img/icons-show-stickers.svg @@ -7,10 +7,10 @@ - + From 50271b71237eaabc81560f34892d433ff18cdbac Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 10 Jan 2018 20:48:22 +0000 Subject: [PATCH 04/28] Remove padding on last component of MessageComposer (sticker toggle icons) --- .../css/matrix-react-sdk/views/rooms/_MessageComposer.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 41fd3062d6..9e46c56381 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -34,6 +34,10 @@ limitations under the License. width: 100%; } +.mx_MessageComposer_row div:last-child{ + padding-right: 0; +} + .mx_MessageComposer .mx_MessageComposer_avatar { padding-left: 10px; padding-right: 28px; From a24c3ada53f57282469070d21e484c718f9623d0 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Fri, 12 Jan 2018 17:36:09 +0000 Subject: [PATCH 05/28] Sticker styling --- .../views/rooms/_MessageComposer.scss | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 9e46c56381..462de6f4df 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -240,3 +240,18 @@ limitations under the License. height: 50px; } } + +.mx_PopoverOuterContainer { + border-radius: 5px; + padding: 2px; +} + +.mx_PopoverOuterContainer .mx_AppTileFullWidth { + margin-top: 0 !important; + border: none; +} + +.mx_PopoverOuterContainer .mx_StickersContent { + border-radius: 5px; + overflow: hidden; +} From 7924a149b47986aba69615d92c53d53bb5366c61 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 15 Jan 2018 11:14:30 +0000 Subject: [PATCH 06/28] Remove transparent background and fix z-index of popover. --- .../css/matrix-react-sdk/views/rooms/_MessageComposer.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 462de6f4df..ae8a1b87f6 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -244,6 +244,8 @@ limitations under the License. .mx_PopoverOuterContainer { border-radius: 5px; padding: 2px; + background-color: white; + overflow: 'hidden'; } .mx_PopoverOuterContainer .mx_AppTileFullWidth { @@ -255,3 +257,8 @@ limitations under the License. border-radius: 5px; overflow: hidden; } + +// Set z-index for popovers +.another-react-popover-container { + z-index: 1000; +} From a7f0b11002b97177a9191af8d556afbdf6731eda Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 16 Jan 2018 18:15:17 +0000 Subject: [PATCH 07/28] Add generic element context menu / popover. --- .../GenericElementContextMenu.js | 30 +++++++++++++++++++ .../views/rooms/_MessageComposer.scss | 10 +++++-- 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/components/views/context_menus/GenericElementContextMenu.js diff --git a/src/components/views/context_menus/GenericElementContextMenu.js b/src/components/views/context_menus/GenericElementContextMenu.js new file mode 100644 index 0000000000..2959fbbe7d --- /dev/null +++ b/src/components/views/context_menus/GenericElementContextMenu.js @@ -0,0 +1,30 @@ +/* +Copyright 2017 New Vector 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'; + +import React from 'react'; +import PropTypes from 'prop-types'; + +export default class GenericElementContextMenu extends React.Component { + static PropTypes = { + element: PropTypes.element.isRequired, + }; + + render() { + return
{ this.props.element }
; + } +} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index ae8a1b87f6..5a044297a9 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -258,7 +258,11 @@ limitations under the License. overflow: hidden; } -// Set z-index for popovers -.another-react-popover-container { - z-index: 1000; +.mx_StickersContentPlaceholder { + display: flex; + flex-grow: 1; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; } From f8643e9a96c9b16b7ba755d424f91c5bc9c7df87 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 16 Jan 2018 18:35:04 +0000 Subject: [PATCH 08/28] Add styling and image for stickerpack placeholder. --- .../views/rooms/_MessageComposer.scss | 4 ++++ .../vector/img/stickerpack-placeholder.png | Bin 0 -> 31995 bytes 2 files changed, 4 insertions(+) create mode 100644 src/skins/vector/img/stickerpack-placeholder.png diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 5a044297a9..e6fbeb9e87 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -266,3 +266,7 @@ limitations under the License. justify-content: center; text-align: center; } + +.mx_StickersContentPlaceholder p { + max-width: 200px; +} diff --git a/src/skins/vector/img/stickerpack-placeholder.png b/src/skins/vector/img/stickerpack-placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..7980114438527db8e140b9ff0bcd80a7fd8282f2 GIT binary patch literal 31995 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 Date: Tue, 16 Jan 2018 21:46:50 +0000 Subject: [PATCH 09/28] Sticker content styling --- .../views/rooms/_MessageComposer.scss | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index e6fbeb9e87..1f1a652f1e 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -241,23 +241,14 @@ limitations under the License. } } -.mx_PopoverOuterContainer { - border-radius: 5px; - padding: 2px; - background-color: white; - overflow: 'hidden'; -} - -.mx_PopoverOuterContainer .mx_AppTileFullWidth { - margin-top: 0 !important; - border: none; -} - -.mx_PopoverOuterContainer .mx_StickersContent { - border-radius: 5px; +.mx_StickersContent { overflow: hidden; } +.mx_StickersContent .mx_AppTileFullWidth { + border: none; +} + .mx_StickersContentPlaceholder { display: flex; flex-grow: 1; From f4816b99ffa0d21992470379678509b0274bc47d Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 Jan 2018 00:05:16 +0000 Subject: [PATCH 10/28] Add stickerpack manage integration link styling. --- .../css/matrix-react-sdk/views/rooms/_MessageComposer.scss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 1f1a652f1e..6037a41fc9 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -261,3 +261,9 @@ limitations under the License. .mx_StickersContentPlaceholder p { max-width: 200px; } + +.mx_Stickerpack_addLink { + display: inline; + cursor: pointer; + text-decoration: underline; +} From 854b5376954eea9a72f098d996e105890cdf4937 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 Jan 2018 11:27:57 +0000 Subject: [PATCH 11/28] Update sticker toggle icons. --- src/skins/vector/img/icons-hide-stickers.svg | 18 +++++++++--------- src/skins/vector/img/icons-show-stickers.svg | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/skins/vector/img/icons-hide-stickers.svg b/src/skins/vector/img/icons-hide-stickers.svg index c138f34bda..9b88ba5e64 100644 --- a/src/skins/vector/img/icons-hide-stickers.svg +++ b/src/skins/vector/img/icons-hide-stickers.svg @@ -3,14 +3,14 @@ - - + + - + diff --git a/src/skins/vector/img/icons-show-stickers.svg b/src/skins/vector/img/icons-show-stickers.svg index 300e2c6d5b..26779a3940 100644 --- a/src/skins/vector/img/icons-show-stickers.svg +++ b/src/skins/vector/img/icons-show-stickers.svg @@ -4,13 +4,13 @@ - + - + From de597d4f5d95247e6c0df6b32d50ae9cb3ccf2ba Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 Jan 2018 15:13:29 +0000 Subject: [PATCH 12/28] Make background lighter. --- src/skins/vector/img/icons-hide-stickers.svg | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/skins/vector/img/icons-hide-stickers.svg b/src/skins/vector/img/icons-hide-stickers.svg index 9b88ba5e64..f28e8646e6 100644 --- a/src/skins/vector/img/icons-hide-stickers.svg +++ b/src/skins/vector/img/icons-hide-stickers.svg @@ -3,14 +3,14 @@ - + + c17.686,0,31.201-13.519,31.201-31.2c0-17.683-13.519-31.2-31.201-31.2c-17.682,0-31.2,13.518-31.2,31.2S305.118,229.2,322.8,229.2z + M177.2,229.2c17.682,0,31.2-13.519,31.2-31.2c0-17.683-13.519-31.2-31.2-31.2c-17.683,0-31.201,13.518-31.201,31.2 + S159.518,229.2,177.2,229.2z M250,364.4c48.883,0,89.436-30.164,106.081-72.801H143.919C160.564,334.236,201.117,364.4,250,364.4z" + /> From c340032bd19a50a3f160296e2e5321a084a389fb Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 17 Jan 2018 15:49:03 +0000 Subject: [PATCH 13/28] Move sticker related CSS to its own file. --- src/skins/vector/css/_components.scss | 1 + .../views/rooms/_MessageComposer.scss | 27 ----------------- .../views/rooms/_Stickers.scss | 30 +++++++++++++++++++ 3 files changed, 31 insertions(+), 27 deletions(-) create mode 100644 src/skins/vector/css/matrix-react-sdk/views/rooms/_Stickers.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 0dd6a1b1b7..5b04703a27 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -60,6 +60,7 @@ @import "./matrix-react-sdk/views/rooms/_MemberInfo.scss"; @import "./matrix-react-sdk/views/rooms/_MemberList.scss"; @import "./matrix-react-sdk/views/rooms/_MessageComposer.scss"; +@import "./matrix-react-sdk/views/rooms/_Stickers.scss"; @import "./matrix-react-sdk/views/rooms/_PinnedEventTile.scss"; @import "./matrix-react-sdk/views/rooms/_PinnedEventsPanel.scss"; @import "./matrix-react-sdk/views/rooms/_PresenceLabel.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss index 6037a41fc9..9e46c56381 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_MessageComposer.scss @@ -240,30 +240,3 @@ limitations under the License. height: 50px; } } - -.mx_StickersContent { - overflow: hidden; -} - -.mx_StickersContent .mx_AppTileFullWidth { - border: none; -} - -.mx_StickersContentPlaceholder { - display: flex; - flex-grow: 1; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; -} - -.mx_StickersContentPlaceholder p { - max-width: 200px; -} - -.mx_Stickerpack_addLink { - display: inline; - cursor: pointer; - text-decoration: underline; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_Stickers.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Stickers.scss new file mode 100644 index 0000000000..ee6c38b24d --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_Stickers.scss @@ -0,0 +1,30 @@ +.mx_Stickers_content { + overflow: hidden; +} + +.mx_Stickers_content .mx_AppTileFullWidth { + border: none; +} + +.mx_Stickers_contentPlaceholder { + display: flex; + flex-grow: 1; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; +} + +.mx_Stickers_contentPlaceholder p { + max-width: 200px; +} + +.mx_Stickers_addLink { + display: inline; + cursor: pointer; + text-decoration: underline; +} + +.mx_Stickers_hideStickers { + z-index: 2001; +} From 738b59fd42e27f8290de878c360f98ab95c304e3 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Thu, 18 Jan 2018 12:01:29 +0000 Subject: [PATCH 14/28] Call for update on window resize. --- .../context_menus/GenericElementContextMenu.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/components/views/context_menus/GenericElementContextMenu.js b/src/components/views/context_menus/GenericElementContextMenu.js index 2959fbbe7d..0a8d269293 100644 --- a/src/components/views/context_menus/GenericElementContextMenu.js +++ b/src/components/views/context_menus/GenericElementContextMenu.js @@ -24,6 +24,21 @@ export default class GenericElementContextMenu extends React.Component { element: PropTypes.element.isRequired, }; + componentDidMount() { + this.resize = this.resize.bind(this); + window.addEventListener("resize", this.resize.bind(this)); + } + + componentWillUnmount() { + window.removeEventListener("resize", this.resize.bind(this)); + } + + resize() { + if (this.props.onResize) { + this.props.onResize(); + } + } + render() { return
{ this.props.element }
; } From 095130a569792c61d7dac2b78f408e01c544e321 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Fri, 9 Feb 2018 13:23:56 +0000 Subject: [PATCH 15/28] Hide apps drawer --- .../vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index 2d61ca7743..b6d267b43b 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -18,6 +18,10 @@ limitations under the License. margin: 5px; } +.mx_AppsDrawer_hidden { + display: none; +} + .mx_AppsContainer { display: flex; flex-direction: row; From 9fc7435ea2ef7af161fadf4b3f9abc4a4aadcb73 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 6 Mar 2018 10:47:53 +0000 Subject: [PATCH 16/28] Correctly position tooltips relative to parent element. --- src/components/views/rooms/RoomTooltip.js | 2 +- .../views/messages/_MImageBody.scss | 17 ++++++++--------- .../vector-web/views/rooms/_RoomTooltip.scss | 3 ++- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/views/rooms/RoomTooltip.js b/src/components/views/rooms/RoomTooltip.js index 714d57ca24..518ceacc4c 100644 --- a/src/components/views/rooms/RoomTooltip.js +++ b/src/components/views/rooms/RoomTooltip.js @@ -66,7 +66,7 @@ module.exports = React.createClass({ // positioned, also taking into account any window zoom // NOTE: The additional 6 pixels for the left position, is to take account of the // tooltips chevron - var parent = ReactDOM.findDOMNode(this); + var parent = ReactDOM.findDOMNode(this).parentNode; var style = {}; style.top = parent.getBoundingClientRect().top + window.pageYOffset; style.left = 6 + parent.getBoundingClientRect().right + window.pageXOffset; diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss index 1702aac8ad..9d26cacbff 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss @@ -15,15 +15,14 @@ limitations under the License. */ .mx_MImageBody { - display: block; - margin-right: 34px; + display: block; + margin-right: 34px; } -.mx_MImageBody_thumbnail { - max-width: 100%; -/* - background-color: $primary-bg-color; - border: 2px solid $primary-bg-color; - border-radius: 1px; -*/ +.mx_MImageBody_thumbnail_container { + display: inline-block; +} + +img.mx_MImageBody_thumbnail { + max-width: 100%; } diff --git a/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss b/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss index 5469a9e6d3..9988425b8f 100644 --- a/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss +++ b/src/skins/vector/css/vector-web/views/rooms/_RoomTooltip.scss @@ -49,5 +49,6 @@ limitations under the License. line-height: 14px; font-size: 13px; color: $primary-fg-color; + max-width: 600px; + margin-right: 50px; } - From d77ab891a0b10156399711947bb319ad4ff0b2ed Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 6 Mar 2018 11:25:15 +0000 Subject: [PATCH 17/28] Update tooltip position on scroll. --- src/components/views/rooms/RoomTooltip.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/views/rooms/RoomTooltip.js b/src/components/views/rooms/RoomTooltip.js index 518ceacc4c..a902045f07 100644 --- a/src/components/views/rooms/RoomTooltip.js +++ b/src/components/views/rooms/RoomTooltip.js @@ -39,6 +39,7 @@ module.exports = React.createClass({ this.tooltipContainer = document.createElement("div"); this.tooltipContainer.className = "mx_RoomTileTooltip_wrapper"; document.body.appendChild(this.tooltipContainer); + window.addEventListener('scroll', this._renderTooltip, true); this._renderTooltip(); }, @@ -57,6 +58,7 @@ module.exports = React.createClass({ ReactDOM.unmountComponentAtNode(this.tooltipContainer); document.body.removeChild(this.tooltipContainer); + window.removeEventListener('scroll', this._renderTooltip, true); }, _renderTooltip: function() { From 78ae1ada3c3b62c8a42f42c66610fe0fb9c08e19 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 6 Mar 2018 14:21:31 +0000 Subject: [PATCH 18/28] Fix tooltip vertical positioning. --- src/components/views/rooms/RoomTooltip.js | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/views/rooms/RoomTooltip.js b/src/components/views/rooms/RoomTooltip.js index a902045f07..034f80ecee 100644 --- a/src/components/views/rooms/RoomTooltip.js +++ b/src/components/views/rooms/RoomTooltip.js @@ -21,6 +21,8 @@ var ReactDOM = require('react-dom'); var dis = require('matrix-react-sdk/lib/dispatcher'); import classNames from 'classnames'; +const MIN_TOOLTIP_HEIGHT = 25; + module.exports = React.createClass({ displayName: 'RoomTooltip', @@ -41,6 +43,12 @@ module.exports = React.createClass({ document.body.appendChild(this.tooltipContainer); window.addEventListener('scroll', this._renderTooltip, true); + const parent = ReactDOM.findDOMNode(this).parentNode; + this.state={ + parent, + parentBox: parent.getBoundingClientRect(), + }; + this._renderTooltip(); }, @@ -61,6 +69,17 @@ module.exports = React.createClass({ window.removeEventListener('scroll', this._renderTooltip, true); }, + _updatePosition(style) { + const parentBox = this.state.parent.getBoundingClientRect(); + let offset = 0; + if (parentBox.height > MIN_TOOLTIP_HEIGHT) { + offset = Math.floor((parentBox.height - MIN_TOOLTIP_HEIGHT) / 2); + } + style.top = (parentBox.top - 2) + window.pageYOffset + offset; + style.left = 6 + parentBox.right + window.pageXOffset; + return style; + }, + _renderTooltip: function() { var label = this.props.room ? this.props.room.name : this.props.label; @@ -70,8 +89,8 @@ module.exports = React.createClass({ // tooltips chevron var parent = ReactDOM.findDOMNode(this).parentNode; var style = {}; - style.top = parent.getBoundingClientRect().top + window.pageYOffset; - style.left = 6 + parent.getBoundingClientRect().right + window.pageXOffset; + console.warn('Bounding box', parent.getBoundingClientRect()); + style = this._updatePosition(style); style.display = "block"; const tooltipClasses = classNames( From 6785d75ad2117f752b35c592eaa25964520025bc Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 6 Mar 2018 14:46:40 +0000 Subject: [PATCH 19/28] Remove logging. --- src/components/views/rooms/RoomTooltip.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/rooms/RoomTooltip.js b/src/components/views/rooms/RoomTooltip.js index 034f80ecee..398c96b4de 100644 --- a/src/components/views/rooms/RoomTooltip.js +++ b/src/components/views/rooms/RoomTooltip.js @@ -89,7 +89,6 @@ module.exports = React.createClass({ // tooltips chevron var parent = ReactDOM.findDOMNode(this).parentNode; var style = {}; - console.warn('Bounding box', parent.getBoundingClientRect()); style = this._updatePosition(style); style.display = "block"; From fe3f0be920ed9ea1d329dba24506ff664935da91 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 7 Mar 2018 12:03:28 +0000 Subject: [PATCH 20/28] Ignore local config. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2ad05012a0..46d294ecf7 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ electron/dist electron/pub **/.idea /config.json +/config.local*.json /src/component-index.js From 38efebb8d3946f321e6814cbd957afd042505538 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Thu, 8 Mar 2018 12:31:23 +0000 Subject: [PATCH 21/28] Split out sticker CSS --- src/skins/vector/css/_components.scss | 1 + .../views/messages/_MImageBody.scss | 8 ---- .../views/messages/_MStickerBody.scss | 48 +++++++++++++++++++ 3 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss diff --git a/src/skins/vector/css/_components.scss b/src/skins/vector/css/_components.scss index 0ae5af1609..0bcc48c3b8 100644 --- a/src/skins/vector/css/_components.scss +++ b/src/skins/vector/css/_components.scss @@ -48,6 +48,7 @@ @import "./matrix-react-sdk/views/messages/_MEmoteBody.scss"; @import "./matrix-react-sdk/views/messages/_MFileBody.scss"; @import "./matrix-react-sdk/views/messages/_MImageBody.scss"; +@import "./matrix-react-sdk/views/messages/_MStickerBody.scss"; @import "./matrix-react-sdk/views/messages/_MNoticeBody.scss"; @import "./matrix-react-sdk/views/messages/_MTextBody.scss"; @import "./matrix-react-sdk/views/messages/_RoomAvatarEvent.scss"; diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss index 9d26cacbff..bf483feda3 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/messages/_MImageBody.scss @@ -18,11 +18,3 @@ limitations under the License. display: block; margin-right: 34px; } - -.mx_MImageBody_thumbnail_container { - display: inline-block; -} - -img.mx_MImageBody_thumbnail { - max-width: 100%; -} diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss new file mode 100644 index 0000000000..29b77f8846 --- /dev/null +++ b/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss @@ -0,0 +1,48 @@ +/* +Copyright 2018 New Vector 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_MStickerBody { + display: block; + margin-right: 34px; + min-height: 110px; +} + +.mx_MStickerBody_thumbnail_container { + display: inline-block; + position: relative; +} + +.mx_MStickerBody_thumbnail { + max-width: 100%; + transition: 500ms; + opacity: 0; +} + +.mx_MStickerBody_thumbnail_visible { + transition: 500ms; + opacity: 1; +} + +.mx_MStickerBody_placeholder { + position: absolute; + transition: 500ms; + opacity: 1; +} + +.mx_MStickerBody_placeholder_invisible { + transition: 500ms; + opacity: 0; +} From 351f9b32ea01dfd7f4417ea32829ec27ac527c90 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Thu, 8 Mar 2018 23:54:44 +0000 Subject: [PATCH 22/28] Remove broken transitions. --- .../css/matrix-react-sdk/views/messages/_MStickerBody.scss | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss index 29b77f8846..4d63376a47 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss @@ -18,6 +18,7 @@ limitations under the License. display: block; margin-right: 34px; min-height: 110px; + padding: 20px 0; } .mx_MStickerBody_thumbnail_container { @@ -27,18 +28,15 @@ limitations under the License. .mx_MStickerBody_thumbnail { max-width: 100%; - transition: 500ms; opacity: 0; } .mx_MStickerBody_thumbnail_visible { - transition: 500ms; opacity: 1; } .mx_MStickerBody_placeholder { position: absolute; - transition: 500ms; opacity: 1; } From d2f4bb2dd3322f8b778ddd65f7741553e1cd24eb Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 13 Mar 2018 10:49:55 +0000 Subject: [PATCH 23/28] Fix spinner position / height. --- .../matrix-react-sdk/views/rooms/_AppsDrawer.scss | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index b6d267b43b..c464865bd7 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -58,6 +58,7 @@ limitations under the License. margin-right: 5px; border: 1px solid $primary-hairline-color; border-radius: 2px; + background-color: $dialog-background-bg-color; } .mx_AppTile:last-child { @@ -257,12 +258,21 @@ form.mx_Custom_Widget_Form div { } .mx_AppLoading { - min-height: 305px; display: flex; flex-direction: column; justify-content: center; align-items: center; font-weight: bold; + position: relative; + height: 280px; +} + +.mx_AppLoading .mx_Spinner { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; } .mx_AppLoading iframe { From 8d8580a21330926a5981c2d936b0e5e070952785 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Tue, 13 Mar 2018 10:57:43 +0000 Subject: [PATCH 24/28] Cleanup comments. Reduce default app tile height to 280px. --- .../css/matrix-react-sdk/views/rooms/_AppsDrawer.scss | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss index c464865bd7..e22207676f 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/rooms/_AppsDrawer.scss @@ -72,8 +72,6 @@ limitations under the License. padding: 0; border: 1px solid $primary-hairline-color; border-radius: 2px; - // height: 350px; - // display: inline-block; } .mx_AppTile, .mx_AppTileFullWidth { @@ -108,7 +106,6 @@ limitations under the License. } .mx_AppTileMenuBarWidget { - // pointer-events: none; cursor: pointer; width: 10px; height: 10px; @@ -127,14 +124,14 @@ limitations under the License. } .mx_AppTileBody{ - height: 350px; + height: 280px; width: 100%; overflow: hidden; } .mx_AppTileBody iframe { width: 100%; - height: 350px; + height: 280px; overflow: hidden; border: none; padding: 0; @@ -142,9 +139,6 @@ limitations under the License. display: block; } -// .mx_CloseAppWidget { -// } - .mx_AppTileMenuBarWidgetPadding { margin-right: 5px; } From 85fca9dee8adf8c9380b008380fac0584b17f7f3 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Wed, 14 Mar 2018 11:11:48 +0000 Subject: [PATCH 25/28] Style sticker content rather than thumbnail. --- .../css/matrix-react-sdk/views/messages/_MStickerBody.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss b/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss index 4d63376a47..3e6bbe5aa4 100644 --- a/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss +++ b/src/skins/vector/css/matrix-react-sdk/views/messages/_MStickerBody.scss @@ -21,17 +21,17 @@ limitations under the License. padding: 20px 0; } -.mx_MStickerBody_thumbnail_container { +.mx_MStickerBody_image_container { display: inline-block; position: relative; } -.mx_MStickerBody_thumbnail { +.mx_MStickerBody_image { max-width: 100%; opacity: 0; } -.mx_MStickerBody_thumbnail_visible { +.mx_MStickerBody_image_visible { opacity: 1; } From e36d972d94fea5ad2814e75a7c112631174bda9d Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 26 Mar 2018 11:36:42 +0100 Subject: [PATCH 26/28] Bind function in constructor. --- .../views/context_menus/GenericElementContextMenu.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/views/context_menus/GenericElementContextMenu.js b/src/components/views/context_menus/GenericElementContextMenu.js index 0a8d269293..4ae0bfd7dd 100644 --- a/src/components/views/context_menus/GenericElementContextMenu.js +++ b/src/components/views/context_menus/GenericElementContextMenu.js @@ -24,13 +24,18 @@ export default class GenericElementContextMenu extends React.Component { element: PropTypes.element.isRequired, }; + constructor(props) { + super(props); + this.resize = this.resize.bind(this); + } + componentDidMount() { this.resize = this.resize.bind(this); - window.addEventListener("resize", this.resize.bind(this)); + window.addEventListener("resize", this.resize); } componentWillUnmount() { - window.removeEventListener("resize", this.resize.bind(this)); + window.removeEventListener("resize", this.resize); } resize() { From 700515cce34b06e0d9f470f189cd5a56a1469520 Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 26 Mar 2018 11:48:29 +0100 Subject: [PATCH 27/28] Add some comments. --- .../views/context_menus/GenericElementContextMenu.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/views/context_menus/GenericElementContextMenu.js b/src/components/views/context_menus/GenericElementContextMenu.js index 4ae0bfd7dd..3f4804dbd1 100644 --- a/src/components/views/context_menus/GenericElementContextMenu.js +++ b/src/components/views/context_menus/GenericElementContextMenu.js @@ -19,9 +19,19 @@ limitations under the License. import React from 'react'; import PropTypes from 'prop-types'; +/* + * This component can be used to display generic HTML content in a contextual + * menu. + */ + + export default class GenericElementContextMenu extends React.Component { static PropTypes = { element: PropTypes.element.isRequired, + // Function to be called when the parent window is resized + // This can be used to reposition or close the menu on resize and + // ensure that it is not displayed in a stale position. + onResize: PropTypes.func, }; constructor(props) { From e3a3dec8a21782007651b1a44b5c45143d1704ff Mon Sep 17 00:00:00 2001 From: Richard Lewis Date: Mon, 26 Mar 2018 11:53:39 +0100 Subject: [PATCH 28/28] Move variables out of state. --- src/components/views/rooms/RoomTooltip.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/components/views/rooms/RoomTooltip.js b/src/components/views/rooms/RoomTooltip.js index 398c96b4de..5e766a665f 100644 --- a/src/components/views/rooms/RoomTooltip.js +++ b/src/components/views/rooms/RoomTooltip.js @@ -43,11 +43,7 @@ module.exports = React.createClass({ document.body.appendChild(this.tooltipContainer); window.addEventListener('scroll', this._renderTooltip, true); - const parent = ReactDOM.findDOMNode(this).parentNode; - this.state={ - parent, - parentBox: parent.getBoundingClientRect(), - }; + this.parent = ReactDOM.findDOMNode(this).parentNode; this._renderTooltip(); }, @@ -70,7 +66,7 @@ module.exports = React.createClass({ }, _updatePosition(style) { - const parentBox = this.state.parent.getBoundingClientRect(); + const parentBox = this.parent.getBoundingClientRect(); let offset = 0; if (parentBox.height > MIN_TOOLTIP_HEIGHT) { offset = Math.floor((parentBox.height - MIN_TOOLTIP_HEIGHT) / 2); @@ -117,8 +113,8 @@ module.exports = React.createClass({ render: function() { // Render a placeholder return ( -
+
); - } + }, });