UNPKG

@gravityforms/components

Version:

UI components for use in Gravity Forms development. Both React and vanilla js flavors.

18 lines (16 loc) 87 kB
"use strict"; /* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ (self["webpackChunkgravityforms"] = self["webpackChunkgravityforms"] || []).push([["components_react_admin_modules_Phone_PhoneComponent_js"],{ /***/ "../components/react/admin/modules/Phone/PhoneComponent.js": /*!*****************************************************************************!*\ !*** ../components/react/admin/modules/Phone/PhoneComponent.js + 1 modules ***! \*****************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("{// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ Phone_PhoneComponent; }\n});\n\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/extends.js\nvar esm_extends = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/extends.js\");\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\nvar defineProperty = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n// EXTERNAL MODULE: ../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules\nvar slicedToArray = __webpack_require__(\"../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n// EXTERNAL MODULE: external [\"gform\",\"libraries\"]\nvar external_gform_libraries_ = __webpack_require__(\"@gravityforms/libraries\");\n// EXTERNAL MODULE: external [\"gform\",\"utils\",\"react\"]\nvar external_gform_utils_react_ = __webpack_require__(\"@gravityforms/react-utils\");\n// EXTERNAL MODULE: external [\"gform\",\"utils\"]\nvar external_gform_utils_ = __webpack_require__(\"@gravityforms/utils\");\n// EXTERNAL MODULE: ../../../node_modules/libphonenumber-js/examples.mobile.json.js\nvar examples_mobile_json = __webpack_require__(\"../../../node_modules/libphonenumber-js/examples.mobile.json.js\");\n// EXTERNAL MODULE: ../../../node_modules/libphonenumber-js/min/exports/getExampleNumber.js + 17 modules\nvar getExampleNumber = __webpack_require__(\"../../../node_modules/libphonenumber-js/min/exports/getExampleNumber.js\");\n// EXTERNAL MODULE: ../components/react/admin/modules/Dropdown/utils.js\nvar utils = __webpack_require__(\"../components/react/admin/modules/Dropdown/utils.js\");\n// EXTERNAL MODULE: ../components/react/admin/modules/Dropdown/CountryDropdown/index.js\nvar CountryDropdown = __webpack_require__(\"../components/react/admin/modules/Dropdown/CountryDropdown/index.js\");\n// EXTERNAL MODULE: ../components/react/admin/modules/Dropdown/CountryDropdown/utils.js + 1 modules\nvar CountryDropdown_utils = __webpack_require__(\"../components/react/admin/modules/Dropdown/CountryDropdown/utils.js\");\n// EXTERNAL MODULE: ../components/react/admin/elements/HelpText/index.js\nvar HelpText = __webpack_require__(\"../components/react/admin/elements/HelpText/index.js\");\n// EXTERNAL MODULE: ../components/react/admin/elements/Input/index.js\nvar Input = __webpack_require__(\"../components/react/admin/elements/Input/index.js\");\n;// ../components/react/admin/modules/Phone/utils.js\n\nvar ANDROID_USER_AGENT_REG_EXP = /Android/i;\n\n/**\n * @function isAndroid\n * @description Checks if the user agent is Android.\n * Copied from the original function `isAndroid` from `input-format` package.\n * The original function is not exported, so it was copied here.\n *\n * @since 5.5.0\n *\n * @return {boolean} Whether the user agent is Android.\n */\nvar isAndroid = function isAndroid() {\n // `navigator` is not defined when running mocha tests.\n if (typeof navigator !== 'undefined') {\n return ANDROID_USER_AGENT_REG_EXP.test(navigator.userAgent);\n }\n return false;\n};\n\n/**\n * @function getCaretPosition\n * @description Gets the caret position.\n * Copied from the original function `getCaretPosition` from `input-format` package.\n * The original function is not exported, so it was copied here.\n *\n * @since 5.5.0\n *\n * @param {HTMLElement} element The element to get the caret position from.\n *\n * @return {number} The caret position.\n */\nvar getCaretPosition = function getCaretPosition(element) {\n return element.selectionStart;\n};\n\n/**\n * @function setCaretPosition\n * @description Sets the caret position.\n * Copied from the original function `setCaretPosition` from `input-format` package.\n * The original function is not exported, so it was copied here.\n *\n * @since 5.5.0\n *\n * @param {HTMLElement} element The element to set the caret position on.\n * @param {number} caretPosition The caret position to set.\n */\nvar setCaretPosition = function setCaretPosition(element, caretPosition) {\n // Sanity check\n if (caretPosition === undefined) {\n return;\n }\n\n // Set caret position.\n // There has been an issue with caret positioning on Android devices.\n // https://github.com/catamphetamine/input-format/issues/2\n // I was revisiting this issue and looked for similar issues in other libraries.\n // For example, there's [`text-mask`](https://github.com/text-mask/text-mask) library.\n // They've had exactly the same issue when the caret seemingly refused to be repositioned programmatically.\n // The symptoms were the same: whenever the caret passed through a non-digit character of a mask (a whitespace, a bracket, a dash, etc), it looked as if it placed itself one character before its correct position.\n // https://github.com/text-mask/text-mask/issues/300\n // They seem to have found a basic fix for it: calling `input.setSelectionRange()` in a timeout rather than instantly for Android devices.\n // https://github.com/text-mask/text-mask/pull/400/files\n // I've implemented the same workaround here.\n if (isAndroid()) {\n setTimeout(function () {\n return element.setSelectionRange(caretPosition, caretPosition);\n }, 0);\n } else {\n element.setSelectionRange(caretPosition, caretPosition);\n }\n};\n\n/**\n * @function getTextAfterEraseSelection\n * @description Gets the text after erasing the selection.\n * Modified from the original function `eraseSelection` from `input-format` package.\n * The original function is not exported, so it was copied here.\n *\n * @since 5.5.0\n *\n * @param {string} text The text to erase the selection from.\n * @param {object} selection The selection to erase. The selection is an object with `start` and `end` properties.\n *\n * @return {string} The text after erasing the selection.\n */\nvar getTextAfterEraseSelection = function getTextAfterEraseSelection(text, selection) {\n var start = Math.min(selection.start, selection.end);\n var end = Math.max(selection.start, selection.end);\n return text.slice(0, start) + text.slice(end);\n};\n\n/**\n * @function getSelection\n * @description Gets the selection.\n * Copied from the original function `getSelection` from `input-format` package.\n * The original function is not exported, so it was copied here.\n *\n * @since 5.5.0\n *\n * @param {HTMLElement} input The input element.\n *\n * @return {object|undefined} The selection object with `start` and `end` properties.\n */\nvar getSelection = function getSelection(input) {\n // If no selection, return nothing\n if (input.selectionStart === input.selectionEnd) {\n return;\n }\n var start = Math.min(input.selectionStart, input.selectionEnd);\n var end = Math.max(input.selectionStart, input.selectionEnd);\n return {\n start: start,\n end: end\n };\n};\n\n/**\n * @function getId\n * @description Get the id from the prefix and key provided.\n *\n * @since 5.5.0\n *\n * @param {string} prefix The id prefix.\n * @param {string} key The id key.\n *\n * @return {string} The id.\n */\nvar getId = function getId(prefix, key) {\n return (0,external_gform_utils_.slugify)(\"\".concat(prefix, \"-\").concat(key));\n};\n\n/**\n * @function e164ToNumber\n * @description Convert an E.164 formatted phone number to a number.\n *\n * @since 5.5.0\n *\n * @throws {TypeError} If the input is not a string.\n *\n * @param {string} e164 The E.164 formatted phone number.\n *\n * @return {string} The phone number.\n */\nvar e164ToNumber = function e164ToNumber(e164) {\n if (typeof e164 !== 'string') {\n throw new TypeError('Input must be a string');\n }\n return e164.replace(/^\\+/, '');\n};\n\n/**\n * @function numberToE164\n * @description Convert a phone number to E.164 format.\n *\n * @since 5.5.0\n *\n * @throws {TypeError} If the input is not a string.\n *\n * @param {string} number The phone number.\n *\n * @return {string} The E.164 formatted phone number.\n */\nvar numberToE164 = function numberToE164(number) {\n if (typeof number !== 'string') {\n throw new TypeError('Input must be a string');\n }\n return number.startsWith('+') ? number : \"+\".concat(number);\n};\n;// ../components/react/admin/modules/Phone/PhoneComponent.js\n\n\n\nfunction 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; }\nfunction _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) { (0,defineProperty[\"default\"])(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; }\n\n\n\n\n\n\n\n\n\n\n\nvar useEffect = external_gform_libraries_.React.useEffect,\n useRef = external_gform_libraries_.React.useRef,\n useState = external_gform_libraries_.React.useState,\n forwardRef = external_gform_libraries_.React.forwardRef;\nvar INPUT_SELECTOR = '.gform-input';\nvar DROPDOWN_TRIGGER_SELECTOR = '.gform-dropdown__trigger';\nvar BORDER_STYLE_DEFAULT = 'default';\nvar BORDER_STYLE_ERROR = 'error';\nvar BORDER_STYLE_CORRECT = 'correct';\nvar PhoneComponent = forwardRef(function (props, ref) {\n var countries = props.countries,\n customAttributes = props.customAttributes,\n customClasses = props.customClasses,\n disabled = props.disabled,\n dropdownAttributes = props.dropdownAttributes,\n dropdownClasses = props.dropdownClasses,\n helpTextAttributes = props.helpTextAttributes,\n helpTextClasses = props.helpTextClasses,\n i18n = props.i18n,\n inputAttributes = props.inputAttributes,\n inputClasses = props.inputClasses,\n international = props.international,\n label = props.label,\n labelAttributes = props.labelAttributes,\n labelClasses = props.labelClasses,\n language = props.language,\n onChange = props.onChange,\n preferredCountries = props.preferredCountries,\n required = props.required,\n requiredLabelAttributes = props.requiredLabelAttributes,\n requiredLabelClasses = props.requiredLabelClasses,\n size = props.size,\n spacing = props.spacing,\n usePlaceholder = props.usePlaceholder,\n useValidation = props.useValidation,\n width = props.width;\n\n // Refs\n var internalRef = useRef(null);\n var wrapperRef = ref || internalRef;\n var dropdownRef = useRef(null);\n var inputRef = useRef(null);\n var phoneInputRef = useRef(null);\n var id = (0,external_gform_utils_react_.useIdContext)();\n var _usePhoneInputFormatU = (0,external_gform_utils_react_.usePhoneInputFormatUtilsContext)(),\n inputFormatUtils = _usePhoneInputFormatU.inputFormatUtils;\n var getFormattedInputText = inputFormatUtils.getFormattedInputText;\n var _useState = useState(function () {\n var countriesListItems = (0,CountryDropdown_utils.getCountriesListItemsFromIsos)(countries, language, i18n, {\n showFlag: (dropdownAttributes === null || dropdownAttributes === void 0 ? void 0 : dropdownAttributes.showFlag) || true,\n showCallingCode: (dropdownAttributes === null || dropdownAttributes === void 0 ? void 0 : dropdownAttributes.showCallingCode) || true\n });\n if (dropdownAttributes !== null && dropdownAttributes !== void 0 && dropdownAttributes.initialValue) {\n return (0,utils.getSelectedItemFromValue)(dropdownAttributes === null || dropdownAttributes === void 0 ? void 0 : dropdownAttributes.initialValue, countriesListItems, false);\n }\n if (preferredCountries.length) {\n var _preferred$;\n var preferred = (0,CountryDropdown_utils.sortPreferredCountries)(countriesListItems, preferredCountries, i18n);\n if ((preferred === null || preferred === void 0 || (_preferred$ = preferred[0]) === null || _preferred$ === void 0 ? void 0 : _preferred$.type) === 'group') {\n var _preferred$2;\n return (preferred === null || preferred === void 0 || (_preferred$2 = preferred[0]) === null || _preferred$2 === void 0 || (_preferred$2 = _preferred$2.items) === null || _preferred$2 === void 0 ? void 0 : _preferred$2[0]) || {};\n }\n return preferred === null || preferred === void 0 ? void 0 : preferred[0];\n }\n if (countriesListItems !== null && countriesListItems !== void 0 && countriesListItems[0]) {\n return countriesListItems === null || countriesListItems === void 0 ? void 0 : countriesListItems[0];\n }\n return {};\n }),\n _useState2 = (0,slicedToArray[\"default\"])(_useState, 2),\n country = _useState2[0],\n setCountry = _useState2[1];\n var _useState3 = useState(function () {\n if (inputAttributes !== null && inputAttributes !== void 0 && inputAttributes.value) {\n var _getFormattedInputTex = getFormattedInputText(inputAttributes === null || inputAttributes === void 0 ? void 0 : inputAttributes.value, 0, country === null || country === void 0 ? void 0 : country.value, international),\n asYouType = _getFormattedInputTex.asYouType,\n formatted = _getFormattedInputTex.formatted;\n return {\n asYouType: asYouType,\n chars: (asYouType === null || asYouType === void 0 ? void 0 : asYouType.getChars()) || '',\n value: formatted.text,\n numberValue: (asYouType === null || asYouType === void 0 ? void 0 : asYouType.getNumberValue()) || ''\n };\n }\n return {\n asYouType: null,\n chars: '',\n value: '',\n numberValue: ''\n };\n }),\n _useState4 = (0,slicedToArray[\"default\"])(_useState3, 2),\n phoneNumber = _useState4[0],\n setPhoneNumber = _useState4[1];\n var _useState5 = useState(BORDER_STYLE_DEFAULT),\n _useState6 = (0,slicedToArray[\"default\"])(_useState5, 2),\n borderStyle = _useState6[0],\n setBorderStyle = _useState6[1];\n\n // Set phoneInputRef.\n useEffect(function () {\n if (!inputRef.current) {\n return;\n }\n if (phoneInputRef.current === inputRef.current.querySelector(INPUT_SELECTOR)) {\n return;\n }\n phoneInputRef.current = inputRef.current.querySelector(INPUT_SELECTOR);\n }, [inputRef, phoneInputRef]);\n\n /**\n * @function getPlaceholder\n * @description Get the placeholder text for the input.\n *\n * @since 5.5.0\n *\n * @return {string|undefined} Placeholder text.\n */\n var getPlaceholder = function getPlaceholder() {\n if (!usePlaceholder) {\n return undefined;\n }\n var exampleNumber = (0,getExampleNumber.getExampleNumber)(country === null || country === void 0 ? void 0 : country.value, examples_mobile_json[\"default\"]);\n if (!exampleNumber) {\n return undefined;\n }\n return international ? exampleNumber.formatInternational() : exampleNumber.formatNational();\n };\n\n /**\n * @function validatePhoneNumber\n * @description Validate the phone number.\n *\n * @since 5.5.0\n *\n */\n var validatePhoneNumber = function validatePhoneNumber() {\n // If validation is disabled, return early.\n if (!useValidation) {\n if (borderStyle !== BORDER_STYLE_DEFAULT) {\n setBorderStyle(BORDER_STYLE_DEFAULT);\n }\n return;\n }\n var asYouType = phoneNumber.asYouType,\n numberValue = phoneNumber.numberValue;\n var isPossible = asYouType === null || asYouType === void 0 ? void 0 : asYouType.isPossible();\n if (numberValue) {\n setBorderStyle(isPossible ? BORDER_STYLE_CORRECT : BORDER_STYLE_ERROR);\n } else {\n setBorderStyle(BORDER_STYLE_DEFAULT);\n }\n };\n\n /**\n * @function onCountryChange\n * @description Handle country change.\n *\n * @since 5.5.0\n *\n * @param {Event} event The event object.\n * @param {object} value The selected country object.\n */\n var onCountryChange = function onCountryChange(event, value) {\n setCountry(value);\n var _getFormattedInputTex2 = getFormattedInputText(phoneNumber.chars, 0, value === null || value === void 0 ? void 0 : value.value, international),\n asYouType = _getFormattedInputTex2.asYouType,\n formatted = _getFormattedInputTex2.formatted;\n var numberValue = (asYouType === null || asYouType === void 0 ? void 0 : asYouType.getNumberValue()) || '';\n setPhoneNumber({\n asYouType: asYouType,\n chars: (asYouType === null || asYouType === void 0 ? void 0 : asYouType.getChars()) || '',\n value: formatted.text,\n numberValue: numberValue\n });\n var changeValue = {\n country: value === null || value === void 0 ? void 0 : value.value,\n number: numberValue,\n isValid: (asYouType === null || asYouType === void 0 ? void 0 : asYouType.isPossible()) || false\n };\n onChange(changeValue, event);\n\n // Validate phone number after state updates.\n requestAnimationFrame(validatePhoneNumber);\n };\n\n /**\n * @function handleInputChange\n * @description Input change handler.\n *\n * @since 5.5.0\n *\n * @param {string} value The input value.\n * @param {string|undefined} operation The operation to perform.\n * @param {Event} event The event object.\n */\n var handleInputChange = function handleInputChange(value, operation, event) {\n var phoneInput = phoneInputRef.current;\n var caretPosition = getCaretPosition(phoneInput);\n var _getFormattedInputTex3 = getFormattedInputText(value, caretPosition, country === null || country === void 0 ? void 0 : country.value, international, operation),\n asYouType = _getFormattedInputTex3.asYouType,\n formatted = _getFormattedInputTex3.formatted;\n var numberValue = (asYouType === null || asYouType === void 0 ? void 0 : asYouType.getNumberValue()) || '';\n setPhoneNumber({\n asYouType: asYouType,\n chars: (asYouType === null || asYouType === void 0 ? void 0 : asYouType.getChars()) || '',\n value: formatted.text,\n numberValue: numberValue\n });\n var changeValue = {\n country: country === null || country === void 0 ? void 0 : country.value,\n number: numberValue,\n isValid: (asYouType === null || asYouType === void 0 ? void 0 : asYouType.isPossible()) || false\n };\n\n // requestAnimationFrame to set caret after rerender.\n requestAnimationFrame(function () {\n setCaretPosition(phoneInput, formatted.caret);\n });\n onChange(changeValue, event);\n };\n\n /**\n * @function onInputChange\n * @description Handle input change.\n *\n * @since 5.5.0\n *\n * @param {string} value The input value.\n * @param {Event} event The event object.\n */\n var onInputChange = function onInputChange(value, event) {\n handleInputChange(value, undefined, event);\n };\n\n /**\n * @function onInputKeyDown\n * @description Handle input key down.\n *\n * @since 5.5.0\n *\n * @param {Event} event The event object.\n */\n var onInputKeyDown = function onInputKeyDown(event) {\n if (inputAttributes !== null && inputAttributes !== void 0 && inputAttributes.onKeyDown) {\n var _inputAttributes$onKe;\n inputAttributes === null || inputAttributes === void 0 || (_inputAttributes$onKe = inputAttributes.onKeyDown) === null || _inputAttributes$onKe === void 0 || _inputAttributes$onKe.call(inputAttributes, event);\n }\n\n // If `onKeyDown()` handler above has called `event.preventDefault()` then ignore this `keydown` event.\n if (event.defaultPrevented) {\n return;\n }\n var phoneInput = phoneInputRef.current;\n if (phoneInput.hasAttribute('readonly')) {\n return;\n }\n var operation = event.key;\n if (!['Backspace', 'Delete'].includes(operation)) {\n return;\n }\n\n // Intercept this operation and perform it manually.\n event.preventDefault();\n var value = phoneInput.value;\n var selection = getSelection(phoneInput);\n\n // If a selection is made, get the text after erasing selection.\n // Else, perform the (character erasing) operation manually.\n var newValue = selection ? getTextAfterEraseSelection(value, selection) : value;\n var newOp = selection ? undefined : operation;\n handleInputChange(newValue, newOp, event);\n };\n\n /**\n * @function onInputBlur\n * @description Handle input blur.\n *\n * @since 5.5.0\n *\n * @param {Event} event The event object.\n */\n var onInputBlur = function onInputBlur(event) {\n if (inputAttributes !== null && inputAttributes !== void 0 && inputAttributes.onBlur) {\n var _inputAttributes$onBl;\n inputAttributes === null || inputAttributes === void 0 || (_inputAttributes$onBl = inputAttributes.onBlur) === null || _inputAttributes$onBl === void 0 || _inputAttributes$onBl.call(inputAttributes, event);\n }\n\n // If `onBlur()` handler above has called `event.preventDefault()` then ignore this `blur` event.\n if (event.defaultPrevented) {\n return;\n }\n validatePhoneNumber();\n };\n\n /**\n * @function onLabelClick\n * @description Handle label click.\n *\n * @since 5.5.0\n *\n */\n var onLabelClick = function onLabelClick() {\n var _dropdownRef$current;\n var dropdownTrigger = dropdownRef === null || dropdownRef === void 0 || (_dropdownRef$current = dropdownRef.current) === null || _dropdownRef$current === void 0 ? void 0 : _dropdownRef$current.querySelector(DROPDOWN_TRIGGER_SELECTOR);\n if (dropdownTrigger) {\n dropdownTrigger.focus();\n }\n };\n var helpTextId = getId(id, 'help-text');\n var labelId = getId(id, 'label');\n var componentProps = _objectSpread({\n className: (0,external_gform_libraries_.classnames)(_objectSpread((0,defineProperty[\"default\"])((0,defineProperty[\"default\"])({\n 'gform-phone': true,\n 'wp-exclude-emoji': true\n }, \"gform-phone--size-\".concat(size), true), 'gform-phone--disabled', disabled), (0,external_gform_utils_.spacerClasses)(spacing)), customClasses),\n id: id,\n style: {\n width: width ? \"\".concat(width, \"px\") : undefined\n }\n }, customAttributes);\n var labelProps = _objectSpread(_objectSpread({\n className: (0,external_gform_libraries_.classnames)(['gform-phone__label', 'gform-text', 'gform-text--color-port', 'gform-typography--size-text-sm', 'gform-typography--weight-medium'], labelClasses)\n }, labelAttributes), {}, {\n id: labelId,\n onClick: onLabelClick\n });\n var requiredLabelProps = _objectSpread(_objectSpread({\n size: 'text-sm',\n weight: 'medium'\n }, requiredLabelAttributes), {}, {\n customClasses: (0,external_gform_libraries_.classnames)(['gform-phone__required'], requiredLabelClasses)\n });\n var dropdownProps = _objectSpread(_objectSpread({\n countries: countries,\n hasSearch: true,\n popoverMaxHeight: 300\n }, dropdownAttributes), {}, {\n customClasses: (0,external_gform_libraries_.classnames)(['gform-phone__dropdown'], dropdownClasses),\n disabled: disabled,\n i18n: i18n,\n id: getId(id, 'dropdown'),\n language: language,\n onChange: onCountryChange,\n preferredCountries: preferredCountries,\n searchAttributes: _objectSpread({\n wrapperClasses: ['gform-phone__dropdown-search-wrapper']\n }, (dropdownAttributes === null || dropdownAttributes === void 0 ? void 0 : dropdownAttributes.searchAttributes) || {}),\n searchClasses: ['gform-phone__dropdown-search'],\n size: size,\n triggerAttributes: {\n 'aria-labelledby': label ? labelId : undefined\n },\n triggerClasses: ['gform-phone__dropdown-trigger']\n });\n var inputProps = _objectSpread(_objectSpread({}, inputAttributes), {}, {\n borderStyle: borderStyle,\n customAttributes: {\n 'aria-describedby': helpTextAttributes.content && borderStyle === BORDER_STYLE_ERROR ? helpTextId : undefined,\n 'aria-labelledby': label ? labelId : undefined\n },\n customClasses: (0,external_gform_libraries_.classnames)(['gform-phone__input'], inputClasses),\n directControlled: true,\n disabled: disabled,\n id: getId(id, 'input'),\n onBlur: onInputBlur,\n onChange: onInputChange,\n onKeyDown: onInputKeyDown,\n placeholder: getPlaceholder(),\n required: required,\n size: \"size-\".concat(size),\n type: 'tel',\n value: phoneNumber.value,\n wrapperClasses: (0,external_gform_libraries_.classnames)({\n 'gform-phone__input-wrapper': true\n }, (inputAttributes === null || inputAttributes === void 0 ? void 0 : inputAttributes.wrapperClasses) || [])\n });\n var helpTextProps = _objectSpread(_objectSpread({\n size: 'text-xs',\n weight: 'regular'\n }, helpTextAttributes), {}, {\n customClasses: (0,external_gform_libraries_.classnames)(['gform-phone__help-text'], helpTextClasses),\n id: helpTextId\n });\n return /*#__PURE__*/external_gform_libraries_.React.createElement(\"div\", (0,esm_extends[\"default\"])({}, componentProps, {\n ref: wrapperRef\n }), label && /*#__PURE__*/external_gform_libraries_.React.createElement(\"div\", labelProps, label, required && /*#__PURE__*/external_gform_libraries_.React.createElement(HelpText[\"default\"], requiredLabelProps)), /*#__PURE__*/external_gform_libraries_.React.createElement(\"div\", {\n className: \"gform-phone__wrapper\"\n }, /*#__PURE__*/external_gform_libraries_.React.createElement(CountryDropdown[\"default\"], (0,esm_extends[\"default\"])({}, dropdownProps, {\n ref: dropdownRef\n })), /*#__PURE__*/external_gform_libraries_.React.createElement(Input[\"default\"], (0,esm_extends[\"default\"])({}, inputProps, {\n ref: inputRef\n }))), borderStyle === BORDER_STYLE_ERROR && /*#__PURE__*/external_gform_libraries_.React.createElement(HelpText[\"default\"], helpTextProps));\n});\nPhoneComponent.propTypes = {\n countries: external_gform_libraries_.PropTypes.array,\n customAttributes: external_gform_libraries_.PropTypes.object,\n customClasses: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n disabled: external_gform_libraries_.PropTypes.bool,\n dropdownAttributes: external_gform_libraries_.PropTypes.object,\n dropdownClasses: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n helpTextAttributes: external_gform_libraries_.PropTypes.object,\n helpTextClasses: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n i18n: external_gform_libraries_.PropTypes.object,\n id: external_gform_libraries_.PropTypes.string,\n inputAttributes: external_gform_libraries_.PropTypes.object,\n inputClasses: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n international: external_gform_libraries_.PropTypes.bool,\n label: external_gform_libraries_.PropTypes.string,\n labelAttributes: external_gform_libraries_.PropTypes.object,\n labelClasses: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n language: external_gform_libraries_.PropTypes.string,\n onChange: external_gform_libraries_.PropTypes.func,\n preferredCountries: external_gform_libraries_.PropTypes.array,\n required: external_gform_libraries_.PropTypes.bool,\n requiredLabelAttributes: external_gform_libraries_.PropTypes.object,\n requiredLabelClasses: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n size: external_gform_libraries_.PropTypes.oneOf(['r', 'l', 'xl']),\n spacing: external_gform_libraries_.PropTypes.oneOfType([external_gform_libraries_.PropTypes.string, external_gform_libraries_.PropTypes.number, external_gform_libraries_.PropTypes.array, external_gform_libraries_.PropTypes.object]),\n usePlaceholder: external_gform_libraries_.PropTypes.bool,\n useValidation: external_gform_libraries_.PropTypes.bool,\n width: external_gform_libraries_.PropTypes.number\n};\nvar PhoneComponentWithId = forwardRef(function (props, ref) {\n var defaultProps = {\n countries: [],\n customAttributes: {},\n customClasses: [],\n disabled: false,\n dropdownAttributes: {},\n dropdownClasses: [],\n helpTextAttributes: {},\n helpTextClasses: [],\n i18n: {},\n id: '',\n inputAttributes: {},\n inputClasses: [],\n international: true,\n label: '',\n labelAttributes: {},\n labelClasses: [],\n language: 'en',\n onChange: function onChange() {},\n preferredCountries: [],\n required: false,\n requiredLabelAttributes: {},\n requiredLabelClasses: [],\n size: 'r',\n spacing: '',\n usePlaceholder: true,\n useValidation: false,\n width: 0\n };\n var combinedProps = _objectSpread(_objectSpread({}, defaultProps), props);\n var idProp = combinedProps.id;\n var idProviderProps = {\n id: idProp\n };\n return /*#__PURE__*/external_gform_libraries_.React.createElement(external_gform_utils_react_.IdProvider, idProviderProps, /*#__PURE__*/external_gform_libraries_.React.createElement(PhoneComponent, (0,esm_extends[\"default\"])({}, combinedProps, {\n ref: ref\n })));\n});\n/* harmony default export */ var Phone_PhoneComponent = (PhoneComponentWithId);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vY29tcG9uZW50cy9yZWFjdC9hZG1pbi9tb2R1bGVzL1Bob25lL1Bob25lQ29tcG9uZW50LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQThDO0FBRTlDLElBQU1DLDBCQUEwQixHQUFHLFVBQVU7O0FBRTdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVNBLENBQUEsRUFBUztFQUM5QjtFQUNBLElBQUssT0FBT0MsU0FBUyxLQUFLLFdBQVcsRUFBRztJQUN2QyxPQUFPRiwwQkFBMEIsQ0FBQ0csSUFBSSxDQUFFRCxTQUFTLENBQUNFLFNBQVUsQ0FBQztFQUM5RDtFQUVBLE9BQU8sS0FBSztBQUNiLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsZ0JBQWdCLEdBQUcsU0FBbkJBLGdCQUFnQkEsQ0FBS0MsT0FBTyxFQUFNO0VBQzlDLE9BQU9BLE9BQU8sQ0FBQ0MsY0FBYztBQUM5QixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFLRixPQUFPLEVBQUVHLGFBQWEsRUFBTTtFQUM3RDtFQUNBLElBQUtBLGFBQWEsS0FBS0MsU0FBUyxFQUFHO0lBQ2xDO0VBQ0Q7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQUtULFNBQVMsQ0FBQyxDQUFDLEVBQUc7SUFDbEJVLFVBQVUsQ0FBRTtNQUFBLE9BQU1MLE9BQU8sQ0FBQ00saUJBQWlCLENBQUVILGFBQWEsRUFBRUEsYUFBYyxDQUFDO0lBQUEsR0FBRSxDQUFFLENBQUM7RUFDakYsQ0FB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