Skip to content
This repository has been archived by the owner on Jun 30, 2022. It is now read-only.

[FIX] Iframe overlay #631

Merged
merged 6 commits into from
Aug 20, 2021
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/components/Messages/MessageText/markdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,4 +81,4 @@ md.use((md) => {
});
});

export const renderMarkdown = (...args) => sanitize(md.render(...args), { ADD_ATTR: ['target','rel'] });
export const renderMarkdown = (...args) => sanitize(md.render(...args), { ADD_ATTR: ['target', 'rel'] });
1 change: 0 additions & 1 deletion src/lib/triggers.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ class Triggers {
}

route('/trigger-messages');
parentCall('openWidget');
store.setState({ minimized: false });
});
}
Expand Down
19 changes: 18 additions & 1 deletion src/routes/TriggerMessage/component.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { h, Component } from 'preact';
import { h, Component, createRef } from 'preact';

import Screen from '../../components/Screen';
import { createClassName } from '../../components/helpers';
import I18n from '../../i18n';
import { parentCall } from '../../lib/parentCall';
import styles from './styles.scss';


Expand All @@ -11,13 +12,29 @@ const defaultTitle = I18n.t('Messages');
export default class TriggerMessage extends Component {
state = { }

constructor(props) {
super(props);
this.ref = createRef();
}

componentDidUpdate() {
let height = 0;

this.ref.current.base.children.forEach((el) => {
height += el.scrollHeight;
});

parentCall('resizeWidget', height);
}

render({ title, messages, loading, onStartChat = () => {}, departments, ...props }) {
const { theme: { color } } = props;
return (
<Screen
title={title || defaultTitle}
{...props}
triggered={true}
ref={this.ref}
>
<Screen.Content triggered={true}>
{messages && messages.map((message) => message.msg && <p className={createClassName(styles, 'trigger-message__message')}>{message.msg}</p>)}
Expand Down
1 change: 1 addition & 0 deletions src/routes/TriggerMessage/container.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import TriggerMessage from './component';
export class TriggerMessageContainer extends Component {
handleStart() {
parentCall('setFullScreenDocumentMobile');
parentCall('openWidget');
route('/');
}

Expand Down
20 changes: 17 additions & 3 deletions src/widget.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ function callHook(action, params) {
iframe.contentWindow.postMessage(data, '*');
}

const updateWidgetStyle = (isOpened) => {
const updateWidgetStyle = (isOpened, height) => {
if (smallScreen && isOpened) {
scrollPosition = document.documentElement.scrollTop;
bodyStyle = document.body.style.cssText;
Expand All @@ -92,10 +92,15 @@ const updateWidgetStyle = (isOpened) => {
* so fixed it to 100% avoiding problem for some browsers. Similar resolution
* for widget.style.width
*/
if (height) {
widget.style.height = smallScreen ? '100%'
: `${ WIDGET_MARGIN + height + WIDGET_MARGIN + WIDGET_MINIMIZED_HEIGHT }px`;
} else {
widget.style.height = smallScreen ? '100%'
: `${ WIDGET_MARGIN + WIDGET_OPEN_HEIGHT + WIDGET_MARGIN + WIDGET_MINIMIZED_HEIGHT + WIDGET_MARGIN }px`;
}

widget.style.width = smallScreen ? '100%' : `${ WIDGET_MARGIN + WIDGET_OPEN_WIDTH + WIDGET_MARGIN }px`;
widget.style.height = smallScreen ? '100%'
: `${ WIDGET_MARGIN + WIDGET_OPEN_HEIGHT + WIDGET_MARGIN + WIDGET_MINIMIZED_HEIGHT + WIDGET_MARGIN }px`;
} else {
widget.style.left = 'auto';
widget.style.width = `${ WIDGET_MARGIN + WIDGET_MINIMIZED_WIDTH + WIDGET_MARGIN }px`;
Expand Down Expand Up @@ -159,6 +164,11 @@ const openWidget = () => {
emitCallback('chat-maximized');
};

const resizeWidget = (height) => {
updateWidgetStyle(true, height);
widget.dataset.state = 'triggered';
};

function closeWidget() {
if (widget.dataset.state === 'closed') {
return;
Expand Down Expand Up @@ -205,6 +215,10 @@ const api = {
openWidget();
},

resizeWidget(height) {
resizeWidget(height);
},

removeWidget() {
document.body.removeChild(widget);
},
Expand Down