summit-registration-lite 5.0.40 → 5.0.41

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.
@@ -181,7 +181,7 @@ const PasswordlessLoginComponent = ({
181
181
  if (code.length === codeLength) {
182
182
  setOtpError(false);
183
183
  setIsLoading(true);
184
- passwordlessLogin(otpCode, loginWithCode).then(() => setIsLoading(false));
184
+ passwordlessLogin(otpCode, loginWithCode).finally(() => setIsLoading(false));
185
185
  } else {
186
186
  setOtpError(true);
187
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"components/login-passwordless.js","mappings":"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","sources":["webpack://summit-registration-lite/webpack/universalModuleDefinition","webpack://summit-registration-lite/./src/assets/FNid_BLK_logo_rgb.svg","webpack://summit-registration-lite/./src/assets/FNid_WHT_logo_rgb.svg","webpack://summit-registration-lite/external commonjs \"prop-types\"","webpack://summit-registration-lite/external commonjs \"react\"","webpack://summit-registration-lite/webpack/bootstrap","webpack://summit-registration-lite/webpack/runtime/compat get default export","webpack://summit-registration-lite/webpack/runtime/define property getters","webpack://summit-registration-lite/webpack/runtime/hasOwnProperty shorthand","webpack://summit-registration-lite/webpack/runtime/make namespace object","webpack://summit-registration-lite/external commonjs \"react-otp-input\"","webpack://summit-registration-lite/./src/components/login-passwordless/index.module.scss","webpack://summit-registration-lite/./src/components/login-passwordless/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"summit-registration-lite\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"summit-registration-lite\"] = factory();\n\telse\n\t\troot[\"summit-registration-lite\"] = factory();\n})(this, function() {\nreturn ","module.exports = \"data:image/svg+xml,%3c!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e %3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 812.24 471.64' style='enable-background:new 0 0 812.24 471.64;' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:%23FFFFFF;%7d .st1%7bfill:%230C64C8;%7d %3c/style%3e %3cg%3e %3cpath class='st0' d='M170.89,146.78l-64.77,178.08h535.23l64.77-178.08L170.89,146.78L170.89,146.78z M384.48,309.44H341.7 l-25.6-80.85l-29.41,80.85h-42.6l41.94-115.3h-65.52l-9.29,25.54h56.62l-10.8,29.7h-56.62l-21.84,60.06h-45.63l53.39-146.78h153.49 l25.72,81.24l29.56-81.24h42.75L384.48,309.44z'/%3e %3cg%3e %3cpath class='st1' d='M588.49,162.71v50.86c-4-4.27-8.59-7.47-13.76-9.61s-10.92-3.21-17.26-3.21c-13.01,0-23.73,4.67-32.17,14.02 c-8.44,9.34-12.66,22.83-12.66,40.45c0,15.75,3.82,29.13,11.46,40.15c7.64,11.01,18.69,16.52,33.17,16.52 c7.2,0,13.74-1.54,19.61-4.6c4.4-2.34,9.27-6.84,14.61-13.52v15.72h38.12V162.71H588.49z M583.59,275.94 c-3.47,4.07-7.8,6.11-13.01,6.11c-4.87,0-8.96-2.02-12.26-6.06s-4.95-10.4-4.95-19.07c0-9.28,1.6-15.88,4.8-19.82 s7.17-5.91,11.91-5.91c5.4,0,9.87,2.05,13.41,6.16c3.53,4.1,5.3,10.33,5.3,18.67C588.79,265.23,587.05,271.87,583.59,275.94z'/%3e %3cpath class='st1' d='M473.92,207.72c-14.37,0-26.03,7.27-26.03,16.25v2.96v45.48h9.09l3.47,37.09h26.95l3.47-37.09h9.09v-45.48 v-2.96C499.95,214.99,488.29,207.72,473.92,207.72z'/%3e %3cellipse transform='matrix(2.075247e-03 -1 1 2.075247e-03 290.6104 655.8611)' class='st1' cx='473.92' cy='182.32' rx='19.87' ry='19.86'/%3e %3c/g%3e %3c/g%3e %3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3c!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e %3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 812.24 471.64' style='enable-background:new 0 0 812.24 471.64;' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:%230C64C8;%7d %3c/style%3e %3cg%3e %3cpath d='M170.89,146.78l-64.77,178.08h535.23l64.77-178.08L170.89,146.78L170.89,146.78z M384.48,309.44H341.7l-25.6-80.85 l-29.41,80.85h-42.6l41.94-115.3h-65.52l-9.29,25.54h56.62l-10.8,29.7h-56.62l-21.84,60.06h-45.63l53.39-146.78h153.49l25.72,81.24 l29.56-81.24h42.75L384.48,309.44z'/%3e %3cg%3e %3cpath class='st0' d='M588.49,162.71v50.86c-4-4.27-8.59-7.47-13.76-9.61s-10.92-3.21-17.26-3.21c-13.01,0-23.73,4.67-32.17,14.02 c-8.44,9.34-12.66,22.83-12.66,40.45c0,15.75,3.82,29.13,11.46,40.15c7.64,11.01,18.69,16.52,33.17,16.52 c7.2,0,13.74-1.54,19.61-4.6c4.4-2.34,9.27-6.84,14.61-13.52v15.72h38.12V162.71H588.49z M583.59,275.94 c-3.47,4.07-7.8,6.11-13.01,6.11c-4.87,0-8.96-2.02-12.26-6.06s-4.95-10.4-4.95-19.07c0-9.28,1.6-15.88,4.8-19.82 s7.17-5.91,11.91-5.91c5.4,0,9.87,2.05,13.41,6.16c3.53,4.1,5.3,10.33,5.3,18.67C588.79,265.23,587.05,271.87,583.59,275.94z'/%3e %3cpath class='st0' d='M473.92,207.72c-14.37,0-26.03,7.27-26.03,16.25v2.96v45.48h9.09l3.47,37.09h26.95l3.47-37.09h9.09v-45.48 v-2.96C499.95,214.99,488.29,207.72,473.92,207.72z'/%3e %3cellipse transform='matrix(2.075247e-03 -1 1 2.075247e-03 290.6104 655.8611)' class='st0' cx='473.92' cy='182.32' rx='19.87' ry='19.86'/%3e %3c/g%3e %3c/g%3e %3c/svg%3e\"","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-otp-input\");","// extracted by mini-css-extract-plugin\nexport default {\"passwordlessWrapper\":\"passwordlessWrapper___BRQ_s\",\"codeSent\":\"codeSent___NzYb_\",\"innerWrapper\":\"innerWrapper___nRLDi\",\"logo\":\"logo___qNVrv\",\"logoDark\":\"logoDark___VVYee\",\"digits\":\"digits___Vu5iy\",\"codeInput\":\"codeInput___LnTZe\",\"error\":\"error___wZflZ\",\"verify\":\"verify___IBgMl\",\"button\":\"button___nBhtQ\",\"link\":\"link___f6fDT\",\"resend\":\"resend___Nma1U\",\"logoLight\":\"logoLight___vSbn_\"};","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport OtpInput from 'react-otp-input';\n\nimport styles from \"./index.module.scss\";\n\nimport FNidLogo from '../../assets/FNid_WHT_logo_rgb.svg';\nimport FNidLogoDark from '../../assets/FNid_BLK_logo_rgb.svg';\n\nconst PasswordlessLoginComponent = ({\n email, codeLength, passwordlessLogin, loginWithCode, codeError, goToLogin,\n getLoginCode, getPasswordlessCode, idpLogoLight, idpLogoDark, idpLogoAlt }) => {\n\n const [otpCode, setOtpCode] = useState('');\n const [otpError, setOtpError] = useState(false)\n const [codeSent, setCodeSent] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const tryPasswordlessLogin = (code) => {\n if (code.length === codeLength) {\n setOtpError(false);\n setIsLoading(true);\n passwordlessLogin(otpCode, loginWithCode).then(() => setIsLoading(false));\n } else {\n setOtpError(true)\n }\n }\n\n const resendCode = () => {\n getLoginCode(email, getPasswordlessCode)\n .then(() => {\n setCodeSent(true);\n setTimeout(() => setCodeSent(false), 3000);\n });\n }\n\n const handleSubmit = (e) => {\n e.preventDefault();\n tryPasswordlessLogin(otpCode);\n };\n\n return (\n <div className={`${styles.passwordlessWrapper} step-wrapper`}>\n <>\n {codeSent &&\n <div className={styles.codeSent}>Code has been resent.</div>\n }\n <div className={`${styles.innerWrapper}`}>\n {/* Only one logo is displayed based on data-theme through CSS */}\n <img src={idpLogoDark || FNidLogoDark} alt={idpLogoAlt || \"FNid\"} className={`${styles.logo} ${styles.logoDark}`} />\n <img src={idpLogoLight || FNidLogo} alt={idpLogoAlt || \"FNid\"} className={`${styles.logo} ${styles.logoLight}`} />\n <span>\n We sent your single-use code to <br />\n <span data-testid=\"email\">{email}</span>\n <br />\n <span className={styles.digits} data-testid=\"code-digits\">\n Add the {codeLength} digit code below\n </span>\n </span>\n <div className={styles.codeInput}>\n <form onSubmit={handleSubmit}>\n <OtpInput\n value={otpCode}\n onChange={(code) => setOtpCode(code)}\n numInputs={codeLength}\n shouldAutoFocus={true}\n hasErrored={otpError || codeError}\n errorStyle={{ border: '1px solid #e5424d' }}\n data-testid=\"otp-input\"\n />\n {/*\n this is to simulate the on key press submit (enter)\n @see https://github.com/devfolioco/react-otp-input/issues/98\n */}\n <button style={{display:'none'}} type='submit' />\n </form>\n </div>\n {codeError && (\n <span className={styles.error} data-testid=\"error\">\n The code you entered it's incorrect. <br /> Please try again.\n </span>\n )}\n <div className={styles.verify}>\n <button className={`${styles.button} button`} disabled={isLoading} onClick={() => tryPasswordlessLogin(otpCode)} data-testid=\"verify\">Verify Email</button>\n <b>or go back and <span className={styles.link} onClick={() => goToLogin()} data-testid=\"go-back\">try another way</span></b>\n </div>\n </div>\n <div className={styles.resend}>\n Didn’t receive it? Check your spam/junk folder, or <span className={styles.link} onClick={() => resendCode()} data-testid=\"resend\">resend code</span> now.\n </div>\n </>\n </div>\n );\n}\n\nPasswordlessLoginComponent.propTypes = {\n email: PropTypes.string.isRequired,\n codeLength: PropTypes.number.isRequired,\n passwordlessLogin: PropTypes.func.isRequired,\n loginWithCode: PropTypes.func,\n codeError: PropTypes.bool,\n goToLogin: PropTypes.func.isRequired,\n getLoginCode: PropTypes.func.isRequired,\n getPasswordlessCode: PropTypes.func,\n idpLogoLight: PropTypes.string,\n idpLogoDark: PropTypes.string,\n idpLogoAlt: PropTypes.string\n}\n\nexport default PasswordlessLoginComponent;\n"],"names":["React","useState","PropTypes","OtpInput","styles","FNidLogo","FNidLogoDark","PasswordlessLoginComponent","email","codeLength","passwordlessLogin","loginWithCode","codeError","goToLogin","getLoginCode","getPasswordlessCode","idpLogoLight","idpLogoDark","idpLogoAlt","otpCode","setOtpCode","otpError","setOtpError","codeSent","setCodeSent","isLoading","setIsLoading","tryPasswordlessLogin","code","length","then","resendCode","setTimeout","handleSubmit","e","preventDefault","passwordlessWrapper","innerWrapper","logo","logoDark","logoLight","digits","codeInput","border","display","error","verify","button","link","resend","propTypes","string","isRequired","number","func","bool"],"sourceRoot":""}
1
+ {"version":3,"file":"components/login-passwordless.js","mappings":"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","sources":["webpack://summit-registration-lite/webpack/universalModuleDefinition","webpack://summit-registration-lite/./src/assets/FNid_BLK_logo_rgb.svg","webpack://summit-registration-lite/./src/assets/FNid_WHT_logo_rgb.svg","webpack://summit-registration-lite/external commonjs \"prop-types\"","webpack://summit-registration-lite/external commonjs \"react\"","webpack://summit-registration-lite/webpack/bootstrap","webpack://summit-registration-lite/webpack/runtime/compat get default export","webpack://summit-registration-lite/webpack/runtime/define property getters","webpack://summit-registration-lite/webpack/runtime/hasOwnProperty shorthand","webpack://summit-registration-lite/webpack/runtime/make namespace object","webpack://summit-registration-lite/external commonjs \"react-otp-input\"","webpack://summit-registration-lite/./src/components/login-passwordless/index.module.scss","webpack://summit-registration-lite/./src/components/login-passwordless/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"summit-registration-lite\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"summit-registration-lite\"] = factory();\n\telse\n\t\troot[\"summit-registration-lite\"] = factory();\n})(this, function() {\nreturn ","module.exports = \"data:image/svg+xml,%3c!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e %3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 812.24 471.64' style='enable-background:new 0 0 812.24 471.64;' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:%23FFFFFF;%7d .st1%7bfill:%230C64C8;%7d %3c/style%3e %3cg%3e %3cpath class='st0' d='M170.89,146.78l-64.77,178.08h535.23l64.77-178.08L170.89,146.78L170.89,146.78z M384.48,309.44H341.7 l-25.6-80.85l-29.41,80.85h-42.6l41.94-115.3h-65.52l-9.29,25.54h56.62l-10.8,29.7h-56.62l-21.84,60.06h-45.63l53.39-146.78h153.49 l25.72,81.24l29.56-81.24h42.75L384.48,309.44z'/%3e %3cg%3e %3cpath class='st1' d='M588.49,162.71v50.86c-4-4.27-8.59-7.47-13.76-9.61s-10.92-3.21-17.26-3.21c-13.01,0-23.73,4.67-32.17,14.02 c-8.44,9.34-12.66,22.83-12.66,40.45c0,15.75,3.82,29.13,11.46,40.15c7.64,11.01,18.69,16.52,33.17,16.52 c7.2,0,13.74-1.54,19.61-4.6c4.4-2.34,9.27-6.84,14.61-13.52v15.72h38.12V162.71H588.49z M583.59,275.94 c-3.47,4.07-7.8,6.11-13.01,6.11c-4.87,0-8.96-2.02-12.26-6.06s-4.95-10.4-4.95-19.07c0-9.28,1.6-15.88,4.8-19.82 s7.17-5.91,11.91-5.91c5.4,0,9.87,2.05,13.41,6.16c3.53,4.1,5.3,10.33,5.3,18.67C588.79,265.23,587.05,271.87,583.59,275.94z'/%3e %3cpath class='st1' d='M473.92,207.72c-14.37,0-26.03,7.27-26.03,16.25v2.96v45.48h9.09l3.47,37.09h26.95l3.47-37.09h9.09v-45.48 v-2.96C499.95,214.99,488.29,207.72,473.92,207.72z'/%3e %3cellipse transform='matrix(2.075247e-03 -1 1 2.075247e-03 290.6104 655.8611)' class='st1' cx='473.92' cy='182.32' rx='19.87' ry='19.86'/%3e %3c/g%3e %3c/g%3e %3c/svg%3e\"","module.exports = \"data:image/svg+xml,%3c!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e %3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 812.24 471.64' style='enable-background:new 0 0 812.24 471.64;' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:%230C64C8;%7d %3c/style%3e %3cg%3e %3cpath d='M170.89,146.78l-64.77,178.08h535.23l64.77-178.08L170.89,146.78L170.89,146.78z M384.48,309.44H341.7l-25.6-80.85 l-29.41,80.85h-42.6l41.94-115.3h-65.52l-9.29,25.54h56.62l-10.8,29.7h-56.62l-21.84,60.06h-45.63l53.39-146.78h153.49l25.72,81.24 l29.56-81.24h42.75L384.48,309.44z'/%3e %3cg%3e %3cpath class='st0' d='M588.49,162.71v50.86c-4-4.27-8.59-7.47-13.76-9.61s-10.92-3.21-17.26-3.21c-13.01,0-23.73,4.67-32.17,14.02 c-8.44,9.34-12.66,22.83-12.66,40.45c0,15.75,3.82,29.13,11.46,40.15c7.64,11.01,18.69,16.52,33.17,16.52 c7.2,0,13.74-1.54,19.61-4.6c4.4-2.34,9.27-6.84,14.61-13.52v15.72h38.12V162.71H588.49z M583.59,275.94 c-3.47,4.07-7.8,6.11-13.01,6.11c-4.87,0-8.96-2.02-12.26-6.06s-4.95-10.4-4.95-19.07c0-9.28,1.6-15.88,4.8-19.82 s7.17-5.91,11.91-5.91c5.4,0,9.87,2.05,13.41,6.16c3.53,4.1,5.3,10.33,5.3,18.67C588.79,265.23,587.05,271.87,583.59,275.94z'/%3e %3cpath class='st0' d='M473.92,207.72c-14.37,0-26.03,7.27-26.03,16.25v2.96v45.48h9.09l3.47,37.09h26.95l3.47-37.09h9.09v-45.48 v-2.96C499.95,214.99,488.29,207.72,473.92,207.72z'/%3e %3cellipse transform='matrix(2.075247e-03 -1 1 2.075247e-03 290.6104 655.8611)' class='st0' cx='473.92' cy='182.32' rx='19.87' ry='19.86'/%3e %3c/g%3e %3c/g%3e %3c/svg%3e\"","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-otp-input\");","// extracted by mini-css-extract-plugin\nexport default {\"passwordlessWrapper\":\"passwordlessWrapper___BRQ_s\",\"codeSent\":\"codeSent___NzYb_\",\"innerWrapper\":\"innerWrapper___nRLDi\",\"logo\":\"logo___qNVrv\",\"logoDark\":\"logoDark___VVYee\",\"digits\":\"digits___Vu5iy\",\"codeInput\":\"codeInput___LnTZe\",\"error\":\"error___wZflZ\",\"verify\":\"verify___IBgMl\",\"button\":\"button___nBhtQ\",\"link\":\"link___f6fDT\",\"resend\":\"resend___Nma1U\",\"logoLight\":\"logoLight___vSbn_\"};","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport OtpInput from 'react-otp-input';\n\nimport styles from \"./index.module.scss\";\n\nimport FNidLogo from '../../assets/FNid_WHT_logo_rgb.svg';\nimport FNidLogoDark from '../../assets/FNid_BLK_logo_rgb.svg';\n\nconst PasswordlessLoginComponent = ({\n email, codeLength, passwordlessLogin, loginWithCode, codeError, goToLogin,\n getLoginCode, getPasswordlessCode, idpLogoLight, idpLogoDark, idpLogoAlt }) => {\n\n const [otpCode, setOtpCode] = useState('');\n const [otpError, setOtpError] = useState(false)\n const [codeSent, setCodeSent] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const tryPasswordlessLogin = (code) => {\n if (code.length === codeLength) {\n setOtpError(false);\n setIsLoading(true);\n passwordlessLogin(otpCode, loginWithCode).finally(() => setIsLoading(false));\n } else {\n setOtpError(true)\n }\n }\n\n const resendCode = () => {\n getLoginCode(email, getPasswordlessCode)\n .then(() => {\n setCodeSent(true);\n setTimeout(() => setCodeSent(false), 3000);\n });\n }\n\n const handleSubmit = (e) => {\n e.preventDefault();\n tryPasswordlessLogin(otpCode);\n };\n\n return (\n <div className={`${styles.passwordlessWrapper} step-wrapper`}>\n <>\n {codeSent &&\n <div className={styles.codeSent}>Code has been resent.</div>\n }\n <div className={`${styles.innerWrapper}`}>\n {/* Only one logo is displayed based on data-theme through CSS */}\n <img src={idpLogoDark || FNidLogoDark} alt={idpLogoAlt || \"FNid\"} className={`${styles.logo} ${styles.logoDark}`} />\n <img src={idpLogoLight || FNidLogo} alt={idpLogoAlt || \"FNid\"} className={`${styles.logo} ${styles.logoLight}`} />\n <span>\n We sent your single-use code to <br />\n <span data-testid=\"email\">{email}</span>\n <br />\n <span className={styles.digits} data-testid=\"code-digits\">\n Add the {codeLength} digit code below\n </span>\n </span>\n <div className={styles.codeInput}>\n <form onSubmit={handleSubmit}>\n <OtpInput\n value={otpCode}\n onChange={(code) => setOtpCode(code)}\n numInputs={codeLength}\n shouldAutoFocus={true}\n hasErrored={otpError || codeError}\n errorStyle={{ border: '1px solid #e5424d' }}\n data-testid=\"otp-input\"\n />\n {/*\n this is to simulate the on key press submit (enter)\n @see https://github.com/devfolioco/react-otp-input/issues/98\n */}\n <button style={{display:'none'}} type='submit' />\n </form>\n </div>\n {codeError && (\n <span className={styles.error} data-testid=\"error\">\n The code you entered it's incorrect. <br /> Please try again.\n </span>\n )}\n <div className={styles.verify}>\n <button className={`${styles.button} button`} disabled={isLoading} onClick={() => tryPasswordlessLogin(otpCode)} data-testid=\"verify\">Verify Email</button>\n <b>or go back and <span className={styles.link} onClick={() => goToLogin()} data-testid=\"go-back\">try another way</span></b>\n </div>\n </div>\n <div className={styles.resend}>\n Didn’t receive it? Check your spam/junk folder, or <span className={styles.link} onClick={() => resendCode()} data-testid=\"resend\">resend code</span> now.\n </div>\n </>\n </div>\n );\n}\n\nPasswordlessLoginComponent.propTypes = {\n email: PropTypes.string.isRequired,\n codeLength: PropTypes.number.isRequired,\n passwordlessLogin: PropTypes.func.isRequired,\n loginWithCode: PropTypes.func,\n codeError: PropTypes.bool,\n goToLogin: PropTypes.func.isRequired,\n getLoginCode: PropTypes.func.isRequired,\n getPasswordlessCode: PropTypes.func,\n idpLogoLight: PropTypes.string,\n idpLogoDark: PropTypes.string,\n idpLogoAlt: PropTypes.string\n}\n\nexport default PasswordlessLoginComponent;\n"],"names":["React","useState","PropTypes","OtpInput","styles","FNidLogo","FNidLogoDark","PasswordlessLoginComponent","email","codeLength","passwordlessLogin","loginWithCode","codeError","goToLogin","getLoginCode","getPasswordlessCode","idpLogoLight","idpLogoDark","idpLogoAlt","otpCode","setOtpCode","otpError","setOtpError","codeSent","setCodeSent","isLoading","setIsLoading","tryPasswordlessLogin","code","length","finally","resendCode","then","setTimeout","handleSubmit","e","preventDefault","passwordlessWrapper","innerWrapper","logo","logoDark","logoLight","digits","codeInput","border","display","error","verify","button","link","resend","propTypes","string","isRequired","number","func","bool"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- .loginWrapper___sxUEn{display:flex;justify-content:center;font-weight:bold;text-align:center;padding:20px 0 30px}.innerWrapper___GQRkq{display:flex;flex-direction:column;justify-content:center;width:300px}.innerWrapper___GQRkq span{margin:10px 0}.button___QMZPu{padding:10px 30px;font-weight:normal;display:inline-flex;justify-content:center;margin:5px 0;border-radius:5px;cursor:pointer;background-position:12px center;background-repeat:no-repeat;background-size:16px;line-height:1.4;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.button___QMZPu:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.title___NnwWR{padding:15px 0 0 0}.loginCode___dDBup{margin-bottom:10px;font-size:15px}.loginCode___dDBup>div{margin-top:10px}.loginCode___dDBup span{display:inline-block;font-weight:normal;font-size:14px}.primaryEmailButton___gH1fC{background-color:var(--color_input_background_color);border:1px solid var(--color_input_border_color);color:var(--color_input_text_color)}.buttonDisabled___T9tkn{background-color:var(--color_secondary_contrast);color:var(--color_input_text_color_disabled)}.pointerDisabled___qt_HK{pointer-events:none}.email_login_button___seiLi{display:flex;justify-content:space-between;padding:10px 9px;width:100%}.email_login_button___seiLi span{padding:0 0 0 8px;margin:0}.h2Styled___rfIKD{color:var(--color_gray_darker) !important;font-size:18px !important;font-weight:800 !important;display:flex;flex-direction:row}.h2Styled___rfIKD::before,.h2Styled___rfIKD::after{content:"";flex:1 1;border-bottom:1px solid var(--color_gray_dark);margin:auto}.h2Styled___rfIKD::before{margin-right:10px}.h2Styled___rfIKD::after{margin-left:10px}.input___QR9sA{display:flex;height:40px;margin-top:5px}.input___QR9sA input{border:1px solid var(--color_input_border_color);color:var(--color_input_text_color);background-color:var(--color_input_background_color);border-radius:5px;padding:5px;width:100%}.input___QR9sA input::placeholder{color:var(--color_text_input_hints)}.input___QR9sA button{margin-left:5px;background-color:var(--color_input_background_color);padding:0px 15px;border:1px solid var(--color_input_border_color);color:var(--color_text_dark);box-shadow:none;text-align:center;white-space:nowrap;font-weight:bold;border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center}
1
+ .loginWrapper___sxUEn{display:flex;justify-content:center;font-weight:bold;text-align:center;padding:20px 0 30px}.innerWrapper___GQRkq{display:flex;flex-direction:column;justify-content:center;width:300px}.innerWrapper___GQRkq span{margin:10px 0}.button___QMZPu{padding:10px 30px;font-weight:normal;display:inline-flex;justify-content:center;margin:5px 0;border-radius:5px;cursor:pointer;background-position:12px center;background-repeat:no-repeat;background-size:16px;line-height:1.4;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.button___QMZPu:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.title___NnwWR{padding:15px 0 0 0}.loginCode___dDBup{margin-bottom:10px;font-size:15px}.loginCode___dDBup>div{margin-top:10px}.loginCode___dDBup span{display:inline-block;font-weight:normal;font-size:14px}.loginCode___dDBup .error___aCF7E{color:#e5424d;font-size:14px;font-weight:bold}.primaryEmailButton___gH1fC{background-color:var(--color_input_background_color);border:1px solid var(--color_input_border_color);color:var(--color_input_text_color)}.buttonDisabled___T9tkn{background-color:var(--color_secondary_contrast);color:var(--color_input_text_color_disabled)}.pointerDisabled___qt_HK{pointer-events:none}.email_login_button___seiLi{display:flex;justify-content:space-between;padding:10px 9px;width:100%}.email_login_button___seiLi span{padding:0 0 0 8px;margin:0}.h2Styled___rfIKD{color:var(--color_gray_darker) !important;font-size:18px !important;font-weight:800 !important;display:flex;flex-direction:row}.h2Styled___rfIKD::before,.h2Styled___rfIKD::after{content:"";flex:1 1;border-bottom:1px solid var(--color_gray_dark);margin:auto}.h2Styled___rfIKD::before{margin-right:10px}.h2Styled___rfIKD::after{margin-left:10px}.input___QR9sA{display:flex;height:40px;margin-top:5px}.input___QR9sA input{border:1px solid var(--color_input_border_color);color:var(--color_input_text_color);background-color:var(--color_input_background_color);border-radius:5px;padding:5px;width:100%}.input___QR9sA input::placeholder{color:var(--color_text_input_hints)}.input___QR9sA button{margin-left:5px;background-color:var(--color_input_background_color);padding:0px 15px;border:1px solid var(--color_input_border_color);color:var(--color_text_dark);box-shadow:none;text-align:center;white-space:nowrap;font-weight:bold;border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center}
2
2
 
@@ -274,7 +274,7 @@ var EmailRounded_default = /*#__PURE__*/__webpack_require__.n(EmailRounded_names
274
274
  var utils = __webpack_require__(868);
275
275
  ;// CONCATENATED MODULE: ./src/components/login/index.module.scss
276
276
  // extracted by mini-css-extract-plugin
277
- /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","title":"title___NnwWR","loginCode":"loginCode___dDBup","primaryEmailButton":"primaryEmailButton___gH1fC","buttonDisabled":"buttonDisabled___T9tkn","pointerDisabled":"pointerDisabled___qt_HK","email_login_button":"email_login_button___seiLi","h2Styled":"h2Styled___rfIKD","input":"input___QR9sA"});
277
+ /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","title":"title___NnwWR","loginCode":"loginCode___dDBup","error":"error___aCF7E","primaryEmailButton":"primaryEmailButton___gH1fC","buttonDisabled":"buttonDisabled___T9tkn","pointerDisabled":"pointerDisabled___qt_HK","email_login_button":"email_login_button___seiLi","h2Styled":"h2Styled___rfIKD","input":"input___QR9sA"});
278
278
  ;// CONCATENATED MODULE: ./src/components/login/index.js
279
279
  /**
280
280
  * Copyright 2020 OpenStack Foundation
@@ -307,7 +307,8 @@ const LoginComponent = ({
307
307
  title
308
308
  }) => {
309
309
  const [email, setEmail] = (0,external_react_.useState)(initialEmailValue);
310
- const [emailError, setEmailError] = (0,external_react_.useState)();
310
+ const [emailError, setEmailError] = (0,external_react_.useState)(false);
311
+ const [loginError, setLoginError] = (0,external_react_.useState)(false);
311
312
 
312
313
  const isValidEmail = email => {
313
314
  const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
@@ -317,15 +318,34 @@ const LoginComponent = ({
317
318
  const loginCode = () => {
318
319
  let isValid = isValidEmail(email);
319
320
  setEmailError(!isValid);
321
+ setLoginError(false);
320
322
 
321
323
  if (isValid) {
322
- getLoginCode(email, getPasswordlessCode);
324
+ getLoginCode(email, getPasswordlessCode).catch(e => {
325
+ setLoginError(e.message);
326
+ });
323
327
  }
324
328
  };
325
329
 
326
330
  const emailButtonStyles = {
327
331
  color: (0,utils/* getContrastingTextColor */.YJ)(email === "" ? "var(--color_secondary_contrast)" : "var(--color_input_background_color)", "var(--color_text_light)", "var(--color_text_dark)")
328
332
  };
333
+
334
+ const handleEmailChange = ev => {
335
+ const {
336
+ target: {
337
+ value
338
+ }
339
+ } = ev;
340
+
341
+ if (!value.length) {
342
+ setEmailError(false);
343
+ setLoginError(false);
344
+ }
345
+
346
+ setEmail((0,utils/* removeWhiteSpaces */.Jg)(value));
347
+ };
348
+
329
349
  return /*#__PURE__*/external_react_default().createElement("div", {
330
350
  className: `${index_module.loginWrapper}`
331
351
  }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
@@ -342,7 +362,7 @@ const LoginComponent = ({
342
362
  }, /*#__PURE__*/external_react_default().createElement("input", {
343
363
  placeholder: "youremail@example.com",
344
364
  value: email,
345
- onChange: e => setEmail((0,utils/* removeWhiteSpaces */.Jg)(e.target.value)),
365
+ onChange: handleEmailChange,
346
366
  onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
347
367
  "data-testid": "email-input"
348
368
  })), /*#__PURE__*/external_react_default().createElement("div", {
@@ -356,8 +376,12 @@ const LoginComponent = ({
356
376
  fontSize: "20px"
357
377
  }
358
378
  }), /*#__PURE__*/external_react_default().createElement("span", null, "Email me a single-use code"), /*#__PURE__*/external_react_default().createElement("span", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
379
+ className: index_module.error,
359
380
  "data-testid": "email-error"
360
- }, "Please enter a valid email address"), /*#__PURE__*/external_react_default().createElement("h2", {
381
+ }, "Please enter a valid email address"), loginError && /*#__PURE__*/external_react_default().createElement("span", {
382
+ className: index_module.error,
383
+ "data-testid": "login-error"
384
+ }, loginError), /*#__PURE__*/external_react_default().createElement("h2", {
361
385
  className: index_module.h2Styled
362
386
  }, "or")), loginOptions.map((o, index) => {
363
387
  return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"components/login.js","mappings":"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","sources":["webpack://summit-registration-lite/webpack/universalModuleDefinition","webpack://summit-registration-lite/./src/helpers/getTicketMaxQuantity.js","webpack://summit-registration-lite/./src/helpers/index.js","webpack://summit-registration-lite/./src/utils/utils.js","webpack://summit-registration-lite/external commonjs \"prop-types\"","webpack://summit-registration-lite/external commonjs \"react\"","webpack://summit-registration-lite/webpack/bootstrap","webpack://summit-registration-lite/webpack/runtime/compat get default export","webpack://summit-registration-lite/webpack/runtime/define property getters","webpack://summit-registration-lite/webpack/runtime/hasOwnProperty shorthand","webpack://summit-registration-lite/webpack/runtime/make namespace object","webpack://summit-registration-lite/external commonjs \"@mui/icons-material/EmailRounded\"","webpack://summit-registration-lite/./src/components/login/index.module.scss","webpack://summit-registration-lite/./src/components/login/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"summit-registration-lite\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"summit-registration-lite\"] = factory();\n\telse\n\t\troot[\"summit-registration-lite\"] = factory();\n})(this, function() {\nreturn ","import { isPrePaidTicketType } from '../utils/utils';\n\nexport const getTicketMaxQuantity = (ticket) => {\n if(!ticket) return 0;\n if(isPrePaidTicketType(ticket)) return 1;\n return Math.min((ticket.quantity_2_sell || Number.MAX_SAFE_INTEGER) - ticket.quantity_sold, (ticket.max_quantity_per_order || Number.MAX_SAFE_INTEGER));\n}\n\n","export * from './capitalizeFirstLetter';\nexport * from './formatCurrency';\nexport * from './formatErrorMessage';\nexport * from './getTicketMaxQuantity';\n","import { formatCurrency } from '../helpers';\nimport { ORDER_PAYMENT_METHOD_OFFLINE, ORDER_STATUS_PAID, TICKET_TYPE_SUBTYPE_PREPAID } from './constants';\n\nimport React from 'react';\n\n/**\n * Copyright 2022 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nexport const getCurrentProvider = (summit) => {\n for (let profile of summit.payment_profiles) {\n if (profile.application_type === 'Registration') {\n return {\n publicKey : profile.test_mode_enabled ? profile.test_publishable_key : profile.live_publishable_key,\n provider : profile.provider\n }\n }\n }\n return {\n publicKey : null,\n provider : ''\n }\n}\n\nexport const ticketHasAccessLevel = (ticket, accessLevel) => {\n if(!ticket) return false;\n return ticket.badge?.type?.access_levels.map(al => al.name).includes(accessLevel);\n};\n\nexport const getCurrentUserLanguage = () => {\n let language = 'en';\n if(typeof navigator !== 'undefined') {\n language = (navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage;\n }\n return language;\n};\n\nexport const isEmptyString = (val) => {\n return typeof val === 'string' && val.trim().length == 0;\n}\n\nexport const getTicketTaxes = (ticket, taxes) => {\n if(isPrePaidTicketType(ticket)) return '';\n const ticketTaxes = taxes.filter(tax => tax.ticket_types.includes(ticket?.id));\n return `${ticketTaxes.length > 0 ? ` plus ${taxes.map(t => t.name).join(' & ')}` : ''}`;\n}\n\nexport const hasDiscountApplied = (ticketType) => ticketType.hasOwnProperty('cost_with_applied_discount') && ticketType.cost !== ticketType?.cost_with_applied_discount;\n\nexport const isFreeOrder = (reservation) => reservation.amount === 0 ;\n\nexport const isPrePaidOrder = (reservation) => reservation.status === ORDER_STATUS_PAID && reservation.payment_method === ORDER_PAYMENT_METHOD_OFFLINE;\n\nexport const getTicketCost = (ticket, quantity = 1) => {\n return hasDiscountApplied(ticket) ?\n <>\n <s>{formatCurrency(ticket.cost * quantity, { currency: ticket.currency })} {ticket.currency}</s>\n &nbsp;\n <>{formatCurrency(ticket.cost_with_applied_discount * quantity, { currency: ticket.currency })} {ticket.currency}</>\n </>\n :\n <>{formatCurrency(ticket.cost * quantity, { currency: ticket.currency })} {ticket.currency}</>\n}\n\nexport const isPrePaidTicketType = (ticketType) => ticketType?.sub_type === TICKET_TYPE_SUBTYPE_PREPAID;\n\nexport const buildTrackEvent = (data, ticketQuantity = null, promoCode = null) => {\n const eventData = {\n currency: data.currency || 'USD',\n items_array: [\n {\n item_id: data.id,\n item_name: data.name,\n price: data.cost,\n }\n ]\n };\n\n if (ticketQuantity) {\n eventData.value = data.cost * ticketQuantity;\n eventData.items_array[0].quantity = ticketQuantity;\n }\n\n if (promoCode) {\n eventData.coupon = promoCode;\n eventData.items_array[0].discount = data.cost - (data.cost_with_applied_discount || 0);\n }\n\n return eventData;\n}\n\nexport const removeWhiteSpaces = (value) => value.replace(/\\s+/g, '');\n\n// Helper function to resolve CSS variables and parse colors\n\nexport const parseColor = (input, element = document.documentElement) => {\n // Check if the input is a CSS variable\n if (input.startsWith(\"var(\")) { \n const cssVarName = input.slice(4, -1).trim(); \n input = getComputedStyle(element).getPropertyValue(cssVarName).trim();\n }\n\n // Convert the resolved color to RGB\n const div = document.createElement(\"div\"); \n div.style.color = input;\n document.body.appendChild(div);\n const m = getComputedStyle(div).color.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i);\n document.body.removeChild(div);\n return m ? [parseInt(m[1]), parseInt(m[2]), parseInt(m[3])] : null;\n}\n \n\nexport const getContrastingTextColor = (bgColor, lightColor, darkColor) => {\n // Parse the background color to RGB\n const rgb = parseColor(bgColor);\n\n // Fallback to a default color if parsing fails\n if (!rgb) return darkColor; // or lightColor\n \n const [r, g, b] = rgb;\n\n // Calculate luminance \n const luminance = [r, g, b].map(channel => {\n const normalized = channel / 255;\n return normalized <= 0.03928 \n ? normalized / 12.92 \n : Math.pow((normalized + 0.055) / 1.055, 2.4);\n }).reduce((acc, val, i) => acc + val * [0.2126, 0.7152, 0.0722][i], 0);\n \n\n // Return the contrasting color\n return luminance > 0.179 ? darkColor : lightColor;\n}\n","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/EmailRounded\");","// extracted by mini-css-extract-plugin\nexport default {\"loginWrapper\":\"loginWrapper___sxUEn\",\"innerWrapper\":\"innerWrapper___GQRkq\",\"button\":\"button___QMZPu\",\"title\":\"title___NnwWR\",\"loginCode\":\"loginCode___dDBup\",\"primaryEmailButton\":\"primaryEmailButton___gH1fC\",\"buttonDisabled\":\"buttonDisabled___T9tkn\",\"pointerDisabled\":\"pointerDisabled___qt_HK\",\"email_login_button\":\"email_login_button___seiLi\",\"h2Styled\":\"h2Styled___rfIKD\",\"input\":\"input___QR9sA\"};","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport EmailRoundedIcon from '@mui/icons-material/EmailRounded';\nimport { getContrastingTextColor } from '../../utils/utils'\n\nimport styles from \"./index.module.scss\";\nimport { removeWhiteSpaces } from '../../utils/utils';\n\nconst LoginComponent = ({\n summitData,\n loginOptions,\n login,\n allowsNativeAuth,\n allowsOtpAuthlogin,\n getLoginCode,\n getPasswordlessCode,\n initialEmailValue,\n title }) => {\n\n const [email, setEmail] = useState(initialEmailValue);\n const [emailError, setEmailError] = useState();\n\n const isValidEmail = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n }\n\n const loginCode = () => {\n let isValid = isValidEmail(email);\n setEmailError(!isValid);\n if (isValid) {\n getLoginCode(email, getPasswordlessCode);\n }\n }\n \n const emailButtonStyles = {\n color: getContrastingTextColor(email === \"\" ? \"var(--color_secondary_contrast)\" : \"var(--color_input_background_color)\", \"var(--color_text_light)\", \"var(--color_text_dark)\")\n };\n\n return (\n <div className={`${styles.loginWrapper}`}>\n <>\n <div className={`${styles.innerWrapper}`}>\n <div className={styles.loginCode}>\n {summitData?.secondary_logo && <img className=\"login-logo\" src={`${summitData?.secondary_logo}`} />}\n <div className={styles.title}>{title}</div>\n <div className={styles.input}>\n <input placeholder=\"youremail@example.com\" value={email} onChange={e => setEmail(removeWhiteSpaces(e.target.value))}\n onKeyPress={(ev) => ev.key === 'Enter' ? loginCode() : null} data-testid=\"email-input\" />\n </div>\n <div onClick={() => loginCode()} data-testid=\"email-button\" id=\"email-button\" style={emailButtonStyles}\n className={`${styles.button} ${styles.email_login_button} ${email === '' ? `${styles.pointerDisabled} ${styles.buttonDisabled}` : `${styles.primaryEmailButton}`}`}>\n <EmailRoundedIcon style={{ fontSize: \"20px\" }} />\n <span>Email me a single-use code</span>\n <span></span>\n </div>\n {emailError && <span data-testid=\"email-error\">Please enter a valid email address</span>}\n <h2 className={styles.h2Styled}>or</h2>\n </div>\n {loginOptions.map((o, index) => {\n return (\n o.provider_param ?\n <div className={`${styles.button}`} key={`provider-${o.provider_param}`} data-testid=\"login-button\"\n style={{\n color: o.button_text_color ? o.button_text_color : '#ffffff',\n border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,\n backgroundColor: o.button_color,\n backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',\n backgroundSize: o.provider_logo_size ? o.provider_logo_size : '',\n }}\n onClick={() => login(o.provider_param)}>\n {o.provider_label}\n </div>\n :\n allowsNativeAuth ?\n <div className={`${styles.button}`} key={`provider-fnid`} data-testid=\"login-button\"\n style={{\n color: o.button_border_color ? o.button_border_color : '#ffffff',\n border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,\n backgroundColor: o.button_color,\n backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',\n backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''\n }}\n onClick={() => login(o.provider_param)}>\n {o.provider_label}\n </div>\n :\n null\n )\n })}\n {allowsOtpAuthlogin &&\n <div className={styles.loginCode}>\n or get a login code emailed to you\n <div className={styles.input}>\n <input placeholder=\"youremail@example.com\" value={email} onChange={e => setEmail(e.target.value)} onKeyPress={(ev) => ev.key === 'Enter' ? loginCode() : null} data-testid=\"email-input\" />\n <br />\n </div>\n <div onClick={() => loginCode()} data-testid=\"email-button\" className=\"button\" style={{ background: \"#000\", color: \"#fff\"}}>\n Email me a login code\n </div>\n {emailError && <span data-testid=\"email-error\">Please enter a valid email adress</span>}\n </div>\n }\n </div>\n </>\n </div>\n );\n}\n\nLoginComponent.propTypes = {\n loginOptions: PropTypes.array.isRequired,\n login: PropTypes.func.isRequired,\n allowsNativeAuth: PropTypes.bool,\n allowsOtpAuthlogin: PropTypes.bool,\n getLoginCode: PropTypes.func.isRequired,\n getPasswordlessCode: PropTypes.func,\n initialEmailValue: PropTypes.string,\n title: PropTypes.string,\n}\n\nLoginComponent.defaultProps = {\n allowsNativeAuth: true,\n allowsOtpAuthlogin: false,\n initialEmailValue: '',\n title: 'Enter your email to begin registration:',\n}\n\n\nexport default LoginComponent\n\n"],"names":["isPrePaidTicketType","getTicketMaxQuantity","ticket","Math","min","quantity_2_sell","Number","MAX_SAFE_INTEGER","quantity_sold","max_quantity_per_order","formatCurrency","ORDER_PAYMENT_METHOD_OFFLINE","ORDER_STATUS_PAID","TICKET_TYPE_SUBTYPE_PREPAID","React","getCurrentProvider","summit","profile","payment_profiles","application_type","publicKey","test_mode_enabled","test_publishable_key","live_publishable_key","provider","ticketHasAccessLevel","accessLevel","badge","type","access_levels","map","al","name","includes","getCurrentUserLanguage","language","navigator","languages","userLanguage","isEmptyString","val","trim","length","getTicketTaxes","taxes","ticketTaxes","filter","tax","ticket_types","id","t","join","hasDiscountApplied","ticketType","hasOwnProperty","cost","cost_with_applied_discount","isFreeOrder","reservation","amount","isPrePaidOrder","status","payment_method","getTicketCost","quantity","currency","sub_type","buildTrackEvent","data","ticketQuantity","promoCode","eventData","items_array","item_id","item_name","price","value","coupon","discount","removeWhiteSpaces","replace","parseColor","input","element","document","documentElement","startsWith","cssVarName","slice","getComputedStyle","getPropertyValue","div","createElement","style","color","body","appendChild","m","match","removeChild","parseInt","getContrastingTextColor","bgColor","lightColor","darkColor","rgb","r","g","b","luminance","channel","normalized","pow","reduce","acc","i","useState","PropTypes","EmailRoundedIcon","styles","LoginComponent","summitData","loginOptions","login","allowsNativeAuth","allowsOtpAuthlogin","getLoginCode","getPasswordlessCode","initialEmailValue","title","email","setEmail","emailError","setEmailError","isValidEmail","re","test","String","toLowerCase","loginCode","isValid","emailButtonStyles","loginWrapper","innerWrapper","secondary_logo","e","target","ev","key","button","email_login_button","pointerDisabled","buttonDisabled","primaryEmailButton","fontSize","h2Styled","o","index","provider_param","button_text_color","border","button_border_color","button_color","backgroundColor","backgroundImage","provider_logo","backgroundSize","provider_logo_size","provider_label","background","propTypes","array","isRequired","func","bool","string","defaultProps"],"sourceRoot":""}
1
+ {"version":3,"file":"components/login.js","mappings":"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","sources":["webpack://summit-registration-lite/webpack/universalModuleDefinition","webpack://summit-registration-lite/./src/helpers/getTicketMaxQuantity.js","webpack://summit-registration-lite/./src/helpers/index.js","webpack://summit-registration-lite/./src/utils/utils.js","webpack://summit-registration-lite/external commonjs \"prop-types\"","webpack://summit-registration-lite/external commonjs \"react\"","webpack://summit-registration-lite/webpack/bootstrap","webpack://summit-registration-lite/webpack/runtime/compat get default export","webpack://summit-registration-lite/webpack/runtime/define property getters","webpack://summit-registration-lite/webpack/runtime/hasOwnProperty shorthand","webpack://summit-registration-lite/webpack/runtime/make namespace object","webpack://summit-registration-lite/external commonjs \"@mui/icons-material/EmailRounded\"","webpack://summit-registration-lite/./src/components/login/index.module.scss","webpack://summit-registration-lite/./src/components/login/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"summit-registration-lite\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"summit-registration-lite\"] = factory();\n\telse\n\t\troot[\"summit-registration-lite\"] = factory();\n})(this, function() {\nreturn ","import { isPrePaidTicketType } from '../utils/utils';\n\nexport const getTicketMaxQuantity = (ticket) => {\n if(!ticket) return 0;\n if(isPrePaidTicketType(ticket)) return 1;\n return Math.min((ticket.quantity_2_sell || Number.MAX_SAFE_INTEGER) - ticket.quantity_sold, (ticket.max_quantity_per_order || Number.MAX_SAFE_INTEGER));\n}\n\n","export * from './capitalizeFirstLetter';\nexport * from './formatCurrency';\nexport * from './formatErrorMessage';\nexport * from './getTicketMaxQuantity';\n","import { formatCurrency } from '../helpers';\nimport { ORDER_PAYMENT_METHOD_OFFLINE, ORDER_STATUS_PAID, TICKET_TYPE_SUBTYPE_PREPAID } from './constants';\n\nimport React from 'react';\n\n/**\n * Copyright 2022 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nexport const getCurrentProvider = (summit) => {\n for (let profile of summit.payment_profiles) {\n if (profile.application_type === 'Registration') {\n return {\n publicKey : profile.test_mode_enabled ? profile.test_publishable_key : profile.live_publishable_key,\n provider : profile.provider\n }\n }\n }\n return {\n publicKey : null,\n provider : ''\n }\n}\n\nexport const ticketHasAccessLevel = (ticket, accessLevel) => {\n if(!ticket) return false;\n return ticket.badge?.type?.access_levels.map(al => al.name).includes(accessLevel);\n};\n\nexport const getCurrentUserLanguage = () => {\n let language = 'en';\n if(typeof navigator !== 'undefined') {\n language = (navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage;\n }\n return language;\n};\n\nexport const isEmptyString = (val) => {\n return typeof val === 'string' && val.trim().length == 0;\n}\n\nexport const getTicketTaxes = (ticket, taxes) => {\n if(isPrePaidTicketType(ticket)) return '';\n const ticketTaxes = taxes.filter(tax => tax.ticket_types.includes(ticket?.id));\n return `${ticketTaxes.length > 0 ? ` plus ${taxes.map(t => t.name).join(' & ')}` : ''}`;\n}\n\nexport const hasDiscountApplied = (ticketType) => ticketType.hasOwnProperty('cost_with_applied_discount') && ticketType.cost !== ticketType?.cost_with_applied_discount;\n\nexport const isFreeOrder = (reservation) => reservation.amount === 0 ;\n\nexport const isPrePaidOrder = (reservation) => reservation.status === ORDER_STATUS_PAID && reservation.payment_method === ORDER_PAYMENT_METHOD_OFFLINE;\n\nexport const getTicketCost = (ticket, quantity = 1) => {\n return hasDiscountApplied(ticket) ?\n <>\n <s>{formatCurrency(ticket.cost * quantity, { currency: ticket.currency })} {ticket.currency}</s>\n &nbsp;\n <>{formatCurrency(ticket.cost_with_applied_discount * quantity, { currency: ticket.currency })} {ticket.currency}</>\n </>\n :\n <>{formatCurrency(ticket.cost * quantity, { currency: ticket.currency })} {ticket.currency}</>\n}\n\nexport const isPrePaidTicketType = (ticketType) => ticketType?.sub_type === TICKET_TYPE_SUBTYPE_PREPAID;\n\nexport const buildTrackEvent = (data, ticketQuantity = null, promoCode = null) => {\n const eventData = {\n currency: data.currency || 'USD',\n items_array: [\n {\n item_id: data.id,\n item_name: data.name,\n price: data.cost,\n }\n ]\n };\n\n if (ticketQuantity) {\n eventData.value = data.cost * ticketQuantity;\n eventData.items_array[0].quantity = ticketQuantity;\n }\n\n if (promoCode) {\n eventData.coupon = promoCode;\n eventData.items_array[0].discount = data.cost - (data.cost_with_applied_discount || 0);\n }\n\n return eventData;\n}\n\nexport const removeWhiteSpaces = (value) => value.replace(/\\s+/g, '');\n\n// Helper function to resolve CSS variables and parse colors\n\nexport const parseColor = (input, element = document.documentElement) => {\n // Check if the input is a CSS variable\n if (input.startsWith(\"var(\")) { \n const cssVarName = input.slice(4, -1).trim(); \n input = getComputedStyle(element).getPropertyValue(cssVarName).trim();\n }\n\n // Convert the resolved color to RGB\n const div = document.createElement(\"div\"); \n div.style.color = input;\n document.body.appendChild(div);\n const m = getComputedStyle(div).color.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/i);\n document.body.removeChild(div);\n return m ? [parseInt(m[1]), parseInt(m[2]), parseInt(m[3])] : null;\n}\n \n\nexport const getContrastingTextColor = (bgColor, lightColor, darkColor) => {\n // Parse the background color to RGB\n const rgb = parseColor(bgColor);\n\n // Fallback to a default color if parsing fails\n if (!rgb) return darkColor; // or lightColor\n \n const [r, g, b] = rgb;\n\n // Calculate luminance \n const luminance = [r, g, b].map(channel => {\n const normalized = channel / 255;\n return normalized <= 0.03928 \n ? normalized / 12.92 \n : Math.pow((normalized + 0.055) / 1.055, 2.4);\n }).reduce((acc, val, i) => acc + val * [0.2126, 0.7152, 0.0722][i], 0);\n \n\n // Return the contrasting color\n return luminance > 0.179 ? darkColor : lightColor;\n}\n","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/EmailRounded\");","// extracted by mini-css-extract-plugin\nexport default {\"loginWrapper\":\"loginWrapper___sxUEn\",\"innerWrapper\":\"innerWrapper___GQRkq\",\"button\":\"button___QMZPu\",\"title\":\"title___NnwWR\",\"loginCode\":\"loginCode___dDBup\",\"error\":\"error___aCF7E\",\"primaryEmailButton\":\"primaryEmailButton___gH1fC\",\"buttonDisabled\":\"buttonDisabled___T9tkn\",\"pointerDisabled\":\"pointerDisabled___qt_HK\",\"email_login_button\":\"email_login_button___seiLi\",\"h2Styled\":\"h2Styled___rfIKD\",\"input\":\"input___QR9sA\"};","/**\n * Copyright 2020 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n **/\n\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport EmailRoundedIcon from '@mui/icons-material/EmailRounded';\nimport { getContrastingTextColor } from '../../utils/utils'\n\nimport styles from \"./index.module.scss\";\nimport { removeWhiteSpaces } from '../../utils/utils';\n\nconst LoginComponent = ({\n summitData,\n loginOptions,\n login,\n allowsNativeAuth,\n allowsOtpAuthlogin,\n getLoginCode,\n getPasswordlessCode,\n initialEmailValue,\n title }) => {\n\n const [email, setEmail] = useState(initialEmailValue);\n const [emailError, setEmailError] = useState(false);\n const [loginError, setLoginError] = useState(false);\n\n const isValidEmail = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n }\n\n const loginCode = () => {\n let isValid = isValidEmail(email);\n setEmailError(!isValid);\n setLoginError(false);\n if (isValid) {\n getLoginCode(email, getPasswordlessCode).catch((e) => {\n setLoginError(e.message);\n });\n }\n }\n \n const emailButtonStyles = {\n color: getContrastingTextColor(email === \"\" ? \"var(--color_secondary_contrast)\" : \"var(--color_input_background_color)\", \"var(--color_text_light)\", \"var(--color_text_dark)\")\n };\n\n const handleEmailChange = (ev) => {\n const { target: { value } } = ev;\n if(!value.length) {\n setEmailError(false);\n setLoginError(false);\n }\n setEmail(removeWhiteSpaces(value));\n }\n\n return (\n <div className={`${styles.loginWrapper}`}>\n <>\n <div className={`${styles.innerWrapper}`}>\n <div className={styles.loginCode}>\n {summitData?.secondary_logo && <img className=\"login-logo\" src={`${summitData?.secondary_logo}`} />}\n <div className={styles.title}>{title}</div>\n <div className={styles.input}>\n <input placeholder=\"youremail@example.com\" value={email} onChange={handleEmailChange}\n onKeyPress={(ev) => ev.key === 'Enter' ? loginCode() : null} data-testid=\"email-input\" />\n </div>\n <div onClick={() => loginCode()} data-testid=\"email-button\" id=\"email-button\" style={emailButtonStyles}\n className={`${styles.button} ${styles.email_login_button} ${email === '' ? `${styles.pointerDisabled} ${styles.buttonDisabled}` : `${styles.primaryEmailButton}`}`}>\n <EmailRoundedIcon style={{ fontSize: \"20px\" }} />\n <span>Email me a single-use code</span>\n <span></span>\n </div>\n {emailError && <span className={styles.error} data-testid=\"email-error\">Please enter a valid email address</span>}\n {loginError && <span className={styles.error} data-testid=\"login-error\">{loginError}</span>}\n <h2 className={styles.h2Styled}>or</h2>\n </div>\n {loginOptions.map((o, index) => {\n return (\n o.provider_param ?\n <div className={`${styles.button}`} key={`provider-${o.provider_param}`} data-testid=\"login-button\"\n style={{\n color: o.button_text_color ? o.button_text_color : '#ffffff',\n border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,\n backgroundColor: o.button_color,\n backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',\n backgroundSize: o.provider_logo_size ? o.provider_logo_size : '',\n }}\n onClick={() => login(o.provider_param)}>\n {o.provider_label}\n </div>\n :\n allowsNativeAuth ?\n <div className={`${styles.button}`} key={`provider-fnid`} data-testid=\"login-button\"\n style={{\n color: o.button_border_color ? o.button_border_color : '#ffffff',\n border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,\n backgroundColor: o.button_color,\n backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',\n backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''\n }}\n onClick={() => login(o.provider_param)}>\n {o.provider_label}\n </div>\n :\n null\n )\n })}\n {allowsOtpAuthlogin &&\n <div className={styles.loginCode}>\n or get a login code emailed to you\n <div className={styles.input}>\n <input placeholder=\"youremail@example.com\" value={email} onChange={e => setEmail(e.target.value)} onKeyPress={(ev) => ev.key === 'Enter' ? loginCode() : null} data-testid=\"email-input\" />\n <br />\n </div>\n <div onClick={() => loginCode()} data-testid=\"email-button\" className=\"button\" style={{ background: \"#000\", color: \"#fff\"}}>\n Email me a login code\n </div>\n {emailError && <span data-testid=\"email-error\">Please enter a valid email adress</span>}\n </div>\n }\n </div>\n </>\n </div>\n );\n}\n\nLoginComponent.propTypes = {\n loginOptions: PropTypes.array.isRequired,\n login: PropTypes.func.isRequired,\n allowsNativeAuth: PropTypes.bool,\n allowsOtpAuthlogin: PropTypes.bool,\n getLoginCode: PropTypes.func.isRequired,\n getPasswordlessCode: PropTypes.func,\n initialEmailValue: PropTypes.string,\n title: PropTypes.string,\n}\n\nLoginComponent.defaultProps = {\n allowsNativeAuth: true,\n allowsOtpAuthlogin: false,\n initialEmailValue: '',\n title: 'Enter your email to begin registration:',\n}\n\n\nexport default LoginComponent\n\n"],"names":["isPrePaidTicketType","getTicketMaxQuantity","ticket","Math","min","quantity_2_sell","Number","MAX_SAFE_INTEGER","quantity_sold","max_quantity_per_order","formatCurrency","ORDER_PAYMENT_METHOD_OFFLINE","ORDER_STATUS_PAID","TICKET_TYPE_SUBTYPE_PREPAID","React","getCurrentProvider","summit","profile","payment_profiles","application_type","publicKey","test_mode_enabled","test_publishable_key","live_publishable_key","provider","ticketHasAccessLevel","accessLevel","badge","type","access_levels","map","al","name","includes","getCurrentUserLanguage","language","navigator","languages","userLanguage","isEmptyString","val","trim","length","getTicketTaxes","taxes","ticketTaxes","filter","tax","ticket_types","id","t","join","hasDiscountApplied","ticketType","hasOwnProperty","cost","cost_with_applied_discount","isFreeOrder","reservation","amount","isPrePaidOrder","status","payment_method","getTicketCost","quantity","currency","sub_type","buildTrackEvent","data","ticketQuantity","promoCode","eventData","items_array","item_id","item_name","price","value","coupon","discount","removeWhiteSpaces","replace","parseColor","input","element","document","documentElement","startsWith","cssVarName","slice","getComputedStyle","getPropertyValue","div","createElement","style","color","body","appendChild","m","match","removeChild","parseInt","getContrastingTextColor","bgColor","lightColor","darkColor","rgb","r","g","b","luminance","channel","normalized","pow","reduce","acc","i","useState","PropTypes","EmailRoundedIcon","styles","LoginComponent","summitData","loginOptions","login","allowsNativeAuth","allowsOtpAuthlogin","getLoginCode","getPasswordlessCode","initialEmailValue","title","email","setEmail","emailError","setEmailError","loginError","setLoginError","isValidEmail","re","test","String","toLowerCase","loginCode","isValid","catch","e","message","emailButtonStyles","handleEmailChange","ev","target","loginWrapper","innerWrapper","secondary_logo","key","button","email_login_button","pointerDisabled","buttonDisabled","primaryEmailButton","fontSize","error","h2Styled","o","index","provider_param","button_text_color","border","button_border_color","button_color","backgroundColor","backgroundImage","provider_logo","backgroundSize","provider_logo_size","provider_label","background","propTypes","array","isRequired","func","bool","string","defaultProps"],"sourceRoot":""}
package/dist/index.css CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  .step-wrapper{padding:10px;margin:10px;border:1px solid var(--color_input_border_color);border-radius:5px}.summit-registration-lite{color:var(--color_text_dark);font-size:15px;font-smooth:auto !important;-moz-osx-font-smoothing:auto !important;-webkit-font-smoothing:auto !important}.summit-registration-lite input:-moz-placeholder,.summit-registration-lite input::-moz-placeholder{opacity:1}input{outline:none}.registration_company_dll .registration_company_dll_prefix__control{border:1px solid var(--color_primary) !important;border-radius:5px !important}
4
4
 
5
- .loginWrapper___sxUEn{display:flex;justify-content:center;font-weight:bold;text-align:center;padding:20px 0 30px}.innerWrapper___GQRkq{display:flex;flex-direction:column;justify-content:center;width:300px}.innerWrapper___GQRkq span{margin:10px 0}.button___QMZPu{padding:10px 30px;font-weight:normal;display:inline-flex;justify-content:center;margin:5px 0;border-radius:5px;cursor:pointer;background-position:12px center;background-repeat:no-repeat;background-size:16px;line-height:1.4;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.button___QMZPu:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.title___NnwWR{padding:15px 0 0 0}.loginCode___dDBup{margin-bottom:10px;font-size:15px}.loginCode___dDBup>div{margin-top:10px}.loginCode___dDBup span{display:inline-block;font-weight:normal;font-size:14px}.primaryEmailButton___gH1fC{background-color:var(--color_input_background_color);border:1px solid var(--color_input_border_color);color:var(--color_input_text_color)}.buttonDisabled___T9tkn{background-color:var(--color_secondary_contrast);color:var(--color_input_text_color_disabled)}.pointerDisabled___qt_HK{pointer-events:none}.email_login_button___seiLi{display:flex;justify-content:space-between;padding:10px 9px;width:100%}.email_login_button___seiLi span{padding:0 0 0 8px;margin:0}.h2Styled___rfIKD{color:var(--color_gray_darker) !important;font-size:18px !important;font-weight:800 !important;display:flex;flex-direction:row}.h2Styled___rfIKD::before,.h2Styled___rfIKD::after{content:"";flex:1 1;border-bottom:1px solid var(--color_gray_dark);margin:auto}.h2Styled___rfIKD::before{margin-right:10px}.h2Styled___rfIKD::after{margin-left:10px}.input___QR9sA{display:flex;height:40px;margin-top:5px}.input___QR9sA input{border:1px solid var(--color_input_border_color);color:var(--color_input_text_color);background-color:var(--color_input_background_color);border-radius:5px;padding:5px;width:100%}.input___QR9sA input::placeholder{color:var(--color_text_input_hints)}.input___QR9sA button{margin-left:5px;background-color:var(--color_input_background_color);padding:0px 15px;border:1px solid var(--color_input_border_color);color:var(--color_text_dark);box-shadow:none;text-align:center;white-space:nowrap;font-weight:bold;border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center}
5
+ .loginWrapper___sxUEn{display:flex;justify-content:center;font-weight:bold;text-align:center;padding:20px 0 30px}.innerWrapper___GQRkq{display:flex;flex-direction:column;justify-content:center;width:300px}.innerWrapper___GQRkq span{margin:10px 0}.button___QMZPu{padding:10px 30px;font-weight:normal;display:inline-flex;justify-content:center;margin:5px 0;border-radius:5px;cursor:pointer;background-position:12px center;background-repeat:no-repeat;background-size:16px;line-height:1.4;box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}.button___QMZPu:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)}.title___NnwWR{padding:15px 0 0 0}.loginCode___dDBup{margin-bottom:10px;font-size:15px}.loginCode___dDBup>div{margin-top:10px}.loginCode___dDBup span{display:inline-block;font-weight:normal;font-size:14px}.loginCode___dDBup .error___aCF7E{color:#e5424d;font-size:14px;font-weight:bold}.primaryEmailButton___gH1fC{background-color:var(--color_input_background_color);border:1px solid var(--color_input_border_color);color:var(--color_input_text_color)}.buttonDisabled___T9tkn{background-color:var(--color_secondary_contrast);color:var(--color_input_text_color_disabled)}.pointerDisabled___qt_HK{pointer-events:none}.email_login_button___seiLi{display:flex;justify-content:space-between;padding:10px 9px;width:100%}.email_login_button___seiLi span{padding:0 0 0 8px;margin:0}.h2Styled___rfIKD{color:var(--color_gray_darker) !important;font-size:18px !important;font-weight:800 !important;display:flex;flex-direction:row}.h2Styled___rfIKD::before,.h2Styled___rfIKD::after{content:"";flex:1 1;border-bottom:1px solid var(--color_gray_dark);margin:auto}.h2Styled___rfIKD::before{margin-right:10px}.h2Styled___rfIKD::after{margin-left:10px}.input___QR9sA{display:flex;height:40px;margin-top:5px}.input___QR9sA input{border:1px solid var(--color_input_border_color);color:var(--color_input_text_color);background-color:var(--color_input_background_color);border-radius:5px;padding:5px;width:100%}.input___QR9sA input::placeholder{color:var(--color_text_input_hints)}.input___QR9sA button{margin-left:5px;background-color:var(--color_input_background_color);padding:0px 15px;border:1px solid var(--color_input_border_color);color:var(--color_text_dark);box-shadow:none;text-align:center;white-space:nowrap;font-weight:bold;border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center}
6
6
 
7
7
  .title___LksVm{font-weight:bold;cursor:pointer}.form___v5GIx{display:flex;flex-wrap:wrap;justify-content:space-between;margin:10px 0}.form___v5GIx div.fieldWrapper___Eoe61{width:48%;border-radius:5px;color:var(--color_input_text_color);border:1px solid var(--color_input_border_color);background-color:var(--color_input_background_color);height:36px;padding:5px 10px;display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.form___v5GIx div.fieldWrapper___Eoe61:first-of-type{width:100%}.form___v5GIx div.fieldWrapper___Eoe61 input{width:100%;background-color:transparent;border:none}.form___v5GIx div.fieldWrapper___Eoe61 input:focus-visible{outline:none}.form___v5GIx div.fieldWrapper___Eoe61 i{position:relative}.form___v5GIx div.fieldWrapper___Eoe61>div{width:100%}.form___v5GIx div.fieldWrapper___Eoe61>div:first-of-type{width:95%}.form___v5GIx input{width:48%;border-radius:5px;color:var(--color_input_text_color);border:1px solid var(--color_input_border_color);background-color:var(--color_input_background_color);font-size:16px;height:36px;padding:5px 10px;display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;font-weight:bold}.form___v5GIx input::placeholder{color:var(--color_text_input_hints)}
8
8
 
package/dist/index.js CHANGED
@@ -81,7 +81,7 @@ const PasswordlessLoginComponent = ({
81
81
  if (code.length === codeLength) {
82
82
  setOtpError(false);
83
83
  setIsLoading(true);
84
- passwordlessLogin(otpCode, loginWithCode).then(() => setIsLoading(false));
84
+ passwordlessLogin(otpCode, loginWithCode).finally(() => setIsLoading(false));
85
85
  } else {
86
86
  setOtpError(true);
87
87
  }
@@ -200,7 +200,7 @@ var EmailRounded_default = /*#__PURE__*/__webpack_require__.n(EmailRounded_names
200
200
  var utils = __webpack_require__(868);
201
201
  ;// CONCATENATED MODULE: ./src/components/login/index.module.scss
202
202
  // extracted by mini-css-extract-plugin
203
- /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","title":"title___NnwWR","loginCode":"loginCode___dDBup","primaryEmailButton":"primaryEmailButton___gH1fC","buttonDisabled":"buttonDisabled___T9tkn","pointerDisabled":"pointerDisabled___qt_HK","email_login_button":"email_login_button___seiLi","h2Styled":"h2Styled___rfIKD","input":"input___QR9sA"});
203
+ /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","title":"title___NnwWR","loginCode":"loginCode___dDBup","error":"error___aCF7E","primaryEmailButton":"primaryEmailButton___gH1fC","buttonDisabled":"buttonDisabled___T9tkn","pointerDisabled":"pointerDisabled___qt_HK","email_login_button":"email_login_button___seiLi","h2Styled":"h2Styled___rfIKD","input":"input___QR9sA"});
204
204
  ;// CONCATENATED MODULE: ./src/components/login/index.js
205
205
  /**
206
206
  * Copyright 2020 OpenStack Foundation
@@ -233,7 +233,8 @@ const LoginComponent = ({
233
233
  title
234
234
  }) => {
235
235
  const [email, setEmail] = (0,external_react_.useState)(initialEmailValue);
236
- const [emailError, setEmailError] = (0,external_react_.useState)();
236
+ const [emailError, setEmailError] = (0,external_react_.useState)(false);
237
+ const [loginError, setLoginError] = (0,external_react_.useState)(false);
237
238
 
238
239
  const isValidEmail = email => {
239
240
  const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
@@ -243,15 +244,34 @@ const LoginComponent = ({
243
244
  const loginCode = () => {
244
245
  let isValid = isValidEmail(email);
245
246
  setEmailError(!isValid);
247
+ setLoginError(false);
246
248
 
247
249
  if (isValid) {
248
- getLoginCode(email, getPasswordlessCode);
250
+ getLoginCode(email, getPasswordlessCode).catch(e => {
251
+ setLoginError(e.message);
252
+ });
249
253
  }
250
254
  };
251
255
 
252
256
  const emailButtonStyles = {
253
257
  color: (0,utils/* getContrastingTextColor */.YJ)(email === "" ? "var(--color_secondary_contrast)" : "var(--color_input_background_color)", "var(--color_text_light)", "var(--color_text_dark)")
254
258
  };
259
+
260
+ const handleEmailChange = ev => {
261
+ const {
262
+ target: {
263
+ value
264
+ }
265
+ } = ev;
266
+
267
+ if (!value.length) {
268
+ setEmailError(false);
269
+ setLoginError(false);
270
+ }
271
+
272
+ setEmail((0,utils/* removeWhiteSpaces */.Jg)(value));
273
+ };
274
+
255
275
  return /*#__PURE__*/external_react_default().createElement("div", {
256
276
  className: `${index_module.loginWrapper}`
257
277
  }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
@@ -268,7 +288,7 @@ const LoginComponent = ({
268
288
  }, /*#__PURE__*/external_react_default().createElement("input", {
269
289
  placeholder: "youremail@example.com",
270
290
  value: email,
271
- onChange: e => setEmail((0,utils/* removeWhiteSpaces */.Jg)(e.target.value)),
291
+ onChange: handleEmailChange,
272
292
  onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
273
293
  "data-testid": "email-input"
274
294
  })), /*#__PURE__*/external_react_default().createElement("div", {
@@ -282,8 +302,12 @@ const LoginComponent = ({
282
302
  fontSize: "20px"
283
303
  }
284
304
  }), /*#__PURE__*/external_react_default().createElement("span", null, "Email me a single-use code"), /*#__PURE__*/external_react_default().createElement("span", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
305
+ className: index_module.error,
285
306
  "data-testid": "email-error"
286
- }, "Please enter a valid email address"), /*#__PURE__*/external_react_default().createElement("h2", {
307
+ }, "Please enter a valid email address"), loginError && /*#__PURE__*/external_react_default().createElement("span", {
308
+ className: index_module.error,
309
+ "data-testid": "login-error"
310
+ }, loginError), /*#__PURE__*/external_react_default().createElement("h2", {
287
311
  className: index_module.h2Styled
288
312
  }, "or")), loginOptions.map((o, index) => {
289
313
  return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
@@ -1524,7 +1548,8 @@ const getLoginCode = (email, getPasswordlessCode) => async (dispatch, getState)
1524
1548
  dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_LENGTH)(res.response));
1525
1549
  resolve(res);
1526
1550
  }, err => {
1527
- reject(err);
1551
+ const errorMessage = err.response?.body?.error || err.message;
1552
+ reject(new Error(errorMessage));
1528
1553
  });
1529
1554
  });
1530
1555
  };