diff --git a/npm/ng-packs/apps/dev-app/src/app/abp-form-field-demo/abp-form-field-demo.component.html b/npm/ng-packs/apps/dev-app/src/app/abp-form-field-demo/abp-form-field-demo.component.html new file mode 100644 index 0000000000..6ed16cdd39 --- /dev/null +++ b/npm/ng-packs/apps/dev-app/src/app/abp-form-field-demo/abp-form-field-demo.component.html @@ -0,0 +1,30 @@ + + +

Abp Form Field Demo

+
+ +
+ + Name + + + + + Email + + + + + Password + + + + + Age + + + + +
+
+
diff --git a/npm/ng-packs/apps/dev-app/src/app/abp-form-field-demo/abp-form-field-demo.component.ts b/npm/ng-packs/apps/dev-app/src/app/abp-form-field-demo/abp-form-field-demo.component.ts new file mode 100644 index 0000000000..c0e1f430ed --- /dev/null +++ b/npm/ng-packs/apps/dev-app/src/app/abp-form-field-demo/abp-form-field-demo.component.ts @@ -0,0 +1,42 @@ +import { Component, inject } from '@angular/core'; +import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms'; +import { AbpFormFieldComponent, AbpFormFieldLabelComponent } from '@abp/ng.components/abp-form-field'; +import { CardComponent, CardBodyComponent, CardHeaderComponent } from '@abp/ng.theme.shared'; +import { CommonModule } from '@angular/common'; +import { AbpInputComponent } from '@abp/ng.components/abp-input'; + +@Component({ + selector: 'app-abp-form-field-demo', + templateUrl: './abp-form-field-demo.component.html', + standalone: true, + imports: [ + CommonModule, + ReactiveFormsModule, + AbpFormFieldComponent, + CardComponent, + CardBodyComponent, + CardHeaderComponent, + AbpInputComponent, + AbpFormFieldLabelComponent, + ], +}) +export class AbpFormFieldDemoComponent { + private fb = inject(FormBuilder); + + form = this.fb.group({ + name: ['', [Validators.required, Validators.minLength(3)]], + email: ['', [Validators.required, Validators.email]], + password: ['', [Validators.required, Validators.minLength(6)]], + age: [null, [Validators.required, Validators.min(18)]], + description: ['', [Validators.maxLength(200)]], + agree: [false, [Validators.requiredTrue]], + }); + + submit() { + if (this.form.valid) { + console.log(this.form.value); + } else { + console.log('Form is invalid'); + } + } +} diff --git a/npm/ng-packs/apps/dev-app/src/app/app.routes.ts b/npm/ng-packs/apps/dev-app/src/app/app.routes.ts index 47462b7f8f..a56bf459fe 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app.routes.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app.routes.ts @@ -6,6 +6,10 @@ export const appRoutes: Routes = [ pathMatch: 'full', loadComponent: () => import('./home/home.component').then(m => m.HomeComponent), }, + { + path: 'form-field-demo', + loadComponent: () => import('./abp-form-field-demo/abp-form-field-demo.component').then(m => m.AbpFormFieldDemoComponent), + }, { path: 'account', loadChildren: () => import('@abp/ng.account').then(m => m.createRoutes()), diff --git a/npm/ng-packs/apps/dev-app/src/app/route.provider.ts b/npm/ng-packs/apps/dev-app/src/app/route.provider.ts index f60e7ca330..9b11cbc410 100644 --- a/npm/ng-packs/apps/dev-app/src/app/route.provider.ts +++ b/npm/ng-packs/apps/dev-app/src/app/route.provider.ts @@ -16,6 +16,13 @@ function configureRoutes() { iconClass: 'fas fa-home', order: 1, layout: eLayoutType.application, + }, + { + path: '/form-field-demo', + name: 'Form Field Demo', + iconClass: 'fas fa-file-alt', + order: 2, + layout: eLayoutType.application, } ]); }