mirror of https://github.com/abpframework/abp.git
4 changed files with 132 additions and 97 deletions
@ -1,92 +1,94 @@ |
|||||
<div class="field-container"> |
@if (visible()) { |
||||
|
<div class="field-container"> |
||||
|
|
||||
@if (field().type === 'text') { |
@if (field().type === 'text') { |
||||
<!-- Text Input --> |
<!-- Text Input --> |
||||
<div class="form-group"> |
<div class="form-group"> |
||||
<label [for]="field().key">{{ field().label }}</label> |
<label [for]="field().key">{{ field().label }}</label> |
||||
<input |
<input |
||||
[id]="field().key" |
[id]="field().key" |
||||
[placeholder]="field().placeholder || ''" |
[placeholder]="field().placeholder || ''" |
||||
[(value)]="value" |
[(value)]="value" |
||||
class="form-control"> |
class="form-control"> |
||||
<!-- @if (isFieldInvalid()) { |
<!-- @if (isFieldInvalid()) { |
||||
<div class="invalid-feedback"> |
<div class="invalid-feedback"> |
||||
{{ getErrorMessage() }} |
{{ getErrorMessage() }} |
||||
</div> |
</div> |
||||
}--> |
}--> |
||||
</div> |
</div> |
||||
} @else if (field().type === 'select') { |
} @else if (field().type === 'select') { |
||||
<!-- Select Dropdown --> |
<!-- Select Dropdown --> |
||||
<div class="form-group"> |
<div class="form-group"> |
||||
<label [for]="field().key">{{ field().label }}</label> |
<label [for]="field().key">{{ field().label }}</label> |
||||
<select |
<select |
||||
[id]="field().key" |
[id]="field().key" |
||||
[(value)]="value" |
[(value)]="value" |
||||
class="form-control"> |
class="form-control"> |
||||
<option value="">Please select...</option> |
<option value="">Please select...</option> |
||||
@for (option of field().options; track option.key) { |
@for (option of field().options; track option.key) { |
||||
<option |
<option |
||||
[value]="option.key"> |
[value]="option.key"> |
||||
{{ option.value }} |
{{ option.value }} |
||||
</option> |
</option> |
||||
} |
} |
||||
</select> |
</select> |
||||
<!-- @if (isFieldInvalid()) { |
<!-- @if (isFieldInvalid()) { |
||||
<div class="invalid-feedback"> |
<div class="invalid-feedback"> |
||||
{{ getErrorMessage() }} |
{{ getErrorMessage() }} |
||||
</div> |
</div> |
||||
}--> |
}--> |
||||
</div> |
</div> |
||||
} @else if (field().type === 'checkbox') { |
} @else if (field().type === 'checkbox') { |
||||
<!-- Checkbox --> |
<!-- Checkbox --> |
||||
<div class="form-group form-check"> |
<div class="form-group form-check"> |
||||
<input |
<input |
||||
type="checkbox" |
type="checkbox" |
||||
[id]="field().key" |
[id]="field().key" |
||||
[(value)]="value" |
[(value)]="value" |
||||
class="form-check-input"> |
class="form-check-input"> |
||||
<label class="form-check-label" [for]="field().key"> |
<label class="form-check-label" [for]="field().key"> |
||||
{{ field().label }} |
{{ field().label }} |
||||
</label> |
</label> |
||||
<!-- @if (isFieldInvalid()) { |
<!-- @if (isFieldInvalid()) { |
||||
<div class="invalid-feedback"> |
<div class="invalid-feedback"> |
||||
{{ getErrorMessage() }} |
{{ getErrorMessage() }} |
||||
</div> |
</div> |
||||
}--> |
}--> |
||||
</div> |
</div> |
||||
} @else if (field().type === 'email') { |
} @else if (field().type === 'email') { |
||||
<!-- Email Input --> |
<!-- Email Input --> |
||||
<div class="form-group"> |
<div class="form-group"> |
||||
<label [for]="field().key">{{ field().label }}</label> |
<label [for]="field().key">{{ field().label }}</label> |
||||
<input |
<input |
||||
type="email" |
type="email" |
||||
[id]="field().key" |
[id]="field().key" |
||||
[(value)]="value" |
[(value)]="value" |
||||
[placeholder]="field().placeholder || ''" |
[placeholder]="field().placeholder || ''" |
||||
class="form-control"> |
class="form-control"> |
||||
<!-- @if (isFieldInvalid()) { |
<!-- @if (isFieldInvalid()) { |
||||
<div class="invalid-feedback"> |
<div class="invalid-feedback"> |
||||
{{ getErrorMessage() }} |
{{ getErrorMessage() }} |
||||
</div> |
</div> |
||||
}--> |
}--> |
||||
</div> |
</div> |
||||
} @else if (field().type === 'textarea') { |
} @else if (field().type === 'textarea') { |
||||
<!-- Textarea --> |
<!-- Textarea --> |
||||
<div class="form-group"> |
<div class="form-group"> |
||||
<label [for]="field().key">{{ field().label }}</label> |
<label [for]="field().key">{{ field().label }}</label> |
||||
<textarea |
<textarea |
||||
[id]="field().key" |
[id]="field().key" |
||||
[(value)]="value" |
[(value)]="value" |
||||
[placeholder]="field().placeholder || ''" |
[placeholder]="field().placeholder || ''" |
||||
rows="4" |
rows="4" |
||||
class="form-control"> |
class="form-control"> |
||||
</textarea> |
</textarea> |
||||
<!-- @if (isFieldInvalid()) { |
<!-- @if (isFieldInvalid()) { |
||||
<div class="invalid-feedback"> |
<div class="invalid-feedback"> |
||||
{{ getErrorMessage() }} |
{{ getErrorMessage() }} |
||||
</div> |
</div> |
||||
}--> |
}--> |
||||
</div> |
</div> |
||||
} |
} |
||||
</div> |
</div> |
||||
<!-- Add more field types as needed--> |
<!-- Add more field types as needed--> |
||||
|
} |
||||
|
|||||
@ -0,0 +1,27 @@ |
|||||
|
<form [formGroup]="dynamicForm" (ngSubmit)="onSubmit()" class="dynamic-form"> |
||||
|
@for (field of sortedFields; track field.key) { |
||||
|
<div class="row"> |
||||
|
<div [ngClass]="'col-md-' + (field.gridSize || 12)"> |
||||
|
<abp-dynamic-form-field |
||||
|
[field]="field" |
||||
|
[formControlName]="field.key" |
||||
|
[visible]="isFieldVisible(field)"> |
||||
|
</abp-dynamic-form-field> |
||||
|
</div> |
||||
|
</div> |
||||
|
} |
||||
|
<div class="form-actions"> |
||||
|
<button |
||||
|
type="button" |
||||
|
class="btn btn-secondary" |
||||
|
(click)="onCancel()"> |
||||
|
Cancel |
||||
|
</button> |
||||
|
<button |
||||
|
type="submit" |
||||
|
class="btn btn-primary" |
||||
|
[disabled]="!dynamicForm.valid || isSubmitting"> |
||||
|
{{ submitButtonText() }} |
||||
|
</button> |
||||
|
</div> |
||||
|
</form> |
||||
Loading…
Reference in new issue