87 lines
2.1 KiB
JavaScript
87 lines
2.1 KiB
JavaScript
/* global $, APP */
|
|
|
|
import React, { Component } from 'react';
|
|
|
|
/**
|
|
* Implements an abstract React Component for overlay - the components which
|
|
* are displayed on top of the application covering the whole screen.
|
|
*
|
|
* @abstract
|
|
*/
|
|
export default class AbstractOverlay extends Component {
|
|
/**
|
|
* Initializes a new AbstractOverlay instance.
|
|
*
|
|
* @param {Object} props - The read-only properties with which the new
|
|
* instance is to be initialized.
|
|
* @public
|
|
*/
|
|
constructor(props) {
|
|
super(props);
|
|
|
|
this.state = {
|
|
/**
|
|
* Indicates the css style of the overlay. if true - lighter and
|
|
* darker otherwise.
|
|
* @type {boolean}
|
|
*/
|
|
isLightOverlay: false
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Abstract method which should be used by subclasses to provide the overlay
|
|
* content.
|
|
*
|
|
* @returns {ReactElement|null}
|
|
* @protected
|
|
*/
|
|
_renderOverlayContent() {
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* This method is executed when comonent is mounted.
|
|
*
|
|
* @inheritdoc
|
|
* @returns {void}
|
|
*/
|
|
componentDidMount() {
|
|
// XXX Temporary solution until we add React translation.
|
|
APP.translation.translateElement($('#overlay'));
|
|
}
|
|
|
|
/**
|
|
* Reloads the page.
|
|
*
|
|
* @returns {void}
|
|
* @protected
|
|
*/
|
|
_reconnectNow() {
|
|
// FIXME: In future we should dispatch an action here that will result
|
|
// in reload.
|
|
APP.ConferenceUrl.reload();
|
|
}
|
|
|
|
/**
|
|
* Implements React's {@link Component#render()}.
|
|
*
|
|
* @inheritdoc
|
|
* @returns {ReactElement|null}
|
|
*/
|
|
render() {
|
|
const containerClass = this.state.isLightOverlay
|
|
? 'overlay__container-light' : 'overlay__container';
|
|
|
|
return (
|
|
<div
|
|
className = { containerClass }
|
|
id = 'overlay'>
|
|
<div className = 'overlay__content'>
|
|
{ this._renderOverlayContent() }
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
}
|