Skip to content

Commit 6180cb8

Browse files
committed
fix(input): pass the control classes down to the native input
this is to make the native input, ion-input and item all have the same classes for the control references #6040
1 parent 702a882 commit 6180cb8

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

src/components/input/input-base.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,25 +99,36 @@ export class InputBase {
9999
}
100100
};
101101

102-
this.setItemControlCss();
102+
this.setItemInputControlCss();
103103
}
104104

105105
ngAfterContentChecked() {
106-
this.setItemControlCss();
106+
this.setItemInputControlCss();
107107
}
108108

109-
private setItemControlCss() {
109+
private setItemInputControlCss() {
110110
let item = this._item;
111+
let nativeInput = this._native;
111112
let inputControl = this.inputControl;
112113

114+
// Set the control classes on the item
113115
if (item && inputControl) {
114-
item.setCssClass('ng-untouched', inputControl.untouched);
115-
item.setCssClass('ng-touched', inputControl.touched);
116-
item.setCssClass('ng-pristine', inputControl.pristine);
117-
item.setCssClass('ng-dirty', inputControl.dirty);
118-
item.setCssClass('ng-valid', inputControl.valid);
119-
item.setCssClass('ng-invalid', !inputControl.valid);
116+
this.setControlCss(item, inputControl);
120117
}
118+
119+
// Set the control classes on the native input
120+
if (nativeInput && inputControl) {
121+
this.setControlCss(nativeInput, inputControl);
122+
}
123+
}
124+
125+
private setControlCss(element, control) {
126+
element.setCssClass('ng-untouched', control.untouched);
127+
element.setCssClass('ng-touched', control.touched);
128+
element.setCssClass('ng-pristine', control.pristine);
129+
element.setCssClass('ng-dirty', control.dirty);
130+
element.setCssClass('ng-valid', control.valid);
131+
element.setCssClass('ng-invalid', !control.valid);
121132
}
122133

123134
ngOnDestroy() {

src/components/input/native-input.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,10 @@ export class NativeInput {
164164
return this.element().value;
165165
}
166166

167+
setCssClass(cssClass: string, shouldAdd: boolean) {
168+
this._renderer.setElementClass(this._elementRef.nativeElement, cssClass, shouldAdd);
169+
}
170+
167171
element(): HTMLInputElement {
168172
return this._elementRef.nativeElement;
169173
}

0 commit comments

Comments
 (0)