UNPKG

ion-cleave-directive

Version:

A cleaveJS package ready to use on Ionic

129 lines (128 loc) 10.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Directive, ElementRef, HostListener, Inject, Input, Optional, } from '@angular/core'; import { NG_VALUE_ACCESSOR, } from '@angular/forms'; import Cleave from 'cleave.js'; export class IonCleaveDirective { /** * @param {?} elementRef * @param {?} valueAccessors */ constructor(elementRef, valueAccessors) { this.elementRef = elementRef; this.valueAccessors = valueAccessors; } /** * @param {?} cleave * @return {?} */ set cleave(cleave) { this._cleave = cleave; this.setCleave(); } /** * @return {?} */ ngOnInit() { 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 = (value) => { if (this._writeValue) { this._writeValue.call(this._valueAccessor, value); } this.setCleave(); }; } } /** * @return {?} */ ngOnDestroy() { if (this._valueAccessor && this._writeValue) { this._valueAccessor.writeValue = this._writeValue; } if (this._cleaveInstance) { this._cleaveInstance.destroy(); } } /** * @param {?} value * @return {?} */ onInput(value) { this._value = value; } /** * @return {?} */ setCleave() { if (this._cleaveInstance) { this._cleaveInstance.destroy(); } const /** @type {?} */ el = this.elementRef.nativeElement; this._cleaveInstance = new Cleave(el, Object.assign({}, this._cleave, { onValueChanged: ({ target }) => { if (target.value !== this._value) { this.dispatchEvent(el, 'input'); } } })); // hack for model -> view cleave setTimeout(() => this.dispatchEvent(el, 'input'), 0); } /** * @param {?} el * @param {?} eventType * @return {?} */ dispatchEvent(el, eventType) { const /** @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 = () => [ { 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'],] },], }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWNsZWF2ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtY2xlYXZlLWRpcmVjdGl2ZS8iLCJzb3VyY2VzIjpbIm5neC1jbGVhdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sTUFBTSxNQUFNLFdBQVcsQ0FBQztBQUsvQixNQUFNOzs7OztJQWdCSixZQUNVLFlBQ3VDO1FBRHZDLGVBQVUsR0FBVixVQUFVO1FBQzZCLG1CQUFjLEdBQWQsY0FBYztLQUU5RDs7Ozs7UUFsQlksTUFBTSxDQUFFLE1BQVc7UUFFOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFFdEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDOzs7OztJQWdCbkIsUUFBUTtRQUVOLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFFekIsT0FBTyxDQUFDLElBQUksQ0FBQyx3R0FBd0csQ0FBQyxDQUFDO1lBRXZILE1BQU0sQ0FBQztTQUVSO1FBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRS9CLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO1lBQ2xELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBRXpDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO2lCQUNuRDtnQkFFRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFFbEIsQ0FBQztTQUVIO0tBRUY7Ozs7SUFFRCxXQUFXO1FBRVQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBRW5EO1FBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFFekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUVoQztLQUVGOzs7OztJQUdELE9BQU8sQ0FBRSxLQUFhO1FBRXBCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDOzs7OztJQUlkLFNBQVM7UUFFZixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUV6QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBRWhDO1FBRUQsdUJBQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBRSxvQkFDL0IsSUFBSSxDQUFDLE9BQU8sSUFDZixjQUFjLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7Z0JBQzdCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBRWpDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2lCQUVqQzthQUNGLElBQ0QsQ0FBQzs7UUFHSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Ozs7Ozs7SUFJL0MsYUFBYSxDQUFFLEVBQUUsRUFBRSxTQUFTO1FBRWxDLHVCQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDOzs7O1lBMUczQixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdDQUFnQzthQUMzQzs7OztZQWpCQyxVQUFVO3dDQW9DUCxNQUFNLFNBQUMsaUJBQWlCLGNBQUcsUUFBUTs7O3VCQWhCckMsS0FBSzt3QkFpRUwsWUFBWSxTQUFDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IENsZWF2ZSBmcm9tICdjbGVhdmUuanMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFtjbGVhdmVdLHRleHRhcmVhW2NsZWF2ZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hDbGVhdmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgc2V0IGNsZWF2ZSAoY2xlYXZlOiBhbnkpIHtcblxuICAgIHRoaXMuX2NsZWF2ZSA9IGNsZWF2ZTtcblxuICAgIHRoaXMuc2V0Q2xlYXZlKCk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX2NsZWF2ZTogYW55O1xuICBwcml2YXRlIF9jbGVhdmVJbnN0YW5jZTogQ2xlYXZlO1xuICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xuICBwcml2YXRlIF92YWx1ZUFjY2Vzc29yOiBDb250cm9sVmFsdWVBY2Nlc3NvcjtcbiAgcHJpdmF0ZSBfd3JpdGVWYWx1ZTogKHZhbHVlKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yIChcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChOR19WQUxVRV9BQ0NFU1NPUikgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2YWx1ZUFjY2Vzc29yczogQ29udHJvbFZhbHVlQWNjZXNzb3JbXSxcbiAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCAoKSB7XG5cbiAgICBpZiAoIXRoaXMudmFsdWVBY2Nlc3NvcnMpIHtcblxuICAgICAgY29uc29sZS53YXJuKCdOb3RlOiBUaGUgY2xlYXZlIGRpcmVjdGl2ZSBzaG91bGQgYmUgdXNlZCB3aXRoIHRoZSBuZ01vZGVsLCBmb3JtQ29udHJvbCBvciBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlcy4nKTtcblxuICAgICAgcmV0dXJuO1xuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWVBY2Nlc3NvcnMubGVuZ3RoKSB7XG5cbiAgICAgIHRoaXMuX3ZhbHVlQWNjZXNzb3IgPSB0aGlzLnZhbHVlQWNjZXNzb3JzWzBdO1xuXG4gICAgICB0aGlzLl93cml0ZVZhbHVlID0gdGhpcy5fdmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlO1xuICAgICAgdGhpcy5fdmFsdWVBY2Nlc3Nvci53cml0ZVZhbHVlID0gKHZhbHVlKSA9PiB7XG5cbiAgICAgICAgaWYgKHRoaXMuX3dyaXRlVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl93cml0ZVZhbHVlLmNhbGwodGhpcy5fdmFsdWVBY2Nlc3NvciwgdmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRDbGVhdmUoKTtcblxuICAgICAgfTtcblxuICAgIH1cblxuICB9XG5cbiAgbmdPbkRlc3Ryb3kgKCkge1xuXG4gICAgaWYgKHRoaXMuX3ZhbHVlQWNjZXNzb3IgJiYgdGhpcy5fd3JpdGVWYWx1ZSkge1xuXG4gICAgICB0aGlzLl92YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUgPSB0aGlzLl93cml0ZVZhbHVlO1xuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NsZWF2ZUluc3RhbmNlKSB7XG5cbiAgICAgIHRoaXMuX2NsZWF2ZUluc3RhbmNlLmRlc3Ryb3koKTtcblxuICAgIH1cblxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudC50YXJnZXQudmFsdWUnXSlcbiAgb25JbnB1dCAodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDbGVhdmUgKCkge1xuXG4gICAgaWYgKHRoaXMuX2NsZWF2ZUluc3RhbmNlKSB7XG5cbiAgICAgIHRoaXMuX2NsZWF2ZUluc3RhbmNlLmRlc3Ryb3koKTtcblxuICAgIH1cblxuICAgIGNvbnN0IGVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fY2xlYXZlSW5zdGFuY2UgPSBuZXcgQ2xlYXZlKGVsLCB7XG4gICAgICAuLi50aGlzLl9jbGVhdmUsXG4gICAgICBvblZhbHVlQ2hhbmdlZDogKHsgdGFyZ2V0IH0pID0+IHtcbiAgICAgICAgaWYgKHRhcmdldC52YWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcblxuICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChlbCwgJ2lucHV0Jyk7XG5cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIGhhY2sgZm9yIG1vZGVsIC0+IHZpZXcgY2xlYXZlXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRpc3BhdGNoRXZlbnQoZWwsICdpbnB1dCcpLCAwKTtcblxuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaEV2ZW50IChlbCwgZXZlbnRUeXBlKSB7XG5cbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LmluaXRFdmVudChldmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7XG4gICAgZWwuZGlzcGF0Y2hFdmVudChldmVudCk7XG5cbiAgfVxuXG59XG4iXX0=