@clickview/lite 0.76.0-rc.1 → 0.76.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{658-lite-5cb7c60d3b.chunk.css → 3700-lite-2ddbf5e39f.chunk.css} +0 -1
- package/dist/css/{4033-lite-b2fb1fd10e.chunk.css → 5987-lite-dc7e18cd99.chunk.css} +1 -0
- package/dist/css/{3325-lite-6f710728af.chunk.css → 5999-lite-bd05e26c6b.chunk.css} +1 -0
- package/dist/css/{6273-lite-e023522516.chunk.css → 6554-lite-a69c2a69da.chunk.css} +1 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1518-c916754d35-lite.chunk.js → 1518-7005bfd3c8-lite.chunk.js} +2 -2
- package/dist/scripts/{1518-c916754d35-lite.chunk.js.map → 1518-7005bfd3c8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1670-823b692de0-lite.chunk.js → 1670-d9ced49962-lite.chunk.js} +2 -2
- package/dist/scripts/{1670-823b692de0-lite.chunk.js.map → 1670-d9ced49962-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js → 1912-2271f9d8ee-lite.chunk.js} +2 -2
- package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js.map → 1912-2271f9d8ee-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3143-f03801138f-lite.chunk.js → 3143-a754e306a5-lite.chunk.js} +3 -3
- package/dist/scripts/{3143-f03801138f-lite.chunk.js.map → 3143-a754e306a5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3191-6f79256d33-lite.chunk.js → 3191-e387636012-lite.chunk.js} +2 -2
- package/dist/scripts/{3191-6f79256d33-lite.chunk.js.map → 3191-e387636012-lite.chunk.js.map} +1 -1
- package/dist/scripts/3700-3859a400a5-lite.chunk.js +3 -0
- package/dist/scripts/3700-3859a400a5-lite.chunk.js.map +1 -0
- package/dist/scripts/{4050-57e2409255-lite.chunk.js → 4050-8852c15f40-lite.chunk.js} +3 -3
- package/dist/scripts/4050-8852c15f40-lite.chunk.js.map +1 -0
- package/dist/scripts/{4802-1b7a767c46-lite.chunk.js → 4802-bc321d7ede-lite.chunk.js} +3 -3
- package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.map → 4802-bc321d7ede-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5877-6c9d90249b-lite.chunk.js → 5877-20ef40af7c-lite.chunk.js} +2 -2
- package/dist/scripts/{5877-6c9d90249b-lite.chunk.js.map → 5877-20ef40af7c-lite.chunk.js.map} +1 -1
- package/dist/scripts/5987-ece2ee4793-lite.chunk.js +3 -0
- package/dist/scripts/5987-ece2ee4793-lite.chunk.js.map +1 -0
- package/dist/scripts/{6273-a71eccd48b-lite.chunk.js → 6554-353cf95001-lite.chunk.js} +2 -2
- package/dist/scripts/{6273-a71eccd48b-lite.chunk.js.map → 6554-353cf95001-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6948-bb65fe4173-lite.chunk.js → 6948-ecc082ff3e-lite.chunk.js} +3 -3
- package/dist/scripts/{6948-bb65fe4173-lite.chunk.js.map → 6948-ecc082ff3e-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7815-554d031e0a-lite.chunk.js → 7815-05c5e8df47-lite.chunk.js} +2 -2
- package/dist/scripts/{7815-554d031e0a-lite.chunk.js.map → 7815-05c5e8df47-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7835-61d04f9f11-lite.chunk.js → 7835-8d490274c8-lite.chunk.js} +3 -3
- package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.map → 7835-8d490274c8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8362-5936447d00-lite.chunk.js → 8362-7cac098b34-lite.chunk.js} +3 -3
- package/dist/scripts/{8362-5936447d00-lite.chunk.js.map → 8362-7cac098b34-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js → 8548-c987128b9f-lite.chunk.js} +3 -3
- package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.map → 8548-c987128b9f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js → 8756-560899a88b-lite.chunk.js} +2 -2
- package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js.map → 8756-560899a88b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js → 8933-aa3f547d1e-lite.chunk.js} +3 -3
- package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.map → 8933-aa3f547d1e-lite.chunk.js.map} +1 -1
- package/dist/scripts/914-4a8424247f-lite.chunk.js +2 -0
- package/dist/scripts/914-4a8424247f-lite.chunk.js.map +1 -0
- package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js → 9423-3ce35ca995-lite.chunk.js} +2 -2
- package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js.map → 9423-3ce35ca995-lite.chunk.js.map} +1 -1
- package/dist/scripts/bundle-385a231a9d.min.js +3 -0
- package/dist/scripts/{bundle-b45bdb5c57.min.js.map → bundle-385a231a9d.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/4033-d8dbb0d208-lite.chunk.js +0 -3
- package/dist/scripts/4033-d8dbb0d208-lite.chunk.js.map +0 -1
- package/dist/scripts/4050-57e2409255-lite.chunk.js.map +0 -1
- package/dist/scripts/5467-3c44100a58-lite.chunk.js +0 -2
- package/dist/scripts/5467-3c44100a58-lite.chunk.js.map +0 -1
- package/dist/scripts/658-f500e8210f-lite.chunk.js +0 -3
- package/dist/scripts/658-f500e8210f-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-b45bdb5c57.min.js +0 -3
- /package/dist/scripts/{3143-f03801138f-lite.chunk.js.LICENSE.txt → 3143-a754e306a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4033-d8dbb0d208-lite.chunk.js.LICENSE.txt → 3700-3859a400a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4050-57e2409255-lite.chunk.js.LICENSE.txt → 4050-8852c15f40-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.LICENSE.txt → 4802-bc321d7ede-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{658-f500e8210f-lite.chunk.js.LICENSE.txt → 5987-ece2ee4793-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6948-bb65fe4173-lite.chunk.js.LICENSE.txt → 6948-ecc082ff3e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.LICENSE.txt → 7835-8d490274c8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8362-5936447d00-lite.chunk.js.LICENSE.txt → 8362-7cac098b34-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.LICENSE.txt → 8548-c987128b9f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.LICENSE.txt → 8933-aa3f547d1e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-b45bdb5c57.min.js.LICENSE.txt → bundle-385a231a9d.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7815],{11658:(e,r,t)=>{t.r(r),t.d(r,{BulkUserUploadReviewAccountsView:()=>X});var a=t(32735),n=t(70680),s=t(23481),i=t(81886),o=t(20354),l=t(79447),u=t(83345),c=t(76881),d="userManager.bulkUserUploadLoaderValidation";function m(e){var r,t,n=Math.floor(e.totalCompleted/e.totalUsers*100);return a.createElement("div",{className:"d-flex flex-column align-items-center py-5"},a.createElement("h1",{className:"h5"},a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"headingStudents":"headingStaff"})),a.createElement("p",null,a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"progressStudents":"progressStaff",options:{totalLoaded:null!==(r=e.totalCompleted)&&void 0!==r?r:0,totalUsers:null!==(t=e.totalUsers)&&void 0!==t?t:0}})),a.createElement(l.Z,{className:"w-50",variant:"info",now:n}))}var p=t(67370),f=t(63598),y=t(93898),b=t(42949),v=t(19717),g=t(96728),h=t(69883),k=t(299),E=t(45541),S=t(39739),w=t(91693),T=t(83523),U={downloadCsvArray:function(e,r){var t="data:text/csv;charset=utf-8,";t+=e.map(function(e){return e.join(",")}).join("\n");var a=document.createElement("a");a.href=encodeURI(t),a.download=r,a.click()},safeDownloadCsv:function(e,r){var t=new Blob([e],{type:"text/csv;charset=utf-8;"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=r,n.click(),URL.revokeObjectURL(a)}},C=t(35223);function x(e){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(e)}function P(e,r,t){return(r=function(e){var r=function(e){if("object"!=x(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=x(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==x(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var L=P(P(P({},c.Y.Learner,"userManager.studentSpreadsheetHeading"),c.Y.Staff,"userManager.staffSpreadsheetHeading"),c.Y.Unknown,"");function I(e){var r=(0,E.V)().invalidUsers,t=v.b.getTotalInvalidListings(r);return a.createElement(a.Fragment,null,a.createElement("h2",{className:"h4"},a.createElement(u.x,{namespace:L[e.userType],phrase:"heading"})),t?a.createElement(a.Fragment,null,a.createElement("p",{className:"mb-3 fw-semibold"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewInfo"})),a.createElement("div",{className:"pb-3"},a.createElement(w.h,{svgName:C.vn.Upload,appLink:e.appLinks.userUploadPopup,className:"btn btn-outline-dark me-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reupload"})),a.createElement(w.h,{svgName:C.vn.Download,onClick:function(){var t=Object.keys(r).map(function(e){return r[e]}).map(function(r){var t,a,n=r.user,s=r.errorCodes,i=S.P.getMinimumPasswordLength(e.passwordPolicy,n.userType,n.masterRole),o=S.P.getErrorMessages(s,i,!0,e.localErrorMessage),l=function(e){var r,t=o[e]||null;return null===t?null!==(r=n[e])&&void 0!==r?r:"":n[e]?t+=": ".concat(n[e]):t};return e.userType===c.Y.Learner?[l("firstName"),l("surname"),null!==(t=o.masterYearGroup)&&void 0!==t?t:null===(a=n.masterYearGroup)||void 0===a?void 0:a.name,l("email"),l("username"),l("password")]:[l("firstName"),l("surname"),l("email"),l("username")]});e.userType===c.Y.Learner?t.unshift(["First Name","Last Name","Year level","Email","Username","Password"]):t.unshift(["First Name","Last Name","Email","Username"]),U.downloadCsvArray(t,s.T.getPhrase(L[e.userType],"errorFileName"))},className:"btn btn-outline-dark"},a.createElement(u.x,{namespace:L[e.userType],phrase:"exportErrors"})))):a.createElement("p",{className:"mb-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewComplete"})),a.createElement("div",{className:"d-flex align-items-center flex-wrap"},a.createElement("p",{className:"pe-3 mb-0"},a.createElement(u.x,{namespace:L[e.userType],phrase:"switchLabel"})),a.createElement(T.Z,{onClick:e.onToggleValidListings,on:e.hideValidListings})),a.createElement("div",{className:"d-flex align-items-center ms-3 ps-1 mt-3"},a.createElement(w.h,{svgName:C.vn.Close,onClick:e.onClickRemove,className:"btn btn-outline-dark",disabled:!e.bulkIndeterminate&&!e.bulkChecked||e.disableBulkCheckbox},a.createElement(u.x,{namespace:L[e.userType],phrase:"removeFromSpreadsheet"}))))}function N(e){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},N(e)}function j(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(e,r)||function(e,r){if(e){if("string"==typeof e)return M(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?M(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function A(e,r,t){return(r=function(e){var r=function(e){if("object"!=N(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=N(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==N(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var O=A(A(A({},c.Y.Learner,"userManager.editStudentSpreadsheet"),c.Y.Staff,"userManager.editStaffSpreadsheet"),c.Y.Unknown,"");function V(e){var r=O[e.userType],t=j(a.useState(!0),2),n=t[0],o=t[1],l=j(a.useState(),2),u=l[0],c=l[1],d=j(a.useState([]),2),S=d[0],w=d[1],T=(0,E.V)(),U=T.users,C=T.invalidUsers,x=T.setInvalidUsers,P=T.hasValidatedUsers,L=T.setExistingUsers,N=P?n?Object.keys(C).map(function(e){return C[e].user}):U:[],M=(0,k.X)(N,{idField:"lookupId"}),A=a.useContext(g.e),V=A.setDisableNext,F=A.setShowButtons,R=A.setOnClickConfirm,Y=(0,h.Z)(),B=v.b.getTotalInvalidListings(C),$=(0,p.Ix)({hasValidatedUsers:P,setInvalidUsers:x,userType:e.userType,setHideValidListings:o,setExistingUsers:L});function H(){Y.error(s.T.getPhrase(r,"error")),i.Q.C$.trigger(e.appLinks.userManager,{replace:!0})}return a.useEffect(function(){P||(e.setTotalValidatedUsers(0),e.validateSpreadsheet(U,$,H))},[P]),a.useEffect(function(){F(P),V(!!Object.keys(null!=C?C:{}).length)},[C,P]),a.useEffect(function(){R(function(){return e.onClickConfirm})},[e.onClickConfirm]),P?a.createElement(a.Fragment,null,a.createElement(I,{appLinks:e.appLinks,userType:e.userType,hideValidListings:n,passwordPolicy:e.passwordPolicy,onToggleValidListings:function(){return(0,p.zV)({setHideValidListings:o,hideValidListings:n,userType:e.userType})},bulkChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onClickRemove:function(){var e=M.getSelected();w(e)},disableBulkCheckbox:!N.length,localErrorMessage:e.localErrorMessage}),a.createElement("main",{className:"pt-2 pb-3 position-relative"},a.createElement(b.M,{users:N,invalidUsers:C,userType:e.userType,onClickEdit:c,onClickDelete:w,onClickCreate:e.onClickConfirm,appLinks:e.appLinks,showInvalidEmptyState:n&&!B,emptyStateImageUrl:e.emptyStateImageUrl,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,checkboxId:"bulk-upload-remove",isChecked:function(e){return M.isChecked(e)&&!!N.length},onToggleCheckbox:M.onToggleItem,localErrorMessage:e.localErrorMessage,bulkCheckboxChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onToggleBulkCheckbox:M.onToggleBulk,disableBulkCheckbox:!N.length})),!!u&&a.createElement(y.n,{key:u.lookupId,user:u,setUser:c,closePopup:function(){return(0,p.UJ)(c,e.closePopup)},title:s.T.getPhrase(r,"editUser"),userType:e.userType,yearGroups:e.yearGroups,analyticsOptions:v.b.getAnalyticsOptions(e.userType),currentUser:e.currentUser,formSize:e.formSize,validateUser:e.validateUser,emailRequired:e.emailRequired,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,validateEmail:e.validateEmail,appLinks:e.appLinks,localErrorMessage:e.localErrorMessage}),!!S.length&&a.createElement(f.Q,{users:S,userType:e.userType,closePopup:function(){return(0,p.RF)(w,e.closePopup)},analyticsOptions:v.b.getAnalyticsOptions(e.userType)})):a.createElement(m,{userType:e.userType,totalCompleted:e.totalValidatedUsers,totalUsers:null==U?void 0:U.length})}var F=t(27150),R=t(26055),Y=t(43820),B=t(149),$=t(31949),H=t(79612),q=t(99742),G=t(29613),D=t(26234),J=t(47288),Z=t(18087);function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function z(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function Q(e,r,t){return(r=function(e){var r=function(e){if("object"!=_(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=_(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var W=Q(Q(Q({},c.Y.Learner,"userManager.bulkStudentUploadReviewAccounts"),c.Y.Staff,"userManager.bulkStaffUploadReviewAccounts"),c.Y.Unknown,"");function X(e){var r,t,l=(0,E.V)().users,u=(r=a.useState(0),t=2,function(e){if(Array.isArray(e))return e}(r)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(r,t)||function(e,r){if(e){if("string"==typeof e)return z(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?z(e,r):void 0}}(r,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],m=u[1],p=o.a.useBasicFetch($.N.currentUser()),f=o.a.useBasicFetch(p.data&&J.N.yearGroups(p.data.customerId)),y=o.a.useBasicFetch(p.data&&D.F.getCustomerSecuritySettings(p.data.customerId)),b=(0,n.I0)(),g=o.a.useGetFetchAsync();(0,H.M)({title:s.T.getPhrase(W[e.userType],"pageTitle")});var h=(0,Z.Y)(e.userType),k=B.b.useCreateJobErrorAlert();function w(r){i.Q.C$.trigger(Object.assign(Object.assign({},h.userUploadStatus.polling),{params:{userType:e.userType,jobId:r.id}}))}return a.createElement(R.A.Provider,{value:Y.a.Primary},a.createElement(F.$,{appLinks:h,userType:e.userType,currentStep:"review-accounts",canAddExistingUsers:!0},a.createElement("div",{className:"px-3"},a.createElement(V,{onClickConfirm:function(){var r=v.b.getJobData({users:l,customerId:p.data.customerId,userType:e.userType});o.a.fetch(b,G.q.createJob(r,w,k))},userType:e.userType,appLinks:h,currentUser:p.data,yearGroups:f.data,closePopup:e.closePopup,validateSpreadsheet:function(r,t,a){v.b.validateSpreadsheetRequest({users:r,userType:e.userType,customerId:p.data.customerId,dispatch:b,requestFn:J.N.bulkUsersValidate,setTotalCompletedUsers:m,canInviteExistingUsers:!0,onSuccess:t,onError:a})},validateUser:function(r){var t=S.P.formatCreateOrValidateUserRequest([r],e.userType,p.data.customerId);return g(J.N.bulkUsersValidate(t,!0))},totalValidatedUsers:d,setTotalValidatedUsers:m,emptyStateImageUrl:q.W.EmptyStates.UserManager.REVIEWS,showPasswordField:e.userType===c.Y.Learner,emailRequired:e.userType===c.Y.Staff,passwordPolicy:y.data,validateEmail:function(r){var t={userEmails:[{email:r,userType:e.userType}]};return g(J.N.bulkCheckEmail(t,p.data.customerId))},localErrorMessage:v.b.getErrorMessageOverride(e.userType)}))))}},79447:(e,r,t)=>{t.d(r,{Z:()=>m});var a=t(95685),n=t.n(a),s=t(32735),i=t(46304),o=t(58661),l=t(74512);function u(e,r,t){const a=(e-r)/(t-r)*100;return Math.round(1e3*a)/1e3}function c({min:e,now:r,max:t,label:a,visuallyHidden:s,striped:i,animated:o,className:c,style:d,variant:m,bsPrefix:p,...f},y){return(0,l.jsx)("div",{ref:y,...f,role:"progressbar",className:n()(c,`${p}-bar`,{[`bg-${m}`]:m,[`${p}-bar-animated`]:o,[`${p}-bar-striped`]:o||i}),style:{width:`${u(r,e,t)}%`,...d},"aria-valuenow":r,"aria-valuemin":e,"aria-valuemax":t,children:s?(0,l.jsx)("span",{className:"visually-hidden",children:a}):a})}const d=s.forwardRef(({isChild:e=!1,...r},t)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...r};if(a.bsPrefix=(0,i.vE)(a.bsPrefix,"progress"),e)return c(a,t);const{min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g,className:h,children:k,...E}=a;return(0,l.jsx)("div",{ref:t,...E,className:n()(h,v),children:k?(0,o.UI)(k,e=>(0,s.cloneElement)(e,{isChild:!0})):c({min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g},t)})});d.displayName="ProgressBar";const m=d}}]);
|
|
2
|
-
//# sourceMappingURL=7815-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7815],{11658:(e,r,t)=>{t.r(r),t.d(r,{BulkUserUploadReviewAccountsView:()=>X});var a=t(32735),n=t(70680),s=t(23481),i=t(81886),o=t(20354),l=t(79447),u=t(83345),c=t(76881),d="userManager.bulkUserUploadLoaderValidation";function m(e){var r,t,n=Math.floor(e.totalCompleted/e.totalUsers*100);return a.createElement("div",{className:"d-flex flex-column align-items-center py-5"},a.createElement("h1",{className:"h5"},a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"headingStudents":"headingStaff"})),a.createElement("p",null,a.createElement(u.x,{namespace:d,phrase:e.userType===c.Y.Learner?"progressStudents":"progressStaff",options:{totalLoaded:null!==(r=e.totalCompleted)&&void 0!==r?r:0,totalUsers:null!==(t=e.totalUsers)&&void 0!==t?t:0}})),a.createElement(l.Z,{className:"w-50",variant:"info",now:n}))}var p=t(67370),f=t(63598),y=t(93898),b=t(42949),v=t(19717),g=t(96728),h=t(69883),k=t(299),E=t(45541),S=t(39739),w=t(91693),T=t(83523),U={downloadCsvArray:function(e,r){var t="data:text/csv;charset=utf-8,";t+=e.map(function(e){return e.join(",")}).join("\n");var a=document.createElement("a");a.href=encodeURI(t),a.download=r,a.click()},safeDownloadCsv:function(e,r){var t=new Blob([e],{type:"text/csv;charset=utf-8;"}),a=URL.createObjectURL(t),n=document.createElement("a");n.href=a,n.download=r,n.click(),URL.revokeObjectURL(a)}},C=t(35223);function x(e){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},x(e)}function P(e,r,t){return(r=function(e){var r=function(e){if("object"!=x(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=x(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==x(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var L=P(P(P({},c.Y.Learner,"userManager.studentSpreadsheetHeading"),c.Y.Staff,"userManager.staffSpreadsheetHeading"),c.Y.Unknown,"");function I(e){var r=(0,E.V)().invalidUsers,t=v.b.getTotalInvalidListings(r);return a.createElement(a.Fragment,null,a.createElement("h2",{className:"h4"},a.createElement(u.x,{namespace:L[e.userType],phrase:"heading"})),t?a.createElement(a.Fragment,null,a.createElement("p",{className:"mb-3 fw-semibold"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewInfo"})),a.createElement("div",{className:"pb-3"},a.createElement(w.h,{svgName:C.vn.Upload,appLink:e.appLinks.userUploadPopup,className:"btn btn-outline-dark me-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reupload"})),a.createElement(w.h,{svgName:C.vn.Download,onClick:function(){var t=Object.keys(r).map(function(e){return r[e]}).map(function(r){var t,a,n=r.user,s=r.errorCodes,i=S.P.getMinimumPasswordLength(e.passwordPolicy,n.userType,n.masterRole),o=S.P.getErrorMessages(s,i,!0,e.localErrorMessage),l=function(e){var r,t=o[e]||null;return null===t?null!==(r=n[e])&&void 0!==r?r:"":n[e]?t+=": ".concat(n[e]):t};return e.userType===c.Y.Learner?[l("firstName"),l("surname"),null!==(t=o.masterYearGroup)&&void 0!==t?t:null===(a=n.masterYearGroup)||void 0===a?void 0:a.name,l("email"),l("username"),l("password")]:[l("firstName"),l("surname"),l("email"),l("username")]});e.userType===c.Y.Learner?t.unshift(["First Name","Last Name","Year level","Email","Username","Password"]):t.unshift(["First Name","Last Name","Email","Username"]),U.downloadCsvArray(t,s.T.getPhrase(L[e.userType],"errorFileName"))},className:"btn btn-outline-dark"},a.createElement(u.x,{namespace:L[e.userType],phrase:"exportErrors"})))):a.createElement("p",{className:"mb-2"},a.createElement(u.x,{namespace:L[e.userType],phrase:"reviewComplete"})),a.createElement("div",{className:"d-flex align-items-center flex-wrap"},a.createElement("p",{className:"pe-3 mb-0"},a.createElement(u.x,{namespace:L[e.userType],phrase:"switchLabel"})),a.createElement(T.Z,{onClick:e.onToggleValidListings,on:e.hideValidListings})),a.createElement("div",{className:"d-flex align-items-center ms-3 ps-1 mt-3"},a.createElement(w.h,{svgName:C.vn.Close,onClick:e.onClickRemove,className:"btn btn-outline-dark",disabled:!e.bulkIndeterminate&&!e.bulkChecked||e.disableBulkCheckbox},a.createElement(u.x,{namespace:L[e.userType],phrase:"removeFromSpreadsheet"}))))}function N(e){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},N(e)}function j(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(e,r)||function(e,r){if(e){if("string"==typeof e)return M(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?M(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function M(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function A(e,r,t){return(r=function(e){var r=function(e){if("object"!=N(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=N(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==N(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var O=A(A(A({},c.Y.Learner,"userManager.editStudentSpreadsheet"),c.Y.Staff,"userManager.editStaffSpreadsheet"),c.Y.Unknown,"");function V(e){var r=O[e.userType],t=j(a.useState(!0),2),n=t[0],o=t[1],l=j(a.useState(),2),u=l[0],c=l[1],d=j(a.useState([]),2),S=d[0],w=d[1],T=(0,E.V)(),U=T.users,C=T.invalidUsers,x=T.setInvalidUsers,P=T.hasValidatedUsers,L=T.setExistingUsers,N=P?n?Object.keys(C).map(function(e){return C[e].user}):U:[],M=(0,k.X)(N,{idField:"lookupId"}),A=a.useContext(g.e),V=A.setDisableNext,F=A.setShowButtons,R=A.setOnClickConfirm,Y=(0,h.Z)(),B=v.b.getTotalInvalidListings(C),$=(0,p.Ix)({hasValidatedUsers:P,setInvalidUsers:x,userType:e.userType,setHideValidListings:o,setExistingUsers:L});function H(){Y.error(s.T.getPhrase(r,"error")),i.Q.C$.trigger(e.appLinks.userManager,{replace:!0})}return a.useEffect(function(){P||(e.setTotalValidatedUsers(0),e.validateSpreadsheet(U,$,H))},[P]),a.useEffect(function(){F(P),V(!!Object.keys(null!=C?C:{}).length)},[C,P]),a.useEffect(function(){R(function(){return e.onClickConfirm})},[e.onClickConfirm]),P?a.createElement(a.Fragment,null,a.createElement(I,{appLinks:e.appLinks,userType:e.userType,hideValidListings:n,passwordPolicy:e.passwordPolicy,onToggleValidListings:function(){return(0,p.zV)({setHideValidListings:o,hideValidListings:n,userType:e.userType})},bulkChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onClickRemove:function(){var e=M.getSelected();w(e)},disableBulkCheckbox:!N.length,localErrorMessage:e.localErrorMessage}),a.createElement("main",{className:"pt-2 pb-3 position-relative"},a.createElement(b.M,{users:N,invalidUsers:C,userType:e.userType,onClickEdit:c,onClickDelete:w,onClickCreate:e.onClickConfirm,appLinks:e.appLinks,showInvalidEmptyState:n&&!B,emptyStateImageUrl:e.emptyStateImageUrl,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,checkboxId:"bulk-upload-remove",isChecked:function(e){return M.isChecked(e)&&!!N.length},onToggleCheckbox:M.onToggleItem,localErrorMessage:e.localErrorMessage,bulkCheckboxChecked:M.bulkChecked,bulkIndeterminate:M.hasSomeSelections(),onToggleBulkCheckbox:M.onToggleBulk,disableBulkCheckbox:!N.length})),!!u&&a.createElement(y.n,{key:u.lookupId,user:u,setUser:c,closePopup:function(){return(0,p.UJ)(c,e.closePopup)},title:s.T.getPhrase(r,"editUser"),userType:e.userType,yearGroups:e.yearGroups,analyticsOptions:v.b.getAnalyticsOptions(e.userType),currentUser:e.currentUser,formSize:e.formSize,validateUser:e.validateUser,emailRequired:e.emailRequired,showPasswordField:e.showPasswordField,passwordPolicy:e.passwordPolicy,validateEmail:e.validateEmail,appLinks:e.appLinks,localErrorMessage:e.localErrorMessage}),!!S.length&&a.createElement(f.Q,{users:S,userType:e.userType,closePopup:function(){return(0,p.RF)(w,e.closePopup)},analyticsOptions:v.b.getAnalyticsOptions(e.userType)})):a.createElement(m,{userType:e.userType,totalCompleted:e.totalValidatedUsers,totalUsers:null==U?void 0:U.length})}var F=t(27150),R=t(26055),Y=t(43820),B=t(149),$=t(31949),H=t(79612),q=t(99742),G=t(29613),D=t(80658),J=t(47288),Z=t(18087);function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function z(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t<r;t++)a[t]=e[t];return a}function Q(e,r,t){return(r=function(e){var r=function(e){if("object"!=_(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var t=r.call(e,"string");if("object"!=_(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(r)?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var W=Q(Q(Q({},c.Y.Learner,"userManager.bulkStudentUploadReviewAccounts"),c.Y.Staff,"userManager.bulkStaffUploadReviewAccounts"),c.Y.Unknown,"");function X(e){var r,t,l=(0,E.V)().users,u=(r=a.useState(0),t=2,function(e){if(Array.isArray(e))return e}(r)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,s,i,o=[],l=!0,u=!1;try{if(s=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(a=s.call(t)).done)&&(o.push(a.value),o.length!==r);l=!0);}catch(e){u=!0,n=e}finally{try{if(!l&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(u)throw n}}return o}}(r,t)||function(e,r){if(e){if("string"==typeof e)return z(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?z(e,r):void 0}}(r,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],m=u[1],p=o.a.useBasicFetch($.N.currentUser()),f=o.a.useBasicFetch(p.data&&J.N.yearGroups(p.data.customerId)),y=o.a.useBasicFetch(p.data&&D.F.getCustomerSecuritySettings(p.data.customerId)),b=(0,n.I0)(),g=o.a.useGetFetchAsync();(0,H.M)({title:s.T.getPhrase(W[e.userType],"pageTitle")});var h=(0,Z.Y)(e.userType),k=B.b.useCreateJobErrorAlert();function w(r){i.Q.C$.trigger(Object.assign(Object.assign({},h.userUploadStatus.polling),{params:{userType:e.userType,jobId:r.id}}))}return a.createElement(R.A.Provider,{value:Y.a.Primary},a.createElement(F.$,{appLinks:h,userType:e.userType,currentStep:"review-accounts",canAddExistingUsers:!0},a.createElement("div",{className:"px-3"},a.createElement(V,{onClickConfirm:function(){var r=v.b.getJobData({users:l,customerId:p.data.customerId,userType:e.userType});o.a.fetch(b,G.q.createJob(r,w,k))},userType:e.userType,appLinks:h,currentUser:p.data,yearGroups:f.data,closePopup:e.closePopup,validateSpreadsheet:function(r,t,a){v.b.validateSpreadsheetRequest({users:r,userType:e.userType,customerId:p.data.customerId,dispatch:b,requestFn:J.N.bulkUsersValidate,setTotalCompletedUsers:m,canInviteExistingUsers:!0,onSuccess:t,onError:a})},validateUser:function(r){var t=S.P.formatCreateOrValidateUserRequest([r],e.userType,p.data.customerId);return g(J.N.bulkUsersValidate(t,!0))},totalValidatedUsers:d,setTotalValidatedUsers:m,emptyStateImageUrl:q.W.EmptyStates.UserManager.REVIEWS,showPasswordField:e.userType===c.Y.Learner,emailRequired:e.userType===c.Y.Staff,passwordPolicy:y.data,validateEmail:function(r){var t={userEmails:[{email:r,userType:e.userType}]};return g(J.N.bulkCheckEmail(t,p.data.customerId))},localErrorMessage:v.b.getErrorMessageOverride(e.userType)}))))}},79447:(e,r,t)=>{t.d(r,{Z:()=>m});var a=t(95685),n=t.n(a),s=t(32735),i=t(46304),o=t(58661),l=t(74512);function u(e,r,t){const a=(e-r)/(t-r)*100;return Math.round(1e3*a)/1e3}function c({min:e,now:r,max:t,label:a,visuallyHidden:s,striped:i,animated:o,className:c,style:d,variant:m,bsPrefix:p,...f},y){return(0,l.jsx)("div",{ref:y,...f,role:"progressbar",className:n()(c,`${p}-bar`,{[`bg-${m}`]:m,[`${p}-bar-animated`]:o,[`${p}-bar-striped`]:o||i}),style:{width:`${u(r,e,t)}%`,...d},"aria-valuenow":r,"aria-valuemin":e,"aria-valuemax":t,children:s?(0,l.jsx)("span",{className:"visually-hidden",children:a}):a})}const d=s.forwardRef(({isChild:e=!1,...r},t)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...r};if(a.bsPrefix=(0,i.vE)(a.bsPrefix,"progress"),e)return c(a,t);const{min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g,className:h,children:k,...E}=a;return(0,l.jsx)("div",{ref:t,...E,className:n()(h,v),children:k?(0,o.UI)(k,e=>(0,s.cloneElement)(e,{isChild:!0})):c({min:u,now:d,max:m,label:p,visuallyHidden:f,striped:y,animated:b,bsPrefix:v,variant:g},t)})});d.displayName="ProgressBar";const m=d}}]);
|
|
2
|
+
//# sourceMappingURL=7815-05c5e8df47-lite.chunk.js.map
|
package/dist/scripts/{7815-554d031e0a-lite.chunk.js.map → 7815-05c5e8df47-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7815-554d031e0a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader.tsx","file:///app/packages/libs/shared/src/utils/FileHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/spreadsheet-heading/EditUserSpreadsheetHeading.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/review-accounts/BulkUserUploadReviewAccountsView.tsx","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.bulkUserUploadLoaderValidation';\n\ninterface BulkUserUploadLoaderProps {\n userType: UserGroup;\n totalCompleted: number;\n totalUsers: number;\n}\n\nexport function BulkUserUploadLoader(props: BulkUserUploadLoaderProps): JSX.Element {\n const percentageLoaded = Math.floor(props.totalCompleted / props.totalUsers * 100);\n\n return (\n <div className='d-flex flex-column align-items-center py-5'>\n <h1 className='h5'>\n <Text namespace={namespace} phrase={props.userType === UserGroup.Learner ? 'headingStudents' : 'headingStaff'} />\n </h1>\n <p>\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{\n totalLoaded: props.totalCompleted ?? 0,\n totalUsers: props.totalUsers ?? 0\n }}\n />\n </p>\n \n <ProgressBar className='w-50' variant='info' now={percentageLoaded} />\n </div>\n );\n}","export const FileHelper = {\n downloadCsvArray(rows: string[][], filename: string): void {\n let csvContent = 'data:text/csv;charset=utf-8,';\n\n csvContent += rows.map(row => row.join(',')).join('\\n');\n\n const anchor = document.createElement('a');\n\n anchor.href = encodeURI(csvContent);\n anchor.download = filename;\n anchor.click();\n },\n // This handles special characters in csv\n safeDownloadCsv(csvContent: string, filename: string): void {\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n\n URL.revokeObjectURL(url);\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { FileHelper } from 'libs/shared/utils/FileHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.studentSpreadsheetHeading',\n [UserGroup.Staff]: 'userManager.staffSpreadsheetHeading',\n [UserGroup.Unknown]: ''\n};\n\ninterface EditUserSpreadsheetHeadingProps {\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n passwordPolicy: SecuritySettingsResponse;\n onToggleValidListings: () => void;\n hideValidListings: boolean;\n\n bulkChecked: boolean;\n bulkIndeterminate: boolean;\n onClickRemove: () => void;\n disableBulkCheckbox: boolean;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheetHeading(props: EditUserSpreadsheetHeadingProps): JSX.Element {\n const { invalidUsers } = useBulkUploadUsers();\n\n function onClickExportErrors(): void {\n const erroredUsers = Object.keys(invalidUsers).map(name => invalidUsers[name]);\n\n const rows = erroredUsers.map(erroredUser => {\n const { user, errorCodes } = erroredUser;\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n props.passwordPolicy,\n user.userType,\n user.masterRole\n );\n\n const errorMessages = UserManagerHelper.getErrorMessages(\n errorCodes,\n minPasswordLength,\n true,\n props.localErrorMessage\n );\n\n const getError = (key: keyof typeof user) => {\n let error: string | null = errorMessages[key] || null;\n\n if (error === null)\n return user[key] ?? '';\n\n if (!user[key])\n return error;\n\n error += `: ${user[key]}`;\n\n return error;\n };\n\n if (props.userType === UserGroup.Learner) {\n return [\n getError('firstName'),\n getError('surname'),\n errorMessages.masterYearGroup ?? user.masterYearGroup?.name,\n getError('email'),\n getError('username'),\n getError('password')\n ];\n }\n\n // Staff\n return [\n getError('firstName'),\n getError('surname'),\n getError('email'),\n getError('username')\n ];\n });\n\n // Add heading rows so it can be uploaded again\n if (props.userType === UserGroup.Learner) {\n rows.unshift([ 'First Name', 'Last Name', 'Year level', 'Email', 'Username', 'Password' ]);\n } else {\n rows.unshift([ 'First Name', 'Last Name', 'Email', 'Username' ]);\n }\n\n FileHelper.downloadCsvArray(rows, LanguageService.getPhrase(namespaces[props.userType], 'errorFileName'));\n }\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n return (\n <>\n <h2 className='h4'><Text namespace={namespaces[props.userType]} phrase='heading' /></h2>\n\n {totalInvalidListings ? (\n <>\n <p className='mb-3 fw-semibold'>\n <Text namespace={namespaces[props.userType]} phrase='reviewInfo' />\n </p>\n\n <div className='pb-3'>\n <IconButton svgName={cvSvgLibrary.Upload} appLink={props.appLinks.userUploadPopup} className='btn btn-outline-dark me-2'>\n <Text namespace={namespaces[props.userType]} phrase='reupload' />\n </IconButton>\n <IconButton svgName={cvSvgLibrary.Download} onClick={onClickExportErrors} className='btn btn-outline-dark'>\n <Text namespace={namespaces[props.userType]} phrase='exportErrors' />\n </IconButton>\n </div>\n </>\n ) : (\n <p className='mb-2'>\n <Text namespace={namespaces[props.userType]} phrase='reviewComplete' />\n </p>\n )}\n\n <div className='d-flex align-items-center flex-wrap'>\n <p className='pe-3 mb-0'><Text namespace={namespaces[props.userType]} phrase='switchLabel' /></p>\n <ToggleSwitch\n onClick={props.onToggleValidListings}\n on={props.hideValidListings}\n />\n </div>\n\n <div className='d-flex align-items-center ms-3 ps-1 mt-3'>\n <IconButton\n svgName={cvSvgLibrary.Close}\n onClick={props.onClickRemove}\n className='btn btn-outline-dark'\n disabled={(!props.bulkIndeterminate && !props.bulkChecked) || props.disableBulkCheckbox}\n >\n <Text namespace={namespaces[props.userType]} phrase='removeFromSpreadsheet' />\n </IconButton>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkUserUploadLoader } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader';\nimport { getOnValidateSuccess, onCloseDeletePopup, onCloseEditPopup, onToggleValidListings } from 'libs/shared/apps/user-manager/components/bulk-upload/BulkUserUploadEvents';\nimport { DeleteUploadedUserPopup } from 'libs/shared/apps/user-manager/components/delete-uploaded-user-popup/DeleteUploadedUserPopup';\nimport { EditUploadedUserPopup } from 'libs/shared/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup';\nimport { UserReviewTable } from 'libs/shared/apps/user-manager/components/user-review-table/UserReviewTable';\nimport { BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers, UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { CurrentUser, YearGroup } from 'libs/shared/interfaces';\n\nimport { useBulkUploadUsers } from '../../../hooks/useBulkUploadUsers';\nimport { SecuritySettingsResponse } from '../../../interfaces/SecuritySettingsResponse';\n\nimport { EditUserSpreadsheetHeading } from './spreadsheet-heading/EditUserSpreadsheetHeading';\n\nconst subNamespaces = {\n [UserGroup.Learner]: 'userManager.editStudentSpreadsheet',\n [UserGroup.Staff]: 'userManager.editStaffSpreadsheet',\n [UserGroup.Unknown]: ''\n};\n\ntype ValidateAllFunction = (\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n) => void;\n\ninterface EditUserSpreadsheetProps {\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n currentUser: CurrentUser;\n validateSpreadsheet: ValidateAllFunction;\n validateUser: (user: EditUserRequest) => Promise<ErroredUsers>;\n validateEmail?: (email: string) => Promise<BulkUserEmailCheckResponse>;\n closePopup: () => void;\n emptyStateImageUrl: string;\n totalValidatedUsers: number;\n setTotalValidatedUsers: (total: number) => void;\n yearGroups: YearGroup[];\n emailRequired: boolean;\n passwordPolicy: SecuritySettingsResponse;\n onClickConfirm: () => void;\n showPasswordField?: boolean;\n formSize?: FormSize;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheet(props: EditUserSpreadsheetProps): JSX.Element {\n const subNamespace = subNamespaces[props.userType];\n\n const [ hideValidListings, setHideValidListings ] = React.useState(true);\n const [ editingUser, setEditingUser ] = React.useState<EditUserRequest>();\n const [ deletingUsers, setDeletingUsers ] = React.useState<string[]>([]);\n\n const { users, invalidUsers, setInvalidUsers, hasValidatedUsers, setExistingUsers } = useBulkUploadUsers();\n\n function getUsersToDisplay(): EditUserRequest[] {\n // We don't want to show any users until validation is completed\n if (!hasValidatedUsers)\n return [];\n \n // If the toggle switch to hide valid listings is on, we filter out all valid listings\n if (hideValidListings)\n return Object.keys(invalidUsers).map(name => invalidUsers[name].user);\n \n // Else, show all users\n return users;\n }\n\n const usersToDisplay = getUsersToDisplay();\n\n const CheckboxHelper = useBulkCheckboxManager(usersToDisplay, { idField: 'lookupId' });\n\n const { setDisableNext, setShowButtons, setOnClickConfirm } = React.useContext(WizardLayoutContext);\n\n const alerts = useAlerts();\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n const onValidateSuccess = getOnValidateSuccess({\n hasValidatedUsers,\n setInvalidUsers,\n userType: props.userType,\n setHideValidListings,\n setExistingUsers\n });\n\n function onValidateError(): void {\n alerts.error(LanguageService.getPhrase(subNamespace, 'error'));\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }\n\n function onClickRemove(): void {\n const selected = CheckboxHelper.getSelected();\n \n setDeletingUsers(selected);\n }\n\n // Runs on page load to lock the nav, and validate the initially uploaded users\n React.useEffect(() => {\n if (hasValidatedUsers)\n return;\n\n props.setTotalValidatedUsers(0);\n\n // Everytime the reducer state changes, we want to validate the new state.\n props.validateSpreadsheet(users, onValidateSuccess, onValidateError);\n }, [hasValidatedUsers]);\n\n React.useEffect(() => {\n setShowButtons(hasValidatedUsers);\n setDisableNext(!!Object.keys(invalidUsers ?? {}).length);\n }, [ invalidUsers, hasValidatedUsers ]);\n\n React.useEffect(() => {\n setOnClickConfirm(() => props.onClickConfirm);\n }, [props.onClickConfirm]);\n\n if (!hasValidatedUsers) {\n return (\n <BulkUserUploadLoader\n userType={props.userType}\n totalCompleted={props.totalValidatedUsers}\n totalUsers={users?.length}\n />\n );\n }\n\n return (\n <>\n <EditUserSpreadsheetHeading\n appLinks={props.appLinks}\n userType={props.userType}\n hideValidListings={hideValidListings}\n passwordPolicy={props.passwordPolicy}\n onToggleValidListings={() => onToggleValidListings({\n setHideValidListings,\n hideValidListings,\n userType: props.userType\n })}\n bulkChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onClickRemove={onClickRemove}\n disableBulkCheckbox={!usersToDisplay.length}\n localErrorMessage={props.localErrorMessage}\n />\n\n <main className='pt-2 pb-3 position-relative'>\n <UserReviewTable\n users={usersToDisplay}\n invalidUsers={invalidUsers}\n userType={props.userType}\n onClickEdit={setEditingUser}\n onClickDelete={setDeletingUsers}\n onClickCreate={props.onClickConfirm}\n appLinks={props.appLinks}\n showInvalidEmptyState={hideValidListings && !totalInvalidListings}\n emptyStateImageUrl={props.emptyStateImageUrl}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n checkboxId='bulk-upload-remove'\n isChecked={id => CheckboxHelper.isChecked(id) && !!usersToDisplay.length}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n localErrorMessage={props.localErrorMessage}\n bulkCheckboxChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onToggleBulkCheckbox={CheckboxHelper.onToggleBulk}\n disableBulkCheckbox={!usersToDisplay.length}\n />\n </main>\n\n {!!editingUser && (\n <EditUploadedUserPopup\n key={editingUser.lookupId}\n user={editingUser}\n setUser={setEditingUser}\n closePopup={() => onCloseEditPopup(setEditingUser, props.closePopup)}\n title={LanguageService.getPhrase(subNamespace, 'editUser')}\n userType={props.userType}\n yearGroups={props.yearGroups}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n currentUser={props.currentUser}\n formSize={props.formSize}\n validateUser={props.validateUser}\n emailRequired={props.emailRequired}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n validateEmail={props.validateEmail}\n appLinks={props.appLinks}\n localErrorMessage={props.localErrorMessage}\n />\n )}\n\n {!!deletingUsers.length && (\n <DeleteUploadedUserPopup\n users={deletingUsers}\n userType={props.userType}\n closePopup={() => onCloseDeletePopup(setDeletingUsers, props.closePopup)}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n />\n )}\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EditUserSpreadsheet } from 'libs/shared/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet';\nimport { BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { BulkUserEmailCheckRequest, BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJob, CurrentUser, PropsWithPopupViewProps, YearGroup } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.bulkStudentUploadReviewAccounts',\n [UserGroup.Staff]: 'userManager.bulkStaffUploadReviewAccounts',\n [UserGroup.Unknown]: ''\n};\n\nexport function BulkUserUploadReviewAccountsView(props: PropsWithPopupViewProps<UserWizardParams>): JSX.Element {\n const { users } = useBulkUploadUsers();\n\n const [ totalValidatedUsers, setTotalValidatedUsers ] = React.useState(0);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && UserManagerRequests.yearGroups(currentUser.data.customerId)\n );\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n const dispatch = useDispatch();\n const fetchAsync = Flight.useGetFetchAsync();\n useSetPageMetadata({ title: LanguageService.getPhrase(namespaces[props.userType], 'pageTitle') });\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n /**\n * Will validate the entire spreadsheet. This can be a very slow operation, so it should\n * only ever be run once when the user first uploads their spreadsheet\n */\n function validateSpreadsheet(\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n ): void {\n BulkUserUploadHelper.validateSpreadsheetRequest({\n users,\n userType: props.userType,\n customerId: currentUser.data.customerId,\n dispatch,\n requestFn: UserManagerRequests.bulkUsersValidate,\n setTotalCompletedUsers: setTotalValidatedUsers,\n canInviteExistingUsers: true,\n onSuccess,\n onError\n });\n }\n\n function validateUser(user: EditUserRequest): Promise<ErroredUsers> {\n const data = UserManagerHelper.formatCreateOrValidateUserRequest(\n [user],\n props.userType,\n currentUser.data.customerId\n );\n\n return fetchAsync(UserManagerRequests.bulkUsersValidate(data, true));\n }\n\n function validateEmail(email: string): Promise<BulkUserEmailCheckResponse> {\n const body: BulkUserEmailCheckRequest = {\n userEmails: [{ email, userType: props.userType }]\n };\n\n return fetchAsync(UserManagerRequests.bulkCheckEmail(body, currentUser.data.customerId));\n }\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function startBulkUpload(): void {\n const jobData = BulkUserUploadHelper.getJobData({\n users, customerId: currentUser.data.customerId, userType: props.userType\n });\n Flight.fetch(dispatch, JobRequests.createJob(jobData, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.userUploadStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='review-accounts'\n canAddExistingUsers\n >\n <div className='px-3'>\n <EditUserSpreadsheet\n onClickConfirm={startBulkUpload}\n userType={props.userType}\n appLinks={appLinks}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n closePopup={props.closePopup}\n validateSpreadsheet={validateSpreadsheet}\n validateUser={validateUser}\n totalValidatedUsers={totalValidatedUsers}\n setTotalValidatedUsers={setTotalValidatedUsers}\n emptyStateImageUrl={ImageUrls.EmptyStates.UserManager.REVIEWS}\n showPasswordField={props.userType === UserGroup.Learner}\n emailRequired={props.userType === UserGroup.Staff}\n passwordPolicy={passwordPolicy.data}\n validateEmail={validateEmail}\n localErrorMessage={BulkUserUploadHelper.getErrorMessageOverride(props.userType)}\n />\n </div>\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","BulkUserUploadLoader","props","percentageLoaded","Math","floor","totalCompleted","totalUsers","className","Text","phrase","userType","UserGroup","options","totalLoaded","ProgressBar","variant","now","FileHelper","downloadCsvArray","rows","filename","csvContent","map","row","join","anchor","document","createElement","href","encodeURI","download","click","safeDownloadCsv","blob","Blob","type","url","URL","createObjectURL","revokeObjectURL","namespaces","EditUserSpreadsheetHeading","invalidUsers","useBulkUploadUsers","totalInvalidListings","BulkUserUploadHelper","IconButton","svgName","appLink","appLinks","userUploadPopup","onClick","Object","keys","name","erroredUser","user","errorCodes","minPasswordLength","UserManagerHelper","passwordPolicy","masterRole","errorMessages","localErrorMessage","getError","key","error","masterYearGroup","unshift","LanguageService","ToggleSwitch","onToggleValidListings","on","hideValidListings","onClickRemove","disabled","bulkIndeterminate","bulkChecked","disableBulkCheckbox","subNamespaces","EditUserSpreadsheet","subNamespace","setHideValidListings","editingUser","setEditingUser","deletingUsers","setDeletingUsers","users","setInvalidUsers","hasValidatedUsers","setExistingUsers","usersToDisplay","CheckboxHelper","useBulkCheckboxManager","idField","WizardLayoutContext","setDisableNext","setShowButtons","setOnClickConfirm","alerts","onValidateSuccess","onValidateError","userManager","replace","setTotalValidatedUsers","validateSpreadsheet","length","onClickConfirm","hasSomeSelections","selected","getSelected","UserReviewTable","onClickEdit","onClickDelete","onClickCreate","showInvalidEmptyState","emptyStateImageUrl","showPasswordField","checkboxId","isChecked","id","onToggleCheckbox","onToggleItem","bulkCheckboxChecked","onToggleBulkCheckbox","onToggleBulk","EditUploadedUserPopup","lookupId","setUser","closePopup","title","yearGroups","analyticsOptions","currentUser","formSize","validateUser","emailRequired","validateEmail","DeleteUploadedUserPopup","totalValidatedUsers","BulkUserUploadReviewAccountsView","UserRequests","data","UserManagerRequests","customerId","SecuritySettingsRequests","dispatch","fetchAsync","useSetPageMetadata","onCreateJobError","BulkUserActionsHelper","onCreateJob","job","userUploadStatus","polling","params","jobId","UserManagerClientContext","value","UserManagerClient","BulkUserUploadWizardLayout","currentStep","canAddExistingUsers","jobData","JobRequests","onSuccess","onError","requestFn","setTotalCompletedUsers","canInviteExistingUsers","ImageUrls","email","body","userEmails","getPercentage","min","max","percentage","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","children","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/7815-05c5e8df47-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader.tsx","file:///app/packages/libs/shared/src/utils/FileHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/spreadsheet-heading/EditUserSpreadsheetHeading.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/review-accounts/BulkUserUploadReviewAccountsView.tsx","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.bulkUserUploadLoaderValidation';\n\ninterface BulkUserUploadLoaderProps {\n userType: UserGroup;\n totalCompleted: number;\n totalUsers: number;\n}\n\nexport function BulkUserUploadLoader(props: BulkUserUploadLoaderProps): JSX.Element {\n const percentageLoaded = Math.floor(props.totalCompleted / props.totalUsers * 100);\n\n return (\n <div className='d-flex flex-column align-items-center py-5'>\n <h1 className='h5'>\n <Text namespace={namespace} phrase={props.userType === UserGroup.Learner ? 'headingStudents' : 'headingStaff'} />\n </h1>\n <p>\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{\n totalLoaded: props.totalCompleted ?? 0,\n totalUsers: props.totalUsers ?? 0\n }}\n />\n </p>\n \n <ProgressBar className='w-50' variant='info' now={percentageLoaded} />\n </div>\n );\n}","export const FileHelper = {\n downloadCsvArray(rows: string[][], filename: string): void {\n let csvContent = 'data:text/csv;charset=utf-8,';\n\n csvContent += rows.map(row => row.join(',')).join('\\n');\n\n const anchor = document.createElement('a');\n\n anchor.href = encodeURI(csvContent);\n anchor.download = filename;\n anchor.click();\n },\n // This handles special characters in csv\n safeDownloadCsv(csvContent: string, filename: string): void {\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = filename;\n anchor.click();\n\n URL.revokeObjectURL(url);\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { FileHelper } from 'libs/shared/utils/FileHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.studentSpreadsheetHeading',\n [UserGroup.Staff]: 'userManager.staffSpreadsheetHeading',\n [UserGroup.Unknown]: ''\n};\n\ninterface EditUserSpreadsheetHeadingProps {\n appLinks: UserManagerAppLinks;\n userType: UserGroup;\n passwordPolicy: SecuritySettingsResponse;\n onToggleValidListings: () => void;\n hideValidListings: boolean;\n\n bulkChecked: boolean;\n bulkIndeterminate: boolean;\n onClickRemove: () => void;\n disableBulkCheckbox: boolean;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheetHeading(props: EditUserSpreadsheetHeadingProps): JSX.Element {\n const { invalidUsers } = useBulkUploadUsers();\n\n function onClickExportErrors(): void {\n const erroredUsers = Object.keys(invalidUsers).map(name => invalidUsers[name]);\n\n const rows = erroredUsers.map(erroredUser => {\n const { user, errorCodes } = erroredUser;\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n props.passwordPolicy,\n user.userType,\n user.masterRole\n );\n\n const errorMessages = UserManagerHelper.getErrorMessages(\n errorCodes,\n minPasswordLength,\n true,\n props.localErrorMessage\n );\n\n const getError = (key: keyof typeof user) => {\n let error: string | null = errorMessages[key] || null;\n\n if (error === null)\n return user[key] ?? '';\n\n if (!user[key])\n return error;\n\n error += `: ${user[key]}`;\n\n return error;\n };\n\n if (props.userType === UserGroup.Learner) {\n return [\n getError('firstName'),\n getError('surname'),\n errorMessages.masterYearGroup ?? user.masterYearGroup?.name,\n getError('email'),\n getError('username'),\n getError('password')\n ];\n }\n\n // Staff\n return [\n getError('firstName'),\n getError('surname'),\n getError('email'),\n getError('username')\n ];\n });\n\n // Add heading rows so it can be uploaded again\n if (props.userType === UserGroup.Learner) {\n rows.unshift([ 'First Name', 'Last Name', 'Year level', 'Email', 'Username', 'Password' ]);\n } else {\n rows.unshift([ 'First Name', 'Last Name', 'Email', 'Username' ]);\n }\n\n FileHelper.downloadCsvArray(rows, LanguageService.getPhrase(namespaces[props.userType], 'errorFileName'));\n }\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n return (\n <>\n <h2 className='h4'><Text namespace={namespaces[props.userType]} phrase='heading' /></h2>\n\n {totalInvalidListings ? (\n <>\n <p className='mb-3 fw-semibold'>\n <Text namespace={namespaces[props.userType]} phrase='reviewInfo' />\n </p>\n\n <div className='pb-3'>\n <IconButton svgName={cvSvgLibrary.Upload} appLink={props.appLinks.userUploadPopup} className='btn btn-outline-dark me-2'>\n <Text namespace={namespaces[props.userType]} phrase='reupload' />\n </IconButton>\n <IconButton svgName={cvSvgLibrary.Download} onClick={onClickExportErrors} className='btn btn-outline-dark'>\n <Text namespace={namespaces[props.userType]} phrase='exportErrors' />\n </IconButton>\n </div>\n </>\n ) : (\n <p className='mb-2'>\n <Text namespace={namespaces[props.userType]} phrase='reviewComplete' />\n </p>\n )}\n\n <div className='d-flex align-items-center flex-wrap'>\n <p className='pe-3 mb-0'><Text namespace={namespaces[props.userType]} phrase='switchLabel' /></p>\n <ToggleSwitch\n onClick={props.onToggleValidListings}\n on={props.hideValidListings}\n />\n </div>\n\n <div className='d-flex align-items-center ms-3 ps-1 mt-3'>\n <IconButton\n svgName={cvSvgLibrary.Close}\n onClick={props.onClickRemove}\n className='btn btn-outline-dark'\n disabled={(!props.bulkIndeterminate && !props.bulkChecked) || props.disableBulkCheckbox}\n >\n <Text namespace={namespaces[props.userType]} phrase='removeFromSpreadsheet' />\n </IconButton>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkUserUploadLoader } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-user-upload-loader/BulkUserUploadLoader';\nimport { getOnValidateSuccess, onCloseDeletePopup, onCloseEditPopup, onToggleValidListings } from 'libs/shared/apps/user-manager/components/bulk-upload/BulkUserUploadEvents';\nimport { DeleteUploadedUserPopup } from 'libs/shared/apps/user-manager/components/delete-uploaded-user-popup/DeleteUploadedUserPopup';\nimport { EditUploadedUserPopup } from 'libs/shared/apps/user-manager/components/edit-uploaded-user-popup/EditUploadedUserPopup';\nimport { UserReviewTable } from 'libs/shared/apps/user-manager/components/user-review-table/UserReviewTable';\nimport { BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers, UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { CurrentUser, YearGroup } from 'libs/shared/interfaces';\n\nimport { useBulkUploadUsers } from '../../../hooks/useBulkUploadUsers';\nimport { SecuritySettingsResponse } from '../../../interfaces/SecuritySettingsResponse';\n\nimport { EditUserSpreadsheetHeading } from './spreadsheet-heading/EditUserSpreadsheetHeading';\n\nconst subNamespaces = {\n [UserGroup.Learner]: 'userManager.editStudentSpreadsheet',\n [UserGroup.Staff]: 'userManager.editStaffSpreadsheet',\n [UserGroup.Unknown]: ''\n};\n\ntype ValidateAllFunction = (\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n) => void;\n\ninterface EditUserSpreadsheetProps {\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n currentUser: CurrentUser;\n validateSpreadsheet: ValidateAllFunction;\n validateUser: (user: EditUserRequest) => Promise<ErroredUsers>;\n validateEmail?: (email: string) => Promise<BulkUserEmailCheckResponse>;\n closePopup: () => void;\n emptyStateImageUrl: string;\n totalValidatedUsers: number;\n setTotalValidatedUsers: (total: number) => void;\n yearGroups: YearGroup[];\n emailRequired: boolean;\n passwordPolicy: SecuritySettingsResponse;\n onClickConfirm: () => void;\n showPasswordField?: boolean;\n formSize?: FormSize;\n localErrorMessage?: HashObject;\n}\n\nexport function EditUserSpreadsheet(props: EditUserSpreadsheetProps): JSX.Element {\n const subNamespace = subNamespaces[props.userType];\n\n const [ hideValidListings, setHideValidListings ] = React.useState(true);\n const [ editingUser, setEditingUser ] = React.useState<EditUserRequest>();\n const [ deletingUsers, setDeletingUsers ] = React.useState<string[]>([]);\n\n const { users, invalidUsers, setInvalidUsers, hasValidatedUsers, setExistingUsers } = useBulkUploadUsers();\n\n function getUsersToDisplay(): EditUserRequest[] {\n // We don't want to show any users until validation is completed\n if (!hasValidatedUsers)\n return [];\n \n // If the toggle switch to hide valid listings is on, we filter out all valid listings\n if (hideValidListings)\n return Object.keys(invalidUsers).map(name => invalidUsers[name].user);\n \n // Else, show all users\n return users;\n }\n\n const usersToDisplay = getUsersToDisplay();\n\n const CheckboxHelper = useBulkCheckboxManager(usersToDisplay, { idField: 'lookupId' });\n\n const { setDisableNext, setShowButtons, setOnClickConfirm } = React.useContext(WizardLayoutContext);\n\n const alerts = useAlerts();\n\n const totalInvalidListings = BulkUserUploadHelper.getTotalInvalidListings(invalidUsers);\n\n const onValidateSuccess = getOnValidateSuccess({\n hasValidatedUsers,\n setInvalidUsers,\n userType: props.userType,\n setHideValidListings,\n setExistingUsers\n });\n\n function onValidateError(): void {\n alerts.error(LanguageService.getPhrase(subNamespace, 'error'));\n Core.AppLinkHelper.trigger(props.appLinks.userManager, { replace: true });\n }\n\n function onClickRemove(): void {\n const selected = CheckboxHelper.getSelected();\n \n setDeletingUsers(selected);\n }\n\n // Runs on page load to lock the nav, and validate the initially uploaded users\n React.useEffect(() => {\n if (hasValidatedUsers)\n return;\n\n props.setTotalValidatedUsers(0);\n\n // Everytime the reducer state changes, we want to validate the new state.\n props.validateSpreadsheet(users, onValidateSuccess, onValidateError);\n }, [hasValidatedUsers]);\n\n React.useEffect(() => {\n setShowButtons(hasValidatedUsers);\n setDisableNext(!!Object.keys(invalidUsers ?? {}).length);\n }, [ invalidUsers, hasValidatedUsers ]);\n\n React.useEffect(() => {\n setOnClickConfirm(() => props.onClickConfirm);\n }, [props.onClickConfirm]);\n\n if (!hasValidatedUsers) {\n return (\n <BulkUserUploadLoader\n userType={props.userType}\n totalCompleted={props.totalValidatedUsers}\n totalUsers={users?.length}\n />\n );\n }\n\n return (\n <>\n <EditUserSpreadsheetHeading\n appLinks={props.appLinks}\n userType={props.userType}\n hideValidListings={hideValidListings}\n passwordPolicy={props.passwordPolicy}\n onToggleValidListings={() => onToggleValidListings({\n setHideValidListings,\n hideValidListings,\n userType: props.userType\n })}\n bulkChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onClickRemove={onClickRemove}\n disableBulkCheckbox={!usersToDisplay.length}\n localErrorMessage={props.localErrorMessage}\n />\n\n <main className='pt-2 pb-3 position-relative'>\n <UserReviewTable\n users={usersToDisplay}\n invalidUsers={invalidUsers}\n userType={props.userType}\n onClickEdit={setEditingUser}\n onClickDelete={setDeletingUsers}\n onClickCreate={props.onClickConfirm}\n appLinks={props.appLinks}\n showInvalidEmptyState={hideValidListings && !totalInvalidListings}\n emptyStateImageUrl={props.emptyStateImageUrl}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n checkboxId='bulk-upload-remove'\n isChecked={id => CheckboxHelper.isChecked(id) && !!usersToDisplay.length}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n localErrorMessage={props.localErrorMessage}\n bulkCheckboxChecked={CheckboxHelper.bulkChecked}\n bulkIndeterminate={CheckboxHelper.hasSomeSelections()}\n onToggleBulkCheckbox={CheckboxHelper.onToggleBulk}\n disableBulkCheckbox={!usersToDisplay.length}\n />\n </main>\n\n {!!editingUser && (\n <EditUploadedUserPopup\n key={editingUser.lookupId}\n user={editingUser}\n setUser={setEditingUser}\n closePopup={() => onCloseEditPopup(setEditingUser, props.closePopup)}\n title={LanguageService.getPhrase(subNamespace, 'editUser')}\n userType={props.userType}\n yearGroups={props.yearGroups}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n currentUser={props.currentUser}\n formSize={props.formSize}\n validateUser={props.validateUser}\n emailRequired={props.emailRequired}\n showPasswordField={props.showPasswordField}\n passwordPolicy={props.passwordPolicy}\n validateEmail={props.validateEmail}\n appLinks={props.appLinks}\n localErrorMessage={props.localErrorMessage}\n />\n )}\n\n {!!deletingUsers.length && (\n <DeleteUploadedUserPopup\n users={deletingUsers}\n userType={props.userType}\n closePopup={() => onCloseDeletePopup(setDeletingUsers, props.closePopup)}\n analyticsOptions={BulkUserUploadHelper.getAnalyticsOptions(props.userType)}\n />\n )}\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { EditUserSpreadsheet } from 'libs/shared/apps/user-manager/components/bulk-upload/edit-user-spreadsheet/EditUserSpreadsheet';\nimport { BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { BulkUserEmailCheckRequest, BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers } from 'libs/shared/apps/user-manager/interfaces';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJob, CurrentUser, PropsWithPopupViewProps, YearGroup } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.bulkStudentUploadReviewAccounts',\n [UserGroup.Staff]: 'userManager.bulkStaffUploadReviewAccounts',\n [UserGroup.Unknown]: ''\n};\n\nexport function BulkUserUploadReviewAccountsView(props: PropsWithPopupViewProps<UserWizardParams>): JSX.Element {\n const { users } = useBulkUploadUsers();\n\n const [ totalValidatedUsers, setTotalValidatedUsers ] = React.useState(0);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data && UserManagerRequests.yearGroups(currentUser.data.customerId)\n );\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n const dispatch = useDispatch();\n const fetchAsync = Flight.useGetFetchAsync();\n useSetPageMetadata({ title: LanguageService.getPhrase(namespaces[props.userType], 'pageTitle') });\n\n const appLinks = getUserManagerAppLinks(props.userType);\n\n /**\n * Will validate the entire spreadsheet. This can be a very slow operation, so it should\n * only ever be run once when the user first uploads their spreadsheet\n */\n function validateSpreadsheet(\n users: EditUserRequest[],\n onSuccess: (errors: ErroredUsers, users: EditUserRequest[]) => void,\n onError: () => void\n ): void {\n BulkUserUploadHelper.validateSpreadsheetRequest({\n users,\n userType: props.userType,\n customerId: currentUser.data.customerId,\n dispatch,\n requestFn: UserManagerRequests.bulkUsersValidate,\n setTotalCompletedUsers: setTotalValidatedUsers,\n canInviteExistingUsers: true,\n onSuccess,\n onError\n });\n }\n\n function validateUser(user: EditUserRequest): Promise<ErroredUsers> {\n const data = UserManagerHelper.formatCreateOrValidateUserRequest(\n [user],\n props.userType,\n currentUser.data.customerId\n );\n\n return fetchAsync(UserManagerRequests.bulkUsersValidate(data, true));\n }\n\n function validateEmail(email: string): Promise<BulkUserEmailCheckResponse> {\n const body: BulkUserEmailCheckRequest = {\n userEmails: [{ email, userType: props.userType }]\n };\n\n return fetchAsync(UserManagerRequests.bulkCheckEmail(body, currentUser.data.customerId));\n }\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n function startBulkUpload(): void {\n const jobData = BulkUserUploadHelper.getJobData({\n users, customerId: currentUser.data.customerId, userType: props.userType\n });\n Flight.fetch(dispatch, JobRequests.createJob(jobData, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.userUploadStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='review-accounts'\n canAddExistingUsers\n >\n <div className='px-3'>\n <EditUserSpreadsheet\n onClickConfirm={startBulkUpload}\n userType={props.userType}\n appLinks={appLinks}\n currentUser={currentUser.data}\n yearGroups={yearGroups.data}\n closePopup={props.closePopup}\n validateSpreadsheet={validateSpreadsheet}\n validateUser={validateUser}\n totalValidatedUsers={totalValidatedUsers}\n setTotalValidatedUsers={setTotalValidatedUsers}\n emptyStateImageUrl={ImageUrls.EmptyStates.UserManager.REVIEWS}\n showPasswordField={props.userType === UserGroup.Learner}\n emailRequired={props.userType === UserGroup.Staff}\n passwordPolicy={passwordPolicy.data}\n validateEmail={validateEmail}\n localErrorMessage={BulkUserUploadHelper.getErrorMessageOverride(props.userType)}\n />\n </div>\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["namespace","BulkUserUploadLoader","props","percentageLoaded","Math","floor","totalCompleted","totalUsers","className","Text","phrase","userType","UserGroup","options","totalLoaded","ProgressBar","variant","now","FileHelper","downloadCsvArray","rows","filename","csvContent","map","row","join","anchor","document","createElement","href","encodeURI","download","click","safeDownloadCsv","blob","Blob","type","url","URL","createObjectURL","revokeObjectURL","namespaces","EditUserSpreadsheetHeading","invalidUsers","useBulkUploadUsers","totalInvalidListings","BulkUserUploadHelper","IconButton","svgName","appLink","appLinks","userUploadPopup","onClick","Object","keys","name","erroredUser","user","errorCodes","minPasswordLength","UserManagerHelper","passwordPolicy","masterRole","errorMessages","localErrorMessage","getError","key","error","masterYearGroup","unshift","LanguageService","ToggleSwitch","onToggleValidListings","on","hideValidListings","onClickRemove","disabled","bulkIndeterminate","bulkChecked","disableBulkCheckbox","subNamespaces","EditUserSpreadsheet","subNamespace","setHideValidListings","editingUser","setEditingUser","deletingUsers","setDeletingUsers","users","setInvalidUsers","hasValidatedUsers","setExistingUsers","usersToDisplay","CheckboxHelper","useBulkCheckboxManager","idField","WizardLayoutContext","setDisableNext","setShowButtons","setOnClickConfirm","alerts","onValidateSuccess","onValidateError","userManager","replace","setTotalValidatedUsers","validateSpreadsheet","length","onClickConfirm","hasSomeSelections","selected","getSelected","UserReviewTable","onClickEdit","onClickDelete","onClickCreate","showInvalidEmptyState","emptyStateImageUrl","showPasswordField","checkboxId","isChecked","id","onToggleCheckbox","onToggleItem","bulkCheckboxChecked","onToggleBulkCheckbox","onToggleBulk","EditUploadedUserPopup","lookupId","setUser","closePopup","title","yearGroups","analyticsOptions","currentUser","formSize","validateUser","emailRequired","validateEmail","DeleteUploadedUserPopup","totalValidatedUsers","BulkUserUploadReviewAccountsView","UserRequests","data","UserManagerRequests","customerId","SecuritySettingsRequests","dispatch","fetchAsync","useSetPageMetadata","onCreateJobError","BulkUserActionsHelper","onCreateJob","job","userUploadStatus","polling","params","jobId","UserManagerClientContext","value","UserManagerClient","BulkUserUploadWizardLayout","currentStep","canAddExistingUsers","jobData","JobRequests","onSuccess","onError","requestFn","setTotalCompletedUsers","canInviteExistingUsers","ImageUrls","email","body","userEmails","getPercentage","min","max","percentage","round","renderProgressBar","label","visuallyHidden","striped","animated","style","bsPrefix","ref","role","width","children","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 7835-
|
|
2
|
-
(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7835],{99882:(e,t,r)=>{"use strict";r.d(t,{U:()=>m});var n,o=r(32735),a=r(59087),i=r(23481);!function(e){e.ShowDetails="show-details",e.EmailedUsers="emailed-students",e.EmailedAdmin="emailed-admin"}(n||(n={}));var c=r(83345),s=r(76881),l=r(69883),u="userManager.userCreatedSuccess";function p(e){return o.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},o.createElement("img",{src:e.emailSentImageUrl,alt:"",role:"presentation",className:"w-100"}))}function f(e){return o.createElement(o.Fragment,null,o.createElement("p",null,o.createElement(c.x,{phrase:"userDetailsInfo"})),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"username"})),o.createElement("p",null,e.creationResponse.username),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"password"})),o.createElement("p",null,e.creationResponse.password))}function d(e){return o.createElement(o.Fragment,null,o.createElement(p,Object.assign({},e)),o.createElement("p",null,o.createElement(c.x,{phrase:"emailedUsersInfo",options:{smartCount:e.creationResponse.isBulk?2:1}})))}function m(e){var t=(0,l.Z)(),r=o.useMemo(function(){return e.userType===s.Y.Staff||e.creationResponse.isBulk||e.creationResponse.hasEmail?n.EmailedUsers:n.ShowDetails},[e.creationResponse]);if(!r)return o.createElement(o.Fragment,null);var p=function(){switch(r){case n.ShowDetails:return o.createElement(f,Object.assign({},e));case n.EmailedUsers:return o.createElement(d,Object.assign({},e))}}();return o.createElement(c.D.Provider,{value:u},p,o.createElement("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3"},r===n.ShowDetails?o.createElement(a.CopyToClipboard,{onCopy:function(){t.success(i.T.getPhrase(u,"copied")),e.onClose()},text:"".concat(e.creationResponse.username," - ").concat(e.creationResponse.password)},o.createElement("button",{className:"btn btn-dark"},o.createElement(c.x,{phrase:"copy"}))):o.createElement("button",{onClick:e.onClose,className:"btn btn-dark"},o.createElement(c.x,{phrase:"okay"}))))}},99705:(e,t,r)=>{"use strict";var n,o;r.d(t,{b:()=>o}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705",e.MarcFormatDifferences="48276917260441",e.ExportLibraries="17684275853465"}(o||(o={}))},59134:(e,t,r)=>{"use strict";r.r(t),r.d(t,{EditUserView:()=>F});var n=r(32735),o=r(70680),a=r(23481),i=r(20354),c=r(49985),s=r(65858),l=r(58859),u=r(99882),p=r(26055),f=r(43820),d=r(39739),m=r(9111),y=r(40424),b=r(99705),v=r(76881),h=r(86613),g=r(39151),E=r(1666),w=r(31949),O=r(69883),C=r(12778),S=r(64818),P=r(99742),T=r(14070),j=r(97291),k=r(26234),x=r(47288),A=r(29241);function R(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var s=n&&n.prototype instanceof c?n:c,l=Object.create(s.prototype);return N(l,"_invoke",function(r,n,o){var a,c,s,l=0,u=o||[],p=!1,f={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return a=t,c=0,s=e,f.n=r,i}};function d(r,n){for(c=r,s=n,t=0;!p&&l&&!o&&t<u.length;t++){var o,a=u[t],d=f.p,m=a[2];r>3?(o=m===n)&&(s=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=e):a[0]<=d&&((o=r<2&&d<a[1])?(c=0,f.v=n,f.n=a[1]):d<m&&(o=r<3||a[0]>n||n>m)&&(a[4]=r,a[5]=n,f.n=m,c=0))}if(o||r>1)return i;throw p=!0,n}return function(o,u,m){if(l>1)throw TypeError("Generator is already running");for(p&&1===u&&d(u,m),c=u,s=m;(t=c<2?e:s)||!p;){a||(c?c<3?(c>1&&(f.n=-1),d(c,s)):f.n=s:f.v=s);try{if(l=2,a){if(c||(o="next"),t=a[o]){if(!(t=t.call(a,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=a.return)&&t.call(a),c<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=e}else if((t=(p=f.n<0)?s:r.call(n,f))!==i)break}catch(t){a=e,c=1,s=t}finally{l=1}}return{value:t,done:p}}}(r,o,a),!0),l}var i={};function c(){}function s(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(N(t={},n,function(){return this}),t),p=l.prototype=c.prototype=Object.create(u);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,N(e,o,"GeneratorFunction")),e.prototype=Object.create(p),e}return s.prototype=l,N(p,"constructor",l),N(l,"constructor",s),s.displayName="GeneratorFunction",N(l,o,"GeneratorFunction"),N(p),N(p,o,"Generator"),N(p,n,function(){return this}),N(p,"toString",function(){return"[object Generator]"}),(R=function(){return{w:a,m:f}})()}function N(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}N=function(e,t,r,n){if(t)o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r;else{var a=function(t,r){N(e,t,function(e){return this._invoke(t,r,e)})};a("next",0),a("throw",1),a("return",2)}},N(e,t,r,n)}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var I=function(e,t,r,n){return new(r||(r=Promise))(function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function c(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,c)}s((n=n.apply(e,t||[])).next())})};function D(e,t){var r,n,o;return{userId:e.id,firstName:e.name,surname:e.surname,userType:e.userType,customerId:t.customerId,email:e.email||"",masterYearGroup:null!==(r=e.masterYearGroup)&&void 0!==r?r:null,username:e.username,masterRole:e.userProfile.role,status:e.status,displayName:null!==(o=null===(n=e.metadata)||void 0===n?void 0:n.displayName)&&void 0!==o?o:""}}var _=a.T.encloseNamespace("userManager.editUser");function F(e){var t,r,a=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,o=e}finally{try{if(!s&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?U(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),N=a[0],F=a[1],G=(0,O.Z)(),M=(0,o.I0)(),L=i.a.useGetFetchAsync(),B=i.a.useBasicFetch(x.N.getUser(e.id)),Y=i.a.useBasicFetch(w.N.currentUser()),V=i.a.useBasicFetch(Y.data&&x.N.yearGroups(Y.data.customerId)),q=i.a.useBasicFetch(Y.data&&k.F.getCustomerSecuritySettings(Y.data.customerId)),W=i.a.useBasicFetch(g.L.config()),Z=i.a.useBasicFetch(E.h.customer(Y.data.customerId,null,null,!0)),H=i.a.useBasicFetch(x.N.authenticationMethods([e.id]));function z(t){var r=d.P.formatCreateOrValidateUserRequest([t],e.userType,Y.data.customerId);return L(x.N.bulkValidate(r))}function X(t){i.a.fetch(M,x.N.resendActivationEmail(t.id,function(){c.k.logUserAction(t,Object.assign(Object.assign({},e.analyticsOptions),{actionType:s.Vw.SendEmail,descriptor:s.on.ActivateUser})),G.success(_("success")),F(!0)},function(){G.error(_("error")),e.closePopup()}))}var $,J,K,Q=!!B.data&&!!Y.data&&!!V.data&&!!q.data&&H.hasCompleted&&!!W.data;return n.createElement(p.A.Provider,{value:f.a.Primary},n.createElement(m.G,{closePopup:e.closePopup,title:_("popupTitle"),showLoadingSpinner:!Q},Q?N?n.createElement(u.U,{creationResponse:{isBulk:!1},userType:e.userType,onClose:e.closePopup,emailSentImageUrl:P.W.EMAIL_SENT}):n.createElement(n.Fragment,null,S.l.hasSso(B.data)&&n.createElement(A.Z,{userType:e.userType,isNew:!1,helpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),ssoMappingsApplink:{application:j.O.SETTINGS,action:T.e.Settings.SSO_YEAR_GROUP_MAPPINGS}}),n.createElement(l.H,{user:B.data,userType:e.userType,yearGroups:e.userType===v.Y.Learner?V.data:null,initialValues:D(B.data,Y.data),initialErrors:d.P.getInitialErrorsForInvalidYearGroups(B.data.masterYearGroup),onSubmit:function(t,r){var n,o;return I(this,void 0,void 0,R().m(function a(){var s,l;return R().w(function(a){for(;;)switch(a.n){case 0:return a.n=1,z(t);case 1:if(s=a.v,d.P.handleAsyncErrors(s,t,B.data,r)){a.n=2;break}return a.a(2);case 2:l=d.P.formatEditUserRequest(t),i.a.fetch(M,x.N.updateUser(l,Y.data.id,function(t){c.k.logUserAction(t,e.analyticsOptions),B.data.email!==t.email&&t.status===y.w.Inactive?X(t):(G.success(_("success")),e.closePopup())},function(){G.error(_("error")),e.closePopup()},function(){},0===(null===(n=B.data.masterYearGroup)||void 0===n?void 0:n.value)&&0!==(null===(o=t.masterYearGroup)||void 0===o?void 0:o.value)));case 3:return a.a(2)}},a)}))},onClickCancel:e.closePopup,currentUser:Y.data,emailRequired:e.userType===v.Y.Staff,showDisplayNameField:e.userType===v.Y.Staff,passwordPolicy:q.data,editSsoUserHelpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),validateEmail:function(t){var r={userEmails:[{email:t,userType:e.userType}]};return L(x.N.bulkCheckEmail(r,Y.data.customerId))},hasOrg:!!(null===($=Z.data)||void 0===$?void 0:$.organisation),countryCode:null===(J=Y.data)||void 0===J?void 0:J.countryCode,canEditSuperAdmin:(null===(K=Y.data)||void 0===K?void 0:K.role)===h.i.SuperAdmin})):n.createElement(n.Fragment,null)))}},29241:(e,t,r)=>{"use strict";r.d(t,{Z:()=>s});var n=r(32735),o=r(14604),a=r(15611),i=r(83345),c="userManager.editUser";function s(e){return n.createElement(o.W,{className:"py-2"},n.createElement(i.x,{namespace:c,phrase:e.isNew?"newSsoUserWarning":"editSsoUserWarning"}),!e.isNew&&n.createElement(a.F,{appLink:e.ssoMappingsApplink,className:"info-link d-block my-1",openInNewTab:!0},n.createElement(i.x,{namespace:c,phrase:"ssoMapping"})),n.createElement("a",{className:"info-link d-block",href:e.helpArticle,target:"_blank"},n.createElement(i.x,{namespace:c,phrase:"ssoArticleLink"})))}},91969:(e,t,r)=>{"use strict";var n=r(47033),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,a,i,c,s,l,u=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),c=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=o[t.format]||o.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(l),c.selectNodeContents(l),s.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(c):s.removeAllRanges()),l&&document.body.removeChild(l),i()}return u}},44818:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=c(r(32735)),a=c(r(91969)),i=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach(function(t){m(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var y=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(b,e);var t,r,c,s,y=(c=b,s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}(),function(){var e,t=d(c);if(s){var r=d(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}(this,e)});function b(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,b);for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return m(f(e=y.call.apply(y,[this].concat(r))),"onClick",function(t){var r=e.props,n=r.text,i=r.onCopy,c=r.children,s=r.options,l=o.default.Children.only(c),u=(0,a.default)(n,s);i&&i(n,u),l&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t)}),e}return t=b,(r=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,i),n=o.default.Children.only(t);return o.default.cloneElement(n,l(l({},r),{},{onClick:this.onClick}))}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),b}(o.default.PureComponent);t.CopyToClipboard=y,m(y,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,r)=>{"use strict";var n=r(44818).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n<e.rangeCount;n++)r.push(e.getRangeAt(n));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||r.forEach(function(t){e.addRange(t)}),t&&t.focus()}}}}]);
|
|
3
|
-
//# sourceMappingURL=7835-
|
|
1
|
+
/*! For license information please see 7835-8d490274c8-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7835],{99882:(e,t,r)=>{"use strict";r.d(t,{U:()=>m});var n,o=r(32735),a=r(59087),i=r(23481);!function(e){e.ShowDetails="show-details",e.EmailedUsers="emailed-students",e.EmailedAdmin="emailed-admin"}(n||(n={}));var c=r(83345),s=r(76881),l=r(69883),u="userManager.userCreatedSuccess";function p(e){return o.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},o.createElement("img",{src:e.emailSentImageUrl,alt:"",role:"presentation",className:"w-100"}))}function f(e){return o.createElement(o.Fragment,null,o.createElement("p",null,o.createElement(c.x,{phrase:"userDetailsInfo"})),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"username"})),o.createElement("p",null,e.creationResponse.username),o.createElement("p",{className:"mb-0 fw-semibold"},o.createElement(c.x,{phrase:"password"})),o.createElement("p",null,e.creationResponse.password))}function d(e){return o.createElement(o.Fragment,null,o.createElement(p,Object.assign({},e)),o.createElement("p",null,o.createElement(c.x,{phrase:"emailedUsersInfo",options:{smartCount:e.creationResponse.isBulk?2:1}})))}function m(e){var t=(0,l.Z)(),r=o.useMemo(function(){return e.userType===s.Y.Staff||e.creationResponse.isBulk||e.creationResponse.hasEmail?n.EmailedUsers:n.ShowDetails},[e.creationResponse]);if(!r)return o.createElement(o.Fragment,null);var p=function(){switch(r){case n.ShowDetails:return o.createElement(f,Object.assign({},e));case n.EmailedUsers:return o.createElement(d,Object.assign({},e))}}();return o.createElement(c.D.Provider,{value:u},p,o.createElement("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3"},r===n.ShowDetails?o.createElement(a.CopyToClipboard,{onCopy:function(){t.success(i.T.getPhrase(u,"copied")),e.onClose()},text:"".concat(e.creationResponse.username," - ").concat(e.creationResponse.password)},o.createElement("button",{className:"btn btn-dark"},o.createElement(c.x,{phrase:"copy"}))):o.createElement("button",{onClick:e.onClose,className:"btn btn-dark"},o.createElement(c.x,{phrase:"okay"}))))}},99705:(e,t,r)=>{"use strict";var n,o;r.d(t,{b:()=>o}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705",e.MarcFormatDifferences="48276917260441",e.ExportLibraries="17684275853465"}(o||(o={}))},59134:(e,t,r)=>{"use strict";r.r(t),r.d(t,{EditUserView:()=>F});var n=r(32735),o=r(70680),a=r(23481),i=r(20354),c=r(49985),s=r(65858),l=r(58859),u=r(99882),p=r(26055),f=r(43820),d=r(39739),m=r(9111),y=r(40424),b=r(99705),v=r(76881),h=r(86613),g=r(39151),E=r(1666),w=r(31949),O=r(69883),C=r(12778),S=r(64818),P=r(99742),T=r(14070),j=r(97291),k=r(80658),x=r(47288),A=r(29241);function R(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function a(r,n,o,a){var s=n&&n.prototype instanceof c?n:c,l=Object.create(s.prototype);return N(l,"_invoke",function(r,n,o){var a,c,s,l=0,u=o||[],p=!1,f={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return a=t,c=0,s=e,f.n=r,i}};function d(r,n){for(c=r,s=n,t=0;!p&&l&&!o&&t<u.length;t++){var o,a=u[t],d=f.p,m=a[2];r>3?(o=m===n)&&(s=a[(c=a[4])?5:(c=3,3)],a[4]=a[5]=e):a[0]<=d&&((o=r<2&&d<a[1])?(c=0,f.v=n,f.n=a[1]):d<m&&(o=r<3||a[0]>n||n>m)&&(a[4]=r,a[5]=n,f.n=m,c=0))}if(o||r>1)return i;throw p=!0,n}return function(o,u,m){if(l>1)throw TypeError("Generator is already running");for(p&&1===u&&d(u,m),c=u,s=m;(t=c<2?e:s)||!p;){a||(c?c<3?(c>1&&(f.n=-1),d(c,s)):f.n=s:f.v=s);try{if(l=2,a){if(c||(o="next"),t=a[o]){if(!(t=t.call(a,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=a.return)&&t.call(a),c<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),c=1);a=e}else if((t=(p=f.n<0)?s:r.call(n,f))!==i)break}catch(t){a=e,c=1,s=t}finally{l=1}}return{value:t,done:p}}}(r,o,a),!0),l}var i={};function c(){}function s(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(N(t={},n,function(){return this}),t),p=l.prototype=c.prototype=Object.create(u);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,N(e,o,"GeneratorFunction")),e.prototype=Object.create(p),e}return s.prototype=l,N(p,"constructor",l),N(l,"constructor",s),s.displayName="GeneratorFunction",N(l,o,"GeneratorFunction"),N(p),N(p,o,"Generator"),N(p,n,function(){return this}),N(p,"toString",function(){return"[object Generator]"}),(R=function(){return{w:a,m:f}})()}function N(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}N=function(e,t,r,n){if(t)o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r;else{var a=function(t,r){N(e,t,function(e){return this._invoke(t,r,e)})};a("next",0),a("throw",1),a("return",2)}},N(e,t,r,n)}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var I=function(e,t,r,n){return new(r||(r=Promise))(function(o,a){function i(e){try{s(n.next(e))}catch(e){a(e)}}function c(e){try{s(n.throw(e))}catch(e){a(e)}}function s(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,c)}s((n=n.apply(e,t||[])).next())})};function D(e,t){var r,n,o;return{userId:e.id,firstName:e.name,surname:e.surname,userType:e.userType,customerId:t.customerId,email:e.email||"",masterYearGroup:null!==(r=e.masterYearGroup)&&void 0!==r?r:null,username:e.username,masterRole:e.userProfile.role,status:e.status,displayName:null!==(o=null===(n=e.metadata)||void 0===n?void 0:n.displayName)&&void 0!==o?o:""}}var _=a.T.encloseNamespace("userManager.editUser");function F(e){var t,r,a=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,c=[],s=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=a.call(r)).done)&&(c.push(n.value),c.length!==t);s=!0);}catch(e){l=!0,o=e}finally{try{if(!s&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return c}}(t,r)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?U(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),N=a[0],F=a[1],G=(0,O.Z)(),M=(0,o.I0)(),L=i.a.useGetFetchAsync(),B=i.a.useBasicFetch(x.N.getUser(e.id)),Y=i.a.useBasicFetch(w.N.currentUser()),V=i.a.useBasicFetch(Y.data&&x.N.yearGroups(Y.data.customerId)),q=i.a.useBasicFetch(Y.data&&k.F.getCustomerSecuritySettings(Y.data.customerId)),W=i.a.useBasicFetch(g.L.config()),Z=i.a.useBasicFetch(E.h.customer(Y.data.customerId,null,null,!0)),H=i.a.useBasicFetch(x.N.authenticationMethods([e.id]));function z(t){var r=d.P.formatCreateOrValidateUserRequest([t],e.userType,Y.data.customerId);return L(x.N.bulkValidate(r))}function X(t){i.a.fetch(M,x.N.resendActivationEmail(t.id,function(){c.k.logUserAction(t,Object.assign(Object.assign({},e.analyticsOptions),{actionType:s.Vw.SendEmail,descriptor:s.on.ActivateUser})),G.success(_("success")),F(!0)},function(){G.error(_("error")),e.closePopup()}))}var $,J,K,Q=!!B.data&&!!Y.data&&!!V.data&&!!q.data&&H.hasCompleted&&!!W.data;return n.createElement(p.A.Provider,{value:f.a.Primary},n.createElement(m.G,{closePopup:e.closePopup,title:_("popupTitle"),showLoadingSpinner:!Q},Q?N?n.createElement(u.U,{creationResponse:{isBulk:!1},userType:e.userType,onClose:e.closePopup,emailSentImageUrl:P.W.EMAIL_SENT}):n.createElement(n.Fragment,null,S.l.hasSso(B.data)&&n.createElement(A.Z,{userType:e.userType,isNew:!1,helpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),ssoMappingsApplink:{application:j.O.SETTINGS,action:T.e.Settings.SSO_YEAR_GROUP_MAPPINGS}}),n.createElement(l.H,{user:B.data,userType:e.userType,yearGroups:e.userType===v.Y.Learner?V.data:null,initialValues:D(B.data,Y.data),initialErrors:d.P.getInitialErrorsForInvalidYearGroups(B.data.masterYearGroup),onSubmit:function(t,r){var n,o;return I(this,void 0,void 0,R().m(function a(){var s,l;return R().w(function(a){for(;;)switch(a.n){case 0:return a.n=1,z(t);case 1:if(s=a.v,d.P.handleAsyncErrors(s,t,B.data,r)){a.n=2;break}return a.a(2);case 2:l=d.P.formatEditUserRequest(t),i.a.fetch(M,x.N.updateUser(l,Y.data.id,function(t){c.k.logUserAction(t,e.analyticsOptions),B.data.email!==t.email&&t.status===y.w.Inactive?X(t):(G.success(_("success")),e.closePopup())},function(){G.error(_("error")),e.closePopup()},function(){},0===(null===(n=B.data.masterYearGroup)||void 0===n?void 0:n.value)&&0!==(null===(o=t.masterYearGroup)||void 0===o?void 0:o.value)));case 3:return a.a(2)}},a)}))},onClickCancel:e.closePopup,currentUser:Y.data,emailRequired:e.userType===v.Y.Staff,showDisplayNameField:e.userType===v.Y.Staff,passwordPolicy:q.data,editSsoUserHelpArticle:C.o.getLiteArticle(b.b.EditSsoAccounts),validateEmail:function(t){var r={userEmails:[{email:t,userType:e.userType}]};return L(x.N.bulkCheckEmail(r,Y.data.customerId))},hasOrg:!!(null===($=Z.data)||void 0===$?void 0:$.organisation),countryCode:null===(J=Y.data)||void 0===J?void 0:J.countryCode,canEditSuperAdmin:(null===(K=Y.data)||void 0===K?void 0:K.role)===h.i.SuperAdmin})):n.createElement(n.Fragment,null)))}},29241:(e,t,r)=>{"use strict";r.d(t,{Z:()=>s});var n=r(32735),o=r(14604),a=r(15611),i=r(83345),c="userManager.editUser";function s(e){return n.createElement(o.W,{className:"py-2"},n.createElement(i.x,{namespace:c,phrase:e.isNew?"newSsoUserWarning":"editSsoUserWarning"}),!e.isNew&&n.createElement(a.F,{appLink:e.ssoMappingsApplink,className:"info-link d-block my-1",openInNewTab:!0},n.createElement(i.x,{namespace:c,phrase:"ssoMapping"})),n.createElement("a",{className:"info-link d-block",href:e.helpArticle,target:"_blank"},n.createElement(i.x,{namespace:c,phrase:"ssoArticleLink"})))}},91969:(e,t,r)=>{"use strict";var n=r(47033),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,a,i,c,s,l,u=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),c=document.createRange(),s=document.getSelection(),(l=document.createElement("span")).textContent=e,l.ariaHidden="true",l.style.all="unset",l.style.position="fixed",l.style.top=0,l.style.clip="rect(0, 0, 0, 0)",l.style.whiteSpace="pre",l.style.webkitUserSelect="text",l.style.MozUserSelect="text",l.style.msUserSelect="text",l.style.userSelect="text",l.addEventListener("copy",function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){r&&console.warn("unable to use e.clipboardData"),r&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var a=o[t.format]||o.default;window.clipboardData.setData(a,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(l),c.selectNodeContents(l),s.addRange(c),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");u=!0}catch(n){r&&console.error("unable to copy using execCommand: ",n),r&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),u=!0}catch(n){r&&console.error("unable to copy using clipboardData: ",n),r&&console.error("falling back to prompt"),a=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(a,e)}}finally{s&&("function"==typeof s.removeRange?s.removeRange(c):s.removeAllRanges()),l&&document.body.removeChild(l),i()}return u}},44818:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.CopyToClipboard=void 0;var o=c(r(32735)),a=c(r(91969)),i=["text","onCopy","options","children"];function c(e){return e&&e.__esModule?e:{default:e}}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach(function(t){m(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function m(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var y=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&p(e,t)}(b,e);var t,r,c,s,y=(c=b,s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}(),function(){var e,t=d(c);if(s){var r=d(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return function(e,t){if(t&&("object"===n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}(this,e)});function b(){var e;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,b);for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return m(f(e=y.call.apply(y,[this].concat(r))),"onClick",function(t){var r=e.props,n=r.text,i=r.onCopy,c=r.children,s=r.options,l=o.default.Children.only(c),u=(0,a.default)(n,s);i&&i(n,u),l&&l.props&&"function"==typeof l.props.onClick&&l.props.onClick(t)}),e}return t=b,(r=[{key:"render",value:function(){var e=this.props,t=(e.text,e.onCopy,e.options,e.children),r=function(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(e,i),n=o.default.Children.only(t);return o.default.cloneElement(n,l(l({},r),{},{onClick:this.onClick}))}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),b}(o.default.PureComponent);t.CopyToClipboard=y,m(y,"defaultProps",{onCopy:void 0,options:void 0})},59087:(e,t,r)=>{"use strict";var n=r(44818).CopyToClipboard;n.CopyToClipboard=n,e.exports=n},47033:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,r=[],n=0;n<e.rangeCount;n++)r.push(e.getRangeAt(n));switch(t.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":t.blur();break;default:t=null}return e.removeAllRanges(),function(){"Caret"===e.type&&e.removeAllRanges(),e.rangeCount||r.forEach(function(t){e.addRange(t)}),t&&t.focus()}}}}]);
|
|
3
|
+
//# sourceMappingURL=7835-8d490274c8-lite.chunk.js.map
|