Skip to content

Commit 2a50547

Browse files
authored
Merge pull request patw0929#214 from adrienharnay/patch-2
Provide fullNumber and isValid when onSelectFlag
2 parents e368560 + 4e0941a commit 2a50547

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

__tests__/FlagDropDown.test.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import fs from 'fs';
88
import IntlTelInput from '../src/components/IntlTelInputApp';
99
import FlagDropDown from '../src/components/FlagDropDown';
1010
import CountryList from '../src/components/CountryList';
11+
import TelInput from '../src/components/TelInput';
1112

1213
describe('FlagDropDown', function () { // eslint-disable-line func-names
1314
let libphonenumberUtils;
@@ -440,26 +441,31 @@ describe('FlagDropDown', function () { // eslint-disable-line func-names
440441

441442
it('onSelectFlag', () => {
442443
let expected = '';
443-
const onSelectFlag = (currentNumber, countryData) => {
444-
expected = Object.assign({}, { currentNumber, ...countryData });
444+
const onSelectFlag = (currentNumber, countryData, fullNumber, isValid) => {
445+
expected = Object.assign({}, { currentNumber, fullNumber, isValid, ...countryData });
445446
};
446447

447448
this.params.onSelectFlag = onSelectFlag;
448449
const subject = this.makeSubject();
449450
const flagComponent = subject.find(FlagDropDown);
451+
const inputComponent = subject.find(TelInput);
450452
const countryListComponent = subject.find(CountryList);
451453

452454
requests[0].respond(200,
453455
{ 'Content-Type': 'text/javascript' },
454456
libphonenumberUtils);
457+
window.eval(getScript().text);
455458

459+
inputComponent.simulate('change', { target: { value: '+8109012345678' } });
456460
flagComponent.simulate('click');
457461
const japanOption = countryListComponent.find('[data-country-code="jp"]');
458462

459463
japanOption.simulate('click');
460464

461465
expect(expected).toEqual({
462-
currentNumber: '',
466+
currentNumber: '+8109012345678',
467+
fullNumber: '+81 90-1234-5678',
468+
isValid: true,
463469
name: 'Japan (日本)',
464470
iso2: 'jp',
465471
dialCode: '81',

src/components/IntlTelInputApp.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,15 @@ class IntlTelInputApp extends Component {
311311
typeof this.props.onSelectFlag === 'function') {
312312
const currentNumber = this.state.value;
313313

314-
this.props.onSelectFlag(currentNumber, this.selectedCountryData);
314+
const fullNumber = this.formatFullNumber(currentNumber);
315+
const isValid = this.isValidNumber(fullNumber);
316+
317+
this.props.onSelectFlag(
318+
currentNumber,
319+
this.selectedCountryData,
320+
fullNumber,
321+
isValid,
322+
);
315323
}
316324
});
317325
}

src/example.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ class DemoComponent extends Component {
5858
});
5959
}
6060

61-
selectFlagHandler(name, currentNumber, selectedCountryData) {
62-
log(currentNumber, selectedCountryData);
61+
selectFlagHandler(name, currentNumber, selectedCountryData, fullNumber, isValid) {
62+
log(currentNumber, selectedCountryData, fullNumber, isValid);
6363
this.setState({
6464
[name]: currentNumber,
6565
});

0 commit comments

Comments
 (0)