ng-form-helper
Version:
Feature set to use in your angular form
160 lines • 10.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/form-field.directive.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { HostListener } from '@angular/core';
/**
* @abstract
*/
export class FormFieldDirective {
constructor() {
this.oldState = {
cursorStart: 0,
cursorEnd: 0,
value: ''
};
// These are for angular use
this.isDisabled = false;
this.onChange = (/**
* @param {...?} arg
* @return {?}
*/
(...arg) => void (0));
this.onTouch = (/**
* @return {?}
*/
() => void (0));
}
/**
* @return {?}
*/
ngOnInit() {
this.oldState.value = this.element.nativeElement.value;
}
/**
* @return {?}
*/
onKeyDown() {
this.oldState.cursorStart = this.element.nativeElement.selectionStart;
this.oldState.cursorEnd = this.element.nativeElement.selectionEnd;
}
/**
* @return {?}
*/
onBlur() {
this.onTouch();
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
/** @type {?} */
const normalizedValue = value == null ? '' : value;
this.oldState.value = normalizedValue;
this.onChange(value);
this.renderer.setProperty(this.element.nativeElement, 'value', normalizedValue);
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) {
this.renderer.setProperty(this.element.nativeElement, 'disabled', isDisabled);
this.isDisabled = isDisabled;
}
/**
* @protected
* @param {?} event
* @return {?}
*/
getValueFromKeyboardEvent(event) {
/** @type {?} */
const el = event.target && (/** @type {?} */ (event.target)) || null;
return el && el.value || '';
}
/**
* @protected
* @param {?} start
* @param {?=} end
* @return {?}
*/
setCursorPosition(start, end = start) {
/** @type {?} */
const el = this.element.nativeElement;
/** @type {?} */
const type = el.getAttribute('type');
el.setAttribute('type', 'text');
el.selectionStart = start;
el.selectionEnd = end;
el.setAttribute('type', type);
}
/**
* @return {?}
*/
resetField() {
this.onChange(this.oldState.value);
this.writeValue(this.oldState.value);
this.setCursorPosition(this.oldState.cursorStart, this.oldState.cursorEnd);
}
/**
* @param {?} value
* @return {?}
*/
updateFieldValue(value) {
this.writeValue(value);
this.oldState.value = value;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouch = fn;
}
}
FormFieldDirective.propDecorators = {
onKeyDown: [{ type: HostListener, args: ['keydown',] }],
onBlur: [{ type: HostListener, args: ['blur',] }]
};
if (false) {
/**
* @type {?}
* @protected
*/
FormFieldDirective.prototype.element;
/**
* @type {?}
* @protected
*/
FormFieldDirective.prototype.renderer;
/**
* @type {?}
* @protected
*/
FormFieldDirective.prototype.oldState;
/**
* @type {?}
* @protected
*/
FormFieldDirective.prototype.isDisabled;
/**
* @type {?}
* @protected
*/
FormFieldDirective.prototype.onChange;
/**
* @type {?}
* @protected
*/
FormFieldDirective.prototype.onTouch;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1mb3JtLWhlbHBlci8iLCJzb3VyY2VzIjpbImxpYi9mb3JtLWZpZWxkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBYyxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7O0FBRzVFLE1BQU0sT0FBZ0Isa0JBQWtCO0lBQXhDO1FBS1ksYUFBUSxHQUE4RDtZQUM5RSxXQUFXLEVBQUUsQ0FBQztZQUNkLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDOztRQUdRLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsYUFBUTs7OztRQUFHLENBQUMsR0FBRyxHQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQztRQUN2QyxZQUFPOzs7UUFBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUM7SUE2RHJDLENBQUM7Ozs7SUEzREMsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUN6RCxDQUFDOzs7O0lBR0QsU0FBUztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztRQUN0RSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7SUFDcEUsQ0FBQzs7OztJQUdELE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7Ozs7SUFFRCxVQUFVLENBQUMsS0FBYTs7Y0FDaEIsZUFBZSxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSztRQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQzs7Ozs7O0lBRVMseUJBQXlCLENBQUMsS0FBb0I7O2NBQ2hELEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLG1CQUFBLEtBQUssQ0FBQyxNQUFNLEVBQW9CLElBQUksSUFBSTtRQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOzs7Ozs7O0lBRVMsaUJBQWlCLENBQUMsS0FBYSxFQUFFLEdBQUcsR0FBRyxLQUFLOztjQUM5QyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhOztjQUMvQixJQUFJLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDcEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEMsRUFBRSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDMUIsRUFBRSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDdEIsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7OztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDOzs7OztJQUVELGdCQUFnQixDQUFDLEVBQWdDO1FBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsaUJBQWlCLENBQUMsRUFBbUI7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7O3dCQXREQSxZQUFZLFNBQUMsU0FBUztxQkFNdEIsWUFBWSxTQUFDLE1BQU07Ozs7Ozs7SUF4QnBCLHFDQUF1Qzs7Ozs7SUFDdkMsc0NBQXVDOzs7OztJQUV2QyxzQ0FJRTs7Ozs7SUFHRix3Q0FBNkI7Ozs7O0lBQzdCLHNDQUFpRDs7Ozs7SUFDakQscUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb3JtRmllbGREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcblxyXG4gIHByb3RlY3RlZCBvbGRTdGF0ZTogeyBjdXJzb3JTdGFydDogbnVtYmVyOyBjdXJzb3JFbmQ6IG51bWJlcjsgdmFsdWU6IHN0cmluZyB9ID0ge1xyXG4gICAgY3Vyc29yU3RhcnQ6IDAsXHJcbiAgICBjdXJzb3JFbmQ6IDAsXHJcbiAgICB2YWx1ZTogJydcclxuICB9O1xyXG5cclxuICAvLyAgVGhlc2UgYXJlIGZvciBhbmd1bGFyIHVzZVxyXG4gIHByb3RlY3RlZCBpc0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIG9uQ2hhbmdlID0gKC4uLmFyZzogYW55W10pID0+IHZvaWQgKDApO1xyXG4gIHByb3RlY3RlZCBvblRvdWNoID0gKCkgPT4gdm9pZCAoMCk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbGRTdGF0ZS52YWx1ZSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicpXHJcbiAgb25LZXlEb3duKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vbGRTdGF0ZS5jdXJzb3JTdGFydCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5vbGRTdGF0ZS5jdXJzb3JFbmQgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdibHVyJylcclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2goKTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XHJcbiAgICB0aGlzLm9sZFN0YXRlLnZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBub3JtYWxpemVkVmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCBpc0Rpc2FibGVkKTtcclxuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0VmFsdWVGcm9tS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlbCA9IGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCB8fCBudWxsO1xyXG4gICAgcmV0dXJuIGVsICYmIGVsLnZhbHVlIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEN1cnNvclBvc2l0aW9uKHN0YXJ0OiBudW1iZXIsIGVuZCA9IHN0YXJ0KTogdm9pZCB7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdHlwZSA9IGVsLmdldEF0dHJpYnV0ZSgndHlwZScpO1xyXG4gICAgZWwuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcclxuICAgIGVsLnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7XHJcbiAgICBlbC5zZWxlY3Rpb25FbmQgPSBlbmQ7XHJcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIHJlc2V0RmllbGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMub2xkU3RhdGUudmFsdWUpO1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHRoaXMub2xkU3RhdGUudmFsdWUpO1xyXG4gICAgdGhpcy5zZXRDdXJzb3JQb3NpdGlvbih0aGlzLm9sZFN0YXRlLmN1cnNvclN0YXJ0LCB0aGlzLm9sZFN0YXRlLmN1cnNvckVuZCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVGaWVsZFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICB0aGlzLm9sZFN0YXRlLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoLi4uYXJnOiBhbnlbXSkgPT4gdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcclxuICB9XHJcbn1cclxuIl19