powr-sdk-web 5.7.1 → 5.8.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.
- package/dist/auth/index.js +120 -32
- package/dist/components/PhoneInput.js +159 -0
- package/dist/index.js +80 -0
- package/dist/onboarding/AddPhonePanel.js +102 -79
- package/dist/onboarding/PowrOnboardingProvider.js +16 -2
- package/dist/onboarding/steps/addPhoneStep.js +5 -1
- package/dist/onboarding/steps/profileNameStep.js +3 -2
- package/dist/onboarding/utils.js +80 -8
- package/dist/powrVerify/index.js +73 -72
- package/dist/utils/phone.js +151 -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,16 @@ 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
|
+
var resolvedDefaultCountry = (0, _phone.resolveCountry)(defaultCountry, defaultCountryCode);
|
|
47
58
|
var _useState = (0, _react.useState)(function () {
|
|
48
59
|
switch (mode) {
|
|
49
60
|
case 'login':
|
|
@@ -95,13 +106,6 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
95
106
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
96
107
|
showTooltip = _useState16[0],
|
|
97
108
|
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
109
|
var _useState17 = (0, _react.useState)(false),
|
|
106
110
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
107
111
|
showOtpOption = _useState18[0],
|
|
@@ -146,6 +150,18 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
146
150
|
_useState38 = _slicedToArray(_useState37, 2),
|
|
147
151
|
termsAccepted = _useState38[0],
|
|
148
152
|
setTermsAccepted = _useState38[1];
|
|
153
|
+
var _useState39 = (0, _react.useState)(resolvedDefaultCountry),
|
|
154
|
+
_useState40 = _slicedToArray(_useState39, 2),
|
|
155
|
+
phoneCountry = _useState40[0],
|
|
156
|
+
setPhoneCountry = _useState40[1];
|
|
157
|
+
var _useState41 = (0, _react.useState)(false),
|
|
158
|
+
_useState42 = _slicedToArray(_useState41, 2),
|
|
159
|
+
registerPhoneValid = _useState42[0],
|
|
160
|
+
setRegisterPhoneValid = _useState42[1];
|
|
161
|
+
var _useState43 = (0, _react.useState)(''),
|
|
162
|
+
_useState44 = _slicedToArray(_useState43, 2),
|
|
163
|
+
registerPhoneE164 = _useState44[0],
|
|
164
|
+
setRegisterPhoneE164 = _useState44[1];
|
|
149
165
|
var shouldShowToggle = mode === 'toggle';
|
|
150
166
|
var handleInputChange = /*#__PURE__*/function () {
|
|
151
167
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
@@ -172,8 +188,45 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
172
188
|
return _ref2.apply(this, arguments);
|
|
173
189
|
};
|
|
174
190
|
}();
|
|
191
|
+
var handlePhoneOrEmailChange = function handlePhoneOrEmailChange(e) {
|
|
192
|
+
setFormData(function (prev) {
|
|
193
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
194
|
+
phoneOrEmail: e.target.value
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
setError('');
|
|
198
|
+
if (fieldErrors.phoneOrEmail) {
|
|
199
|
+
setFieldErrors(function (prev) {
|
|
200
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
201
|
+
phoneOrEmail: ''
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
var handleRegisterPhoneChange = function handleRegisterPhoneChange(_ref3) {
|
|
207
|
+
var country = _ref3.country,
|
|
208
|
+
localNumber = _ref3.localNumber,
|
|
209
|
+
e164 = _ref3.e164,
|
|
210
|
+
isValid = _ref3.isValid;
|
|
211
|
+
setPhoneCountry(country);
|
|
212
|
+
setRegisterPhoneE164(e164);
|
|
213
|
+
setRegisterPhoneValid(isValid);
|
|
214
|
+
setFormData(function (prev) {
|
|
215
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
216
|
+
phoneOrEmail: localNumber
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
setError('');
|
|
220
|
+
if (fieldErrors.phoneOrEmail) {
|
|
221
|
+
setFieldErrors(function (prev) {
|
|
222
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
223
|
+
phoneOrEmail: ''
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
};
|
|
175
228
|
var sendFirebaseOtp = /*#__PURE__*/function () {
|
|
176
|
-
var
|
|
229
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(phone) {
|
|
177
230
|
var appVerifier, confirmationResult, _t, _t2;
|
|
178
231
|
return _regenerator().w(function (_context2) {
|
|
179
232
|
while (1) switch (_context2.p = _context2.n) {
|
|
@@ -268,11 +321,11 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
268
321
|
}, _callee2, null, [[2, 4], [1, 7, 8, 9]]);
|
|
269
322
|
}));
|
|
270
323
|
return function sendFirebaseOtp(_x2) {
|
|
271
|
-
return
|
|
324
|
+
return _ref4.apply(this, arguments);
|
|
272
325
|
};
|
|
273
326
|
}();
|
|
274
327
|
var verifyFirebaseOtp = /*#__PURE__*/function () {
|
|
275
|
-
var
|
|
328
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
276
329
|
var result, _t3, _t4;
|
|
277
330
|
return _regenerator().w(function (_context3) {
|
|
278
331
|
while (1) switch (_context3.p = _context3.n) {
|
|
@@ -331,7 +384,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
331
384
|
}, _callee3, null, [[4, 6], [1, 8, 9, 10]]);
|
|
332
385
|
}));
|
|
333
386
|
return function verifyFirebaseOtp() {
|
|
334
|
-
return
|
|
387
|
+
return _ref5.apply(this, arguments);
|
|
335
388
|
};
|
|
336
389
|
}();
|
|
337
390
|
|
|
@@ -340,17 +393,14 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
340
393
|
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
341
394
|
return emailRegex.test(email);
|
|
342
395
|
};
|
|
343
|
-
var isValidPhone = function isValidPhone(phone) {
|
|
344
|
-
var cleanPhone = phone.replace(/\D/g, '');
|
|
345
|
-
return cleanPhone.length >= 7 && cleanPhone.length <= 15;
|
|
346
|
-
};
|
|
347
396
|
var handleSubmit = /*#__PURE__*/function () {
|
|
348
|
-
var
|
|
397
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(e) {
|
|
349
398
|
var skipPhoneValidation,
|
|
350
399
|
errors,
|
|
351
400
|
value,
|
|
352
401
|
isEmail,
|
|
353
402
|
endpoint,
|
|
403
|
+
normalizedPhone,
|
|
354
404
|
payload,
|
|
355
405
|
_yield$apiCall,
|
|
356
406
|
data,
|
|
@@ -374,16 +424,16 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
374
424
|
}
|
|
375
425
|
|
|
376
426
|
// Registration: Only allow phone numbers
|
|
377
|
-
if (!isLogin && !
|
|
378
|
-
errors.phoneOrEmail = 'Please enter a valid phone number
|
|
427
|
+
if (!isLogin && !registerPhoneValid) {
|
|
428
|
+
errors.phoneOrEmail = international ? 'Please enter a valid phone number' : 'Please enter a valid mobile number';
|
|
379
429
|
}
|
|
380
430
|
|
|
381
431
|
// Login: Allow both phone and email
|
|
382
432
|
if (isLogin) {
|
|
383
433
|
if (isEmail && !isValidEmail(value)) {
|
|
384
434
|
errors.phoneOrEmail = 'Please enter a valid email address';
|
|
385
|
-
} else if (!isEmail && !isValidPhone(value)) {
|
|
386
|
-
errors.phoneOrEmail = 'Please enter a valid phone number';
|
|
435
|
+
} else if (!isEmail && !(0, _phone.isValidPhone)(value, resolvedDefaultCountry)) {
|
|
436
|
+
errors.phoneOrEmail = 'Please enter a valid phone number (include country code, e.g. +1…) or email';
|
|
387
437
|
}
|
|
388
438
|
}
|
|
389
439
|
if (!formData.password.trim()) {
|
|
@@ -413,12 +463,13 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
413
463
|
case 1:
|
|
414
464
|
_context4.p = 1;
|
|
415
465
|
endpoint = isLogin ? "/auth/login" : "/auth/register";
|
|
466
|
+
normalizedPhone = isLogin ? isEmail ? value : (0, _phone.normalizePhone)(value, resolvedDefaultCountry) : registerPhoneE164 || (0, _phone.normalizePhone)(value, phoneCountry);
|
|
416
467
|
payload = isLogin ? {
|
|
417
|
-
phoneOrEmail:
|
|
468
|
+
phoneOrEmail: isEmail ? value : normalizedPhone,
|
|
418
469
|
password: formData.password
|
|
419
470
|
} : {
|
|
420
471
|
fullName: formData.fullName,
|
|
421
|
-
phoneOrEmail:
|
|
472
|
+
phoneOrEmail: normalizedPhone,
|
|
422
473
|
password: formData.password
|
|
423
474
|
};
|
|
424
475
|
_context4.n = 2;
|
|
@@ -504,7 +555,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
504
555
|
}, _callee4, null, [[1, 8, 9, 10]]);
|
|
505
556
|
}));
|
|
506
557
|
return function handleSubmit(_x3) {
|
|
507
|
-
return
|
|
558
|
+
return _ref6.apply(this, arguments);
|
|
508
559
|
};
|
|
509
560
|
}();
|
|
510
561
|
var toggleMode = function toggleMode() {
|
|
@@ -522,6 +573,9 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
522
573
|
setAuthView('form');
|
|
523
574
|
setPendingAuth(null);
|
|
524
575
|
setTermsAccepted(false);
|
|
576
|
+
setPhoneCountry(resolvedDefaultCountry);
|
|
577
|
+
setRegisterPhoneValid(false);
|
|
578
|
+
setRegisterPhoneE164('');
|
|
525
579
|
setFormData({
|
|
526
580
|
phoneOrEmail: '',
|
|
527
581
|
password: '',
|
|
@@ -549,7 +603,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
549
603
|
setSuccess('');
|
|
550
604
|
};
|
|
551
605
|
var handleGetOtp = /*#__PURE__*/function () {
|
|
552
|
-
var
|
|
606
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
|
|
553
607
|
var _yield$apiCall2, data, ok, _t6;
|
|
554
608
|
return _regenerator().w(function (_context5) {
|
|
555
609
|
while (1) switch (_context5.p = _context5.n) {
|
|
@@ -601,7 +655,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
601
655
|
}, _callee5, null, [[2, 4, 5, 6]]);
|
|
602
656
|
}));
|
|
603
657
|
return function handleGetOtp() {
|
|
604
|
-
return
|
|
658
|
+
return _ref7.apply(this, arguments);
|
|
605
659
|
};
|
|
606
660
|
}();
|
|
607
661
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -639,7 +693,11 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
639
693
|
appName: appName,
|
|
640
694
|
onComplete: handleAddPhoneComplete,
|
|
641
695
|
onBack: handleAddPhoneBack,
|
|
642
|
-
requirePhoneVerification: requirePhoneVerification
|
|
696
|
+
requirePhoneVerification: requirePhoneVerification,
|
|
697
|
+
defaultCountry: resolvedDefaultCountry,
|
|
698
|
+
defaultCountryCode: defaultCountryCode,
|
|
699
|
+
international: international,
|
|
700
|
+
allowedCountries: allowedCountries
|
|
643
701
|
}) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("form", {
|
|
644
702
|
onSubmit: handleSubmit,
|
|
645
703
|
style: styles.form
|
|
@@ -664,23 +722,31 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
664
722
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
665
723
|
htmlFor: "phoneOrEmail",
|
|
666
724
|
style: styles.label
|
|
667
|
-
}, isLogin ? 'Phone or Email' : 'Phone Number'), /*#__PURE__*/_react["default"].createElement("
|
|
725
|
+
}, isLogin ? 'Phone or Email' : 'Phone Number'), !isLogin ? /*#__PURE__*/_react["default"].createElement(_PhoneInput["default"], {
|
|
726
|
+
value: formData.phoneOrEmail,
|
|
727
|
+
country: phoneCountry,
|
|
728
|
+
onChange: handleRegisterPhoneChange,
|
|
729
|
+
international: international,
|
|
730
|
+
allowedCountries: allowedCountries,
|
|
731
|
+
defaultCountry: resolvedDefaultCountry,
|
|
732
|
+
inputStyle: _objectSpread({}, fieldErrors.phoneOrEmail ? styles.inputError : {})
|
|
733
|
+
}) : /*#__PURE__*/_react["default"].createElement("input", {
|
|
668
734
|
type: "text",
|
|
669
735
|
id: "phoneOrEmail",
|
|
670
736
|
name: "phoneOrEmail",
|
|
671
737
|
value: formData.phoneOrEmail,
|
|
672
|
-
onChange:
|
|
738
|
+
onChange: handlePhoneOrEmailChange,
|
|
673
739
|
style: _objectSpread(_objectSpread({}, styles.input), fieldErrors.phoneOrEmail ? styles.inputError : {}),
|
|
674
|
-
placeholder:
|
|
740
|
+
placeholder: "Phone (+country code) or email",
|
|
675
741
|
required: true
|
|
676
742
|
}), fieldErrors.phoneOrEmail && /*#__PURE__*/_react["default"].createElement("div", {
|
|
677
743
|
style: styles.fieldError
|
|
678
744
|
}, fieldErrors.phoneOrEmail), !isLogin && requirePhoneVerification && /*#__PURE__*/_react["default"].createElement("div", {
|
|
679
745
|
style: styles.helpText
|
|
680
|
-
}, "Registration requires phone verification for security"), !isLogin && requirePhoneVerification &&
|
|
746
|
+
}, "Registration requires phone verification for security"), !isLogin && requirePhoneVerification && registerPhoneValid && !isPhoneVerified && /*#__PURE__*/_react["default"].createElement("button", {
|
|
681
747
|
type: "button",
|
|
682
748
|
onClick: function onClick() {
|
|
683
|
-
return sendFirebaseOtp(
|
|
749
|
+
return sendFirebaseOtp((0, _phone.formatPhoneForSms)(formData.phoneOrEmail, phoneCountry));
|
|
684
750
|
},
|
|
685
751
|
style: _objectSpread(_objectSpread({}, styles.otpButton), {}, {
|
|
686
752
|
marginTop: '8px'
|
|
@@ -964,6 +1030,28 @@ var styles = {
|
|
|
964
1030
|
outline: 'none',
|
|
965
1031
|
height: '48px'
|
|
966
1032
|
},
|
|
1033
|
+
phoneRow: {
|
|
1034
|
+
display: 'flex',
|
|
1035
|
+
gap: '8px',
|
|
1036
|
+
alignItems: 'stretch',
|
|
1037
|
+
width: '100%'
|
|
1038
|
+
},
|
|
1039
|
+
phonePrefix: {
|
|
1040
|
+
display: 'flex',
|
|
1041
|
+
alignItems: 'center',
|
|
1042
|
+
padding: '0 14px',
|
|
1043
|
+
background: '#fff7ed',
|
|
1044
|
+
color: '#7c2d12',
|
|
1045
|
+
border: '2px solid #ffedd5',
|
|
1046
|
+
borderRadius: '8px',
|
|
1047
|
+
fontWeight: '700',
|
|
1048
|
+
fontSize: '16px',
|
|
1049
|
+
whiteSpace: 'nowrap'
|
|
1050
|
+
},
|
|
1051
|
+
phoneInput: {
|
|
1052
|
+
flex: 1,
|
|
1053
|
+
minWidth: 0
|
|
1054
|
+
},
|
|
967
1055
|
inputFocus: {
|
|
968
1056
|
borderColor: '#667eea',
|
|
969
1057
|
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() {
|
|
@@ -147,6 +171,12 @@ Object.defineProperty(exports, "addPhoneStep", {
|
|
|
147
171
|
return _onboarding.addPhoneStep;
|
|
148
172
|
}
|
|
149
173
|
});
|
|
174
|
+
Object.defineProperty(exports, "buildPhoneFromParts", {
|
|
175
|
+
enumerable: true,
|
|
176
|
+
get: function get() {
|
|
177
|
+
return _phone.buildPhoneFromParts;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
150
180
|
Object.defineProperty(exports, "defineAppStep", {
|
|
151
181
|
enumerable: true,
|
|
152
182
|
get: function get() {
|
|
@@ -165,6 +195,30 @@ Object.defineProperty(exports, "evaluateSteps", {
|
|
|
165
195
|
return _onboarding.evaluateSteps;
|
|
166
196
|
}
|
|
167
197
|
});
|
|
198
|
+
Object.defineProperty(exports, "formatPhoneForSms", {
|
|
199
|
+
enumerable: true,
|
|
200
|
+
get: function get() {
|
|
201
|
+
return _phone.formatPhoneForSms;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
Object.defineProperty(exports, "getCountryOptions", {
|
|
205
|
+
enumerable: true,
|
|
206
|
+
get: function get() {
|
|
207
|
+
return _phone.getCountryOptions;
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
Object.defineProperty(exports, "getLocalPhoneNumber", {
|
|
211
|
+
enumerable: true,
|
|
212
|
+
get: function get() {
|
|
213
|
+
return _phone.getLocalPhoneNumber;
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
Object.defineProperty(exports, "getPhoneLookupVariants", {
|
|
217
|
+
enumerable: true,
|
|
218
|
+
get: function get() {
|
|
219
|
+
return _phone.getPhoneLookupVariants;
|
|
220
|
+
}
|
|
221
|
+
});
|
|
168
222
|
Object.defineProperty(exports, "getUserId", {
|
|
169
223
|
enumerable: true,
|
|
170
224
|
get: function get() {
|
|
@@ -177,6 +231,12 @@ Object.defineProperty(exports, "hasValidPhone", {
|
|
|
177
231
|
return _onboarding.hasValidPhone;
|
|
178
232
|
}
|
|
179
233
|
});
|
|
234
|
+
Object.defineProperty(exports, "isValidPhone", {
|
|
235
|
+
enumerable: true,
|
|
236
|
+
get: function get() {
|
|
237
|
+
return _phone.isValidPhone;
|
|
238
|
+
}
|
|
239
|
+
});
|
|
180
240
|
Object.defineProperty(exports, "mergePowrSteps", {
|
|
181
241
|
enumerable: true,
|
|
182
242
|
get: function get() {
|
|
@@ -195,12 +255,30 @@ Object.defineProperty(exports, "needsPhone", {
|
|
|
195
255
|
return _onboarding.needsPhone;
|
|
196
256
|
}
|
|
197
257
|
});
|
|
258
|
+
Object.defineProperty(exports, "normalizePhone", {
|
|
259
|
+
enumerable: true,
|
|
260
|
+
get: function get() {
|
|
261
|
+
return _phone.normalizePhone;
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
Object.defineProperty(exports, "parsePhone", {
|
|
265
|
+
enumerable: true,
|
|
266
|
+
get: function get() {
|
|
267
|
+
return _phone.parsePhone;
|
|
268
|
+
}
|
|
269
|
+
});
|
|
198
270
|
Object.defineProperty(exports, "profileNameStep", {
|
|
199
271
|
enumerable: true,
|
|
200
272
|
get: function get() {
|
|
201
273
|
return _onboarding.profileNameStep;
|
|
202
274
|
}
|
|
203
275
|
});
|
|
276
|
+
Object.defineProperty(exports, "resolveCountry", {
|
|
277
|
+
enumerable: true,
|
|
278
|
+
get: function get() {
|
|
279
|
+
return _phone.resolveCountry;
|
|
280
|
+
}
|
|
281
|
+
});
|
|
204
282
|
var _table = _interopRequireDefault(require("./table"));
|
|
205
283
|
var _swiper = _interopRequireDefault(require("./swiper"));
|
|
206
284
|
var _reviews = _interopRequireDefault(require("./reviews"));
|
|
@@ -221,5 +299,7 @@ var _admin = _interopRequireDefault(require("./admin"));
|
|
|
221
299
|
var _tools = _interopRequireDefault(require("./tools"));
|
|
222
300
|
var _tasks = _interopRequireDefault(require("./tasks"));
|
|
223
301
|
var _powrVerify = _interopRequireDefault(require("./powrVerify"));
|
|
302
|
+
var _PhoneInput = _interopRequireDefault(require("./components/PhoneInput"));
|
|
224
303
|
var _onboarding = require("./onboarding");
|
|
304
|
+
var _phone = require("./utils/phone");
|
|
225
305
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|