UNPKG

synapse-react-client

Version:

[![Build Status](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client.svg?branch=main)](https://travis-ci.com/Sage-Bionetworks/Synapse-React-Client) [![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synaps

574 lines 33.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var React = (0, tslib_1.__importStar)(require("react")); var react_1 = require("react"); var ReactBootstrap = (0, tslib_1.__importStar)(require("react-bootstrap")); var react_bootstrap_1 = require("react-bootstrap"); var SynapseClient_1 = require("../../../utils/SynapseClient"); var synapseTypes_1 = require("../../../utils/synapseTypes"); var DirectDownloadButton_1 = (0, tslib_1.__importDefault)(require("../../DirectDownloadButton")); var FileUpload_1 = (0, tslib_1.__importDefault)(require("../../FileUpload")); var UserSearchBox_1 = (0, tslib_1.__importDefault)(require("../../UserSearchBox")); var UserCardSmall_1 = require("../../UserCardSmall"); var IconSvg_1 = (0, tslib_1.__importDefault)(require("../../IconSvg")); var SynapseContext_1 = require("../../../utils/SynapseContext"); var RadioGroup_1 = require("../../widgets/RadioGroup"); var RequestDataAccessStep2 = function (props) { var requestDataStepCallback = props.requestDataStepCallback, managedACTAccessRequirement = props.managedACTAccessRequirement, entityId = props.entityId, user = props.user, researchProjectId = props.researchProjectId; var accessToken = (0, SynapseContext_1.useSynapseContext)().accessToken; var _a = (0, react_1.useState)(), DUCTemplate = _a[0], setDUCTemplate = _a[1]; var _b = (0, react_1.useState)(), DUC = _b[0], setDUC = _b[1]; var _c = (0, react_1.useState)(), IRB = _c[0], setIRB = _c[1]; var _d = (0, react_1.useState)([]), attachments = _d[0], setAttachments = _d[1]; var _e = (0, react_1.useState)(), formSubmitRequestObject = _e[0], setFormSubmitRequestObject = _e[1]; var _f = (0, react_1.useState)(), alert = _f[0], setAlert = _f[1]; var _g = (0, react_1.useState)(false), isRenewal = _g[0], setIsRenewal = _g[1]; var _h = (0, react_1.useState)([]), accessors = _h[0], setAccessors = _h[1]; var requestedFileTypes = {}; var batchFileRequest = { requestedFiles: [], includeFileHandles: true, includePreSignedURLs: false, includePreviewPreSignedURLs: false, }; var mounted = true; (0, react_1.useEffect)(function () { if (mounted) { setAlert(undefined); setFormData(); } return function () { mounted = false; }; }, [accessToken, researchProjectId]); var setFormData = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var dataAccessRequestData, seen_1; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, (0, SynapseClient_1.getDataAccessRequestForUpdate)(String(managedACTAccessRequirement.id), accessToken) // SWC-5765: Filter out duplicate accessors that are in an existing Access Requirement data access request ]; case 1: dataAccessRequestData = _a.sent(); // SWC-5765: Filter out duplicate accessors that are in an existing Access Requirement data access request if (dataAccessRequestData.accessorChanges) { seen_1 = new Set(); dataAccessRequestData.accessorChanges = dataAccessRequestData.accessorChanges.filter(function (accessorChange) { return seen_1.has(accessorChange.userId) ? false : seen_1.add(accessorChange.userId); }); } // renewal case if (dataAccessRequestData.concreteType === 'org.sagebionetworks.repo.model.dataaccess.Renewal') { setIsRenewal(true); } // initialize form submission request object dataAccessRequestData.researchProjectId = researchProjectId; setFormSubmitRequestObject(dataAccessRequestData); // get assessors' user profiles data for display and save them in the state variables getAccessorsData(dataAccessRequestData); // get data access required docs data to display file names getFilesData(dataAccessRequestData); return [2 /*return*/]; } }); }); }; var getAccessorsData = function (dataAccessRequestData) { var accessorChanges = dataAccessRequestData.accessorChanges; var ids = []; if (!accessorChanges || !accessorChanges.length) { ids.push(user.ownerId); // Add current user to submission request object setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { accessorChanges: [ { userId: user.ownerId, type: synapseTypes_1.AccessType.GAIN_ACCESS, }, ], }); }); } else { accessorChanges.forEach(function (item) { ids.push(item.userId); }); } var promises = ids.map(function (userId) { return (0, SynapseClient_1.getUserProfileById)(accessToken, userId); }); Promise.all(promises).then(function (profiles) { var profileAndAccessType = profiles.map(function (item, i) { var _a; var accessType = accessorChanges && ((_a = accessorChanges[i]) === null || _a === void 0 ? void 0 : _a.type) ? accessorChanges[i].type : synapseTypes_1.AccessType.GAIN_ACCESS; return { profile: item, accessType: accessType }; }); setAccessors(profileAndAccessType); }); }; var getFilesData = function (dataAccessRequestData) { // Create the request objects for required documents and save them in the state variables if (managedACTAccessRequirement.isDUCRequired && managedACTAccessRequirement.ducTemplateFileHandleId) { var requestObj = { associateObjectId: String(managedACTAccessRequirement.id), associateObjectType: synapseTypes_1.FileHandleAssociateType.AccessRequirementAttachment, fileHandleId: managedACTAccessRequirement.ducTemplateFileHandleId, }; batchFileRequest.requestedFiles.push(requestObj); if (!requestedFileTypes[managedACTAccessRequirement.ducTemplateFileHandleId]) { requestedFileTypes[managedACTAccessRequirement.ducTemplateFileHandleId] = []; } requestedFileTypes[managedACTAccessRequirement.ducTemplateFileHandleId].push('DUCTemplate'); setDUCTemplate(requestObj); } if (managedACTAccessRequirement.isDUCRequired && dataAccessRequestData.ducFileHandleId) { var requestObj = { associateObjectId: dataAccessRequestData.id, associateObjectType: synapseTypes_1.FileHandleAssociateType.DataAccessRequestAttachment, fileHandleId: dataAccessRequestData.ducFileHandleId, }; batchFileRequest.requestedFiles.push(requestObj); if (!requestedFileTypes[dataAccessRequestData.ducFileHandleId]) { requestedFileTypes[dataAccessRequestData.ducFileHandleId] = []; } requestedFileTypes[dataAccessRequestData.ducFileHandleId].push('DUC'); setDUC(requestObj); } if (managedACTAccessRequirement.isIRBApprovalRequired && dataAccessRequestData.irbFileHandleId) { var requestObj = { associateObjectId: dataAccessRequestData.id, associateObjectType: synapseTypes_1.FileHandleAssociateType.DataAccessRequestAttachment, fileHandleId: dataAccessRequestData.irbFileHandleId, }; batchFileRequest.requestedFiles.push(requestObj); if (!requestedFileTypes[dataAccessRequestData.irbFileHandleId]) { requestedFileTypes[dataAccessRequestData.irbFileHandleId] = []; } requestedFileTypes[dataAccessRequestData.irbFileHandleId].push('IRB'); setIRB(requestObj); } if (dataAccessRequestData.attachments && dataAccessRequestData.attachments.length) { dataAccessRequestData.attachments.forEach(function (id) { batchFileRequest.requestedFiles.push({ associateObjectId: dataAccessRequestData.id, associateObjectType: synapseTypes_1.FileHandleAssociateType.DataAccessRequestAttachment, fileHandleId: id, }); if (!requestedFileTypes[id]) { requestedFileTypes[id] = []; } requestedFileTypes[id].push('attachments'); }); } // Fetch the required doc file names and save them in the state variables if (batchFileRequest.requestedFiles.length) { (0, SynapseClient_1.getFiles)(batchFileRequest, accessToken).then(function (resp) { resp.requestedFiles.forEach(function (file) { var fileName = file.fileHandle.fileName; var fileTypes = requestedFileTypes[file.fileHandleId]; fileTypes.forEach(function (type) { switch (type) { case 'DUCTemplate': setDUCTemplate(function (prevState) { return Object.assign({}, prevState, { fileName: fileName }); }); requestedFileTypes[file.fileHandleId].splice(fileTypes.indexOf('DUCTemplate'), 1); break; case 'DUC': setDUC(function (prevState) { return Object.assign({}, prevState, { fileName: fileName }); }); requestedFileTypes[file.fileHandleId].splice(fileTypes.indexOf('DUC'), 1); break; case 'IRB': setIRB(function (prevState) { return Object.assign({}, prevState, { fileName: fileName }); }); requestedFileTypes[file.fileHandleId].splice(fileTypes.indexOf('IRB'), 1); break; case 'attachments': setAttachments(function (prev) { return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], prev, true), [ { fileName: fileName, associateObjectId: dataAccessRequestData.id, associateObjectType: synapseTypes_1.FileHandleAssociateType.DataAccessRequestAttachment, fileHandleId: file.fileHandleId, }, ], false); }); requestedFileTypes[file.fileHandleId].splice(fileTypes.indexOf('attachments'), 1); break; default: } }); }); }); // end getFiles } }; var handleSubmit = function () { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var resp_1, requestObject, submission_resp, alertMsg, e_1; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: if (!formSubmitRequestObject) return [3 /*break*/, 7]; _a.label = 1; case 1: _a.trys.push([1, 6, , 7]); return [4 /*yield*/, (0, SynapseClient_1.updateDataAccessRequest)(formSubmitRequestObject, accessToken)]; case 2: resp_1 = _a.sent(); if (!(resp_1 && resp_1.etag)) return [3 /*break*/, 4]; requestObject = { requestId: resp_1.id, requestEtag: resp_1.etag, subjectId: entityId, subjectType: synapseTypes_1.RestrictableObjectType.ENTITY, }; // Update save etag setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { etag: resp_1.etag, }); }); return [4 /*yield*/, (0, SynapseClient_1.submitDataAccessRequest)(requestObject, accessToken)]; case 3: submission_resp = _a.sent(); alertMsg = getSubmissionMsg(submission_resp); if (submission_resp.state === synapseTypes_1.SUBMISSION_STATE.REJECTED) { setAlert({ key: 'danger', message: alertMsg, }); } else { // Navigate to the submission success dialog requestDataStepCallback === null || requestDataStepCallback === void 0 ? void 0 : requestDataStepCallback({ step: 5 }); } return [3 /*break*/, 5]; case 4: setAlert({ key: 'danger', message: getErrorMessage(), }); _a.label = 5; case 5: return [3 /*break*/, 7]; case 6: e_1 = _a.sent(); console.log('RequestDataAccessStep2: Error updating form', e_1); setAlert({ key: 'danger', message: getErrorMessage(e_1.reason), }); return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }; var getErrorMessage = function (reason) { if (reason === void 0) { reason = ''; } return (React.createElement(React.Fragment, null, React.createElement("strong", null, "Sorry, there is an error in submitting your request."), React.createElement("br", null), reason)); }; var getSubmissionMsg = function (submission_resp) { var msgStart = 'The information has been '; switch (submission_resp.state) { case synapseTypes_1.SUBMISSION_STATE.SUBMITTED: return React.createElement("strong", null, msgStart, " submitted."); case synapseTypes_1.SUBMISSION_STATE.APPROVED: return React.createElement("strong", null, msgStart, " approved."); case synapseTypes_1.SUBMISSION_STATE.CANCELLED: return React.createElement("strong", null, msgStart, " canceled."); case synapseTypes_1.SUBMISSION_STATE.REJECTED: return (React.createElement(React.Fragment, null, React.createElement("strong", null, msgStart, " rejected."), ' ', submission_resp.rejectedReason, ". Please close this dialog and try again later.")); default: return React.createElement(React.Fragment, null); } }; var onClearAccessor = function (pid) { // Update the view var filtered = accessors.filter(function (item) { return item.profile.ownerId !== pid; }); setAccessors(filtered); // Update form submission request object var newAccessorChanges = filtered.map(function (item) { return { userId: item.profile.ownerId, type: item.accessType }; }); setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { accessorChanges: newAccessorChanges, }); }); }; var onClearAttachment = function (fid) { // Update the view var filtered = attachments.filter(function (item) { return item.fileHandleId !== fid; }); setAttachments(filtered); // Update form submission request object var newAttachments = filtered.map(function (item) { return item.fileHandleId; }); setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { attachments: newAttachments, }); }); }; var uploadCallback = function (data) { if (data.context === 'attachments') { var docs_1 = (formSubmitRequestObject === null || formSubmitRequestObject === void 0 ? void 0 : formSubmitRequestObject.attachments) ? formSubmitRequestObject === null || formSubmitRequestObject === void 0 ? void 0 : formSubmitRequestObject.attachments : []; docs_1 === null || docs_1 === void 0 ? void 0 : docs_1.push(data.resp.fileHandleId); setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { attachments: docs_1 }); }); // Update the view setAttachments(function (prev) { return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], prev, true), [ { fileName: data.resp.fileName, fileHandleId: data.resp.fileHandleId, }, ], false); }); } else { setFormSubmitRequestObject(function (prevState) { var _a; return Object.assign({}, prevState, (_a = {}, _a[data.context] = data.resp.fileHandleId, _a)); }); // Update the view if (data.context === 'ducFileHandleId') { setDUC(function (prevState) { return Object.assign({}, prevState, { fileName: data.resp.fileName, fileHandleId: data.resp.fileHandleId, }); }); } if (data.context === 'irbFileHandleId') { setIRB(function (prevState) { return Object.assign({}, prevState, { fileName: data.resp.fileName, fileHandleId: data.resp.fileHandleId, }); }); } } }; // User search input event handler var onSelectUserCallback = function (selected) { var currentAccessorIds = accessors.map(function (accessor) { return accessor.profile.ownerId; }); // if user is not already in the accessor list (prevent duplicates in accessor list) if (!currentAccessorIds.includes(selected.ownerId)) { setAccessors(function (prev) { return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], prev, true), [ { profile: { ownerId: selected.ownerId, firstName: selected.firstName, lastName: selected.lastName, userName: selected.userName, }, accessType: synapseTypes_1.AccessType.GAIN_ACCESS } ], false); }); var selectedAccessor = { userId: selected.ownerId, type: synapseTypes_1.AccessType.GAIN_ACCESS, }; var accessorsArr_1 = (formSubmitRequestObject === null || formSubmitRequestObject === void 0 ? void 0 : formSubmitRequestObject.accessorChanges) || []; accessorsArr_1.push(selectedAccessor); setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { accessorChanges: accessorsArr_1, }); }); } }; var handleTextAreaInputChange = function (e, id) { var value = e.target.value; switch (id) { case 'publications': setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { publication: value }); }); break; case 'summaryOfUse': setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { summaryOfUse: value }); }); break; default: } }; // For renewal only var onAccessorRadioBtnChange = function (accessType, userId) { // Make the radio button appears selected when clicked. var copy = (0, tslib_1.__spreadArray)([], accessors, true); var index = copy.findIndex(function (item) { return item.profile.ownerId === userId; }); copy[index].accessType = accessType; setAccessors(copy); // Update formSubmitRequestObject var formCopy = (formSubmitRequestObject === null || formSubmitRequestObject === void 0 ? void 0 : formSubmitRequestObject.accessorChanges) || []; var index2 = formCopy.findIndex(function (item) { return item.userId === userId; }); formCopy[index2].type = accessType; setFormSubmitRequestObject(function (prevState) { return Object.assign({}, prevState, { accessorChanges: formCopy }); }); }; var getAccessorRequirementHelpText = function () { var link = ''; var msg = ''; if (managedACTAccessRequirement.isCertifiedUserRequired) { link = 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-CertifiedUsers'; msg = 'All data requesters must be a certified user.'; } if (managedACTAccessRequirement.isValidatedProfileRequired) { link = 'https://help.synapse.org/docs/User-Types.2007072795.html#UserAccountTiers-ValidatedUsers'; msg = 'All data requesters must have a validated user profile.'; } return link && msg ? React.createElement(React.Fragment, null, msg, React.createElement("a", { href: link, target: '_blank', rel: 'noreferrer' }, React.createElement(IconSvg_1.default, { options: { icon: 'info', } }))) : React.createElement(React.Fragment, null); }; return (React.createElement(React.Fragment, null, React.createElement(react_bootstrap_1.Form, { className: 'access-request-form2', onSubmit: function (e) { return e.preventDefault(); } }, React.createElement(ReactBootstrap.Modal.Header, { closeButton: true }, React.createElement(ReactBootstrap.Modal.Title, { className: "AccessRequirementList__title" }, "Request Access")), React.createElement(ReactBootstrap.Modal.Body, null, React.createElement("p", null, "Please provide the information below to submit the request for access."), React.createElement(react_bootstrap_1.Form.Group, null, React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'requesters', style: { margin: '0' } }, "Data Requesters"), React.createElement("br", null), React.createElement("span", { className: 'requester-label' }, managedACTAccessRequirement.isDUCRequired && (React.createElement(React.Fragment, null, "This list should match those listed on your DUC.", React.createElement("br", null))), getAccessorRequirementHelpText()), React.createElement(UserSearchBox_1.default, { id: 'requesters', onSelectCallback: onSelectUserCallback, filterUserIds: accessors.map(function (user) { return user.profile.ownerId; }) })), React.createElement(react_bootstrap_1.Form.Group, { style: { marginBottom: '4rem' } }, accessors.map(function (accessor, i) { return (React.createElement("div", { className: 'list-items', key: "accessor-" + i }, React.createElement(UserCardSmall_1.UserCardSmall, { userProfile: accessor.profile, showAccountLevelIcon: true, disableLink: true, showFullName: true }), // only display delete button if the user profile is other users and has not access before (user.ownerId !== accessor.profile.ownerId) && (accessor.accessType === synapseTypes_1.AccessType.GAIN_ACCESS) && (React.createElement(react_bootstrap_1.Button, { className: 'clear-x', variant: 'link', onClick: function () { return onClearAccessor(accessor.profile.ownerId); } }, React.createElement(IconSvg_1.default, { options: { icon: 'clear' } }))), // Renewal/Revoke data access, only display if isRenewal is true isRenewal && (accessor.accessType !== synapseTypes_1.AccessType.GAIN_ACCESS) && (React.createElement(React.Fragment, null, React.createElement(RadioGroup_1.RadioGroup, { id: "accessor-renewal-" + accessor.profile.ownerId, value: accessor.accessType, options: [ { label: 'Renew', value: synapseTypes_1.AccessType.RENEW_ACCESS }, { label: 'Revoke', value: synapseTypes_1.AccessType.REVOKE_ACCESS }, ], onChange: function (value) { return onAccessorRadioBtnChange(value, accessor.profile.ownerId); } }))))); })), (managedACTAccessRequirement === null || managedACTAccessRequirement === void 0 ? void 0 : managedACTAccessRequirement.isDUCRequired) && (React.createElement(React.Fragment, null, React.createElement(react_bootstrap_1.Form.Group, null, React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'duc-temp', className: 'SRC-noMargin' }, "DUC template"), React.createElement("br", null), DUCTemplate && (React.createElement("div", null, React.createElement(DirectDownloadButton_1.default, { fileHandleAssociation: { associateObjectId: DUCTemplate === null || DUCTemplate === void 0 ? void 0 : DUCTemplate.associateObjectId, associateObjectType: DUCTemplate.associateObjectType, fileHandleId: DUCTemplate.fileHandleId, }, fileName: DUCTemplate.fileName, id: 'duc-temp', variant: 'link', className: 'SRC-noPadding' })))), React.createElement(react_bootstrap_1.Form.Group, null, React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'duc', className: 'SRC-noMargin' }, "Upload DUC"), React.createElement("br", null), DUC && (React.createElement("div", null, React.createElement(DirectDownloadButton_1.default, { fileHandleAssociation: { associateObjectId: DUC.associateObjectId, associateObjectType: DUC.associateObjectType, fileHandleId: DUC.fileHandleId, }, fileName: DUC === null || DUC === void 0 ? void 0 : DUC.fileName, id: 'duc-download', variant: 'link', className: 'SRC-noPadding' }))), React.createElement(FileUpload_1.default, { id: 'duc-browse', variant: 'light-primary-base', uploadCallback: uploadCallback, context: 'ducFileHandleId' })))), (managedACTAccessRequirement === null || managedACTAccessRequirement === void 0 ? void 0 : managedACTAccessRequirement.isIRBApprovalRequired) && (React.createElement(react_bootstrap_1.Form.Group, null, React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'irb', className: 'SRC-noMargin' }, "Upload IRB approval"), React.createElement("br", null), IRB && (React.createElement("div", null, React.createElement(DirectDownloadButton_1.default, { fileHandleAssociation: { associateObjectId: IRB.associateObjectId, associateObjectType: IRB.associateObjectType, fileHandleId: IRB.fileHandleId, }, fileName: IRB === null || IRB === void 0 ? void 0 : IRB.fileName, id: 'irb-download', variant: 'link', className: 'SRC-noPadding' }))), React.createElement(FileUpload_1.default, { id: 'irb-browse', variant: 'light-primary-base', uploadCallback: uploadCallback, context: 'irbFileHandleId' }))), /* Attachments */ (managedACTAccessRequirement === null || managedACTAccessRequirement === void 0 ? void 0 : managedACTAccessRequirement.areOtherAttachmentsRequired) && (React.createElement(react_bootstrap_1.Form.Group, null, React.createElement(react_bootstrap_1.Form.Label, { className: 'SRC-noMargin' }, "Upload other required documents"), React.createElement("br", null), attachments.map(function (attachment, i) { return (React.createElement("div", { className: 'list-items', key: "file-attachment-" + i }, React.createElement(DirectDownloadButton_1.default, { fileHandleAssociation: { associateObjectId: attachment.associateObjectId, associateObjectType: attachment.associateObjectType, fileHandleId: attachment.fileHandleId, }, fileName: attachment === null || attachment === void 0 ? void 0 : attachment.fileName, variant: 'link', className: 'SRC-noPadding attachment-download' }), React.createElement(react_bootstrap_1.Button, { className: 'clear-x', variant: 'link', onClick: function () { return onClearAttachment(attachment.fileHandleId); } }, React.createElement(IconSvg_1.default, { options: { icon: 'clear' } })))); }), React.createElement(FileUpload_1.default, { id: 'attachment-browse', variant: 'light-primary-base', uploadCallback: uploadCallback, context: 'attachments' }))), isRenewal && (React.createElement(React.Fragment, null, React.createElement(react_bootstrap_1.Form.Group, null, React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'publications', className: 'SRC-noMargin' }, "Publication(s)"), React.createElement(react_bootstrap_1.Form.Control, { id: "publications", as: "textarea", rows: 3, onChange: function (e) { return handleTextAreaInputChange(e, 'publications'); } })), React.createElement(react_bootstrap_1.Form.Group, null, React.createElement(react_bootstrap_1.Form.Label, { htmlFor: 'summaryOfUse', className: 'SRC-noMargin' }, "Summary of use"), React.createElement(react_bootstrap_1.Form.Control, { id: "summaryOfUse", as: "textarea", rows: 3, onChange: function (e) { return handleTextAreaInputChange(e, 'summaryOfUse'); } })))), /* Alert message */ alert && React.createElement(react_bootstrap_1.Alert, { variant: alert.key }, alert.message)), React.createElement(ReactBootstrap.Modal.Footer, null, React.createElement(React.Fragment, null, React.createElement(react_bootstrap_1.Button, { variant: "link", onClick: function () { return requestDataStepCallback === null || requestDataStepCallback === void 0 ? void 0 : requestDataStepCallback({ step: 3, formSubmitRequestObject: formSubmitRequestObject, }); } }, "Cancel"), React.createElement(react_bootstrap_1.Button, { variant: "primary", onClick: function () { return handleSubmit(); } }, "Submit")))))); }; exports.default = RequestDataAccessStep2; //# sourceMappingURL=RequestDataAccessStep2.js.map