@schoolbelle/common
Version:
180 lines (174 loc) • 5.49 kB
JavaScript
import { CommonModule } from '@angular/common';
import { __assign, __spread } from 'tslib';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { forwardRef, Directive, Renderer2, ElementRef, Input, NgModule } from '@angular/core';
import { fromEvent, merge, timer } from 'rxjs';
import { map, debounce } from 'rxjs/operators';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var DEFAULT_VALUE_ACCESSOR = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return NgModelOptionsDirective; })),
multi: true
};
var NgModelOptionsDirective = /** @class */ (function () {
function NgModelOptionsDirective(renderer, element) {
this.renderer = renderer;
this.element = element;
this._controlOptions = {
updateOn: 'input',
debounce: null
};
}
Object.defineProperty(NgModelOptionsDirective.prototype, "ngModelOptions", {
set: /**
* @param {?} val
* @return {?}
*/
function (val) {
this._controlOptions = __assign({}, this._controlOptions, val);
},
enumerable: true,
configurable: true
});
/**
* @param {?} fn
* @return {?}
*/
NgModelOptionsDirective.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
NgModelOptionsDirective.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onTouched = fn;
};
/**
* @return {?}
*/
NgModelOptionsDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var events = this._controlOptions.updateOn
.split(' ') // ['input', 'blur']
.map((/**
* @param {?} event
* @return {?}
*/
function (event) { return fromEvent(_this.element.nativeElement, event); }));
this.events = merge.apply(void 0, __spread(events)).pipe(map((/**
* @param {?} event
* @return {?}
*/
function (event) {
return { type: event.type, value: event.target['value'] };
})), debounce((/**
* @param {?} event
* @return {?}
*/
function (event) {
/** @type {?} */
var debounceValue = _this._controlOptions.debounce;
/** @type {?} */
var time = 0;
if (typeof debounceValue === 'number') {
time = debounceValue;
}
else if (typeof debounceValue === 'object') {
time = debounceValue[event.type] ? debounceValue[event.type] : 0;
}
return timer(time);
})))
.subscribe((/**
* @param {?} event
* @return {?}
*/
function (event) {
_this.onChange(event.value);
}));
};
/**
* @param {?} value
* @return {?}
*/
NgModelOptionsDirective.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var normalizedValue = value == null ? '' : value;
this.renderer.setProperty(this.element.nativeElement, 'value', normalizedValue);
};
/**
* @param {?} isDisabled
* @return {?}
*/
NgModelOptionsDirective.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.renderer.setProperty(this.element.nativeElement, 'disabled', isDisabled);
};
NgModelOptionsDirective.decorators = [
{ type: Directive, args: [{
selector: '[formControlName][ngModelOptions],[formControl][ngModelOptions],[ngModel][ngModelOptions]',
providers: [DEFAULT_VALUE_ACCESSOR]
},] }
];
/** @nocollapse */
NgModelOptionsDirective.ctorParameters = function () { return [
{ type: Renderer2 },
{ type: ElementRef }
]; };
NgModelOptionsDirective.propDecorators = {
ngModelOptions: [{ type: Input }]
};
return NgModelOptionsDirective;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var NgModelOptionsModule = /** @class */ (function () {
function NgModelOptionsModule() {
}
NgModelOptionsModule.decorators = [
{ type: NgModule, args: [{
declarations: [NgModelOptionsDirective],
imports: [CommonModule],
exports: [NgModelOptionsDirective]
},] }
];
return NgModelOptionsModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { NgModelOptionsModule, DEFAULT_VALUE_ACCESSOR, NgModelOptionsDirective };
//# sourceMappingURL=schoolbelle-common-ng-model-options.js.map