fix(inputs): apply ng form classes (#18820)

This commit is contained in:
Manu MA
2019-07-17 17:46:22 +02:00
committed by GitHub
parent 7ae9303a97
commit 53179c475c
3 changed files with 18 additions and 12 deletions

View File

@ -3,6 +3,7 @@ import { applyPolyfills, defineCustomElements } from '@ionic/core/loader';
import { Config } from './providers/config';
import { IonicWindow } from './types/interfaces';
import { raf } from './util/util';
export function appInitialize(config: Config, doc: Document, zone: NgZone) {
return (): any => {
@ -23,12 +24,8 @@ export function appInitialize(config: Config, doc: Document, zone: NgZone) {
return defineCustomElements(win, {
exclude: ['ion-tabs', 'ion-tab'],
syncQueue: true,
raf,
jmp: (h: any) => zone.runOutsideAngular(h),
raf: h => {
return zone.runOutsideAngular(() => {
return (win.__zone_symbol__requestAnimationFrame) ? win.__zone_symbol__requestAnimationFrame(h) : requestAnimationFrame(h);
});
},
ael(elm, eventName, cb, opts) {
(elm as any)[aelFn](eventName, cb, opts);
},

View File

@ -1,6 +1,8 @@
import { ElementRef, HostListener } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { raf } from '../../util/util';
export class ValueAccessor implements ControlValueAccessor {
private onChange: (value: any) => void = () => {/**/};
@ -42,14 +44,16 @@ export class ValueAccessor implements ControlValueAccessor {
}
export function setIonicClasses(element: ElementRef) {
const input = element.nativeElement as HTMLElement;
const classes = getClasses(input);
setClasses(input, classes);
raf(() => {
const input = element.nativeElement as HTMLElement;
const classes = getClasses(input);
setClasses(input, classes);
const item = input.closest('ion-item');
if (item) {
setClasses(item, classes);
}
const item = input.closest('ion-item');
if (item) {
setClasses(item, classes);
}
});
}
function getClasses(element: HTMLElement) {

View File

@ -1,5 +1,10 @@
import { HTMLStencilElement } from '../types/interfaces';
export const raf = (h: any) => {
const win = window as any;
return (win.__zone_symbol__requestAnimationFrame) ? win.__zone_symbol__requestAnimationFrame(h) : requestAnimationFrame(h);
};
export function proxyMethod(ctrlName: string, doc: Document, methodName: string, ...args: any[]) {
const controller = ensureElementInBody(ctrlName, doc);
return controller.componentOnReady()