mirror of https://github.com/Squidex/squidex.git
7 changed files with 72 additions and 6 deletions
@ -0,0 +1,62 @@ |
|||||
|
/* |
||||
|
* Squidex Headless CMS |
||||
|
* |
||||
|
* @license |
||||
|
* Copyright (c) Sebastian Stehle. All rights reserved |
||||
|
*/ |
||||
|
|
||||
|
import { Directive, forwardRef, ElementRef, Renderer } from '@angular/core'; |
||||
|
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; |
||||
|
|
||||
|
const NOOP = () => { /* NOOP */ }; |
||||
|
|
||||
|
export const SQX_LOWERCASE_INPUT_VALUE_ACCESSOR: any = { |
||||
|
provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => LowerCaseInputDirective), multi: true |
||||
|
}; |
||||
|
|
||||
|
@Directive({ |
||||
|
selector: '[sqxLowerCaseInput]', |
||||
|
providers: [SQX_LOWERCASE_INPUT_VALUE_ACCESSOR], |
||||
|
host: { |
||||
|
'(input)': 'onChange($event.target.value)', '(blur)': 'onTouched()' |
||||
|
} |
||||
|
}) |
||||
|
export class LowerCaseInputDirective implements ControlValueAccessor { |
||||
|
private changeCallback: (value: any) => void = NOOP; |
||||
|
private touchedCallback: () => void = NOOP; |
||||
|
|
||||
|
constructor( |
||||
|
private readonly renderer: Renderer, |
||||
|
private readonly elementRef: ElementRef |
||||
|
) { |
||||
|
} |
||||
|
|
||||
|
public writeValue(value: any) { |
||||
|
const normalizedValue = (value == null ? '' : value.toString()).toLowerCase(); |
||||
|
|
||||
|
this.renderer.setElementProperty(this.elementRef.nativeElement, 'value', normalizedValue); |
||||
|
} |
||||
|
|
||||
|
public setDisabledState(isDisabled: boolean): void { |
||||
|
this.renderer.setElementProperty(this.elementRef.nativeElement, 'disabled', isDisabled); |
||||
|
} |
||||
|
|
||||
|
public registerOnChange(fn: any) { |
||||
|
this.changeCallback = fn; |
||||
|
} |
||||
|
|
||||
|
public registerOnTouched(fn: any) { |
||||
|
this.touchedCallback = fn; |
||||
|
} |
||||
|
|
||||
|
public onChange(value: any) { |
||||
|
const normalizedValue = (value == null ? '' : value.toString()).toLowerCase(); |
||||
|
|
||||
|
this.renderer.setElementProperty(this.elementRef.nativeElement, 'value', normalizedValue); |
||||
|
this.changeCallback(normalizedValue); |
||||
|
} |
||||
|
|
||||
|
public onTouched() { |
||||
|
this.touchedCallback(); |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue