UNPKG

@pnp/spfx-controls-react

Version:

Reusable React controls for SharePoint Framework solutions

86 lines 3.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ShareDialog = void 0; var tslib_1 = require("tslib"); /* eslint-disable @typescript-eslint/explicit-function-return-type */ var React = tslib_1.__importStar(require("react")); var react_1 = require("react"); var css_1 = require("@emotion/css"); var renderDialog_1 = require("./renderDialog"); var useStyles = function (iFrameHeight) { var styles = { iframe: (0, css_1.css)({ width: "100%", height: iFrameHeight, border: "none", }), }; return { styles: styles }; }; var ShareDialog = function (_a) { var isOpen = _a.isOpen, options = _a.options, onClose = _a.onClose; var _b = (0, react_1.useState)(undefined), dialogUrl = _b[0], setDialogUrl = _b[1]; var iframeRef = (0, react_1.useRef)(null); var _c = (0, react_1.useState)(400), iFrameHeight = _c[0], setIFrameHeight = _c[1]; var siteUrl = options.siteUrl, listId = options.listId, itemId = options.itemId, name = options.name; var styles = useStyles(iFrameHeight).styles; var closeDialog = (0, react_1.useCallback)(function () { onClose(); }, [onClose]); var handleIframeMessage = (0, react_1.useCallback)(function (event) { var _a = JSON.parse(event.data), name = _a.name, height = _a.height; switch (name) { case "share_dismiss": closeDialog(); break; case "share_resize": setIFrameHeight(height); break; case "share_scriptsLoaded": break; case "share_uiReady": break; case "share_ready": break; default: break; } }, [closeDialog]); (0, react_1.useEffect)(function () { window.addEventListener("message", handleIframeMessage); return function () { window.removeEventListener("message", handleIframeMessage); }; }, [handleIframeMessage]); (0, react_1.useEffect)(function () { if (isOpen) { var clientId = "sharePoint"; var policyTip = 0; var folderColor = ""; var clickTime = new Date().getTime(); var fullScreenMode = false; var origin_1 = encodeURIComponent(window.location.origin); var encodeName = encodeURIComponent(name); var url = "".concat(siteUrl, "/_layouts/15/sharedialog.aspx") + "?listId=".concat(listId) + "&listItemId=".concat(itemId) + "&clientId=".concat(clientId) + "&policyTip=".concat(policyTip) + "&folderColor=".concat(folderColor) + "&clickTime=".concat(clickTime) + "&ma=0" + "&fullScreenMode=".concat(fullScreenMode) + "&itemName= ".concat(encodeName) + "&channelId=" + "&origin=".concat(origin_1); setDialogUrl(url); } else { setDialogUrl(undefined); } }, [isOpen, siteUrl, listId, itemId]); return (React.createElement(renderDialog_1.RenderDialog, { isOpen: isOpen, onDismiss: closeDialog, maxHeight: "fit-content" }, React.createElement("iframe", { ref: iframeRef, src: dialogUrl || "", className: styles.iframe }))); }; exports.ShareDialog = ShareDialog; //# sourceMappingURL=ShareDialog.js.map