mirror of
https://github.com/element-hq/element-web
synced 2024-11-24 18:25:49 +03:00
Merge branch 'release-v0.12.4' into develop
This commit is contained in:
commit
7588d4380c
1 changed files with 32 additions and 6 deletions
|
@ -127,10 +127,19 @@ export default class Stickerpicker extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
_onWidgetAction(payload) {
|
_onWidgetAction(payload) {
|
||||||
if (payload.action === "user_widget_updated") {
|
switch (payload.action) {
|
||||||
|
case "user_widget_updated":
|
||||||
this.forceUpdate();
|
this.forceUpdate();
|
||||||
} else if (payload.action === "stickerpicker_close") {
|
break;
|
||||||
|
case "stickerpicker_close":
|
||||||
this.setState({showStickers: false});
|
this.setState({showStickers: false});
|
||||||
|
break;
|
||||||
|
case "show_right_panel":
|
||||||
|
case "hide_right_panel":
|
||||||
|
case "show_left_panel":
|
||||||
|
case "hide_left_panel":
|
||||||
|
this.setState({showStickers: false});
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,16 +253,33 @@ export default class Stickerpicker extends React.Component {
|
||||||
* @param {Event} e Event that triggered the function
|
* @param {Event} e Event that triggered the function
|
||||||
*/
|
*/
|
||||||
_onShowStickersClick(e) {
|
_onShowStickersClick(e) {
|
||||||
|
// XXX: Simplify by using a context menu that is positioned relative to the sticker picker button
|
||||||
|
|
||||||
const buttonRect = e.target.getBoundingClientRect();
|
const buttonRect = e.target.getBoundingClientRect();
|
||||||
|
|
||||||
// The window X and Y offsets are to adjust position when zoomed in to page
|
// The window X and Y offsets are to adjust position when zoomed in to page
|
||||||
const x = buttonRect.right + window.pageXOffset - 42;
|
let x = buttonRect.right + window.pageXOffset - 41;
|
||||||
|
|
||||||
|
// Amount of horizontal space between the right of menu and the right of the viewport
|
||||||
|
// (10 = amount needed to make chevron centrally aligned)
|
||||||
|
const rightPad = 10;
|
||||||
|
|
||||||
|
// When the sticker picker would be displayed off of the viewport, adjust x
|
||||||
|
// (302 = width of context menu, including borders)
|
||||||
|
x = Math.min(x, document.body.clientWidth - (302 + rightPad));
|
||||||
|
|
||||||
|
// Offset the chevron location, which is relative to the left of the context menu
|
||||||
|
// (10 = offset when context menu would not be displayed off viewport)
|
||||||
|
// (8 = value required in practice (possibly 10 - 2 where the 2 = context menu borders)
|
||||||
|
const stickerPickerChevronOffset = Math.max(10, 8 + window.pageXOffset + buttonRect.left - x);
|
||||||
|
|
||||||
const y = (buttonRect.top + (buttonRect.height / 2) + window.pageYOffset) - 19;
|
const y = (buttonRect.top + (buttonRect.height / 2) + window.pageYOffset) - 19;
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
showStickers: true,
|
showStickers: true,
|
||||||
stickerPickerX: x,
|
stickerPickerX: x,
|
||||||
stickerPickerY: y,
|
stickerPickerY: y,
|
||||||
|
stickerPickerChevronOffset,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,7 +332,7 @@ export default class Stickerpicker extends React.Component {
|
||||||
|
|
||||||
const stickerPicker = <ContextualMenu
|
const stickerPicker = <ContextualMenu
|
||||||
elementClass={GenericElementContextMenu}
|
elementClass={GenericElementContextMenu}
|
||||||
chevronOffset={10}
|
chevronOffset={this.state.stickerPickerChevronOffset}
|
||||||
chevronFace={'bottom'}
|
chevronFace={'bottom'}
|
||||||
left={this.state.stickerPickerX}
|
left={this.state.stickerPickerX}
|
||||||
top={this.state.stickerPickerY}
|
top={this.state.stickerPickerY}
|
||||||
|
|
Loading…
Reference in a new issue