@foxford/ui 2.3.1 → 2.3.2
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.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from'@babel/runtime/helpers/
|
|
1
|
+
import t from'@babel/runtime/helpers/objectWithoutProperties';import e from'@babel/runtime/helpers/objectSpread2';import{PureComponent as a}from'react';import{Input as r}from'../Input/Input.js';import{COUNTRY_DATA as s,DEFAULT_MASK as o,INITIAL_MASK as n,REGEXPS as i,RUSSIAN_PHONE_WITHOUT_COUNTY_CODE_LENGTH as l}from'./constants.js';import{jsx as u}from'react/jsx-runtime';var p=["countryData","defaultMask","initialMask","stripValue"];var c=function(t){var e=arguments.length>0&&void 0!==t?t:'';return e.replace(i.NOT_NUMBERS,'')};class h extends a{constructor(t){var a;super(t),a=this,this.autocorrectOf8=void 0,this.autocorrectOf9=void 0,this.getUpdates=function(t,e){var r=arguments.length>1&&void 0!==e?e:void 0;var{countryData:o,defaultMask:n,initialMask:u}=a.props;var p=c(t);var h=u;var v=null;var m=!1;var d=!1;if(!p)return{mask:h,numbers:p,startsFrom8:m,startsFrom9:d,regexp:v};var g=!1;for(var f=0;f<o.length;f++)p.startsWith(o[f][1])&&([,,h,v]=o[f],g=0===f||1===f);return m=g&&i.FROM_8.test(p)&&a.autocorrectOf8,d=(!h||p.length===l&&''===r)&&a.autocorrectOf9&&i.FROM_9.test(p),m&&(h=s[0][2],a.autocorrectOf8=!1),d&&(h=s[0][2],a.autocorrectOf9=!1),h||(h=n),{mask:h,numbers:p,startsFrom8:m,startsFrom9:d,regexp:v}},this.change=t=>{var{mask:e}=this.getUpdates(t);this.setState({mask:e})},this.handleChange=t=>{t.persist();var{onChange:e,stripValue:a}=this.props;if(e){var r=t;a&&(r.target.value=c(t.target.value)),e(r)}},this.beforeMaskedValueChange=(t,a)=>{var{mask:r,numbers:s,startsFrom8:o,startsFrom9:n,regexp:l}=this.getUpdates(t.value,a.value);return this.setState({mask:r,regexp:l}),n?{selection:1===s.length?{start:5,end:5}:t.selection,value:t.value.replace(i.FROM_9,'+79$1')}:o?{selection:{start:2,end:2},value:t.value.replace(i.FROM_8,'+7$1')}:i.FILLED.test(a.value)&&1===s.length?{selection:{start:2,end:2},value:t.value}:!i.FILLED.test(a.value)&&i.FILLED.test(t.value)?e(e({},t),{},{selection:t.selection?{start:t.selection.start+1,end:t.selection.end+1}:null}):t},this.autocorrectOf8=!0,this.autocorrectOf9=!0;var{mask:r}=this.getUpdates(t.value||'');this.state={mask:r,regexp:null}}componentDidUpdate(t){var{value:e}=this.props;e!==t.value&&this.change(e)}render(){var a=t(this.props,p);var{mask:s,regexp:o}=this.state;return u(r,e(e({},a),{},{beforeMaskedValueChange:this.beforeMaskedValueChange,mask:s,dataset:{'data-regexp':"".concat(o||'')},onChange:this.handleChange}))}}h.displayName='Input.Phone',h.defaultProps=e({countryData:s,defaultMask:o,initialMask:n,placeholder:'+9 (999) 999-99-99'},r.defaultProps);export{h as InputPhone};
|
|
2
2
|
//# sourceMappingURL=Input.Phone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.Phone.js","sources":["../../../../src/components/Input.Phone/Input.Phone.tsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport { PureComponent } from 'react'\nimport { InputState } from 'react-input-mask'\nimport { Input, InputProps } from '../Input/Input'\nimport {\n COUNTRY_DATA,\n DEFAULT_MASK,\n INITIAL_MASK,\n REGEXPS,\n RUSSIAN_PHONE_WITHOUT_COUNTY_CODE_LENGTH,\n} from './constants'\n\nconst onlyNumbers = (value = ''): string => value.replace(REGEXPS.NOT_NUMBERS, '')\n\nexport interface InputPhoneProps extends InputProps {\n /**\n * Settings for different country codes\n */\n countryData?: string[][]\n /**\n * Default field mask that is set when none of the countryData prop matches\n */\n defaultMask?: string\n /**\n * The default field mask when the phone field is empty is required to enable autocomplete in\n * the browser\n */\n initialMask?: string\n /** If event should return stripped phone value (not for redux forms) */\n stripValue?: boolean\n}\n\ninterface InputPhoneState {\n mask: string\n regexp?: RegExp | null\n}\n\n/**\n * Расширен:\n * - `InputProps`\n */\nexport class InputPhone extends PureComponent<typeof InputPhone.defaultProps & InputPhoneProps, InputPhoneState> {\n static displayName = 'Input.Phone'\n static defaultProps = {\n countryData: COUNTRY_DATA,\n defaultMask: DEFAULT_MASK,\n initialMask: INITIAL_MASK,\n placeholder: '+9 (999) 999-99-99',\n ...Input.defaultProps,\n }\n\n autocorrectOf8: boolean\n autocorrectOf9: boolean\n\n constructor(props: typeof InputPhone.defaultProps & InputPhoneProps) {\n super(props)\n\n this.autocorrectOf8 = true\n this.autocorrectOf9 = true\n\n const { mask } = this.getUpdates(props.value || '')\n\n this.state = { mask, regexp: null }\n }\n\n componentDidUpdate(nextProps: InputPhoneProps) {\n const { value } = this.props\n\n if (value !== nextProps.value) {\n this.change(value)\n }\n }\n\n getUpdates = (\n value: InputPhoneProps['value'],\n prevValue: InputPhoneProps['value'] = undefined\n ): {\n mask: string\n numbers: string\n startsFrom8: boolean\n startsFrom9: boolean\n regexp: RegExp | null\n } => {\n const { countryData, defaultMask, initialMask } = this.props\n const numbers = onlyNumbers(value as string)\n\n let mask = initialMask\n let regexp = null\n let startsFrom8 = false\n let startsFrom9 = false\n\n if (!numbers)\n return {\n mask,\n numbers,\n startsFrom8,\n startsFrom9,\n regexp,\n }\n\n let isRussian = false\n\n for (let i = 0; i < countryData.length; i++) {\n if (numbers.startsWith(countryData[i][1])) {\n ;[, , mask, regexp] = countryData[i]\n isRussian = i === 0 || i === 1\n }\n }\n\n startsFrom8 = isRussian && REGEXPS.FROM_8.test(numbers) && this.autocorrectOf8\n startsFrom9 =\n (!mask || (numbers.length === RUSSIAN_PHONE_WITHOUT_COUNTY_CODE_LENGTH && prevValue === '')) &&\n this.autocorrectOf9 &&\n REGEXPS.FROM_9.test(numbers)\n\n if (startsFrom8) {\n // RUSSIAN_MASK\n mask = COUNTRY_DATA[0][2]\n\n this.autocorrectOf8 = false\n }\n\n if (startsFrom9) {\n // RUSSIAN_MASK\n mask = COUNTRY_DATA[0][2]\n\n this.autocorrectOf9 = false\n }\n\n if (!mask) {\n mask = defaultMask\n }\n\n return {\n mask,\n numbers,\n startsFrom8,\n startsFrom9,\n regexp,\n }\n }\n\n change = (phone: InputPhoneProps['value']) => {\n const { mask } = this.getUpdates(phone)\n\n this.setState({ mask })\n }\n\n handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n e.persist()\n\n const { onChange, stripValue } = this.props\n\n if (onChange) {\n const _e = e\n if (stripValue) _e.target.value = onlyNumbers(e.target.value)\n onChange(_e)\n }\n }\n\n beforeMaskedValueChange = (newState: InputState, oldState: InputState) => {\n const { mask, numbers, startsFrom8, startsFrom9, regexp } = this.getUpdates(newState.value, oldState.value)\n\n this.setState({ mask, regexp })\n\n /**\n * For the correct caret position, when the user enters 9 in the phone field and it's replaced\n * by '+7 (9'\n */\n if (startsFrom9) {\n return {\n selection: numbers.length === 1 ? { start: 5, end: 5 } : newState.selection,\n value: newState.value.replace(REGEXPS.FROM_9, '+79$1'),\n }\n }\n\n if (startsFrom8) {\n return { selection: { start: 2, end: 2 }, value: newState.value.replace(REGEXPS.FROM_8, '+7$1') }\n }\n\n if (REGEXPS.FILLED.test(oldState.value) && numbers.length === 1) {\n return { selection: { start: 2, end: 2 }, value: newState.value }\n }\n\n return newState\n }\n\n render() {\n const {\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n countryData,\n defaultMask,\n initialMask,\n stripValue,\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n ...props\n } = this.props\n const { mask, regexp } = this.state\n\n return (\n <Input\n {...props}\n beforeMaskedValueChange={this.beforeMaskedValueChange}\n mask={mask}\n dataset={{ 'data-regexp': `${regexp || ''}` }}\n onChange={this.handleChange}\n />\n )\n }\n}\n"],"names":["onlyNumbers","t","value","replace","REGEXPS","NOT_NUMBERS","InputPhone","PureComponent","constructor","props","_this","super","this","autocorrectOf8","autocorrectOf9","getUpdates","
|
|
1
|
+
{"version":3,"file":"Input.Phone.js","sources":["../../../../src/components/Input.Phone/Input.Phone.tsx"],"sourcesContent":["/* eslint-disable no-use-before-define */\nimport { PureComponent } from 'react'\nimport { InputState } from 'react-input-mask'\nimport { Input, InputProps } from '../Input/Input'\nimport {\n COUNTRY_DATA,\n DEFAULT_MASK,\n INITIAL_MASK,\n REGEXPS,\n RUSSIAN_PHONE_WITHOUT_COUNTY_CODE_LENGTH,\n} from './constants'\n\nconst onlyNumbers = (value = ''): string => value.replace(REGEXPS.NOT_NUMBERS, '')\n\nexport interface InputPhoneProps extends InputProps {\n /**\n * Settings for different country codes\n */\n countryData?: string[][]\n /**\n * Default field mask that is set when none of the countryData prop matches\n */\n defaultMask?: string\n /**\n * The default field mask when the phone field is empty is required to enable autocomplete in\n * the browser\n */\n initialMask?: string\n /** If event should return stripped phone value (not for redux forms) */\n stripValue?: boolean\n}\n\ninterface InputPhoneState {\n mask: string\n regexp?: RegExp | null\n}\n\n/**\n * Расширен:\n * - `InputProps`\n */\nexport class InputPhone extends PureComponent<typeof InputPhone.defaultProps & InputPhoneProps, InputPhoneState> {\n static displayName = 'Input.Phone'\n static defaultProps = {\n countryData: COUNTRY_DATA,\n defaultMask: DEFAULT_MASK,\n initialMask: INITIAL_MASK,\n placeholder: '+9 (999) 999-99-99',\n ...Input.defaultProps,\n }\n\n autocorrectOf8: boolean\n autocorrectOf9: boolean\n\n constructor(props: typeof InputPhone.defaultProps & InputPhoneProps) {\n super(props)\n\n this.autocorrectOf8 = true\n this.autocorrectOf9 = true\n\n const { mask } = this.getUpdates(props.value || '')\n\n this.state = { mask, regexp: null }\n }\n\n componentDidUpdate(nextProps: InputPhoneProps) {\n const { value } = this.props\n\n if (value !== nextProps.value) {\n this.change(value)\n }\n }\n\n getUpdates = (\n value: InputPhoneProps['value'],\n prevValue: InputPhoneProps['value'] = undefined\n ): {\n mask: string\n numbers: string\n startsFrom8: boolean\n startsFrom9: boolean\n regexp: RegExp | null\n } => {\n const { countryData, defaultMask, initialMask } = this.props\n const numbers = onlyNumbers(value as string)\n\n let mask = initialMask\n let regexp = null\n let startsFrom8 = false\n let startsFrom9 = false\n\n if (!numbers)\n return {\n mask,\n numbers,\n startsFrom8,\n startsFrom9,\n regexp,\n }\n\n let isRussian = false\n\n for (let i = 0; i < countryData.length; i++) {\n if (numbers.startsWith(countryData[i][1])) {\n ;[, , mask, regexp] = countryData[i]\n isRussian = i === 0 || i === 1\n }\n }\n\n startsFrom8 = isRussian && REGEXPS.FROM_8.test(numbers) && this.autocorrectOf8\n startsFrom9 =\n (!mask || (numbers.length === RUSSIAN_PHONE_WITHOUT_COUNTY_CODE_LENGTH && prevValue === '')) &&\n this.autocorrectOf9 &&\n REGEXPS.FROM_9.test(numbers)\n\n if (startsFrom8) {\n // RUSSIAN_MASK\n mask = COUNTRY_DATA[0][2]\n\n this.autocorrectOf8 = false\n }\n\n if (startsFrom9) {\n // RUSSIAN_MASK\n mask = COUNTRY_DATA[0][2]\n\n this.autocorrectOf9 = false\n }\n\n if (!mask) {\n mask = defaultMask\n }\n\n return {\n mask,\n numbers,\n startsFrom8,\n startsFrom9,\n regexp,\n }\n }\n\n change = (phone: InputPhoneProps['value']) => {\n const { mask } = this.getUpdates(phone)\n\n this.setState({ mask })\n }\n\n handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n e.persist()\n\n const { onChange, stripValue } = this.props\n\n if (onChange) {\n const _e = e\n if (stripValue) _e.target.value = onlyNumbers(e.target.value)\n onChange(_e)\n }\n }\n\n beforeMaskedValueChange = (newState: InputState, oldState: InputState) => {\n const { mask, numbers, startsFrom8, startsFrom9, regexp } = this.getUpdates(newState.value, oldState.value)\n\n this.setState({ mask, regexp })\n\n /**\n * For the correct caret position, when the user enters 9 in the phone field and it's replaced\n * by '+7 (9'\n */\n if (startsFrom9) {\n return {\n selection: numbers.length === 1 ? { start: 5, end: 5 } : newState.selection,\n value: newState.value.replace(REGEXPS.FROM_9, '+79$1'),\n }\n }\n\n if (startsFrom8) {\n return { selection: { start: 2, end: 2 }, value: newState.value.replace(REGEXPS.FROM_8, '+7$1') }\n }\n\n if (REGEXPS.FILLED.test(oldState.value) && numbers.length === 1) {\n return { selection: { start: 2, end: 2 }, value: newState.value }\n }\n\n if (!REGEXPS.FILLED.test(oldState.value) && REGEXPS.FILLED.test(newState.value)) {\n return {\n ...newState,\n selection: newState.selection ? { start: newState.selection.start + 1, end: newState.selection.end + 1 } : null,\n }\n }\n\n return newState\n }\n\n render() {\n const {\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n countryData,\n defaultMask,\n initialMask,\n stripValue,\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n ...props\n } = this.props\n const { mask, regexp } = this.state\n\n return (\n <Input\n {...props}\n beforeMaskedValueChange={this.beforeMaskedValueChange}\n mask={mask}\n dataset={{ 'data-regexp': `${regexp || ''}` }}\n onChange={this.handleChange}\n />\n )\n }\n}\n"],"names":["onlyNumbers","t","value","replace","REGEXPS","NOT_NUMBERS","InputPhone","PureComponent","constructor","props","_this","super","this","autocorrectOf8","autocorrectOf9","getUpdates","e","prevValue","undefined","countryData","defaultMask","initialMask","numbers","mask","regexp","startsFrom8","startsFrom9","isRussian","i","length","startsWith","FROM_8","test","RUSSIAN_PHONE_WITHOUT_COUNTY_CODE_LENGTH","FROM_9","COUNTRY_DATA","change","phone","setState","handleChange","persist","onChange","stripValue","_e","target","beforeMaskedValueChange","newState","oldState","selection","start","end","FILLED","_objectSpread","state","componentDidUpdate","nextProps","render","_objectWithoutProperties","_excluded","_jsx","Input","dataset","displayName","defaultProps","DEFAULT_MASK","INITIAL_MASK","placeholder"],"mappings":"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"}
|