@clickview/lite 0.76.0-rc.2 → 0.76.0-rc.4
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-201cabeb7a-lite.chunk.js +3 -0
- package/dist/scripts/3700-201cabeb7a-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/{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-2ab602ed30.min.js +3 -0
- package/dist/scripts/{bundle-4276667ced.min.js.map → bundle-2ab602ed30.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-4276667ced.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-201cabeb7a-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/{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-4276667ced.min.js.LICENSE.txt → bundle-2ab602ed30.min.js.LICENSE.txt} +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 4802-
|
|
2
|
-
(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4802],{99882:(e,t,r)=>{"use strict";r.d(t,{U:()=>f});var n,a=r(32735),o=r(59087),i=r(23481);!function(e){e.ShowDetails="show-details",e.EmailedUsers="emailed-students",e.EmailedAdmin="emailed-admin"}(n||(n={}));var s=r(83345),c=r(76881),l=r(69883),u="userManager.userCreatedSuccess";function p(e){return a.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},a.createElement("img",{src:e.emailSentImageUrl,alt:"",role:"presentation",className:"w-100"}))}function d(e){return a.createElement(a.Fragment,null,a.createElement("p",null,a.createElement(s.x,{phrase:"userDetailsInfo"})),a.createElement("p",{className:"mb-0 fw-semibold"},a.createElement(s.x,{phrase:"username"})),a.createElement("p",null,e.creationResponse.username),a.createElement("p",{className:"mb-0 fw-semibold"},a.createElement(s.x,{phrase:"password"})),a.createElement("p",null,e.creationResponse.password))}function m(e){return a.createElement(a.Fragment,null,a.createElement(p,Object.assign({},e)),a.createElement("p",null,a.createElement(s.x,{phrase:"emailedUsersInfo",options:{smartCount:e.creationResponse.isBulk?2:1}})))}function f(e){var t=(0,l.Z)(),r=a.useMemo(function(){return e.userType===c.Y.Staff||e.creationResponse.isBulk||e.creationResponse.hasEmail?n.EmailedUsers:n.ShowDetails},[e.creationResponse]);if(!r)return a.createElement(a.Fragment,null);var p=function(){switch(r){case n.ShowDetails:return a.createElement(d,Object.assign({},e));case n.EmailedUsers:return a.createElement(m,Object.assign({},e))}}();return a.createElement(s.D.Provider,{value:u},p,a.createElement("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3"},r===n.ShowDetails?a.createElement(o.CopyToClipboard,{onCopy:function(){t.success(i.T.getPhrase(u,"copied")),e.onClose()},text:"".concat(e.creationResponse.username," - ").concat(e.creationResponse.password)},a.createElement("button",{className:"btn btn-dark"},a.createElement(s.x,{phrase:"copy"}))):a.createElement("button",{onClick:e.onClose,className:"btn btn-dark"},a.createElement(s.x,{phrase:"okay"}))))}},99705:(e,t,r)=>{"use strict";var n,a;r.d(t,{b:()=>a}),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"}(a||(a={}))},56031:(e,t,r)=>{"use strict";r.r(t),r.d(t,{CreateUserView:()=>z});var n=r(32735),a=r(70680),o=r(23481),i=r(57900),s=r(20354),c=r(49985),l=r(58859),u=r(92802),p=r(11607),d=r(29057),m=r(82644),f=r(13876),y=r(83914),b=r(83345),v=r(83523),g=r(76881),h=r(86613),E=r(35223),w=r(64818);const C={closeButton:"q_0FU"};var S="userManager.inviteUser";function x(e){var t=e.user.userType===g.Y.Staff,r=w.l.getValidYearGroups(e.yearGroups);return e.invitationSent?n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},n.createElement("img",{src:t?e.staffInvitedImageUrl:e.studentAddedImageUrl,alt:"",role:"presentation",className:"w-100"})),n.createElement("p",null,n.createElement(b.x,{namespace:S,phrase:t?"invitationSent":"studentAdded",options:{email:e.user.email,schoolName:e.customer.name}})),n.createElement(f.u,null,n.createElement(f.u.Submit,{text:o.T.getPhrase(S,"okay"),onClick:e.closePopup,variant:"dark"}))):n.createElement(m.n,{initialValues:{email:e.user.email,userType:e.user.userType,masterRole:h.i.User,userYearGroupId:""},onSubmit:e.onClickInvite,allowInitialSubmit:!0},function(a){return n.createElement(u.l0,null,n.createElement("div",{className:"position-relative"},n.createElement(d.W,{id:"email",name:"email",disabled:!0}),n.createElement(p.L,{onClick:e.onClickCancel,className:C.closeButton},n.createElement(y.x,{svgName:E.vn.Close}))),n.createElement("p",null,n.createElement(b.x,{namespace:S,phrase:t?"alreadyExistsStaff":"alreadyExistsStudent"})),n.createElement("p",null,n.createElement(b.x,{namespace:S,phrase:t?"inviteQuestion":"addQuestion",options:{schoolName:e.customer.name}})),t?n.createElement(d.W,{id:"masterRole",name:"masterRole"},function(){return n.createElement("div",{className:"d-flex align-items-center"},n.createElement(v.Z,{onClick:function(){return a.setFieldValue("masterRole",a.values.masterRole===h.i.User?h.i.Admin:h.i.User)},on:a.values.masterRole===h.i.Admin}),n.createElement("span",{className:"fw-semibold ms-2"},n.createElement(b.x,{namespace:S,phrase:"setAsAdmin"})))}):n.createElement(d.W,{as:"select",label:o.T.getPhrase(S,"yearGroup"),name:"userYearGroupId",value:a.values.userYearGroupId.toString(),className:a.values.userYearGroupId?"":"text-secondary",showRequiredStar:!0},n.createElement("option",{className:"text-secondary",value:""},o.T.getPhrase(S,"selectYearGroup")),r.map(function(e){return n.createElement("option",{key:e.id,value:e.id.toString(),className:"text-dark"},e.name)})),n.createElement(f.u,null,n.createElement(f.u.Cancel,{onClick:e.onClickCancel}),n.createElement(f.u.Submit,{text:o.T.getPhrase(S,t?"invite":"add"),variant:"dark",disabled:!t&&!a.values.userYearGroupId})))})}var O=r(99882),T=r(26055),k=r(43820),P=r(39739),N=r(9111),j=r(99705),A=r(1666),I=r(31949),U=r(69883),R=r(12778),D=r(99742),_=r(14070),G=r(97291),F=r(26234),M=r(47288),Y=r(18087),L=r(29241);function B(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function o(r,n,a,o){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return V(l,"_invoke",function(r,n,a){var o,s,c,l=0,u=a||[],p=!1,d={p:0,n:0,v:e,a:m,f:m.bind(e,4),d:function(t,r){return o=t,s=0,c=e,d.n=r,i}};function m(r,n){for(s=r,c=n,t=0;!p&&l&&!a&&t<u.length;t++){var a,o=u[t],m=d.p,f=o[2];r>3?(a=f===n)&&(c=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=m&&((a=r<2&&m<o[1])?(s=0,d.v=n,d.n=o[1]):m<f&&(a=r<3||o[0]>n||n>f)&&(o[4]=r,o[5]=n,d.n=f,s=0))}if(a||r>1)return i;throw p=!0,n}return function(a,u,f){if(l>1)throw TypeError("Generator is already running");for(p&&1===u&&m(u,f),s=u,c=f;(t=s<2?e:c)||!p;){o||(s?s<3?(s>1&&(d.n=-1),m(s,c)):d.n=c:d.v=c);try{if(l=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(p=d.n<0)?c:r.call(n,d))!==i)break}catch(t){o=e,s=1,c=t}finally{l=1}}return{value:t,done:p}}}(r,a,o),!0),l}var i={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(V(t={},n,function(){return this}),t),p=l.prototype=s.prototype=Object.create(u);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,V(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=l,V(p,"constructor",l),V(l,"constructor",c),c.displayName="GeneratorFunction",V(l,a,"GeneratorFunction"),V(p),V(p,a,"Generator"),V(p,n,function(){return this}),V(p,"toString",function(){return"[object Generator]"}),(B=function(){return{w:o,m:d}})()}function V(e,t,r,n){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}V=function(e,t,r,n){if(t)a?a(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r;else{var o=function(t,r){V(e,t,function(e){return this._invoke(t,r,e)})};o("next",0),o("throw",1),o("return",2)}},V(e,t,r,n)}function W(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],c=!0,l=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return q(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)?q(e,t):void 0}}(e,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.")}()}function q(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 Z=function(e,t,r,n){return new(r||(r=Promise))(function(a,o){function i(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,s)}c((n=n.apply(e,t||[])).next())})},H="_cv:create:next:user";function Q(e,t){return{firstName:"",email:"",surname:"",username:"",userType:e,customerId:t.customerId,masterYearGroup:null,masterRole:h.i.User,requirePasswordChange:!1,generatePassword:e===g.Y.Learner,password:"",displayName:null}}function z(e){var t,r=W(n.useState(!!i.SG.get(H)),2),u=r[0],p=r[1],d=W(n.useState(null),2),m=d[0],f=d[1],y=W(n.useState(!1),2),b=y[0],v=y[1],E=W(n.useState(null),2),w=E[0],C=E[1],S=(0,U.Z)(),V=(0,a.I0)(),q=s.a.useGetFetchAsync(),z=s.a.useBasicFetch(I.N.currentUser()),X=s.a.useBasicFetch(z.data&&M.N.yearGroups(z.data.customerId)),$=s.a.useBasicFetch(z.data&&F.F.getCustomerSecuritySettings(z.data.customerId)),J=s.a.useBasicFetch(z.data&&A.h.customer(z.data.customerId,null,null,!0)),K=!!(null===(t=J.data)||void 0===t?void 0:t.organisation),ee=s.a.useBasicFetch(!!z.data&&M.N.getIdentityProviders(z.data.customerId)),te=e.userType===g.Y.Staff?"userManager.createStaff":"userManager.createStudent",re=o.T.encloseNamespace(te);function ne(t){var r=P.P.formatCreateOrValidateUserRequest([t],e.userType,z.data.customerId);return q(M.N.bulkValidate(r))}function ae(t){var r={userEmails:[{email:t,userType:e.userType}]};return q(M.N.bulkCheckEmail(r,z.data.customerId))}function oe(t,r){return Z(this,void 0,void 0,B().m(function n(){var a,o;return B().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,ne(t);case 1:if(a=n.v,P.P.handleAsyncErrors(a,t,null,r)){n.n=2;break}return n.a(2);case 2:o=P.P.formatCreateOrValidateUserRequest([t],e.userType,z.data.customerId),s.a.fetch(V,M.N.createUsers({users:o,success:function(n){c.k.logUserAction(o,e.analyticsOptions),u&&r({reset:!0}),f(Object.assign(Object.assign({},n),{hasEmail:!!t.email,password:t.password||n.password,isBulk:!1}))},error:function(){S.error(re("error")),e.closePopup()}}));case 3:return n.a(2)}},n)}))}function ie(t){var r={userEmails:[t]};q(M.N.inviteUserToCustomer(z.data.customerId,r)).then(function(){v(!0)}).catch(function(){S.error(re("inviteError",{email:w.email})),e.closePopup()})}function se(){f(null),u||e.closePopup()}var ce=!!(z.data&&$.data&&X.data&&J.data);return n.createElement(T.A.Provider,{value:k.a.Primary},n.createElement(N.G,{closePopup:e.closePopup,title:re(m?"titleSuccess":w?"titleInviteUser":"titleCreating"),showLoadingSpinner:!ce},function(){var t,r,a;return ce?w?n.createElement(x,{user:w,customer:J.data,yearGroups:X.data,onClickCancel:function(){return C(null)},onClickInvite:ie,closePopup:e.closePopup,invitationSent:b,staffInvitedImageUrl:D.W.EMAIL_SENT,studentAddedImageUrl:D.W.UserManager.STUDENT_ADDED}):m?n.createElement(O.U,{onClose:se,creationResponse:m,emailSentImageUrl:D.W.EMAIL_SENT,userType:e.userType}):n.createElement(n.Fragment,null,!!(null===(t=ee.data)||void 0===t?void 0:t.length)&&n.createElement(L.Z,{userType:e.userType,helpArticle:R.o.getLiteArticle(j.b.EditSsoAccounts),ssoMappingsApplink:{application:G.O.SETTINGS,action:_.e.Settings.SSO_YEAR_GROUP_MAPPINGS},isNew:!0}),n.createElement(l.H,{onSubmit:oe,userType:e.userType,onClickCancel:e.closePopup,yearGroups:X.data,initialValues:Q(e.userType,z.data),currentUser:z.data,onToggleNextCheckbox:function(){return p(function(e){return i.SG.set(H,!e),!e})},shouldGoToNext:u,goToNextText:re("createNext"),showPasswordField:e.userType===g.Y.Learner,emailRequired:e.userType===g.Y.Staff,submitText:re("submit"),showDisplayNameField:e.userType===g.Y.Staff,passwordPolicy:$.data,validateEmail:ae,appLinks:(0,Y.Y)(e.userType),onDetectValidUser:C,hasOrg:K,countryCode:null===(r=z.data)||void 0===r?void 0:r.countryCode,canEditSuperAdmin:(null===(a=z.data)||void 0===a?void 0:a.role)===h.i.SuperAdmin})):n.createElement(n.Fragment,null)}()))}},29241:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(32735),a=r(14604),o=r(15611),i=r(83345),s="userManager.editUser";function c(e){return n.createElement(a.W,{className:"py-2"},n.createElement(i.x,{namespace:s,phrase:e.isNew?"newSsoUserWarning":"editSsoUserWarning"}),!e.isNew&&n.createElement(o.F,{appLink:e.ssoMappingsApplink,className:"info-link d-block my-1",openInNewTab:!0},n.createElement(i.x,{namespace:s,phrase:"ssoMapping"})),n.createElement("a",{className:"info-link d-block",href:e.helpArticle,target:"_blank"},n.createElement(i.x,{namespace:s,phrase:"ssoArticleLink"})))}},91969:(e,t,r)=>{"use strict";var n=r(47033),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,o,i,s,c,l,u=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),s=document.createRange(),c=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 o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(l),s.selectNodeContents(l),c.addRange(s),!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"),o=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(o,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(s):c.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 a=s(r(32735)),o=s(r(91969)),i=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function c(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?c(Object(r),!0).forEach(function(t){f(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(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 d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function f(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,s,c,y=(s=b,c=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=m(s);if(c){var r=m(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 d(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 f(d(e=y.call.apply(y,[this].concat(r))),"onClick",function(t){var r=e.props,n=r.text,i=r.onCopy,s=r.children,c=r.options,l=a.default.Children.only(s),u=(0,o.default)(n,c);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,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,i),n=a.default.Children.only(t);return a.default.cloneElement(n,l(l({},r),{},{onClick:this.onClick}))}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),b}(a.default.PureComponent);t.CopyToClipboard=y,f(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=4802-
|
|
1
|
+
/*! For license information please see 4802-bc321d7ede-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4802],{99882:(e,t,r)=>{"use strict";r.d(t,{U:()=>f});var n,a=r(32735),o=r(59087),i=r(23481);!function(e){e.ShowDetails="show-details",e.EmailedUsers="emailed-students",e.EmailedAdmin="emailed-admin"}(n||(n={}));var s=r(83345),c=r(76881),l=r(69883),u="userManager.userCreatedSuccess";function p(e){return a.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},a.createElement("img",{src:e.emailSentImageUrl,alt:"",role:"presentation",className:"w-100"}))}function d(e){return a.createElement(a.Fragment,null,a.createElement("p",null,a.createElement(s.x,{phrase:"userDetailsInfo"})),a.createElement("p",{className:"mb-0 fw-semibold"},a.createElement(s.x,{phrase:"username"})),a.createElement("p",null,e.creationResponse.username),a.createElement("p",{className:"mb-0 fw-semibold"},a.createElement(s.x,{phrase:"password"})),a.createElement("p",null,e.creationResponse.password))}function m(e){return a.createElement(a.Fragment,null,a.createElement(p,Object.assign({},e)),a.createElement("p",null,a.createElement(s.x,{phrase:"emailedUsersInfo",options:{smartCount:e.creationResponse.isBulk?2:1}})))}function f(e){var t=(0,l.Z)(),r=a.useMemo(function(){return e.userType===c.Y.Staff||e.creationResponse.isBulk||e.creationResponse.hasEmail?n.EmailedUsers:n.ShowDetails},[e.creationResponse]);if(!r)return a.createElement(a.Fragment,null);var p=function(){switch(r){case n.ShowDetails:return a.createElement(d,Object.assign({},e));case n.EmailedUsers:return a.createElement(m,Object.assign({},e))}}();return a.createElement(s.D.Provider,{value:u},p,a.createElement("div",{className:"d-flex justify-content-end border-top pt-3 px-3 mx-n3"},r===n.ShowDetails?a.createElement(o.CopyToClipboard,{onCopy:function(){t.success(i.T.getPhrase(u,"copied")),e.onClose()},text:"".concat(e.creationResponse.username," - ").concat(e.creationResponse.password)},a.createElement("button",{className:"btn btn-dark"},a.createElement(s.x,{phrase:"copy"}))):a.createElement("button",{onClick:e.onClose,className:"btn btn-dark"},a.createElement(s.x,{phrase:"okay"}))))}},99705:(e,t,r)=>{"use strict";var n,a;r.d(t,{b:()=>a}),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"}(a||(a={}))},56031:(e,t,r)=>{"use strict";r.r(t),r.d(t,{CreateUserView:()=>z});var n=r(32735),a=r(70680),o=r(23481),i=r(57900),s=r(20354),c=r(49985),l=r(58859),u=r(92802),p=r(11607),d=r(29057),m=r(82644),f=r(13876),y=r(83914),b=r(83345),v=r(83523),g=r(76881),h=r(86613),E=r(35223),w=r(64818);const C={closeButton:"q_0FU"};var S="userManager.inviteUser";function x(e){var t=e.user.userType===g.Y.Staff,r=w.l.getValidYearGroups(e.yearGroups);return e.invitationSent?n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex justify-content-center w-50 mx-auto pb-3"},n.createElement("img",{src:t?e.staffInvitedImageUrl:e.studentAddedImageUrl,alt:"",role:"presentation",className:"w-100"})),n.createElement("p",null,n.createElement(b.x,{namespace:S,phrase:t?"invitationSent":"studentAdded",options:{email:e.user.email,schoolName:e.customer.name}})),n.createElement(f.u,null,n.createElement(f.u.Submit,{text:o.T.getPhrase(S,"okay"),onClick:e.closePopup,variant:"dark"}))):n.createElement(m.n,{initialValues:{email:e.user.email,userType:e.user.userType,masterRole:h.i.User,userYearGroupId:""},onSubmit:e.onClickInvite,allowInitialSubmit:!0},function(a){return n.createElement(u.l0,null,n.createElement("div",{className:"position-relative"},n.createElement(d.W,{id:"email",name:"email",disabled:!0}),n.createElement(p.L,{onClick:e.onClickCancel,className:C.closeButton},n.createElement(y.x,{svgName:E.vn.Close}))),n.createElement("p",null,n.createElement(b.x,{namespace:S,phrase:t?"alreadyExistsStaff":"alreadyExistsStudent"})),n.createElement("p",null,n.createElement(b.x,{namespace:S,phrase:t?"inviteQuestion":"addQuestion",options:{schoolName:e.customer.name}})),t?n.createElement(d.W,{id:"masterRole",name:"masterRole"},function(){return n.createElement("div",{className:"d-flex align-items-center"},n.createElement(v.Z,{onClick:function(){return a.setFieldValue("masterRole",a.values.masterRole===h.i.User?h.i.Admin:h.i.User)},on:a.values.masterRole===h.i.Admin}),n.createElement("span",{className:"fw-semibold ms-2"},n.createElement(b.x,{namespace:S,phrase:"setAsAdmin"})))}):n.createElement(d.W,{as:"select",label:o.T.getPhrase(S,"yearGroup"),name:"userYearGroupId",value:a.values.userYearGroupId.toString(),className:a.values.userYearGroupId?"":"text-secondary",showRequiredStar:!0},n.createElement("option",{className:"text-secondary",value:""},o.T.getPhrase(S,"selectYearGroup")),r.map(function(e){return n.createElement("option",{key:e.id,value:e.id.toString(),className:"text-dark"},e.name)})),n.createElement(f.u,null,n.createElement(f.u.Cancel,{onClick:e.onClickCancel}),n.createElement(f.u.Submit,{text:o.T.getPhrase(S,t?"invite":"add"),variant:"dark",disabled:!t&&!a.values.userYearGroupId})))})}var O=r(99882),T=r(26055),k=r(43820),P=r(39739),N=r(9111),j=r(99705),A=r(1666),I=r(31949),U=r(69883),R=r(12778),D=r(99742),_=r(14070),G=r(97291),F=r(80658),M=r(47288),Y=r(18087),L=r(29241);function B(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function o(r,n,a,o){var c=n&&n.prototype instanceof s?n:s,l=Object.create(c.prototype);return V(l,"_invoke",function(r,n,a){var o,s,c,l=0,u=a||[],p=!1,d={p:0,n:0,v:e,a:m,f:m.bind(e,4),d:function(t,r){return o=t,s=0,c=e,d.n=r,i}};function m(r,n){for(s=r,c=n,t=0;!p&&l&&!a&&t<u.length;t++){var a,o=u[t],m=d.p,f=o[2];r>3?(a=f===n)&&(c=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=m&&((a=r<2&&m<o[1])?(s=0,d.v=n,d.n=o[1]):m<f&&(a=r<3||o[0]>n||n>f)&&(o[4]=r,o[5]=n,d.n=f,s=0))}if(a||r>1)return i;throw p=!0,n}return function(a,u,f){if(l>1)throw TypeError("Generator is already running");for(p&&1===u&&m(u,f),s=u,c=f;(t=s<2?e:c)||!p;){o||(s?s<3?(s>1&&(d.n=-1),m(s,c)):d.n=c:d.v=c);try{if(l=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(p=d.n<0)?c:r.call(n,d))!==i)break}catch(t){o=e,s=1,c=t}finally{l=1}}return{value:t,done:p}}}(r,a,o),!0),l}var i={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(V(t={},n,function(){return this}),t),p=l.prototype=s.prototype=Object.create(u);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,V(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=l,V(p,"constructor",l),V(l,"constructor",c),c.displayName="GeneratorFunction",V(l,a,"GeneratorFunction"),V(p),V(p,a,"Generator"),V(p,n,function(){return this}),V(p,"toString",function(){return"[object Generator]"}),(B=function(){return{w:o,m:d}})()}function V(e,t,r,n){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}V=function(e,t,r,n){if(t)a?a(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r;else{var o=function(t,r){V(e,t,function(e){return this._invoke(t,r,e)})};o("next",0),o("throw",1),o("return",2)}},V(e,t,r,n)}function W(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],c=!0,l=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return q(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)?q(e,t):void 0}}(e,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.")}()}function q(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 Z=function(e,t,r,n){return new(r||(r=Promise))(function(a,o){function i(e){try{c(n.next(e))}catch(e){o(e)}}function s(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(i,s)}c((n=n.apply(e,t||[])).next())})},H="_cv:create:next:user";function Q(e,t){return{firstName:"",email:"",surname:"",username:"",userType:e,customerId:t.customerId,masterYearGroup:null,masterRole:h.i.User,requirePasswordChange:!1,generatePassword:e===g.Y.Learner,password:"",displayName:null}}function z(e){var t,r=W(n.useState(!!i.SG.get(H)),2),u=r[0],p=r[1],d=W(n.useState(null),2),m=d[0],f=d[1],y=W(n.useState(!1),2),b=y[0],v=y[1],E=W(n.useState(null),2),w=E[0],C=E[1],S=(0,U.Z)(),V=(0,a.I0)(),q=s.a.useGetFetchAsync(),z=s.a.useBasicFetch(I.N.currentUser()),X=s.a.useBasicFetch(z.data&&M.N.yearGroups(z.data.customerId)),$=s.a.useBasicFetch(z.data&&F.F.getCustomerSecuritySettings(z.data.customerId)),J=s.a.useBasicFetch(z.data&&A.h.customer(z.data.customerId,null,null,!0)),K=!!(null===(t=J.data)||void 0===t?void 0:t.organisation),ee=s.a.useBasicFetch(!!z.data&&M.N.getIdentityProviders(z.data.customerId)),te=e.userType===g.Y.Staff?"userManager.createStaff":"userManager.createStudent",re=o.T.encloseNamespace(te);function ne(t){var r=P.P.formatCreateOrValidateUserRequest([t],e.userType,z.data.customerId);return q(M.N.bulkValidate(r))}function ae(t){var r={userEmails:[{email:t,userType:e.userType}]};return q(M.N.bulkCheckEmail(r,z.data.customerId))}function oe(t,r){return Z(this,void 0,void 0,B().m(function n(){var a,o;return B().w(function(n){for(;;)switch(n.n){case 0:return n.n=1,ne(t);case 1:if(a=n.v,P.P.handleAsyncErrors(a,t,null,r)){n.n=2;break}return n.a(2);case 2:o=P.P.formatCreateOrValidateUserRequest([t],e.userType,z.data.customerId),s.a.fetch(V,M.N.createUsers({users:o,success:function(n){c.k.logUserAction(o,e.analyticsOptions),u&&r({reset:!0}),f(Object.assign(Object.assign({},n),{hasEmail:!!t.email,password:t.password||n.password,isBulk:!1}))},error:function(){S.error(re("error")),e.closePopup()}}));case 3:return n.a(2)}},n)}))}function ie(t){var r={userEmails:[t]};q(M.N.inviteUserToCustomer(z.data.customerId,r)).then(function(){v(!0)}).catch(function(){S.error(re("inviteError",{email:w.email})),e.closePopup()})}function se(){f(null),u||e.closePopup()}var ce=!!(z.data&&$.data&&X.data&&J.data);return n.createElement(T.A.Provider,{value:k.a.Primary},n.createElement(N.G,{closePopup:e.closePopup,title:re(m?"titleSuccess":w?"titleInviteUser":"titleCreating"),showLoadingSpinner:!ce},function(){var t,r,a;return ce?w?n.createElement(x,{user:w,customer:J.data,yearGroups:X.data,onClickCancel:function(){return C(null)},onClickInvite:ie,closePopup:e.closePopup,invitationSent:b,staffInvitedImageUrl:D.W.EMAIL_SENT,studentAddedImageUrl:D.W.UserManager.STUDENT_ADDED}):m?n.createElement(O.U,{onClose:se,creationResponse:m,emailSentImageUrl:D.W.EMAIL_SENT,userType:e.userType}):n.createElement(n.Fragment,null,!!(null===(t=ee.data)||void 0===t?void 0:t.length)&&n.createElement(L.Z,{userType:e.userType,helpArticle:R.o.getLiteArticle(j.b.EditSsoAccounts),ssoMappingsApplink:{application:G.O.SETTINGS,action:_.e.Settings.SSO_YEAR_GROUP_MAPPINGS},isNew:!0}),n.createElement(l.H,{onSubmit:oe,userType:e.userType,onClickCancel:e.closePopup,yearGroups:X.data,initialValues:Q(e.userType,z.data),currentUser:z.data,onToggleNextCheckbox:function(){return p(function(e){return i.SG.set(H,!e),!e})},shouldGoToNext:u,goToNextText:re("createNext"),showPasswordField:e.userType===g.Y.Learner,emailRequired:e.userType===g.Y.Staff,submitText:re("submit"),showDisplayNameField:e.userType===g.Y.Staff,passwordPolicy:$.data,validateEmail:ae,appLinks:(0,Y.Y)(e.userType),onDetectValidUser:C,hasOrg:K,countryCode:null===(r=z.data)||void 0===r?void 0:r.countryCode,canEditSuperAdmin:(null===(a=z.data)||void 0===a?void 0:a.role)===h.i.SuperAdmin})):n.createElement(n.Fragment,null)}()))}},29241:(e,t,r)=>{"use strict";r.d(t,{Z:()=>c});var n=r(32735),a=r(14604),o=r(15611),i=r(83345),s="userManager.editUser";function c(e){return n.createElement(a.W,{className:"py-2"},n.createElement(i.x,{namespace:s,phrase:e.isNew?"newSsoUserWarning":"editSsoUserWarning"}),!e.isNew&&n.createElement(o.F,{appLink:e.ssoMappingsApplink,className:"info-link d-block my-1",openInNewTab:!0},n.createElement(i.x,{namespace:s,phrase:"ssoMapping"})),n.createElement("a",{className:"info-link d-block",href:e.helpArticle,target:"_blank"},n.createElement(i.x,{namespace:s,phrase:"ssoArticleLink"})))}},91969:(e,t,r)=>{"use strict";var n=r(47033),a={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var r,o,i,s,c,l,u=!1;t||(t={}),r=t.debug||!1;try{if(i=n(),s=document.createRange(),c=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 o=a[t.format]||a.default;window.clipboardData.setData(o,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))}),document.body.appendChild(l),s.selectNodeContents(l),c.addRange(s),!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"),o=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(o,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(s):c.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 a=s(r(32735)),o=s(r(91969)),i=["text","onCopy","options","children"];function s(e){return e&&e.__esModule?e:{default:e}}function c(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?c(Object(r),!0).forEach(function(t){f(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):c(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 d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function f(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,s,c,y=(s=b,c=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=m(s);if(c){var r=m(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 d(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 f(d(e=y.call.apply(y,[this].concat(r))),"onClick",function(t){var r=e.props,n=r.text,i=r.onCopy,s=r.children,c=r.options,l=a.default.Children.only(s),u=(0,o.default)(n,c);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,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}(e,i),n=a.default.Children.only(t);return a.default.cloneElement(n,l(l({},r),{},{onClick:this.onClick}))}}])&&u(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),b}(a.default.PureComponent);t.CopyToClipboard=y,f(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=4802-bc321d7ede-lite.chunk.js.map
|
package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.map → 4802-bc321d7ede-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4802-1b7a767c46-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/enums/UserCreatedState.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/user-created-success/UserCreatedSuccess.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/invite-user/invite-user.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/invite-user/InviteUser.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/create-user/CreateUserView.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/edit-user/component/edit-sso-user-warning/LiteEditSsoUserWarning.tsx","file:///app/node_modules/copy-to-clipboard/index.js","file:///app/node_modules/react-copy-to-clipboard/lib/Component.js","file:///app/node_modules/react-copy-to-clipboard/lib/index.js","file:///app/node_modules/toggle-selection/index.js"],"sourcesContent":["export enum UserCreatedState {\n ShowDetails = 'show-details',\n EmailedUsers = 'emailed-students',\n EmailedAdmin = 'emailed-admin'\n}","import React from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UserCreatedState } from 'libs/shared/apps/user-manager/enums/UserCreatedState';\nimport { BulkCreateUsersResponse } from 'libs/shared/apps/user-manager/interfaces';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nconst namespace = 'userManager.userCreatedSuccess';\n\ninterface UserCreatedSuccessProps {\n creationResponse: BulkCreateUsersResponse;\n userType: UserGroup;\n onClose: () => void;\n emailSentImageUrl: string;\n}\n\nfunction EmailSentImage(props: UserCreatedSuccessProps): JSX.Element {\n return (\n <div className='d-flex justify-content-center w-50 mx-auto pb-3'>\n <img\n src={props.emailSentImageUrl}\n alt=''\n role='presentation'\n className='w-100'\n />\n </div>\n );\n}\n\nfunction UserDetailsDialog(props: UserCreatedSuccessProps): JSX.Element {\n return (\n <>\n <p><Text phrase='userDetailsInfo' /></p>\n\n <p className='mb-0 fw-semibold'><Text phrase='username' /></p>\n <p>{props.creationResponse.username}</p>\n\n <p className='mb-0 fw-semibold'><Text phrase='password' /></p>\n <p>{props.creationResponse.password}</p>\n </>\n );\n}\n\nfunction EmailedUsersDialog(props: UserCreatedSuccessProps): JSX.Element {\n return (\n <>\n <EmailSentImage {...props} />\n <p>\n <Text phrase='emailedUsersInfo' options={{ smartCount: props.creationResponse.isBulk ? 2 : 1 }} />\n </p>\n </>\n );\n}\n\nexport function UserCreatedSuccess(props: UserCreatedSuccessProps): JSX.Element {\n const alerts = useAlerts();\n\n function onCopyToClipboard(): void {\n alerts.success(LanguageService.getPhrase(namespace, 'copied'));\n props.onClose();\n }\n\n const state: UserCreatedState = React.useMemo(() => {\n if (props.userType === UserGroup.Staff)\n return UserCreatedState.EmailedUsers;\n \n if (props.creationResponse.isBulk || props.creationResponse.hasEmail)\n return UserCreatedState.EmailedUsers;\n\n return UserCreatedState.ShowDetails;\n }, [props.creationResponse]);\n\n if (!state)\n return <></>;\n\n const contentComponent = (() => {\n switch (state) {\n case UserCreatedState.ShowDetails:\n return <UserDetailsDialog {...props} />;\n case UserCreatedState.EmailedUsers:\n return <EmailedUsersDialog {...props} />;\n }\n })();\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n\n {contentComponent}\n\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3'>\n {state === UserCreatedState.ShowDetails\n ? (\n <CopyToClipboard\n onCopy={onCopyToClipboard}\n text={`${props.creationResponse.username} - ${props.creationResponse.password}`}\n >\n <button className='btn btn-dark'>\n <Text phrase='copy' />\n </button>\n </CopyToClipboard>\n ) : (\n <button onClick={props.onClose} className='btn btn-dark'>\n <Text phrase='okay' />\n </button>\n )\n }\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '27927466562201',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097',\n ManageGroupPermissions = '35407217335705',\n MarcFormatDifferences = '48276917260441',\n ExportLibraries = '17684275853465'\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"closeButton\":\"q_0FU\"};","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InviteUserRequest, UserEmailCheckResponse } from 'libs/shared/apps/user-manager/interfaces';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\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 { UserRole } from 'libs/shared/enums/UserRole';\nimport { Customer, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './invite-user.scss';\n\nconst namespace = 'userManager.inviteUser';\n\ninterface InviteUserProps {\n user: UserEmailCheckResponse['user'];\n customer: Customer;\n yearGroups: YearGroup[];\n onClickInvite: (request: InviteUserRequest) => void;\n onClickCancel: () => void;\n closePopup: () => void;\n invitationSent: boolean;\n\n staffInvitedImageUrl: string;\n studentAddedImageUrl: string;\n}\n\nexport function InviteUser(props: InviteUserProps): JSX.Element {\n const isStaff = props.user.userType === UserGroup.Staff;\n const validYearGroups = UserHelper.getValidYearGroups(props.yearGroups);\n\n if (props.invitationSent) {\n return (\n <>\n <div className='d-flex justify-content-center w-50 mx-auto pb-3'>\n <img\n src={isStaff ? props.staffInvitedImageUrl : props.studentAddedImageUrl}\n alt=''\n role='presentation'\n className='w-100'\n />\n </div>\n <p>\n <Text\n namespace={namespace}\n phrase={isStaff ? 'invitationSent' : 'studentAdded'}\n options={{ email: props.user.email, schoolName: props.customer.name }}\n />\n </p>\n\n <PopupButtons>\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'okay')}\n onClick={props.closePopup}\n variant='dark'\n />\n </PopupButtons>\n </>\n );\n }\n\n return (\n <FormWrapper<InviteUserRequest>\n initialValues={{\n email: props.user.email,\n userType: props.user.userType,\n masterRole: UserRole.User,\n userYearGroupId: ''\n }}\n onSubmit={props.onClickInvite}\n allowInitialSubmit\n >\n {formikProps => (\n <Form>\n <div className='position-relative'>\n <FormField id='email' name='email' disabled />\n\n <DivButton onClick={props.onClickCancel} className={styles.closeButton}>\n <SvgContainer svgName={cvSvgLibrary.Close} />\n </DivButton>\n </div>\n\n <p><Text namespace={namespace} phrase={isStaff ? 'alreadyExistsStaff' : 'alreadyExistsStudent'} /></p>\n <p>\n <Text\n namespace={namespace}\n phrase={isStaff ? 'inviteQuestion' : 'addQuestion'}\n options={{ schoolName: props.customer.name }}\n />\n </p>\n\n {isStaff ? (\n <FormField id='masterRole' name='masterRole'>\n {() => (\n <div className='d-flex align-items-center'>\n <ToggleSwitch\n onClick={() => formikProps.setFieldValue(\n 'masterRole',\n formikProps.values.masterRole === UserRole.User ? UserRole.Admin : UserRole.User\n )}\n on={formikProps.values.masterRole === UserRole.Admin}\n />\n <span className='fw-semibold ms-2'>\n <Text namespace={namespace} phrase='setAsAdmin' />\n </span>\n </div>\n )}\n </FormField>\n ) : (\n <FormField\n as='select'\n label={LanguageService.getPhrase(namespace, 'yearGroup')}\n name='userYearGroupId'\n value={formikProps.values.userYearGroupId.toString()}\n className={!formikProps.values.userYearGroupId ? 'text-secondary' : ''}\n showRequiredStar\n >\n <option className='text-secondary' value=''>{LanguageService.getPhrase(namespace, 'selectYearGroup')}</option>\n {validYearGroups.map(yearGroup => (\n <option key={yearGroup.id} value={yearGroup.id.toString()} className='text-dark'>{yearGroup.name}</option>\n ))}\n </FormField>\n )}\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, isStaff ? 'invite' : 'add')}\n variant='dark'\n disabled={isStaff ? false : !formikProps.values.userYearGroupId}\n />\n </PopupButtons>\n </Form>\n )}\n </FormWrapper>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { EditUserDetails } from 'libs/shared/apps/user-manager/components/edit-user-details/EditUserDetails';\nimport { InviteUser } from 'libs/shared/apps/user-manager/components/invite-user/InviteUser';\nimport { UserCreatedSuccess } from 'libs/shared/apps/user-manager/components/user-created-success/UserCreatedSuccess';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { BulkCreateUsersResponse, BulkInviteUsersRequest, BulkUserEmailCheckRequest, BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers, InviteUserRequest, UserEmailCheckResponse } from 'libs/shared/apps/user-manager/interfaces';\nimport { GetIdentityProvidersResponse } from 'libs/shared/apps/user-manager/interfaces/GetIdentityProvidersResponse';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, Customer, PropsWithAnalyticsOptions, PropsWithPopupViewProps, YearGroup } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\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';\nimport { LiteEditSsoUserWarning } from 'apps/user-manager/views/edit-user/component/edit-sso-user-warning/LiteEditSsoUserWarning';\n\nconst CREATE_NEXT_KEY = '_cv:create:next:user';\n\nfunction getInitialUserState(userType: UserGroup, currentUser: CurrentUser): EditUserRequest {\n return {\n firstName: '',\n email: '',\n surname: '',\n username: '',\n userType,\n customerId: currentUser.customerId,\n masterYearGroup: null,\n masterRole: UserRole.User,\n requirePasswordChange: false,\n generatePassword: userType === UserGroup.Learner,\n password: '',\n displayName: null\n };\n}\n\ntype CreateUserViewProps = PropsWithAnalyticsOptions<PropsWithPopupViewProps<{ userType: UserGroup }>>;\n\nexport function CreateUserView(props: CreateUserViewProps): React.ReactElement {\n const [ shouldCreateAnother, setShouldCreateAnother ] = React.useState(!!LocalStorageHelper.get(CREATE_NEXT_KEY));\n const [ creationResponse, setCreationResponse ] = React.useState<BulkCreateUsersResponse>(null);\n\n const [ invitationSent, setInvitationSent ] = React.useState(false);\n const [ detectedUser, setDetectedUser ] = React.useState<UserEmailCheckResponse['user']>(null);\n\n const alerts = useAlerts();\n const dispatch = useDispatch();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(currentUser.data &&\n UserManagerRequests.yearGroups(currentUser.data.customerId));\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n const customer = Flight.useBasicFetch<Customer>(currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId, null, null, true));\n const hasOrg = !!customer.data?.organisation;\n const identityProviders = Flight.useBasicFetch<GetIdentityProvidersResponse>(!!currentUser.data &&\n UserManagerRequests.getIdentityProviders(currentUser.data.customerId));\n\n const namespace = props.userType === UserGroup.Staff\n ? 'userManager.createStaff'\n : 'userManager.createStudent';\n\n const getPhrase = LanguageService.encloseNamespace(namespace);\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.bulkValidate(data));\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 async function saveUser(user: EditUserRequest, onDone: (options?: FormSubmissionOptions) => void): Promise<void> {\n const errors = await validateUser(user);\n\n const isValid = UserManagerHelper.handleAsyncErrors(errors, user, null, onDone);\n\n if (!isValid)\n return;\n\n const data = UserManagerHelper.formatCreateOrValidateUserRequest(\n [user],\n props.userType,\n currentUser.data.customerId\n );\n\n Flight.fetch(\n dispatch,\n UserManagerRequests.createUsers({\n users: data,\n success: res => {\n AnalyticsHelper.logUserAction(data, props.analyticsOptions);\n\n if (shouldCreateAnother)\n onDone({ reset: true });\n\n setCreationResponse({\n ...res,\n hasEmail: !!user.email,\n password: user.password || res.password,\n isBulk: false\n });\n },\n error: () => {\n alerts.error(getPhrase('error'));\n props.closePopup();\n }\n })\n );\n }\n\n function onClickInviteDetectedUser(request: InviteUserRequest): void {\n const data: BulkInviteUsersRequest = {\n userEmails: [request]\n };\n\n fetchAsync(UserManagerRequests.inviteUserToCustomer(currentUser.data.customerId, data))\n .then(() => {\n setInvitationSent(true);\n })\n .catch(() => {\n alerts.error(getPhrase('inviteError', { email: detectedUser.email }));\n props.closePopup();\n });\n }\n\n function onCloseSuccessPopup(): void {\n setCreationResponse(null);\n\n if (!shouldCreateAnother) {\n props.closePopup();\n }\n }\n\n function getTitle(): string {\n if (creationResponse)\n return getPhrase('titleSuccess');\n\n if (detectedUser)\n return getPhrase('titleInviteUser');\n\n return getPhrase('titleCreating');\n }\n\n const dataLoaded = !!currentUser.data && !!passwordPolicy.data && !!yearGroups.data && !!customer.data;\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <Popup closePopup={props.closePopup} title={getTitle()} showLoadingSpinner={!dataLoaded}>\n {(() => {\n if (!dataLoaded)\n return <></>;\n\n if (detectedUser) {\n return (\n <InviteUser\n user={detectedUser}\n customer={customer.data}\n yearGroups={yearGroups.data}\n onClickCancel={() => setDetectedUser(null)}\n onClickInvite={onClickInviteDetectedUser}\n closePopup={props.closePopup}\n invitationSent={invitationSent}\n staffInvitedImageUrl={ImageUrls.EMAIL_SENT}\n studentAddedImageUrl={ImageUrls.UserManager.STUDENT_ADDED}\n />\n );\n }\n\n if (!creationResponse) {\n return (\n <>\n {!!identityProviders.data?.length && (\n <LiteEditSsoUserWarning\n userType={props.userType}\n helpArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.EditSsoAccounts)}\n ssoMappingsApplink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.SSO_YEAR_GROUP_MAPPINGS\n }}\n isNew\n />\n )}\n <EditUserDetails\n onSubmit={saveUser}\n userType={props.userType}\n onClickCancel={props.closePopup}\n yearGroups={yearGroups.data}\n initialValues={getInitialUserState(props.userType, currentUser.data)}\n currentUser={currentUser.data}\n onToggleNextCheckbox={() => setShouldCreateAnother(currentVal => {\n LocalStorageHelper.set(CREATE_NEXT_KEY, !currentVal);\n return !currentVal;\n })}\n shouldGoToNext={shouldCreateAnother}\n goToNextText={getPhrase('createNext')}\n showPasswordField={props.userType === UserGroup.Learner}\n emailRequired={props.userType === UserGroup.Staff}\n submitText={getPhrase('submit')}\n showDisplayNameField={props.userType === UserGroup.Staff}\n passwordPolicy={passwordPolicy.data}\n validateEmail={validateEmail}\n appLinks={getUserManagerAppLinks(props.userType)}\n onDetectValidUser={setDetectedUser}\n hasOrg={hasOrg}\n countryCode={currentUser.data?.countryCode}\n canEditSuperAdmin={currentUser.data?.role === UserRole.SuperAdmin}\n />\n </>\n );\n }\n\n return (\n <UserCreatedSuccess\n onClose={onCloseSuccessPopup}\n creationResponse={creationResponse}\n emailSentImageUrl={ImageUrls.EMAIL_SENT}\n userType={props.userType}\n />\n );\n })()}\n </Popup>\n </UserManagerClientContext.Provider>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { WarningAlert } from 'libs/shared/apps/user-manager/components/warning-alert/WarningAlert';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.editUser';\n\ninterface LiteEditSsoUserWarningProps {\n isNew: boolean;\n userType: UserGroup;\n helpArticle: string;\n ssoMappingsApplink: Core.AppLink;\n}\n\nexport function LiteEditSsoUserWarning(props: LiteEditSsoUserWarningProps): JSX.Element {\n return (\n <WarningAlert className='py-2'>\n <Text\n namespace={namespace}\n phrase={props.isNew ? 'newSsoUserWarning' : 'editSsoUserWarning'}\n />\n\n {!props.isNew && (\n <AppLink appLink={props.ssoMappingsApplink} className='info-link d-block my-1' openInNewTab >\n <Text namespace={namespace} phrase='ssoMapping' />\n </AppLink>\n )}\n\n <a\n className='info-link d-block'\n href={props.helpArticle}\n target='_blank'\n >\n <Text namespace={namespace} phrase='ssoArticleLink' />\n </a>\n \n </WarningAlert>\n );\n}","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["UserCreatedState","namespace","EmailSentImage","props","className","src","emailSentImageUrl","alt","role","UserDetailsDialog","Text","phrase","creationResponse","username","password","EmailedUsersDialog","options","smartCount","isBulk","UserCreatedSuccess","alerts","state","userType","UserGroup","hasEmail","EmailedUsers","ShowDetails","contentComponent","value","CopyToClipboard","onCopy","success","LanguageService","onClose","text","onClick","OnlineSupportArticle","LiteSupportArticle","InviteUser","isStaff","user","validYearGroups","UserHelper","yearGroups","invitationSent","staffInvitedImageUrl","studentAddedImageUrl","email","schoolName","customer","name","PopupButtons","closePopup","variant","FormWrapper","initialValues","masterRole","UserRole","User","userYearGroupId","onSubmit","onClickInvite","allowInitialSubmit","formikProps","FormField","id","disabled","DivButton","onClickCancel","SvgContainer","svgName","ToggleSwitch","setFieldValue","values","on","as","label","toString","showRequiredStar","map","yearGroup","key","CREATE_NEXT_KEY","getInitialUserState","currentUser","firstName","surname","customerId","masterYearGroup","requirePasswordChange","generatePassword","displayName","CreateUserView","LocalStorageHelper","shouldCreateAnother","setShouldCreateAnother","setCreationResponse","setInvitationSent","detectedUser","setDetectedUser","dispatch","fetchAsync","UserRequests","data","UserManagerRequests","passwordPolicy","SecuritySettingsRequests","CustomerRequests","hasOrg","organisation","identityProviders","getPhrase","validateUser","_user","UserManagerHelper","validateEmail","body","userEmails","saveUser","onDone","errors","users","res","AnalyticsHelper","analyticsOptions","reset","error","onClickInviteDetectedUser","request","then","onCloseSuccessPopup","dataLoaded","UserManagerClientContext","UserManagerClient","Popup","title","showLoadingSpinner","ImageUrls","U","length","LiteEditSsoUserWarning","helpArticle","ArticleHelper","ssoMappingsApplink","application","action","isNew","EditUserDetails","onToggleNextCheckbox","currentVal","shouldGoToNext","goToNextText","showPasswordField","emailRequired","submitText","showDisplayNameField","appLinks","onDetectValidUser","countryCode","canEditSuperAdmin","W","appLink","openInNewTab","href","target","deselectCurrent","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","format","preventDefault","clipboardData","console","warn","window","clearData","setData","appendChild","selectNodeContents","addRange","execCommand","Error","err","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","i","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","getPrototypeOf","_React$PureComponent","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Boolean","valueOf","call","_isNativeReflectConstruct","result","Super","NewTarget","this","_possibleConstructorReturn","_this","instance","_classCallCheck","_len","args","Array","_key","concat","event","_this$props","children","elem","Children","only","_this$props2","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","type","focus"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/4802-bc321d7ede-lite.chunk.js","mappings":";wIAAYA,oCAAZ,SAAYA,GACV,6BACA,kCACA,8BACD,CAJD,CAAYA,IAAAA,EAAgB,0CCWtBC,EAAY,iCASlB,SAASC,EAAeC,GACtB,OACE,uBAAKC,UAAU,mDACb,uBACEC,IAAKF,EAAMG,kBACXC,IAAI,GACJC,KAAK,eACLJ,UAAU,UAIlB,CAEA,SAASK,EAAkBN,GACzB,OACE,gCACE,yBAAG,gBAACO,EAAA,EAAI,CAACC,OAAO,qBAEhB,qBAAGP,UAAU,oBAAmB,gBAACM,EAAA,EAAI,CAACC,OAAO,cAC7C,yBAAIR,EAAMS,iBAAiBC,UAE3B,qBAAGT,UAAU,oBAAmB,gBAACM,EAAA,EAAI,CAACC,OAAO,cAC7C,yBAAIR,EAAMS,iBAAiBE,UAGjC,CAEA,SAASC,EAAmBZ,GAC1B,OACE,gCACE,gBAACD,EAAc,iBAAKC,IACpB,yBACE,gBAACO,EAAA,EAAI,CAACC,OAAO,mBAAmBK,QAAS,CAAEC,WAAYd,EAAMS,iBAAiBM,OAAS,EAAI,MAInG,CAEM,SAAUC,EAAmBhB,GACjC,IAAMiB,GAAS,SAOTC,EAA0B,UAAc,WAC5C,OAAIlB,EAAMmB,WAAaC,EAAA,SAGnBpB,EAAMS,iBAAiBM,QAAUf,EAAMS,iBAAiBY,SAFnDxB,EAAiByB,aAKnBzB,EAAiB0B,WAC1B,EAAG,CAACvB,EAAMS,mBAEV,IAAKS,EACH,OAAO,iCAET,IAAMM,EAAoB,WACxB,OAAQN,GACN,KAAKrB,EAAiB0B,YACpB,OAAO,gBAACjB,EAAiB,iBAAKN,IAChC,KAAKH,EAAiByB,aACpB,OAAO,gBAACV,EAAkB,iBAAKZ,IAErC,CAP0B,GAS1B,OACE,gBAAC,aAAiC,CAACyB,MAAO3B,GAEvC0B,EAED,uBAAKvB,UAAU,yDACZiB,IAAUrB,EAAiB0B,YAExB,gBAAC,EAAAG,gBAAe,CACdC,OApCZ,WACEV,EAAOW,QAAQC,EAAA,YAA0B/B,EAAW,WACpDE,EAAM8B,SACR,EAkCYC,KAAI,UAAK/B,EAAMS,iBAAiBC,SAAQ,cAAMV,EAAMS,iBAAiBE,WAErE,0BAAQV,UAAU,gBAChB,gBAACM,EAAA,EAAI,CAACC,OAAO,WAIjB,0BAAQwB,QAAShC,EAAM8B,QAAS7B,UAAU,gBACxC,gBAACM,EAAA,EAAI,CAACC,OAAO,WAO3B,gCC/GA,IAAYyB,EAcAC,mBAdZ,SAAYD,GACV,+BACA,kCAGA,+BACA,6BACA,+BACA,uCACA,+BACA,8BACA,8BACD,CAZD,CAAYA,IAAAA,EAAoB,KAchC,SAAYC,GACV,+BACA,6BACA,kCACA,kCACA,yCACA,+BACA,uCACA,iCACA,sCACA,kCACA,qCACA,6BACA,mCACA,sCACA,2BACA,0CACA,yCACA,kCACD,CAnBD,CAAYA,IAAAA,EAAkB,6RCf9B,SAAgB,YAAc,SCoB9B,IAAMpC,EAAY,yBAeZ,SAAUqC,EAAWnC,GACzB,IAAMoC,EAAUpC,EAAMqC,KAAKlB,WAAaC,EAAA,QAClCkB,EAAkBC,EAAA,qBAA8BvC,EAAMwC,YAE5D,OAAIxC,EAAMyC,eAEN,gCACE,uBAAKxC,UAAU,mDACb,uBACEC,IAAKkC,EAAUpC,EAAM0C,qBAAuB1C,EAAM2C,qBAClDvC,IAAI,GACJC,KAAK,eACLJ,UAAU,WAGd,yBACE,gBAACM,EAAA,EAAI,CACHT,UAAWA,EACXU,OAAQ4B,EAAU,iBAAmB,eACrCvB,QAAS,CAAE+B,MAAO5C,EAAMqC,KAAKO,MAAOC,WAAY7C,EAAM8C,SAASC,SAInE,gBAACC,EAAA,EAAY,KACX,gBAACA,EAAA,SAAmB,CAClBjB,KAAMF,EAAA,YAA0B/B,EAAW,QAC3CkC,QAAShC,EAAMiD,WACfC,QAAQ,WAQhB,gBAACC,EAAA,EAAW,CACVC,cAAe,CACbR,MAAO5C,EAAMqC,KAAKO,MAClBzB,SAAUnB,EAAMqC,KAAKlB,SACrBkC,WAAYC,EAAA,EAAAC,KACZC,gBAAiB,IAEnBC,SAAUzD,EAAM0D,cAChBC,oBAAkB,GAEjB,SAAAC,GAAW,OACV,gBAAC,KAAI,KACH,uBAAK3D,UAAU,qBACb,gBAAC4D,EAAA,EAAS,CAACC,GAAG,QAAQf,KAAK,QAAQgB,UAAQ,IAE3C,gBAACC,EAAA,EAAS,CAAChC,QAAShC,EAAMiE,cAAehE,UAAW,eAClD,gBAACiE,EAAA,EAAY,CAACC,QAAS,eAI3B,yBAAG,gBAAC5D,EAAA,EAAI,CAACT,UAAWA,EAAWU,OAAQ4B,EAAU,qBAAuB,0BACxE,yBACE,gBAAC7B,EAAA,EAAI,CACHT,UAAWA,EACXU,OAAQ4B,EAAU,iBAAmB,cACrCvB,QAAS,CAAEgC,WAAY7C,EAAM8C,SAASC,SAIzCX,EACC,gBAACyB,EAAA,EAAS,CAACC,GAAG,aAAaf,KAAK,cAC7B,kBACC,uBAAK9C,UAAU,6BACb,gBAACmE,EAAA,EAAY,CACXpC,QAAS,WAAF,OAAQ4B,EAAYS,cACzB,aACAT,EAAYU,OAAOjB,aAAeC,EAAA,EAAAC,KAAgBD,EAAA,QAAiBA,EAAA,EAAAC,KACpE,EACDgB,GAAIX,EAAYU,OAAOjB,aAAeC,EAAA,UAExC,wBAAMrD,UAAU,oBACd,gBAACM,EAAA,EAAI,CAACT,UAAWA,EAAWU,OAAO,gBAEjC,GAIV,gBAACqD,EAAA,EAAS,CACRW,GAAG,SACHC,MAAO5C,EAAA,YAA0B/B,EAAW,aAC5CiD,KAAK,kBACLtB,MAAOmC,EAAYU,OAAOd,gBAAgBkB,WAC1CzE,UAAY2D,EAAYU,OAAOd,gBAAqC,GAAnB,iBACjDmB,kBAAgB,GAEhB,0BAAQ1E,UAAU,iBAAiBwB,MAAM,IAAII,EAAA,YAA0B/B,EAAW,oBACjFwC,EAAgBsC,IAAI,SAAAC,GAAS,OAC5B,0BAAQC,IAAKD,EAAUf,GAAIrC,MAAOoD,EAAUf,GAAGY,WAAYzE,UAAU,aAAa4E,EAAU9B,KAAc,IAKhH,gBAACC,EAAA,EAAY,KACX,gBAACA,EAAA,SAAmB,CAAChB,QAAShC,EAAMiE,gBACpC,gBAACjB,EAAA,SAAmB,CAClBjB,KAAMF,EAAA,YAA0B/B,EAAWsC,EAAU,SAAW,OAChEc,QAAQ,OACRa,UAAU3B,IAAmBwB,EAAYU,OAAOd,mBAG/C,EAIf,k/GC3GMuB,EAAkB,uBAExB,SAASC,EAAoB7D,EAAqB8D,GAChD,MAAO,CACLC,UAAW,GACXtC,MAAO,GACPuC,QAAS,GACTzE,SAAU,GACVS,SAAAA,EACAiE,WAAYH,EAAYG,WACxBC,gBAAiB,KACjBhC,WAAYC,EAAA,EAAAC,KACZ+B,uBAAuB,EACvBC,iBAAkBpE,IAAaC,EAAA,UAC/BT,SAAU,GACV6E,YAAa,KAEjB,CAIM,SAAUC,EAAezF,SACoF,IAAzD,aAAiB0F,EAAA,OAAuBX,IAAiB,GAAzGY,EAAmB,KAAEC,EAAsB,KAC4C,IAA7C,WAAwC,MAAK,GAAvFnF,EAAgB,KAAEoF,EAAmB,KAEsB,IAArB,YAAe,GAAM,GAA3DpD,EAAc,KAAEqD,EAAiB,KACqD,IAApD,WAA+C,MAAK,GAAtFC,EAAY,KAAEC,EAAe,KAE/B/E,GAAS,SACTgF,GAAW,UACXC,EAAa,uBAEbjB,EAAc,kBAAkCkB,EAAA,iBAChD3D,EAAa,kBAAkCyC,EAAYmB,MAC/DC,EAAA,aAA+BpB,EAAYmB,KAAKhB,aAC5CkB,EAAiB,kBAA+CrB,EAAYmB,MAChFG,EAAA,8BAAqDtB,EAAYmB,KAAKhB,aAClEtC,EAAW,kBAA+BmC,EAAYmB,MAC1DI,EAAA,WAA0BvB,EAAYmB,KAAKhB,WAAY,KAAM,MAAM,IAC/DqB,KAAwB,QAAb,EAAA3D,EAASsD,YAAI,eAAEM,cAC1BC,GAAoB,oBAAqD1B,EAAYmB,MACzFC,EAAA,uBAAyCpB,EAAYmB,KAAKhB,aAEtDtF,GAAYE,EAAMmB,WAAaC,EAAA,QACjC,0BACA,4BAEEwF,GAAY/E,EAAA,mBAAiC/B,IAEnD,SAAS+G,GAAaC,GACpB,IAAMV,EAAOW,EAAA,oCACX,CAACD,GACD9G,EAAMmB,SACN8D,EAAYmB,KAAKhB,YAGnB,OAAOc,EAAWG,EAAA,eAAiCD,GACrD,CAEA,SAASY,GAAcpE,GACrB,IAAMqE,EAAkC,CACtCC,WAAY,CAAC,CAAEtE,MAAAA,EAAOzB,SAAUnB,EAAMmB,YAGxC,OAAO+E,EAAWG,EAAA,iBAAmCY,EAAMhC,EAAYmB,KAAKhB,YAC9E,CAEA,SAAe+B,GAAS9E,EAAuB+E,6GAC9B,aAAMP,GAAaxE,GAAK,OAEwC,GAFzEgF,EAAS,EAAH,EAEIN,EAAA,oBAAoCM,EAAQhF,EAAM,KAAM+E,GAE5D,kCAGNhB,EAAOW,EAAA,oCACX,CAAC1E,GACDrC,EAAMmB,SACN8D,EAAYmB,KAAKhB,YAGnB,UACEa,EACAI,EAAA,cAAgC,CAC9BiB,MAAOlB,EACPxE,QAAS,SAAA2F,GACPC,EAAA,gBAA8BpB,EAAMpG,EAAMyH,kBAEtC9B,GACFyB,EAAO,CAAEM,OAAO,IAElB7B,EAAoB,OAAD,wBACd0B,GAAG,CACNlG,WAAYgB,EAAKO,MACjBjC,SAAU0B,EAAK1B,UAAY4G,EAAI5G,SAC/BI,QAAQ,IAEZ,EACA4G,MAAO,WACL1G,EAAO0G,MAAMf,GAAU,UACvB5G,EAAMiD,YACR,KAEF,4BACH,CAED,SAAS2E,GAA0BC,GACjC,IAAMzB,EAA+B,CACnCc,WAAY,CAACW,IAGf3B,EAAWG,EAAA,uBAAyCpB,EAAYmB,KAAKhB,WAAYgB,IAC9E0B,KAAK,WACJhC,GAAkB,EACpB,GAAE,MACK,WACL7E,EAAO0G,MAAMf,GAAU,cAAe,CAAEhE,MAAOmD,EAAanD,SAC5D5C,EAAMiD,YACR,EACJ,CAEA,SAAS8E,KACPlC,EAAoB,MAEfF,GACH3F,EAAMiD,YAEV,CAYA,IAAM+E,MAAe/C,EAAYmB,MAAUE,EAAeF,MAAU5D,EAAW4D,MAAUtD,EAASsD,MAElG,OACE,gBAAC6B,EAAA,WAAiC,CAACxG,MAAOyG,EAAA,WACxC,gBAACC,EAAA,EAAK,CAAClF,WAAYjD,EAAMiD,WAAYmF,MAZ9BxB,GADLnG,EACe,eAEfsF,EACe,kBAEF,iBAOyCsC,oBAAqBL,IACzE,qBACA,OAAKA,GAGDjC,EAEA,gBAAC5D,EAAU,CACTE,KAAM0D,EACNjD,SAAUA,EAASsD,KACnB5D,WAAYA,EAAW4D,KACvBnC,cAAe,WAAF,OAAQ+B,EAAgB,KAAK,EAC1CtC,cAAekE,GACf3E,WAAYjD,EAAMiD,WAClBR,eAAgBA,EAChBC,qBAAsB4F,EAAA,aACtB3F,qBAAsB2F,EAAA,8BAKvB7H,EA4CH,gBAACO,EAAAuH,EAAkB,CACjBzG,QAASiG,GACTtH,iBAAkBA,EAClBN,kBAAmBmI,EAAA,aACnBnH,SAAUnB,EAAMmB,WA9ChB,mCAC2B,QAAtB,EAAAwF,GAAkBP,YAAI,eAAEoC,SACzB,gBAACC,EAAA,EAAsB,CACrBtH,SAAUnB,EAAMmB,SAChBuH,YAAaC,EAAA,iBAA6B,qBAC1CC,mBAAoB,CAClBC,YAAa,aACbC,OAAQ,sCAEVC,OAAK,IAGT,gBAACC,EAAA,EAAe,CACdvF,SAAU0D,GACVhG,SAAUnB,EAAMmB,SAChB8C,cAAejE,EAAMiD,WACrBT,WAAYA,EAAW4D,KACvBhD,cAAe4B,EAAoBhF,EAAMmB,SAAU8D,EAAYmB,MAC/DnB,YAAaA,EAAYmB,KACzB6C,qBAAsB,WAAF,OAAQrD,EAAuB,SAAAsD,GAEjD,OADAxD,EAAA,OAAuBX,GAAkBmE,IACjCA,CACV,EAAE,EACFC,eAAgBxD,EAChByD,aAAcxC,GAAU,cACxByC,kBAAmBrJ,EAAMmB,WAAaC,EAAA,UACtCkI,cAAetJ,EAAMmB,WAAaC,EAAA,QAClCmI,WAAY3C,GAAU,UACtB4C,qBAAsBxJ,EAAMmB,WAAaC,EAAA,QACzCkF,eAAgBA,EAAeF,KAC/BY,cAAeA,GACfyC,UAAU,OAAuBzJ,EAAMmB,UACvCuI,kBAAmB1D,EACnBS,OAAQA,EACRkD,YAA6B,QAAhB,EAAA1E,EAAYmB,YAAI,eAAEuD,YAC/BC,mBAAmC,QAAhB,EAAA3E,EAAYmB,YAAI,eAAE/F,QAASiD,EAAA,gBAvD7C,gCAqEX,CAvEE,IA2EV,iGCxPMxD,EAAY,uBASZ,SAAU2I,EAAuBzI,GACrC,OACE,gBAAC,EAAA6J,EAAY,CAAC5J,UAAU,QACtB,gBAAC,IAAI,CACHH,UAAWA,EACXU,OAAQR,EAAM+I,MAAQ,oBAAsB,wBAG5C/I,EAAM+I,OACN,gBAAC,IAAO,CAACe,QAAS9J,EAAM4I,mBAAoB3I,UAAU,yBAAyB8J,cAAY,GACzF,gBAAC,IAAI,CAACjK,UAAWA,EAAWU,OAAO,gBAIvC,qBACEP,UAAU,oBACV+J,KAAMhK,EAAM0I,YACZuB,OAAO,UAEP,gBAAC,IAAI,CAACnK,UAAWA,EAAWU,OAAO,oBAK3C,gCCxCA,IAAI0J,EAAkB,EAAQ,OAE1BC,EAA4B,CAC9B,aAAc,OACd,YAAa,MACb,QAAW,QA2GbC,EAAOC,QAjGP,SAActI,EAAMlB,GAClB,IAAIyJ,EACFC,EACAC,EACAC,EACAC,EACAC,EACA/I,GAAU,EACPf,IACHA,EAAU,CAAC,GAEbyJ,EAAQzJ,EAAQyJ,QAAS,EACzB,IAkDE,GAjDAE,EAAmBN,IAEnBO,EAAQG,SAASC,cACjBH,EAAYE,SAASE,gBAErBH,EAAOC,SAASG,cAAc,SACzBC,YAAcjJ,EAEnB4I,EAAKM,WAAa,OAElBN,EAAKO,MAAMC,IAAM,QAEjBR,EAAKO,MAAME,SAAW,QACtBT,EAAKO,MAAMG,IAAM,EACjBV,EAAKO,MAAMI,KAAO,mBAElBX,EAAKO,MAAMK,WAAa,MAExBZ,EAAKO,MAAMM,iBAAmB,OAC9Bb,EAAKO,MAAMO,cAAgB,OAC3Bd,EAAKO,MAAMQ,aAAe,OAC1Bf,EAAKO,MAAMS,WAAa,OACxBhB,EAAKiB,iBAAiB,OAAQ,SAASC,GAErC,GADAA,EAAEC,kBACEjL,EAAQkL,OAEV,GADAF,EAAEG,sBAC6B,IAApBH,EAAEI,cAA+B,CAC1C3B,GAAS4B,QAAQC,KAAK,iCACtB7B,GAAS4B,QAAQC,KAAK,4BACtBC,OAAOH,cAAcI,YACrB,IAAIN,EAAS5B,EAA0BtJ,EAAQkL,SAAW5B,EAAmC,QAC7FiC,OAAOH,cAAcK,QAAQP,EAAQhK,EACvC,MACE8J,EAAEI,cAAcI,YAChBR,EAAEI,cAAcK,QAAQzL,EAAQkL,OAAQhK,GAGxClB,EAAQc,SACVkK,EAAEG,iBACFnL,EAAQc,OAAOkK,EAAEI,eAErB,GAEArB,SAAS3D,KAAKsF,YAAY5B,GAE1BF,EAAM+B,mBAAmB7B,GACzBD,EAAU+B,SAAShC,IAEFG,SAAS8B,YAAY,QAEpC,MAAM,IAAIC,MAAM,iCAElB/K,GAAU,CACZ,CAAE,MAAOgL,GACPtC,GAAS4B,QAAQvE,MAAM,qCAAsCiF,GAC7DtC,GAAS4B,QAAQC,KAAK,4BACtB,IACEC,OAAOH,cAAcK,QAAQzL,EAAQkL,QAAU,OAAQhK,GACvDlB,EAAQc,QAAUd,EAAQc,OAAOyK,OAAOH,eACxCrK,GAAU,CACZ,CAAE,MAAOgL,GACPtC,GAAS4B,QAAQvE,MAAM,uCAAwCiF,GAC/DtC,GAAS4B,QAAQvE,MAAM,0BACvB4C,EAjFN,SAAgBA,GACd,IAAIsC,GAAW,YAAYC,KAAKC,UAAUC,WAAa,IAAM,QAAU,KACvE,OAAOzC,EAAQ0C,QAAQ,gBAAiBJ,EAC1C,CA8EgBd,CAAO,YAAalL,EAAUA,EAAQ0J,QAnFjC,oCAoFf6B,OAAOc,OAAO3C,EAASxI,EACzB,CACF,CAAE,QACI2I,IACkC,mBAAzBA,EAAUyC,YACnBzC,EAAUyC,YAAY1C,GAEtBC,EAAU0C,mBAIVzC,GACFC,SAAS3D,KAAKoG,YAAY1C,GAE5BH,GACF,CAEA,OAAO5I,CACT,gCC9GA,SAAS0L,EAAQC,GAAkC,OAAOD,EAAU,mBAAqBE,QAAU,iBAAmBA,OAAOC,SAAW,SAAUF,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAO,mBAAqBC,QAAUD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,CAAK,EAAGD,EAAQC,EAAM,CAE/UK,OAAOC,eAAexD,EAAS,aAAc,CAC3C5I,OAAO,IAET4I,EAAQ3I,qBAAkB,EAE1B,IAAIoM,EAASC,EAAuB,EAAQ,QAExCC,EAAmBD,EAAuB,EAAQ,QAElDE,EAAY,CAAC,OAAQ,SAAU,UAAW,YAE9C,SAASF,EAAuBR,GAAO,OAAOA,GAAOA,EAAIW,WAAaX,EAAM,CAAE,QAAWA,EAAO,CAEhG,SAASY,EAAQC,EAAQC,GAAkB,IAAIC,EAAOV,OAAOU,KAAKF,GAAS,GAAIR,OAAOW,sBAAuB,CAAE,IAAIC,EAAUZ,OAAOW,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,OAAO,SAAUC,GAAO,OAAOd,OAAOe,yBAAyBP,EAAQM,GAAKE,UAAY,IAAKN,EAAKO,KAAKC,MAAMR,EAAME,EAAU,CAAE,OAAOF,CAAM,CAEpV,SAASS,EAAc9E,GAAU,IAAK,IAAI+E,EAAI,EAAGA,EAAIC,UAAUzG,OAAQwG,IAAK,CAAE,IAAIE,EAAS,MAAQD,UAAUD,GAAKC,UAAUD,GAAK,CAAC,EAAGA,EAAI,EAAIb,EAAQP,OAAOsB,IAAS,GAAIC,QAAQ,SAAUrK,GAAOsK,EAAgBnF,EAAQnF,EAAKoK,EAAOpK,GAAO,GAAK8I,OAAOyB,0BAA4BzB,OAAO0B,iBAAiBrF,EAAQ2D,OAAOyB,0BAA0BH,IAAWf,EAAQP,OAAOsB,IAASC,QAAQ,SAAUrK,GAAO8I,OAAOC,eAAe5D,EAAQnF,EAAK8I,OAAOe,yBAAyBO,EAAQpK,GAAO,EAAI,CAAE,OAAOmF,CAAQ,CAQzf,SAASsF,EAAkBtF,EAAQjK,GAAS,IAAK,IAAIgP,EAAI,EAAGA,EAAIhP,EAAMwI,OAAQwG,IAAK,CAAE,IAAIQ,EAAaxP,EAAMgP,GAAIQ,EAAWZ,WAAaY,EAAWZ,aAAc,EAAOY,EAAWC,cAAe,EAAU,UAAWD,IAAYA,EAAWE,UAAW,GAAM9B,OAAOC,eAAe5D,EAAQuF,EAAW1K,IAAK0K,EAAa,CAAE,CAM5T,SAASG,EAAgBC,EAAGC,GAA+G,OAA1GF,EAAkB/B,OAAOkC,gBAAkB,SAAyBF,EAAGC,GAAsB,OAAjBD,EAAEG,UAAYF,EAAUD,CAAG,EAAUD,EAAgBC,EAAGC,EAAI,CAMzK,SAASG,EAAuBC,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,CAAM,CAIrK,SAASE,EAAgBP,GAAwJ,OAAnJO,EAAkBvC,OAAOkC,eAAiBlC,OAAOwC,eAAiB,SAAyBR,GAAK,OAAOA,EAAEG,WAAanC,OAAOwC,eAAeR,EAAI,EAAUO,EAAgBP,EAAI,CAE5M,SAASR,EAAgB7B,EAAKzI,EAAKrD,GAAiK,OAApJqD,KAAOyI,EAAOK,OAAOC,eAAeN,EAAKzI,EAAK,CAAErD,MAAOA,EAAOmN,YAAY,EAAMa,cAAc,EAAMC,UAAU,IAAkBnC,EAAIzI,GAAOrD,EAAgB8L,CAAK,CAEhN,IAAI7L,EAA+B,SAAU2O,IAhB7C,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,sDAAyDF,EAAS3C,UAAYC,OAAO6C,OAAOF,GAAcA,EAAW5C,UAAW,CAAED,YAAa,CAAEjM,MAAO6O,EAAUZ,UAAU,EAAMD,cAAc,KAAW7B,OAAOC,eAAeyC,EAAU,YAAa,CAAEZ,UAAU,IAAca,GAAYZ,EAAgBW,EAAUC,EAAa,CAiBjcG,CAAUhP,EAAiB2O,GAE3B,IArBoBM,EAAaC,EAMbC,EAAeC,EAe/BC,GAfgBF,EAeMnP,EAfSoP,EAMrC,WAAuC,GAAuB,oBAAZE,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAUC,KAAM,OAAO,EAAO,GAAqB,mBAAVC,MAAsB,OAAO,EAAM,IAAsF,OAAhFC,QAAQzD,UAAU0D,QAAQC,KAAKN,QAAQC,UAAUG,QAAS,GAAI,WAAa,KAAY,CAAM,CAAE,MAAOvF,GAAK,OAAO,CAAO,CAAE,CANvQ0F,GAAoC,WAAkC,IAAsCC,EAAlCC,EAAQtB,EAAgBU,GAAkB,GAAIC,EAA2B,CAAE,IAAIY,EAAYvB,EAAgBwB,MAAMjE,YAAa8D,EAASR,QAAQC,UAAUQ,EAAOxC,UAAWyC,EAAY,MAASF,EAASC,EAAM3C,MAAM6C,KAAM1C,WAAc,OAEpX,SAAoCgB,EAAMqB,GAAQ,GAAIA,IAA2B,WAAlBhE,EAAQgE,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAId,UAAU,4DAA+D,OAAOR,EAAuBC,EAAO,CAF4F2B,CAA2BD,KAAMH,EAAS,GAiBna,SAAS9P,IACP,IAAImQ,GA5BR,SAAyBC,EAAUnB,GAAe,KAAMmB,aAAoBnB,GAAgB,MAAM,IAAIH,UAAU,oCAAwC,CA8BpJuB,CAAgBJ,KAAMjQ,GAEtB,IAAK,IAAIsQ,EAAO/C,UAAUzG,OAAQyJ,EAAO,IAAIC,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/EF,EAAKE,GAAQlD,UAAUkD,GA0BzB,OArBA/C,EAAgBY,EAFhB6B,EAAQd,EAAOO,KAAKxC,MAAMiC,EAAQ,CAACY,MAAMS,OAAOH,KAED,UAAW,SAAUI,GAClE,IAAIC,EAAcT,EAAM7R,MACpB+B,EAAOuQ,EAAYvQ,KACnBJ,EAAS2Q,EAAY3Q,OACrB4Q,EAAWD,EAAYC,SACvB1R,EAAUyR,EAAYzR,QAEtB2R,EAAO1E,EAAgB,QAAE2E,SAASC,KAAKH,GAEvCf,GAAS,EAAIxD,EAA0B,SAAGjM,EAAMlB,GAEhDc,GACFA,EAAOI,EAAMyP,GAIXgB,GAAQA,EAAKxS,OAAuC,mBAAvBwS,EAAKxS,MAAMgC,SAC1CwQ,EAAKxS,MAAMgC,QAAQqQ,EAEvB,GAEOR,CACT,CAoBA,OA5EoBlB,EA0DPjP,GA1DoBkP,EA0DH,CAAC,CAC7B9L,IAAK,SACLrD,MAAO,WACL,IAAIkR,EAAehB,KAAK3R,MAIpBuS,GAHQI,EAAa5Q,KACX4Q,EAAahR,OACZgR,EAAa9R,QACb8R,EAAaJ,UACxBvS,EA1EV,SAAkCkP,EAAQ0D,GAAY,GAAc,MAAV1D,EAAgB,MAAO,CAAC,EAAG,IAAkEpK,EAAKkK,EAAnE/E,EAEzF,SAAuCiF,EAAQ0D,GAAY,GAAc,MAAV1D,EAAgB,MAAO,CAAC,EAAG,IAA2DpK,EAAKkK,EAA5D/E,EAAS,CAAC,EAAO4I,EAAajF,OAAOU,KAAKY,GAAqB,IAAKF,EAAI,EAAGA,EAAI6D,EAAWrK,OAAQwG,IAAOlK,EAAM+N,EAAW7D,GAAQ4D,EAASE,QAAQhO,IAAQ,IAAamF,EAAOnF,GAAOoK,EAAOpK,IAAQ,OAAOmF,CAAQ,CAFhN8I,CAA8B7D,EAAQ0D,GAAuB,GAAIhF,OAAOW,sBAAuB,CAAE,IAAIyE,EAAmBpF,OAAOW,sBAAsBW,GAAS,IAAKF,EAAI,EAAGA,EAAIgE,EAAiBxK,OAAQwG,IAAOlK,EAAMkO,EAAiBhE,GAAQ4D,EAASE,QAAQhO,IAAQ,GAAkB8I,OAAOD,UAAUsF,qBAAqB3B,KAAKpC,EAAQpK,KAAgBmF,EAAOnF,GAAOoK,EAAOpK,GAAQ,CAAE,OAAOmF,CAAQ,CA0EzdiJ,CAAyBP,EAAc1E,GAE/CuE,EAAO1E,EAAgB,QAAE2E,SAASC,KAAKH,GAE3C,OAAoBzE,EAAgB,QAAEqF,aAAaX,EAAMzD,EAAcA,EAAc,CAAC,EAAG/O,GAAQ,CAAC,EAAG,CACnGgC,QAAS2P,KAAK3P,UAElB,MAzE0EuN,EAAkBoB,EAAYhD,UAAWiD,GAA2EhD,OAAOC,eAAe8C,EAAa,YAAa,CAAEjB,UAAU,IA4ErPhO,CACT,CA3DmC,CA2DjCoM,EAAgB,QAAEsF,eAEpB/I,EAAQ3I,gBAAkBA,EAE1B0N,EAAgB1N,EAAiB,eAAgB,CAC/CC,YAAQ0R,EACRxS,aAASwS,kCC9GX,IACI3R,EADW,EAAQ,OACQA,gBAE/BA,EAAgBA,gBAAkBA,EAClC0I,EAAOC,QAAU3I,aCLjB0I,EAAOC,QAAU,WACf,IAAIK,EAAYE,SAASE,eACzB,IAAKJ,EAAU4I,WACb,OAAO,WAAa,EAKtB,IAHA,IAAIC,EAAS3I,SAAS4I,cAElBC,EAAS,GACJzE,EAAI,EAAGA,EAAItE,EAAU4I,WAAYtE,IACxCyE,EAAO5E,KAAKnE,EAAUgJ,WAAW1E,IAGnC,OAAQuE,EAAOI,QAAQC,eACrB,IAAK,QACL,IAAK,WACHL,EAAOM,OACP,MAEF,QACEN,EAAS,KAKb,OADA7I,EAAU0C,kBACH,WACc,UAAnB1C,EAAUoJ,MACVpJ,EAAU0C,kBAEL1C,EAAU4I,YACbG,EAAOtE,QAAQ,SAAS1E,GACtBC,EAAU+B,SAAShC,EACrB,GAGF8I,GACAA,EAAOQ,OACT,CACF","sources":["file:///app/packages/libs/shared/src/apps/user-manager/enums/UserCreatedState.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/user-created-success/UserCreatedSuccess.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/invite-user/invite-user.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/invite-user/InviteUser.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/create-user/CreateUserView.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/edit-user/component/edit-sso-user-warning/LiteEditSsoUserWarning.tsx","file:///app/node_modules/copy-to-clipboard/index.js","file:///app/node_modules/react-copy-to-clipboard/lib/Component.js","file:///app/node_modules/react-copy-to-clipboard/lib/index.js","file:///app/node_modules/toggle-selection/index.js"],"sourcesContent":["export enum UserCreatedState {\n ShowDetails = 'show-details',\n EmailedUsers = 'emailed-students',\n EmailedAdmin = 'emailed-admin'\n}","import React from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UserCreatedState } from 'libs/shared/apps/user-manager/enums/UserCreatedState';\nimport { BulkCreateUsersResponse } from 'libs/shared/apps/user-manager/interfaces';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nconst namespace = 'userManager.userCreatedSuccess';\n\ninterface UserCreatedSuccessProps {\n creationResponse: BulkCreateUsersResponse;\n userType: UserGroup;\n onClose: () => void;\n emailSentImageUrl: string;\n}\n\nfunction EmailSentImage(props: UserCreatedSuccessProps): JSX.Element {\n return (\n <div className='d-flex justify-content-center w-50 mx-auto pb-3'>\n <img\n src={props.emailSentImageUrl}\n alt=''\n role='presentation'\n className='w-100'\n />\n </div>\n );\n}\n\nfunction UserDetailsDialog(props: UserCreatedSuccessProps): JSX.Element {\n return (\n <>\n <p><Text phrase='userDetailsInfo' /></p>\n\n <p className='mb-0 fw-semibold'><Text phrase='username' /></p>\n <p>{props.creationResponse.username}</p>\n\n <p className='mb-0 fw-semibold'><Text phrase='password' /></p>\n <p>{props.creationResponse.password}</p>\n </>\n );\n}\n\nfunction EmailedUsersDialog(props: UserCreatedSuccessProps): JSX.Element {\n return (\n <>\n <EmailSentImage {...props} />\n <p>\n <Text phrase='emailedUsersInfo' options={{ smartCount: props.creationResponse.isBulk ? 2 : 1 }} />\n </p>\n </>\n );\n}\n\nexport function UserCreatedSuccess(props: UserCreatedSuccessProps): JSX.Element {\n const alerts = useAlerts();\n\n function onCopyToClipboard(): void {\n alerts.success(LanguageService.getPhrase(namespace, 'copied'));\n props.onClose();\n }\n\n const state: UserCreatedState = React.useMemo(() => {\n if (props.userType === UserGroup.Staff)\n return UserCreatedState.EmailedUsers;\n \n if (props.creationResponse.isBulk || props.creationResponse.hasEmail)\n return UserCreatedState.EmailedUsers;\n\n return UserCreatedState.ShowDetails;\n }, [props.creationResponse]);\n\n if (!state)\n return <></>;\n\n const contentComponent = (() => {\n switch (state) {\n case UserCreatedState.ShowDetails:\n return <UserDetailsDialog {...props} />;\n case UserCreatedState.EmailedUsers:\n return <EmailedUsersDialog {...props} />;\n }\n })();\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n\n {contentComponent}\n\n <div className='d-flex justify-content-end border-top pt-3 px-3 mx-n3'>\n {state === UserCreatedState.ShowDetails\n ? (\n <CopyToClipboard\n onCopy={onCopyToClipboard}\n text={`${props.creationResponse.username} - ${props.creationResponse.password}`}\n >\n <button className='btn btn-dark'>\n <Text phrase='copy' />\n </button>\n </CopyToClipboard>\n ) : (\n <button onClick={props.onClose} className='btn btn-dark'>\n <Text phrase='okay' />\n </button>\n )\n }\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '27927466562201',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097',\n ManageGroupPermissions = '35407217335705',\n MarcFormatDifferences = '48276917260441',\n ExportLibraries = '17684275853465'\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"closeButton\":\"q_0FU\"};","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { InviteUserRequest, UserEmailCheckResponse } from 'libs/shared/apps/user-manager/interfaces';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\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 { UserRole } from 'libs/shared/enums/UserRole';\nimport { Customer, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './invite-user.scss';\n\nconst namespace = 'userManager.inviteUser';\n\ninterface InviteUserProps {\n user: UserEmailCheckResponse['user'];\n customer: Customer;\n yearGroups: YearGroup[];\n onClickInvite: (request: InviteUserRequest) => void;\n onClickCancel: () => void;\n closePopup: () => void;\n invitationSent: boolean;\n\n staffInvitedImageUrl: string;\n studentAddedImageUrl: string;\n}\n\nexport function InviteUser(props: InviteUserProps): JSX.Element {\n const isStaff = props.user.userType === UserGroup.Staff;\n const validYearGroups = UserHelper.getValidYearGroups(props.yearGroups);\n\n if (props.invitationSent) {\n return (\n <>\n <div className='d-flex justify-content-center w-50 mx-auto pb-3'>\n <img\n src={isStaff ? props.staffInvitedImageUrl : props.studentAddedImageUrl}\n alt=''\n role='presentation'\n className='w-100'\n />\n </div>\n <p>\n <Text\n namespace={namespace}\n phrase={isStaff ? 'invitationSent' : 'studentAdded'}\n options={{ email: props.user.email, schoolName: props.customer.name }}\n />\n </p>\n\n <PopupButtons>\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, 'okay')}\n onClick={props.closePopup}\n variant='dark'\n />\n </PopupButtons>\n </>\n );\n }\n\n return (\n <FormWrapper<InviteUserRequest>\n initialValues={{\n email: props.user.email,\n userType: props.user.userType,\n masterRole: UserRole.User,\n userYearGroupId: ''\n }}\n onSubmit={props.onClickInvite}\n allowInitialSubmit\n >\n {formikProps => (\n <Form>\n <div className='position-relative'>\n <FormField id='email' name='email' disabled />\n\n <DivButton onClick={props.onClickCancel} className={styles.closeButton}>\n <SvgContainer svgName={cvSvgLibrary.Close} />\n </DivButton>\n </div>\n\n <p><Text namespace={namespace} phrase={isStaff ? 'alreadyExistsStaff' : 'alreadyExistsStudent'} /></p>\n <p>\n <Text\n namespace={namespace}\n phrase={isStaff ? 'inviteQuestion' : 'addQuestion'}\n options={{ schoolName: props.customer.name }}\n />\n </p>\n\n {isStaff ? (\n <FormField id='masterRole' name='masterRole'>\n {() => (\n <div className='d-flex align-items-center'>\n <ToggleSwitch\n onClick={() => formikProps.setFieldValue(\n 'masterRole',\n formikProps.values.masterRole === UserRole.User ? UserRole.Admin : UserRole.User\n )}\n on={formikProps.values.masterRole === UserRole.Admin}\n />\n <span className='fw-semibold ms-2'>\n <Text namespace={namespace} phrase='setAsAdmin' />\n </span>\n </div>\n )}\n </FormField>\n ) : (\n <FormField\n as='select'\n label={LanguageService.getPhrase(namespace, 'yearGroup')}\n name='userYearGroupId'\n value={formikProps.values.userYearGroupId.toString()}\n className={!formikProps.values.userYearGroupId ? 'text-secondary' : ''}\n showRequiredStar\n >\n <option className='text-secondary' value=''>{LanguageService.getPhrase(namespace, 'selectYearGroup')}</option>\n {validYearGroups.map(yearGroup => (\n <option key={yearGroup.id} value={yearGroup.id.toString()} className='text-dark'>{yearGroup.name}</option>\n ))}\n </FormField>\n )}\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} />\n <PopupButtons.Submit\n text={LanguageService.getPhrase(namespace, isStaff ? 'invite' : 'add')}\n variant='dark'\n disabled={isStaff ? false : !formikProps.values.userYearGroupId}\n />\n </PopupButtons>\n </Form>\n )}\n </FormWrapper>\n );\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { EditUserDetails } from 'libs/shared/apps/user-manager/components/edit-user-details/EditUserDetails';\nimport { InviteUser } from 'libs/shared/apps/user-manager/components/invite-user/InviteUser';\nimport { UserCreatedSuccess } from 'libs/shared/apps/user-manager/components/user-created-success/UserCreatedSuccess';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { BulkCreateUsersResponse, BulkInviteUsersRequest, BulkUserEmailCheckRequest, BulkUserEmailCheckResponse, EditUserRequest, ErroredUsers, InviteUserRequest, UserEmailCheckResponse } from 'libs/shared/apps/user-manager/interfaces';\nimport { GetIdentityProvidersResponse } from 'libs/shared/apps/user-manager/interfaces/GetIdentityProvidersResponse';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser, Customer, PropsWithAnalyticsOptions, PropsWithPopupViewProps, YearGroup } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\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';\nimport { LiteEditSsoUserWarning } from 'apps/user-manager/views/edit-user/component/edit-sso-user-warning/LiteEditSsoUserWarning';\n\nconst CREATE_NEXT_KEY = '_cv:create:next:user';\n\nfunction getInitialUserState(userType: UserGroup, currentUser: CurrentUser): EditUserRequest {\n return {\n firstName: '',\n email: '',\n surname: '',\n username: '',\n userType,\n customerId: currentUser.customerId,\n masterYearGroup: null,\n masterRole: UserRole.User,\n requirePasswordChange: false,\n generatePassword: userType === UserGroup.Learner,\n password: '',\n displayName: null\n };\n}\n\ntype CreateUserViewProps = PropsWithAnalyticsOptions<PropsWithPopupViewProps<{ userType: UserGroup }>>;\n\nexport function CreateUserView(props: CreateUserViewProps): React.ReactElement {\n const [ shouldCreateAnother, setShouldCreateAnother ] = React.useState(!!LocalStorageHelper.get(CREATE_NEXT_KEY));\n const [ creationResponse, setCreationResponse ] = React.useState<BulkCreateUsersResponse>(null);\n\n const [ invitationSent, setInvitationSent ] = React.useState(false);\n const [ detectedUser, setDetectedUser ] = React.useState<UserEmailCheckResponse['user']>(null);\n\n const alerts = useAlerts();\n const dispatch = useDispatch();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(currentUser.data &&\n UserManagerRequests.yearGroups(currentUser.data.customerId));\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n const customer = Flight.useBasicFetch<Customer>(currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId, null, null, true));\n const hasOrg = !!customer.data?.organisation;\n const identityProviders = Flight.useBasicFetch<GetIdentityProvidersResponse>(!!currentUser.data &&\n UserManagerRequests.getIdentityProviders(currentUser.data.customerId));\n\n const namespace = props.userType === UserGroup.Staff\n ? 'userManager.createStaff'\n : 'userManager.createStudent';\n\n const getPhrase = LanguageService.encloseNamespace(namespace);\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.bulkValidate(data));\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 async function saveUser(user: EditUserRequest, onDone: (options?: FormSubmissionOptions) => void): Promise<void> {\n const errors = await validateUser(user);\n\n const isValid = UserManagerHelper.handleAsyncErrors(errors, user, null, onDone);\n\n if (!isValid)\n return;\n\n const data = UserManagerHelper.formatCreateOrValidateUserRequest(\n [user],\n props.userType,\n currentUser.data.customerId\n );\n\n Flight.fetch(\n dispatch,\n UserManagerRequests.createUsers({\n users: data,\n success: res => {\n AnalyticsHelper.logUserAction(data, props.analyticsOptions);\n\n if (shouldCreateAnother)\n onDone({ reset: true });\n\n setCreationResponse({\n ...res,\n hasEmail: !!user.email,\n password: user.password || res.password,\n isBulk: false\n });\n },\n error: () => {\n alerts.error(getPhrase('error'));\n props.closePopup();\n }\n })\n );\n }\n\n function onClickInviteDetectedUser(request: InviteUserRequest): void {\n const data: BulkInviteUsersRequest = {\n userEmails: [request]\n };\n\n fetchAsync(UserManagerRequests.inviteUserToCustomer(currentUser.data.customerId, data))\n .then(() => {\n setInvitationSent(true);\n })\n .catch(() => {\n alerts.error(getPhrase('inviteError', { email: detectedUser.email }));\n props.closePopup();\n });\n }\n\n function onCloseSuccessPopup(): void {\n setCreationResponse(null);\n\n if (!shouldCreateAnother) {\n props.closePopup();\n }\n }\n\n function getTitle(): string {\n if (creationResponse)\n return getPhrase('titleSuccess');\n\n if (detectedUser)\n return getPhrase('titleInviteUser');\n\n return getPhrase('titleCreating');\n }\n\n const dataLoaded = !!currentUser.data && !!passwordPolicy.data && !!yearGroups.data && !!customer.data;\n\n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <Popup closePopup={props.closePopup} title={getTitle()} showLoadingSpinner={!dataLoaded}>\n {(() => {\n if (!dataLoaded)\n return <></>;\n\n if (detectedUser) {\n return (\n <InviteUser\n user={detectedUser}\n customer={customer.data}\n yearGroups={yearGroups.data}\n onClickCancel={() => setDetectedUser(null)}\n onClickInvite={onClickInviteDetectedUser}\n closePopup={props.closePopup}\n invitationSent={invitationSent}\n staffInvitedImageUrl={ImageUrls.EMAIL_SENT}\n studentAddedImageUrl={ImageUrls.UserManager.STUDENT_ADDED}\n />\n );\n }\n\n if (!creationResponse) {\n return (\n <>\n {!!identityProviders.data?.length && (\n <LiteEditSsoUserWarning\n userType={props.userType}\n helpArticle={ArticleHelper.getLiteArticle(LiteSupportArticle.EditSsoAccounts)}\n ssoMappingsApplink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.SSO_YEAR_GROUP_MAPPINGS\n }}\n isNew\n />\n )}\n <EditUserDetails\n onSubmit={saveUser}\n userType={props.userType}\n onClickCancel={props.closePopup}\n yearGroups={yearGroups.data}\n initialValues={getInitialUserState(props.userType, currentUser.data)}\n currentUser={currentUser.data}\n onToggleNextCheckbox={() => setShouldCreateAnother(currentVal => {\n LocalStorageHelper.set(CREATE_NEXT_KEY, !currentVal);\n return !currentVal;\n })}\n shouldGoToNext={shouldCreateAnother}\n goToNextText={getPhrase('createNext')}\n showPasswordField={props.userType === UserGroup.Learner}\n emailRequired={props.userType === UserGroup.Staff}\n submitText={getPhrase('submit')}\n showDisplayNameField={props.userType === UserGroup.Staff}\n passwordPolicy={passwordPolicy.data}\n validateEmail={validateEmail}\n appLinks={getUserManagerAppLinks(props.userType)}\n onDetectValidUser={setDetectedUser}\n hasOrg={hasOrg}\n countryCode={currentUser.data?.countryCode}\n canEditSuperAdmin={currentUser.data?.role === UserRole.SuperAdmin}\n />\n </>\n );\n }\n\n return (\n <UserCreatedSuccess\n onClose={onCloseSuccessPopup}\n creationResponse={creationResponse}\n emailSentImageUrl={ImageUrls.EMAIL_SENT}\n userType={props.userType}\n />\n );\n })()}\n </Popup>\n </UserManagerClientContext.Provider>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { WarningAlert } from 'libs/shared/apps/user-manager/components/warning-alert/WarningAlert';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.editUser';\n\ninterface LiteEditSsoUserWarningProps {\n isNew: boolean;\n userType: UserGroup;\n helpArticle: string;\n ssoMappingsApplink: Core.AppLink;\n}\n\nexport function LiteEditSsoUserWarning(props: LiteEditSsoUserWarningProps): JSX.Element {\n return (\n <WarningAlert className='py-2'>\n <Text\n namespace={namespace}\n phrase={props.isNew ? 'newSsoUserWarning' : 'editSsoUserWarning'}\n />\n\n {!props.isNew && (\n <AppLink appLink={props.ssoMappingsApplink} className='info-link d-block my-1' openInNewTab >\n <Text namespace={namespace} phrase='ssoMapping' />\n </AppLink>\n )}\n\n <a\n className='info-link d-block'\n href={props.helpArticle}\n target='_blank'\n >\n <Text namespace={namespace} phrase='ssoArticleLink' />\n </a>\n \n </WarningAlert>\n );\n}","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["UserCreatedState","namespace","EmailSentImage","props","className","src","emailSentImageUrl","alt","role","UserDetailsDialog","Text","phrase","creationResponse","username","password","EmailedUsersDialog","options","smartCount","isBulk","UserCreatedSuccess","alerts","state","userType","UserGroup","hasEmail","EmailedUsers","ShowDetails","contentComponent","value","CopyToClipboard","onCopy","success","LanguageService","onClose","text","onClick","OnlineSupportArticle","LiteSupportArticle","InviteUser","isStaff","user","validYearGroups","UserHelper","yearGroups","invitationSent","staffInvitedImageUrl","studentAddedImageUrl","email","schoolName","customer","name","PopupButtons","closePopup","variant","FormWrapper","initialValues","masterRole","UserRole","User","userYearGroupId","onSubmit","onClickInvite","allowInitialSubmit","formikProps","FormField","id","disabled","DivButton","onClickCancel","SvgContainer","svgName","ToggleSwitch","setFieldValue","values","on","as","label","toString","showRequiredStar","map","yearGroup","key","CREATE_NEXT_KEY","getInitialUserState","currentUser","firstName","surname","customerId","masterYearGroup","requirePasswordChange","generatePassword","displayName","CreateUserView","LocalStorageHelper","shouldCreateAnother","setShouldCreateAnother","setCreationResponse","setInvitationSent","detectedUser","setDetectedUser","dispatch","fetchAsync","UserRequests","data","UserManagerRequests","passwordPolicy","SecuritySettingsRequests","CustomerRequests","hasOrg","organisation","identityProviders","getPhrase","validateUser","_user","UserManagerHelper","validateEmail","body","userEmails","saveUser","onDone","errors","users","res","AnalyticsHelper","analyticsOptions","reset","error","onClickInviteDetectedUser","request","then","onCloseSuccessPopup","dataLoaded","UserManagerClientContext","UserManagerClient","Popup","title","showLoadingSpinner","ImageUrls","U","length","LiteEditSsoUserWarning","helpArticle","ArticleHelper","ssoMappingsApplink","application","action","isNew","EditUserDetails","onToggleNextCheckbox","currentVal","shouldGoToNext","goToNextText","showPasswordField","emailRequired","submitText","showDisplayNameField","appLinks","onDetectValidUser","countryCode","canEditSuperAdmin","W","appLink","openInNewTab","href","target","deselectCurrent","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","document","createRange","getSelection","createElement","textContent","ariaHidden","style","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","format","preventDefault","clipboardData","console","warn","window","clearData","setData","appendChild","selectNodeContents","addRange","execCommand","Error","err","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","i","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","getPrototypeOf","_React$PureComponent","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Boolean","valueOf","call","_isNativeReflectConstruct","result","Super","NewTarget","this","_possibleConstructorReturn","_this","instance","_classCallCheck","_len","args","Array","_key","concat","event","_this$props","children","elem","Children","only","_this$props2","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","cloneElement","PureComponent","undefined","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","type","focus"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5877],{82644:(e,t,n)=>{n.d(t,{b:()=>m,n:()=>o});var r=n(32735),i=n(92802),a=n(91967),s=n(1048);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,s,u=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(e,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.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n};function o(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,l=e.initialValues,o=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=s.t.deepClone(e);return function e(n){Object.keys(t).forEach(function(r){t.hasOwnProperty(r)&&(s.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])})}(t),t}(l)):l,g={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(i.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var i=r.setSubmitting,a=r.resetForm,s=r.setFieldError,l=n&&e.validationSchema?e.validationSchema.cast(t):t;o(l,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.reset&&a(),e.errors)for(var t=0,n=Object.entries(e.errors);t<n.length;t++){var r=u(n[t],2),l=r[0],c=r[1];s(l,c)}i(!1)})},initialStatus:g}),a.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function m(){return(0,i.u6)()}o.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},81803:(e,t,n)=>{n.d(t,{d:()=>f});var r=n(32735),i=n(81886),a=n(23481),s=n(49935),u=n(22902),l=n(14070),c=n(97291),o=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d="settings.settingsLayout",g=function(e){var t=(0,u.T)().hasPermissions,n=(0,o.e)();if(e)return t(e);var r=i.Q.C$.getCurrentAppLink();return r.application!==c.O.SETTINGS||n.some(function(e){return e.modules.some(function(e){return"appLink"in e&&e.appLink.action===r.action})})};function f(e){var t,n=g(e.requiredPermissions);if(r.useEffect(function(){n||i.Q.C$.trigger({application:c.O.SETTINGS,action:l.e.Settings.HOME},{replace:!0})},[n]),!n)return r.createElement(r.Fragment,null);var u,o=e.breadcrumbs.map(function(t,n){return{name:t,appLink:{application:c.O.SETTINGS,action:l.e.Settings.HOME},active:n===e.breadcrumbs.length-1}});return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(s.Oo,{breadcrumbs:[{name:a.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:c.O.SETTINGS,action:l.e.Settings.HOME}}].concat((u=o,function(e){if(Array.isArray(e))return m(e)}(u)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(u)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})),e.description&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},
|
|
2
|
-
//# sourceMappingURL=5877-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5877],{82644:(e,t,n)=>{n.d(t,{b:()=>m,n:()=>o});var r=n(32735),i=n(92802),a=n(91967),s=n(1048);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,s,u=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(e,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.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]])}return n};function o(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,l=e.initialValues,o=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=s.t.deepClone(e);return function e(n){Object.keys(t).forEach(function(r){t.hasOwnProperty(r)&&(s.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])})}(t),t}(l)):l,g={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(i.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var i=r.setSubmitting,a=r.resetForm,s=r.setFieldError,l=n&&e.validationSchema?e.validationSchema.cast(t):t;o(l,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.reset&&a(),e.errors)for(var t=0,n=Object.entries(e.errors);t<n.length;t++){var r=u(n[t],2),l=r[0],c=r[1];s(l,c)}i(!1)})},initialStatus:g}),a.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function m(){return(0,i.u6)()}o.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},81803:(e,t,n)=>{n.d(t,{d:()=>f});var r=n(32735),i=n(81886),a=n(23481),s=n(49935),u=n(22902),l=n(14070),c=n(97291),o=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d="settings.settingsLayout",g=function(e){var t=(0,u.T)().hasPermissions,n=(0,o.e)();if(e)return t(e);var r=i.Q.C$.getCurrentAppLink();return r.application!==c.O.SETTINGS||n.some(function(e){return e.modules.some(function(e){return"appLink"in e&&e.appLink.action===r.action})})};function f(e){var t,n=g(e.requiredPermissions);if(r.useEffect(function(){n||i.Q.C$.trigger({application:c.O.SETTINGS,action:l.e.Settings.HOME},{replace:!0})},[n]),!n)return r.createElement(r.Fragment,null);var u,o=e.breadcrumbs.map(function(t,n){return{name:t,appLink:{application:c.O.SETTINGS,action:l.e.Settings.HOME},active:n===e.breadcrumbs.length-1}});return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(s.Oo,{breadcrumbs:[{name:a.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:c.O.SETTINGS,action:l.e.Settings.HOME}}].concat((u=o,function(e){if(Array.isArray(e))return m(e)}(u)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(u)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})),e.description&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},80658:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(99940),i={getCustomerSecuritySettings:function(e,t,n){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"customers:security:settings",normalize:!1,success:t,error:n}},setCustomerSecuritySettings:function(e,t,n,i){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"update:security:settings",invalidationKeys:"customers:security:settings",type:r.k.PUT,normalize:!1,data:t,success:n,error:i}}}},55877:(e,t,n)=>{n.r(t),n.d(t,{SecuritySettingsView:()=>I});var r=n(32735),i=n(70680),a=n(23481),s=n(20354),u=n(39739),l=n(82644),c=n(76881),o=n(86613),m=n(31949),d=n(69883),g=n(79612),f=n(92802),h=n(2102),S=n(33936),p=[5,6,7,8,9,10,11,12];function b(e){function t(t){var n="btn border";return t===e.currentValue?n+=" btn-dark":n+=" btn-outline-dark",t<e.minLength&&(n+=" disabled"),n}return r.createElement("div",{className:"pb-2"},r.createElement("h3",{className:"h6"},e.headingText),r.createElement("div",{className:"btn-group mb-1"},p.map(function(n){return r.createElement("button",{key:n,className:t(n),onClick:function(t){return function(t,n){t.preventDefault(),n<e.minLength||e.setMinimumPasswordLength(n)}(t,n)},type:"button"},n)})),r.createElement("p",{dangerouslySetInnerHTML:{__html:e.minPasswordLengthText}}))}var y=a.T.encloseNamespace("settings.passwordSecuritySettings"),v=5,L=8,E=8;function w(){var e=(0,f.u6)(),t=(0,S.l)(e);return r.createElement(f.l0,null,r.createElement("h2",{className:"h4"},y("heading")),r.createElement(b,{currentValue:e.values.minStudentLength,headingText:y("studentSubheading"),minLength:v,minPasswordLengthText:y("minimumStudentLength",{length:e.values.minStudentLength}),setMinimumPasswordLength:function(t){return e.setFieldValue("minStudentLength",t)}}),r.createElement(b,{currentValue:e.values.minStaffLength,headingText:y("staffSubheading"),minLength:L,minPasswordLengthText:y("minimumStaffLength",{length:e.values.minStaffLength}),setMinimumPasswordLength:function(t){return e.setFieldValue("minStaffLength",t)}}),r.createElement(b,{currentValue:e.values.minAdminLength,headingText:y("adminSubheading"),minLength:E,minPasswordLengthText:y("minimumAdminLength",{length:e.values.minAdminLength}),setMinimumPasswordLength:function(t){return e.setFieldValue("minAdminLength",t)}}),r.createElement("div",{className:"d-flex"},r.createElement(h.m,{type:"submit",variant:"dark",disabled:!t,showSpinner:e.isSubmitting},y("saveChanges"))))}var O=n(81803),T=n(80658),A=n(5173),P=(0,A.Ry)().shape({minStudentLength:(0,A.Rx)().required(),minStaffLength:(0,A.Rx)().required(),minAdminLength:(0,A.Rx)().required()}).noUnknown(),k=a.T.encloseNamespace("settings.securitySettings");function I(){(0,g.M)({title:k("pageTitle")});var e=(0,i.I0)(),t=(0,d.Z)(),n=s.a.useBasicFetch(m.N.currentUser()),a=s.a.useBasicFetch(n.data&&T.F.getCustomerSecuritySettings(n.data.customerId)),f=u.P.getMinimumPasswordLength,h=f(a.data,c.Y.Learner,o.i.User),S=f(a.data,c.Y.Staff,o.i.User),p=f(a.data,c.Y.Staff,o.i.Admin);return n.data&&a.data?r.createElement(O.d,{heading:k("heading"),breadcrumbs:[k("breadcrumb")]},r.createElement(l.n,{initialValues:{minStudentLength:h,minStaffLength:S,minAdminLength:p},validationSchema:P,onSubmit:function(r,i){var a={securitySettings:[]};h!==r.minStudentLength&&a.securitySettings.push({userType:c.Y.Learner,userRole:o.i.User,minPasswordLength:r.minStudentLength}),S!==r.minStaffLength&&a.securitySettings.push({userType:c.Y.Staff,userRole:o.i.User,minPasswordLength:r.minStaffLength}),p!==r.minAdminLength&&a.securitySettings.push({userType:c.Y.Staff,userRole:o.i.Admin,minPasswordLength:r.minAdminLength}),s.a.fetch(e,T.F.setCustomerSecuritySettings(n.data.customerId,a,function(){t.success(k("success"))},function(){t.error(k("error")),i({reset:!0})}))}},r.createElement(w,null))):r.createElement(r.Fragment,null)}}}]);
|
|
2
|
+
//# sourceMappingURL=5877-20ef40af7c-lite.chunk.js.map
|
package/dist/scripts/{5877-6c9d90249b-lite.chunk.js.map → 5877-20ef40af7c-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/5877-6c9d90249b-lite.chunk.js","mappings":"2gDA0DM,SAAUA,EAIdC,GACA,IAAQC,EAAmFD,EAAnFC,kBAAmBC,EAAgEF,EAAhEE,mBAAoBC,EAA4CH,EAA5CG,cAAeC,EAA6BJ,EAA7BI,SAAaC,EAAW,EAAKL,EAArF,uEAMAM,EAAqCL,GAAqBD,EAAMO,iBAClEP,EAAMO,iBAAiBC,KA3D7B,SAA4DL,GAC1D,IAAKA,EACH,MAAO,CAAC,EAEV,IAAMM,EAAS,cAAuBN,GAetC,OAbA,SAASO,EAAgBC,GACvBC,OAAOC,KAAKJ,GAAQK,QAAQ,SAACC,GACtBN,EAAOO,eAAeD,KAGvB,aAAsBJ,EAAMI,IAC9BL,EAAgBC,EAAMI,IACC,OAAhBN,EAAOM,WACPN,EAAOM,GAClB,EACF,CAEAL,CAAgBD,GACTA,CACT,CAuCkCQ,CAAsBd,IAClDA,EA4BEe,EAA+B,CACnCC,mBAAoBnB,EAAMmB,oBAG5B,OACE,gBAAC,KAAM,eACLC,oBAAkB,GACbf,EAA6D,CAClEF,cAAeG,EACfF,SAnCoB,SACtBK,EAAkB,GAEhB,IADAY,EAAa,EAAbA,cAAeC,EAAS,EAATA,UAAWC,EAAa,EAAbA,cAOtBC,EAAgBtB,GAAsBF,EAAMO,iBAC9CP,EAAMO,iBAAiBC,KAAKC,GAC5BA,EAEJL,EAASoB,EAAe,WAAoD,IAAnDC,EAAA,uDAA6C,CAAC,EAGrE,GAFAA,EAAQC,OAASJ,IAEbG,EAAQE,OACV,IAAK,IAAL,MAA6Bf,OAAOgB,QAAQH,EAAQE,QAAO,eAAE,CAAxD,gBAAQZ,EAAG,KAAEc,EAAK,KACrBN,EAAcR,EAAKc,EACpB,CAGHR,GAAc,EAChB,EACF,EAYIH,cAAeA,IAEd,eAA0BlB,EAAM8B,UAC7B,SAACC,GAA0B,OAAM/B,EAAM8B,SAA6DC,EAAE,EACtG,iBAAqB/B,EAAM8B,UAAY9B,EAAM8B,SAAW,KAIlE,CAEM,SAAUE,IACd,OAAO,SACT,CApEAjC,EAAYkC,aAAe,CACzBhC,mBAAmB,EACnBC,oBAAoB,E,qOCzCtB,IAAMgC,EAAY,0BAKLC,EAAuB,SAACC,GACnC,IAAQC,GAAmB,SAAnBA,eACFC,GAAiB,SAOvB,GAAIF,EACF,OAAOC,EAAeD,GAExB,IAAMG,EAAe,2BAOrB,OAAIA,EAAaC,cAAgB,cAG1BF,EAAeG,KAAK,SAAAC,GACzB,OAAOA,EAAMC,QAAQF,KAAK,SAAAG,GACxB,MAAI,YAAaA,GACRA,EAAeC,QAAQC,SAAWP,EAAaO,MAI1D,EACF,EACF,EAUM,SAAUC,EAAe/C,G,MACvBgD,EAAYb,EAAqBnC,EAAMoC,qBAW7C,GATA,YAAgB,WACTY,GACH,eAA2B,CACzBR,YAAa,aACbM,OAAQ,mBACP,CAAEG,SAAS,GAElB,EAAG,CAACD,KAECA,EACH,OAAO,iCAET,I,EAAME,EAAclD,EAAMkD,YAAYC,IAAI,SAACC,EAAMC,GAAC,MAAM,CACtDD,KAAAA,EACAP,QAAS,CACPL,YAAa,aACbM,OAAQ,mBAEVQ,OAAQD,IAAMrD,EAAMkD,YAAYK,OAAS,EAC1C,GAED,OACE,uBAAKC,UAAU,QACb,uBAAKA,UAAU,qDACb,sBAAIA,UAAU,MAAMxD,EAAMyD,SACN,QAAnB,EAAAzD,EAAM0D,qBAAa,wBAEtB,uBAAKF,UAAU,QACb,gBAAC,KAAW,CACVN,YAAW,CACT,CACEE,KAAM,cAA0BlB,EAAW,sBAC3CW,QAAS,CACPL,YAAa,aACbM,OAAQ,qBAEX,Q,EACEI,E,wmBAIRlD,EAAM2D,aACL,gCACE,yBAAI3D,EAAM2D,aACV,4BAIH3D,EAAM8B,SAGb,C,kDC7Ga8B,EAA2B,CACtCC,4BAA2B,SACzBC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,0BAAF,OAA4BH,EAAU,sBACzC/C,IAAK,8BACLmD,WAAW,EACXH,QAAAA,EACAC,MAAAA,EAEJ,EAEAG,4BAA2B,SACzBL,EACAM,EACAL,EACAC,GAEA,MAAO,CACLC,IAAK,0BAAF,OAA4BH,EAAU,sBACzC/C,IAAK,2BACLsD,iBAAkB,8BAClBC,KAAM,QACNJ,WAAW,EACXE,KAAAA,EACAL,QAAAA,EACAC,MAAAA,EAEJ,E,0NClCIO,EAAmB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAW5C,SAAUC,EAAmBxE,GAUjC,SAASyE,EAAmBC,GAC1B,IAAIlB,EAAY,aAUhB,OARIkB,IAAW1E,EAAM2E,aACnBnB,GAAa,YAEbA,GAAa,oBAEXkB,EAAS1E,EAAM4E,YACjBpB,GAAa,aAERA,CACT,CAEA,OACE,uBAAKA,UAAU,QACb,sBAAIA,UAAU,MAAMxD,EAAM6E,aAC1B,uBAAKrB,UAAU,kBACZe,EAAiBpB,IAAI,SAAAuB,GAAM,OAC1B,0BACE3D,IAAK2D,EACLlB,UAAWiB,EAAmBC,GAC9BI,QAAS,SAAAC,GAAC,OA/BpB,SAAiBA,EAAqBL,GACpCK,EAAEC,iBAEEN,EAAS1E,EAAM4E,WAGnB5E,EAAMiF,yBAAyBP,EACjC,CAwBwB,CAAQK,EAAGL,EAAO,EAChCJ,KAAK,UAEJI,EACM,IAGb,qBAAGQ,wBAAyB,CAAEC,OAAQnF,EAAMoF,yBAGlD,CC5CA,IACMC,EAAYC,EAAA,mBADA,qCAGZC,EAAiC,EACjCC,EAA+B,EAC/BC,EAA+B,EAE/B,SAAUC,IACd,IAAMrF,GAAc,UACdsF,GAAY,OAAiBtF,GAEnC,OACE,gBAAC,KAAI,KACH,sBAAImD,UAAU,MAAM6B,EAAU,YAC9B,gBAACb,EAAkB,CACjBG,aAActE,EAAYI,OAAOmF,iBACjCf,YAAaQ,EAAU,qBACvBT,UAAWW,EACXH,sBAAuBC,EAAU,uBAAwB,CAAE9B,OAAQlD,EAAYI,OAAOmF,mBACtFX,yBAA0B,SAAC1B,GAAc,OAAKlD,EAAYwF,cAAc,mBAAoBtC,EAAO,IAGrG,gBAACiB,EAAkB,CACjBG,aAActE,EAAYI,OAAOqF,eACjCjB,YAAaQ,EAAU,mBACvBT,UAAWY,EACXJ,sBAAuBC,EAAU,qBAAsB,CAAE9B,OAAQlD,EAAYI,OAAOqF,iBACpFb,yBAA0B,SAAC1B,GAAc,OAAKlD,EAAYwF,cAAc,iBAAkBtC,EAAO,IAGnG,gBAACiB,EAAkB,CACjBG,aAActE,EAAYI,OAAOsF,eACjClB,YAAaQ,EAAU,mBACvBT,UAAWa,EACXL,sBAAuBC,EAAU,qBAAsB,CAAE9B,OAAQlD,EAAYI,OAAOsF,iBACpFd,yBAA0B,SAAC1B,GAAc,OAAKlD,EAAYwF,cAAc,iBAAkBtC,EAAO,IAGnG,uBAAKC,UAAU,UACb,gBAACwC,EAAA,EAAa,CACZ1B,KAAK,SACL2B,QAAQ,OACRC,UAAWP,EACXQ,YAAa9F,EAAY+F,cAExBf,EAAU,iBAKrB,C,oCCzDagB,GAA+C,UAASC,MAA4B,CAC/FV,kBAAkB,UACfW,WAEHT,gBAAgB,UACbS,WAEHR,gBAAgB,UACbQ,aAEFC,YCUG,EAAYlB,EAAA,mBADA,6BAGZ,SAAUmB,KACd,EAAAC,EAAA,GAAmB,CAAEC,MAAO,EAAU,eAEtC,IAAMC,GAAW,UACXC,GAAS,SAETC,EAAc,kBAAkCC,EAAA,iBAChDC,EAAmB,kBACvBF,EAAY1C,MAAQR,EAAA,8BAAqDkD,EAAY1C,KAAKN,aAGpFmD,EAA6BC,EAAA,2BAC/BC,EAAuBF,EAAyBD,EAAiB5C,KAAMgD,EAAA,UAAmBC,EAAA,EAAAC,MAC1FC,EAAqBN,EAAyBD,EAAiB5C,KAAMgD,EAAA,QAAiBC,EAAA,EAAAC,MACtFE,EAAqBP,EAAyBD,EAAiB5C,KAAMgD,EAAA,QAAiBC,EAAA,SA8C5F,OAFqBP,EAAY1C,MAAU4C,EAAiB5C,KAM1D,gBAACrB,EAAA,EAAc,CACbU,QAAS,EAAU,WACnBP,YAAa,CAAC,EAAU,gBAExB,gBAACnD,EAAA,EAAW,CACVI,cAAe,CACbyF,iBAAkBuB,EAClBrB,eAAgByB,EAChBxB,eAAgByB,GAElBjH,iBAAkB8F,EAClBjG,SA3DN,SAAsBgE,EAA4BqD,GAChD,IAAMC,EAAyD,CAC7DV,iBAAkB,IAGhBG,IAAyB/C,EAAKwB,kBAChC8B,EAAwBV,iBAAiBW,KAAK,CAC5CC,SAAUR,EAAA,UACVS,SAAUR,EAAA,EAAAC,KACVQ,kBAAmB1D,EAAKwB,mBAIxB2B,IAAuBnD,EAAK0B,gBAC9B4B,EAAwBV,iBAAiBW,KAAK,CAC5CC,SAAUR,EAAA,QACVS,SAAUR,EAAA,EAAAC,KACVQ,kBAAmB1D,EAAK0B,iBAIxB0B,IAAuBpD,EAAK2B,gBAC9B2B,EAAwBV,iBAAiBW,KAAK,CAC5CC,SAAUR,EAAA,QACVS,SAAUR,EAAA,QACVS,kBAAmB1D,EAAK2B,iBAI5B,UAAaa,EAAUhD,EAAA,8BACrBkD,EAAY1C,KAAKN,WACjB4D,EACA,WACEb,EAAO9C,QAAQ,EAAU,WAC3B,EACA,WACE8C,EAAO7C,MAAM,EAAU,UACvByD,EAAO,CAAE/F,OAAO,GAClB,GAEJ,GAqBM,gBAACgE,EAA4B,QAhB1B,gCAoBX,C","sources":["file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/flight-requests/SecuritySettingsRequests.ts","file:///app/packages/projects/lite/src/apps/settings/components/edit-password-length/EditPasswordLength.tsx","file:///app/packages/projects/lite/src/apps/settings/components/password-security-settings/PasswordSecuritySettingsForm.tsx","file:///app/packages/projects/lite/src/apps/settings/utils/validation/EditPasswordSecuritySettingsValidationSchema.ts","file:///app/packages/projects/lite/src/apps/settings/views/security-settings/SecuritySettingsView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\n\nexport const SecuritySettingsRequests = {\n getCustomerSecuritySettings(\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `customers:security:settings`,\n normalize: false,\n success,\n error\n };\n },\n\n setCustomerSecuritySettings(\n customerId: string,\n data: UpdateSecuritySettingsRequest,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `update:security:settings`,\n invalidationKeys: `customers:security:settings`,\n type: HttpVerbs.PUT,\n normalize: false,\n data,\n success,\n error\n };\n }\n};","import React from 'react';\n\nconst PASSWORD_LENGTHS = [ 5, 6, 7, 8, 9, 10, 11, 12 ];\n\ninterface EditPasswordLengthProps {\n currentValue: number;\n setMinimumPasswordLength: (length: number) => void;\n minLength: number;\n\n headingText: string;\n minPasswordLengthText: string;\n}\n\nexport function EditPasswordLength(props: EditPasswordLengthProps): JSX.Element {\n function onClick(e: React.MouseEvent, option: number): void {\n e.preventDefault();\n\n if (option < props.minLength)\n return;\n\n props.setMinimumPasswordLength(option);\n }\n\n function getButtonClassName(option: number): string {\n let className = 'btn border';\n\n if (option === props.currentValue)\n className += ' btn-dark';\n else\n className += ' btn-outline-dark';\n\n if (option < props.minLength)\n className += ' disabled';\n\n return className;\n }\n\n return (\n <div className='pb-2'>\n <h3 className='h6'>{props.headingText}</h3>\n <div className='btn-group mb-1'>\n {PASSWORD_LENGTHS.map(option => (\n <button\n key={option}\n className={getButtonClassName(option)}\n onClick={e => onClick(e, option)}\n type='button'\n >\n {option}\n </button>\n ))}\n </div>\n <p dangerouslySetInnerHTML={{ __html: props.minPasswordLengthText }}/>\n </div>\n );\n}","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nimport { EditPasswordLength } from 'apps/settings/components/edit-password-length/EditPasswordLength';\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\n\nconst namespace = 'settings.passwordSecuritySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MINIMUM_ALLOWED_STUDENT_LENGTH = 5;\nconst MINIMUM_ALLOWED_STAFF_LENGTH = 8;\nconst MINIMUM_ALLOWED_ADMIN_LENGTH = 8;\n\nexport function PasswordSecuritySettingsForm(): JSX.Element {\n const formikProps = useFormikContext<EditSecuritySettings>();\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <Form>\n <h2 className='h4'>{getPhrase('heading')}</h2>\n <EditPasswordLength\n currentValue={formikProps.values.minStudentLength}\n headingText={getPhrase('studentSubheading')}\n minLength={MINIMUM_ALLOWED_STUDENT_LENGTH}\n minPasswordLengthText={getPhrase('minimumStudentLength', { length: formikProps.values.minStudentLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minStudentLength', length)}\n />\n\n <EditPasswordLength\n currentValue={formikProps.values.minStaffLength}\n headingText={getPhrase('staffSubheading')}\n minLength={MINIMUM_ALLOWED_STAFF_LENGTH}\n minPasswordLengthText={getPhrase('minimumStaffLength', { length: formikProps.values.minStaffLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minStaffLength', length)}\n />\n\n <EditPasswordLength\n currentValue={formikProps.values.minAdminLength}\n headingText={getPhrase('adminSubheading')}\n minLength={MINIMUM_ALLOWED_ADMIN_LENGTH}\n minPasswordLengthText={getPhrase('minimumAdminLength', { length: formikProps.values.minAdminLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minAdminLength', length)}\n />\n\n <div className='d-flex'>\n <SpinnerButton\n type='submit'\n variant='dark'\n disabled={!canSubmit}\n showSpinner={formikProps.isSubmitting}\n >\n {getPhrase('saveChanges')}\n </SpinnerButton>\n </div>\n </Form>\n );\n}","import { number, object } from 'yup';\n\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\n\nexport const EditPasswordSecuritySettingsValidationSchema = object().shape<EditSecuritySettings>({\n minStudentLength: number()\n .required(),\n \n minStaffLength: number()\n .required(),\n \n minAdminLength: number()\n .required()\n \n}).noUnknown();","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PasswordSecuritySettingsForm } from 'apps/settings/components/password-security-settings/PasswordSecuritySettingsForm';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\nimport { EditPasswordSecuritySettingsValidationSchema } from 'apps/settings/utils/validation/EditPasswordSecuritySettingsValidationSchema';\n\nconst namespace = 'settings.securitySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SecuritySettingsView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const securitySettings = Flight.useBasicFetch<SecuritySettingsResponse>(\n currentUser.data && SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId)\n );\n\n const { getMinimumPasswordLength } = UserManagerHelper;\n const initialStudentLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Learner, UserRole.User);\n const initialStaffLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Staff, UserRole.User);\n const initialAdminLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Staff, UserRole.Admin);\n\n function saveSettings(data: EditSecuritySettings, onDone: (options: FormSubmissionOptions) => void): void {\n const updatedSecuritySettings: UpdateSecuritySettingsRequest = {\n securitySettings: []\n };\n\n if (initialStudentLength !== data.minStudentLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Learner,\n userRole: UserRole.User,\n minPasswordLength: data.minStudentLength\n });\n }\n\n if (initialStaffLength !== data.minStaffLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Staff,\n userRole: UserRole.User,\n minPasswordLength: data.minStaffLength\n });\n }\n\n if (initialAdminLength !== data.minAdminLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Staff,\n userRole: UserRole.Admin,\n minPasswordLength: data.minAdminLength\n });\n }\n\n Flight.fetch(dispatch, SecuritySettingsRequests.setCustomerSecuritySettings(\n currentUser.data.customerId,\n updatedSecuritySettings,\n () => {\n alerts.success(getPhrase('success'));\n },\n () => {\n alerts.error(getPhrase('error'));\n onDone({ reset: true });\n }\n ));\n }\n\n const dataLoaded = !!currentUser.data && !!securitySettings.data;\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n <FormWrapper<EditSecuritySettings>\n initialValues={{\n minStudentLength: initialStudentLength,\n minStaffLength: initialStaffLength,\n minAdminLength: initialAdminLength\n }}\n validationSchema={EditPasswordSecuritySettingsValidationSchema}\n onSubmit={saveSettings}\n >\n <PasswordSecuritySettingsForm />\n </FormWrapper>\n </SettingsLayout>\n );\n}"],"names":["FormWrapper","props","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formikProps","formattedInitialValues","validationSchema","cast","values","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","errors","entries","value","children","f","useFormikContextWrapper","defaultProps","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","appLink","action","SettingsLayout","canAccess","replace","breadcrumbs","map","name","i","active","length","className","heading","headingButton","description","SecuritySettingsRequests","getCustomerSecuritySettings","customerId","success","error","url","normalize","setCustomerSecuritySettings","data","invalidationKeys","type","PASSWORD_LENGTHS","EditPasswordLength","getButtonClassName","option","currentValue","minLength","headingText","onClick","e","preventDefault","setMinimumPasswordLength","dangerouslySetInnerHTML","__html","minPasswordLengthText","getPhrase","LanguageService","MINIMUM_ALLOWED_STUDENT_LENGTH","MINIMUM_ALLOWED_STAFF_LENGTH","MINIMUM_ALLOWED_ADMIN_LENGTH","PasswordSecuritySettingsForm","canSubmit","minStudentLength","setFieldValue","minStaffLength","minAdminLength","SpinnerButton","variant","disabled","showSpinner","isSubmitting","EditPasswordSecuritySettingsValidationSchema","shape","required","noUnknown","SecuritySettingsView","useSetPageMetadata","title","dispatch","alerts","currentUser","UserRequests","securitySettings","getMinimumPasswordLength","UserManagerHelper","initialStudentLength","UserGroup","UserRole","User","initialStaffLength","initialAdminLength","onDone","updatedSecuritySettings","push","userType","userRole","minPasswordLength"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/5877-20ef40af7c-lite.chunk.js","mappings":"2gDA0DM,SAAUA,EAIdC,GACA,IAAQC,EAAmFD,EAAnFC,kBAAmBC,EAAgEF,EAAhEE,mBAAoBC,EAA4CH,EAA5CG,cAAeC,EAA6BJ,EAA7BI,SAAaC,EAAW,EAAKL,EAArF,uEAMAM,EAAqCL,GAAqBD,EAAMO,iBAClEP,EAAMO,iBAAiBC,KA3D7B,SAA4DL,GAC1D,IAAKA,EACH,MAAO,CAAC,EAEV,IAAMM,EAAS,cAAuBN,GAetC,OAbA,SAASO,EAAgBC,GACvBC,OAAOC,KAAKJ,GAAQK,QAAQ,SAACC,GACtBN,EAAOO,eAAeD,KAGvB,aAAsBJ,EAAMI,IAC9BL,EAAgBC,EAAMI,IACC,OAAhBN,EAAOM,WACPN,EAAOM,GAClB,EACF,CAEAL,CAAgBD,GACTA,CACT,CAuCkCQ,CAAsBd,IAClDA,EA4BEe,EAA+B,CACnCC,mBAAoBnB,EAAMmB,oBAG5B,OACE,gBAAC,KAAM,eACLC,oBAAkB,GACbf,EAA6D,CAClEF,cAAeG,EACfF,SAnCoB,SACtBK,EAAkB,GAEhB,IADAY,EAAa,EAAbA,cAAeC,EAAS,EAATA,UAAWC,EAAa,EAAbA,cAOtBC,EAAgBtB,GAAsBF,EAAMO,iBAC9CP,EAAMO,iBAAiBC,KAAKC,GAC5BA,EAEJL,EAASoB,EAAe,WAAoD,IAAnDC,EAAA,uDAA6C,CAAC,EAGrE,GAFAA,EAAQC,OAASJ,IAEbG,EAAQE,OACV,IAAK,IAAL,MAA6Bf,OAAOgB,QAAQH,EAAQE,QAAO,eAAE,CAAxD,gBAAQZ,EAAG,KAAEc,EAAK,KACrBN,EAAcR,EAAKc,EACpB,CAGHR,GAAc,EAChB,EACF,EAYIH,cAAeA,IAEd,eAA0BlB,EAAM8B,UAC7B,SAACC,GAA0B,OAAM/B,EAAM8B,SAA6DC,EAAE,EACtG,iBAAqB/B,EAAM8B,UAAY9B,EAAM8B,SAAW,KAIlE,CAEM,SAAUE,IACd,OAAO,SACT,CApEAjC,EAAYkC,aAAe,CACzBhC,mBAAmB,EACnBC,oBAAoB,E,qOCzCtB,IAAMgC,EAAY,0BAKLC,EAAuB,SAACC,GACnC,IAAQC,GAAmB,SAAnBA,eACFC,GAAiB,SAOvB,GAAIF,EACF,OAAOC,EAAeD,GAExB,IAAMG,EAAe,2BAOrB,OAAIA,EAAaC,cAAgB,cAG1BF,EAAeG,KAAK,SAAAC,GACzB,OAAOA,EAAMC,QAAQF,KAAK,SAAAG,GACxB,MAAI,YAAaA,GACRA,EAAeC,QAAQC,SAAWP,EAAaO,MAI1D,EACF,EACF,EAUM,SAAUC,EAAe/C,G,MACvBgD,EAAYb,EAAqBnC,EAAMoC,qBAW7C,GATA,YAAgB,WACTY,GACH,eAA2B,CACzBR,YAAa,aACbM,OAAQ,mBACP,CAAEG,SAAS,GAElB,EAAG,CAACD,KAECA,EACH,OAAO,iCAET,I,EAAME,EAAclD,EAAMkD,YAAYC,IAAI,SAACC,EAAMC,GAAC,MAAM,CACtDD,KAAAA,EACAP,QAAS,CACPL,YAAa,aACbM,OAAQ,mBAEVQ,OAAQD,IAAMrD,EAAMkD,YAAYK,OAAS,EAC1C,GAED,OACE,uBAAKC,UAAU,QACb,uBAAKA,UAAU,qDACb,sBAAIA,UAAU,MAAMxD,EAAMyD,SACN,QAAnB,EAAAzD,EAAM0D,qBAAa,wBAEtB,uBAAKF,UAAU,QACb,gBAAC,KAAW,CACVN,YAAW,CACT,CACEE,KAAM,cAA0BlB,EAAW,sBAC3CW,QAAS,CACPL,YAAa,aACbM,OAAQ,qBAEX,Q,EACEI,E,wmBAIRlD,EAAM2D,aACL,gCACE,yBAAI3D,EAAM2D,aACV,4BAIH3D,EAAM8B,SAGb,C,kDC7Ga8B,EAA2B,CACtCC,4BAA2B,SACzBC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,0BAAF,OAA4BH,EAAU,sBACzC/C,IAAK,8BACLmD,WAAW,EACXH,QAAAA,EACAC,MAAAA,EAEJ,EAEAG,4BAA2B,SACzBL,EACAM,EACAL,EACAC,GAEA,MAAO,CACLC,IAAK,0BAAF,OAA4BH,EAAU,sBACzC/C,IAAK,2BACLsD,iBAAkB,8BAClBC,KAAM,QACNJ,WAAW,EACXE,KAAAA,EACAL,QAAAA,EACAC,MAAAA,EAEJ,E,0NClCIO,EAAmB,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAW5C,SAAUC,EAAmBxE,GAUjC,SAASyE,EAAmBC,GAC1B,IAAIlB,EAAY,aAUhB,OARIkB,IAAW1E,EAAM2E,aACnBnB,GAAa,YAEbA,GAAa,oBAEXkB,EAAS1E,EAAM4E,YACjBpB,GAAa,aAERA,CACT,CAEA,OACE,uBAAKA,UAAU,QACb,sBAAIA,UAAU,MAAMxD,EAAM6E,aAC1B,uBAAKrB,UAAU,kBACZe,EAAiBpB,IAAI,SAAAuB,GAAM,OAC1B,0BACE3D,IAAK2D,EACLlB,UAAWiB,EAAmBC,GAC9BI,QAAS,SAAAC,GAAC,OA/BpB,SAAiBA,EAAqBL,GACpCK,EAAEC,iBAEEN,EAAS1E,EAAM4E,WAGnB5E,EAAMiF,yBAAyBP,EACjC,CAwBwB,CAAQK,EAAGL,EAAO,EAChCJ,KAAK,UAEJI,EACM,IAGb,qBAAGQ,wBAAyB,CAAEC,OAAQnF,EAAMoF,yBAGlD,CC5CA,IACMC,EAAYC,EAAA,mBADA,qCAGZC,EAAiC,EACjCC,EAA+B,EAC/BC,EAA+B,EAE/B,SAAUC,IACd,IAAMrF,GAAc,UACdsF,GAAY,OAAiBtF,GAEnC,OACE,gBAAC,KAAI,KACH,sBAAImD,UAAU,MAAM6B,EAAU,YAC9B,gBAACb,EAAkB,CACjBG,aAActE,EAAYI,OAAOmF,iBACjCf,YAAaQ,EAAU,qBACvBT,UAAWW,EACXH,sBAAuBC,EAAU,uBAAwB,CAAE9B,OAAQlD,EAAYI,OAAOmF,mBACtFX,yBAA0B,SAAC1B,GAAc,OAAKlD,EAAYwF,cAAc,mBAAoBtC,EAAO,IAGrG,gBAACiB,EAAkB,CACjBG,aAActE,EAAYI,OAAOqF,eACjCjB,YAAaQ,EAAU,mBACvBT,UAAWY,EACXJ,sBAAuBC,EAAU,qBAAsB,CAAE9B,OAAQlD,EAAYI,OAAOqF,iBACpFb,yBAA0B,SAAC1B,GAAc,OAAKlD,EAAYwF,cAAc,iBAAkBtC,EAAO,IAGnG,gBAACiB,EAAkB,CACjBG,aAActE,EAAYI,OAAOsF,eACjClB,YAAaQ,EAAU,mBACvBT,UAAWa,EACXL,sBAAuBC,EAAU,qBAAsB,CAAE9B,OAAQlD,EAAYI,OAAOsF,iBACpFd,yBAA0B,SAAC1B,GAAc,OAAKlD,EAAYwF,cAAc,iBAAkBtC,EAAO,IAGnG,uBAAKC,UAAU,UACb,gBAACwC,EAAA,EAAa,CACZ1B,KAAK,SACL2B,QAAQ,OACRC,UAAWP,EACXQ,YAAa9F,EAAY+F,cAExBf,EAAU,iBAKrB,C,oCCzDagB,GAA+C,UAASC,MAA4B,CAC/FV,kBAAkB,UACfW,WAEHT,gBAAgB,UACbS,WAEHR,gBAAgB,UACbQ,aAEFC,YCUG,EAAYlB,EAAA,mBADA,6BAGZ,SAAUmB,KACd,EAAAC,EAAA,GAAmB,CAAEC,MAAO,EAAU,eAEtC,IAAMC,GAAW,UACXC,GAAS,SAETC,EAAc,kBAAkCC,EAAA,iBAChDC,EAAmB,kBACvBF,EAAY1C,MAAQR,EAAA,8BAAqDkD,EAAY1C,KAAKN,aAGpFmD,EAA6BC,EAAA,2BAC/BC,EAAuBF,EAAyBD,EAAiB5C,KAAMgD,EAAA,UAAmBC,EAAA,EAAAC,MAC1FC,EAAqBN,EAAyBD,EAAiB5C,KAAMgD,EAAA,QAAiBC,EAAA,EAAAC,MACtFE,EAAqBP,EAAyBD,EAAiB5C,KAAMgD,EAAA,QAAiBC,EAAA,SA8C5F,OAFqBP,EAAY1C,MAAU4C,EAAiB5C,KAM1D,gBAACrB,EAAA,EAAc,CACbU,QAAS,EAAU,WACnBP,YAAa,CAAC,EAAU,gBAExB,gBAACnD,EAAA,EAAW,CACVI,cAAe,CACbyF,iBAAkBuB,EAClBrB,eAAgByB,EAChBxB,eAAgByB,GAElBjH,iBAAkB8F,EAClBjG,SA3DN,SAAsBgE,EAA4BqD,GAChD,IAAMC,EAAyD,CAC7DV,iBAAkB,IAGhBG,IAAyB/C,EAAKwB,kBAChC8B,EAAwBV,iBAAiBW,KAAK,CAC5CC,SAAUR,EAAA,UACVS,SAAUR,EAAA,EAAAC,KACVQ,kBAAmB1D,EAAKwB,mBAIxB2B,IAAuBnD,EAAK0B,gBAC9B4B,EAAwBV,iBAAiBW,KAAK,CAC5CC,SAAUR,EAAA,QACVS,SAAUR,EAAA,EAAAC,KACVQ,kBAAmB1D,EAAK0B,iBAIxB0B,IAAuBpD,EAAK2B,gBAC9B2B,EAAwBV,iBAAiBW,KAAK,CAC5CC,SAAUR,EAAA,QACVS,SAAUR,EAAA,QACVS,kBAAmB1D,EAAK2B,iBAI5B,UAAaa,EAAUhD,EAAA,8BACrBkD,EAAY1C,KAAKN,WACjB4D,EACA,WACEb,EAAO9C,QAAQ,EAAU,WAC3B,EACA,WACE8C,EAAO7C,MAAM,EAAU,UACvByD,EAAO,CAAE/F,OAAO,GAClB,GAEJ,GAqBM,gBAACgE,EAA4B,QAhB1B,gCAoBX,C","sources":["file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/flight-requests/SecuritySettingsRequests.ts","file:///app/packages/projects/lite/src/apps/settings/components/edit-password-length/EditPasswordLength.tsx","file:///app/packages/projects/lite/src/apps/settings/components/password-security-settings/PasswordSecuritySettingsForm.tsx","file:///app/packages/projects/lite/src/apps/settings/utils/validation/EditPasswordSecuritySettingsValidationSchema.ts","file:///app/packages/projects/lite/src/apps/settings/views/security-settings/SecuritySettingsView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\n\nexport const SecuritySettingsRequests = {\n getCustomerSecuritySettings(\n customerId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `customers:security:settings`,\n normalize: false,\n success,\n error\n };\n },\n\n setCustomerSecuritySettings(\n customerId: string,\n data: UpdateSecuritySettingsRequest,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/customers/${customerId}/settings/security`,\n key: `update:security:settings`,\n invalidationKeys: `customers:security:settings`,\n type: HttpVerbs.PUT,\n normalize: false,\n data,\n success,\n error\n };\n }\n};","import React from 'react';\n\nconst PASSWORD_LENGTHS = [ 5, 6, 7, 8, 9, 10, 11, 12 ];\n\ninterface EditPasswordLengthProps {\n currentValue: number;\n setMinimumPasswordLength: (length: number) => void;\n minLength: number;\n\n headingText: string;\n minPasswordLengthText: string;\n}\n\nexport function EditPasswordLength(props: EditPasswordLengthProps): JSX.Element {\n function onClick(e: React.MouseEvent, option: number): void {\n e.preventDefault();\n\n if (option < props.minLength)\n return;\n\n props.setMinimumPasswordLength(option);\n }\n\n function getButtonClassName(option: number): string {\n let className = 'btn border';\n\n if (option === props.currentValue)\n className += ' btn-dark';\n else\n className += ' btn-outline-dark';\n\n if (option < props.minLength)\n className += ' disabled';\n\n return className;\n }\n\n return (\n <div className='pb-2'>\n <h3 className='h6'>{props.headingText}</h3>\n <div className='btn-group mb-1'>\n {PASSWORD_LENGTHS.map(option => (\n <button\n key={option}\n className={getButtonClassName(option)}\n onClick={e => onClick(e, option)}\n type='button'\n >\n {option}\n </button>\n ))}\n </div>\n <p dangerouslySetInnerHTML={{ __html: props.minPasswordLengthText }}/>\n </div>\n );\n}","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nimport { EditPasswordLength } from 'apps/settings/components/edit-password-length/EditPasswordLength';\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\n\nconst namespace = 'settings.passwordSecuritySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MINIMUM_ALLOWED_STUDENT_LENGTH = 5;\nconst MINIMUM_ALLOWED_STAFF_LENGTH = 8;\nconst MINIMUM_ALLOWED_ADMIN_LENGTH = 8;\n\nexport function PasswordSecuritySettingsForm(): JSX.Element {\n const formikProps = useFormikContext<EditSecuritySettings>();\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <Form>\n <h2 className='h4'>{getPhrase('heading')}</h2>\n <EditPasswordLength\n currentValue={formikProps.values.minStudentLength}\n headingText={getPhrase('studentSubheading')}\n minLength={MINIMUM_ALLOWED_STUDENT_LENGTH}\n minPasswordLengthText={getPhrase('minimumStudentLength', { length: formikProps.values.minStudentLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minStudentLength', length)}\n />\n\n <EditPasswordLength\n currentValue={formikProps.values.minStaffLength}\n headingText={getPhrase('staffSubheading')}\n minLength={MINIMUM_ALLOWED_STAFF_LENGTH}\n minPasswordLengthText={getPhrase('minimumStaffLength', { length: formikProps.values.minStaffLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minStaffLength', length)}\n />\n\n <EditPasswordLength\n currentValue={formikProps.values.minAdminLength}\n headingText={getPhrase('adminSubheading')}\n minLength={MINIMUM_ALLOWED_ADMIN_LENGTH}\n minPasswordLengthText={getPhrase('minimumAdminLength', { length: formikProps.values.minAdminLength })}\n setMinimumPasswordLength={(length: number) => formikProps.setFieldValue('minAdminLength', length)}\n />\n\n <div className='d-flex'>\n <SpinnerButton\n type='submit'\n variant='dark'\n disabled={!canSubmit}\n showSpinner={formikProps.isSubmitting}\n >\n {getPhrase('saveChanges')}\n </SpinnerButton>\n </div>\n </Form>\n );\n}","import { number, object } from 'yup';\n\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\n\nexport const EditPasswordSecuritySettingsValidationSchema = object().shape<EditSecuritySettings>({\n minStudentLength: number()\n .required(),\n \n minStaffLength: number()\n .required(),\n \n minAdminLength: number()\n .required()\n \n}).noUnknown();","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { PasswordSecuritySettingsForm } from 'apps/settings/components/password-security-settings/PasswordSecuritySettingsForm';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { EditSecuritySettings } from 'apps/settings/interfaces/security/EditSecuritySettings';\nimport { UpdateSecuritySettingsRequest } from 'apps/settings/interfaces/security/requests/UpdateSecuritySettingsRequest';\nimport { EditPasswordSecuritySettingsValidationSchema } from 'apps/settings/utils/validation/EditPasswordSecuritySettingsValidationSchema';\n\nconst namespace = 'settings.securitySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function SecuritySettingsView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const securitySettings = Flight.useBasicFetch<SecuritySettingsResponse>(\n currentUser.data && SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId)\n );\n\n const { getMinimumPasswordLength } = UserManagerHelper;\n const initialStudentLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Learner, UserRole.User);\n const initialStaffLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Staff, UserRole.User);\n const initialAdminLength = getMinimumPasswordLength(securitySettings.data, UserGroup.Staff, UserRole.Admin);\n\n function saveSettings(data: EditSecuritySettings, onDone: (options: FormSubmissionOptions) => void): void {\n const updatedSecuritySettings: UpdateSecuritySettingsRequest = {\n securitySettings: []\n };\n\n if (initialStudentLength !== data.minStudentLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Learner,\n userRole: UserRole.User,\n minPasswordLength: data.minStudentLength\n });\n }\n\n if (initialStaffLength !== data.minStaffLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Staff,\n userRole: UserRole.User,\n minPasswordLength: data.minStaffLength\n });\n }\n\n if (initialAdminLength !== data.minAdminLength) {\n updatedSecuritySettings.securitySettings.push({\n userType: UserGroup.Staff,\n userRole: UserRole.Admin,\n minPasswordLength: data.minAdminLength\n });\n }\n\n Flight.fetch(dispatch, SecuritySettingsRequests.setCustomerSecuritySettings(\n currentUser.data.customerId,\n updatedSecuritySettings,\n () => {\n alerts.success(getPhrase('success'));\n },\n () => {\n alerts.error(getPhrase('error'));\n onDone({ reset: true });\n }\n ));\n }\n\n const dataLoaded = !!currentUser.data && !!securitySettings.data;\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n <FormWrapper<EditSecuritySettings>\n initialValues={{\n minStudentLength: initialStudentLength,\n minStaffLength: initialStaffLength,\n minAdminLength: initialAdminLength\n }}\n validationSchema={EditPasswordSecuritySettingsValidationSchema}\n onSubmit={saveSettings}\n >\n <PasswordSecuritySettingsForm />\n </FormWrapper>\n </SettingsLayout>\n );\n}"],"names":["FormWrapper","props","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formikProps","formattedInitialValues","validationSchema","cast","values","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","errors","entries","value","children","f","useFormikContextWrapper","defaultProps","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","appLink","action","SettingsLayout","canAccess","replace","breadcrumbs","map","name","i","active","length","className","heading","headingButton","description","SecuritySettingsRequests","getCustomerSecuritySettings","customerId","success","error","url","normalize","setCustomerSecuritySettings","data","invalidationKeys","type","PASSWORD_LENGTHS","EditPasswordLength","getButtonClassName","option","currentValue","minLength","headingText","onClick","e","preventDefault","setMinimumPasswordLength","dangerouslySetInnerHTML","__html","minPasswordLengthText","getPhrase","LanguageService","MINIMUM_ALLOWED_STUDENT_LENGTH","MINIMUM_ALLOWED_STAFF_LENGTH","MINIMUM_ALLOWED_ADMIN_LENGTH","PasswordSecuritySettingsForm","canSubmit","minStudentLength","setFieldValue","minStaffLength","minAdminLength","SpinnerButton","variant","disabled","showSpinner","isSubmitting","EditPasswordSecuritySettingsValidationSchema","shape","required","noUnknown","SecuritySettingsView","useSetPageMetadata","title","dispatch","alerts","currentUser","UserRequests","securitySettings","getMinimumPasswordLength","UserManagerHelper","initialStudentLength","UserGroup","UserRole","User","initialStaffLength","initialAdminLength","onDone","updatedSecuritySettings","push","userType","userRole","minPasswordLength"],"sourceRoot":""}
|