UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

53 lines 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IFrameDialogContent = void 0; var tslib_1 = require("tslib"); var React = tslib_1.__importStar(require("react")); var IFrameDialogContent_module_scss_1 = tslib_1.__importDefault(require("./IFrameDialogContent.module.scss")); var Spinner_1 = require("@fluentui/react/lib/Spinner"); var omit_1 = tslib_1.__importDefault(require("lodash/omit")); /** * IFrame Dialog content */ var IFrameDialogContent = /** @class */ (function (_super) { tslib_1.__extends(IFrameDialogContent, _super); function IFrameDialogContent(props) { var _this = _super.call(this, props) || this; _this.state = { isContentVisible: false }; return _this; } IFrameDialogContent.prototype.render = function () { var _this = this; return (React.createElement("div", { className: IFrameDialogContent_module_scss_1.default.iFrameDialog }, React.createElement("iframe", tslib_1.__assign({ ref: function (iframe) { _this._iframe = iframe; }, frameBorder: 0, onLoad: this._iframeOnLoad.bind(this), style: { width: '100%', height: '100%', visibility: this.state.isContentVisible ? 'visible' : 'hidden' } }, (0, omit_1.default)(this.props, 'height'))), !this.state.isContentVisible && React.createElement("div", { className: IFrameDialogContent_module_scss_1.default.spinnerContainer }, React.createElement(Spinner_1.Spinner, { size: Spinner_1.SpinnerSize.large })))); }; IFrameDialogContent.prototype._iframeOnLoad = function () { try { // for cross origin requests we can have issues with accessing frameElement /* eslint-disable @typescript-eslint/no-explicit-any */ this._iframe.contentWindow.frameElement.cancelPopUp = this.props.close; this._iframe.contentWindow.frameElement.commitPopUp = this.props.close; // SP.UI.Dialog has misspelling of commitPopUp this._iframe.contentWindow.frameElement.commitPopup = this.props.close; /* eslint-enable @typescript-eslint/no-explicit-any */ } catch (err) { if (err.name !== 'SecurityError') { throw err; } } if (this.props.iframeOnLoad) { this.props.iframeOnLoad(this._iframe); } this.setState({ isContentVisible: true }); }; return IFrameDialogContent; }(React.Component)); exports.IFrameDialogContent = IFrameDialogContent; //# sourceMappingURL=IFrameDialogContent.js.map