ion-cleave-directive
Version:
A cleaveJS package ready to use on Ionic
157 lines (151 loc) • 11.2 kB
JavaScript
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