powr-sdk-web 5.7.1 → 5.8.1
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/auth/index.js +147 -35
- package/dist/components/PhoneInput.js +159 -0
- package/dist/index.js +106 -0
- package/dist/onboarding/AddPhonePanel.js +213 -119
- package/dist/onboarding/PowrOnboardingProvider.js +36 -2
- package/dist/onboarding/SessionExpiredPanel.js +71 -0
- package/dist/onboarding/steps/addPhoneStep.js +15 -4
- package/dist/onboarding/steps/profileNameStep.js +3 -2
- package/dist/onboarding/utils.js +203 -25
- package/dist/powrVerify/index.js +73 -72
- package/dist/utils/jwt.js +33 -0
- package/dist/utils/phone.js +151 -0
- package/dist/utils/sessionMessages.js +26 -0
- package/package.json +44 -43
package/dist/auth/index.js
CHANGED
|
@@ -8,7 +8,9 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
8
8
|
var _auth = require("../utils/auth");
|
|
9
9
|
var _firebase = require("../utils/firebase");
|
|
10
10
|
var _AddPhonePanel = _interopRequireDefault(require("../onboarding/AddPhonePanel"));
|
|
11
|
+
var _PhoneInput = _interopRequireDefault(require("../components/PhoneInput"));
|
|
11
12
|
var _utils = require("../onboarding/utils");
|
|
13
|
+
var _phone = require("../utils/phone");
|
|
12
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t7 in e) "default" !== _t7 && {}.hasOwnProperty.call(e, _t7) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t7)) && (i.get || i.set) ? o(f, _t7, i) : f[_t7] = e[_t7]); return f; })(e, t); }
|
|
14
16
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
@@ -43,7 +45,17 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
43
45
|
_ref$completeProfileO = _ref.completeProfileOnLogin,
|
|
44
46
|
completeProfileOnLogin = _ref$completeProfileO === void 0 ? false : _ref$completeProfileO,
|
|
45
47
|
_ref$requireTerms = _ref.requireTerms,
|
|
46
|
-
requireTerms = _ref$requireTerms === void 0 ? false : _ref$requireTerms
|
|
48
|
+
requireTerms = _ref$requireTerms === void 0 ? false : _ref$requireTerms,
|
|
49
|
+
_ref$defaultCountry = _ref.defaultCountry,
|
|
50
|
+
defaultCountry = _ref$defaultCountry === void 0 ? _phone.DEFAULT_COUNTRY : _ref$defaultCountry,
|
|
51
|
+
_ref$defaultCountryCo = _ref.defaultCountryCode,
|
|
52
|
+
defaultCountryCode = _ref$defaultCountryCo === void 0 ? _phone.DEFAULT_COUNTRY_CODE : _ref$defaultCountryCo,
|
|
53
|
+
_ref$international = _ref.international,
|
|
54
|
+
international = _ref$international === void 0 ? false : _ref$international,
|
|
55
|
+
_ref$allowedCountries = _ref.allowedCountries,
|
|
56
|
+
allowedCountries = _ref$allowedCountries === void 0 ? null : _ref$allowedCountries,
|
|
57
|
+
onSessionExpired = _ref.onSessionExpired;
|
|
58
|
+
var resolvedDefaultCountry = (0, _phone.resolveCountry)(defaultCountry, defaultCountryCode);
|
|
47
59
|
var _useState = (0, _react.useState)(function () {
|
|
48
60
|
switch (mode) {
|
|
49
61
|
case 'login':
|
|
@@ -95,13 +107,6 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
95
107
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
96
108
|
showTooltip = _useState16[0],
|
|
97
109
|
setShowTooltip = _useState16[1];
|
|
98
|
-
var formatPhone = function formatPhone(phone) {
|
|
99
|
-
var clean = phone.replace(/\D/g, '');
|
|
100
|
-
if (!clean.startsWith('91')) {
|
|
101
|
-
clean = '91' + clean;
|
|
102
|
-
}
|
|
103
|
-
return '+' + clean;
|
|
104
|
-
};
|
|
105
110
|
var _useState17 = (0, _react.useState)(false),
|
|
106
111
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
107
112
|
showOtpOption = _useState18[0],
|
|
@@ -146,6 +151,18 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
146
151
|
_useState38 = _slicedToArray(_useState37, 2),
|
|
147
152
|
termsAccepted = _useState38[0],
|
|
148
153
|
setTermsAccepted = _useState38[1];
|
|
154
|
+
var _useState39 = (0, _react.useState)(resolvedDefaultCountry),
|
|
155
|
+
_useState40 = _slicedToArray(_useState39, 2),
|
|
156
|
+
phoneCountry = _useState40[0],
|
|
157
|
+
setPhoneCountry = _useState40[1];
|
|
158
|
+
var _useState41 = (0, _react.useState)(false),
|
|
159
|
+
_useState42 = _slicedToArray(_useState41, 2),
|
|
160
|
+
registerPhoneValid = _useState42[0],
|
|
161
|
+
setRegisterPhoneValid = _useState42[1];
|
|
162
|
+
var _useState43 = (0, _react.useState)(''),
|
|
163
|
+
_useState44 = _slicedToArray(_useState43, 2),
|
|
164
|
+
registerPhoneE164 = _useState44[0],
|
|
165
|
+
setRegisterPhoneE164 = _useState44[1];
|
|
149
166
|
var shouldShowToggle = mode === 'toggle';
|
|
150
167
|
var handleInputChange = /*#__PURE__*/function () {
|
|
151
168
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
@@ -172,8 +189,45 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
172
189
|
return _ref2.apply(this, arguments);
|
|
173
190
|
};
|
|
174
191
|
}();
|
|
192
|
+
var handlePhoneOrEmailChange = function handlePhoneOrEmailChange(e) {
|
|
193
|
+
setFormData(function (prev) {
|
|
194
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
195
|
+
phoneOrEmail: e.target.value
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
setError('');
|
|
199
|
+
if (fieldErrors.phoneOrEmail) {
|
|
200
|
+
setFieldErrors(function (prev) {
|
|
201
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
202
|
+
phoneOrEmail: ''
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
var handleRegisterPhoneChange = function handleRegisterPhoneChange(_ref3) {
|
|
208
|
+
var country = _ref3.country,
|
|
209
|
+
localNumber = _ref3.localNumber,
|
|
210
|
+
e164 = _ref3.e164,
|
|
211
|
+
isValid = _ref3.isValid;
|
|
212
|
+
setPhoneCountry(country);
|
|
213
|
+
setRegisterPhoneE164(e164);
|
|
214
|
+
setRegisterPhoneValid(isValid);
|
|
215
|
+
setFormData(function (prev) {
|
|
216
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
217
|
+
phoneOrEmail: localNumber
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
setError('');
|
|
221
|
+
if (fieldErrors.phoneOrEmail) {
|
|
222
|
+
setFieldErrors(function (prev) {
|
|
223
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
224
|
+
phoneOrEmail: ''
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
};
|
|
175
229
|
var sendFirebaseOtp = /*#__PURE__*/function () {
|
|
176
|
-
var
|
|
230
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(phone) {
|
|
177
231
|
var appVerifier, confirmationResult, _t, _t2;
|
|
178
232
|
return _regenerator().w(function (_context2) {
|
|
179
233
|
while (1) switch (_context2.p = _context2.n) {
|
|
@@ -268,11 +322,11 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
268
322
|
}, _callee2, null, [[2, 4], [1, 7, 8, 9]]);
|
|
269
323
|
}));
|
|
270
324
|
return function sendFirebaseOtp(_x2) {
|
|
271
|
-
return
|
|
325
|
+
return _ref4.apply(this, arguments);
|
|
272
326
|
};
|
|
273
327
|
}();
|
|
274
328
|
var verifyFirebaseOtp = /*#__PURE__*/function () {
|
|
275
|
-
var
|
|
329
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
276
330
|
var result, _t3, _t4;
|
|
277
331
|
return _regenerator().w(function (_context3) {
|
|
278
332
|
while (1) switch (_context3.p = _context3.n) {
|
|
@@ -331,7 +385,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
331
385
|
}, _callee3, null, [[4, 6], [1, 8, 9, 10]]);
|
|
332
386
|
}));
|
|
333
387
|
return function verifyFirebaseOtp() {
|
|
334
|
-
return
|
|
388
|
+
return _ref5.apply(this, arguments);
|
|
335
389
|
};
|
|
336
390
|
}();
|
|
337
391
|
|
|
@@ -340,17 +394,14 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
340
394
|
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
341
395
|
return emailRegex.test(email);
|
|
342
396
|
};
|
|
343
|
-
var isValidPhone = function isValidPhone(phone) {
|
|
344
|
-
var cleanPhone = phone.replace(/\D/g, '');
|
|
345
|
-
return cleanPhone.length >= 7 && cleanPhone.length <= 15;
|
|
346
|
-
};
|
|
347
397
|
var handleSubmit = /*#__PURE__*/function () {
|
|
348
|
-
var
|
|
398
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(e) {
|
|
349
399
|
var skipPhoneValidation,
|
|
350
400
|
errors,
|
|
351
401
|
value,
|
|
352
402
|
isEmail,
|
|
353
403
|
endpoint,
|
|
404
|
+
normalizedPhone,
|
|
354
405
|
payload,
|
|
355
406
|
_yield$apiCall,
|
|
356
407
|
data,
|
|
@@ -374,16 +425,16 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
374
425
|
}
|
|
375
426
|
|
|
376
427
|
// Registration: Only allow phone numbers
|
|
377
|
-
if (!isLogin && !
|
|
378
|
-
errors.phoneOrEmail = 'Please enter a valid phone number
|
|
428
|
+
if (!isLogin && !registerPhoneValid) {
|
|
429
|
+
errors.phoneOrEmail = international ? 'Please enter a valid phone number' : 'Please enter a valid mobile number';
|
|
379
430
|
}
|
|
380
431
|
|
|
381
432
|
// Login: Allow both phone and email
|
|
382
433
|
if (isLogin) {
|
|
383
434
|
if (isEmail && !isValidEmail(value)) {
|
|
384
435
|
errors.phoneOrEmail = 'Please enter a valid email address';
|
|
385
|
-
} else if (!isEmail && !isValidPhone(value)) {
|
|
386
|
-
errors.phoneOrEmail = 'Please enter a valid phone number';
|
|
436
|
+
} else if (!isEmail && !(0, _phone.isValidPhone)(value, resolvedDefaultCountry)) {
|
|
437
|
+
errors.phoneOrEmail = 'Please enter a valid phone number (include country code, e.g. +1…) or email';
|
|
387
438
|
}
|
|
388
439
|
}
|
|
389
440
|
if (!formData.password.trim()) {
|
|
@@ -413,12 +464,13 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
413
464
|
case 1:
|
|
414
465
|
_context4.p = 1;
|
|
415
466
|
endpoint = isLogin ? "/auth/login" : "/auth/register";
|
|
467
|
+
normalizedPhone = isLogin ? isEmail ? value : (0, _phone.normalizePhone)(value, resolvedDefaultCountry) : registerPhoneE164 || (0, _phone.normalizePhone)(value, phoneCountry);
|
|
416
468
|
payload = isLogin ? {
|
|
417
|
-
phoneOrEmail:
|
|
469
|
+
phoneOrEmail: isEmail ? value : normalizedPhone,
|
|
418
470
|
password: formData.password
|
|
419
471
|
} : {
|
|
420
472
|
fullName: formData.fullName,
|
|
421
|
-
phoneOrEmail:
|
|
473
|
+
phoneOrEmail: normalizedPhone,
|
|
422
474
|
password: formData.password
|
|
423
475
|
};
|
|
424
476
|
_context4.n = 2;
|
|
@@ -445,7 +497,15 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
445
497
|
}
|
|
446
498
|
setPendingAuth({
|
|
447
499
|
user: data.user,
|
|
448
|
-
token: data.token
|
|
500
|
+
token: data.token,
|
|
501
|
+
refreshToken: data.refreshToken,
|
|
502
|
+
onTokenRefreshed: function onTokenRefreshed(newToken) {
|
|
503
|
+
setPendingAuth(function (prev) {
|
|
504
|
+
return prev ? _objectSpread(_objectSpread({}, prev), {}, {
|
|
505
|
+
token: newToken
|
|
506
|
+
}) : prev;
|
|
507
|
+
});
|
|
508
|
+
}
|
|
449
509
|
});
|
|
450
510
|
setAuthView('add-phone');
|
|
451
511
|
setLoading(false);
|
|
@@ -504,7 +564,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
504
564
|
}, _callee4, null, [[1, 8, 9, 10]]);
|
|
505
565
|
}));
|
|
506
566
|
return function handleSubmit(_x3) {
|
|
507
|
-
return
|
|
567
|
+
return _ref6.apply(this, arguments);
|
|
508
568
|
};
|
|
509
569
|
}();
|
|
510
570
|
var toggleMode = function toggleMode() {
|
|
@@ -522,6 +582,9 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
522
582
|
setAuthView('form');
|
|
523
583
|
setPendingAuth(null);
|
|
524
584
|
setTermsAccepted(false);
|
|
585
|
+
setPhoneCountry(resolvedDefaultCountry);
|
|
586
|
+
setRegisterPhoneValid(false);
|
|
587
|
+
setRegisterPhoneE164('');
|
|
525
588
|
setFormData({
|
|
526
589
|
phoneOrEmail: '',
|
|
527
590
|
password: '',
|
|
@@ -529,12 +592,14 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
529
592
|
fullName: ''
|
|
530
593
|
});
|
|
531
594
|
};
|
|
532
|
-
var handleAddPhoneComplete = function handleAddPhoneComplete(updatedUser) {
|
|
595
|
+
var handleAddPhoneComplete = function handleAddPhoneComplete(updatedUser, sessionToken) {
|
|
533
596
|
if (!pendingAuth) return;
|
|
597
|
+
var token = sessionToken || pendingAuth.token;
|
|
534
598
|
var payload = {
|
|
535
599
|
success: true,
|
|
536
600
|
user: updatedUser,
|
|
537
|
-
token:
|
|
601
|
+
token: token,
|
|
602
|
+
refreshToken: pendingAuth.refreshToken
|
|
538
603
|
};
|
|
539
604
|
setAuthView('form');
|
|
540
605
|
setPendingAuth(null);
|
|
@@ -548,8 +613,19 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
548
613
|
setError('');
|
|
549
614
|
setSuccess('');
|
|
550
615
|
};
|
|
616
|
+
var handleAddPhoneSessionExpired = function handleAddPhoneSessionExpired() {
|
|
617
|
+
setAuthView('form');
|
|
618
|
+
setPendingAuth(null);
|
|
619
|
+
setError('');
|
|
620
|
+
setSuccess('');
|
|
621
|
+
if (typeof onSessionExpired === 'function') {
|
|
622
|
+
onSessionExpired();
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
setError('Your session timed out. Sign in again to add your phone number.');
|
|
626
|
+
};
|
|
551
627
|
var handleGetOtp = /*#__PURE__*/function () {
|
|
552
|
-
var
|
|
628
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
|
|
553
629
|
var _yield$apiCall2, data, ok, _t6;
|
|
554
630
|
return _regenerator().w(function (_context5) {
|
|
555
631
|
while (1) switch (_context5.p = _context5.n) {
|
|
@@ -601,7 +677,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
601
677
|
}, _callee5, null, [[2, 4, 5, 6]]);
|
|
602
678
|
}));
|
|
603
679
|
return function handleGetOtp() {
|
|
604
|
-
return
|
|
680
|
+
return _ref7.apply(this, arguments);
|
|
605
681
|
};
|
|
606
682
|
}();
|
|
607
683
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -639,7 +715,13 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
639
715
|
appName: appName,
|
|
640
716
|
onComplete: handleAddPhoneComplete,
|
|
641
717
|
onBack: handleAddPhoneBack,
|
|
642
|
-
|
|
718
|
+
onSessionExpired: handleAddPhoneSessionExpired,
|
|
719
|
+
refreshToken: pendingAuth.refreshToken,
|
|
720
|
+
requirePhoneVerification: requirePhoneVerification,
|
|
721
|
+
defaultCountry: resolvedDefaultCountry,
|
|
722
|
+
defaultCountryCode: defaultCountryCode,
|
|
723
|
+
international: international,
|
|
724
|
+
allowedCountries: allowedCountries
|
|
643
725
|
}) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("form", {
|
|
644
726
|
onSubmit: handleSubmit,
|
|
645
727
|
style: styles.form
|
|
@@ -664,23 +746,31 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
664
746
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
665
747
|
htmlFor: "phoneOrEmail",
|
|
666
748
|
style: styles.label
|
|
667
|
-
}, isLogin ? 'Phone or Email' : 'Phone Number'), /*#__PURE__*/_react["default"].createElement("
|
|
749
|
+
}, isLogin ? 'Phone or Email' : 'Phone Number'), !isLogin ? /*#__PURE__*/_react["default"].createElement(_PhoneInput["default"], {
|
|
750
|
+
value: formData.phoneOrEmail,
|
|
751
|
+
country: phoneCountry,
|
|
752
|
+
onChange: handleRegisterPhoneChange,
|
|
753
|
+
international: international,
|
|
754
|
+
allowedCountries: allowedCountries,
|
|
755
|
+
defaultCountry: resolvedDefaultCountry,
|
|
756
|
+
inputStyle: _objectSpread({}, fieldErrors.phoneOrEmail ? styles.inputError : {})
|
|
757
|
+
}) : /*#__PURE__*/_react["default"].createElement("input", {
|
|
668
758
|
type: "text",
|
|
669
759
|
id: "phoneOrEmail",
|
|
670
760
|
name: "phoneOrEmail",
|
|
671
761
|
value: formData.phoneOrEmail,
|
|
672
|
-
onChange:
|
|
762
|
+
onChange: handlePhoneOrEmailChange,
|
|
673
763
|
style: _objectSpread(_objectSpread({}, styles.input), fieldErrors.phoneOrEmail ? styles.inputError : {}),
|
|
674
|
-
placeholder:
|
|
764
|
+
placeholder: "Phone (+country code) or email",
|
|
675
765
|
required: true
|
|
676
766
|
}), fieldErrors.phoneOrEmail && /*#__PURE__*/_react["default"].createElement("div", {
|
|
677
767
|
style: styles.fieldError
|
|
678
768
|
}, fieldErrors.phoneOrEmail), !isLogin && requirePhoneVerification && /*#__PURE__*/_react["default"].createElement("div", {
|
|
679
769
|
style: styles.helpText
|
|
680
|
-
}, "Registration requires phone verification for security"), !isLogin && requirePhoneVerification &&
|
|
770
|
+
}, "Registration requires phone verification for security"), !isLogin && requirePhoneVerification && registerPhoneValid && !isPhoneVerified && /*#__PURE__*/_react["default"].createElement("button", {
|
|
681
771
|
type: "button",
|
|
682
772
|
onClick: function onClick() {
|
|
683
|
-
return sendFirebaseOtp(
|
|
773
|
+
return sendFirebaseOtp((0, _phone.formatPhoneForSms)(formData.phoneOrEmail, phoneCountry));
|
|
684
774
|
},
|
|
685
775
|
style: _objectSpread(_objectSpread({}, styles.otpButton), {}, {
|
|
686
776
|
marginTop: '8px'
|
|
@@ -964,6 +1054,28 @@ var styles = {
|
|
|
964
1054
|
outline: 'none',
|
|
965
1055
|
height: '48px'
|
|
966
1056
|
},
|
|
1057
|
+
phoneRow: {
|
|
1058
|
+
display: 'flex',
|
|
1059
|
+
gap: '8px',
|
|
1060
|
+
alignItems: 'stretch',
|
|
1061
|
+
width: '100%'
|
|
1062
|
+
},
|
|
1063
|
+
phonePrefix: {
|
|
1064
|
+
display: 'flex',
|
|
1065
|
+
alignItems: 'center',
|
|
1066
|
+
padding: '0 14px',
|
|
1067
|
+
background: '#fff7ed',
|
|
1068
|
+
color: '#7c2d12',
|
|
1069
|
+
border: '2px solid #ffedd5',
|
|
1070
|
+
borderRadius: '8px',
|
|
1071
|
+
fontWeight: '700',
|
|
1072
|
+
fontSize: '16px',
|
|
1073
|
+
whiteSpace: 'nowrap'
|
|
1074
|
+
},
|
|
1075
|
+
phoneInput: {
|
|
1076
|
+
flex: 1,
|
|
1077
|
+
minWidth: 0
|
|
1078
|
+
},
|
|
967
1079
|
inputFocus: {
|
|
968
1080
|
borderColor: '#667eea',
|
|
969
1081
|
boxShadow: '0 0 0 3px rgba(102, 126, 234, 0.1)'
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _phone = require("../utils/phone");
|
|
10
|
+
var _libphonenumberJs = require("libphonenumber-js");
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
16
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
17
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
18
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
19
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
20
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
21
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
22
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
23
|
+
var PhoneInput = function PhoneInput(_ref) {
|
|
24
|
+
var _ref$value = _ref.value,
|
|
25
|
+
value = _ref$value === void 0 ? '' : _ref$value,
|
|
26
|
+
countryProp = _ref.country,
|
|
27
|
+
onChange = _ref.onChange,
|
|
28
|
+
onCountryChange = _ref.onCountryChange,
|
|
29
|
+
_ref$international = _ref.international,
|
|
30
|
+
international = _ref$international === void 0 ? false : _ref$international,
|
|
31
|
+
_ref$allowedCountries = _ref.allowedCountries,
|
|
32
|
+
allowedCountries = _ref$allowedCountries === void 0 ? null : _ref$allowedCountries,
|
|
33
|
+
defaultCountry = _ref.defaultCountry,
|
|
34
|
+
defaultCountryCode = _ref.defaultCountryCode,
|
|
35
|
+
_ref$disabled = _ref.disabled,
|
|
36
|
+
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
37
|
+
_ref$placeholder = _ref.placeholder,
|
|
38
|
+
placeholder = _ref$placeholder === void 0 ? 'Phone number' : _ref$placeholder,
|
|
39
|
+
_ref$inputStyle = _ref.inputStyle,
|
|
40
|
+
inputStyle = _ref$inputStyle === void 0 ? {} : _ref$inputStyle,
|
|
41
|
+
_ref$selectStyle = _ref.selectStyle,
|
|
42
|
+
selectStyle = _ref$selectStyle === void 0 ? {} : _ref$selectStyle,
|
|
43
|
+
_ref$rowStyle = _ref.rowStyle,
|
|
44
|
+
rowStyle = _ref$rowStyle === void 0 ? {} : _ref$rowStyle;
|
|
45
|
+
var initialCountry = (0, _phone.resolveCountry)(defaultCountry, defaultCountryCode);
|
|
46
|
+
var _useState = (0, _react.useState)(countryProp || initialCountry),
|
|
47
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
48
|
+
country = _useState2[0],
|
|
49
|
+
setCountry = _useState2[1];
|
|
50
|
+
var _useState3 = (0, _react.useState)(value),
|
|
51
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
52
|
+
localNumber = _useState4[0],
|
|
53
|
+
setLocalNumber = _useState4[1];
|
|
54
|
+
var countryOptions = (0, _react.useMemo)(function () {
|
|
55
|
+
return (0, _phone.getCountryOptions)(allowedCountries);
|
|
56
|
+
}, [allowedCountries]);
|
|
57
|
+
(0, _react.useEffect)(function () {
|
|
58
|
+
if (countryProp && countryProp !== country) {
|
|
59
|
+
setCountry(countryProp);
|
|
60
|
+
}
|
|
61
|
+
}, [countryProp]);
|
|
62
|
+
(0, _react.useEffect)(function () {
|
|
63
|
+
if (value !== localNumber) {
|
|
64
|
+
setLocalNumber(value);
|
|
65
|
+
}
|
|
66
|
+
}, [value]);
|
|
67
|
+
var callingCode = (0, _libphonenumberJs.getCountryCallingCode)(country);
|
|
68
|
+
var emitChange = function emitChange(nextCountry, nextLocal) {
|
|
69
|
+
var e164 = (0, _phone.buildPhoneFromParts)(nextLocal, nextCountry);
|
|
70
|
+
var valid = (0, _phone.isValidPhone)(nextLocal, nextCountry) || (0, _phone.isValidPhone)(e164, nextCountry);
|
|
71
|
+
if (typeof onChange === 'function') {
|
|
72
|
+
onChange({
|
|
73
|
+
country: nextCountry,
|
|
74
|
+
localNumber: nextLocal,
|
|
75
|
+
e164: e164,
|
|
76
|
+
isValid: valid,
|
|
77
|
+
callingCode: (0, _libphonenumberJs.getCountryCallingCode)(nextCountry)
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
var handleCountryChange = function handleCountryChange(e) {
|
|
82
|
+
var nextCountry = e.target.value;
|
|
83
|
+
setCountry(nextCountry);
|
|
84
|
+
if (typeof onCountryChange === 'function') onCountryChange(nextCountry);
|
|
85
|
+
emitChange(nextCountry, localNumber);
|
|
86
|
+
};
|
|
87
|
+
var handleLocalChange = function handleLocalChange(e) {
|
|
88
|
+
var raw = e.target.value || '';
|
|
89
|
+
var nextLocal = international ? raw.replace(/[^\d\s-]/g, '').slice(0, 15) : raw.replace(/\D/g, '').slice(0, 15);
|
|
90
|
+
setLocalNumber(nextLocal);
|
|
91
|
+
emitChange(country, nextLocal);
|
|
92
|
+
};
|
|
93
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
94
|
+
style: _objectSpread(_objectSpread({}, styles.row), rowStyle)
|
|
95
|
+
}, international ? /*#__PURE__*/_react["default"].createElement("select", {
|
|
96
|
+
value: country,
|
|
97
|
+
onChange: handleCountryChange,
|
|
98
|
+
disabled: disabled,
|
|
99
|
+
style: _objectSpread(_objectSpread({}, styles.select), selectStyle),
|
|
100
|
+
"aria-label": "Country code"
|
|
101
|
+
}, countryOptions.map(function (opt) {
|
|
102
|
+
return /*#__PURE__*/_react["default"].createElement("option", {
|
|
103
|
+
key: opt.code,
|
|
104
|
+
value: opt.code
|
|
105
|
+
}, opt.label);
|
|
106
|
+
})) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
107
|
+
style: styles.prefix
|
|
108
|
+
}, "+", callingCode), /*#__PURE__*/_react["default"].createElement("input", {
|
|
109
|
+
type: "tel",
|
|
110
|
+
value: localNumber,
|
|
111
|
+
onChange: handleLocalChange,
|
|
112
|
+
placeholder: placeholder,
|
|
113
|
+
disabled: disabled,
|
|
114
|
+
style: _objectSpread(_objectSpread({}, styles.input), inputStyle),
|
|
115
|
+
autoComplete: "tel-national"
|
|
116
|
+
}));
|
|
117
|
+
};
|
|
118
|
+
var styles = {
|
|
119
|
+
row: {
|
|
120
|
+
display: 'flex',
|
|
121
|
+
gap: 8,
|
|
122
|
+
alignItems: 'stretch',
|
|
123
|
+
width: '100%'
|
|
124
|
+
},
|
|
125
|
+
prefix: {
|
|
126
|
+
display: 'flex',
|
|
127
|
+
alignItems: 'center',
|
|
128
|
+
padding: '0 14px',
|
|
129
|
+
background: '#fff7ed',
|
|
130
|
+
color: '#7c2d12',
|
|
131
|
+
border: '2px solid #ffedd5',
|
|
132
|
+
borderRadius: 8,
|
|
133
|
+
fontWeight: 700,
|
|
134
|
+
fontSize: 16,
|
|
135
|
+
whiteSpace: 'nowrap'
|
|
136
|
+
},
|
|
137
|
+
select: {
|
|
138
|
+
minWidth: 110,
|
|
139
|
+
maxWidth: 140,
|
|
140
|
+
padding: '10px 8px',
|
|
141
|
+
border: '2px solid #e5e7eb',
|
|
142
|
+
borderRadius: 8,
|
|
143
|
+
fontSize: 14,
|
|
144
|
+
background: '#fff',
|
|
145
|
+
boxSizing: 'border-box'
|
|
146
|
+
},
|
|
147
|
+
input: {
|
|
148
|
+
flex: 1,
|
|
149
|
+
minWidth: 0,
|
|
150
|
+
padding: '12px 14px',
|
|
151
|
+
border: '2px solid #e5e7eb',
|
|
152
|
+
borderRadius: 8,
|
|
153
|
+
fontSize: 16,
|
|
154
|
+
boxSizing: 'border-box',
|
|
155
|
+
outline: 'none',
|
|
156
|
+
height: 48
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var _default = exports["default"] = PhoneInput;
|
package/dist/index.js
CHANGED
|
@@ -9,12 +9,36 @@ Object.defineProperty(exports, "AddPhonePanel", {
|
|
|
9
9
|
return _onboarding.AddPhonePanel;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "DEFAULT_COUNTRY", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _phone.DEFAULT_COUNTRY;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "DEFAULT_COUNTRY_CODE", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _phone.DEFAULT_COUNTRY_CODE;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
12
24
|
Object.defineProperty(exports, "OnboardingShell", {
|
|
13
25
|
enumerable: true,
|
|
14
26
|
get: function get() {
|
|
15
27
|
return _onboarding.OnboardingShell;
|
|
16
28
|
}
|
|
17
29
|
});
|
|
30
|
+
Object.defineProperty(exports, "PRIORITY_COUNTRIES", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function get() {
|
|
33
|
+
return _phone.PRIORITY_COUNTRIES;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "PhoneInput", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function get() {
|
|
39
|
+
return _PhoneInput["default"];
|
|
40
|
+
}
|
|
41
|
+
});
|
|
18
42
|
Object.defineProperty(exports, "PowrBaseActivities", {
|
|
19
43
|
enumerable: true,
|
|
20
44
|
get: function get() {
|
|
@@ -141,12 +165,24 @@ Object.defineProperty(exports, "PowrTable", {
|
|
|
141
165
|
return _table["default"];
|
|
142
166
|
}
|
|
143
167
|
});
|
|
168
|
+
Object.defineProperty(exports, "SESSION_MESSAGES", {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
get: function get() {
|
|
171
|
+
return _sessionMessages.SESSION_MESSAGES;
|
|
172
|
+
}
|
|
173
|
+
});
|
|
144
174
|
Object.defineProperty(exports, "addPhoneStep", {
|
|
145
175
|
enumerable: true,
|
|
146
176
|
get: function get() {
|
|
147
177
|
return _onboarding.addPhoneStep;
|
|
148
178
|
}
|
|
149
179
|
});
|
|
180
|
+
Object.defineProperty(exports, "buildPhoneFromParts", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function get() {
|
|
183
|
+
return _phone.buildPhoneFromParts;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
150
186
|
Object.defineProperty(exports, "defineAppStep", {
|
|
151
187
|
enumerable: true,
|
|
152
188
|
get: function get() {
|
|
@@ -165,6 +201,36 @@ Object.defineProperty(exports, "evaluateSteps", {
|
|
|
165
201
|
return _onboarding.evaluateSteps;
|
|
166
202
|
}
|
|
167
203
|
});
|
|
204
|
+
Object.defineProperty(exports, "formatPhoneForSms", {
|
|
205
|
+
enumerable: true,
|
|
206
|
+
get: function get() {
|
|
207
|
+
return _phone.formatPhoneForSms;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
Object.defineProperty(exports, "getCountryOptions", {
|
|
211
|
+
enumerable: true,
|
|
212
|
+
get: function get() {
|
|
213
|
+
return _phone.getCountryOptions;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
Object.defineProperty(exports, "getFriendlyAuthError", {
|
|
217
|
+
enumerable: true,
|
|
218
|
+
get: function get() {
|
|
219
|
+
return _sessionMessages.getFriendlyAuthError;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
Object.defineProperty(exports, "getLocalPhoneNumber", {
|
|
223
|
+
enumerable: true,
|
|
224
|
+
get: function get() {
|
|
225
|
+
return _phone.getLocalPhoneNumber;
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
Object.defineProperty(exports, "getPhoneLookupVariants", {
|
|
229
|
+
enumerable: true,
|
|
230
|
+
get: function get() {
|
|
231
|
+
return _phone.getPhoneLookupVariants;
|
|
232
|
+
}
|
|
233
|
+
});
|
|
168
234
|
Object.defineProperty(exports, "getUserId", {
|
|
169
235
|
enumerable: true,
|
|
170
236
|
get: function get() {
|
|
@@ -177,6 +243,24 @@ Object.defineProperty(exports, "hasValidPhone", {
|
|
|
177
243
|
return _onboarding.hasValidPhone;
|
|
178
244
|
}
|
|
179
245
|
});
|
|
246
|
+
Object.defineProperty(exports, "isAuthSessionError", {
|
|
247
|
+
enumerable: true,
|
|
248
|
+
get: function get() {
|
|
249
|
+
return _jwt.isAuthSessionError;
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
Object.defineProperty(exports, "isJwtExpired", {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function get() {
|
|
255
|
+
return _jwt.isJwtExpired;
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
Object.defineProperty(exports, "isValidPhone", {
|
|
259
|
+
enumerable: true,
|
|
260
|
+
get: function get() {
|
|
261
|
+
return _phone.isValidPhone;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
180
264
|
Object.defineProperty(exports, "mergePowrSteps", {
|
|
181
265
|
enumerable: true,
|
|
182
266
|
get: function get() {
|
|
@@ -195,12 +279,30 @@ Object.defineProperty(exports, "needsPhone", {
|
|
|
195
279
|
return _onboarding.needsPhone;
|
|
196
280
|
}
|
|
197
281
|
});
|
|
282
|
+
Object.defineProperty(exports, "normalizePhone", {
|
|
283
|
+
enumerable: true,
|
|
284
|
+
get: function get() {
|
|
285
|
+
return _phone.normalizePhone;
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
Object.defineProperty(exports, "parsePhone", {
|
|
289
|
+
enumerable: true,
|
|
290
|
+
get: function get() {
|
|
291
|
+
return _phone.parsePhone;
|
|
292
|
+
}
|
|
293
|
+
});
|
|
198
294
|
Object.defineProperty(exports, "profileNameStep", {
|
|
199
295
|
enumerable: true,
|
|
200
296
|
get: function get() {
|
|
201
297
|
return _onboarding.profileNameStep;
|
|
202
298
|
}
|
|
203
299
|
});
|
|
300
|
+
Object.defineProperty(exports, "resolveCountry", {
|
|
301
|
+
enumerable: true,
|
|
302
|
+
get: function get() {
|
|
303
|
+
return _phone.resolveCountry;
|
|
304
|
+
}
|
|
305
|
+
});
|
|
204
306
|
var _table = _interopRequireDefault(require("./table"));
|
|
205
307
|
var _swiper = _interopRequireDefault(require("./swiper"));
|
|
206
308
|
var _reviews = _interopRequireDefault(require("./reviews"));
|
|
@@ -221,5 +323,9 @@ var _admin = _interopRequireDefault(require("./admin"));
|
|
|
221
323
|
var _tools = _interopRequireDefault(require("./tools"));
|
|
222
324
|
var _tasks = _interopRequireDefault(require("./tasks"));
|
|
223
325
|
var _powrVerify = _interopRequireDefault(require("./powrVerify"));
|
|
326
|
+
var _PhoneInput = _interopRequireDefault(require("./components/PhoneInput"));
|
|
224
327
|
var _onboarding = require("./onboarding");
|
|
328
|
+
var _phone = require("./utils/phone");
|
|
329
|
+
var _jwt = require("./utils/jwt");
|
|
330
|
+
var _sessionMessages = require("./utils/sessionMessages");
|
|
225
331
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|