ion-cleave-directive
Version:
A cleaveJS package ready to use on Ionic
153 lines (152 loc) • 11.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, ElementRef, HostListener, Inject, Input, Optional, } from '@angular/core';
import { NG_VALUE_ACCESSOR, } from '@angular/forms';
import Cleave from 'cleave.js';
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, tslib_1.__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;
}());
export { IonCleaveDirective };
function IonCleaveDirective_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
IonCleaveDirective.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
IonCleaveDirective.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
IonCleaveDirective.propDecorators;
/** @type {?} */
IonCleaveDirective.prototype._cleave;
/** @type {?} */
IonCleaveDirective.prototype._cleaveInstance;
/** @type {?} */
IonCleaveDirective.prototype._value;
/** @type {?} */
IonCleaveDirective.prototype._valueAccessor;
/** @type {?} */
IonCleaveDirective.prototype._writeValue;
/** @type {?} */
IonCleaveDirective.prototype.elementRef;
/** @type {?} */
IonCleaveDirective.prototype.valueAccessors;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNsZWF2ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtY2xlYXZlLWRpcmVjdGl2ZS8iLCJzb3VyY2VzIjpbIm5neC1jbGVhdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxpQkFBaUIsR0FDbEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLE1BQU0sTUFBTSxXQUFXLENBQUM7O0lBcUI3Qiw0QkFDVSxZQUN1QztRQUR2QyxlQUFVLEdBQVYsVUFBVTtRQUM2QixtQkFBYyxHQUFkLGNBQWM7S0FFOUQ7MEJBbEJZLHNDQUFNOzs7OztrQkFBRSxNQUFXO1lBRTlCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1lBRXRCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzs7Ozs7Ozs7SUFnQm5CLHFDQUFROzs7SUFBUjtRQUFBLGlCQTJCQztRQXpCQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBRXpCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0dBQXdHLENBQUMsQ0FBQztZQUV2SCxNQUFNLENBQUM7U0FFUjtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUUvQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztZQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxVQUFDLEtBQUs7Z0JBRXJDLEVBQUUsQ0FBQyxDQUFDLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNyQixLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNuRDtnQkFFRCxLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFFbEIsQ0FBQztTQUVIO0tBRUY7Ozs7SUFFRCx3Q0FBVzs7O0lBQVg7UUFFRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBRTVDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7U0FFbkQ7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUV6QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBRWhDO0tBRUY7Ozs7O0lBR0Qsb0NBQU87Ozs7Y0FBRSxLQUFhO1FBRXBCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDOzs7OztJQUlkLHNDQUFTOzs7OztRQUVmLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBRXpCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7U0FFaEM7UUFFRCxxQkFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFFLHVCQUMvQixJQUFJLENBQUMsT0FBTyxJQUNmLGNBQWMsRUFBRSxVQUFDLEVBQVU7b0JBQVIsa0JBQU07Z0JBQ3ZCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBRWpDLEtBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUVqQzthQUNGLElBQ0QsQ0FBQzs7UUFHSCxVQUFVLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUEvQixDQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDOzs7Ozs7O0lBSS9DLDBDQUFhOzs7OztjQUFFLEVBQUUsRUFBRSxTQUFTO1FBRWxDLHFCQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDOzs7Z0JBMUczQixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztpQkFDM0M7Ozs7Z0JBakJDLFVBQVU7NENBb0NQLE1BQU0sU0FBQyxpQkFBaUIsY0FBRyxRQUFROzs7MkJBaEJyQyxLQUFLOzRCQWlFTCxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7OzZCQXZGaEQ7O1NBb0JhLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCBDbGVhdmUgZnJvbSAnY2xlYXZlLmpzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW5wdXRbY2xlYXZlXSx0ZXh0YXJlYVtjbGVhdmVdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4Q2xlYXZlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHNldCBjbGVhdmUgKGNsZWF2ZTogYW55KSB7XG5cbiAgICB0aGlzLl9jbGVhdmUgPSBjbGVhdmU7XG5cbiAgICB0aGlzLnNldENsZWF2ZSgpO1xuXG4gIH1cblxuICBwcml2YXRlIF9jbGVhdmU6IGFueTtcbiAgcHJpdmF0ZSBfY2xlYXZlSW5zdGFuY2U6IENsZWF2ZTtcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfdmFsdWVBY2Nlc3NvcjogQ29udHJvbFZhbHVlQWNjZXNzb3I7XG4gIHByaXZhdGUgX3dyaXRlVmFsdWU6ICh2YWx1ZSkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvciAoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoTkdfVkFMVUVfQUNDRVNTT1IpIEBPcHRpb25hbCgpIHByaXZhdGUgdmFsdWVBY2Nlc3NvcnM6IENvbnRyb2xWYWx1ZUFjY2Vzc29yW10sXG4gICkge1xuICB9XG5cbiAgbmdPbkluaXQgKCkge1xuXG4gICAgaWYgKCF0aGlzLnZhbHVlQWNjZXNzb3JzKSB7XG5cbiAgICAgIGNvbnNvbGUud2FybignTm90ZTogVGhlIGNsZWF2ZSBkaXJlY3RpdmUgc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGUgbmdNb2RlbCwgZm9ybUNvbnRyb2wgb3IgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZXMuJyk7XG5cbiAgICAgIHJldHVybjtcblxuICAgIH1cblxuICAgIGlmICh0aGlzLnZhbHVlQWNjZXNzb3JzLmxlbmd0aCkge1xuXG4gICAgICB0aGlzLl92YWx1ZUFjY2Vzc29yID0gdGhpcy52YWx1ZUFjY2Vzc29yc1swXTtcblxuICAgICAgdGhpcy5fd3JpdGVWYWx1ZSA9IHRoaXMuX3ZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZTtcbiAgICAgIHRoaXMuX3ZhbHVlQWNjZXNzb3Iud3JpdGVWYWx1ZSA9ICh2YWx1ZSkgPT4ge1xuXG4gICAgICAgIGlmICh0aGlzLl93cml0ZVZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5fd3JpdGVWYWx1ZS5jYWxsKHRoaXMuX3ZhbHVlQWNjZXNzb3IsIHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0Q2xlYXZlKCk7XG5cbiAgICAgIH07XG5cbiAgICB9XG5cbiAgfVxuXG4gIG5nT25EZXN0cm95ICgpIHtcblxuICAgIGlmICh0aGlzLl92YWx1ZUFjY2Vzc29yICYmIHRoaXMuX3dyaXRlVmFsdWUpIHtcblxuICAgICAgdGhpcy5fdmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlID0gdGhpcy5fd3JpdGVWYWx1ZTtcblxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jbGVhdmVJbnN0YW5jZSkge1xuXG4gICAgICB0aGlzLl9jbGVhdmVJbnN0YW5jZS5kZXN0cm95KCk7XG5cbiAgICB9XG5cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gIG9uSW5wdXQgKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2xlYXZlICgpIHtcblxuICAgIGlmICh0aGlzLl9jbGVhdmVJbnN0YW5jZSkge1xuXG4gICAgICB0aGlzLl9jbGVhdmVJbnN0YW5jZS5kZXN0cm95KCk7XG5cbiAgICB9XG5cbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIHRoaXMuX2NsZWF2ZUluc3RhbmNlID0gbmV3IENsZWF2ZShlbCwge1xuICAgICAgLi4udGhpcy5fY2xlYXZlLFxuICAgICAgb25WYWx1ZUNoYW5nZWQ6ICh7IHRhcmdldCB9KSA9PiB7XG4gICAgICAgIGlmICh0YXJnZXQudmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG5cbiAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoZWwsICdpbnB1dCcpO1xuXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBoYWNrIGZvciBtb2RlbCAtPiB2aWV3IGNsZWF2ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kaXNwYXRjaEV2ZW50KGVsLCAnaW5wdXQnKSwgMCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hFdmVudCAoZWwsIGV2ZW50VHlwZSkge1xuXG4gICAgY29uc3QgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldmVudC5pbml0RXZlbnQoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpO1xuICAgIGVsLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuXG4gIH1cblxufVxuIl19