UNPKG

@schoolbelle/common

Version:

180 lines (174 loc) 5.49 kB
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