46 lines
1.8 KiB
JavaScript
46 lines
1.8 KiB
JavaScript
define(["require", "exports", "tslib", "react", "./dom/getWindow"], function (require, exports, tslib_1, React, getWindow_1) {
|
|
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.DelayedRender = void 0;
|
|
/**
|
|
* 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}
|
|
*/
|
|
var DelayedRender = exports.DelayedRender = /** @class */ (function (_super) {
|
|
tslib_1.__extends(DelayedRender, _super);
|
|
function DelayedRender(props) {
|
|
var _this = _super.call(this, props) || this;
|
|
_this.state = {
|
|
isRendered: (0, getWindow_1.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
|