mirror of https://github.com/Squidex/squidex.git
8 changed files with 4 additions and 155 deletions
@ -1,32 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Sebastian Stehle. All rights reserved |
|||
*/ |
|||
|
|||
import { CloakDirective } from './cloak.directive'; |
|||
|
|||
describe('CloakDirective', () => { |
|||
it('should remove class from element on ngOnInit', () => { |
|||
let called = false; |
|||
|
|||
const element = { |
|||
nativeElement: {} |
|||
}; |
|||
|
|||
const renderer = { |
|||
setElementClass: (target: any, className: string, isAdd: boolean) => { |
|||
called = true; |
|||
|
|||
expect(target).toBe(element.nativeElement); |
|||
expect(className).toBe('sqx-cloak'); |
|||
expect(isAdd).toBeFalsy(); |
|||
} |
|||
}; |
|||
|
|||
new CloakDirective(<any>element, <any>renderer).ngOnInit(); |
|||
|
|||
expect(called).toBeTruthy(); |
|||
}); |
|||
}); |
|||
@ -1,23 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Sebastian Stehle. All rights reserved |
|||
*/ |
|||
|
|||
import { Directive, ElementRef, OnInit, Renderer } from '@angular/core'; |
|||
|
|||
@Directive({ |
|||
selector: '[sqxCloak]' |
|||
}) |
|||
export class CloakDirective implements OnInit { |
|||
constructor( |
|||
private readonly element: ElementRef, |
|||
private readonly renderer: Renderer |
|||
) { |
|||
} |
|||
|
|||
public ngOnInit() { |
|||
this.renderer.setElementClass(this.element.nativeElement, 'sqx-cloak', false); |
|||
} |
|||
} |
|||
@ -1,53 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Sebastian Stehle. All rights reserved |
|||
*/ |
|||
|
|||
import { ElementRef, Renderer } from '@angular/core'; |
|||
|
|||
import { FocusOnChangeDirective } from './focus-on-change.directive'; |
|||
|
|||
describe('FocusOnChangeDirective', () => { |
|||
let originalTimeout = 0; |
|||
|
|||
beforeEach(() => { |
|||
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; |
|||
|
|||
jasmine.DEFAULT_TIMEOUT_INTERVAL = 800; |
|||
}); |
|||
|
|||
it('should call focus on element when value changes', (done: any) => { |
|||
const calledMethods: string[] = []; |
|||
const calledElements: any[] = []; |
|||
|
|||
const renderer = { |
|||
invokeElementMethod: (elem: any, method: any, args: any) => { |
|||
calledElements.push(elem); |
|||
calledMethods.push(method); |
|||
} |
|||
}; |
|||
|
|||
const element: ElementRef = { |
|||
nativeElement: {} |
|||
}; |
|||
|
|||
const directive = new FocusOnChangeDirective(element, renderer as Renderer); |
|||
directive.select = true; |
|||
directive.ngOnChanges(); |
|||
|
|||
expect(calledMethods).toEqual([]); |
|||
|
|||
setTimeout(() => { |
|||
expect(calledMethods).toEqual(['focus', 'select']); |
|||
expect(calledElements).toEqual([element.nativeElement, element.nativeElement]); |
|||
|
|||
done(); |
|||
}, 400); |
|||
}); |
|||
|
|||
afterEach(() => { |
|||
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; |
|||
}); |
|||
}); |
|||
@ -1,35 +0,0 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Sebastian Stehle. All rights reserved |
|||
*/ |
|||
|
|||
import { Directive, ElementRef, Input, OnChanges, Renderer }from '@angular/core'; |
|||
|
|||
@Directive({ |
|||
selector: '[sqxFocusOnChange]' |
|||
}) |
|||
export class FocusOnChangeDirective implements OnChanges { |
|||
@Input() |
|||
public sqxFocusOnChange: any; |
|||
|
|||
@Input() |
|||
public select: boolean; |
|||
|
|||
constructor( |
|||
private readonly element: ElementRef, |
|||
private readonly renderer: Renderer |
|||
) { |
|||
} |
|||
|
|||
public ngOnChanges() { |
|||
setTimeout(() => { |
|||
this.renderer.invokeElementMethod(this.element.nativeElement, 'focus', []); |
|||
|
|||
if (this.select) { |
|||
this.renderer.invokeElementMethod(this.element.nativeElement, 'select', []); |
|||
} |
|||
}, 100); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue