@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.
Files changed (65) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{658-lite-5cb7c60d3b.chunk.css → 3700-lite-2ddbf5e39f.chunk.css} +0 -1
  3. package/dist/css/{4033-lite-b2fb1fd10e.chunk.css → 5987-lite-dc7e18cd99.chunk.css} +1 -0
  4. package/dist/css/{3325-lite-6f710728af.chunk.css → 5999-lite-bd05e26c6b.chunk.css} +1 -0
  5. package/dist/css/{6273-lite-e023522516.chunk.css → 6554-lite-a69c2a69da.chunk.css} +1 -0
  6. package/dist/languages/en.json +1 -1
  7. package/dist/scripts/{1518-c916754d35-lite.chunk.js → 1518-7005bfd3c8-lite.chunk.js} +2 -2
  8. package/dist/scripts/{1518-c916754d35-lite.chunk.js.map → 1518-7005bfd3c8-lite.chunk.js.map} +1 -1
  9. package/dist/scripts/{1670-823b692de0-lite.chunk.js → 1670-d9ced49962-lite.chunk.js} +2 -2
  10. package/dist/scripts/{1670-823b692de0-lite.chunk.js.map → 1670-d9ced49962-lite.chunk.js.map} +1 -1
  11. package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js → 1912-2271f9d8ee-lite.chunk.js} +2 -2
  12. package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js.map → 1912-2271f9d8ee-lite.chunk.js.map} +1 -1
  13. package/dist/scripts/{3143-f03801138f-lite.chunk.js → 3143-a754e306a5-lite.chunk.js} +3 -3
  14. package/dist/scripts/{3143-f03801138f-lite.chunk.js.map → 3143-a754e306a5-lite.chunk.js.map} +1 -1
  15. package/dist/scripts/{3191-6f79256d33-lite.chunk.js → 3191-e387636012-lite.chunk.js} +2 -2
  16. package/dist/scripts/{3191-6f79256d33-lite.chunk.js.map → 3191-e387636012-lite.chunk.js.map} +1 -1
  17. package/dist/scripts/3700-201cabeb7a-lite.chunk.js +3 -0
  18. package/dist/scripts/3700-201cabeb7a-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{4050-57e2409255-lite.chunk.js → 4050-8852c15f40-lite.chunk.js} +3 -3
  20. package/dist/scripts/4050-8852c15f40-lite.chunk.js.map +1 -0
  21. package/dist/scripts/{4802-1b7a767c46-lite.chunk.js → 4802-bc321d7ede-lite.chunk.js} +3 -3
  22. package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.map → 4802-bc321d7ede-lite.chunk.js.map} +1 -1
  23. package/dist/scripts/{5877-6c9d90249b-lite.chunk.js → 5877-20ef40af7c-lite.chunk.js} +2 -2
  24. package/dist/scripts/{5877-6c9d90249b-lite.chunk.js.map → 5877-20ef40af7c-lite.chunk.js.map} +1 -1
  25. package/dist/scripts/5987-ece2ee4793-lite.chunk.js +3 -0
  26. package/dist/scripts/5987-ece2ee4793-lite.chunk.js.map +1 -0
  27. package/dist/scripts/{6273-a71eccd48b-lite.chunk.js → 6554-353cf95001-lite.chunk.js} +2 -2
  28. package/dist/scripts/{6273-a71eccd48b-lite.chunk.js.map → 6554-353cf95001-lite.chunk.js.map} +1 -1
  29. package/dist/scripts/{7815-554d031e0a-lite.chunk.js → 7815-05c5e8df47-lite.chunk.js} +2 -2
  30. package/dist/scripts/{7815-554d031e0a-lite.chunk.js.map → 7815-05c5e8df47-lite.chunk.js.map} +1 -1
  31. package/dist/scripts/{7835-61d04f9f11-lite.chunk.js → 7835-8d490274c8-lite.chunk.js} +3 -3
  32. package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.map → 7835-8d490274c8-lite.chunk.js.map} +1 -1
  33. package/dist/scripts/{8362-5936447d00-lite.chunk.js → 8362-7cac098b34-lite.chunk.js} +3 -3
  34. package/dist/scripts/{8362-5936447d00-lite.chunk.js.map → 8362-7cac098b34-lite.chunk.js.map} +1 -1
  35. package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js → 8548-c987128b9f-lite.chunk.js} +3 -3
  36. package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.map → 8548-c987128b9f-lite.chunk.js.map} +1 -1
  37. package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js → 8756-560899a88b-lite.chunk.js} +2 -2
  38. package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js.map → 8756-560899a88b-lite.chunk.js.map} +1 -1
  39. package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js → 8933-aa3f547d1e-lite.chunk.js} +3 -3
  40. package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.map → 8933-aa3f547d1e-lite.chunk.js.map} +1 -1
  41. package/dist/scripts/914-4a8424247f-lite.chunk.js +2 -0
  42. package/dist/scripts/914-4a8424247f-lite.chunk.js.map +1 -0
  43. package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js → 9423-3ce35ca995-lite.chunk.js} +2 -2
  44. package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js.map → 9423-3ce35ca995-lite.chunk.js.map} +1 -1
  45. package/dist/scripts/bundle-2ab602ed30.min.js +3 -0
  46. package/dist/scripts/{bundle-4276667ced.min.js.map → bundle-2ab602ed30.min.js.map} +1 -1
  47. package/package.json +1 -1
  48. package/dist/scripts/4033-d8dbb0d208-lite.chunk.js +0 -3
  49. package/dist/scripts/4033-d8dbb0d208-lite.chunk.js.map +0 -1
  50. package/dist/scripts/4050-57e2409255-lite.chunk.js.map +0 -1
  51. package/dist/scripts/5467-3c44100a58-lite.chunk.js +0 -2
  52. package/dist/scripts/5467-3c44100a58-lite.chunk.js.map +0 -1
  53. package/dist/scripts/658-f500e8210f-lite.chunk.js +0 -3
  54. package/dist/scripts/658-f500e8210f-lite.chunk.js.map +0 -1
  55. package/dist/scripts/bundle-4276667ced.min.js +0 -3
  56. /package/dist/scripts/{3143-f03801138f-lite.chunk.js.LICENSE.txt → 3143-a754e306a5-lite.chunk.js.LICENSE.txt} +0 -0
  57. /package/dist/scripts/{4033-d8dbb0d208-lite.chunk.js.LICENSE.txt → 3700-201cabeb7a-lite.chunk.js.LICENSE.txt} +0 -0
  58. /package/dist/scripts/{4050-57e2409255-lite.chunk.js.LICENSE.txt → 4050-8852c15f40-lite.chunk.js.LICENSE.txt} +0 -0
  59. /package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.LICENSE.txt → 4802-bc321d7ede-lite.chunk.js.LICENSE.txt} +0 -0
  60. /package/dist/scripts/{658-f500e8210f-lite.chunk.js.LICENSE.txt → 5987-ece2ee4793-lite.chunk.js.LICENSE.txt} +0 -0
  61. /package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.LICENSE.txt → 7835-8d490274c8-lite.chunk.js.LICENSE.txt} +0 -0
  62. /package/dist/scripts/{8362-5936447d00-lite.chunk.js.LICENSE.txt → 8362-7cac098b34-lite.chunk.js.LICENSE.txt} +0 -0
  63. /package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.LICENSE.txt → 8548-c987128b9f-lite.chunk.js.LICENSE.txt} +0 -0
  64. /package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.LICENSE.txt → 8933-aa3f547d1e-lite.chunk.js.LICENSE.txt} +0 -0
  65. /package/dist/scripts/{bundle-4276667ced.min.js.LICENSE.txt → bundle-2ab602ed30.min.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1518],{81803:(e,t,r)=>{r.d(t,{d:()=>p});var n=r(32735),a=r(81886),i=r(23481),l=r(49935),o=r(22902),c=r(14070),s=r(97291),u=r(96368);function m(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 d="settings.settingsLayout",f=function(e){var t=(0,o.T)().hasPermissions,r=(0,u.e)();if(e)return t(e);var n=a.Q.C$.getCurrentAppLink();return n.application!==s.O.SETTINGS||r.some(function(e){return e.modules.some(function(e){return"appLink"in e&&e.appLink.action===n.action})})};function p(e){var t,r=f(e.requiredPermissions);if(n.useEffect(function(){r||a.Q.C$.trigger({application:s.O.SETTINGS,action:c.e.Settings.HOME},{replace:!0})},[r]),!r)return n.createElement(n.Fragment,null);var o,u=e.breadcrumbs.map(function(t,r){return{name:t,appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME},active:r===e.breadcrumbs.length-1}});return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(l.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME}}].concat((o=u,function(e){if(Array.isArray(e))return m(e)}(o)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(o)||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&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},17174:(e,t,r)=>{r.r(t),r.d(t,{AccountSettingsView:()=>B});var n=r(32735),a=r(70680),i=r(23481),l=r(20354),o=r(49985),c=r(65858),s=r(39739),u=r(86764),m=r(31949),d=r(69883),f=r(3747),p=r(79612),g=r(92802),h=r(23201),E=r(29057),w=r(82644),v=r(83345),b=r(5173),y="settings.emailSettings",S=(0,b.Ry)().shape({email:(0,b.Z_)().required(function(){return i.T.getPhrase(y,"emailRequired")}).email(function(){return i.T.getPhrase(y,"emailInvalid")}).trim().default("")}),P=r(86794);function N(){return n.createElement(P.b,null,n.createElement("svg",{viewBox:"0 0 24 24"},n.createElement("path",{d:"M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z"})))}function k(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 C="settings.emailSettings",T=i.T.encloseNamespace(C);function A(e){var t,r,a=(0,f.a)(u.r.MDDown),i=(t=n.useState(!a),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=i[0],o=i[1],c=e.currentUser.emailVerified;return n.useEffect(function(){a||l||o(!0)},[a,l]),n.createElement(v.D.Provider,{value:C},n.createElement("h2",{className:"h4 d-flex align-items-center"},n.createElement(v.x,{phrase:"heading"}),c&&n.createElement("span",{className:"font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2"},n.createElement(v.x,{phrase:"verified"}),n.createElement(N,null))),c&&n.createElement("p",null,n.createElement(v.x,{phrase:"info",options:{email:e.currentUser.email}})),l?n.createElement(w.n,{initialValues:{email:e.currentUser.email||""},onSubmit:e.onChangeEmail,validationSchema:S},n.createElement(g.l0,null,n.createElement(E.W,{className:"w-75",name:"email",placeholder:T("emailPlaceholder"),autoComplete:"email"}),n.createElement("div",{className:"d-flex justify-content-end w-75 ".concat(a?"ms-n2":"")},a&&n.createElement("button",{type:"button",className:"btn btn-link me-2",onClick:function(){return o(!1)}},n.createElement(v.x,{phrase:"cancel"})),n.createElement(h.A,{isNew:!1,submitText:T(c?"updateEmail":"verifyEmail"),variant:c?"outline-dark":"dark"})))):n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex"},n.createElement("button",{className:"btn btn-outline-dark me-2",onClick:function(){return o(!0)}},n.createElement(v.x,{phrase:"change"})))))}const x={partialLabel:"aKssR",partialInfo:"ZrKZk",partialInput:"Lvn15",partialSubmit:"TActD",partialNote:"pqp7j"};function I(){return n.createElement("div",{className:"w-50"},n.createElement("div",{className:"partial-loading-background mb-2 ".concat(x.partialLabel)}),n.createElement("div",{className:"partial-loading-background ".concat(x.partialInfo)}),n.createElement("div",{className:"form-group"},n.createElement("div",{className:"partial-loading-background ".concat(x.partialInput)})),n.createElement("div",{className:"partial-loading-background ".concat(x.partialSubmit)}),n.createElement("div",{className:"partial-loading-background mt-2 ".concat(x.partialNote)}))}var L=r(68670),O=i.T.encloseNamespace("settings.passwordSettings"),j=function(e){return(0,b.Ry)().shape({currentPassword:(0,b.Z_)().required(function(){return O("currentPasswordRequired")}).trim().default(""),newPassword:(0,b.Z_)().required(function(){return O("newPasswordRequired")}).min(e,function(){return O("newPasswordMinLength",{minLen:e})}).trim().default(""),confirmPassword:(0,b.Z_)().required(function(){return O("confirmPasswordRequired")}).oneOf([(0,b.iH)("newPassword"),null],function(){return O("passwordsDontMatch")}).trim().default("")})};function M(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 q="settings.passwordSettings",U={currentPassword:"",newPassword:"",confirmPassword:""};function D(e){var t,r,a=(0,f.a)(u.r.MDDown),l=(t=n.useState(!a),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return M(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)?M(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=l[0],c=l[1];return n.useEffect(function(){a||o||c(!0)},[a,o]),n.createElement(v.D.Provider,{value:q},n.createElement("h2",{className:"h4"},n.createElement(v.x,{phrase:"heading"})),o?n.createElement(n.Fragment,null,n.createElement("p",null,n.createElement(v.x,{phrase:"info"})),n.createElement(w.n,{initialValues:U,onSubmit:function(t,r){e.onChangePassword(t,r,function(){return r({reset:!0})})},validationSchema:j(e.minPasswordLength)},n.createElement(L.p,{onClickCancel:function(){return c(!1)},hideCancelButton:!a,submitText:i.T.getPhrase(q,"savePassword"),buttonContainerClass:a?"d-flex justify-content-end ms-n2 w-75":"d-flex justify-content-end w-75",inputWidthClass:"w-75"}))):n.createElement("button",{className:"btn btn-outline-dark ",onClick:function(){return c(!0)}},n.createElement(v.x,{phrase:"change"})))}var R=r(81803),Z=r(26234),F=r(47288),_=i.T.encloseNamespace("settings.accountSettings");function B(){var e;(0,p.M)({title:_("pageTitle")});var t=(0,a.I0)(),r=(0,d.Z)(),i=(0,f.a)(u.r.MDDown),g=l.a.useBasicFetch(m.N.currentUser()),h=l.a.useBasicFetch(g.data&&F.N.getUser(g.data.id)),E=l.a.useBasicFetch(g.data&&Z.F.getCustomerSecuritySettings(g.data.customerId)),w=s.P.getMinimumPasswordLength(E.data,null===(e=h.data)||void 0===e?void 0:e.userType,g.data.role);return n.createElement(R.d,{heading:_("heading"),breadcrumbs:[_("breadcrumb")]},n.createElement("div",{className:i?"w-100":"w-50"},g.data?n.createElement(A,{currentUser:g.data,onChangeEmail:function(e,n){l.a.fetch(t,F.N.changeEmail(e.email,function(){o.k.logUserAction({id:g.data.id,oldEmail:g.data.email,newEmail:e.email},{actionType:c.Vw.VerifyEmail,entity:c.py.User,location:c.LZ.Settings,workflowPhase:c.eu.Start}),r.success(_("changeEmailRequestSuccess",{email:e.email,escapeText:!0}))},function(){r.error(_("changeEmailRequestError"))},n))}}):n.createElement(I,null)),n.createElement("hr",null),n.createElement("div",{className:i?"w-100":"w-50"},E.data&&n.createElement(D,{onChangePassword:function(e,n,a){l.a.fetch(t,F.N.changePassword(e,function(){o.k.logUserAction({id:g.data.id,oldPassword:e.currentPassword,newPassword:e.newPassword},{actionType:c.Vw.ChangePassword,entity:c.py.User,location:c.LZ.Settings,workflowPhase:c.eu.Complete}),r.success(_("changePasswordSuccess")),a()},function(e){var t=e.responseJSON;"user.password-too-short"===t.errorCode?r.error(_("changePasswordRequirementsError")):"user.invalid-password"===t.errorCode?r.error(_("changePasswordInvalid")):"user.same-password"===t.errorCode?r.error(_("changePasswordSame")):"user.locked-out"===t.errorCode?r.error(_("changePasswordLockedOut")):r.error(_("changePasswordError"))},n))},minPasswordLength:w})))}}}]);
2
- //# sourceMappingURL=1518-c916754d35-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1518],{81803:(e,t,r)=>{r.d(t,{d:()=>p});var n=r(32735),a=r(81886),i=r(23481),l=r(49935),o=r(22902),c=r(14070),s=r(97291),u=r(96368);function m(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 d="settings.settingsLayout",f=function(e){var t=(0,o.T)().hasPermissions,r=(0,u.e)();if(e)return t(e);var n=a.Q.C$.getCurrentAppLink();return n.application!==s.O.SETTINGS||r.some(function(e){return e.modules.some(function(e){return"appLink"in e&&e.appLink.action===n.action})})};function p(e){var t,r=f(e.requiredPermissions);if(n.useEffect(function(){r||a.Q.C$.trigger({application:s.O.SETTINGS,action:c.e.Settings.HOME},{replace:!0})},[r]),!r)return n.createElement(n.Fragment,null);var o,u=e.breadcrumbs.map(function(t,r){return{name:t,appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME},active:r===e.breadcrumbs.length-1}});return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(l.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME}}].concat((o=u,function(e){if(Array.isArray(e))return m(e)}(o)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(o)||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&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},17174:(e,t,r)=>{r.r(t),r.d(t,{AccountSettingsView:()=>B});var n=r(32735),a=r(70680),i=r(23481),l=r(20354),o=r(49985),c=r(65858),s=r(39739),u=r(86764),m=r(31949),d=r(69883),f=r(3747),p=r(79612),g=r(92802),h=r(23201),E=r(29057),w=r(82644),v=r(83345),b=r(5173),y="settings.emailSettings",S=(0,b.Ry)().shape({email:(0,b.Z_)().required(function(){return i.T.getPhrase(y,"emailRequired")}).email(function(){return i.T.getPhrase(y,"emailInvalid")}).trim().default("")}),P=r(86794);function N(){return n.createElement(P.b,null,n.createElement("svg",{viewBox:"0 0 24 24"},n.createElement("path",{d:"M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z"})))}function k(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 C="settings.emailSettings",T=i.T.encloseNamespace(C);function A(e){var t,r,a=(0,f.a)(u.r.MDDown),i=(t=n.useState(!a),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=i[0],o=i[1],c=e.currentUser.emailVerified;return n.useEffect(function(){a||l||o(!0)},[a,l]),n.createElement(v.D.Provider,{value:C},n.createElement("h2",{className:"h4 d-flex align-items-center"},n.createElement(v.x,{phrase:"heading"}),c&&n.createElement("span",{className:"font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2"},n.createElement(v.x,{phrase:"verified"}),n.createElement(N,null))),c&&n.createElement("p",null,n.createElement(v.x,{phrase:"info",options:{email:e.currentUser.email}})),l?n.createElement(w.n,{initialValues:{email:e.currentUser.email||""},onSubmit:e.onChangeEmail,validationSchema:S},n.createElement(g.l0,null,n.createElement(E.W,{className:"w-75",name:"email",placeholder:T("emailPlaceholder"),autoComplete:"email"}),n.createElement("div",{className:"d-flex justify-content-end w-75 ".concat(a?"ms-n2":"")},a&&n.createElement("button",{type:"button",className:"btn btn-link me-2",onClick:function(){return o(!1)}},n.createElement(v.x,{phrase:"cancel"})),n.createElement(h.A,{isNew:!1,submitText:T(c?"updateEmail":"verifyEmail"),variant:c?"outline-dark":"dark"})))):n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex"},n.createElement("button",{className:"btn btn-outline-dark me-2",onClick:function(){return o(!0)}},n.createElement(v.x,{phrase:"change"})))))}const x={partialLabel:"aKssR",partialInfo:"ZrKZk",partialInput:"Lvn15",partialSubmit:"TActD",partialNote:"pqp7j"};function I(){return n.createElement("div",{className:"w-50"},n.createElement("div",{className:"partial-loading-background mb-2 ".concat(x.partialLabel)}),n.createElement("div",{className:"partial-loading-background ".concat(x.partialInfo)}),n.createElement("div",{className:"form-group"},n.createElement("div",{className:"partial-loading-background ".concat(x.partialInput)})),n.createElement("div",{className:"partial-loading-background ".concat(x.partialSubmit)}),n.createElement("div",{className:"partial-loading-background mt-2 ".concat(x.partialNote)}))}var L=r(68670),O=i.T.encloseNamespace("settings.passwordSettings"),j=function(e){return(0,b.Ry)().shape({currentPassword:(0,b.Z_)().required(function(){return O("currentPasswordRequired")}).trim().default(""),newPassword:(0,b.Z_)().required(function(){return O("newPasswordRequired")}).min(e,function(){return O("newPasswordMinLength",{minLen:e})}).trim().default(""),confirmPassword:(0,b.Z_)().required(function(){return O("confirmPasswordRequired")}).oneOf([(0,b.iH)("newPassword"),null],function(){return O("passwordsDontMatch")}).trim().default("")})};function M(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 q="settings.passwordSettings",U={currentPassword:"",newPassword:"",confirmPassword:""};function D(e){var t,r,a=(0,f.a)(u.r.MDDown),l=(t=n.useState(!a),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return M(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)?M(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=l[0],c=l[1];return n.useEffect(function(){a||o||c(!0)},[a,o]),n.createElement(v.D.Provider,{value:q},n.createElement("h2",{className:"h4"},n.createElement(v.x,{phrase:"heading"})),o?n.createElement(n.Fragment,null,n.createElement("p",null,n.createElement(v.x,{phrase:"info"})),n.createElement(w.n,{initialValues:U,onSubmit:function(t,r){e.onChangePassword(t,r,function(){return r({reset:!0})})},validationSchema:j(e.minPasswordLength)},n.createElement(L.p,{onClickCancel:function(){return c(!1)},hideCancelButton:!a,submitText:i.T.getPhrase(q,"savePassword"),buttonContainerClass:a?"d-flex justify-content-end ms-n2 w-75":"d-flex justify-content-end w-75",inputWidthClass:"w-75"}))):n.createElement("button",{className:"btn btn-outline-dark ",onClick:function(){return c(!0)}},n.createElement(v.x,{phrase:"change"})))}var R=r(81803),Z=r(80658),F=r(47288),_=i.T.encloseNamespace("settings.accountSettings");function B(){var e;(0,p.M)({title:_("pageTitle")});var t=(0,a.I0)(),r=(0,d.Z)(),i=(0,f.a)(u.r.MDDown),g=l.a.useBasicFetch(m.N.currentUser()),h=l.a.useBasicFetch(g.data&&F.N.getUser(g.data.id)),E=l.a.useBasicFetch(g.data&&Z.F.getCustomerSecuritySettings(g.data.customerId)),w=s.P.getMinimumPasswordLength(E.data,null===(e=h.data)||void 0===e?void 0:e.userType,g.data.role);return n.createElement(R.d,{heading:_("heading"),breadcrumbs:[_("breadcrumb")]},n.createElement("div",{className:i?"w-100":"w-50"},g.data?n.createElement(A,{currentUser:g.data,onChangeEmail:function(e,n){l.a.fetch(t,F.N.changeEmail(e.email,function(){o.k.logUserAction({id:g.data.id,oldEmail:g.data.email,newEmail:e.email},{actionType:c.Vw.VerifyEmail,entity:c.py.User,location:c.LZ.Settings,workflowPhase:c.eu.Start}),r.success(_("changeEmailRequestSuccess",{email:e.email,escapeText:!0}))},function(){r.error(_("changeEmailRequestError"))},n))}}):n.createElement(I,null)),n.createElement("hr",null),n.createElement("div",{className:i?"w-100":"w-50"},E.data&&n.createElement(D,{onChangePassword:function(e,n,a){l.a.fetch(t,F.N.changePassword(e,function(){o.k.logUserAction({id:g.data.id,oldPassword:e.currentPassword,newPassword:e.newPassword},{actionType:c.Vw.ChangePassword,entity:c.py.User,location:c.LZ.Settings,workflowPhase:c.eu.Complete}),r.success(_("changePasswordSuccess")),a()},function(e){var t=e.responseJSON;"user.password-too-short"===t.errorCode?r.error(_("changePasswordRequirementsError")):"user.invalid-password"===t.errorCode?r.error(_("changePasswordInvalid")):"user.same-password"===t.errorCode?r.error(_("changePasswordSame")):"user.locked-out"===t.errorCode?r.error(_("changePasswordLockedOut")):r.error(_("changePasswordError"))},n))},minPasswordLength:w})))}}}]);
2
+ //# sourceMappingURL=1518-7005bfd3c8-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/1518-c916754d35-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/EmailSettingsValidationSchema.ts","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/VerifiedEmailIcon.tsx","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/EmailSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/partial-loading/partial-email-settings.scss","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/partial-loading/PartialEmailSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/components/password-settings/PasswordSettingsValidationSchema.ts","file:///app/packages/projects/lite/src/apps/settings/components/password-settings/PasswordSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/views/account-settings/AccountSettingsView.tsx"],"sourcesContent":["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 { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.emailSettings';\n\nexport const EmailSettingsValidationSchema = object().shape({\n email: string()\n .required(() => LanguageService.getPhrase(namespace, 'emailRequired'))\n .email(() => LanguageService.getPhrase(namespace, 'emailInvalid'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\n\nexport function VerifiedEmailIcon(): JSX.Element {\n return (\n <SvgContainer2>\n <svg viewBox='0 0 24 24'>\n <path d='M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z'/>\n </svg>\n </SvgContainer2>\n );\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { EmailSettingsValidationSchema } from './EmailSettingsValidationSchema';\nimport { VerifiedEmailIcon } from './VerifiedEmailIcon';\n\nconst namespace = 'settings.emailSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface EmailSettingsModel {\n email: string;\n}\n\ninterface EmailSettingsProps {\n currentUser: CurrentUser;\n onChangeEmail: (emailModel: EmailSettingsModel) => void;\n}\n\nexport function EmailSettings(props: EmailSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n const isVerified = props.currentUser.emailVerified;\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4 d-flex align-items-center'>\n <Text phrase='heading' />\n {isVerified && (\n <span className='font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2'>\n <Text phrase='verified' />\n <VerifiedEmailIcon />\n </span>\n )}\n </h2>\n\n {isVerified && (\n <p><Text phrase='info' options={{ email: props.currentUser.email }} /></p>\n )}\n\n {!showForm\n ? (\n <>\n <div className='d-flex'>\n <button className='btn btn-outline-dark me-2' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n </div>\n </>\n ) : (\n <FormWrapper<EmailSettingsModel>\n initialValues={{ email: props.currentUser.email || '' }}\n onSubmit={props.onChangeEmail}\n validationSchema={EmailSettingsValidationSchema}\n >\n <Form>\n <FormField\n className='w-75'\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n autoComplete='email'\n />\n <div className={`d-flex justify-content-end w-75 ${isSmallScreen ? 'ms-n2' : ''}`}>\n {isSmallScreen && (\n <button type='button' className='btn btn-link me-2' onClick={() => setShowForm(false)}>\n <Text phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={isVerified ? getPhrase('updateEmail') : getPhrase('verifyEmail')}\n variant={isVerified ? 'outline-dark' : 'dark'}\n />\n </div>\n </Form>\n </FormWrapper>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialLabel\":\"aKssR\",\"partialInfo\":\"ZrKZk\",\"partialInput\":\"Lvn15\",\"partialSubmit\":\"TActD\",\"partialNote\":\"pqp7j\"};","import React from 'react';\n\nimport styles from './partial-email-settings.scss';\n\nexport function PartialEmailSettings(): JSX.Element {\n return (\n <div className='w-50'>\n <div className={`partial-loading-background mb-2 ${styles.partialLabel}`} />\n <div className={`partial-loading-background ${styles.partialInfo}`} />\n\n <div className='form-group'>\n <div className={`partial-loading-background ${styles.partialInput}`} />\n </div>\n <div className={`partial-loading-background ${styles.partialSubmit}`} />\n <div className={`partial-loading-background mt-2 ${styles.partialNote}`} />\n </div>\n );\n}","import { object, ref, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.passwordSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getPasswordSettingsValidationSchema = (minPasswordLength: number) => object().shape({\n currentPassword: string()\n .required(() => getPhrase('currentPasswordRequired'))\n .trim()\n .default(''),\n newPassword: string()\n .required(() => getPhrase('newPasswordRequired'))\n .min(minPasswordLength, () => getPhrase('newPasswordMinLength', { minLen: minPasswordLength }))\n .trim()\n .default(''),\n confirmPassword: string()\n .required(() => getPhrase('confirmPasswordRequired'))\n .oneOf([ ref('newPassword'), null ], () => getPhrase('passwordsDontMatch'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordForm } from 'libs/shared/apps/user-manager/components/change-password-form/ChangePasswordForm';\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\n\nimport { getPasswordSettingsValidationSchema } from './PasswordSettingsValidationSchema';\n\nconst namespace = 'settings.passwordSettings';\n\nconst initialValues: ChangePasswordRequest = {\n currentPassword: '',\n newPassword: '',\n confirmPassword: ''\n};\n\ninterface PasswordSettingsProps {\n onChangePassword: (\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ) => void;\n minPasswordLength: number;\n}\n\nexport function PasswordSettings(props: PasswordSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n function onSubmitPassword(data: ChangePasswordRequest, onDone: (options?: FormSubmissionOptions) => void) {\n props.onChangePassword(data, onDone, () => onDone({ reset: true }));\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4'><Text phrase='heading' /></h2>\n\n {!showForm\n ? (\n <button className='btn btn-outline-dark ' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n ) : (\n <>\n <p><Text phrase='info' /></p>\n\n <FormWrapper<ChangePasswordRequest>\n initialValues={initialValues}\n onSubmit={onSubmitPassword}\n validationSchema={getPasswordSettingsValidationSchema(props.minPasswordLength)}\n >\n <ChangePasswordForm\n onClickCancel={() => setShowForm(false)}\n hideCancelButton={!isSmallScreen}\n submitText={LanguageService.getPhrase(namespace, 'savePassword')}\n buttonContainerClass={isSmallScreen\n ? 'd-flex justify-content-end ms-n2 w-75'\n : 'd-flex justify-content-end w-75'\n }\n inputWidthClass='w-75'\n />\n </FormWrapper>\n </>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","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 { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces/ChangePasswordRequest';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { EmailSettings, EmailSettingsModel } from 'apps/settings/components/email-settings/EmailSettings';\nimport { PartialEmailSettings } from 'apps/settings/components/email-settings/partial-loading/PartialEmailSettings';\nimport { PasswordSettings } from 'apps/settings/components/password-settings/PasswordSettings';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\nconst namespace = 'settings.accountSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AccountSettingsView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const masterCurrentUser = Flight.useBasicFetch<User>(currentUser.data &&\n UserManagerRequests.getUser(currentUser.data.id));\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n function onChangeEmail(emailModel: EmailSettingsModel, onDone?: () => void): void {\n Flight.fetch(dispatch, UserManagerRequests.changeEmail(emailModel.email, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldEmail: currentUser.data.email,\n newEmail: emailModel.email\n }, {\n actionType: UserAction.VerifyEmail,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Start\n });\n\n alerts.success(getPhrase('changeEmailRequestSuccess', { email: emailModel.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('changeEmailRequestError'));\n }, onDone));\n }\n\n function onChangePassword(\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ): void {\n Flight.fetch(dispatch, UserManagerRequests.changePassword(passwordModel, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldPassword: passwordModel.currentPassword,\n newPassword: passwordModel.newPassword\n }, {\n actionType: UserAction.ChangePassword,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('changePasswordSuccess'));\n onSuccess();\n }, ({ responseJSON }: JQuery.jqXHR) => {\n if (responseJSON.errorCode === 'user.password-too-short')\n alerts.error(getPhrase('changePasswordRequirementsError'));\n else if (responseJSON.errorCode === 'user.invalid-password')\n alerts.error(getPhrase('changePasswordInvalid'));\n else if (responseJSON.errorCode === 'user.same-password')\n alerts.error(getPhrase('changePasswordSame'));\n else if (responseJSON.errorCode === 'user.locked-out')\n alerts.error(getPhrase('changePasswordLockedOut'));\n else\n alerts.error(getPhrase('changePasswordError'));\n }, onDone));\n }\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n passwordPolicy.data,\n masterCurrentUser.data?.userType,\n currentUser.data.role\n );\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {(currentUser.data)\n ? (\n <EmailSettings\n currentUser={currentUser.data}\n onChangeEmail={onChangeEmail}\n />\n ) : <PartialEmailSettings />\n }\n </div>\n\n <hr />\n\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {passwordPolicy.data && (\n <PasswordSettings onChangePassword={onChangePassword} minPasswordLength={minPasswordLength} />\n )}\n </div>\n </SettingsLayout>\n );\n}"],"names":["namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","appLink","action","SettingsLayout","props","canAccess","replace","breadcrumbs","map","name","i","active","length","className","heading","headingButton","description","children","EmailSettingsValidationSchema","shape","email","required","LanguageService","trim","VerifiedEmailIcon","SvgContainer2","viewBox","d","getPhrase","EmailSettings","isSmallScreen","showForm","setShowForm","isVerified","currentUser","emailVerified","value","Text","phrase","options","FormWrapper","initialValues","onSubmit","onChangeEmail","validationSchema","FormField","placeholder","autoComplete","type","onClick","FormButtons","isNew","submitText","variant","PartialEmailSettings","getPasswordSettingsValidationSchema","minPasswordLength","currentPassword","newPassword","min","minLen","confirmPassword","oneOf","PasswordSettings","data","onDone","onChangePassword","reset","ChangePasswordForm","onClickCancel","hideCancelButton","buttonContainerClass","inputWidthClass","AccountSettingsView","useSetPageMetadata","title","dispatch","alerts","UserRequests","masterCurrentUser","UserManagerRequests","id","passwordPolicy","SecuritySettingsRequests","customerId","UserManagerHelper","userType","role","emailModel","AnalyticsHelper","oldEmail","newEmail","actionType","entity","location","workflowPhase","success","escapeText","error","passwordModel","onSuccess","oldPassword","responseJSON","errorCode"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/1518-7005bfd3c8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/EmailSettingsValidationSchema.ts","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/VerifiedEmailIcon.tsx","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/EmailSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/partial-loading/partial-email-settings.scss","file:///app/packages/projects/lite/src/apps/settings/components/email-settings/partial-loading/PartialEmailSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/components/password-settings/PasswordSettingsValidationSchema.ts","file:///app/packages/projects/lite/src/apps/settings/components/password-settings/PasswordSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/views/account-settings/AccountSettingsView.tsx"],"sourcesContent":["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 { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.emailSettings';\n\nexport const EmailSettingsValidationSchema = object().shape({\n email: string()\n .required(() => LanguageService.getPhrase(namespace, 'emailRequired'))\n .email(() => LanguageService.getPhrase(namespace, 'emailInvalid'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\n\nexport function VerifiedEmailIcon(): JSX.Element {\n return (\n <SvgContainer2>\n <svg viewBox='0 0 24 24'>\n <path d='M10.407 12.368l-1.22-1.22a.49.49 0 0 0-.698.004l-.583.583a.494.494 0 0 0-.004.697l2.135 2.135c.107.108.25.154.388.142a.488.488 0 0 0 .352-.143l4.362-4.362a.494.494 0 0 0-.004-.698l-.582-.582a.495.495 0 0 0-.698-.004l-3.448 3.448zm7.922-.37l1.437 1.406c.208.194.277.437.208.728a.716.716 0 0 1-.541.531l-1.957.5.551 1.936a.671.671 0 0 1-.197.729.671.671 0 0 1-.73.198l-1.935-.552-.5 1.957a.716.716 0 0 1-.53.541 1.28 1.28 0 0 1-.199.021.686.686 0 0 1-.53-.229L12 18.328l-1.405 1.436c-.195.208-.437.278-.729.208a.696.696 0 0 1-.53-.541l-.5-1.957-1.937.552a.671.671 0 0 1-.728-.198.671.671 0 0 1-.198-.729l.551-1.936-1.957-.5a.716.716 0 0 1-.54-.53c-.07-.292 0-.535.207-.73l1.437-1.405-1.437-1.405c-.208-.194-.277-.437-.208-.729a.716.716 0 0 1 .541-.53l1.957-.5-.551-1.936a.671.671 0 0 1 .198-.73.671.671 0 0 1 .728-.197l1.936.552.5-1.957a.675.675 0 0 1 .531-.531.671.671 0 0 1 .729.198L12 5.68l1.405-1.447a.697.697 0 0 1 .73-.198c.284.07.46.246.53.53l.5 1.958L17.1 5.97a.671.671 0 0 1 .729.198.671.671 0 0 1 .197.729l-.551 1.936 1.957.5a.715.715 0 0 1 .541.53c.07.292 0 .535-.208.73l-1.437 1.404z'/>\n </svg>\n </SvgContainer2>\n );\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { EmailSettingsValidationSchema } from './EmailSettingsValidationSchema';\nimport { VerifiedEmailIcon } from './VerifiedEmailIcon';\n\nconst namespace = 'settings.emailSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface EmailSettingsModel {\n email: string;\n}\n\ninterface EmailSettingsProps {\n currentUser: CurrentUser;\n onChangeEmail: (emailModel: EmailSettingsModel) => void;\n}\n\nexport function EmailSettings(props: EmailSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n const isVerified = props.currentUser.emailVerified;\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4 d-flex align-items-center'>\n <Text phrase='heading' />\n {isVerified && (\n <span className='font-size-normal fw-semibold text-primary d-flex align-items-center mb-0 ms-2'>\n <Text phrase='verified' />\n <VerifiedEmailIcon />\n </span>\n )}\n </h2>\n\n {isVerified && (\n <p><Text phrase='info' options={{ email: props.currentUser.email }} /></p>\n )}\n\n {!showForm\n ? (\n <>\n <div className='d-flex'>\n <button className='btn btn-outline-dark me-2' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n </div>\n </>\n ) : (\n <FormWrapper<EmailSettingsModel>\n initialValues={{ email: props.currentUser.email || '' }}\n onSubmit={props.onChangeEmail}\n validationSchema={EmailSettingsValidationSchema}\n >\n <Form>\n <FormField\n className='w-75'\n name='email'\n placeholder={getPhrase('emailPlaceholder')}\n autoComplete='email'\n />\n <div className={`d-flex justify-content-end w-75 ${isSmallScreen ? 'ms-n2' : ''}`}>\n {isSmallScreen && (\n <button type='button' className='btn btn-link me-2' onClick={() => setShowForm(false)}>\n <Text phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={isVerified ? getPhrase('updateEmail') : getPhrase('verifyEmail')}\n variant={isVerified ? 'outline-dark' : 'dark'}\n />\n </div>\n </Form>\n </FormWrapper>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialLabel\":\"aKssR\",\"partialInfo\":\"ZrKZk\",\"partialInput\":\"Lvn15\",\"partialSubmit\":\"TActD\",\"partialNote\":\"pqp7j\"};","import React from 'react';\n\nimport styles from './partial-email-settings.scss';\n\nexport function PartialEmailSettings(): JSX.Element {\n return (\n <div className='w-50'>\n <div className={`partial-loading-background mb-2 ${styles.partialLabel}`} />\n <div className={`partial-loading-background ${styles.partialInfo}`} />\n\n <div className='form-group'>\n <div className={`partial-loading-background ${styles.partialInput}`} />\n </div>\n <div className={`partial-loading-background ${styles.partialSubmit}`} />\n <div className={`partial-loading-background mt-2 ${styles.partialNote}`} />\n </div>\n );\n}","import { object, ref, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'settings.passwordSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getPasswordSettingsValidationSchema = (minPasswordLength: number) => object().shape({\n currentPassword: string()\n .required(() => getPhrase('currentPasswordRequired'))\n .trim()\n .default(''),\n newPassword: string()\n .required(() => getPhrase('newPasswordRequired'))\n .min(minPasswordLength, () => getPhrase('newPasswordMinLength', { minLen: minPasswordLength }))\n .trim()\n .default(''),\n confirmPassword: string()\n .required(() => getPhrase('confirmPasswordRequired'))\n .oneOf([ ref('newPassword'), null ], () => getPhrase('passwordsDontMatch'))\n .trim()\n .default('')\n});","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordForm } from 'libs/shared/apps/user-manager/components/change-password-form/ChangePasswordForm';\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormSubmissionOptions, FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\n\nimport { getPasswordSettingsValidationSchema } from './PasswordSettingsValidationSchema';\n\nconst namespace = 'settings.passwordSettings';\n\nconst initialValues: ChangePasswordRequest = {\n currentPassword: '',\n newPassword: '',\n confirmPassword: ''\n};\n\ninterface PasswordSettingsProps {\n onChangePassword: (\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ) => void;\n minPasswordLength: number;\n}\n\nexport function PasswordSettings(props: PasswordSettingsProps): JSX.Element {\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n // On small screens, we collapse the forms by default\n const [ showForm, setShowForm ] = React.useState(!isSmallScreen);\n\n React.useEffect(() => {\n if (!isSmallScreen && !showForm)\n setShowForm(true);\n }, [ isSmallScreen, showForm ]);\n\n function onSubmitPassword(data: ChangePasswordRequest, onDone: (options?: FormSubmissionOptions) => void) {\n props.onChangePassword(data, onDone, () => onDone({ reset: true }));\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4'><Text phrase='heading' /></h2>\n\n {!showForm\n ? (\n <button className='btn btn-outline-dark ' onClick={() => setShowForm(true)}>\n <Text phrase='change' />\n </button>\n ) : (\n <>\n <p><Text phrase='info' /></p>\n\n <FormWrapper<ChangePasswordRequest>\n initialValues={initialValues}\n onSubmit={onSubmitPassword}\n validationSchema={getPasswordSettingsValidationSchema(props.minPasswordLength)}\n >\n <ChangePasswordForm\n onClickCancel={() => setShowForm(false)}\n hideCancelButton={!isSmallScreen}\n submitText={LanguageService.getPhrase(namespace, 'savePassword')}\n buttonContainerClass={isSmallScreen\n ? 'd-flex justify-content-end ms-n2 w-75'\n : 'd-flex justify-content-end w-75'\n }\n inputWidthClass='w-75'\n />\n </FormWrapper>\n </>\n )\n }\n </LanguageNamespaceContext.Provider>\n );\n}","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 { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces/ChangePasswordRequest';\nimport { SecuritySettingsResponse } from 'libs/shared/apps/user-manager/interfaces/SecuritySettingsResponse';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { EmailSettings, EmailSettingsModel } from 'apps/settings/components/email-settings/EmailSettings';\nimport { PartialEmailSettings } from 'apps/settings/components/email-settings/partial-loading/PartialEmailSettings';\nimport { PasswordSettings } from 'apps/settings/components/password-settings/PasswordSettings';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { SecuritySettingsRequests } from 'apps/settings/flight-requests/SecuritySettingsRequests';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\nconst namespace = 'settings.accountSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function AccountSettingsView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const isSmallScreen = useMediaQuery(MediaQueryStrings.MDDown);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const masterCurrentUser = Flight.useBasicFetch<User>(currentUser.data &&\n UserManagerRequests.getUser(currentUser.data.id));\n const passwordPolicy = Flight.useBasicFetch<SecuritySettingsResponse>(currentUser.data &&\n SecuritySettingsRequests.getCustomerSecuritySettings(currentUser.data.customerId));\n\n function onChangeEmail(emailModel: EmailSettingsModel, onDone?: () => void): void {\n Flight.fetch(dispatch, UserManagerRequests.changeEmail(emailModel.email, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldEmail: currentUser.data.email,\n newEmail: emailModel.email\n }, {\n actionType: UserAction.VerifyEmail,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Start\n });\n\n alerts.success(getPhrase('changeEmailRequestSuccess', { email: emailModel.email, escapeText: true }));\n }, () => {\n alerts.error(getPhrase('changeEmailRequestError'));\n }, onDone));\n }\n\n function onChangePassword(\n passwordModel: ChangePasswordRequest,\n onDone?: () => void,\n onSuccess?: () => void\n ): void {\n Flight.fetch(dispatch, UserManagerRequests.changePassword(passwordModel, () => {\n AnalyticsHelper.logUserAction({\n id: currentUser.data.id,\n oldPassword: passwordModel.currentPassword,\n newPassword: passwordModel.newPassword\n }, {\n actionType: UserAction.ChangePassword,\n entity: EntityType.User,\n location: LocationContext.Settings,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('changePasswordSuccess'));\n onSuccess();\n }, ({ responseJSON }: JQuery.jqXHR) => {\n if (responseJSON.errorCode === 'user.password-too-short')\n alerts.error(getPhrase('changePasswordRequirementsError'));\n else if (responseJSON.errorCode === 'user.invalid-password')\n alerts.error(getPhrase('changePasswordInvalid'));\n else if (responseJSON.errorCode === 'user.same-password')\n alerts.error(getPhrase('changePasswordSame'));\n else if (responseJSON.errorCode === 'user.locked-out')\n alerts.error(getPhrase('changePasswordLockedOut'));\n else\n alerts.error(getPhrase('changePasswordError'));\n }, onDone));\n }\n\n const minPasswordLength = UserManagerHelper.getMinimumPasswordLength(\n passwordPolicy.data,\n masterCurrentUser.data?.userType,\n currentUser.data.role\n );\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {(currentUser.data)\n ? (\n <EmailSettings\n currentUser={currentUser.data}\n onChangeEmail={onChangeEmail}\n />\n ) : <PartialEmailSettings />\n }\n </div>\n\n <hr />\n\n <div className={isSmallScreen ? 'w-100' : 'w-50'}>\n {passwordPolicy.data && (\n <PasswordSettings onChangePassword={onChangePassword} minPasswordLength={minPasswordLength} />\n )}\n </div>\n </SettingsLayout>\n );\n}"],"names":["namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","appLink","action","SettingsLayout","props","canAccess","replace","breadcrumbs","map","name","i","active","length","className","heading","headingButton","description","children","EmailSettingsValidationSchema","shape","email","required","LanguageService","trim","VerifiedEmailIcon","SvgContainer2","viewBox","d","getPhrase","EmailSettings","isSmallScreen","showForm","setShowForm","isVerified","currentUser","emailVerified","value","Text","phrase","options","FormWrapper","initialValues","onSubmit","onChangeEmail","validationSchema","FormField","placeholder","autoComplete","type","onClick","FormButtons","isNew","submitText","variant","PartialEmailSettings","getPasswordSettingsValidationSchema","minPasswordLength","currentPassword","newPassword","min","minLen","confirmPassword","oneOf","PasswordSettings","data","onDone","onChangePassword","reset","ChangePasswordForm","onClickCancel","hideCancelButton","buttonContainerClass","inputWidthClass","AccountSettingsView","useSetPageMetadata","title","dispatch","alerts","UserRequests","masterCurrentUser","UserManagerRequests","id","passwordPolicy","SecuritySettingsRequests","customerId","UserManagerHelper","userType","role","emailModel","AnalyticsHelper","oldEmail","newEmail","actionType","entity","location","workflowPhase","success","escapeText","error","passwordModel","onSuccess","oldPassword","responseJSON","errorCode"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1670],{68670:(e,t,n)=>{n.d(t,{p:()=>m});var a=n(32735),r=n(92802),o=n(23481),l=n(23201),s=n(29057),i=n(83345),c="shared.changePasswordForm",u=o.T.encloseNamespace(c);function m(e){var t=(0,r.u6)();return a.createElement(r.l0,null,!e.hideCurrentPassword&&a.createElement(s.W,{className:e.inputWidthClass,name:"currentPassword",label:u("currentPassword"),placeholder:u("currentPasswordPlaceholder"),type:"password",autoComplete:"current-password",showRequiredStar:!0}),a.createElement(s.W,{className:e.inputWidthClass,name:"newPassword",label:u("newPassword"),placeholder:u("newPasswordPlaceholder"),type:"password",autoComplete:"new-password",showRequiredStar:!0}),a.createElement(s.W,{className:e.inputWidthClass,name:"confirmPassword",label:u("confirmPassword"),placeholder:u("confirmPasswordPlaceholder"),type:"password",autoComplete:"off",showRequiredStar:!0}),e.showChangeOnNextLogin&&a.createElement(s.W,{id:"changeOnNextLogin",name:"changeOnNextLogin",label:u("changeOnNextLogin"),type:"checkbox",checked:t.values.changeOnNextLogin,checkboxLabelFontWeight:"normal"}),!e.hideButtons&&a.createElement("div",{className:e.buttonContainerClass},!e.hideCancelButton&&!!e.onClickCancel&&a.createElement("button",{type:"button",className:"btn btn-link me-2 ".concat("lg"===e.buttonSize?"btn-lg":""),onClick:e.onClickCancel},a.createElement(i.x,{namespace:c,phrase:"cancel"})),a.createElement(l.A,{isNew:!1,submitText:e.submitText||u("save"),variant:e.submitVariant,size:e.buttonSize})))}m.defaultProps={submitVariant:"outline-dark",buttonContainerClass:"btn-container d-flex justify-content-end align-items-center",inputWidthClass:"w-100"}},23201:(e,t,n)=>{n.d(t,{A:()=>c});var a=n(32735),r=n(92802),o=n(2102),l=n(83345),s=n(33936),i="shared.formButtons";function c(e){var t=(0,r.u6)(),n=(0,s.l)(t);return a.createElement(o.m,{variant:e.variant||"primary",type:"submit",disabled:!n,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?a.createElement(a.Fragment,null,e.submitText):a.createElement(l.x,{namespace:i,phrase:e.isNew?"create":"save"}))}},29057:(e,t,n)=>{n.d(t,{n:()=>O,W:()=>C});var a=n(32735),r=n(80247),o=n(80130),l=n(92802),s=n(91967),i=n(1048),c=n(15611),u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,r=e.checkboxLabelFontWeight,l=e.className,s=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return a.createElement(o.Z.Group,{className:"form-group"},a.createElement("div",{className:"form-check ".concat(l||"")},a.createElement(O,Object.assign({className:"form-check-input"},s)),a.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===r?"fw-normal":""," \n ").concat(n),htmlFor:s.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&a.createElement(a.Fragment,null,a.createElement("span",null," "),a.createElement(c.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var p=n(83914),f=n(83345),d=n(73814),b=n(35223);function h(e){var t=(0,l.u6)().values,n=i.t.get(t,e.fieldName);return"string"!=typeof n?a.createElement(a.Fragment,null):a.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const y={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var v=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n},w="shared.formField";function O(e){var t,n,o=e.children,c=e.showLoadingSpinner,u=v(e,["children","showLoadingSpinner"]),m=(t=a.useState(e.type),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,l,s=[],i=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(a=o.call(n)).done)&&(s.push(a.value),s.length!==t);i=!0);}catch(e){c=!0,r=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return g(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)?g(e,t):void 0}}(t,n)||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.")}()),f=m[0],d=m[1],h=s.q.isFunction(o)?function(e){return o(e)}:a.Children.count(o)?o:null;if("password"!==u.type)return c?a.createElement("div",{className:"position-relative"},a.createElement(l.gN,Object.assign({},i.t.omit(u,["formSize"])),h),a.createElement("div",{className:y.spinner},a.createElement(r.Z,{animation:"border",size:"sm"}))):a.createElement(l.gN,Object.assign({},i.t.omit(u,["formSize"])),h);var w="position-relative ".concat(y.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(y.passwordContainerDisabled)),a.createElement("div",{className:w},a.createElement(l.gN,Object.assign({},i.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(y.passwordInput," border-0 w-100 h-100 outline-none rounded")}),h),"password"===u.type&&a.createElement(p.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(y.revealPassword),onClick:function(){d("password"===f?"text":"password")}}))}function C(e){var t=e.label,n=e.className,r=e.showCharacterCounter,s=e.showRequiredStar,c=e.infoTooltip,u=e.infoTooltipPlacement,g=e.infoText,C=e.formSize,E=e.showOptionalLabel,N=e.formGroupClassname,S=v(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname"]),x=(0,l.u6)(),k=x.errors,P=x.touched,j=function(){};if("checkbox"===S.type){var L=i.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(L.onChange=j),a.createElement(m,Object.assign({},L))}var T=Object.assign(Object.assign({},S),{className:d.w.getCustomFormControlClassName(k,P,S.name,C,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(T.onChange=j),a.createElement(o.Z.Group,{className:"form-group ".concat(N)},!!t&&a.createElement(o.Z.Label,{htmlFor:S.id,className:"d-flex align-items-center"},t,s&&a.createElement("span",{className:"text-danger"},"*"),c&&a.createElement(p.x,{className:"svg-container text-secondary ".concat(y.infoTooltip),svgName:b.vn.Info,title:c,tooltipPlacement:u,tooltipSpanHack:!0}),E&&a.createElement("span",{className:"text-secondary"}," ",a.createElement(f.x,{namespace:w,phrase:"optional"})),!!r&&!!S.maxLength&&a.createElement("div",{className:"ms-auto"},a.createElement(h,{fieldName:S.name,limit:S.maxLength}))),e.description&&a.createElement("p",null,e.description),a.createElement(O,Object.assign({},T,{"aria-errormessage":"".concat(S.name,"Error")})),!!g&&a.createElement(o.Z.Text,{className:"text-secondary"},g),a.createElement(l.Bc,{name:S.name},function(e){return a.createElement(o.Z.Control.Feedback,{id:"".concat(S.name,"Error"),type:"invalid",role:"status"},e)}))}O.defaultProps={autoComplete:"off"},C.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>m,n:()=>u});var a=n(32735),r=n(92802),o=n(91967),l=n(1048);function s(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 a,r,o,l,s=[],i=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(a=o.call(n)).done)&&(s.push(a.value),s.length!==t);i=!0);}catch(e){c=!0,r=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(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 i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var c=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function u(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,i=e.initialValues,u=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),p=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=l.t.deepClone(e);return function e(n){Object.keys(t).forEach(function(a){t.hasOwnProperty(a)&&(l.t.isObject(n[a])?e(n[a]):null===t[a]&&delete t[a])})}(t),t}(i)):i,f={allowInitialSubmit:e.allowInitialSubmit};return a.createElement(r.J9,Object.assign({enableReinitialize:!0},m,{initialValues:p,onSubmit:function(t,a){var r=a.setSubmitting,o=a.resetForm,l=a.setFieldError,i=n&&e.validationSchema?e.validationSchema.cast(t):t;u(i,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.reset&&o(),e.errors)for(var t=0,n=Object.entries(e.errors);t<n.length;t++){var a=s(n[t],2),i=a[0],c=a[1];l(i,c)}r(!1)})},initialStatus:f}),o.q.isFunction(e.children)?function(t){return e.children(t)}:a.Children.count(e.children)?e.children:null)}function m(){return(0,r.u6)()}u.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>r});var a=n(92802),r={getCustomFormControlClassName:function(e,t,n,r,o,l){var s="";return s=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(l,r),(0,a.u9)(t,n)&&(0,a.u9)(e,n)&&(s+=" is-invalid"),o&&(s+=" ".concat(o)),s}}},26234:(e,t,n)=>{n.d(t,{F:()=>r});var a=n(99940),r={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,r){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"update:security:settings",invalidationKeys:"customers:security:settings",type:a.k.PUT,normalize:!1,data:t,success:n,error:r}}}}}]);
2
- //# sourceMappingURL=1670-823b692de0-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1670],{68670:(e,t,n)=>{n.d(t,{p:()=>m});var a=n(32735),r=n(92802),o=n(23481),l=n(23201),s=n(29057),i=n(83345),c="shared.changePasswordForm",u=o.T.encloseNamespace(c);function m(e){var t=(0,r.u6)();return a.createElement(r.l0,null,!e.hideCurrentPassword&&a.createElement(s.W,{className:e.inputWidthClass,name:"currentPassword",label:u("currentPassword"),placeholder:u("currentPasswordPlaceholder"),type:"password",autoComplete:"current-password",showRequiredStar:!0}),a.createElement(s.W,{className:e.inputWidthClass,name:"newPassword",label:u("newPassword"),placeholder:u("newPasswordPlaceholder"),type:"password",autoComplete:"new-password",showRequiredStar:!0}),a.createElement(s.W,{className:e.inputWidthClass,name:"confirmPassword",label:u("confirmPassword"),placeholder:u("confirmPasswordPlaceholder"),type:"password",autoComplete:"off",showRequiredStar:!0}),e.showChangeOnNextLogin&&a.createElement(s.W,{id:"changeOnNextLogin",name:"changeOnNextLogin",label:u("changeOnNextLogin"),type:"checkbox",checked:t.values.changeOnNextLogin,checkboxLabelFontWeight:"normal"}),!e.hideButtons&&a.createElement("div",{className:e.buttonContainerClass},!e.hideCancelButton&&!!e.onClickCancel&&a.createElement("button",{type:"button",className:"btn btn-link me-2 ".concat("lg"===e.buttonSize?"btn-lg":""),onClick:e.onClickCancel},a.createElement(i.x,{namespace:c,phrase:"cancel"})),a.createElement(l.A,{isNew:!1,submitText:e.submitText||u("save"),variant:e.submitVariant,size:e.buttonSize})))}m.defaultProps={submitVariant:"outline-dark",buttonContainerClass:"btn-container d-flex justify-content-end align-items-center",inputWidthClass:"w-100"}},23201:(e,t,n)=>{n.d(t,{A:()=>c});var a=n(32735),r=n(92802),o=n(2102),l=n(83345),s=n(33936),i="shared.formButtons";function c(e){var t=(0,r.u6)(),n=(0,s.l)(t);return a.createElement(o.m,{variant:e.variant||"primary",type:"submit",disabled:!n,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?a.createElement(a.Fragment,null,e.submitText):a.createElement(l.x,{namespace:i,phrase:e.isNew?"create":"save"}))}},29057:(e,t,n)=>{n.d(t,{n:()=>O,W:()=>C});var a=n(32735),r=n(80247),o=n(80130),l=n(92802),s=n(91967),i=n(1048),c=n(15611),u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,r=e.checkboxLabelFontWeight,l=e.className,s=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return a.createElement(o.Z.Group,{className:"form-group"},a.createElement("div",{className:"form-check ".concat(l||"")},a.createElement(O,Object.assign({className:"form-check-input"},s)),a.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===r?"fw-normal":""," \n ").concat(n),htmlFor:s.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&a.createElement(a.Fragment,null,a.createElement("span",null," "),a.createElement(c.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var p=n(83914),f=n(83345),d=n(73814),b=n(35223);function h(e){var t=(0,l.u6)().values,n=i.t.get(t,e.fieldName);return"string"!=typeof n?a.createElement(a.Fragment,null):a.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const y={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var v=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n},w="shared.formField";function O(e){var t,n,o=e.children,c=e.showLoadingSpinner,u=v(e,["children","showLoadingSpinner"]),m=(t=a.useState(e.type),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,o,l,s=[],i=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(a=o.call(n)).done)&&(s.push(a.value),s.length!==t);i=!0);}catch(e){c=!0,r=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return g(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)?g(e,t):void 0}}(t,n)||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.")}()),f=m[0],d=m[1],h=s.q.isFunction(o)?function(e){return o(e)}:a.Children.count(o)?o:null;if("password"!==u.type)return c?a.createElement("div",{className:"position-relative"},a.createElement(l.gN,Object.assign({},i.t.omit(u,["formSize"])),h),a.createElement("div",{className:y.spinner},a.createElement(r.Z,{animation:"border",size:"sm"}))):a.createElement(l.gN,Object.assign({},i.t.omit(u,["formSize"])),h);var w="position-relative ".concat(y.passwordContainer);return u.className&&(w+=" ".concat(u.className)),u.disabled&&(w+=" ".concat(y.passwordContainerDisabled)),a.createElement("div",{className:w},a.createElement(l.gN,Object.assign({},i.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(y.passwordInput," border-0 w-100 h-100 outline-none rounded")}),h),"password"===u.type&&a.createElement(p.x,{svgName:"password"===f?b.vn.VisibleOn:b.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(y.revealPassword),onClick:function(){d("password"===f?"text":"password")}}))}function C(e){var t=e.label,n=e.className,r=e.showCharacterCounter,s=e.showRequiredStar,c=e.infoTooltip,u=e.infoTooltipPlacement,g=e.infoText,C=e.formSize,E=e.showOptionalLabel,N=e.formGroupClassname,S=v(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname"]),x=(0,l.u6)(),k=x.errors,P=x.touched,j=function(){};if("checkbox"===S.type){var L=i.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(L.onChange=j),a.createElement(m,Object.assign({},L))}var T=Object.assign(Object.assign({},S),{className:d.w.getCustomFormControlClassName(k,P,S.name,C,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(T.onChange=j),a.createElement(o.Z.Group,{className:"form-group ".concat(N)},!!t&&a.createElement(o.Z.Label,{htmlFor:S.id,className:"d-flex align-items-center"},t,s&&a.createElement("span",{className:"text-danger"},"*"),c&&a.createElement(p.x,{className:"svg-container text-secondary ".concat(y.infoTooltip),svgName:b.vn.Info,title:c,tooltipPlacement:u,tooltipSpanHack:!0}),E&&a.createElement("span",{className:"text-secondary"}," ",a.createElement(f.x,{namespace:w,phrase:"optional"})),!!r&&!!S.maxLength&&a.createElement("div",{className:"ms-auto"},a.createElement(h,{fieldName:S.name,limit:S.maxLength}))),e.description&&a.createElement("p",null,e.description),a.createElement(O,Object.assign({},T,{"aria-errormessage":"".concat(S.name,"Error")})),!!g&&a.createElement(o.Z.Text,{className:"text-secondary"},g),a.createElement(l.Bc,{name:S.name},function(e){return a.createElement(o.Z.Control.Feedback,{id:"".concat(S.name,"Error"),type:"invalid",role:"status"},e)}))}O.defaultProps={autoComplete:"off"},C.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>m,n:()=>u});var a=n(32735),r=n(92802),o=n(91967),l=n(1048);function s(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 a,r,o,l,s=[],i=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(a=o.call(n)).done)&&(s.push(a.value),s.length!==t);i=!0);}catch(e){c=!0,r=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(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 i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var c=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function u(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,i=e.initialValues,u=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),p=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=l.t.deepClone(e);return function e(n){Object.keys(t).forEach(function(a){t.hasOwnProperty(a)&&(l.t.isObject(n[a])?e(n[a]):null===t[a]&&delete t[a])})}(t),t}(i)):i,f={allowInitialSubmit:e.allowInitialSubmit};return a.createElement(r.J9,Object.assign({enableReinitialize:!0},m,{initialValues:p,onSubmit:function(t,a){var r=a.setSubmitting,o=a.resetForm,l=a.setFieldError,i=n&&e.validationSchema?e.validationSchema.cast(t):t;u(i,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.reset&&o(),e.errors)for(var t=0,n=Object.entries(e.errors);t<n.length;t++){var a=s(n[t],2),i=a[0],c=a[1];l(i,c)}r(!1)})},initialStatus:f}),o.q.isFunction(e.children)?function(t){return e.children(t)}:a.Children.count(e.children)?e.children:null)}function m(){return(0,r.u6)()}u.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>r});var a=n(92802),r={getCustomFormControlClassName:function(e,t,n,r,o,l){var s="";return s=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(l,r),(0,a.u9)(t,n)&&(0,a.u9)(e,n)&&(s+=" is-invalid"),o&&(s+=" ".concat(o)),s}}},80658:(e,t,n)=>{n.d(t,{F:()=>r});var a=n(99940),r={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,r){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"update:security:settings",invalidationKeys:"customers:security:settings",type:a.k.PUT,normalize:!1,data:t,success:n,error:r}}}}}]);
2
+ //# sourceMappingURL=1670-d9ced49962-lite.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scripts/1670-823b692de0-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/change-password-form/ChangePasswordForm.tsx","file:///app/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/projects/lite/src/apps/settings/flight-requests/SecuritySettingsRequests.ts"],"sourcesContent":["import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField, FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.changePasswordForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ChangePasswordFormProps {\n onClickCancel?: () => void;\n \n hideButtons?: boolean;\n buttonContainerClass?: string;\n buttonSize?: FormSize;\n hideCancelButton?: boolean;\n hideCurrentPassword?: boolean;\n inputWidthClass?: string;\n showChangeOnNextLogin?: boolean;\n\n submitText?: string;\n submitVariant?: ButtonProps['variant'];\n}\n\nChangePasswordForm.defaultProps = {\n submitVariant: 'outline-dark',\n buttonContainerClass: 'btn-container d-flex justify-content-end align-items-center',\n inputWidthClass: 'w-100'\n};\n\nexport function ChangePasswordForm(props: ChangePasswordFormProps): JSX.Element {\n const formikProps = useFormikContext<ChangePasswordRequest>();\n\n return (\n <Form>\n {!props.hideCurrentPassword && (\n <FormField\n className={props.inputWidthClass}\n name='currentPassword'\n label={getPhrase('currentPassword')}\n placeholder={getPhrase('currentPasswordPlaceholder')}\n type='password'\n autoComplete='current-password'\n showRequiredStar\n />\n )}\n\n <FormField\n className={props.inputWidthClass}\n name='newPassword'\n label={getPhrase('newPassword')}\n placeholder={getPhrase('newPasswordPlaceholder')}\n type='password'\n autoComplete='new-password'\n showRequiredStar\n />\n\n <FormField\n className={props.inputWidthClass}\n name='confirmPassword'\n label={getPhrase('confirmPassword')}\n placeholder={getPhrase('confirmPasswordPlaceholder')}\n type='password'\n autoComplete='off'\n showRequiredStar\n />\n\n {props.showChangeOnNextLogin &&\n <FormField\n id='changeOnNextLogin'\n name='changeOnNextLogin'\n label={getPhrase('changeOnNextLogin')}\n type='checkbox'\n checked={formikProps.values.changeOnNextLogin}\n checkboxLabelFontWeight={'normal'}\n />\n }\n \n {!props.hideButtons && (\n <div className={props.buttonContainerClass}>\n {(!props.hideCancelButton && !!props.onClickCancel) && (\n <button\n type='button'\n className={`btn btn-link me-2 ${props.buttonSize === 'lg' ? 'btn-lg' : ''}`}\n onClick={props.onClickCancel}\n >\n <Text namespace={namespace} phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={props.submitText || getPhrase('save')}\n variant={props.submitVariant}\n size={props.buttonSize}\n />\n </div>\n )}\n </Form>\n );\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nconst namespace = 'shared.formButtons';\n\ninterface FormButtonsProps {\n isNew?: boolean;\n submitText?: string;\n variant?: ButtonProps['variant'];\n size?: FormSize;\n className?: string;\n}\n\nexport function FormButtons<Values extends HashObject>(props: FormButtonsProps): JSX.Element {\n const formikProps = useFormikContext<Values>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <SpinnerButton\n variant={props.variant || 'primary'}\n type='submit'\n disabled={!canSubmit}\n size={props.size}\n className={props.className ? props.className : ''}\n showSpinner={formikProps.isSubmitting}\n >\n {props.submitText\n ? <>{props.submitText}</>\n : <Text namespace={namespace} phrase={props.isNew ? 'create' : 'save'} />}\n </SpinnerButton>\n );\n}\n","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n description?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n formGroupClassname?: string;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n formGroupClassname,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className={`form-group ${formGroupClassname}`}>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n {props.description &&\n <p>\n {props.description}\n </p>\n }\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","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 { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\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};"],"names":["namespace","getPhrase","ChangePasswordForm","props","formikProps","hideCurrentPassword","className","inputWidthClass","name","label","placeholder","type","autoComplete","showRequiredStar","showChangeOnNextLogin","id","checked","values","changeOnNextLogin","checkboxLabelFontWeight","hideButtons","buttonContainerClass","hideCancelButton","onClickCancel","buttonSize","onClick","phrase","isNew","submitText","variant","submitVariant","size","defaultProps","FormButtons","canSubmit","disabled","showSpinner","isSubmitting","FormCheckbox","checkboxLabelClassName","fieldProps","Form","FieldWrapper","htmlFor","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","field","ObjectHelper","fieldName","length","limit","children","showLoadingSpinner","setType","resolvedChildren","FunctionHelper","f","Spinner","animation","containerClassName","SvgContainer","svgName","FormField","showCharacterCounter","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","as","title","tooltipPlacement","tooltipSpanHack","Text","maxLength","description","errorMessage","role","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","SecuritySettingsRequests","getCustomerSecuritySettings","customerId","success","error","url","normalize","setCustomerSecuritySettings","data","invalidationKeys"],"sourceRoot":""}
1
+ {"version":3,"file":"scripts/1670-d9ced49962-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/change-password-form/ChangePasswordForm.tsx","file:///app/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/projects/lite/src/apps/settings/flight-requests/SecuritySettingsRequests.ts"],"sourcesContent":["import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ChangePasswordRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField, FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.changePasswordForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ChangePasswordFormProps {\n onClickCancel?: () => void;\n \n hideButtons?: boolean;\n buttonContainerClass?: string;\n buttonSize?: FormSize;\n hideCancelButton?: boolean;\n hideCurrentPassword?: boolean;\n inputWidthClass?: string;\n showChangeOnNextLogin?: boolean;\n\n submitText?: string;\n submitVariant?: ButtonProps['variant'];\n}\n\nChangePasswordForm.defaultProps = {\n submitVariant: 'outline-dark',\n buttonContainerClass: 'btn-container d-flex justify-content-end align-items-center',\n inputWidthClass: 'w-100'\n};\n\nexport function ChangePasswordForm(props: ChangePasswordFormProps): JSX.Element {\n const formikProps = useFormikContext<ChangePasswordRequest>();\n\n return (\n <Form>\n {!props.hideCurrentPassword && (\n <FormField\n className={props.inputWidthClass}\n name='currentPassword'\n label={getPhrase('currentPassword')}\n placeholder={getPhrase('currentPasswordPlaceholder')}\n type='password'\n autoComplete='current-password'\n showRequiredStar\n />\n )}\n\n <FormField\n className={props.inputWidthClass}\n name='newPassword'\n label={getPhrase('newPassword')}\n placeholder={getPhrase('newPasswordPlaceholder')}\n type='password'\n autoComplete='new-password'\n showRequiredStar\n />\n\n <FormField\n className={props.inputWidthClass}\n name='confirmPassword'\n label={getPhrase('confirmPassword')}\n placeholder={getPhrase('confirmPasswordPlaceholder')}\n type='password'\n autoComplete='off'\n showRequiredStar\n />\n\n {props.showChangeOnNextLogin &&\n <FormField\n id='changeOnNextLogin'\n name='changeOnNextLogin'\n label={getPhrase('changeOnNextLogin')}\n type='checkbox'\n checked={formikProps.values.changeOnNextLogin}\n checkboxLabelFontWeight={'normal'}\n />\n }\n \n {!props.hideButtons && (\n <div className={props.buttonContainerClass}>\n {(!props.hideCancelButton && !!props.onClickCancel) && (\n <button\n type='button'\n className={`btn btn-link me-2 ${props.buttonSize === 'lg' ? 'btn-lg' : ''}`}\n onClick={props.onClickCancel}\n >\n <Text namespace={namespace} phrase='cancel' />\n </button>\n )}\n <FormButtons\n isNew={false}\n submitText={props.submitText || getPhrase('save')}\n variant={props.submitVariant}\n size={props.buttonSize}\n />\n </div>\n )}\n </Form>\n );\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nconst namespace = 'shared.formButtons';\n\ninterface FormButtonsProps {\n isNew?: boolean;\n submitText?: string;\n variant?: ButtonProps['variant'];\n size?: FormSize;\n className?: string;\n}\n\nexport function FormButtons<Values extends HashObject>(props: FormButtonsProps): JSX.Element {\n const formikProps = useFormikContext<Values>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <SpinnerButton\n variant={props.variant || 'primary'}\n type='submit'\n disabled={!canSubmit}\n size={props.size}\n className={props.className ? props.className : ''}\n showSpinner={formikProps.isSubmitting}\n >\n {props.submitText\n ? <>{props.submitText}</>\n : <Text namespace={namespace} phrase={props.isNew ? 'create' : 'save'} />}\n </SpinnerButton>\n );\n}\n","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n description?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n formGroupClassname?: string;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n formGroupClassname,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className={`form-group ${formGroupClassname}`}>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n {props.description &&\n <p>\n {props.description}\n </p>\n }\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","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 { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\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};"],"names":["namespace","getPhrase","ChangePasswordForm","props","formikProps","hideCurrentPassword","className","inputWidthClass","name","label","placeholder","type","autoComplete","showRequiredStar","showChangeOnNextLogin","id","checked","values","changeOnNextLogin","checkboxLabelFontWeight","hideButtons","buttonContainerClass","hideCancelButton","onClickCancel","buttonSize","onClick","phrase","isNew","submitText","variant","submitVariant","size","defaultProps","FormButtons","canSubmit","disabled","showSpinner","isSubmitting","FormCheckbox","checkboxLabelClassName","fieldProps","Form","FieldWrapper","htmlFor","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","field","ObjectHelper","fieldName","length","limit","children","showLoadingSpinner","setType","resolvedChildren","FunctionHelper","f","Spinner","animation","containerClassName","SvgContainer","svgName","FormField","showCharacterCounter","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","as","title","tooltipPlacement","tooltipSpanHack","Text","maxLength","description","errorMessage","role","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","SecuritySettingsRequests","getCustomerSecuritySettings","customerId","success","error","url","normalize","setCustomerSecuritySettings","data","invalidationKeys"],"sourceRoot":""}