@ornikar/kitt-universal 9.40.0 → 9.41.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.
@@ -19,6 +19,7 @@ import { styled as styled$1 } from '@linaria/react';
19
19
  import { Portal } from 'react-portal';
20
20
  import { CSSTransition } from 'react-transition-group';
21
21
  import { parse } from 'twemoji-parser';
22
+ import { parseNumber, getCountryCallingCode, isValidNumber } from 'libphonenumber-js';
22
23
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
23
24
  import { useFloating, autoUpdate, offset, autoPlacement, shift, arrow } from '@floating-ui/react-dom';
24
25
  import { useOnClickOutside } from 'usehooks-ts';
@@ -3399,18 +3400,18 @@ function getReturnKeyTypeForNumericInput(returnKeyType) {
3399
3400
  return returnKeyType;
3400
3401
  }
3401
3402
 
3402
- function prefixWithZero(value) {
3403
+ function prefixWithZero$1(value) {
3403
3404
  var maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
3404
3405
  return "".concat(value).padStart(maxLength, '0');
3405
3406
  }
3406
3407
  function dayFormatter(day) {
3407
- return prefixWithZero(day);
3408
+ return prefixWithZero$1(day);
3408
3409
  }
3409
3410
  function monthFormatter(month) {
3410
- return prefixWithZero(month);
3411
+ return prefixWithZero$1(month);
3411
3412
  }
3412
3413
  function yearFormatter(year) {
3413
- return prefixWithZero(year, 4);
3414
+ return prefixWithZero$1(year, 4);
3414
3415
  }
3415
3416
 
3416
3417
  function getDayInInterval(value) {
@@ -4014,20 +4015,63 @@ var InputPassword = /*#__PURE__*/forwardRef(function (_ref, ref) {
4014
4015
  }));
4015
4016
  });
4016
4017
 
4017
- var _excluded$f = ["returnKeyType", "autoComplete"];
4018
+ var _excluded$f = ["returnKeyType", "autoComplete", "phoneNumberLength", "value", "onChange"];
4019
+ function isPhoneNumberValid(number) {
4020
+ return isValidNumber(number);
4021
+ }
4022
+ function prefixWithZero(value, phoneNumberLength) {
4023
+ return value.padStart(phoneNumberLength, '0');
4024
+ }
4018
4025
  var InputPhone = /*#__PURE__*/forwardRef(function (_ref, ref) {
4019
4026
  var returnKeyType = _ref.returnKeyType,
4020
4027
  _ref$autoComplete = _ref.autoComplete,
4021
4028
  autoComplete = _ref$autoComplete === void 0 ? 'tel' : _ref$autoComplete,
4029
+ _ref$phoneNumberLengt = _ref.phoneNumberLength,
4030
+ phoneNumberLength = _ref$phoneNumberLengt === void 0 ? 10 : _ref$phoneNumberLengt,
4031
+ value = _ref.value,
4032
+ onChange = _ref.onChange,
4022
4033
  props = _objectWithoutProperties(_ref, _excluded$f);
4034
+ var _useState = useState(value),
4035
+ _useState2 = _slicedToArray(_useState, 2),
4036
+ currentValue = _useState2[0],
4037
+ setCurrentValue = _useState2[1];
4023
4038
  var currentReturnKeyType = returnKeyType ? getReturnKeyTypeForNumericInput(returnKeyType) : undefined;
4024
4039
  return /*#__PURE__*/jsx(InputText, _objectSpread(_objectSpread({
4025
4040
  ref: ref
4026
4041
  }, props), {}, {
4042
+ value: currentValue,
4027
4043
  keyboardType: "phone-pad",
4028
4044
  returnKeyType: currentReturnKeyType,
4029
4045
  autoComplete: autoComplete,
4030
- textContentType: "telephoneNumber"
4046
+ textContentType: "telephoneNumber",
4047
+ onChange: function handleChange(event) {
4048
+ var number = parseNumber(event.nativeEvent.text);
4049
+
4050
+ // When intl phone number is valid :
4051
+ // 1 - We extract intl data
4052
+ // 2 - We recreate the local value to display
4053
+ if (isPhoneNumberValid(number)) {
4054
+ var phone = number.phone;
4055
+ var finalPhoneNumber = prefixWithZero("".concat(phone || ''), phoneNumberLength);
4056
+ var eventWithoutCountryCode = _objectSpread(_objectSpread({}, event), {}, {
4057
+ nativeEvent: _objectSpread(_objectSpread({}, event.nativeEvent), {}, {
4058
+ text: finalPhoneNumber
4059
+ })
4060
+ });
4061
+ setCurrentValue(finalPhoneNumber);
4062
+ if (onChange) {
4063
+ onChange(eventWithoutCountryCode, _objectSpread(_objectSpread({}, number), {}, {
4064
+ countryCode: getCountryCallingCode(number.country),
4065
+ originalNativeEventText: event.nativeEvent.text
4066
+ }));
4067
+ }
4068
+ return;
4069
+ }
4070
+
4071
+ // Value is correctly parsed but might not pass validation
4072
+ setCurrentValue(event.nativeEvent.text);
4073
+ if (onChange) onChange(event);
4074
+ }
4031
4075
  }));
4032
4076
  });
4033
4077