44 lines
1.5 KiB
JavaScript
44 lines
1.5 KiB
JavaScript
|
import { __extends } from "tslib";
|
||
|
import * as React from 'react';
|
||
|
import { getWindow } from './dom/getWindow';
|
||
|
/**
|
||
|
* Utility component for delaying the render of a child component after a given delay. This component
|
||
|
* requires a single child component; don't pass in many components. Wrap multiple components in a DIV
|
||
|
* if necessary.
|
||
|
*
|
||
|
* @public
|
||
|
* {@docCategory DelayedRender}
|
||
|
*/
|
||
|
export var DelayedRender = /** @class */ (function (_super) {
|
||
|
__extends(DelayedRender, _super);
|
||
|
function DelayedRender(props) {
|
||
|
var _this = _super.call(this, props) || this;
|
||
|
_this.state = {
|
||
|
isRendered: getWindow() === undefined,
|
||
|
};
|
||
|
return _this;
|
||
|
}
|
||
|
DelayedRender.prototype.componentDidMount = function () {
|
||
|
var _this = this;
|
||
|
var delay = this.props.delay;
|
||
|
// eslint-disable-next-line no-restricted-globals
|
||
|
this._timeoutId = window.setTimeout(function () {
|
||
|
_this.setState({
|
||
|
isRendered: true,
|
||
|
});
|
||
|
}, delay);
|
||
|
};
|
||
|
DelayedRender.prototype.componentWillUnmount = function () {
|
||
|
if (this._timeoutId) {
|
||
|
clearTimeout(this._timeoutId);
|
||
|
}
|
||
|
};
|
||
|
DelayedRender.prototype.render = function () {
|
||
|
return this.state.isRendered ? React.Children.only(this.props.children) : null;
|
||
|
};
|
||
|
DelayedRender.defaultProps = {
|
||
|
delay: 0,
|
||
|
};
|
||
|
return DelayedRender;
|
||
|
}(React.Component));
|
||
|
//# sourceMappingURL=DelayedRender.js.map
|