summit-registration-lite 5.0.39 → 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.
- package/dist/components/login-passwordless.js +5 -2
- package/dist/components/login-passwordless.js.map +1 -1
- package/dist/components/login.css +1 -1
- package/dist/components/login.js +29 -5
- package/dist/components/login.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.js +36 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -175,11 +175,13 @@ const PasswordlessLoginComponent = ({
|
|
|
175
175
|
const [otpCode, setOtpCode] = (0,external_react_.useState)('');
|
|
176
176
|
const [otpError, setOtpError] = (0,external_react_.useState)(false);
|
|
177
177
|
const [codeSent, setCodeSent] = (0,external_react_.useState)(false);
|
|
178
|
+
const [isLoading, setIsLoading] = (0,external_react_.useState)(false);
|
|
178
179
|
|
|
179
180
|
const tryPasswordlessLogin = code => {
|
|
180
181
|
if (code.length === codeLength) {
|
|
181
182
|
setOtpError(false);
|
|
182
|
-
|
|
183
|
+
setIsLoading(true);
|
|
184
|
+
passwordlessLogin(otpCode, loginWithCode).finally(() => setIsLoading(false));
|
|
183
185
|
} else {
|
|
184
186
|
setOtpError(true);
|
|
185
187
|
}
|
|
@@ -240,8 +242,9 @@ const PasswordlessLoginComponent = ({
|
|
|
240
242
|
"data-testid": "error"
|
|
241
243
|
}, "The code you entered it's incorrect. ", /*#__PURE__*/external_react_default().createElement("br", null), " Please try again."), /*#__PURE__*/external_react_default().createElement("div", {
|
|
242
244
|
className: index_module.verify
|
|
243
|
-
}, /*#__PURE__*/external_react_default().createElement("
|
|
245
|
+
}, /*#__PURE__*/external_react_default().createElement("button", {
|
|
244
246
|
className: `${index_module.button} button`,
|
|
247
|
+
disabled: isLoading,
|
|
245
248
|
onClick: () => tryPasswordlessLogin(otpCode),
|
|
246
249
|
"data-testid": "verify"
|
|
247
250
|
}, "Verify Email"), /*#__PURE__*/external_react_default().createElement("b", null, "or go back and ", /*#__PURE__*/external_react_default().createElement("span", {
|
|
@@ -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\n const tryPasswordlessLogin = (code) => {\n if (code.length === codeLength) {\n setOtpError(false)\n passwordlessLogin(otpCode, loginWithCode)\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 <div className={`${styles.button} button`} onClick={() => tryPasswordlessLogin(otpCode)} data-testid=\"verify\">Verify Email</div>\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","tryPasswordlessLogin","code","length","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
|
+
{"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
|
|
package/dist/components/login.js
CHANGED
|
@@ -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:
|
|
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("
|
|
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 \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 \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
|
@@ -75,11 +75,13 @@ const PasswordlessLoginComponent = ({
|
|
|
75
75
|
const [otpCode, setOtpCode] = (0,external_react_.useState)('');
|
|
76
76
|
const [otpError, setOtpError] = (0,external_react_.useState)(false);
|
|
77
77
|
const [codeSent, setCodeSent] = (0,external_react_.useState)(false);
|
|
78
|
+
const [isLoading, setIsLoading] = (0,external_react_.useState)(false);
|
|
78
79
|
|
|
79
80
|
const tryPasswordlessLogin = code => {
|
|
80
81
|
if (code.length === codeLength) {
|
|
81
82
|
setOtpError(false);
|
|
82
|
-
|
|
83
|
+
setIsLoading(true);
|
|
84
|
+
passwordlessLogin(otpCode, loginWithCode).finally(() => setIsLoading(false));
|
|
83
85
|
} else {
|
|
84
86
|
setOtpError(true);
|
|
85
87
|
}
|
|
@@ -140,8 +142,9 @@ const PasswordlessLoginComponent = ({
|
|
|
140
142
|
"data-testid": "error"
|
|
141
143
|
}, "The code you entered it's incorrect. ", /*#__PURE__*/external_react_default().createElement("br", null), " Please try again."), /*#__PURE__*/external_react_default().createElement("div", {
|
|
142
144
|
className: index_module.verify
|
|
143
|
-
}, /*#__PURE__*/external_react_default().createElement("
|
|
145
|
+
}, /*#__PURE__*/external_react_default().createElement("button", {
|
|
144
146
|
className: `${index_module.button} button`,
|
|
147
|
+
disabled: isLoading,
|
|
145
148
|
onClick: () => tryPasswordlessLogin(otpCode),
|
|
146
149
|
"data-testid": "verify"
|
|
147
150
|
}, "Verify Email"), /*#__PURE__*/external_react_default().createElement("b", null, "or go back and ", /*#__PURE__*/external_react_default().createElement("span", {
|
|
@@ -197,7 +200,7 @@ var EmailRounded_default = /*#__PURE__*/__webpack_require__.n(EmailRounded_names
|
|
|
197
200
|
var utils = __webpack_require__(868);
|
|
198
201
|
;// CONCATENATED MODULE: ./src/components/login/index.module.scss
|
|
199
202
|
// extracted by mini-css-extract-plugin
|
|
200
|
-
/* 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"});
|
|
201
204
|
;// CONCATENATED MODULE: ./src/components/login/index.js
|
|
202
205
|
/**
|
|
203
206
|
* Copyright 2020 OpenStack Foundation
|
|
@@ -230,7 +233,8 @@ const LoginComponent = ({
|
|
|
230
233
|
title
|
|
231
234
|
}) => {
|
|
232
235
|
const [email, setEmail] = (0,external_react_.useState)(initialEmailValue);
|
|
233
|
-
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);
|
|
234
238
|
|
|
235
239
|
const isValidEmail = email => {
|
|
236
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,}))$/;
|
|
@@ -240,15 +244,34 @@ const LoginComponent = ({
|
|
|
240
244
|
const loginCode = () => {
|
|
241
245
|
let isValid = isValidEmail(email);
|
|
242
246
|
setEmailError(!isValid);
|
|
247
|
+
setLoginError(false);
|
|
243
248
|
|
|
244
249
|
if (isValid) {
|
|
245
|
-
getLoginCode(email, getPasswordlessCode)
|
|
250
|
+
getLoginCode(email, getPasswordlessCode).catch(e => {
|
|
251
|
+
setLoginError(e.message);
|
|
252
|
+
});
|
|
246
253
|
}
|
|
247
254
|
};
|
|
248
255
|
|
|
249
256
|
const emailButtonStyles = {
|
|
250
257
|
color: (0,utils/* getContrastingTextColor */.YJ)(email === "" ? "var(--color_secondary_contrast)" : "var(--color_input_background_color)", "var(--color_text_light)", "var(--color_text_dark)")
|
|
251
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
|
+
|
|
252
275
|
return /*#__PURE__*/external_react_default().createElement("div", {
|
|
253
276
|
className: `${index_module.loginWrapper}`
|
|
254
277
|
}, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
|
|
@@ -265,7 +288,7 @@ const LoginComponent = ({
|
|
|
265
288
|
}, /*#__PURE__*/external_react_default().createElement("input", {
|
|
266
289
|
placeholder: "youremail@example.com",
|
|
267
290
|
value: email,
|
|
268
|
-
onChange:
|
|
291
|
+
onChange: handleEmailChange,
|
|
269
292
|
onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
|
|
270
293
|
"data-testid": "email-input"
|
|
271
294
|
})), /*#__PURE__*/external_react_default().createElement("div", {
|
|
@@ -279,8 +302,12 @@ const LoginComponent = ({
|
|
|
279
302
|
fontSize: "20px"
|
|
280
303
|
}
|
|
281
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,
|
|
282
306
|
"data-testid": "email-error"
|
|
283
|
-
}, "Please enter a valid email address"), /*#__PURE__*/external_react_default().createElement("
|
|
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", {
|
|
284
311
|
className: index_module.h2Styled
|
|
285
312
|
}, "or")), loginOptions.map((o, index) => {
|
|
286
313
|
return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
|
|
@@ -1521,7 +1548,8 @@ const getLoginCode = (email, getPasswordlessCode) => async (dispatch, getState)
|
|
|
1521
1548
|
dispatch((0,actions_namespaceObject.createAction)(SET_PASSWORDLESS_LENGTH)(res.response));
|
|
1522
1549
|
resolve(res);
|
|
1523
1550
|
}, err => {
|
|
1524
|
-
|
|
1551
|
+
const errorMessage = err.response?.body?.error || err.message;
|
|
1552
|
+
reject(new Error(errorMessage));
|
|
1525
1553
|
});
|
|
1526
1554
|
});
|
|
1527
1555
|
};
|