Skip to content

Commit bfb2e74

Browse files
aesteves60dpellier
authored andcommitted
feat(phone-number): implem validation & placehoslder
1 parent b899ffb commit bfb2e74

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

packages/components/phone-number/src/components/osds-phone-number/osds-phone-number.tsx

+31-6
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ export class OsdsPhoneNumber implements OdsPhoneNumberAttribute, OdsPhoneNumberE
2626
controller = new OdsPhoneNumberController(this);
2727
parsedCountries: ODS_COUNTRY_ISO_CODE[] = [];
2828

29-
phoneUtil = PhoneNumberUtil.getInstance();
29+
phoneUtils = PhoneNumberUtil.getInstance();
3030

3131
/** @see OdsPhoneNumberAttribute.clearable */
3232
@Prop({ reflect: true }) clearable?: boolean = DEFAULT_ATTRIBUTE.clearable;
@@ -60,6 +60,9 @@ export class OsdsPhoneNumber implements OdsPhoneNumberAttribute, OdsPhoneNumberE
6060
// order matter
6161
this.handlerCountries();
6262
this.isoCode = this.controller.getDefaultIsoCode();
63+
// const number = this.phoneUtils.parseAndKeepRawInput('0642664231', 'fr');
64+
// console.log('number', number)
65+
// console.log('this.isValidNumberForRegion', this.phoneUtils.isValidNumberForRegion(number, 'fr'))
6366
this.locale = this.controller.getDefaultLocale();
6467
this.handlerLocale(this.locale);
6568
this.validateValue();
@@ -110,8 +113,8 @@ export class OsdsPhoneNumber implements OdsPhoneNumberAttribute, OdsPhoneNumberE
110113
const oldNumber =this.controller.parseNumber(event.oldValue);
111114
this.odsValueChange.emit({
112115
...event,
113-
value: number && this.phoneUtil.format(number, PhoneNumberFormat.E164),
114-
oldValue: oldNumber && this.phoneUtil.format(oldNumber, PhoneNumberFormat.E164) || undefined,
116+
value: number && this.phoneUtils.format(number, PhoneNumberFormat.E164),
117+
oldValue: oldNumber && this.phoneUtils.format(oldNumber, PhoneNumberFormat.E164) || undefined,
115118
isoCode: this.isoCode,
116119
})
117120
}
@@ -129,15 +132,37 @@ export class OsdsPhoneNumber implements OdsPhoneNumberAttribute, OdsPhoneNumberE
129132
if (!number) {
130133
return false;
131134
}
132-
return this.phoneUtil.isPossibleNumber(number) && this.phoneUtil.isValidNumberForRegion(number, this.isoCode);
135+
return this.phoneUtils.isPossibleNumber(number) && this.phoneUtils.isValidNumberForRegion(number, this.isoCode);
133136
}
134137

135138
getPlaceholder(): string | undefined {
136139
if (!this.isoCode) {
137140
return undefined;
138141
}
139-
const exampleNumber = this.phoneUtil.getExampleNumber(this.isoCode);
140-
return this.phoneUtil.format(exampleNumber, PhoneNumberFormat.E164);
142+
const exampleNumber = this.phoneUtils.getExampleNumber(this.isoCode);
143+
return this.phoneUtils.format(exampleNumber, PhoneNumberFormat.E164);
144+
}
145+
146+
@Listen('odsValueChange')
147+
handlerInputEventChange(event: CustomEvent<OdsInputValueChangeEventDetail>): void {
148+
event.preventDefault();
149+
this.error = this.isValidInput();
150+
console.log('this.error', this.error)
151+
if(this.error) {
152+
return;
153+
}
154+
this.odsValueChange.emit({
155+
...event.detail,
156+
isoCode: this.isoCode,
157+
})
158+
}
159+
160+
isValidInput(): boolean {
161+
const number = this.phoneUtils.parse(this.value ?? '', this.isoCode);
162+
console.log('number', number);
163+
console.log('this.phoneUtils.isPossibleNumber(number)', this.phoneUtils.isPossibleNumber(number));
164+
console.log('this.phoneUtils.isValidNumberForRegion(number, this.isoCode)', this.phoneUtils.isValidNumberForRegion(number, this.isoCode))
165+
return this.phoneUtils.isPossibleNumber(number) && this.phoneUtils.isValidNumberForRegion(number, this.isoCode);
141166
}
142167

143168
render() {

0 commit comments

Comments
 (0)