summit-registration-lite 3.0.29 → 4.0.0

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.
@@ -0,0 +1,2 @@
1
+ .passwordlessWrapper___BRQ_s{height:400px;display:flex;justify-content:center;align-items:center;flex-direction:column}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi{text-align:center;font-weight:bold;height:100%;width:300px;display:flex;flex-direction:column;justify-content:center}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .logo___qNVrv{width:175px;align-self:center}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .digits___Vu5iy{margin-top:15px;display:inline-block}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .codeInput___LnTZe{margin-top:20px;display:flex;justify-content:center}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .codeInput___LnTZe input{height:56px;width:56px;font-size:42px;background-color:var(--color_primary50);border:1px solid var(--color_primary);border-radius:5px;padding:5px;display:inline-flex;text-transform:uppercase;text-align:center;margin:0 5px}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .error___wZflZ{margin-top:10px;color:#e5424d;font-size:14px}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .verify___IBgMl{margin-top:20px}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .verify___IBgMl .button___nBhtQ{padding:10px 30px;font-weight:normal;justify-content:center;margin:5px 0;border-radius:5px;cursor:pointer;background-color:var(--color_secondary_contrast);color:#FFFFFF;width:100%;font-size:1em}.passwordlessWrapper___BRQ_s .innerWrapper___nRLDi .verify___IBgMl .link___f6fDT{color:var(--color_primary);text-decoration:underline;cursor:pointer}.passwordlessWrapper___BRQ_s .resend___Nma1U{margin:auto 0 0 0;font-weight:normal;font-size:14px}.passwordlessWrapper___BRQ_s .resend___Nma1U span{color:var(--color_primary);text-decoration:underline;cursor:pointer}
2
+
@@ -0,0 +1,240 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define("summit-registration-lite", [], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["summit-registration-lite"] = factory();
8
+ else
9
+ root["summit-registration-lite"] = factory();
10
+ })(this, function() {
11
+ return /******/ (() => { // webpackBootstrap
12
+ /******/ var __webpack_modules__ = ({
13
+
14
+ /***/ 802:
15
+ /***/ ((module) => {
16
+
17
+ 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"
18
+
19
+ /***/ }),
20
+
21
+ /***/ 580:
22
+ /***/ ((module) => {
23
+
24
+ "use strict";
25
+ module.exports = require("prop-types");
26
+
27
+ /***/ }),
28
+
29
+ /***/ 689:
30
+ /***/ ((module) => {
31
+
32
+ "use strict";
33
+ module.exports = require("react");
34
+
35
+ /***/ })
36
+
37
+ /******/ });
38
+ /************************************************************************/
39
+ /******/ // The module cache
40
+ /******/ var __webpack_module_cache__ = {};
41
+ /******/
42
+ /******/ // The require function
43
+ /******/ function __webpack_require__(moduleId) {
44
+ /******/ // Check if module is in cache
45
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
46
+ /******/ if (cachedModule !== undefined) {
47
+ /******/ return cachedModule.exports;
48
+ /******/ }
49
+ /******/ // Create a new module (and put it into the cache)
50
+ /******/ var module = __webpack_module_cache__[moduleId] = {
51
+ /******/ // no module.id needed
52
+ /******/ // no module.loaded needed
53
+ /******/ exports: {}
54
+ /******/ };
55
+ /******/
56
+ /******/ // Execute the module function
57
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
58
+ /******/
59
+ /******/ // Return the exports of the module
60
+ /******/ return module.exports;
61
+ /******/ }
62
+ /******/
63
+ /************************************************************************/
64
+ /******/ /* webpack/runtime/compat get default export */
65
+ /******/ (() => {
66
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
67
+ /******/ __webpack_require__.n = (module) => {
68
+ /******/ var getter = module && module.__esModule ?
69
+ /******/ () => (module['default']) :
70
+ /******/ () => (module);
71
+ /******/ __webpack_require__.d(getter, { a: getter });
72
+ /******/ return getter;
73
+ /******/ };
74
+ /******/ })();
75
+ /******/
76
+ /******/ /* webpack/runtime/define property getters */
77
+ /******/ (() => {
78
+ /******/ // define getter functions for harmony exports
79
+ /******/ __webpack_require__.d = (exports, definition) => {
80
+ /******/ for(var key in definition) {
81
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
82
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
83
+ /******/ }
84
+ /******/ }
85
+ /******/ };
86
+ /******/ })();
87
+ /******/
88
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
89
+ /******/ (() => {
90
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
91
+ /******/ })();
92
+ /******/
93
+ /******/ /* webpack/runtime/make namespace object */
94
+ /******/ (() => {
95
+ /******/ // define __esModule on exports
96
+ /******/ __webpack_require__.r = (exports) => {
97
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
98
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
99
+ /******/ }
100
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
101
+ /******/ };
102
+ /******/ })();
103
+ /******/
104
+ /************************************************************************/
105
+ var __webpack_exports__ = {};
106
+ // This entry need to be wrapped in an IIFE because it need to be in strict mode.
107
+ (() => {
108
+ "use strict";
109
+ // ESM COMPAT FLAG
110
+ __webpack_require__.r(__webpack_exports__);
111
+
112
+ // EXPORTS
113
+ __webpack_require__.d(__webpack_exports__, {
114
+ "default": () => (/* binding */ login_passwordless)
115
+ });
116
+
117
+ // EXTERNAL MODULE: external "react"
118
+ var external_react_ = __webpack_require__(689);
119
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
120
+ // EXTERNAL MODULE: external "prop-types"
121
+ var external_prop_types_ = __webpack_require__(580);
122
+ var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
123
+ ;// CONCATENATED MODULE: external "react-otp-input"
124
+ const external_react_otp_input_namespaceObject = require("react-otp-input");
125
+ var external_react_otp_input_default = /*#__PURE__*/__webpack_require__.n(external_react_otp_input_namespaceObject);
126
+ ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.module.scss
127
+ // extracted by mini-css-extract-plugin
128
+ /* harmony default export */ const index_module = ({"passwordlessWrapper":"passwordlessWrapper___BRQ_s","innerWrapper":"innerWrapper___nRLDi","logo":"logo___qNVrv","digits":"digits___Vu5iy","codeInput":"codeInput___LnTZe","error":"error___wZflZ","verify":"verify___IBgMl","button":"button___nBhtQ","link":"link___f6fDT","resend":"resend___Nma1U"});
129
+ // EXTERNAL MODULE: ./src/assets/FNid_WHT_logo_rgb.svg
130
+ var FNid_WHT_logo_rgb = __webpack_require__(802);
131
+ var FNid_WHT_logo_rgb_default = /*#__PURE__*/__webpack_require__.n(FNid_WHT_logo_rgb);
132
+ ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.js
133
+ /**
134
+ * Copyright 2020 OpenStack Foundation
135
+ * Licensed under the Apache License, Version 2.0 (the "License");
136
+ * you may not use this file except in compliance with the License.
137
+ * You may obtain a copy of the License at
138
+ * http://www.apache.org/licenses/LICENSE-2.0
139
+ * Unless required by applicable law or agreed to in writing, software
140
+ * distributed under the License is distributed on an "AS IS" BASIS,
141
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
142
+ * See the License for the specific language governing permissions and
143
+ * limitations under the License.
144
+ **/
145
+
146
+
147
+
148
+
149
+
150
+
151
+ const PasswordlessLoginComponent = ({
152
+ email,
153
+ codeLength,
154
+ passwordlessLogin,
155
+ loginWithCode,
156
+ codeError,
157
+ goToLogin,
158
+ getLoginCode,
159
+ getPasswordlessCode
160
+ }) => {
161
+ const [otpCode, setOtpCode] = (0,external_react_.useState)('');
162
+ const [otpError, setOtpError] = (0,external_react_.useState)(false);
163
+
164
+ const tryPasswordlessLogin = code => {
165
+ if (code.length === codeLength) {
166
+ setOtpError(false);
167
+ passwordlessLogin(otpCode, loginWithCode);
168
+ } else {
169
+ setOtpError(true);
170
+ }
171
+ };
172
+
173
+ const resendCode = () => {
174
+ getLoginCode(email, getPasswordlessCode);
175
+ };
176
+
177
+ return /*#__PURE__*/external_react_default().createElement("div", {
178
+ className: `${index_module.passwordlessWrapper} step-wrapper`
179
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
180
+ className: `${index_module.innerWrapper}`
181
+ }, /*#__PURE__*/external_react_default().createElement("img", {
182
+ src: (FNid_WHT_logo_rgb_default()),
183
+ alt: "FNid",
184
+ className: index_module.logo
185
+ }), /*#__PURE__*/external_react_default().createElement("span", null, "We sent your single-use login code to ", /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
186
+ "data-testid": "email"
187
+ }, email), /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
188
+ className: index_module.digits,
189
+ "data-testid": "code-digits"
190
+ }, "Add the ", codeLength, " digit code below")), /*#__PURE__*/external_react_default().createElement("div", {
191
+ className: index_module.codeInput
192
+ }, /*#__PURE__*/external_react_default().createElement((external_react_otp_input_default()), {
193
+ value: otpCode,
194
+ onChange: code => setOtpCode(code),
195
+ numInputs: codeLength,
196
+ shouldAutoFocus: true,
197
+ hasErrored: otpError || codeError,
198
+ errorStyle: {
199
+ border: '1px solid #e5424d'
200
+ },
201
+ "data-testid": "otp-input"
202
+ })), codeError && /*#__PURE__*/external_react_default().createElement("span", {
203
+ className: index_module.error,
204
+ "data-testid": "error"
205
+ }, "The code you entered it's incorrect. ", /*#__PURE__*/external_react_default().createElement("br", null), " Please try again."), /*#__PURE__*/external_react_default().createElement("div", {
206
+ className: index_module.verify
207
+ }, /*#__PURE__*/external_react_default().createElement("div", {
208
+ className: `${index_module.button} button`,
209
+ onClick: () => tryPasswordlessLogin(otpCode),
210
+ "data-testid": "verify"
211
+ }, "Verify Email"), /*#__PURE__*/external_react_default().createElement("b", null, "or go back and ", /*#__PURE__*/external_react_default().createElement("span", {
212
+ className: index_module.link,
213
+ onClick: () => goToLogin(),
214
+ "data-testid": "go-back"
215
+ }, "try another way")))), /*#__PURE__*/external_react_default().createElement("div", {
216
+ className: index_module.resend
217
+ }, "Didn\u2019t receive it? Check your spam/junk folder, or ", /*#__PURE__*/external_react_default().createElement("span", {
218
+ className: index_module.link,
219
+ onClick: () => resendCode(),
220
+ "data-testid": "resend"
221
+ }, "resend email"), " now.")));
222
+ };
223
+
224
+ PasswordlessLoginComponent.propTypes = {
225
+ email: (external_prop_types_default()).string.isRequired,
226
+ codeLength: (external_prop_types_default()).number.isRequired,
227
+ passwordlessLogin: (external_prop_types_default()).func.isRequired,
228
+ loginWithCode: (external_prop_types_default()).func,
229
+ codeError: (external_prop_types_default()).bool,
230
+ goToLogin: (external_prop_types_default()).func.isRequired,
231
+ getLoginCode: (external_prop_types_default()).func.isRequired,
232
+ getPasswordlessCode: (external_prop_types_default()).func
233
+ };
234
+ /* harmony default export */ const login_passwordless = (PasswordlessLoginComponent);
235
+ })();
236
+
237
+ /******/ return __webpack_exports__;
238
+ /******/ })()
239
+ ;
240
+ });
@@ -0,0 +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;background-color:red;color:white;font-weight:normal;display:inline-flex;justify-content:center;margin:5px 0;border-radius:5px;cursor:pointer;background-position:28px 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)}.loginCode___dDBup{margin-bottom:10px;font-size:16px}.loginCode___dDBup>div{margin-top:10px}.loginCode___dDBup span{display:inline-block;font-weight:normal;font-size:14px;color:#e5424d}.input___QR9sA{display:flex;height:40px;margin-top:5px}.input___QR9sA input{border:1px solid var(--color_primary);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_secondary_contrast);padding:0px 15px;border:1px solid var(--color_secondary_contrast);color:#fff;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
+
@@ -0,0 +1,243 @@
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory();
4
+ else if(typeof define === 'function' && define.amd)
5
+ define("summit-registration-lite", [], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["summit-registration-lite"] = factory();
8
+ else
9
+ root["summit-registration-lite"] = factory();
10
+ })(this, function() {
11
+ return /******/ (() => { // webpackBootstrap
12
+ /******/ "use strict";
13
+ /******/ var __webpack_modules__ = ({
14
+
15
+ /***/ 580:
16
+ /***/ ((module) => {
17
+
18
+ module.exports = require("prop-types");
19
+
20
+ /***/ }),
21
+
22
+ /***/ 689:
23
+ /***/ ((module) => {
24
+
25
+ module.exports = require("react");
26
+
27
+ /***/ })
28
+
29
+ /******/ });
30
+ /************************************************************************/
31
+ /******/ // The module cache
32
+ /******/ var __webpack_module_cache__ = {};
33
+ /******/
34
+ /******/ // The require function
35
+ /******/ function __webpack_require__(moduleId) {
36
+ /******/ // Check if module is in cache
37
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
38
+ /******/ if (cachedModule !== undefined) {
39
+ /******/ return cachedModule.exports;
40
+ /******/ }
41
+ /******/ // Create a new module (and put it into the cache)
42
+ /******/ var module = __webpack_module_cache__[moduleId] = {
43
+ /******/ // no module.id needed
44
+ /******/ // no module.loaded needed
45
+ /******/ exports: {}
46
+ /******/ };
47
+ /******/
48
+ /******/ // Execute the module function
49
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
50
+ /******/
51
+ /******/ // Return the exports of the module
52
+ /******/ return module.exports;
53
+ /******/ }
54
+ /******/
55
+ /************************************************************************/
56
+ /******/ /* webpack/runtime/compat get default export */
57
+ /******/ (() => {
58
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
59
+ /******/ __webpack_require__.n = (module) => {
60
+ /******/ var getter = module && module.__esModule ?
61
+ /******/ () => (module['default']) :
62
+ /******/ () => (module);
63
+ /******/ __webpack_require__.d(getter, { a: getter });
64
+ /******/ return getter;
65
+ /******/ };
66
+ /******/ })();
67
+ /******/
68
+ /******/ /* webpack/runtime/define property getters */
69
+ /******/ (() => {
70
+ /******/ // define getter functions for harmony exports
71
+ /******/ __webpack_require__.d = (exports, definition) => {
72
+ /******/ for(var key in definition) {
73
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
74
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
75
+ /******/ }
76
+ /******/ }
77
+ /******/ };
78
+ /******/ })();
79
+ /******/
80
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
81
+ /******/ (() => {
82
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
83
+ /******/ })();
84
+ /******/
85
+ /******/ /* webpack/runtime/make namespace object */
86
+ /******/ (() => {
87
+ /******/ // define __esModule on exports
88
+ /******/ __webpack_require__.r = (exports) => {
89
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
90
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
91
+ /******/ }
92
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
93
+ /******/ };
94
+ /******/ })();
95
+ /******/
96
+ /************************************************************************/
97
+ var __webpack_exports__ = {};
98
+ // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
99
+ (() => {
100
+ // ESM COMPAT FLAG
101
+ __webpack_require__.r(__webpack_exports__);
102
+
103
+ // EXPORTS
104
+ __webpack_require__.d(__webpack_exports__, {
105
+ "default": () => (/* binding */ login)
106
+ });
107
+
108
+ // EXTERNAL MODULE: external "react"
109
+ var external_react_ = __webpack_require__(689);
110
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
111
+ // EXTERNAL MODULE: external "prop-types"
112
+ var external_prop_types_ = __webpack_require__(580);
113
+ var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
114
+ ;// CONCATENATED MODULE: ./src/components/login/index.module.scss
115
+ // extracted by mini-css-extract-plugin
116
+ /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","loginCode":"loginCode___dDBup","input":"input___QR9sA"});
117
+ ;// CONCATENATED MODULE: ./src/components/login/index.js
118
+ /**
119
+ * Copyright 2020 OpenStack Foundation
120
+ * Licensed under the Apache License, Version 2.0 (the "License");
121
+ * you may not use this file except in compliance with the License.
122
+ * You may obtain a copy of the License at
123
+ * http://www.apache.org/licenses/LICENSE-2.0
124
+ * Unless required by applicable law or agreed to in writing, software
125
+ * distributed under the License is distributed on an "AS IS" BASIS,
126
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127
+ * See the License for the specific language governing permissions and
128
+ * limitations under the License.
129
+ **/
130
+
131
+
132
+
133
+
134
+ const LoginComponent = ({
135
+ loginOptions,
136
+ login,
137
+ allowsNativeAuth,
138
+ allowsOtpAuthlogin,
139
+ getLoginCode,
140
+ getPasswordlessCode,
141
+ initialEmailValue
142
+ }) => {
143
+ const [email, setEmail] = (0,external_react_.useState)(initialEmailValue);
144
+ const [emailError, setEmailError] = (0,external_react_.useState)();
145
+
146
+ const isValidEmail = email => {
147
+ 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,}))$/;
148
+ return re.test(String(email).toLowerCase());
149
+ };
150
+
151
+ const loginCode = () => {
152
+ let isValid = isValidEmail(email);
153
+ setEmailError(!isValid);
154
+
155
+ if (isValid) {
156
+ getLoginCode(email, getPasswordlessCode);
157
+ }
158
+ };
159
+
160
+ return /*#__PURE__*/external_react_default().createElement("div", {
161
+ className: `${index_module.loginWrapper} step-wrapper`
162
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
163
+ className: `${index_module.innerWrapper}`
164
+ }, /*#__PURE__*/external_react_default().createElement("div", {
165
+ className: index_module.loginCode
166
+ }, "Enter your email to begin registration:", /*#__PURE__*/external_react_default().createElement("div", {
167
+ className: index_module.input
168
+ }, /*#__PURE__*/external_react_default().createElement("input", {
169
+ placeholder: "youremail@example.com",
170
+ value: email,
171
+ onChange: e => setEmail(e.target.value),
172
+ onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
173
+ "data-testid": "email-input"
174
+ }), /*#__PURE__*/external_react_default().createElement("button", {
175
+ onClick: () => loginCode(),
176
+ "data-testid": "email-button"
177
+ }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
178
+ "data-testid": "email-error"
179
+ }, "Please enter a valid email address")), /*#__PURE__*/external_react_default().createElement("span", null, "Or you may login with one of the following:"), loginOptions.map((o, index) => {
180
+ return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
181
+ className: `${index_module.button}`,
182
+ key: `provider-${o.provider_param}`,
183
+ "data-testid": "login-button",
184
+ style: {
185
+ color: o.button_border_color ? o.button_border_color : '#ffffff',
186
+ border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
187
+ backgroundColor: o.button_color,
188
+ backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
189
+ backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
190
+ },
191
+ onClick: () => login(o.provider_param)
192
+ }, o.provider_label) : allowsNativeAuth ? /*#__PURE__*/external_react_default().createElement("div", {
193
+ className: `${index_module.button}`,
194
+ key: `provider-fnid`,
195
+ "data-testid": "login-button",
196
+ style: {
197
+ color: o.button_border_color ? o.button_border_color : '#ffffff',
198
+ border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
199
+ backgroundColor: o.button_color,
200
+ backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
201
+ backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
202
+ },
203
+ onClick: () => login(o.provider_param)
204
+ }, o.provider_label) : null;
205
+ }), allowsOtpAuthlogin && /*#__PURE__*/external_react_default().createElement("div", {
206
+ className: index_module.loginCode
207
+ }, "or get a login code emailed to you", /*#__PURE__*/external_react_default().createElement("div", {
208
+ className: index_module.input
209
+ }, /*#__PURE__*/external_react_default().createElement("input", {
210
+ placeholder: "youremail@example.com",
211
+ value: email,
212
+ onChange: e => setEmail(e.target.value),
213
+ onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
214
+ "data-testid": "email-input"
215
+ }), /*#__PURE__*/external_react_default().createElement("button", {
216
+ onClick: () => loginCode(),
217
+ "data-testid": "email-button"
218
+ }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
219
+ "data-testid": "email-error"
220
+ }, "Please enter a valid email adress")))));
221
+ };
222
+
223
+ LoginComponent.propTypes = {
224
+ loginOptions: (external_prop_types_default()).array.isRequired,
225
+ login: (external_prop_types_default()).func.isRequired,
226
+ allowsNativeAuth: (external_prop_types_default()).bool,
227
+ allowsOtpAuthlogin: (external_prop_types_default()).bool,
228
+ getLoginCode: (external_prop_types_default()).func.isRequired,
229
+ getPasswordlessCode: (external_prop_types_default()).func,
230
+ initialEmailValue: (external_prop_types_default()).string
231
+ };
232
+ LoginComponent.defaultProps = {
233
+ allowsNativeAuth: true,
234
+ allowsOtpAuthlogin: false,
235
+ initialEmailValue: ''
236
+ };
237
+ /* harmony default export */ const login = (LoginComponent);
238
+ })();
239
+
240
+ /******/ return __webpack_exports__;
241
+ /******/ })()
242
+ ;
243
+ });
package/dist/index.js CHANGED
@@ -11,11 +11,301 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
+ /***/ 168:
15
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
16
+
17
+ "use strict";
18
+
19
+ // EXPORTS
20
+ __webpack_require__.d(__webpack_exports__, {
21
+ "default": () => (/* binding */ login_passwordless)
22
+ });
23
+
24
+ // EXTERNAL MODULE: external "react"
25
+ var external_react_ = __webpack_require__(689);
26
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
27
+ // EXTERNAL MODULE: external "prop-types"
28
+ var external_prop_types_ = __webpack_require__(580);
29
+ var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
30
+ ;// CONCATENATED MODULE: external "react-otp-input"
31
+ const external_react_otp_input_namespaceObject = require("react-otp-input");
32
+ var external_react_otp_input_default = /*#__PURE__*/__webpack_require__.n(external_react_otp_input_namespaceObject);
33
+ ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.module.scss
34
+ // extracted by mini-css-extract-plugin
35
+ /* harmony default export */ const index_module = ({"passwordlessWrapper":"passwordlessWrapper___BRQ_s","innerWrapper":"innerWrapper___nRLDi","logo":"logo___qNVrv","digits":"digits___Vu5iy","codeInput":"codeInput___LnTZe","error":"error___wZflZ","verify":"verify___IBgMl","button":"button___nBhtQ","link":"link___f6fDT","resend":"resend___Nma1U"});
36
+ // EXTERNAL MODULE: ./src/assets/FNid_WHT_logo_rgb.svg
37
+ var FNid_WHT_logo_rgb = __webpack_require__(802);
38
+ var FNid_WHT_logo_rgb_default = /*#__PURE__*/__webpack_require__.n(FNid_WHT_logo_rgb);
39
+ ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.js
40
+ /**
41
+ * Copyright 2020 OpenStack Foundation
42
+ * Licensed under the Apache License, Version 2.0 (the "License");
43
+ * you may not use this file except in compliance with the License.
44
+ * You may obtain a copy of the License at
45
+ * http://www.apache.org/licenses/LICENSE-2.0
46
+ * Unless required by applicable law or agreed to in writing, software
47
+ * distributed under the License is distributed on an "AS IS" BASIS,
48
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
49
+ * See the License for the specific language governing permissions and
50
+ * limitations under the License.
51
+ **/
52
+
53
+
54
+
55
+
56
+
57
+
58
+ const PasswordlessLoginComponent = ({
59
+ email,
60
+ codeLength,
61
+ passwordlessLogin,
62
+ loginWithCode,
63
+ codeError,
64
+ goToLogin,
65
+ getLoginCode,
66
+ getPasswordlessCode
67
+ }) => {
68
+ const [otpCode, setOtpCode] = (0,external_react_.useState)('');
69
+ const [otpError, setOtpError] = (0,external_react_.useState)(false);
70
+
71
+ const tryPasswordlessLogin = code => {
72
+ if (code.length === codeLength) {
73
+ setOtpError(false);
74
+ passwordlessLogin(otpCode, loginWithCode);
75
+ } else {
76
+ setOtpError(true);
77
+ }
78
+ };
79
+
80
+ const resendCode = () => {
81
+ getLoginCode(email, getPasswordlessCode);
82
+ };
83
+
84
+ return /*#__PURE__*/external_react_default().createElement("div", {
85
+ className: `${index_module.passwordlessWrapper} step-wrapper`
86
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
87
+ className: `${index_module.innerWrapper}`
88
+ }, /*#__PURE__*/external_react_default().createElement("img", {
89
+ src: (FNid_WHT_logo_rgb_default()),
90
+ alt: "FNid",
91
+ className: index_module.logo
92
+ }), /*#__PURE__*/external_react_default().createElement("span", null, "We sent your single-use login code to ", /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
93
+ "data-testid": "email"
94
+ }, email), /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
95
+ className: index_module.digits,
96
+ "data-testid": "code-digits"
97
+ }, "Add the ", codeLength, " digit code below")), /*#__PURE__*/external_react_default().createElement("div", {
98
+ className: index_module.codeInput
99
+ }, /*#__PURE__*/external_react_default().createElement((external_react_otp_input_default()), {
100
+ value: otpCode,
101
+ onChange: code => setOtpCode(code),
102
+ numInputs: codeLength,
103
+ shouldAutoFocus: true,
104
+ hasErrored: otpError || codeError,
105
+ errorStyle: {
106
+ border: '1px solid #e5424d'
107
+ },
108
+ "data-testid": "otp-input"
109
+ })), codeError && /*#__PURE__*/external_react_default().createElement("span", {
110
+ className: index_module.error,
111
+ "data-testid": "error"
112
+ }, "The code you entered it's incorrect. ", /*#__PURE__*/external_react_default().createElement("br", null), " Please try again."), /*#__PURE__*/external_react_default().createElement("div", {
113
+ className: index_module.verify
114
+ }, /*#__PURE__*/external_react_default().createElement("div", {
115
+ className: `${index_module.button} button`,
116
+ onClick: () => tryPasswordlessLogin(otpCode),
117
+ "data-testid": "verify"
118
+ }, "Verify Email"), /*#__PURE__*/external_react_default().createElement("b", null, "or go back and ", /*#__PURE__*/external_react_default().createElement("span", {
119
+ className: index_module.link,
120
+ onClick: () => goToLogin(),
121
+ "data-testid": "go-back"
122
+ }, "try another way")))), /*#__PURE__*/external_react_default().createElement("div", {
123
+ className: index_module.resend
124
+ }, "Didn\u2019t receive it? Check your spam/junk folder, or ", /*#__PURE__*/external_react_default().createElement("span", {
125
+ className: index_module.link,
126
+ onClick: () => resendCode(),
127
+ "data-testid": "resend"
128
+ }, "resend email"), " now.")));
129
+ };
130
+
131
+ PasswordlessLoginComponent.propTypes = {
132
+ email: (external_prop_types_default()).string.isRequired,
133
+ codeLength: (external_prop_types_default()).number.isRequired,
134
+ passwordlessLogin: (external_prop_types_default()).func.isRequired,
135
+ loginWithCode: (external_prop_types_default()).func,
136
+ codeError: (external_prop_types_default()).bool,
137
+ goToLogin: (external_prop_types_default()).func.isRequired,
138
+ getLoginCode: (external_prop_types_default()).func.isRequired,
139
+ getPasswordlessCode: (external_prop_types_default()).func
140
+ };
141
+ /* harmony default export */ const login_passwordless = (PasswordlessLoginComponent);
142
+
143
+ /***/ }),
144
+
145
+ /***/ 711:
146
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
147
+
148
+ "use strict";
149
+
150
+ // EXPORTS
151
+ __webpack_require__.d(__webpack_exports__, {
152
+ "default": () => (/* binding */ login)
153
+ });
154
+
155
+ // EXTERNAL MODULE: external "react"
156
+ var external_react_ = __webpack_require__(689);
157
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
158
+ // EXTERNAL MODULE: external "prop-types"
159
+ var external_prop_types_ = __webpack_require__(580);
160
+ var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
161
+ ;// CONCATENATED MODULE: ./src/components/login/index.module.scss
162
+ // extracted by mini-css-extract-plugin
163
+ /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","loginCode":"loginCode___dDBup","input":"input___QR9sA"});
164
+ ;// CONCATENATED MODULE: ./src/components/login/index.js
165
+ /**
166
+ * Copyright 2020 OpenStack Foundation
167
+ * Licensed under the Apache License, Version 2.0 (the "License");
168
+ * you may not use this file except in compliance with the License.
169
+ * You may obtain a copy of the License at
170
+ * http://www.apache.org/licenses/LICENSE-2.0
171
+ * Unless required by applicable law or agreed to in writing, software
172
+ * distributed under the License is distributed on an "AS IS" BASIS,
173
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
174
+ * See the License for the specific language governing permissions and
175
+ * limitations under the License.
176
+ **/
177
+
178
+
179
+
180
+
181
+ const LoginComponent = ({
182
+ loginOptions,
183
+ login,
184
+ allowsNativeAuth,
185
+ allowsOtpAuthlogin,
186
+ getLoginCode,
187
+ getPasswordlessCode,
188
+ initialEmailValue
189
+ }) => {
190
+ const [email, setEmail] = (0,external_react_.useState)(initialEmailValue);
191
+ const [emailError, setEmailError] = (0,external_react_.useState)();
192
+
193
+ const isValidEmail = email => {
194
+ 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,}))$/;
195
+ return re.test(String(email).toLowerCase());
196
+ };
197
+
198
+ const loginCode = () => {
199
+ let isValid = isValidEmail(email);
200
+ setEmailError(!isValid);
201
+
202
+ if (isValid) {
203
+ getLoginCode(email, getPasswordlessCode);
204
+ }
205
+ };
206
+
207
+ return /*#__PURE__*/external_react_default().createElement("div", {
208
+ className: `${index_module.loginWrapper} step-wrapper`
209
+ }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
210
+ className: `${index_module.innerWrapper}`
211
+ }, /*#__PURE__*/external_react_default().createElement("div", {
212
+ className: index_module.loginCode
213
+ }, "Enter your email to begin registration:", /*#__PURE__*/external_react_default().createElement("div", {
214
+ className: index_module.input
215
+ }, /*#__PURE__*/external_react_default().createElement("input", {
216
+ placeholder: "youremail@example.com",
217
+ value: email,
218
+ onChange: e => setEmail(e.target.value),
219
+ onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
220
+ "data-testid": "email-input"
221
+ }), /*#__PURE__*/external_react_default().createElement("button", {
222
+ onClick: () => loginCode(),
223
+ "data-testid": "email-button"
224
+ }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
225
+ "data-testid": "email-error"
226
+ }, "Please enter a valid email address")), /*#__PURE__*/external_react_default().createElement("span", null, "Or you may login with one of the following:"), loginOptions.map((o, index) => {
227
+ return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
228
+ className: `${index_module.button}`,
229
+ key: `provider-${o.provider_param}`,
230
+ "data-testid": "login-button",
231
+ style: {
232
+ color: o.button_border_color ? o.button_border_color : '#ffffff',
233
+ border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
234
+ backgroundColor: o.button_color,
235
+ backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
236
+ backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
237
+ },
238
+ onClick: () => login(o.provider_param)
239
+ }, o.provider_label) : allowsNativeAuth ? /*#__PURE__*/external_react_default().createElement("div", {
240
+ className: `${index_module.button}`,
241
+ key: `provider-fnid`,
242
+ "data-testid": "login-button",
243
+ style: {
244
+ color: o.button_border_color ? o.button_border_color : '#ffffff',
245
+ border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
246
+ backgroundColor: o.button_color,
247
+ backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
248
+ backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
249
+ },
250
+ onClick: () => login(o.provider_param)
251
+ }, o.provider_label) : null;
252
+ }), allowsOtpAuthlogin && /*#__PURE__*/external_react_default().createElement("div", {
253
+ className: index_module.loginCode
254
+ }, "or get a login code emailed to you", /*#__PURE__*/external_react_default().createElement("div", {
255
+ className: index_module.input
256
+ }, /*#__PURE__*/external_react_default().createElement("input", {
257
+ placeholder: "youremail@example.com",
258
+ value: email,
259
+ onChange: e => setEmail(e.target.value),
260
+ onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
261
+ "data-testid": "email-input"
262
+ }), /*#__PURE__*/external_react_default().createElement("button", {
263
+ onClick: () => loginCode(),
264
+ "data-testid": "email-button"
265
+ }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
266
+ "data-testid": "email-error"
267
+ }, "Please enter a valid email adress")))));
268
+ };
269
+
270
+ LoginComponent.propTypes = {
271
+ loginOptions: (external_prop_types_default()).array.isRequired,
272
+ login: (external_prop_types_default()).func.isRequired,
273
+ allowsNativeAuth: (external_prop_types_default()).bool,
274
+ allowsOtpAuthlogin: (external_prop_types_default()).bool,
275
+ getLoginCode: (external_prop_types_default()).func.isRequired,
276
+ getPasswordlessCode: (external_prop_types_default()).func,
277
+ initialEmailValue: (external_prop_types_default()).string
278
+ };
279
+ LoginComponent.defaultProps = {
280
+ allowsNativeAuth: true,
281
+ allowsOtpAuthlogin: false,
282
+ initialEmailValue: ''
283
+ };
284
+ /* harmony default export */ const login = (LoginComponent);
285
+
286
+ /***/ }),
287
+
14
288
  /***/ 802:
15
289
  /***/ ((module) => {
16
290
 
17
291
  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"
18
292
 
293
+ /***/ }),
294
+
295
+ /***/ 580:
296
+ /***/ ((module) => {
297
+
298
+ "use strict";
299
+ module.exports = require("prop-types");
300
+
301
+ /***/ }),
302
+
303
+ /***/ 689:
304
+ /***/ ((module) => {
305
+
306
+ "use strict";
307
+ module.exports = require("react");
308
+
19
309
  /***/ })
20
310
 
21
311
  /******/ });
@@ -95,12 +385,14 @@ __webpack_require__.r(__webpack_exports__);
95
385
 
96
386
  // EXPORTS
97
387
  __webpack_require__.d(__webpack_exports__, {
388
+ "LoginComponent": () => (/* reexport */ login["default"]),
389
+ "PasswordlessLoginComponent": () => (/* reexport */ login_passwordless["default"]),
98
390
  "default": () => (/* binding */ summit_registration_lite)
99
391
  });
100
392
 
101
- ;// CONCATENATED MODULE: external "react"
102
- const external_react_namespaceObject = require("react");
103
- var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject);
393
+ // EXTERNAL MODULE: external "react"
394
+ var external_react_ = __webpack_require__(689);
395
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
104
396
  ;// CONCATENATED MODULE: external "react-redux"
105
397
  const external_react_redux_namespaceObject = require("react-redux");
106
398
  ;// CONCATENATED MODULE: external "redux"
@@ -1032,9 +1324,9 @@ const getPersistor = () => {
1032
1324
  };
1033
1325
  ;// CONCATENATED MODULE: external "redux-persist/integration/react"
1034
1326
  const react_namespaceObject = require("redux-persist/integration/react");
1035
- ;// CONCATENATED MODULE: external "prop-types"
1036
- const external_prop_types_namespaceObject = require("prop-types");
1037
- var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_namespaceObject);
1327
+ // EXTERNAL MODULE: external "prop-types"
1328
+ var external_prop_types_ = __webpack_require__(580);
1329
+ var external_prop_types_default = /*#__PURE__*/__webpack_require__.n(external_prop_types_);
1038
1330
  ;// CONCATENATED MODULE: external "react-spring"
1039
1331
  const external_react_spring_namespaceObject = require("react-spring");
1040
1332
  ;// CONCATENATED MODULE: external "react-use"
@@ -1047,118 +1339,11 @@ var ajaxloader_default = /*#__PURE__*/__webpack_require__.n(ajaxloader_namespace
1047
1339
  ;// CONCATENATED MODULE: ./src/styles/general.module.scss
1048
1340
  // extracted by mini-css-extract-plugin
1049
1341
  /* harmony default export */ const general_module = ({"modal":"modal___G3Cmq","modalContent":"modalContent___lIaqw","outerWrapper":"outerWrapper___OWXyi","innerWrapper":"innerWrapper___mIrBF","title":"title___Tbvkl"});
1050
- ;// CONCATENATED MODULE: ./src/components/login/index.module.scss
1051
- // extracted by mini-css-extract-plugin
1052
- /* harmony default export */ const index_module = ({"loginWrapper":"loginWrapper___sxUEn","innerWrapper":"innerWrapper___GQRkq","button":"button___QMZPu","loginCode":"loginCode___dDBup","input":"input___QR9sA"});
1053
- ;// CONCATENATED MODULE: ./src/components/login/index.js
1054
- /**
1055
- * Copyright 2020 OpenStack Foundation
1056
- * Licensed under the Apache License, Version 2.0 (the "License");
1057
- * you may not use this file except in compliance with the License.
1058
- * You may obtain a copy of the License at
1059
- * http://www.apache.org/licenses/LICENSE-2.0
1060
- * Unless required by applicable law or agreed to in writing, software
1061
- * distributed under the License is distributed on an "AS IS" BASIS,
1062
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1063
- * See the License for the specific language governing permissions and
1064
- * limitations under the License.
1065
- **/
1066
-
1067
-
1068
-
1069
- const LoginComponent = ({
1070
- options,
1071
- login,
1072
- allowsNativeAuth,
1073
- allowsOtpAuthlogin,
1074
- getLoginCode,
1075
- getPasswordlessCode,
1076
- initialEmailValue = ''
1077
- }) => {
1078
- const [email, setEmail] = (0,external_react_namespaceObject.useState)(initialEmailValue);
1079
- const [emailError, setEmailError] = (0,external_react_namespaceObject.useState)();
1080
-
1081
- const isValidEmail = email => {
1082
- 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,}))$/;
1083
- return re.test(String(email).toLowerCase());
1084
- };
1085
-
1086
- const loginCode = () => {
1087
- let isValid = isValidEmail(email);
1088
- setEmailError(!isValid);
1089
-
1090
- if (isValid) {
1091
- getLoginCode(email, getPasswordlessCode);
1092
- }
1093
- };
1094
-
1095
- return /*#__PURE__*/external_react_default().createElement("div", {
1096
- className: `${index_module.loginWrapper} step-wrapper`
1097
- }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1098
- className: `${index_module.innerWrapper}`
1099
- }, /*#__PURE__*/external_react_default().createElement("div", {
1100
- className: index_module.loginCode
1101
- }, "Enter your email to begin registration:", /*#__PURE__*/external_react_default().createElement("div", {
1102
- className: index_module.input
1103
- }, /*#__PURE__*/external_react_default().createElement("input", {
1104
- placeholder: "youremail@example.com",
1105
- value: email,
1106
- onChange: e => setEmail(e.target.value),
1107
- onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
1108
- "data-testid": "email-input"
1109
- }), /*#__PURE__*/external_react_default().createElement("button", {
1110
- onClick: () => loginCode(),
1111
- "data-testid": "email-button"
1112
- }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
1113
- "data-testid": "email-error"
1114
- }, "Please enter a valid email address")), /*#__PURE__*/external_react_default().createElement("span", null, "Or you may login with one of the following:"), options.map((o, index) => {
1115
- return o.provider_param ? /*#__PURE__*/external_react_default().createElement("div", {
1116
- className: `${index_module.button}`,
1117
- key: `provider-${o.provider_param}`,
1118
- "data-testid": "login-button",
1119
- style: {
1120
- color: o.button_border_color ? o.button_border_color : '#ffffff',
1121
- border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
1122
- backgroundColor: o.button_color,
1123
- backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
1124
- backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
1125
- },
1126
- onClick: () => login(o.provider_param)
1127
- }, o.provider_label) : allowsNativeAuth ? /*#__PURE__*/external_react_default().createElement("div", {
1128
- className: `${index_module.button}`,
1129
- key: `provider-fnid`,
1130
- "data-testid": "login-button",
1131
- style: {
1132
- color: o.button_border_color ? o.button_border_color : '#ffffff',
1133
- border: `thin solid ${o.button_border_color ? o.button_border_color : o.button_color}`,
1134
- backgroundColor: o.button_color,
1135
- backgroundImage: o.provider_logo ? `url(${o.provider_logo})` : 'none',
1136
- backgroundSize: o.provider_logo_size ? o.provider_logo_size : ''
1137
- },
1138
- onClick: () => login(o.provider_param)
1139
- }, o.provider_label) : null;
1140
- }), allowsOtpAuthlogin && /*#__PURE__*/external_react_default().createElement("div", {
1141
- className: index_module.loginCode
1142
- }, "or get a login code emailed to you", /*#__PURE__*/external_react_default().createElement("div", {
1143
- className: index_module.input
1144
- }, /*#__PURE__*/external_react_default().createElement("input", {
1145
- placeholder: "youremail@example.com",
1146
- value: email,
1147
- onChange: e => setEmail(e.target.value),
1148
- onKeyPress: ev => ev.key === 'Enter' ? loginCode() : null,
1149
- "data-testid": "email-input"
1150
- }), /*#__PURE__*/external_react_default().createElement("button", {
1151
- onClick: () => loginCode(),
1152
- "data-testid": "email-button"
1153
- }, ">"), /*#__PURE__*/external_react_default().createElement("br", null)), emailError && /*#__PURE__*/external_react_default().createElement("span", {
1154
- "data-testid": "email-error"
1155
- }, "Please enter a valid email adress")))));
1156
- };
1157
-
1158
- /* harmony default export */ const login = (LoginComponent);
1342
+ // EXTERNAL MODULE: ./src/components/login/index.js + 1 modules
1343
+ var login = __webpack_require__(711);
1159
1344
  ;// CONCATENATED MODULE: ./src/components/payment/index.module.scss
1160
1345
  // extracted by mini-css-extract-plugin
1161
- /* harmony default export */ const payment_index_module = ({"title":"title___LksVm","form":"form___v5GIx","fieldWrapper":"fieldWrapper___Eoe61"});
1346
+ /* harmony default export */ const index_module = ({"title":"title___LksVm","form":"form___v5GIx","fieldWrapper":"fieldWrapper___Eoe61"});
1162
1347
  ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/components"
1163
1348
  const components_namespaceObject = require("openstack-uicore-foundation/lib/components");
1164
1349
  ;// CONCATENATED MODULE: external "openstack-uicore-foundation/lib/utils/methods"
@@ -1201,14 +1386,14 @@ const LawPayForm = ({
1201
1386
  provider,
1202
1387
  timestamp
1203
1388
  }) => {
1204
- const [hostedFields, setHostedFields] = (0,external_react_namespaceObject.useState)(null);
1205
- const [lawPayFields, setLawPayFields] = (0,external_react_namespaceObject.useState)({
1389
+ const [hostedFields, setHostedFields] = (0,external_react_.useState)(null);
1390
+ const [lawPayFields, setLawPayFields] = (0,external_react_.useState)({
1206
1391
  exp_month: '',
1207
1392
  exp_year: '',
1208
1393
  postal_code: userProfile.postal_code || '',
1209
1394
  address1: userProfile.address1 || ''
1210
1395
  });
1211
- const [lawPayErrors, setLawPayErrors] = (0,external_react_namespaceObject.useState)({
1396
+ const [lawPayErrors, setLawPayErrors] = (0,external_react_.useState)({
1212
1397
  exp_month: '',
1213
1398
  exp_year: '',
1214
1399
  postal_code: '',
@@ -1253,7 +1438,7 @@ const LawPayForm = ({
1253
1438
  setLawPayErrors(lawpay_form_objectSpread(lawpay_form_objectSpread({}, lawPayErrors), fieldErrors));
1254
1439
  };
1255
1440
 
1256
- (0,external_react_namespaceObject.useEffect)(() => {
1441
+ (0,external_react_.useEffect)(() => {
1257
1442
  if (window.AffiniPay && !hostedFields) {
1258
1443
  setHostedFields(window.AffiniPay.HostedFields.initializeFields(hostedFieldsConfiguration, hostedFieldsCallBack));
1259
1444
  }
@@ -1556,7 +1741,7 @@ const StripeForm = ({
1556
1741
  }) => {
1557
1742
  const stripe = (0,react_stripe_js_namespaceObject.useStripe)();
1558
1743
  const elements = (0,react_stripe_js_namespaceObject.useElements)();
1559
- const [stripeErrors, setStripeErrors] = (0,external_react_namespaceObject.useState)({});
1744
+ const [stripeErrors, setStripeErrors] = (0,external_react_.useState)({});
1560
1745
  const {
1561
1746
  register,
1562
1747
  handleSubmit,
@@ -1713,7 +1898,7 @@ const stripe_component_StripeProvider = ({
1713
1898
  provider,
1714
1899
  stripeOptions
1715
1900
  }) => {
1716
- const stripePromise = (0,external_react_namespaceObject.useMemo)(() => (0,stripe_js_namespaceObject.loadStripe)(providerKey), [providerKey]);
1901
+ const stripePromise = (0,external_react_.useMemo)(() => (0,stripe_js_namespaceObject.loadStripe)(providerKey), [providerKey]);
1717
1902
  const options = {
1718
1903
  fonts: stripeOptions === null || stripeOptions === void 0 ? void 0 : stripeOptions.fonts
1719
1904
  };
@@ -1788,11 +1973,11 @@ const PaymentComponent = ({
1788
1973
  }
1789
1974
  });
1790
1975
  return /*#__PURE__*/external_react_default().createElement("div", {
1791
- className: `${payment_index_module.outerWrapper} step-wrapper`
1976
+ className: `${index_module.outerWrapper} step-wrapper`
1792
1977
  }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
1793
- className: `${payment_index_module.innerWrapper}`
1978
+ className: `${index_module.innerWrapper}`
1794
1979
  }, /*#__PURE__*/external_react_default().createElement("div", {
1795
- className: payment_index_module.title
1980
+ className: index_module.title
1796
1981
  }, /*#__PURE__*/external_react_default().createElement("span", null, "Payment")), /*#__PURE__*/external_react_default().createElement(external_react_spring_namespaceObject.animated.div, {
1797
1982
  style: payment_objectSpread({
1798
1983
  overflow: `${isActive ? '' : 'hidden'}`
@@ -1880,7 +2065,7 @@ const PersonalInfoComponent = ({
1880
2065
  }) => {
1881
2066
  var _errors$email, _errors$email2;
1882
2067
 
1883
- const [personalInfo, setPersonalInfo] = (0,external_react_namespaceObject.useState)({
2068
+ const [personalInfo, setPersonalInfo] = (0,external_react_.useState)({
1884
2069
  firstName: userProfile.given_name || (invitation ? invitation.first_name : ''),
1885
2070
  lastName: userProfile.family_name || (invitation ? invitation.last_name : ''),
1886
2071
  email: userProfile.email || '',
@@ -1890,7 +2075,7 @@ const PersonalInfoComponent = ({
1890
2075
  },
1891
2076
  promoCode: ''
1892
2077
  });
1893
- const [companyError, setCompanyError] = (0,external_react_namespaceObject.useState)(false);
2078
+ const [companyError, setCompanyError] = (0,external_react_.useState)(false);
1894
2079
  const {
1895
2080
  register,
1896
2081
  handleSubmit,
@@ -1898,7 +2083,7 @@ const PersonalInfoComponent = ({
1898
2083
  errors
1899
2084
  }
1900
2085
  } = (0,external_react_hook_form_namespaceObject.useForm)();
1901
- (0,external_react_namespaceObject.useEffect)(() => {
2086
+ (0,external_react_.useEffect)(() => {
1902
2087
  if (reservation) {
1903
2088
  setPersonalInfo({
1904
2089
  firstName: reservation.owner_first_name ? reservation.owner_first_name : personalInfo.firstName,
@@ -2101,7 +2286,7 @@ const TicketDropdownComponent = ({
2101
2286
  ticketTypes,
2102
2287
  onTicketSelect
2103
2288
  }) => {
2104
- const [active, setActive] = (0,external_react_namespaceObject.useState)(false);
2289
+ const [active, setActive] = (0,external_react_.useState)(false);
2105
2290
 
2106
2291
  const ticketSelect = ticket => {
2107
2292
  onTicketSelect(ticket);
@@ -2213,8 +2398,8 @@ const TicketTypeComponent = ({
2213
2398
  inPersonDisclaimer,
2214
2399
  showMultipleTicketTexts
2215
2400
  }) => {
2216
- const [ticket, setTicket] = (0,external_react_namespaceObject.useState)(null);
2217
- const [quantity, setQuantity] = (0,external_react_namespaceObject.useState)(1);
2401
+ const [ticket, setTicket] = (0,external_react_.useState)(null);
2402
+ const [quantity, setQuantity] = (0,external_react_.useState)(1);
2218
2403
  const minQuantity = 1;
2219
2404
  const maxQuantity = getTicketMaxQuantity(ticket);
2220
2405
  const [ref, {
@@ -2233,14 +2418,14 @@ const TicketTypeComponent = ({
2233
2418
  height: isActive ? height + 10 : 0
2234
2419
  }
2235
2420
  });
2236
- (0,external_react_namespaceObject.useEffect)(() => {
2421
+ (0,external_react_.useEffect)(() => {
2237
2422
  var _reservation$tickets;
2238
2423
 
2239
2424
  if (reservation && ((_reservation$tickets = reservation.tickets) === null || _reservation$tickets === void 0 ? void 0 : _reservation$tickets.length) > 0) {
2240
2425
  setTicket(ticketTypes.find(t => t.id === reservation.tickets[0].ticket_type_id));
2241
2426
  }
2242
2427
  }, []);
2243
- (0,external_react_namespaceObject.useEffect)(() => {
2428
+ (0,external_react_.useEffect)(() => {
2244
2429
  changeForm({
2245
2430
  ticketType: ticket,
2246
2431
  ticketQuantity: quantity
@@ -2278,6 +2463,7 @@ const TicketTypeComponent = ({
2278
2463
  className: ticket_type_index_module.promo
2279
2464
  }, "Subtotal: ", `${ticket === null || ticket === void 0 ? void 0 : ticket.currency_symbol} ${(((reservation === null || reservation === void 0 ? void 0 : reservation.raw_amount_in_cents) - (reservation === null || reservation === void 0 ? void 0 : reservation.discount_amount_in_cents)) / 100).toFixed(2)} ${ticket === null || ticket === void 0 ? void 0 : ticket.currency}`), !isActive && (reservation === null || reservation === void 0 ? void 0 : reservation.taxes_amount) > 0 && /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, reservation === null || reservation === void 0 ? void 0 : reservation.applied_taxes.map(tax => {
2280
2465
  return /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("span", {
2466
+ key: tax.id,
2281
2467
  className: ticket_type_index_module.taxes
2282
2468
  }, /*#__PURE__*/external_react_default().createElement("abbr", {
2283
2469
  title: tax.name
@@ -2440,7 +2626,7 @@ const PurchaseComplete = ({
2440
2626
  summit,
2441
2627
  supportEmail = "support@fntech.com"
2442
2628
  }) => {
2443
- (0,external_react_namespaceObject.useEffect)(() => {
2629
+ (0,external_react_.useEffect)(() => {
2444
2630
  onPurchaseComplete(checkout);
2445
2631
  }, []);
2446
2632
  const date = new Date();
@@ -2482,108 +2668,8 @@ const PurchaseComplete = ({
2482
2668
  };
2483
2669
 
2484
2670
  /* harmony default export */ const purchase_complete = (PurchaseComplete);
2485
- ;// CONCATENATED MODULE: external "react-otp-input"
2486
- const external_react_otp_input_namespaceObject = require("react-otp-input");
2487
- var external_react_otp_input_default = /*#__PURE__*/__webpack_require__.n(external_react_otp_input_namespaceObject);
2488
- ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.module.scss
2489
- // extracted by mini-css-extract-plugin
2490
- /* harmony default export */ const login_passwordless_index_module = ({"passwordlessWrapper":"passwordlessWrapper___BRQ_s","innerWrapper":"innerWrapper___nRLDi","logo":"logo___qNVrv","digits":"digits___Vu5iy","codeInput":"codeInput___LnTZe","error":"error___wZflZ","verify":"verify___IBgMl","button":"button___nBhtQ","link":"link___f6fDT","resend":"resend___Nma1U"});
2491
- // EXTERNAL MODULE: ./src/assets/FNid_WHT_logo_rgb.svg
2492
- var FNid_WHT_logo_rgb = __webpack_require__(802);
2493
- var FNid_WHT_logo_rgb_default = /*#__PURE__*/__webpack_require__.n(FNid_WHT_logo_rgb);
2494
- ;// CONCATENATED MODULE: ./src/components/login-passwordless/index.js
2495
- /**
2496
- * Copyright 2020 OpenStack Foundation
2497
- * Licensed under the Apache License, Version 2.0 (the "License");
2498
- * you may not use this file except in compliance with the License.
2499
- * You may obtain a copy of the License at
2500
- * http://www.apache.org/licenses/LICENSE-2.0
2501
- * Unless required by applicable law or agreed to in writing, software
2502
- * distributed under the License is distributed on an "AS IS" BASIS,
2503
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2504
- * See the License for the specific language governing permissions and
2505
- * limitations under the License.
2506
- **/
2507
-
2508
-
2509
-
2510
-
2511
-
2512
-
2513
- const PasswordlessLoginComponent = ({
2514
- email,
2515
- codeLength,
2516
- passwordlessLogin,
2517
- loginWithCode,
2518
- codeError,
2519
- goToLogin,
2520
- getLoginCode,
2521
- getPasswordlessCode
2522
- }) => {
2523
- const [otpCode, setOtpCode] = (0,external_react_namespaceObject.useState)('');
2524
- const [otpError, setOtpError] = (0,external_react_namespaceObject.useState)(false);
2525
-
2526
- const tryPasswordlessLogin = code => {
2527
- if (code.length === codeLength) {
2528
- setOtpError(false);
2529
- passwordlessLogin(otpCode, loginWithCode);
2530
- } else {
2531
- setOtpError(true);
2532
- }
2533
- };
2534
-
2535
- const resendCode = () => {
2536
- getLoginCode(email, getPasswordlessCode);
2537
- };
2538
-
2539
- return /*#__PURE__*/external_react_default().createElement("div", {
2540
- className: `${login_passwordless_index_module.passwordlessWrapper} step-wrapper`
2541
- }, /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("div", {
2542
- className: `${login_passwordless_index_module.innerWrapper}`
2543
- }, /*#__PURE__*/external_react_default().createElement("img", {
2544
- src: (FNid_WHT_logo_rgb_default()),
2545
- alt: "FNid",
2546
- className: login_passwordless_index_module.logo
2547
- }), /*#__PURE__*/external_react_default().createElement("span", null, "We sent your single-use login code to ", /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
2548
- "data-testid": "email"
2549
- }, email), /*#__PURE__*/external_react_default().createElement("br", null), /*#__PURE__*/external_react_default().createElement("span", {
2550
- className: login_passwordless_index_module.digits,
2551
- "data-testid": "code-digits"
2552
- }, "Add the ", codeLength, " digit code below")), /*#__PURE__*/external_react_default().createElement("div", {
2553
- className: login_passwordless_index_module.codeInput
2554
- }, /*#__PURE__*/external_react_default().createElement((external_react_otp_input_default()), {
2555
- value: otpCode,
2556
- onChange: code => setOtpCode(code),
2557
- numInputs: codeLength,
2558
- shouldAutoFocus: true,
2559
- hasErrored: otpError || codeError,
2560
- errorStyle: {
2561
- border: '1px solid #e5424d'
2562
- },
2563
- "data-testid": "otp-input"
2564
- })), codeError && /*#__PURE__*/external_react_default().createElement("span", {
2565
- className: login_passwordless_index_module.error,
2566
- "data-testid": "error"
2567
- }, "The code you entered it's incorrect. ", /*#__PURE__*/external_react_default().createElement("br", null), " Please try again."), /*#__PURE__*/external_react_default().createElement("div", {
2568
- className: login_passwordless_index_module.verify
2569
- }, /*#__PURE__*/external_react_default().createElement("div", {
2570
- className: `${login_passwordless_index_module.button} button`,
2571
- onClick: () => tryPasswordlessLogin(otpCode),
2572
- "data-testid": "verify"
2573
- }, "Verify Email"), /*#__PURE__*/external_react_default().createElement("b", null, "or go back and ", /*#__PURE__*/external_react_default().createElement("span", {
2574
- className: login_passwordless_index_module.link,
2575
- onClick: () => goToLogin(),
2576
- "data-testid": "go-back"
2577
- }, "try another way")))), /*#__PURE__*/external_react_default().createElement("div", {
2578
- className: login_passwordless_index_module.resend
2579
- }, "Didn\u2019t receive it? Check your spam/junk folder, or ", /*#__PURE__*/external_react_default().createElement("span", {
2580
- className: login_passwordless_index_module.link,
2581
- onClick: () => resendCode(),
2582
- "data-testid": "resend"
2583
- }, "resend email"), " now.")));
2584
- };
2585
-
2586
- /* harmony default export */ const login_passwordless = (PasswordlessLoginComponent);
2671
+ // EXTERNAL MODULE: ./src/components/login-passwordless/index.js + 2 modules
2672
+ var login_passwordless = __webpack_require__(168);
2587
2673
  ;// CONCATENATED MODULE: ./src/components/ticket-owned/index.module.scss
2588
2674
  // extracted by mini-css-extract-plugin
2589
2675
  /* harmony default export */ const ticket_owned_index_module = ({"ticketOwnedWrapper":"ticketOwnedWrapper___nhkDY","alert":"alert___c49oP"});
@@ -2607,17 +2693,19 @@ const TicketOwnedComponent = ({
2607
2693
  ownedTickets,
2608
2694
  ticketTypes
2609
2695
  }) => {
2610
- const ownedTicketsString = (0,external_react_namespaceObject.useMemo)(() => ownedTickets.reduce((acc, ownedTicket) => {
2696
+ const ownedTicketsString = (0,external_react_.useMemo)(() => ownedTickets.reduce((acc, ownedTicket, index) => {
2611
2697
  const ticketType = ticketTypes.find(type => type.id === ownedTicket.type_id);
2612
2698
  if (!ticketType) return acc;
2613
- return `${acc}${acc ? ', ' : ''}${ownedTicket.qty} ${ticketType.name}${!ticketType.name.toLowerCase().endsWith('ticket') ? ' ticket' : ''}${ownedTicket.qty > 1 ? 's' : ''}`;
2699
+ return `
2700
+ ${acc}${acc ? `${index + 1 === ownedTickets.length ? ' and ' : ', '}` : ''}
2701
+ ${ownedTicket.qty} ${ticketType.name}${index === 0 ? !ticketType.name.toLowerCase().endsWith('ticket') ? ' ticket' : '' : ticketType.name.toLowerCase().endsWith('ticket') ? '' : ''}${ownedTicket.qty > 1 ? 's' : ''}`;
2614
2702
  }, ''), [ownedTickets, ticketTypes]);
2615
2703
  return /*#__PURE__*/external_react_default().createElement("div", {
2616
2704
  className: ticket_owned_index_module.ticketOwnedWrapper
2617
2705
  }, /*#__PURE__*/external_react_default().createElement("div", {
2618
2706
  className: `${ticket_owned_index_module.alert} alert alert-warning`,
2619
2707
  role: "alert"
2620
- }, "You have already ordered ", ownedTicketsString, ". If you would like to order more tickets, please do so below."));
2708
+ }, "You have already ordered ", ownedTicketsString, ". If you would like to order more, please do so below."));
2621
2709
  };
2622
2710
 
2623
2711
  /* harmony default export */ const ticket_owned = (TicketOwnedComponent);
@@ -2826,7 +2914,7 @@ const RegistrationLite = _ref => {
2826
2914
  } = _ref,
2827
2915
  rest = registration_lite_objectWithoutProperties(_ref, registration_lite_excluded);
2828
2916
 
2829
- const [registrationForm, setRegistrationForm] = (0,external_react_namespaceObject.useState)({
2917
+ const [registrationForm, setRegistrationForm] = (0,external_react_.useState)({
2830
2918
  values: {
2831
2919
  ticketType: null,
2832
2920
  ticketQuantity: 1,
@@ -2835,7 +2923,7 @@ const RegistrationLite = _ref => {
2835
2923
  },
2836
2924
  errors: []
2837
2925
  });
2838
- const [ticketTaxesError, setTicketTaxesError] = (0,external_react_namespaceObject.useState)(false);
2926
+ const [ticketTaxesError, setTicketTaxesError] = (0,external_react_.useState)(false);
2839
2927
  const {
2840
2928
  values: formValues,
2841
2929
  errors: formErrors
@@ -2853,7 +2941,7 @@ const RegistrationLite = _ref => {
2853
2941
  publicKey,
2854
2942
  provider
2855
2943
  } = getCurrentProvider(summitData);
2856
- (0,external_react_namespaceObject.useEffect)(() => {
2944
+ (0,external_react_.useEffect)(() => {
2857
2945
  loadSession(registration_lite_objectSpread(registration_lite_objectSpread({}, rest), {}, {
2858
2946
  summitData,
2859
2947
  profileData
@@ -2863,17 +2951,17 @@ const RegistrationLite = _ref => {
2863
2951
  changeStep(0);
2864
2952
  }
2865
2953
  }, [profileData]);
2866
- (0,external_react_namespaceObject.useEffect)(() => {
2954
+ (0,external_react_.useEffect)(() => {
2867
2955
  if (summitData && profileData) {
2868
2956
  handleGetTicketTypesAndTaxes(summitData.id);
2869
2957
  }
2870
2958
  }, [summitData, profileData]);
2871
- (0,external_react_namespaceObject.useEffect)(() => {
2959
+ (0,external_react_.useEffect)(() => {
2872
2960
  if (summitData && profileData) {
2873
2961
  getMyInvitation(summitData.id).catch(e => console.log(e));
2874
2962
  }
2875
2963
  }, [summitData, profileData]);
2876
- (0,external_react_namespaceObject.useEffect)(() => {
2964
+ (0,external_react_.useEffect)(() => {
2877
2965
  if (step === 1 && formValues !== null && formValues !== void 0 && formValues.ticketType && formValues !== null && formValues !== void 0 && formValues.personalInformation) {
2878
2966
  reserveTicket({
2879
2967
  provider,
@@ -2899,7 +2987,7 @@ const RegistrationLite = _ref => {
2899
2987
  changeStep(0);
2900
2988
  }
2901
2989
  }, [formValues]);
2902
- (0,external_react_namespaceObject.useEffect)(() => {
2990
+ (0,external_react_.useEffect)(() => {
2903
2991
  setFormErrors([]);
2904
2992
  }, [step]);
2905
2993
  const [ref, {
@@ -2968,15 +3056,15 @@ const RegistrationLite = _ref => {
2968
3056
  noAllowedTicketsMessage: noAllowedTicketsMessage
2969
3057
  }), !ticketTaxesError && /*#__PURE__*/external_react_default().createElement("div", {
2970
3058
  className: general_module.stepsWrapper
2971
- }, !profileData && !passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login, {
2972
- options: loginOptions,
3059
+ }, !profileData && !passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login["default"], {
3060
+ loginOptions: loginOptions,
2973
3061
  allowsNativeAuth: allowsNativeAuth,
2974
3062
  allowsOtpAuth: allowsOtpAuth,
2975
3063
  login: provider => rest.authUser(provider),
2976
3064
  getLoginCode: getLoginCode,
2977
3065
  getPasswordlessCode: getPasswordlessCode,
2978
3066
  initialEmailValue: loginInitialEmailInputValue
2979
- }), !profileData && passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login_passwordless, {
3067
+ }), !profileData && passwordlessCodeSent && /*#__PURE__*/external_react_default().createElement(login_passwordless["default"], {
2980
3068
  codeLength: passwordlessCode,
2981
3069
  email: passwordlessEmail,
2982
3070
  passwordlessLogin: passwordlessLogin,
@@ -3124,6 +3212,8 @@ class RegistrationLiteWidget extends (external_react_default()).PureComponent {
3124
3212
 
3125
3213
  }
3126
3214
 
3215
+
3216
+
3127
3217
  /* harmony default export */ const summit_registration_lite = (RegistrationLiteWidget);
3128
3218
  })();
3129
3219
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "summit-registration-lite",
3
- "version": "3.0.29",
3
+ "version": "4.0.0",
4
4
  "description": "Summit Registration Lite",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -48,6 +48,7 @@
48
48
  "dotenv-webpack": "^7.1.0",
49
49
  "dropzone": "^6.0.0-beta.2",
50
50
  "file-loader": "^6.2.0",
51
+ "final-form": "^4.20.9",
51
52
  "font-awesome": "4.7.0",
52
53
  "history": "^4.7.2",
53
54
  "html-webpack-plugin": "^5.5.0",
@@ -70,6 +71,7 @@
70
71
  "react-dnd-html5-backend": "^16.0.1",
71
72
  "react-dom": "^16.4.1",
72
73
  "react-dropzone": "^14.2.1",
74
+ "react-final-form": "^6.5.9",
73
75
  "react-redux": "^7.2.0",
74
76
  "react-router": "^4.3.1",
75
77
  "react-router-dom": "^4.3.1",