Browse Source

Cleanup of old directives.

pull/65/merge
Sebastian Stehle 9 years ago
parent
commit
a66a45e683
  1. 4
      src/Squidex/app/features/schemas/pages/schemas/schema-form.component.html
  2. 32
      src/Squidex/app/framework/angular/cloak.directive.spec.ts
  3. 23
      src/Squidex/app/framework/angular/cloak.directive.ts
  4. 53
      src/Squidex/app/framework/angular/focus-on-change.directive.spec.ts
  5. 35
      src/Squidex/app/framework/angular/focus-on-change.directive.ts
  6. 2
      src/Squidex/app/framework/declarations.ts
  7. 6
      src/Squidex/app/framework/module.ts
  8. 4
      src/Squidex/app/shared/components/app-form.component.html

4
src/Squidex/app/features/schemas/pages/schemas/schema-form.component.html

@ -8,9 +8,9 @@
<div class="form-group"> <div class="form-group">
<label for="schema-name">Name</label> <label for="schema-name">Name</label>
<sqx-control-errors for="name" [submitted]="createFormSubmitted"></sqx-control-errors> <sqx-control-errors for="name" submitOnly="true" [submitted]="createFormSubmitted"></sqx-control-errors>
<input type="text" class="form-control" id="schema-name" formControlName="name" autocomplete="off" sqxLowerCaseInput /> <input type="text" class="form-control" id="schema-name" formControlName="name" autocomplete="off" sqxLowerCaseInput sqxFocusOnInit />
<small class="form-text text-muted"> <small class="form-text text-muted">
The schema name becomes part of the api url,<br /> e.g {{apiUrl.buildUrl("api/content/")}}{{appName}}/<b>{{schemaName | async}}</b>/. The schema name becomes part of the api url,<br /> e.g {{apiUrl.buildUrl("api/content/")}}{{appName}}/<b>{{schemaName | async}}</b>/.

32
src/Squidex/app/framework/angular/cloak.directive.spec.ts

@ -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();
});
});

23
src/Squidex/app/framework/angular/cloak.directive.ts

@ -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);
}
}

53
src/Squidex/app/framework/angular/focus-on-change.directive.spec.ts

@ -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;
});
});

35
src/Squidex/app/framework/angular/focus-on-change.directive.ts

@ -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);
}
}

2
src/Squidex/app/framework/declarations.ts

@ -8,14 +8,12 @@
export * from './angular/animations'; export * from './angular/animations';
export * from './angular/autocomplete.component'; export * from './angular/autocomplete.component';
export * from './angular/can-deactivate.guard'; export * from './angular/can-deactivate.guard';
export * from './angular/cloak.directive';
export * from './angular/control-errors.component'; export * from './angular/control-errors.component';
export * from './angular/copy.directive'; export * from './angular/copy.directive';
export * from './angular/date-time-editor.component'; export * from './angular/date-time-editor.component';
export * from './angular/date-time.pipes'; export * from './angular/date-time.pipes';
export * from './angular/dropdown.component'; export * from './angular/dropdown.component';
export * from './angular/file-drop.directive'; export * from './angular/file-drop.directive';
export * from './angular/focus-on-change.directive';
export * from './angular/focus-on-init.directive'; export * from './angular/focus-on-init.directive';
export * from './angular/geolocation-editor.component'; export * from './angular/geolocation-editor.component';
export * from './angular/http-extensions-impl'; export * from './angular/http-extensions-impl';

6
src/Squidex/app/framework/module.ts

@ -15,7 +15,6 @@ import {
AutocompleteComponent, AutocompleteComponent,
CanDeactivateGuard, CanDeactivateGuard,
ClipboardService, ClipboardService,
CloakDirective,
ControlErrorsComponent, ControlErrorsComponent,
CopyDirective, CopyDirective,
DateTimeEditorComponent, DateTimeEditorComponent,
@ -25,7 +24,6 @@ import {
DropdownComponent, DropdownComponent,
DurationPipe, DurationPipe,
FileDropDirective, FileDropDirective,
FocusOnChangeDirective,
FocusOnInitDirective, FocusOnInitDirective,
FromNowPipe, FromNowPipe,
GeolocationEditorComponent, GeolocationEditorComponent,
@ -76,7 +74,6 @@ import {
], ],
declarations: [ declarations: [
AutocompleteComponent, AutocompleteComponent,
CloakDirective,
ControlErrorsComponent, ControlErrorsComponent,
CopyDirective, CopyDirective,
DateTimeEditorComponent, DateTimeEditorComponent,
@ -86,7 +83,6 @@ import {
DropdownComponent, DropdownComponent,
DurationPipe, DurationPipe,
FileDropDirective, FileDropDirective,
FocusOnChangeDirective,
FocusOnInitDirective, FocusOnInitDirective,
FromNowPipe, FromNowPipe,
GeolocationEditorComponent, GeolocationEditorComponent,
@ -121,7 +117,6 @@ import {
], ],
exports: [ exports: [
AutocompleteComponent, AutocompleteComponent,
CloakDirective,
ControlErrorsComponent, ControlErrorsComponent,
CopyDirective, CopyDirective,
DateTimeEditorComponent, DateTimeEditorComponent,
@ -131,7 +126,6 @@ import {
DropdownComponent, DropdownComponent,
DurationPipe, DurationPipe,
FileDropDirective, FileDropDirective,
FocusOnChangeDirective,
FocusOnInitDirective, FocusOnInitDirective,
FromNowPipe, FromNowPipe,
GeolocationEditorComponent, GeolocationEditorComponent,

4
src/Squidex/app/shared/components/app-form.component.html

@ -8,9 +8,9 @@
<div class="form-group"> <div class="form-group">
<label for="app-name">Name</label> <label for="app-name">Name</label>
<sqx-control-errors for="name" [submitted]="createFormSubmitted"></sqx-control-errors> <sqx-control-errors for="name" submitOnly="true" [submitted]="createFormSubmitted"></sqx-control-errors>
<input type="text" class="form-control" id="app-name" formControlName="name" autocomplete="off" sqxLowerCaseInput /> <input type="text" class="form-control" id="app-name" formControlName="name" autocomplete="off" sqxLowerCaseInput sqxFocusOnInit />
<small class="form-text text-muted"> <small class="form-text text-muted">
The app name becomes part of the api url,<br /> e.g {{apiUrl.buildUrl("api/content/")}}<b>{{appName | async}}</b>/. The app name becomes part of the api url,<br /> e.g {{apiUrl.buildUrl("api/content/")}}<b>{{appName | async}}</b>/.

Loading…
Cancel
Save