[ADF-864] codelyzer form component (#2076)

This commit is contained in:
Eugenio Romano
2017-07-12 20:53:07 +01:00
parent 6f8e984d75
commit 8cdb276dc4
133 changed files with 1078 additions and 850 deletions

View File

@@ -42,7 +42,8 @@ module.exports = {
loader: 'tslint-loader',
options: {
emitErrors: true,
failOnHint: true
failOnHint: true,
fix: true
},
exclude: [/node_modules/, /bundles/, /dist/, /demo/]
},

View File

@@ -57,7 +57,7 @@ let customResolver: ComponentTypeResolver = (field: FormFieldModel): Type<{}> =>
if (field) {
let params = field.params;
}
return UnknownWidget;
return UnknownWidgetComponent;
};
formRenderingService.setComponentTypeResolver('text', customResolver, true);
```
@@ -66,25 +66,25 @@ formRenderingService.setComponentTypeResolver('text', customResolver, true);
Stencil Name | Field Type | Component Type |
| --- | --- | --- |
| Text | text | TextWidget |
| Number | integer | NumberWidget |
| Multi-line text | multi-line-text | MultilineTextWidget |
| Checkbox | boolean | CheckboxWidget |
| Dropdown | dropdown | DropdownWidget |
| Date | date | DateWidget |
| Amount | amount | AmountWidget |
| Radio buttons | radio-buttons | RadioButtonsWidget |
| Hyperlink | hyperlink | HyperlinkWidget |
| Display value | readonly | DisplayValueWidget |
| Display text | readonly-text | DisplayTextWidget |
| Typeahead | typeahead | TypeaheadWidget |
| People | people | PeopleWidget |
| Group of people | functional-group | FunctionalGroupWidget |
| Dynamic table | dynamic-table | DynamicTableWidget |
| N/A | container | ContainerWidget (layout component) |
| Header | group | ContainerWidget |
| Attach | upload | AttachWidget or UploadWidget (based on metadata) |
| N/A | N/A | UnknownWidget |
| Text | text | TextWidgetComponent |
| Number | integer | NumberWidgetComponent |
| Multi-line text | multi-line-text | MultilineTextWidgetComponentComponent |
| Checkbox | boolean | CheckboxWidgetComponent |
| Dropdown | dropdown | DropdownWidgetComponent |
| Date | date | DateWidgetComponent |
| Amount | amount | AmountWidgetComponent |
| Radio buttons | radio-buttons | RadioButtonsWidgetComponent |
| Hyperlink | hyperlink | HyperlinkWidgetComponent |
| Display value | readonly | DisplayValueWidgetComponent |
| Display text | readonly-text | DisplayTextWidgetComponentComponent |
| Typeahead | typeahead | TypeaheadWidgetComponent |
| People | people | PeopleWidgetComponent |
| Group of people | functional-group | FunctionalGroupWidgetComponent |
| Dynamic table | dynamic-table | DynamicTableWidgetComponent |
| N/A | container | ContainerWidgetComponent (layout component) |
| Header | group | ContainerWidgetComponent |
| Attach | upload | AttachWidgetComponent or UploadWidgetComponent (based on metadata) |
| N/A | N/A | UnknownWidgetComponent |

View File

@@ -20,10 +20,10 @@ import { HttpModule } from '@angular/http';
import { MdButtonModule, MdCardModule, MdCheckboxModule, MdIconModule, MdInputModule, MdSlideToggleModule, MdTabsModule } from '@angular/material';
import { CoreModule } from 'ng2-alfresco-core';
import { DataTableModule } from 'ng2-alfresco-datatable';
import { ActivitiContent } from './src/components/activiti-content.component';
import { ActivitiContentComponent } from './src/components/activiti-content.component';
import { ActivitiForm } from './src/components/activiti-form.component';
import { ActivitiStartForm } from './src/components/activiti-start-form.component';
import { ADFFormList } from './src/components/adf-form-list.component';
import { ActivitiStartFormComponent } from './src/components/activiti-start-form.component';
import { ADFFormListComponent } from './src/components/adf-form-list.component';
import { FormFieldComponent } from './src/components/form-field/form-field.component';
import { MASK_DIRECTIVE, WIDGET_DIRECTIVES } from './src/components/widgets/index';
import { ActivitiAlfrescoContentService } from './src/services/activiti-alfresco.service';
@@ -48,9 +48,9 @@ export * from './src/events/index';
export const ACTIVITI_FORM_DIRECTIVES: any[] = [
ActivitiForm,
ADFFormList,
ActivitiContent,
ActivitiStartForm,
ADFFormListComponent,
ActivitiContentComponent,
ActivitiStartFormComponent,
FormFieldComponent,
...WIDGET_DIRECTIVES
];

View File

@@ -24,15 +24,15 @@ import { Observable } from 'rxjs/Rx';
import { FormService } from '../services/form.service';
import { EcmModelService } from './../services/ecm-model.service';
import { ActivitiContent } from './activiti-content.component';
import { ActivitiContentComponent } from './activiti-content.component';
import { ContentLinkModel } from './widgets/index';
declare let jasmine: any;
describe('ActivitiContent', () => {
describe('ActivitiContentComponent', () => {
let component: ActivitiContent;
let fixture: ComponentFixture<ActivitiContent>;
let component: ActivitiContentComponent;
let fixture: ComponentFixture<ActivitiContentComponent>;
let debug: DebugElement;
let element: HTMLElement;
@@ -71,7 +71,7 @@ describe('ActivitiContent', () => {
CoreModule.forRoot()
],
declarations: [
ActivitiContent
ActivitiContentComponent
],
providers: [
FormService,
@@ -96,7 +96,7 @@ describe('ActivitiContent', () => {
}));
beforeEach(() => {
fixture = TestBed.createComponent(ActivitiContent);
fixture = TestBed.createComponent(ActivitiContentComponent);
component = fixture.componentInstance;
debug = fixture.debugElement;
element = fixture.nativeElement;

View File

@@ -26,7 +26,7 @@ import { ContentLinkModel } from './widgets/core/content-link.model';
templateUrl: './activiti-content.component.html',
styleUrls: ['./activiti-content.component.css']
})
export class ActivitiContent implements OnChanges {
export class ActivitiContentComponent implements OnChanges {
@Input()
id: string;

View File

@@ -653,7 +653,7 @@ describe('ActivitiForm', () => {
/*
it('should update the visibility when the container raise the change event', (valueChanged) => {
spyOn(formComponent, 'checkVisibility').and.callThrough();
let widget = new ContainerWidget();
let widget = new ContainerWidgetComponent();
let fakeForm = new FormModel();
let fakeField = new FormFieldModel(fakeForm, {id: 'fakeField', value: 'fakeValue'});
widget.formValueChanged.subscribe(field => { valueChanged(); });

View File

@@ -15,6 +15,7 @@
* limitations under the License.
*/
/* tslint:disable */
import { AfterViewChecked, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
import { LogService } from 'ng2-alfresco-core';
import { FormErrorEvent, FormEvent } from './../events/index';

View File

@@ -26,8 +26,8 @@ import { TranslationMock } from './../assets/translation.service.mock';
import { EcmModelService } from './../services/ecm-model.service';
import { FormService } from './../services/form.service';
import { WidgetVisibilityService } from './../services/widget-visibility.service';
import { ActivitiContent } from './activiti-content.component';
import { ActivitiStartForm } from './activiti-start-form.component';
import { ActivitiContentComponent } from './activiti-content.component';
import { ActivitiStartFormComponent } from './activiti-start-form.component';
import { FormFieldComponent } from './form-field/form-field.component';
import { MASK_DIRECTIVE } from './widgets/index';
import { WIDGET_DIRECTIVES } from './widgets/index';
@@ -36,8 +36,8 @@ describe('ActivitiStartForm', () => {
let componentHandler: any;
let formService: FormService;
let component: ActivitiStartForm;
let fixture: ComponentFixture<ActivitiStartForm>;
let component: ActivitiStartFormComponent;
let fixture: ComponentFixture<ActivitiStartFormComponent>;
let getStartFormSpy: jasmine.Spy;
const exampleId1 = 'my:process1';
@@ -50,9 +50,9 @@ describe('ActivitiStartForm', () => {
MdInputModule,
CoreModule.forRoot()],
declarations: [
ActivitiStartForm,
ActivitiStartFormComponent,
FormFieldComponent,
ActivitiContent,
ActivitiContentComponent,
...WIDGET_DIRECTIVES,
...MASK_DIRECTIVE
],
@@ -67,7 +67,7 @@ describe('ActivitiStartForm', () => {
beforeEach(() => {
fixture = TestBed.createComponent(ActivitiStartForm);
fixture = TestBed.createComponent(ActivitiStartFormComponent);
component = fixture.componentInstance;
formService = fixture.debugElement.injector.get(FormService);

View File

@@ -15,20 +15,10 @@
* limitations under the License.
*/
import {
AfterViewChecked,
Component,
ElementRef,
EventEmitter,
Input,
OnChanges,
Output,
SimpleChanges,
ViewChild
} from '@angular/core';
import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';
import { AlfrescoTranslationService, LogService } from 'ng2-alfresco-core';
import { FormService } from './../services/form.service';
import { WidgetVisibilityService } from './../services/widget-visibility.service';
import { WidgetVisibilityService } from './../services/widget-visibility.service';
import { ActivitiForm } from './activiti-form.component';
import { ContentLinkModel } from './widgets/core/content-link.model';
import { FormOutcomeModel } from './widgets/core/index';
@@ -55,7 +45,7 @@ import { FormOutcomeModel } from './widgets/core/index';
templateUrl: './activiti-start-form.component.html',
styleUrls: ['./activiti-form.component.css']
})
export class ActivitiStartForm extends ActivitiForm implements AfterViewChecked, OnChanges {
export class ActivitiStartFormComponent extends ActivitiForm implements OnChanges, OnInit {
@Input()
processDefinitionId: string;

View File

@@ -22,14 +22,14 @@ import { DataTableModule } from 'ng2-alfresco-datatable';
import { Observable } from 'rxjs/Rx';
import { EcmModelService } from '../services/ecm-model.service';
import { FormService } from '../services/form.service';
import { ADFFormList } from './adf-form-list.component';
import { ADFFormListComponent } from './adf-form-list.component';
declare let jasmine: any;
describe('TaskAttachmentList', () => {
let component: ADFFormList;
let fixture: ComponentFixture<ADFFormList>;
let component: ADFFormListComponent;
let fixture: ComponentFixture<ADFFormListComponent>;
let service: FormService;
let componentHandler: any;
@@ -40,7 +40,7 @@ describe('TaskAttachmentList', () => {
DataTableModule
],
declarations: [
ADFFormList
ADFFormListComponent
],
providers: [
FormService,
@@ -63,7 +63,7 @@ describe('TaskAttachmentList', () => {
beforeEach(async(() => {
fixture = TestBed.createComponent(ADFFormList);
fixture = TestBed.createComponent(ADFFormListComponent);
component = fixture.componentInstance;
service = TestBed.get(FormService);

View File

@@ -24,7 +24,7 @@ import { FormService } from './../services/form.service';
templateUrl: './adf-form-list.component.html',
styleUrls: ['./adf-form-list.component.css']
})
export class ADFFormList implements OnChanges {
export class ADFFormListComponent implements OnChanges {
@Input()
forms: any [] = [];

View File

@@ -19,10 +19,10 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CoreModule } from 'ng2-alfresco-core';
import { FormRenderingService } from './../../services/form-rendering.service';
import { WidgetVisibilityService } from './../../services/widget-visibility.service';
import { CheckboxWidget } from './../widgets/checkbox/checkbox.widget';
import { CheckboxWidgetComponent } from './../widgets/checkbox/checkbox.widget';
import { FormFieldModel, FormFieldTypes, FormModel } from './../widgets/core/index';
import { InputMaskDirective } from './../widgets/text/text-mask.component';
import { TextWidget } from './../widgets/text/text.widget';
import { TextWidgetComponent } from './../widgets/text/text.widget';
import { FormFieldComponent } from './form-field.component';
describe('FormFieldComponent', () => {
@@ -37,7 +37,7 @@ describe('FormFieldComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [CoreModule],
declarations: [FormFieldComponent, TextWidget, CheckboxWidget, InputMaskDirective],
declarations: [FormFieldComponent, TextWidgetComponent, CheckboxWidgetComponent, InputMaskDirective],
providers: [
FormRenderingService,
WidgetVisibilityService
@@ -68,7 +68,7 @@ describe('FormFieldComponent', () => {
fixture.detectChanges();
expect(component.componentRef).toBeDefined();
expect(component.componentRef.componentType).toBe(TextWidget);
expect(component.componentRef.componentType).toBe(TextWidgetComponent);
});
xit('should create custom component instance', () => {
@@ -76,12 +76,12 @@ describe('FormFieldComponent', () => {
type: FormFieldTypes.TEXT
});
formRenderingService.setComponentTypeResolver(FormFieldTypes.TEXT, () => CheckboxWidget, true);
formRenderingService.setComponentTypeResolver(FormFieldTypes.TEXT, () => CheckboxWidgetComponent, true);
component.field = field;
fixture.detectChanges();
expect(component.componentRef).toBeDefined();
expect(component.componentRef.componentType).toBe(CheckboxWidget);
expect(component.componentRef.componentType).toBe(CheckboxWidgetComponent);
});
it('should require field to create component', () => {

View File

@@ -22,12 +22,12 @@ import { ActivitiAlfrescoContentService } from '../../../services/activiti-alfre
import { EcmModelService } from './../../../services/ecm-model.service';
import { FormService } from './../../../services/form.service';
import { FormFieldModel } from './../core/form-field.model';
import { AmountWidget } from './amount.widget';
import { AmountWidgetComponent } from './amount.widget';
describe('AmountWidget', () => {
describe('AmountWidgetComponent', () => {
let widget: AmountWidget;
let fixture: ComponentFixture<AmountWidget>;
let widget: AmountWidgetComponent;
let fixture: ComponentFixture<AmountWidgetComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
@@ -36,7 +36,7 @@ describe('AmountWidget', () => {
MdInputModule
],
declarations: [
AmountWidget
AmountWidgetComponent
],
providers: [
FormService,
@@ -47,7 +47,7 @@ describe('AmountWidget', () => {
}));
beforeEach(() => {
fixture = TestBed.createComponent(AmountWidget);
fixture = TestBed.createComponent(AmountWidgetComponent);
widget = fixture.componentInstance;
});
@@ -65,7 +65,7 @@ describe('AmountWidget', () => {
it('should setup default currency', () => {
widget.field = null;
widget.ngOnInit();
expect(widget.currency).toBe(AmountWidget.DEFAULT_CURRENCY);
expect(widget.currency).toBe(AmountWidgetComponent.DEFAULT_CURRENCY);
});
});

View File

@@ -25,11 +25,11 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./amount.widget.css'],
host: baseHost
})
export class AmountWidget extends WidgetComponent implements OnInit {
export class AmountWidgetComponent extends WidgetComponent implements OnInit {
static DEFAULT_CURRENCY: string = '$';
currency: string = AmountWidget.DEFAULT_CURRENCY;
currency: string = AmountWidgetComponent.DEFAULT_CURRENCY;
constructor(public formService: FormService) {
super(formService);

View File

@@ -25,12 +25,12 @@ import { FormFieldTypes } from '../core/form-field-types';
import { EcmModelService } from './../../../services/ecm-model.service';
import { FormService } from './../../../services/form.service';
import { FormFieldModel } from './../core/form-field.model';
import { AttachWidget } from './attach.widget';
import { AttachWidgetComponent } from './attach.widget';
describe('AttachWidget', () => {
describe('AttachWidgetComponent', () => {
let widget: AttachWidget;
let fixture: ComponentFixture<AttachWidget>;
let widget: AttachWidgetComponent;
let fixture: ComponentFixture<AttachWidgetComponent>;
let element: HTMLElement;
let contentService: ActivitiAlfrescoContentService;
let dialogPolyfill: any;
@@ -41,7 +41,7 @@ describe('AttachWidget', () => {
CoreModule.forRoot()
],
declarations: [
AttachWidget
AttachWidgetComponent
],
providers: [
FormService,
@@ -52,7 +52,7 @@ describe('AttachWidget', () => {
}));
beforeEach(() => {
fixture = TestBed.createComponent(AttachWidget);
fixture = TestBed.createComponent(AttachWidgetComponent);
contentService = TestBed.get(ActivitiAlfrescoContentService);
element = fixture.nativeElement;

View File

@@ -31,7 +31,7 @@ declare let dialogPolyfill: any;
templateUrl: './attach.widget.html',
styleUrls: ['./attach.widget.css'], host: baseHost
})
export class AttachWidget extends WidgetComponent implements OnInit {
export class AttachWidgetComponent extends WidgetComponent implements OnInit {
selectedFolderPathId: string;
selectedFolderSiteId: string;

View File

@@ -25,7 +25,7 @@ import { baseHost , WidgetComponent} from './../widget.component';
templateUrl: './checkbox.widget.html',
host: baseHost
})
export class CheckboxWidget extends WidgetComponent {
export class CheckboxWidgetComponent extends WidgetComponent {
constructor(private visibilityService: WidgetVisibilityService, public formService: FormService) {
super(formService);

View File

@@ -18,19 +18,19 @@
import { FormFieldTypes } from './../core/form-field-types';
import { FormFieldModel } from './../core/form-field.model';
import { FormModel } from './../core/form.model';
import { ContainerWidgetModel } from './container.widget.model';
import { ContainerWidgetComponentModel } from './container.widget.model';
describe('ContainerWidgetModel', () => {
describe('ContainerWidgetComponentModel', () => {
it('should store the form reference', () => {
let form = new FormModel();
let field = new FormFieldModel(form);
let model = new ContainerWidgetModel(field);
let model = new ContainerWidgetComponentModel(field);
expect(model.form).toBe(form);
});
it('should be expanded by default', () => {
let container = new ContainerWidgetModel(null);
let container = new ContainerWidgetComponentModel(null);
expect(container.isExpanded).toBeTruthy();
});
@@ -60,7 +60,7 @@ describe('ContainerWidgetModel', () => {
let field = new FormFieldModel(form, json);
let container = new ContainerWidgetModel(field);
let container = new ContainerWidgetComponentModel(field);
expect(container.columns.length).toBe(3);
let col1 = container.columns[0];
@@ -77,7 +77,7 @@ describe('ContainerWidgetModel', () => {
});
it('should allow collapsing only when of a group type', () => {
let container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
let container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.CONTAINER,
params: {
allowCollapse: true
@@ -85,7 +85,7 @@ describe('ContainerWidgetModel', () => {
}));
expect(container.isCollapsible()).toBeFalsy();
container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.GROUP,
params: {
allowCollapse: true
@@ -95,13 +95,13 @@ describe('ContainerWidgetModel', () => {
});
it('should allow collapsing only when explicitly defined in params', () => {
let container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
let container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.GROUP,
params: {}
}));
expect(container.isCollapsible()).toBeFalsy();
container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.GROUP,
params: {
allowCollapse: true
@@ -111,7 +111,7 @@ describe('ContainerWidgetModel', () => {
});
it('should be collapsed by default', () => {
let container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
let container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.GROUP,
params: {
allowCollapse: true,

View File

@@ -20,7 +20,7 @@ import { ContainerModel } from './../core/container.model';
import { FormFieldTypes } from './../core/form-field-types';
import { FormFieldModel } from './../core/form-field.model';
export class ContainerWidgetModel extends ContainerModel {
export class ContainerWidgetComponentModel extends ContainerModel {
columns: ContainerColumnModel[] = [];
isExpanded: boolean = true;

View File

@@ -24,18 +24,18 @@ import { WIDGET_DIRECTIVES } from '../index';
import { MASK_DIRECTIVE } from '../index';
import { EcmModelService } from './../../../services/ecm-model.service';
import { FormService } from './../../../services/form.service';
import { ActivitiContent } from './../../activiti-content.component';
import { ActivitiContentComponent } from './../../activiti-content.component';
import { FormFieldComponent } from './../../form-field/form-field.component';
import { FormFieldTypes } from './../core/form-field-types';
import { FormFieldModel } from './../core/form-field.model';
import { FormModel } from './../core/form.model';
import { ContainerWidget } from './container.widget';
import { ContainerWidgetModel } from './container.widget.model';
import { ContainerWidgetComponent } from './container.widget';
import { ContainerWidgetComponentModel } from './container.widget.model';
describe('ContainerWidget', () => {
describe('ContainerWidgetComponent', () => {
let widget: ContainerWidget;
let fixture: ComponentFixture<ContainerWidget>;
let widget: ContainerWidgetComponent;
let fixture: ComponentFixture<ContainerWidgetComponent>;
let element: HTMLElement;
let contentService: ActivitiAlfrescoContentService;
let componentHandler;
@@ -48,7 +48,7 @@ describe('ContainerWidget', () => {
MdTabsModule,
MdInputModule
],
declarations: [FormFieldComponent, ActivitiContent, WIDGET_DIRECTIVES, MASK_DIRECTIVE],
declarations: [FormFieldComponent, ActivitiContentComponent, WIDGET_DIRECTIVES, MASK_DIRECTIVE],
providers: [
FormService,
EcmModelService,
@@ -58,7 +58,7 @@ describe('ContainerWidget', () => {
}));
beforeEach(() => {
fixture = TestBed.createComponent(ContainerWidget);
fixture = TestBed.createComponent(ContainerWidgetComponent);
contentService = TestBed.get(ActivitiAlfrescoContentService);
element = fixture.nativeElement;
@@ -98,7 +98,7 @@ describe('ContainerWidget', () => {
});
it('should toggle underlying group container', () => {
let container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
let container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.GROUP,
params: {
allowCollapse: true
@@ -115,7 +115,7 @@ describe('ContainerWidget', () => {
});
it('should toggle only collapsible container', () => {
let container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
let container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.GROUP
}));
@@ -128,7 +128,7 @@ describe('ContainerWidget', () => {
it('should toggle only group container', () => {
let container = new ContainerWidgetModel(new FormFieldModel(new FormModel(), {
let container = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(), {
type: FormFieldTypes.CONTAINER,
params: {
allowCollapse: true
@@ -162,13 +162,13 @@ describe('ContainerWidget', () => {
beforeEach(() => {
componentHandler = jasmine.createSpyObj('componentHandler', ['upgradeAllRegistered', 'upgradeElement']);
window['componentHandler'] = componentHandler;
fakeContainerVisible = new ContainerWidgetModel(new FormFieldModel(new FormModel(fakeFormJson), {
fakeContainerVisible = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(fakeFormJson), {
fieldType: FormFieldTypes.GROUP,
id: 'fake-cont-id-1',
name: 'fake-cont-1-name',
type: FormFieldTypes.GROUP
}));
fakeContainerInvisible = new ContainerWidgetModel(new FormFieldModel(new FormModel(fakeFormJson), {
fakeContainerInvisible = new ContainerWidgetComponentModel(new FormFieldModel(new FormModel(fakeFormJson), {
fieldType: FormFieldTypes.GROUP,
id: 'fake-cont-id-2',
name: 'fake-cont-2-name',

View File

@@ -18,7 +18,7 @@
import { AfterViewInit, Component, OnInit } from '@angular/core';
import { FormService } from './../../../services/form.service';
import { baseHost , WidgetComponent } from './../widget.component';
import { ContainerWidgetModel } from './container.widget.model';
import { ContainerWidgetComponentModel } from './container.widget.model';
declare var componentHandler: any;
@@ -28,9 +28,9 @@ declare var componentHandler: any;
styleUrls: ['./container.widget.css'],
host: baseHost
})
export class ContainerWidget extends WidgetComponent implements OnInit, AfterViewInit {
export class ContainerWidgetComponent extends WidgetComponent implements OnInit, AfterViewInit {
content: ContainerWidgetModel;
content: ContainerWidgetComponentModel;
constructor(public formService: FormService) {
super(formService);
@@ -44,7 +44,7 @@ export class ContainerWidget extends WidgetComponent implements OnInit, AfterVie
ngOnInit() {
if (this.field) {
this.content = new ContainerWidgetModel(this.field);
this.content = new ContainerWidgetComponentModel(this.field);
}
}

View File

@@ -15,6 +15,7 @@
* limitations under the License.
*/
/* tslint:disable */
import { FormFieldMetadata } from './form-field-metadata';
export interface FormValues extends FormFieldMetadata {

View File

@@ -24,12 +24,12 @@ import { EcmModelService } from './../../../services/ecm-model.service';
import { FormService } from './../../../services/form.service';
import { FormFieldModel } from './../core/form-field.model';
import { FormModel } from './../core/form.model';
import { DateWidget } from './date.widget';
import { DateWidgetComponent } from './date.widget';
describe('DateWidget', () => {
describe('DateWidgetComponent', () => {
let widget: DateWidget;
let fixture: ComponentFixture<DateWidget>;
let widget: DateWidgetComponent;
let fixture: ComponentFixture<DateWidgetComponent>;
let componentHandler;
let nativeElement: any;
let element: HTMLElement;
@@ -40,7 +40,7 @@ describe('DateWidget', () => {
CoreModule.forRoot()
],
declarations: [
DateWidget
DateWidgetComponent
],
providers: [
FormService,
@@ -57,7 +57,7 @@ describe('DateWidget', () => {
}
};
fixture = TestBed.createComponent(DateWidget);
fixture = TestBed.createComponent(DateWidgetComponent);
element = fixture.nativeElement;
widget = fixture.componentInstance;

View File

@@ -29,7 +29,7 @@ declare var componentHandler: any;
styleUrls: ['./date.widget.css'],
host: baseHost
})
export class DateWidget extends WidgetComponent implements OnInit, AfterViewChecked {
export class DateWidgetComponent extends WidgetComponent implements OnInit, AfterViewChecked {
datePicker: any;

View File

@@ -25,7 +25,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./display-text.widget.css'],
host: baseHost
})
export class DisplayTextWidget extends WidgetComponent {
export class DisplayTextWidgetComponentComponent extends WidgetComponent {
constructor(public formService: FormService) {
super(formService);

View File

@@ -20,18 +20,18 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CoreModule } from 'ng2-alfresco-core';
import { Observable } from 'rxjs/Rx';
import { WidgetVisibilityService } from '../../../services/widget-visibility.service';
import { ActivitiContent } from '../../activiti-content.component';
import { ActivitiContentComponent } from '../../activiti-content.component';
import { FormFieldTypes } from '../core/form-field-types';
import { FormModel } from '../core/form.model';
import { EcmModelService } from './../../../services/ecm-model.service';
import { FormService } from './../../../services/form.service';
import { FormFieldModel } from './../core/form-field.model';
import { DisplayValueWidget } from './display-value.widget';
import { DisplayValueWidgetComponent } from './display-value.widget';
describe('DisplayValueWidget', () => {
describe('DisplayValueWidgetComponent', () => {
let widget: DisplayValueWidget;
let fixture: ComponentFixture<DisplayValueWidget>;
let widget: DisplayValueWidgetComponent;
let fixture: ComponentFixture<DisplayValueWidgetComponent>;
let element: HTMLElement;
let formService: FormService;
@@ -41,8 +41,8 @@ describe('DisplayValueWidget', () => {
CoreModule.forRoot()
],
declarations: [
DisplayValueWidget,
ActivitiContent
DisplayValueWidgetComponent,
ActivitiContentComponent
],
providers: [
FormService,
@@ -54,7 +54,7 @@ describe('DisplayValueWidget', () => {
}));
beforeEach(() => {
fixture = TestBed.createComponent(DisplayValueWidget);
fixture = TestBed.createComponent(DisplayValueWidgetComponent);
formService = TestBed.get(FormService);
element = fixture.nativeElement;

View File

@@ -30,7 +30,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./display-value.widget.css'],
host: baseHost
})
export class DisplayValueWidget extends WidgetComponent implements OnInit {
export class DisplayValueWidgetComponent extends WidgetComponent implements OnInit {
@Output()
error: EventEmitter<any> = new EventEmitter<any>();

View File

@@ -24,18 +24,18 @@ import { WidgetVisibilityService } from '../../../services/widget-visibility.ser
import { FormFieldOption } from './../core/form-field-option';
import { FormFieldModel } from './../core/form-field.model';
import { FormModel } from './../core/form.model';
import { DropdownWidget } from './dropdown.widget';
import { DropdownWidgetComponent } from './dropdown.widget';
describe('DropdownWidget', () => {
describe('DropdownWidgetComponent', () => {
let formService: FormService;
let widget: DropdownWidget;
let widget: DropdownWidgetComponent;
let visibilityService: WidgetVisibilityService;
beforeEach(() => {
formService = new FormService(null, null, null);
visibilityService = new WidgetVisibilityService(null, null);
widget = new DropdownWidget(formService, visibilityService, null);
widget = new DropdownWidgetComponent(formService, visibilityService, null);
widget.field = new FormFieldModel(new FormModel());
});
@@ -100,8 +100,8 @@ describe('DropdownWidget', () => {
});
describe('when template is ready', () => {
let dropDownWidget: DropdownWidget;
let fixture: ComponentFixture<DropdownWidget>;
let dropdownWidgetComponent: DropdownWidgetComponent;
let fixture: ComponentFixture<DropdownWidgetComponent>;
let element: HTMLElement;
let componentHandler;
let stubFormService;
@@ -118,11 +118,11 @@ describe('DropdownWidget', () => {
window['componentHandler'] = componentHandler;
TestBed.configureTestingModule({
imports: [CoreModule],
declarations: [DropdownWidget],
declarations: [DropdownWidgetComponent],
providers: [FormService, EcmModelService, WidgetVisibilityService]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(DropdownWidget);
dropDownWidget = fixture.componentInstance;
fixture = TestBed.createComponent(DropdownWidgetComponent);
dropdownWidgetComponent = fixture.componentInstance;
element = fixture.nativeElement;
});
}));
@@ -134,15 +134,15 @@ describe('DropdownWidget', () => {
visibilityService = fixture.debugElement.injector.get(WidgetVisibilityService);
spyOn(visibilityService, 'refreshVisibility').and.stub();
spyOn(stubFormService, 'getRestFieldValues').and.returnValue(Observable.of(fakeOptionList));
dropDownWidget.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), {
dropdownWidgetComponent.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), {
id: 'dropdown-id',
name: 'date-name',
type: 'dropdown',
readOnly: 'false',
restUrl: 'fake-rest-url'
});
dropDownWidget.field.emptyOption = { id: 'empty', name: 'Choose one...' };
dropDownWidget.field.isVisible = true;
dropdownWidgetComponent.field.emptyOption = { id: 'empty', name: 'Choose one...' };
dropdownWidgetComponent.field.isVisible = true;
fixture.detectChanges();
}));
@@ -155,7 +155,7 @@ describe('DropdownWidget', () => {
}));
it('should select the default value when an option is chosen as default', async(() => {
dropDownWidget.field.value = 'option_2';
dropdownWidgetComponent.field.value = 'option_2';
fixture.detectChanges();
fixture.whenStable()
.then(() => {
@@ -168,7 +168,7 @@ describe('DropdownWidget', () => {
}));
it('should select the empty value when no default is chosen', async(() => {
dropDownWidget.field.value = 'empty';
dropdownWidgetComponent.field.value = 'empty';
fixture.detectChanges();
fixture.whenStable()
.then(() => {
@@ -180,7 +180,7 @@ describe('DropdownWidget', () => {
}));
it('should be not visibile when isVisible is false', async(() => {
dropDownWidget.field.isVisible = false;
dropdownWidgetComponent.field.isVisible = false;
fixture.detectChanges();
fixture.whenStable()
.then(() => {
@@ -190,10 +190,10 @@ describe('DropdownWidget', () => {
}));
it('should became visibile when isVisible is true', async(() => {
dropDownWidget.field.isVisible = false;
dropdownWidgetComponent.field.isVisible = false;
fixture.detectChanges();
expect(element.querySelector('#dropdown-id')).toBeNull();
dropDownWidget.field.isVisible = true;
dropdownWidgetComponent.field.isVisible = true;
fixture.detectChanges();
fixture.whenStable()
.then(() => {
@@ -209,15 +209,15 @@ describe('DropdownWidget', () => {
visibilityService = fixture.debugElement.injector.get(WidgetVisibilityService);
spyOn(visibilityService, 'refreshVisibility').and.stub();
spyOn(stubFormService, 'getRestFieldValuesByProcessId').and.returnValue(Observable.of(fakeOptionList));
dropDownWidget.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
dropdownWidgetComponent.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
id: 'dropdown-id',
name: 'date-name',
type: 'dropdown',
readOnly: 'false',
restUrl: 'fake-rest-url'
});
dropDownWidget.field.emptyOption = { id: 'empty', name: 'Choose one...' };
dropDownWidget.field.isVisible = true;
dropdownWidgetComponent.field.emptyOption = { id: 'empty', name: 'Choose one...' };
dropdownWidgetComponent.field.isVisible = true;
fixture.detectChanges();
}));
@@ -230,7 +230,7 @@ describe('DropdownWidget', () => {
}));
it('should select the default value when an option is chosen as default', async(() => {
dropDownWidget.field.value = 'option_2';
dropdownWidgetComponent.field.value = 'option_2';
fixture.detectChanges();
fixture.whenStable()
.then(() => {
@@ -243,7 +243,7 @@ describe('DropdownWidget', () => {
}));
it('should select the empty value when no default is chosen', async(() => {
dropDownWidget.field.value = 'empty';
dropdownWidgetComponent.field.value = 'empty';
fixture.detectChanges();
fixture.whenStable()
.then(() => {
@@ -255,7 +255,7 @@ describe('DropdownWidget', () => {
}));
it('should be disabled when the field is readonly', async(() => {
dropDownWidget.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
dropdownWidgetComponent.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
id: 'dropdown-id',
name: 'date-name',
type: 'dropdown',

View File

@@ -28,7 +28,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./dropdown.widget.css'],
host: baseHost
})
export class DropdownWidget extends WidgetComponent implements OnInit {
export class DropdownWidgetComponent extends WidgetComponent implements OnInit {
constructor(public formService: FormService,
private visibilityService: WidgetVisibilityService,

View File

@@ -23,7 +23,7 @@ import { WidgetVisibilityService } from '../../../services/widget-visibility.ser
import { EcmModelService } from './../../../services/ecm-model.service';
import { FormService } from './../../../services/form.service';
import { FormFieldModel, FormFieldTypes, FormModel } from './../core/index';
import { DynamicTableWidget } from './dynamic-table.widget';
import { DynamicTableWidgetComponent } from './dynamic-table.widget';
import { DynamicTableColumn, DynamicTableModel, DynamicTableRow } from './dynamic-table.widget.model';
import { BooleanEditorComponent } from './editors/boolean/boolean.editor';
import { DateEditorComponent } from './editors/date/date.editor';
@@ -127,10 +127,10 @@ let fakeFormField = {
]
};
describe('DynamicTableWidget', () => {
describe('DynamicTableWidgetComponent', () => {
let widget: DynamicTableWidget;
let fixture: ComponentFixture<DynamicTableWidget>;
let widget: DynamicTableWidgetComponent;
let fixture: ComponentFixture<DynamicTableWidgetComponent>;
let element: HTMLElement;
let table: DynamicTableModel;
let logService: LogService;
@@ -141,7 +141,7 @@ describe('DynamicTableWidget', () => {
imports: [
CoreModule.forRoot()
],
declarations: [DynamicTableWidget, RowEditorComponent,
declarations: [DynamicTableWidgetComponent, RowEditorComponent,
DropdownEditorComponent, DateEditorComponent, BooleanEditorComponent, TextEditorComponent],
providers: [
FormService,
@@ -163,7 +163,7 @@ describe('DynamicTableWidget', () => {
let elementRefSpy = jasmine.createSpyObj('elementRef', ['']);
elementRefSpy.nativeElement = nativeElementSpy;
fixture = TestBed.createComponent(DynamicTableWidget);
fixture = TestBed.createComponent(DynamicTableWidgetComponent);
element = fixture.nativeElement;
widget = fixture.componentInstance;
widget.content = table;

View File

@@ -29,7 +29,7 @@ import { DynamicTableColumn, DynamicTableModel, DynamicTableRow } from './dynami
styleUrls: ['./dynamic-table.widget.css'],
host: baseHost
})
export class DynamicTableWidget extends WidgetComponent implements OnInit {
export class DynamicTableWidgetComponent extends WidgetComponent implements OnInit {
ERROR_MODEL_NOT_FOUND = 'Table model not found';

View File

@@ -21,14 +21,14 @@ import { FormService } from '../../../services/form.service';
import { FormFieldModel } from '../core/form-field.model';
import { FormModel } from '../core/form.model';
import { GroupModel } from '../core/group.model';
import { FunctionalGroupWidget } from './functional-group.widget';
import { FunctionalGroupWidgetComponent } from './functional-group.widget';
describe('FunctionalGroupWidget', () => {
describe('FunctionalGroupWidgetComponent', () => {
let componentHandler;
let formService: FormService;
let elementRef: ElementRef;
let widget: FunctionalGroupWidget;
let widget: FunctionalGroupWidgetComponent;
beforeEach(() => {
componentHandler = jasmine.createSpyObj('componentHandler', [
@@ -38,7 +38,7 @@ describe('FunctionalGroupWidget', () => {
formService = new FormService(null, null, null);
elementRef = new ElementRef(null);
widget = new FunctionalGroupWidget(formService, elementRef);
widget = new FunctionalGroupWidgetComponent(formService, elementRef);
widget.field = new FormFieldModel(new FormModel());
});
@@ -245,11 +245,11 @@ describe('FunctionalGroupWidget', () => {
});
it('should require element reference to setup textfield', () => {
let w = new FunctionalGroupWidget(formService, null);
let w = new FunctionalGroupWidgetComponent(formService, null);
w.value = '<value>';
expect(w.setupMaterialComponents(componentHandler)).toBeFalsy();
w = new FunctionalGroupWidget(formService, elementRef);
w = new FunctionalGroupWidgetComponent(formService, elementRef);
w.value = '<value>';
expect(w.setupMaterialComponents(componentHandler)).toBeTruthy();
});

View File

@@ -26,7 +26,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./functional-group.widget.css'],
host: baseHost
})
export class FunctionalGroupWidget extends WidgetComponent implements OnInit {
export class FunctionalGroupWidgetComponent extends WidgetComponent implements OnInit {
value: string;
popupVisible: boolean = false;

View File

@@ -18,14 +18,14 @@
import { FormFieldModel } from './../core/form-field.model';
import { FormModel } from './../core/form.model';
import { WidgetComponent } from './../widget.component';
import { HyperlinkWidget } from './hyperlink.widget';
import { HyperlinkWidgetComponent } from './hyperlink.widget';
describe('HyperlinkWidget', () => {
describe('HyperlinkWidgetComponent', () => {
let widget: HyperlinkWidget;
let widget: HyperlinkWidgetComponent;
beforeEach(() => {
widget = new HyperlinkWidget(null);
widget = new HyperlinkWidgetComponent(null);
});
it('should get link text from field display text', () => {

View File

@@ -25,7 +25,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./hyperlink.widget.css'],
host: baseHost
})
export class HyperlinkWidget extends WidgetComponent implements OnInit {
export class HyperlinkWidgetComponent extends WidgetComponent implements OnInit {
linkUrl: string = WidgetComponent.DEFAULT_HYPERLINK_URL;
linkText: string = null;

View File

@@ -15,33 +15,33 @@
* limitations under the License.
*/
import { ContainerWidget } from './container/container.widget';
import { TabsWidget } from './tabs/tabs.widget';
import { UnknownWidget } from './unknown/unknown.widget';
import { ContainerWidgetComponent } from './container/container.widget';
import { TabsWidgetComponent } from './tabs/tabs.widget';
import { UnknownWidgetComponent } from './unknown/unknown.widget';
import { AmountWidget } from './amount/amount.widget';
import { AttachWidget } from './attach/attach.widget';
import { CheckboxWidget } from './checkbox/checkbox.widget';
import { DateWidget } from './date/date.widget';
import { DisplayTextWidget } from './display-text/display-text.widget';
import { DisplayValueWidget } from './display-value/display-value.widget';
import { DropdownWidget } from './dropdown/dropdown.widget';
import { DynamicTableWidget } from './dynamic-table/dynamic-table.widget';
import { AmountWidgetComponent } from './amount/amount.widget';
import { AttachWidgetComponent } from './attach/attach.widget';
import { CheckboxWidgetComponent } from './checkbox/checkbox.widget';
import { DateWidgetComponent } from './date/date.widget';
import { DisplayTextWidgetComponentComponent } from './display-text/display-text.widget';
import { DisplayValueWidgetComponent } from './display-value/display-value.widget';
import { DropdownWidgetComponent } from './dropdown/dropdown.widget';
import { DynamicTableWidgetComponent } from './dynamic-table/dynamic-table.widget';
import { BooleanEditorComponent } from './dynamic-table/editors/boolean/boolean.editor';
import { DateEditorComponent } from './dynamic-table/editors/date/date.editor';
import { DropdownEditorComponent } from './dynamic-table/editors/dropdown/dropdown.editor';
import { RowEditorComponent } from './dynamic-table/editors/row.editor';
import { TextEditorComponent } from './dynamic-table/editors/text/text.editor';
import { FunctionalGroupWidget } from './functional-group/functional-group.widget';
import { HyperlinkWidget } from './hyperlink/hyperlink.widget';
import { MultilineTextWidget } from './multiline-text/multiline-text.widget';
import { NumberWidget } from './number/number.widget';
import { PeopleWidget } from './people/people.widget';
import { RadioButtonsWidget } from './radio-buttons/radio-buttons.widget';
import { FunctionalGroupWidgetComponent } from './functional-group/functional-group.widget';
import { HyperlinkWidgetComponent } from './hyperlink/hyperlink.widget';
import { MultilineTextWidgetComponentComponent } from './multiline-text/multiline-text.widget';
import { NumberWidgetComponent } from './number/number.widget';
import { PeopleWidgetComponent } from './people/people.widget';
import { RadioButtonsWidgetComponent } from './radio-buttons/radio-buttons.widget';
import { InputMaskDirective } from './text/text-mask.component';
import { TextWidget } from './text/text.widget';
import { TypeaheadWidget } from './typeahead/typeahead.widget';
import { UploadWidget } from './upload/upload.widget';
import { TextWidgetComponent } from './text/text.widget';
import { TypeaheadWidgetComponent } from './typeahead/typeahead.widget';
import { UploadWidgetComponent } from './upload/upload.widget';
// core
export * from './widget.component';
@@ -80,27 +80,27 @@ export * from './dynamic-table/editors/text/text.editor';
export * from './text/text-mask.component';
export const WIDGET_DIRECTIVES: any[] = [
UnknownWidget,
TabsWidget,
ContainerWidget,
TextWidget,
NumberWidget,
CheckboxWidget,
MultilineTextWidget,
DropdownWidget,
HyperlinkWidget,
RadioButtonsWidget,
DisplayValueWidget,
DisplayTextWidget,
UploadWidget,
AttachWidget,
TypeaheadWidget,
FunctionalGroupWidget,
PeopleWidget,
DateWidget,
AmountWidget,
UnknownWidgetComponent,
TabsWidgetComponent,
ContainerWidgetComponent,
TextWidgetComponent,
NumberWidgetComponent,
CheckboxWidgetComponent,
MultilineTextWidgetComponentComponent,
DropdownWidgetComponent,
HyperlinkWidgetComponent,
RadioButtonsWidgetComponent,
DisplayValueWidgetComponent,
DisplayTextWidgetComponentComponent,
UploadWidgetComponent,
AttachWidgetComponent,
TypeaheadWidgetComponent,
FunctionalGroupWidgetComponent,
PeopleWidgetComponent,
DateWidgetComponent,
AmountWidgetComponent,
DynamicTableWidget,
DynamicTableWidgetComponent,
DateEditorComponent,
DropdownEditorComponent,
BooleanEditorComponent,

View File

@@ -15,14 +15,14 @@
* limitations under the License.
*/
import { MultilineTextWidget } from './multiline-text.widget';
import { MultilineTextWidgetComponentComponent } from './multiline-text.widget';
describe('MultilineTextWidget', () => {
describe('MultilineTextWidgetComponentComponent', () => {
let widget: MultilineTextWidget;
let widget: MultilineTextWidgetComponentComponent;
beforeEach(() => {
widget = new MultilineTextWidget(null);
widget = new MultilineTextWidgetComponentComponent(null);
});
it('should exist', () => {

View File

@@ -25,7 +25,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./multiline-text.widget.css'],
host: baseHost
})
export class MultilineTextWidget extends WidgetComponent {
export class MultilineTextWidgetComponentComponent extends WidgetComponent {
constructor(public formService: FormService) {
super(formService);

View File

@@ -15,14 +15,14 @@
* limitations under the License.
*/
import { NumberWidget } from './number.widget';
import { NumberWidgetComponent } from './number.widget';
describe('NumberWidget', () => {
describe('NumberWidgetComponent', () => {
let widget: NumberWidget;
let widget: NumberWidgetComponent;
beforeEach(() => {
widget = new NumberWidget(null);
widget = new NumberWidgetComponent(null);
});
it('should exist', () => {

View File

@@ -25,7 +25,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./number.widget.css'],
host: baseHost
})
export class NumberWidget extends WidgetComponent {
export class NumberWidgetComponent extends WidgetComponent {
constructor(public formService: FormService) {
super(formService);

View File

@@ -21,14 +21,14 @@ import { FormService } from '../../../services/form.service';
import { FormFieldModel } from '../core/form-field.model';
import { FormModel } from '../core/form.model';
import { GroupUserModel } from '../core/group-user.model';
import { PeopleWidget } from './people.widget';
import { PeopleWidgetComponent } from './people.widget';
describe('PeopleWidget', () => {
describe('PeopleWidgetComponent', () => {
let componentHandler;
let elementRef: ElementRef;
let formService: FormService;
let widget: PeopleWidget;
let widget: PeopleWidgetComponent;
beforeEach(() => {
componentHandler = jasmine.createSpyObj('componentHandler', [
@@ -38,7 +38,7 @@ describe('PeopleWidget', () => {
formService = new FormService(null, null, null);
elementRef = new ElementRef(null);
widget = new PeopleWidget(formService, elementRef);
widget = new PeopleWidgetComponent(formService, elementRef);
widget.field = new FormFieldModel(new FormModel());
});
@@ -253,11 +253,11 @@ describe('PeopleWidget', () => {
});
it('should require element reference to setup textfield', () => {
let w = new PeopleWidget(formService, null);
let w = new PeopleWidgetComponent(formService, null);
w.value = '<value>';
expect(w.setupMaterialComponents(componentHandler)).toBeFalsy();
w = new PeopleWidget(formService, elementRef);
w = new PeopleWidgetComponent(formService, elementRef);
w.value = '<value>';
expect(w.setupMaterialComponents(componentHandler)).toBeTruthy();
});

View File

@@ -27,7 +27,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./people.widget.css'],
host: baseHost
})
export class PeopleWidget extends WidgetComponent implements OnInit {
export class PeopleWidgetComponent extends WidgetComponent implements OnInit {
popupVisible: boolean = false;
minTermLength: number = 1;

View File

@@ -27,12 +27,12 @@ import { FormFieldTypes } from '../core/form-field-types';
import { FormFieldOption } from './../core/form-field-option';
import { FormFieldModel } from './../core/form-field.model';
import { FormModel } from './../core/form.model';
import { RadioButtonsWidget } from './radio-buttons.widget';
import { RadioButtonsWidgetComponent } from './radio-buttons.widget';
describe('RadioButtonsWidget', () => {
describe('RadioButtonsWidgetComponent', () => {
let formService: FormService;
let widget: RadioButtonsWidget;
let widget: RadioButtonsWidgetComponent;
let visibilityService: WidgetVisibilityService;
let logService: LogServiceMock;
@@ -40,7 +40,7 @@ describe('RadioButtonsWidget', () => {
logService = new LogServiceMock();
formService = new FormService(null, null, logService);
visibilityService = new WidgetVisibilityService(null, logService);
widget = new RadioButtonsWidget(formService, visibilityService, logService);
widget = new RadioButtonsWidgetComponent(formService, visibilityService, logService);
widget.field = new FormFieldModel(new FormModel(), { restUrl: '<url>' });
});
@@ -134,8 +134,8 @@ describe('RadioButtonsWidget', () => {
});
describe('when template is ready', () => {
let radioButtonWidget: RadioButtonsWidget;
let fixture: ComponentFixture<RadioButtonsWidget>;
let radioButtonWidget: RadioButtonsWidgetComponent;
let fixture: ComponentFixture<RadioButtonsWidgetComponent>;
let element: HTMLElement;
let componentHandler;
let stubFormService: FormService;
@@ -150,10 +150,10 @@ describe('RadioButtonsWidget', () => {
window['componentHandler'] = componentHandler;
TestBed.configureTestingModule({
imports: [CoreModule],
declarations: [RadioButtonsWidget],
declarations: [RadioButtonsWidgetComponent],
providers: [FormService, EcmModelService, WidgetVisibilityService]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(RadioButtonsWidget);
fixture = TestBed.createComponent(RadioButtonsWidgetComponent);
radioButtonWidget = fixture.componentInstance;
element = fixture.nativeElement;
});

View File

@@ -28,7 +28,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./radio-buttons.widget.css'],
host: baseHost
})
export class RadioButtonsWidget extends WidgetComponent implements OnInit {
export class RadioButtonsWidgetComponent extends WidgetComponent implements OnInit {
constructor(public formService: FormService,
private visibilityService: WidgetVisibilityService,

View File

@@ -24,17 +24,17 @@ import { FormModel } from '../core/form.model';
import { TabModel } from '../core/tab.model';
import { MASK_DIRECTIVE } from '../index';
import { WIDGET_DIRECTIVES } from '../index';
import { ActivitiContent } from './../../activiti-content.component';
import { ActivitiContentComponent } from './../../activiti-content.component';
import { FormFieldComponent } from './../../form-field/form-field.component';
import { TabsWidget } from './tabs.widget';
import { TabsWidgetComponent } from './tabs.widget';
describe('TabsWidget', () => {
describe('TabsWidgetComponent', () => {
let componentHandler;
let widget: TabsWidget;
let widget: TabsWidgetComponent;
beforeEach(() => {
widget = new TabsWidget();
widget = new TabsWidgetComponent();
componentHandler = jasmine.createSpyObj('componentHandler', [
'upgradeAllRegistered'
@@ -97,8 +97,8 @@ describe('TabsWidget', () => {
});
describe('when template is ready', () => {
let tabWidgetComponent: TabsWidget;
let fixture: ComponentFixture<TabsWidget>;
let tabWidgetComponent: TabsWidgetComponent;
let fixture: ComponentFixture<TabsWidgetComponent>;
let element: HTMLElement;
let fakeTabVisible: TabModel;
let fakeTabInvisible: TabModel;
@@ -106,9 +106,9 @@ describe('TabsWidget', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [CoreModule, MdTabsModule, MdInputModule],
declarations: [FormFieldComponent, ActivitiContent, WIDGET_DIRECTIVES, MASK_DIRECTIVE]
declarations: [FormFieldComponent, ActivitiContentComponent, WIDGET_DIRECTIVES, MASK_DIRECTIVE]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(TabsWidget);
fixture = TestBed.createComponent(TabsWidgetComponent);
tabWidgetComponent = fixture.componentInstance;
element = fixture.nativeElement;
});

View File

@@ -24,7 +24,7 @@ declare var componentHandler: any;
selector: 'tabs-widget',
templateUrl: './tabs.widget.html'
})
export class TabsWidget implements AfterContentChecked, AfterViewInit {
export class TabsWidgetComponent implements AfterContentChecked, AfterViewInit {
@Input()
tabs: TabModel[] = [];

View File

@@ -20,17 +20,17 @@ import { FormFieldTypes } from '../core/form-field-types';
import { FormFieldModel } from '../core/form-field.model';
import { FormModel } from '../core/form.model';
import { InputMaskDirective } from './text-mask.component';
import { TextWidget } from './text.widget';
import { TextWidgetComponent } from './text.widget';
import { CoreModule } from 'ng2-alfresco-core';
import { ActivitiAlfrescoContentService } from '../../../services/activiti-alfresco.service';
import { EcmModelService } from './../../../services/ecm-model.service';
import { FormService } from './../../../services/form.service';
describe('TextWidget', () => {
describe('TextWidgetComponent', () => {
let widget: TextWidget;
let fixture: ComponentFixture<TextWidget>;
let widget: TextWidgetComponent;
let fixture: ComponentFixture<TextWidgetComponent>;
let componentHandler;
let element: HTMLElement;
@@ -40,7 +40,7 @@ describe('TextWidget', () => {
CoreModule.forRoot()
],
declarations: [
TextWidget,
TextWidgetComponent,
InputMaskDirective
],
providers: [
@@ -52,7 +52,7 @@ describe('TextWidget', () => {
}));
beforeEach(() => {
fixture = TestBed.createComponent(TextWidget);
fixture = TestBed.createComponent(TextWidgetComponent);
widget = fixture.componentInstance;
element = fixture.nativeElement;

View File

@@ -25,13 +25,13 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./text.widget.css'],
host: baseHost
})
export class TextWidget extends WidgetComponent implements OnInit {
export class TextWidgetComponent extends WidgetComponent implements OnInit {
private mask;
private isMaskReversed;
mask;
isMaskReversed;
constructor(public formService: FormService) {
super(formService);
super(formService);
}
ngOnInit() {

View File

@@ -26,12 +26,12 @@ import { FormFieldOption } from '../core/form-field-option';
import { FormFieldTypes } from '../core/form-field-types';
import { FormFieldModel } from '../core/form-field.model';
import { FormModel } from '../core/form.model';
import { TypeaheadWidget } from './typeahead.widget';
import { TypeaheadWidgetComponent } from './typeahead.widget';
describe('TypeaheadWidget', () => {
describe('TypeaheadWidgetComponent', () => {
let formService: FormService;
let widget: TypeaheadWidget;
let widget: TypeaheadWidgetComponent;
let visibilityService: WidgetVisibilityService;
let logService: LogServiceMock;
@@ -39,7 +39,7 @@ describe('TypeaheadWidget', () => {
logService = new LogServiceMock();
formService = new FormService(null, null, logService);
visibilityService = new WidgetVisibilityService(null, logService);
widget = new TypeaheadWidget(formService, visibilityService, logService);
widget = new TypeaheadWidgetComponent(formService, visibilityService, logService);
widget.field = new FormFieldModel(new FormModel({ taskId: 'task-id' }));
});
@@ -373,8 +373,8 @@ describe('TypeaheadWidget', () => {
});
describe('when template is ready', () => {
let typeaheadWidget: TypeaheadWidget;
let fixture: ComponentFixture<TypeaheadWidget>;
let typeaheadWidgetComponent: TypeaheadWidgetComponent;
let fixture: ComponentFixture<TypeaheadWidgetComponent>;
let element: HTMLElement;
let componentHandler;
let stubFormService;
@@ -391,11 +391,11 @@ describe('TypeaheadWidget', () => {
window['componentHandler'] = componentHandler;
TestBed.configureTestingModule({
imports: [CoreModule],
declarations: [TypeaheadWidget],
declarations: [TypeaheadWidgetComponent],
providers: [FormService, EcmModelService, WidgetVisibilityService]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(TypeaheadWidget);
typeaheadWidget = fixture.componentInstance;
fixture = TestBed.createComponent(TypeaheadWidgetComponent);
typeaheadWidgetComponent = fixture.componentInstance;
element = fixture.nativeElement;
});
}));
@@ -412,13 +412,13 @@ describe('TypeaheadWidget', () => {
visibilityService = fixture.debugElement.injector.get(WidgetVisibilityService);
spyOn(visibilityService, 'refreshVisibility').and.stub();
spyOn(stubFormService, 'getRestFieldValues').and.returnValue(Observable.of(fakeOptionList));
typeaheadWidget.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), {
typeaheadWidgetComponent.field = new FormFieldModel(new FormModel({ taskId: 'fake-task-id' }), {
id: 'typeahead-id',
name: 'typeahead-name',
type: FormFieldTypes.TYPEAHEAD,
readOnly: false
});
typeaheadWidget.field.isVisible = true;
typeaheadWidgetComponent.field.isVisible = true;
fixture.detectChanges();
}));
@@ -428,8 +428,8 @@ describe('TypeaheadWidget', () => {
}));
it('should show typeahead options', async(() => {
typeaheadWidget.value = 'F';
typeaheadWidget.onKeyUp(null);
typeaheadWidgetComponent.value = 'F';
typeaheadWidgetComponent.onKeyUp(null);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(element.querySelector('#typeahead-id-1')).toBeDefined();
@@ -442,7 +442,7 @@ describe('TypeaheadWidget', () => {
}));
it('should hide not visibile typeahead', async(() => {
typeaheadWidget.field.isVisible = false;
typeaheadWidgetComponent.field.isVisible = false;
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(element.querySelector('#typeahead-id')).toBeNull();
@@ -458,14 +458,14 @@ describe('TypeaheadWidget', () => {
visibilityService = fixture.debugElement.injector.get(WidgetVisibilityService);
spyOn(visibilityService, 'refreshVisibility').and.stub();
spyOn(stubFormService, 'getRestFieldValuesByProcessId').and.returnValue(Observable.of(fakeOptionList));
typeaheadWidget.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
typeaheadWidgetComponent.field = new FormFieldModel(new FormModel({ processDefinitionId: 'fake-process-id' }), {
id: 'typeahead-id',
name: 'typeahead-name',
type: FormFieldTypes.TYPEAHEAD,
readOnly: 'false'
});
typeaheadWidget.field.emptyOption = { id: 'empty', name: 'Choose one...' };
typeaheadWidget.field.isVisible = true;
typeaheadWidgetComponent.field.emptyOption = { id: 'empty', name: 'Choose one...' };
typeaheadWidgetComponent.field.isVisible = true;
fixture.detectChanges();
}));
@@ -475,8 +475,8 @@ describe('TypeaheadWidget', () => {
}));
it('should show typeahead options', async(() => {
typeaheadWidget.value = 'F';
typeaheadWidget.onKeyUp(null);
typeaheadWidgetComponent.value = 'F';
typeaheadWidgetComponent.onKeyUp(null);
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(element.querySelector('#typeahead-id-1')).toBeDefined();

View File

@@ -28,7 +28,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
styleUrls: ['./typeahead.widget.css'],
host: baseHost
})
export class TypeaheadWidget extends WidgetComponent implements OnInit {
export class TypeaheadWidgetComponent extends WidgetComponent implements OnInit {
popupVisible: boolean = false;
minTermLength: number = 1;

View File

@@ -29,7 +29,7 @@ import { baseHost , WidgetComponent } from './../widget.component';
`,
host: baseHost
})
export class UnknownWidget extends WidgetComponent {
export class UnknownWidgetComponent extends WidgetComponent {
constructor(public formService: FormService) {
super(formService);

View File

@@ -22,17 +22,17 @@ import { FormService } from '../../../services/form.service';
import { FormFieldTypes } from '../core/form-field-types';
import { FormModel } from '../core/form.model';
import { FormFieldModel } from './../core/form-field.model';
import { UploadWidget } from './upload.widget';
import { UploadWidgetComponent } from './upload.widget';
describe('UploadWidget', () => {
describe('UploadWidgetComponent', () => {
let componentHandler;
let widget: UploadWidget;
let widget: UploadWidgetComponent;
let formService: FormService;
beforeEach(() => {
formService = new FormService(null, null, null);
widget = new UploadWidget(formService, null);
widget = new UploadWidgetComponent(formService, null);
});
it('should setup with field data', () => {
@@ -85,8 +85,8 @@ describe('UploadWidget', () => {
});
describe('when template is ready', () => {
let uploadWidget: UploadWidget;
let fixture: ComponentFixture<UploadWidget>;
let uploadWidgetComponent: UploadWidgetComponent;
let fixture: ComponentFixture<UploadWidgetComponent>;
let element: HTMLInputElement;
let inputElement: HTMLInputElement;
@@ -98,11 +98,11 @@ describe('UploadWidget', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [CoreModule],
declarations: [UploadWidget],
declarations: [UploadWidgetComponent],
providers: [FormService, EcmModelService]
}).compileComponents().then(() => {
fixture = TestBed.createComponent(UploadWidget);
uploadWidget = fixture.componentInstance;
fixture = TestBed.createComponent(UploadWidgetComponent);
uploadWidgetComponent = fixture.componentInstance;
element = fixture.nativeElement;
});
}));
@@ -113,7 +113,7 @@ describe('UploadWidget', () => {
});
beforeEach(() => {
uploadWidget.field = new FormFieldModel(new FormModel({ taskId: 'fake-upload-id' }), {
uploadWidgetComponent.field = new FormFieldModel(new FormModel({ taskId: 'fake-upload-id' }), {
id: 'upload-id',
name: 'upload-name',
value: '',
@@ -123,7 +123,7 @@ describe('UploadWidget', () => {
});
it('should be disabled on readonly forms', async(() => {
uploadWidget.field.form.readOnly = true;
uploadWidgetComponent.field.form.readOnly = true;
fixture.detectChanges();
inputElement = <HTMLInputElement>element.querySelector('#upload-id');
@@ -136,7 +136,7 @@ describe('UploadWidget', () => {
}));
it('should have the multiple attribute when is selected in parameters', async(() => {
uploadWidget.field.params.multiple = true;
uploadWidgetComponent.field.params.multiple = true;
fixture.detectChanges();
inputElement = <HTMLInputElement>element.querySelector('#upload-id');
@@ -149,7 +149,7 @@ describe('UploadWidget', () => {
}));
it('should not have the multiple attribute if multiple is false', async(() => {
uploadWidget.field.params.multiple = false;
uploadWidgetComponent.field.params.multiple = false;
fixture.detectChanges();
inputElement = <HTMLInputElement>element.querySelector('#upload-id');

View File

@@ -26,7 +26,7 @@ import { baseHost, WidgetComponent } from './../widget.component';
styleUrls: ['./upload.widget.css'],
host: baseHost
})
export class UploadWidget extends WidgetComponent implements OnInit {
export class UploadWidgetComponent extends WidgetComponent implements OnInit {
hasFile: boolean;
fileName: string;

View File

@@ -16,7 +16,7 @@
*/
import { Injectable } from '@angular/core';
import { AlfrescoApi } from 'alfresco-js-api';
import { AlfrescoApi } from 'alfresco-js-api';
import { AlfrescoApiService, LogService } from 'ng2-alfresco-core';
import { Observable } from 'rxjs/Rx';
import { ExternalContent } from '../components/widgets/core/external-content';

View File

@@ -16,11 +16,11 @@
*/
import {
AttachWidget,
AttachWidgetComponent,
FormFieldModel,
FormFieldTypes,
UnknownWidget,
UploadWidget
UnknownWidgetComponent,
UploadWidgetComponent
} from './../components/widgets/index';
import { DefaultTypeResolver, FormRenderingService } from './form-rendering.service';
@@ -40,7 +40,7 @@ describe('FormRenderingService', () => {
}
});
let type = service.resolveComponentType(field);
expect(type).toBe(AttachWidget);
expect(type).toBe(AttachWidgetComponent);
});
it('should resolve Upload field as Upload widget', () => {
@@ -51,44 +51,44 @@ describe('FormRenderingService', () => {
}
});
let type = service.resolveComponentType(field);
expect(type).toBe(UploadWidget);
expect(type).toBe(UploadWidgetComponent);
});
it('should resolve Unknown widget for Upload field', () => {
let resolver = service.getComponentTypeResolver(FormFieldTypes.UPLOAD);
let type = resolver(null);
expect(type).toBe(UnknownWidget);
expect(type).toBe(UnknownWidgetComponent);
});
it('should resolve Uknown widget for unknown field type', () => {
let resolver = service.getComponentTypeResolver('missing-type');
let type = resolver(null);
expect(type).toBe(UnknownWidget);
expect(type).toBe(UnknownWidgetComponent);
});
it('shoulld resolve custom value for unknown field type', () => {
let resolver = service.getComponentTypeResolver('missing-type', AttachWidget);
let resolver = service.getComponentTypeResolver('missing-type', AttachWidgetComponent);
let type = resolver(null);
expect(type).toBe(AttachWidget);
expect(type).toBe(AttachWidgetComponent);
});
it('should fallback to default resolver when field type missing', () => {
let resolver = service.getComponentTypeResolver(null);
let type = resolver(null);
expect(type).toBe(UnknownWidget);
expect(type).toBe(UnknownWidgetComponent);
});
it('should fallback to custom resolver when field type missing', () => {
let resolver = service.getComponentTypeResolver(null, UploadWidget);
let resolver = service.getComponentTypeResolver(null, UploadWidgetComponent);
let type = resolver(null);
expect(type).toBe(UploadWidget);
expect(type).toBe(UploadWidgetComponent);
});
it('should require field type to set resolver for type', () => {
expect(
() => service.setComponentTypeResolver(
null,
DefaultTypeResolver.fromType(UnknownWidget)
DefaultTypeResolver.fromType(UnknownWidgetComponent)
)
).toThrowError('fieldType is null or not defined');
});
@@ -106,23 +106,23 @@ describe('FormRenderingService', () => {
expect(
() => service.setComponentTypeResolver(
FormFieldTypes.TEXT,
DefaultTypeResolver.fromType(UnknownWidget)
DefaultTypeResolver.fromType(UnknownWidgetComponent)
)
).toThrowError('already mapped, use override option if you intend replacing existing mapping.');
});
it('should override existing resolver with explicit flag', () => {
let customResolver = DefaultTypeResolver.fromType(UnknownWidget);
let customResolver = DefaultTypeResolver.fromType(UnknownWidgetComponent);
service.setComponentTypeResolver(FormFieldTypes.TEXT, customResolver, true);
expect(service.getComponentTypeResolver(FormFieldTypes.TEXT)).toBe(customResolver);
});
it('should return default value when resolving with no field', () => {
expect(service.resolveComponentType(null)).toBe(UnknownWidget);
expect(service.resolveComponentType(null)).toBe(UnknownWidgetComponent);
});
it('should return custom value when resolving with no field', () => {
expect(service.resolveComponentType(null, AttachWidget)).toBe(AttachWidget);
expect(service.resolveComponentType(null, AttachWidgetComponent)).toBe(AttachWidgetComponent);
});
});

View File

@@ -18,49 +18,49 @@
import { Injectable, Type } from '@angular/core';
import {
AmountWidget,
AttachWidget,
CheckboxWidget,
ContainerWidget,
DateWidget,
DisplayTextWidget,
DisplayValueWidget,
DropdownWidget,
DynamicTableWidget,
AmountWidgetComponent,
AttachWidgetComponent,
CheckboxWidgetComponent,
ContainerWidgetComponent,
DateWidgetComponent,
DisplayTextWidgetComponentComponent,
DisplayValueWidgetComponent,
DropdownWidgetComponent,
DynamicTableWidgetComponent,
FormFieldModel,
FunctionalGroupWidget,
HyperlinkWidget,
MultilineTextWidget,
NumberWidget,
PeopleWidget,
RadioButtonsWidget,
TextWidget,
TypeaheadWidget,
UnknownWidget,
UploadWidget
FunctionalGroupWidgetComponent,
HyperlinkWidgetComponent,
MultilineTextWidgetComponentComponent,
NumberWidgetComponent,
PeopleWidgetComponent,
RadioButtonsWidgetComponent,
TextWidgetComponent,
TypeaheadWidgetComponent,
UnknownWidgetComponent,
UploadWidgetComponent
} from './../components/widgets/index';
@Injectable()
export class FormRenderingService {
private types: { [key: string]: ComponentTypeResolver } = {
'text': DefaultTypeResolver.fromType(TextWidget),
'integer': DefaultTypeResolver.fromType(NumberWidget),
'multi-line-text': DefaultTypeResolver.fromType(MultilineTextWidget),
'boolean': DefaultTypeResolver.fromType(CheckboxWidget),
'dropdown': DefaultTypeResolver.fromType(DropdownWidget),
'date': DefaultTypeResolver.fromType(DateWidget),
'amount': DefaultTypeResolver.fromType(AmountWidget),
'radio-buttons': DefaultTypeResolver.fromType(RadioButtonsWidget),
'hyperlink': DefaultTypeResolver.fromType(HyperlinkWidget),
'readonly': DefaultTypeResolver.fromType(DisplayValueWidget),
'readonly-text': DefaultTypeResolver.fromType(DisplayTextWidget),
'typeahead': DefaultTypeResolver.fromType(TypeaheadWidget),
'people': DefaultTypeResolver.fromType(PeopleWidget),
'functional-group': DefaultTypeResolver.fromType(FunctionalGroupWidget),
'dynamic-table': DefaultTypeResolver.fromType(DynamicTableWidget),
'container': DefaultTypeResolver.fromType(ContainerWidget),
'group': DefaultTypeResolver.fromType(ContainerWidget)
'text': DefaultTypeResolver.fromType(TextWidgetComponent),
'integer': DefaultTypeResolver.fromType(NumberWidgetComponent),
'multi-line-text': DefaultTypeResolver.fromType(MultilineTextWidgetComponentComponent),
'boolean': DefaultTypeResolver.fromType(CheckboxWidgetComponent),
'dropdown': DefaultTypeResolver.fromType(DropdownWidgetComponent),
'date': DefaultTypeResolver.fromType(DateWidgetComponent),
'amount': DefaultTypeResolver.fromType(AmountWidgetComponent),
'radio-buttons': DefaultTypeResolver.fromType(RadioButtonsWidgetComponent),
'hyperlink': DefaultTypeResolver.fromType(HyperlinkWidgetComponent),
'readonly': DefaultTypeResolver.fromType(DisplayValueWidgetComponent),
'readonly-text': DefaultTypeResolver.fromType(DisplayTextWidgetComponentComponent),
'typeahead': DefaultTypeResolver.fromType(TypeaheadWidgetComponent),
'people': DefaultTypeResolver.fromType(PeopleWidgetComponent),
'functional-group': DefaultTypeResolver.fromType(FunctionalGroupWidgetComponent),
'dynamic-table': DefaultTypeResolver.fromType(DynamicTableWidgetComponent),
'container': DefaultTypeResolver.fromType(ContainerWidgetComponent),
'group': DefaultTypeResolver.fromType(ContainerWidgetComponent)
};
constructor() {
@@ -68,15 +68,15 @@ export class FormRenderingService {
if (field) {
let params = field.params;
if (params && params.link) {
return AttachWidget;
return AttachWidgetComponent;
}
return UploadWidget;
return UploadWidgetComponent;
}
return UnknownWidget;
return UnknownWidgetComponent;
};
}
getComponentTypeResolver(fieldType: string, defaultValue: Type<{}> = UnknownWidget): ComponentTypeResolver {
getComponentTypeResolver(fieldType: string, defaultValue: Type<{}> = UnknownWidgetComponent): ComponentTypeResolver {
if (fieldType) {
return this.types[fieldType] || DefaultTypeResolver.fromType(defaultValue);
}
@@ -100,7 +100,7 @@ export class FormRenderingService {
this.types[fieldType] = resolver;
}
resolveComponentType(field: FormFieldModel, defaultValue: Type<{}> = UnknownWidget): Type<{}> {
resolveComponentType(field: FormFieldModel, defaultValue: Type<{}> = UnknownWidgetComponent): Type<{}> {
if (field) {
let resolver = this.getComponentTypeResolver(field.type, defaultValue);
return resolver(field);
@@ -110,9 +110,7 @@ export class FormRenderingService {
}
export interface ComponentTypeResolver {
(field: FormFieldModel): Type<{}>;
}
export type ComponentTypeResolver = (field: FormFieldModel) => Type<{}>;
export class DefaultTypeResolver {
static fromType(type: Type<{}>): ComponentTypeResolver {

View File

@@ -1,4 +1,7 @@
{
"rulesDirectory": [
"node_modules/codelyzer"
],
"rules": {
"align": [
true,
@@ -105,14 +108,50 @@
"allow-leading-underscore",
"ban-keywords"
],
"callable-types": true,
"import-blacklist": [
true,
"rxjs"
],
"import-spacing": true,
"interface-over-type-literal": true,
"member-access": false,
"no-empty-interface": true,
"no-string-literal": false,
"no-string-throw": true,
"prefer-const": false,
"typeof-compare": true,
"unified-signatures": true,
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type",
"check-module",
"check-decl"
]
"check-type"
],
"directive-selector": [
true,
"attribute",
"app",
"camelCase"
],
"component-selector": [
true,
"element",
"app",
"kebab-case"
],
"ordered-imports": true,
"use-input-property-decorator": true,
"use-output-property-decorator": true,
"use-host-property-decorator": true,
"use-life-cycle-interface": true,
"use-pipe-transform-interface": true,
"component-class-suffix": true,
"directive-class-suffix": true,
"no-access-missing-member": false,
"templates-use-public": true,
"invoke-injectable": true
}
}