Skip to content

Commit 6b84700

Browse files
Merge pull request #22 from Softheon/malvin-dev
Added Currency, DateTime, and PhoneNumber Components and Editors
2 parents 2461eb0 + cc333f8 commit 6b84700

File tree

71 files changed

+1587
-27
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+1587
-27
lines changed

package-lock.json

Lines changed: 38 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"@angular/platform-browser": "^7.2.6",
2727
"@angular/platform-browser-dynamic": "^7.2.6",
2828
"@angular/router": "^7.2.6",
29+
"angular-mydatepicker": "^0.1.2",
2930
"core-js": "^2.6.5",
3031
"ng2-file-upload": "^1.3.0",
3132
"rxjs": "~6.4.0",

projects/forge-lib/ng-package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"lib": {
55
"entryFile": "src/public_api.ts",
66
"umdModuleIds": {
7-
"ng2-file-upload": "ng2-file-upload"
7+
"ng2-file-upload": "ng2-file-upload",
8+
"angular-mydatepicker": "angular-mydatepicker"
89
}
910
}
1011
}

projects/forge-lib/src/lib/core/services/forms.service.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import { EmailComponent } from '../../shared/form-components/concrete/email/emai
1212
import { NumberComponent } from '../../shared/form-components/concrete/number/number.component';
1313
import { RatingComponent } from '../../shared/form-components/concrete/rating/rating.component';
1414
import { TextAreaComponent } from '../../shared/form-components/concrete/text-area/text-area.component';
15+
import { CurrencyComponent } from '../../shared/form-components/concrete/currency/currency.component';
16+
import { DateTimeComponent } from '../../shared/form-components/concrete/date-time/date-time.component';
17+
import { PhoneNumberComponent } from '../../shared/form-components/concrete/phone-number/phone-number.component';
1518

1619

1720
@Injectable({
@@ -234,6 +237,18 @@ export class FormsService {
234237
this.form.components.push(Object.assign(new TextFieldComponent(), component));
235238
break;
236239
}
240+
case "Currency": {
241+
this.form.components.push(Object.assign(new CurrencyComponent(), component));
242+
break;
243+
}
244+
case "Date Time": {
245+
this.form.components.push(Object.assign(new DateTimeComponent(), component));
246+
break;
247+
}
248+
case "Phone Number": {
249+
this.form.components.push(Object.assign(new PhoneNumberComponent(), component));
250+
break;
251+
}
237252
}
238253
});
239254
}

projects/forge-lib/src/lib/modules/form-builder/components/builder/builder.component.spec.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,14 @@ describe('BuilderComponent', () => {
127127
component.generateComponent(ComponentTypes.Email);
128128
component.generateComponent(ComponentTypes.Attachment);
129129
component.generateComponent(ComponentTypes.CheckboxGroup);
130+
component.generateComponent(ComponentTypes.Currency);
131+
component.generateComponent(ComponentTypes.DateTime);
132+
component.generateComponent(ComponentTypes.PhoneNumber);
130133
expect(component.formsService.form.components.length).toBe(component.components.length);
131134
});
135+
136+
it('should create new form', () => {
137+
component.createNewForm();
138+
expect(component.formsService.form.name).toBe('New Form');
139+
});
132140
});

projects/forge-lib/src/lib/modules/form-builder/components/builder/builder.component.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import { FormBuilderConfig } from '../../../../../lib/configs/form-builder-lib-c
1414
import { MultiSelectComponent } from '../../../../shared/form-components/concrete/multi-select/multi-select-component';
1515
import { Form } from '../../../../shared/models/form';
1616
import { ComponentTypes } from '../../../../shared/constants/component-types';
17+
import { CurrencyComponent } from '../../../../shared/form-components/concrete/currency/currency.component';
18+
import { DateTimeComponent } from '../../../../shared/form-components/concrete/date-time/date-time.component';
19+
import { PhoneNumberComponent } from '../../../../shared/form-components/concrete/phone-number/phone-number.component';
1720

1821
@Component({
1922
selector: 'forge-form-builder',
@@ -41,7 +44,10 @@ export class BuilderComponent implements OnInit {
4144
ComponentTypes.Rating,
4245
ComponentTypes.Email,
4346
ComponentTypes.Attachment,
44-
ComponentTypes.CheckboxGroup
47+
ComponentTypes.CheckboxGroup,
48+
ComponentTypes.Currency,
49+
ComponentTypes.DateTime,
50+
ComponentTypes.PhoneNumber
4551
];
4652

4753
/**
@@ -140,6 +146,15 @@ export class BuilderComponent implements OnInit {
140146
} case ComponentTypes.CheckboxGroup: {
141147
this.addComponent(new MultiSelectComponent(), `${ComponentTypes.CheckboxGroup}_${this.index++}`);
142148
break;
149+
} case ComponentTypes.Currency: {
150+
this.addComponent(new CurrencyComponent(), `${ComponentTypes.Currency}_${this.index++}`);
151+
break;
152+
} case ComponentTypes.DateTime: {
153+
this.addComponent(new DateTimeComponent(), `${ComponentTypes.DateTime}_${this.index++}`);
154+
break;
155+
} case ComponentTypes.PhoneNumber: {
156+
this.addComponent(new PhoneNumberComponent(), `${ComponentTypes.PhoneNumber}_${this.index++}`);
157+
break;
143158
}
144159
}
145160
}

projects/forge-lib/src/lib/modules/form-builder/components/field-editor/field-editor.component.spec.ts

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,20 @@ import { EmailEditorValidationComponent } from '../../../..//shared/form-editor-
3333
import { NumberDirective } from '../../../../shared/directives/number.directive';
3434
import { MinValidatorDirective } from '../../../../shared/validators/minValidator';
3535
import { MaxValidatorDirective } from '../../../../shared/validators/maxValidator';
36+
import { CurrencyComponent } from '../../../..//shared/form-components/concrete/currency/currency.component';
37+
import { CurrencyEditorDisplayComponent } from '../../../..//shared/form-editor-components/concrete/currency-editor/display/currency-editor-display.component';
38+
import { CurrencyEditorDataComponent } from '../../../..//shared/form-editor-components/concrete/currency-editor/data/currency-editor-data.component';
39+
import { CurrencyEditorValidationComponent } from '../../../..//shared/form-editor-components/concrete/currency-editor/validation/currency-editor-validation.component';
40+
import { DateTimeComponent } from '../../../..//shared/form-components/concrete/date-time/date-time.component';
41+
import { DateTimeEditorDisplayComponent } from '../../../..//shared/form-editor-components/concrete/date-time-editor/display/date-time-editor-display.component';
42+
import { DateTimeEditorDataComponent } from '../../../..//shared/form-editor-components/concrete/date-time-editor/data/date-time-editor-data.component';
43+
import { DateTimeEditorValidationComponent } from '../../../..//shared/form-editor-components/concrete/date-time-editor/validation/date-time-editor-validation.component';
44+
import { PhoneNumberComponent } from '../../../..//shared/form-components/concrete/phone-number/phone-number.component';
45+
import { PhoneNumberEditorDisplayComponent } from '../../../..//shared/form-editor-components/concrete/phone-number-editor/display/phone-number-editor-display.component';
46+
import { PhoneNumberEditorDataComponent } from '../../../..//shared/form-editor-components/concrete/phone-number-editor/data/phone-number-editor-data.component';
47+
import { PhoneNumberEditorValidationComponent } from '../../../..//shared/form-editor-components/concrete/phone-number-editor/validation/phone-number-editor-validation.component';
48+
import { PhoneNumberDirective } from '../../../../shared/directives/phone-number.directive';
49+
import { AngularMyDatePickerModule } from 'angular-mydatepicker';
3650

3751
describe('FieldEditorComponent', () => {
3852
let component: FieldEditorComponent;
@@ -67,11 +81,25 @@ describe('FieldEditorComponent', () => {
6781
EmailComponent,
6882
EmailEditorDisplayComponent,
6983
EmailEditorDataComponent,
70-
EmailEditorValidationComponent
84+
EmailEditorValidationComponent,
85+
CurrencyComponent,
86+
CurrencyEditorDisplayComponent,
87+
CurrencyEditorDataComponent,
88+
CurrencyEditorValidationComponent,
89+
DateTimeComponent,
90+
DateTimeEditorDisplayComponent,
91+
DateTimeEditorDataComponent,
92+
DateTimeEditorValidationComponent,
93+
PhoneNumberComponent,
94+
PhoneNumberEditorDisplayComponent,
95+
PhoneNumberEditorDataComponent,
96+
PhoneNumberEditorValidationComponent,
97+
PhoneNumberDirective
7198
],
7299
imports: [
73100
FormsModule,
74-
HttpClientModule
101+
HttpClientModule,
102+
AngularMyDatePickerModule
75103
],
76104
schemas: [
77105
CUSTOM_ELEMENTS_SCHEMA
@@ -105,7 +133,19 @@ describe('FieldEditorComponent', () => {
105133
EmailComponent,
106134
EmailEditorDisplayComponent,
107135
EmailEditorDataComponent,
108-
EmailEditorValidationComponent
136+
EmailEditorValidationComponent,
137+
CurrencyComponent,
138+
CurrencyEditorDisplayComponent,
139+
CurrencyEditorDataComponent,
140+
CurrencyEditorValidationComponent,
141+
DateTimeComponent,
142+
DateTimeEditorDisplayComponent,
143+
DateTimeEditorDataComponent,
144+
DateTimeEditorValidationComponent,
145+
PhoneNumberComponent,
146+
PhoneNumberEditorDisplayComponent,
147+
PhoneNumberEditorDataComponent,
148+
PhoneNumberEditorValidationComponent
109149
]
110150
}
111151
})
@@ -155,4 +195,19 @@ describe('FieldEditorComponent', () => {
155195
component.ngOnInit();
156196
expect(component).toBeTruthy();
157197
});
198+
it('should create with Currency component', () => {
199+
component.field = new CurrencyComponent();
200+
component.ngOnInit();
201+
expect(component).toBeTruthy();
202+
});
203+
it('should create with Datetime component', () => {
204+
component.field = new DateTimeComponent();
205+
component.ngOnInit();
206+
expect(component).toBeTruthy();
207+
});
208+
it('should create with PhoneNumber component', () => {
209+
component.field = new PhoneNumberComponent();
210+
component.ngOnInit();
211+
expect(component).toBeTruthy();
212+
});
158213
});

0 commit comments

Comments
 (0)