Skip to content

Commit cea52fc

Browse files
committed
feat: DefaultEntryInputComponent#autofocus
1 parent 8f56fb2 commit cea52fc

File tree

3 files changed

+36
-16
lines changed

3 files changed

+36
-16
lines changed

packages/ui/src/lib/form/default-input/default-input.component.html

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<div [ngSwitch]="field.view" *ngIf="group" [formGroup]="group">
2-
<input [id]="field.id" *ngSwitchCase="'string'" type="text" [formControl]="control" [placeholder]="field.getPlaceholder()"
3-
class="input">
2+
<input [id]="field.id" *ngSwitchCase="'string'" type="text" [formControl]="control"
3+
[placeholder]="field.getPlaceholder()" class="input" [ecFocus]="focusEvent" />
44

5-
<textarea [id]="field.id" *ngSwitchCase="'textarea'" type="text" [formControl]="control" [placeholder]="field.getPlaceholder()"
6-
class="input"></textarea>
5+
<textarea [id]="field.id" *ngSwitchCase="'textarea'" type="text" [formControl]="control"
6+
[placeholder]="field.getPlaceholder()" class="input" [ecFocus]="focusEvent"></textarea>
77

8-
<input [id]="field.id" *ngSwitchCase="'number'" type="number" [formControl]="control" [placeholder]="field.getPlaceholder()"
9-
class="input">
8+
<input [id]="field.id" *ngSwitchCase="'number'" type="number" [formControl]="control"
9+
[placeholder]="field.getPlaceholder()" class="input" [ecFocus]="focusEvent">
1010

1111
<div class="ec-input_color" *ngSwitchCase="'color'">
1212
<label [style.backgroundColor]="control.value">
@@ -19,20 +19,22 @@
1919
{{field.placeholder}}
2020
</label>
2121

22-
<input [id]="field.id" *ngSwitchCase="'email'" type="email" [formControl]="control" [placeholder]="field.getPlaceholder()"
23-
class="input">
22+
<input [id]="field.id" *ngSwitchCase="'email'" type="email" [formControl]="control"
23+
[placeholder]="field.getPlaceholder()" class="input" [ecFocus]="focusEvent">
2424

2525
<input [id]="field.id" *ngSwitchCase="'url'" type="url" [formControl]="control" [placeholder]="field.getPlaceholder()"
26-
class="input">
26+
class="input" [ecFocus]="focusEvent">
2727

28-
<ec-toggle [id]="field.id" *ngSwitchCase="'toggle'" [formControl]="control" [placeholder]="field.getPlaceholder()"></ec-toggle>
28+
<ec-toggle [id]="field.id" *ngSwitchCase="'toggle'" [formControl]="control" [placeholder]="field.getPlaceholder()">
29+
</ec-toggle>
2930

3031
<ec-datetime *ngSwitchCase="'date'" [formControl]="control" [placeholder]="field.getPlaceholder()"></ec-datetime>
3132

32-
<select [id]="field.id" [formControl]="control" *ngSwitchCase="'select'" (change)="control.patchValue($event.target.value)"
33-
class="input">
33+
<select [id]="field.id" [formControl]="control" *ngSwitchCase="'select'" [ecFocus]="focusEvent"
34+
(change)="control.patchValue($event.target.value)" class="input">
3435
<option></option>
35-
<option *ngFor="let option of field.values" [selected]="control.value===(option.value?option.value:option)" [value]="option.value?option.value:option">
36+
<option *ngFor="let option of field.values" [selected]="control.value===(option.value?option.value:option)"
37+
[value]="option.value?option.value:option">
3638
{{option.label?option.label:option}}
3739
</option>
3840
</select>
Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
import { Component } from '@angular/core';
1+
import { Component, EventEmitter, AfterViewInit, OnChanges } from '@angular/core';
22
import { FormControl, FormGroup } from '@angular/forms';
33
import { Field, Item } from '@ec.components/core';
4+
import { Focus } from '../../utility/focus/focus.interface';
45

56
/** This component holds the templates for all basic field types. */
67
@Component({
78
templateUrl: './default-input.component.html',
89
})
9-
export class DefaultInputComponent {
10+
export class DefaultInputComponent implements AfterViewInit, Focus {
1011
/** The field for which the input is meant. */
1112
public field: Field;
1213
/** The item that is targeted by the input */
@@ -15,4 +16,18 @@ export class DefaultInputComponent {
1516
public group: FormGroup;
1617
/** The form control that is used */
1718
public control: FormControl;
19+
/** Emitter to focus the input field */
20+
focusEvent: EventEmitter<boolean> = new EventEmitter();
21+
22+
ngAfterViewInit() {
23+
if (this.field && this.field.autofocus) {
24+
this.focus();
25+
}
26+
}
27+
28+
focus() {
29+
setTimeout(() => {
30+
this.focusEvent.emit(true);
31+
}, 100);
32+
}
1833
}

packages/ui/src/lib/form/form.module.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { SymbolModule } from '../symbol/symbol.module';
1515
import { DefaultInputComponent } from './default-input/default-input.component';
1616
import { DefaultOutputComponent } from './default-output/default-output.component';
1717
import { CalendarModule } from '@ec.components/calendar';
18+
import { UtilityModule } from '../utility/utility.module';
1819

1920
export const formModuleConfig = {
2021
entryComponents: [
@@ -38,9 +39,11 @@ export const formModuleConfig = {
3839
LoaderModule,
3940
IconModule,
4041
SymbolModule,
41-
CalendarModule
42+
CalendarModule,
43+
UtilityModule
4244
],
4345
exports: [
46+
UtilityModule,
4447
ReactiveFormsModule,
4548
IoModule,
4649
FormComponent,

0 commit comments

Comments
 (0)