UNPKG

ion-cleave-directive

Version:

A cleaveJS package ready to use on Ionic

157 lines (151 loc) 11.2 kB
import { __assign } from 'tslib'; import { Directive, ElementRef, HostListener, Inject, Input, Optional, NgModule } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import Cleave from 'cleave.js'; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var IonCleaveDirective = /** @class */ (function () { function IonCleaveDirective(elementRef, valueAccessors) { this.elementRef = elementRef; this.valueAccessors = valueAccessors; } Object.defineProperty(IonCleaveDirective.prototype, "cleave", { set: /** * @param {?} cleave * @return {?} */ function (cleave) { this._cleave = cleave; this.setCleave(); }, enumerable: true, configurable: true }); /** * @return {?} */ IonCleaveDirective.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; if (!this.valueAccessors) { console.warn('Note: The cleave directive should be used with the ngModel, formControl or formControlName directives.'); return; } if (this.valueAccessors.length) { this._valueAccessor = this.valueAccessors[0]; this._writeValue = this._valueAccessor.writeValue; this._valueAccessor.writeValue = function (value) { if (_this._writeValue) { _this._writeValue.call(_this._valueAccessor, value); } _this.setCleave(); }; } }; /** * @return {?} */ IonCleaveDirective.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this._valueAccessor && this._writeValue) { this._valueAccessor.writeValue = this._writeValue; } if (this._cleaveInstance) { this._cleaveInstance.destroy(); } }; /** * @param {?} value * @return {?} */ IonCleaveDirective.prototype.onInput = /** * @param {?} value * @return {?} */ function (value) { this._value = value; }; /** * @return {?} */ IonCleaveDirective.prototype.setCleave = /** * @return {?} */ function () { var _this = this; if (this._cleaveInstance) { this._cleaveInstance.destroy(); } var /** @type {?} */ el = this.elementRef.nativeElement; this._cleaveInstance = new Cleave(el, __assign({}, this._cleave, { onValueChanged: function (_a) { var target = _a.target; if (target.value !== _this._value) { _this.dispatchEvent(el, 'input'); } } })); // hack for model -> view cleave setTimeout(function () { return _this.dispatchEvent(el, 'input'); }, 0); }; /** * @param {?} el * @param {?} eventType * @return {?} */ IonCleaveDirective.prototype.dispatchEvent = /** * @param {?} el * @param {?} eventType * @return {?} */ function (el, eventType) { var /** @type {?} */ event = document.createEvent('Event'); event.initEvent(eventType, false, false); el.dispatchEvent(event); }; IonCleaveDirective.decorators = [ { type: Directive, args: [{ selector: 'ion-input[cleave],textarea[cleave],input[cleave]', },] }, ]; /** @nocollapse */ IonCleaveDirective.ctorParameters = function () { return [ { type: ElementRef, }, { type: Array, decorators: [{ type: Inject, args: [NG_VALUE_ACCESSOR,] }, { type: Optional },] }, ]; }; IonCleaveDirective.propDecorators = { "cleave": [{ type: Input },], "onInput": [{ type: HostListener, args: ['input', ['$event.target.value'],] },], }; return IonCleaveDirective; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var IonCleaveDirectiveModule = /** @class */ (function () { function IonCleaveDirectiveModule() { } IonCleaveDirectiveModule.decorators = [ { type: NgModule, args: [{ imports: [], declarations: [IonCleaveDirective], exports: [IonCleaveDirective], },] }, ]; return IonCleaveDirectiveModule; }()); /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ export { IonCleaveDirective, IonCleaveDirectiveModule }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNsZWF2ZS1kaXJlY3RpdmUuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1jbGVhdmUtZGlyZWN0aXZlL25neC1jbGVhdmUuZGlyZWN0aXZlLnRzIiwibmc6Ly9uZ3gtY2xlYXZlLWRpcmVjdGl2ZS9uZ3gtY2xlYXZlLWRpcmVjdGl2ZS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IENsZWF2ZSBmcm9tICdjbGVhdmUuanMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFtjbGVhdmVdLHRleHRhcmVhW2NsZWF2ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hDbGVhdmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgc2V0IGNsZWF2ZSAoY2xlYXZlOiBhbnkpIHtcblxuICAgIHRoaXMuX2NsZWF2ZSA9IGNsZWF2ZTtcblxuICAgIHRoaXMuc2V0Q2xlYXZlKCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2NsZWF2ZTogYW55O1xuICBwcml2YXRlIF9jbGVhdmVJbnN0YW5jZTogQ2xlYXZlO1xuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIF92YWx1ZUFjY2Vzc29yOiBDb250cm9sVmFsdWVBY2Nlc3NvcjtcbiAgcHJpdmF0ZSBfd3JpdGVWYWx1ZTogKHZhbHVlKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yIChcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChOR19WQUxVRV9BQ0NFU1NPUikgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2YWx1ZUFjY2Vzc29yczogQ29udHJvbFZhbHVlQWNjZXNzb3JbXSxcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCAoKSB7XG5cbiAgICBpZiAoIXRoaXMudmFsdWVBY2Nlc3NvcnMpIHtcblxuICAgICAgY29uc29sZS53YXJuKCdOb3RlOiBUaGUgY2xlYXZlIGRpcmVjdGl2ZSBzaG91bGQgYmUgdXNlZCB3aXRoIHRoZSBuZ01vZGVsLCBmb3JtQ29udHJvbCBvciBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlcy4nKTtcblxuICAgICAgcmV0dXJuO1xuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWVBY2Nlc3NvcnMubGVuZ3RoKSB7XG5cbiAgICAgIHRoaXMuX3ZhbHVlQWNjZXNzb3IgPSB0aGlzLnZhbHVlQWNjZXNzb3JzWzBdO1xuXG4gICAgICB0aGlzLl93cml0ZVZhbHVlID0gdGhpcy5fdmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlO1xuICAgICAgdGhpcy5fdmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlID0gKHZhbHVlKSA9PiB7XG5cbiAgICAgICAgaWYgKHRoaXMuX3dyaXRlVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl93cml0ZVZhbHVlLmNhbGwodGhpcy5fdmFsdWVBY2Nlc3NvciwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRDbGVhdmUoKTtcblxuICAgICAgfTtcblxuICAgIH1cblxuICB9XG5cbiAgbmdPbkRlc3Ryb3kgKCkge1xuXG4gICAgaWYgKHRoaXMuX3ZhbHVlQWNjZXNzb3IgJiYgdGhpcy5fd3JpdGVWYWx1ZSkge1xuXG4gICAgICB0aGlzLl92YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUgPSB0aGlzLl93cml0ZVZhbHVlO1xuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NsZWF2ZUluc3RhbmNlKSB7XG5cbiAgICAgIHRoaXMuX2NsZWF2ZUluc3RhbmNlLmRlc3Ryb3koKTtcblxuICAgIH1cblxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudC50YXJnZXQudmFsdWUnXSlcbiAgb25JbnB1dCAodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDbGVhdmUgKCkge1xuXG4gICAgaWYgKHRoaXMuX2NsZWF2ZUluc3RhbmNlKSB7XG5cbiAgICAgIHRoaXMuX2NsZWF2ZUluc3RhbmNlLmRlc3Ryb3koKTtcblxuICAgIH1cblxuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fY2xlYXZlSW5zdGFuY2UgPSBuZXcgQ2xlYXZlKGVsLCB7XG4gICAgICAuLi50aGlzLl9jbGVhdmUsXG4gICAgICBvblZhbHVlQ2hhbmdlZDogKHsgdGFyZ2V0IH0pID0+IHtcbiAgICAgICAgaWYgKHRhcmdldC52YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcblxuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChlbCwgJ2lucHV0Jyk7XG5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIGhhY2sgZm9yIG1vZGVsIC0+IHZpZXcgY2xlYXZlXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRpc3BhdGNoRXZlbnQoZWwsICdpbnB1dCcpLCAwKTtcblxuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaEV2ZW50IChlbCwgZXZlbnRUeXBlKSB7XG5cbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LmluaXRFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7XG4gICAgZWwuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cbiAgfVxuXG59XG4iLCJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4Q2xlYXZlRGlyZWN0aXZlIH0gZnJvbSAnLi9uZ3gtY2xlYXZlLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtdLFxuICBkZWNsYXJhdGlvbnM6IFtOZ3hDbGVhdmVEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbTmd4Q2xlYXZlRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd4Q2xlYXZlRGlyZWN0aXZlTW9kdWxlIHtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0lBb0NFLDRCQUNVLFlBQ3VDO1FBRHZDLGVBQVUsR0FBVixVQUFVO1FBQzZCLG1CQUFjLEdBQWQsY0FBYztLQUU5RDswQkFsQlksc0NBQU07Ozs7O2tCQUFFLE1BQVc7WUFFOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFFdEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDOzs7Ozs7OztJQWdCbkIscUNBQVE7OztJQUFSO1FBQUEsaUJBMkJDO1FBekJDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBRXhCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0dBQXdHLENBQUMsQ0FBQztZQUV2SCxPQUFPO1NBRVI7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFO1lBRTlCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLFVBQUMsS0FBSztnQkFFckMsSUFBSSxLQUFJLENBQUMsV0FBVyxFQUFFO29CQUNwQixLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNuRDtnQkFFRCxLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFFbEIsQ0FBQztTQUVIO0tBRUY7Ozs7SUFFRCx3Q0FBVzs7O0lBQVg7UUFFRSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUUzQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBRW5EO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBRXhCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7U0FFaEM7S0FFRjs7Ozs7SUFHRCxvQ0FBTzs7OztjQUFFLEtBQWE7UUFFcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Ozs7O0lBSWQsc0NBQVM7Ozs7O1FBRWYsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBRXhCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7U0FFaEM7UUFFRCxxQkFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFLGVBQy9CLElBQUksQ0FBQyxPQUFPLElBQ2YsY0FBYyxFQUFFLFVBQUMsRUFBVTtvQkFBUixrQkFBTTtnQkFDdkIsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUksQ0FBQyxNQUFNLEVBQUU7b0JBRWhDLEtBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUVqQzthQUNGLElBQ0QsQ0FBQzs7UUFHSCxVQUFVLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFBLEVBQUUsQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7SUFJL0MsMENBQWE7Ozs7O2NBQUUsRUFBRSxFQUFFLFNBQVM7UUFFbEMscUJBQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7OztnQkExRzNCLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO2lCQUMzQzs7OztnQkFqQkMsVUFBVTs0Q0FvQ1AsTUFBTSxTQUFDLGlCQUFpQixjQUFHLFFBQVE7OzsyQkFoQnJDLEtBQUs7NEJBaUVMLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzs7NkJBdkZoRDs7Ozs7OztBQ0FBOzs7O2dCQUdDLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxZQUFZLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztvQkFDbEMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCOzttQ0FQRDs7Ozs7Ozs7Ozs7Ozs7OyJ9