UNPKG

ion-cleave-directive

Version:

A cleaveJS package ready to use on Ionic

153 lines (152 loc) 11.3 kB
/** * @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