I’m trying to apply styles to input by clicking. I need an orange frame around the field when I press it, if I use a focus then it is used for a moment and then disappears as it moves into the calendar field. I solved the problem this way.
<div class="input-group">
<input id="dateOfReceipt" class="form-control date calendar_input pl-4" name="dp" ngbDatepicker #dR="ngbDatepicker"
[readOnly]="true"
[minDate]="dateOfReceiptStart"
[markDisabled]="markDisabled"
[placeholder]="bus.seat.fields.jobOfferBodyFields.dateOfReceipt ?
bus.seat.fields.jobOfferBodyFields.dateOfReceipt : datePickerPlaceholder"
[(ngModel)]="bus.seat.fields.jobOfferBodyFields.dateOfReceipt"
[disabled]="!bus.isEdit" (click)="dR.toggle(); showDatepickerBorder('dateOfReceipt')"
(dateSelect)="onDateOfReceiptDateSelect($event)"
[ngClass]="{'focus-border': datePickerInputFocusBorder.dateOfReceipt}">
<div class="input-group-append">
<button class="btn calendar-button" type="button"
[disabled]="!bus.isEdit" (click)="dR.toggle(); showDatepickerBorder('dateOfReceipt')">
<mat-icon class="calendar-icon">calendar_today</mat-icon>
</button>
</div>
</div>
showDatepickerBorder(key: string) {
this.datePickerInputFocusBorder[key] = true;
}
hideDatepickerBorder(obj) {
for (let prop in obj) {
if (obj.hasOwnProperty(prop)) {
obj[prop] = false;
}
}
}
@HostListener('document:click', ['$event']) clickOutside(event) {
if (!this.eRef.nativeElement.contains(event.target)) {
this.hideDatepickerBorder(this.datePickerInputFocusBorder);
}
}
How can I make it easier ?