SuiteCRM-Core/core/app/fields/base/base-field.component.ts
Clemente Raposo 61de0618ea Restructure front end filters setup
- Use FieldManager
- Change ValidationManager to support save and filter validation
- Use reactive forms formControl in varchar filter
- Add null checks to datetime formatter
- Add field type to criteria
- Set form control value on field init
- display messages for edit or filter modes
- Validate filter input
- Display warning messages when not valid
- Adjust karma / jasmine tests
2021-03-30 19:22:35 +01:00

42 lines
1.4 KiB
TypeScript

import {Input} from '@angular/core';
import {FieldComponentInterface} from './field.interface';
import {Field} from '@app-common/record/field.model';
import {Record} from '@app-common/record/record.model';
import {Subscription} from 'rxjs';
import {isVoid} from '@app-common/utils/value-utils';
import {DataTypeFormatter} from '@services/formatters/data-type.formatter.service';
export class BaseFieldComponent implements FieldComponentInterface {
@Input() field: Field;
@Input() record: Record;
@Input() klass: { [klass: string]: any } = null;
protected subs: Subscription[] = [];
constructor(protected typeFormatter: DataTypeFormatter) {
}
protected subscribeValueChanges(): void {
if (this.field && this.field.formControl) {
this.subs.push(this.field.formControl.valueChanges.subscribe(value => {
let newValue = value;
if (isVoid(value)) {
newValue = '';
}
if (this.typeFormatter && this.field.type) {
newValue = this.typeFormatter.toInternalFormat(this.field.type, newValue);
}
this.setFieldValue(newValue);
}));
}
}
protected setFieldValue(newValue): void {
this.field.value = newValue;
}
protected unsubscribeAll(): void {
this.subs.forEach(sub => sub.unsubscribe());
}
}