@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.
@@ -21,6 +21,7 @@ import { parse } from 'twemoji-parser';
21
21
  import * as WebBrowser from 'expo-web-browser';
22
22
  import DateTimePicker, { DateTimePickerAndroid } from '@react-native-community/datetimepicker';
23
23
  import { FormattedMessage } from 'react-intl';
24
+ import { parseNumber, getCountryCallingCode, isValidNumber } from 'libphonenumber-js';
24
25
  import Svg, { Circle as Circle$1 } from 'react-native-svg';
25
26
  import { Picker as Picker$1 } from '@react-native-picker/picker';
26
27
  import { LinearGradient } from 'expo-linear-gradient';
@@ -3841,18 +3842,18 @@ function getReturnKeyTypeForNumericInput(returnKeyType) {
3841
3842
  return returnKeyType;
3842
3843
  }
3843
3844
 
3844
- function prefixWithZero(value) {
3845
+ function prefixWithZero$1(value) {
3845
3846
  var maxLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
3846
3847
  return "".concat(value).padStart(maxLength, '0');
3847
3848
  }
3848
3849
  function dayFormatter(day) {
3849
- return prefixWithZero(day);
3850
+ return prefixWithZero$1(day);
3850
3851
  }
3851
3852
  function monthFormatter(month) {
3852
- return prefixWithZero(month);
3853
+ return prefixWithZero$1(month);
3853
3854
  }
3854
3855
  function yearFormatter(year) {
3855
- return prefixWithZero(year, 4);
3856
+ return prefixWithZero$1(year, 4);
3856
3857
  }
3857
3858
 
3858
3859
  function getDayInInterval(value) {
@@ -5120,20 +5121,63 @@ var InputPassword = /*#__PURE__*/forwardRef(function (_ref, ref) {
5120
5121
  }));
5121
5122
  });
5122
5123
 
5123
- var _excluded$c = ["returnKeyType", "autoComplete"];
5124
+ var _excluded$c = ["returnKeyType", "autoComplete", "phoneNumberLength", "value", "onChange"];
5125
+ function isPhoneNumberValid(number) {
5126
+ return isValidNumber(number);
5127
+ }
5128
+ function prefixWithZero(value, phoneNumberLength) {
5129
+ return value.padStart(phoneNumberLength, '0');
5130
+ }
5124
5131
  var InputPhone = /*#__PURE__*/forwardRef(function (_ref, ref) {
5125
5132
  var returnKeyType = _ref.returnKeyType,
5126
5133
  _ref$autoComplete = _ref.autoComplete,
5127
5134
  autoComplete = _ref$autoComplete === void 0 ? 'tel' : _ref$autoComplete,
5135
+ _ref$phoneNumberLengt = _ref.phoneNumberLength,
5136
+ phoneNumberLength = _ref$phoneNumberLengt === void 0 ? 10 : _ref$phoneNumberLengt,
5137
+ value = _ref.value,
5138
+ onChange = _ref.onChange,
5128
5139
  props = _objectWithoutProperties(_ref, _excluded$c);
5140
+ var _useState = useState(value),
5141
+ _useState2 = _slicedToArray(_useState, 2),
5142
+ currentValue = _useState2[0],
5143
+ setCurrentValue = _useState2[1];
5129
5144
  var currentReturnKeyType = returnKeyType ? getReturnKeyTypeForNumericInput(returnKeyType) : undefined;
5130
5145
  return /*#__PURE__*/jsx(InputText, _objectSpread(_objectSpread({
5131
5146
  ref: ref
5132
5147
  }, props), {}, {
5148
+ value: currentValue,
5133
5149
  keyboardType: "phone-pad",
5134
5150
  returnKeyType: currentReturnKeyType,
5135
5151
  autoComplete: autoComplete,
5136
- textContentType: "telephoneNumber"
5152
+ textContentType: "telephoneNumber",
5153
+ onChange: function handleChange(event) {
5154
+ var number = parseNumber(event.nativeEvent.text);
5155
+
5156
+ // When intl phone number is valid :
5157
+ // 1 - We extract intl data
5158
+ // 2 - We recreate the local value to display
5159
+ if (isPhoneNumberValid(number)) {
5160
+ var phone = number.phone;
5161
+ var finalPhoneNumber = prefixWithZero("".concat(phone || ''), phoneNumberLength);
5162
+ var eventWithoutCountryCode = _objectSpread(_objectSpread({}, event), {}, {
5163
+ nativeEvent: _objectSpread(_objectSpread({}, event.nativeEvent), {}, {
5164
+ text: finalPhoneNumber
5165
+ })
5166
+ });
5167
+ setCurrentValue(finalPhoneNumber);
5168
+ if (onChange) {
5169
+ onChange(eventWithoutCountryCode, _objectSpread(_objectSpread({}, number), {}, {
5170
+ countryCode: getCountryCallingCode(number.country),
5171
+ originalNativeEventText: event.nativeEvent.text
5172
+ }));
5173
+ }
5174
+ return;
5175
+ }
5176
+
5177
+ // Value is correctly parsed but might not pass validation
5178
+ setCurrentValue(event.nativeEvent.text);
5179
+ if (onChange) onChange(event);
5180
+ }
5137
5181
  }));
5138
5182
  });
5139
5183