UNPKG

ngx-cleave-directive

Version:

This directive integrates `cleave.js` into Angular Form.

1 lines 5.14 kB
{"version":3,"file":"ngx-cleave-directive.mjs","sources":["../../../projects/ngx-cleave-directive/src/lib/ngx-cleave.directive.ts","../../../projects/ngx-cleave-directive/src/lib/ngx-cleave-directive.module.ts","../../../projects/ngx-cleave-directive/src/lib/index.ts","../../../projects/ngx-cleave-directive/src/lib/ngx-cleave-directive.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport Cleave from 'cleave.js';\nimport { CleaveOptions } from 'cleave.js/options';\n\n@Directive({\n selector: 'input[cleave],textarea[cleave]',\n})\nexport class NgxCleaveDirective implements OnInit, OnDestroy {\n\n @Input('rawValue') rawValue = false;\n\n @Input('cleave') set cleave (cleave: CleaveOptions) {\n this._cleave = cleave;\n this.setCleave();\n }\n\n get cleave () {\n return this._cleave;\n }\n\n private _cleave!: CleaveOptions;\n private cleaveInstance?: Cleave;\n private viewToModelUpdate = this.ngControl?.viewToModelUpdate;\n\n constructor (\n private elementRef: ElementRef,\n @Optional() private ngControl: NgControl,\n ) {\n if (!this.ngControl) {\n throw new Error(\n 'NgxCleaveDirective: should be used with one of the following form directives — ngModel, formControl or formControlName.');\n }\n }\n\n ngOnInit () {\n if (this.ngControl) {\n // the parameter is not used in the patched method,\n this.ngControl.viewToModelUpdate = (_: any) => {\n this.viewToModelUpdate?.call(\n this.ngControl,\n // update model with the value got from the Cleave instance\n this.rawValue\n ? this.cleaveInstance?.getRawValue()\n : this.cleaveInstance?.getFormattedValue(),\n );\n };\n }\n }\n\n ngOnDestroy () {\n if (this.ngControl) {\n this.ngControl.viewToModelUpdate = this.viewToModelUpdate;\n }\n\n this.cleaveInstance?.destroy();\n\n }\n\n private setCleave () {\n this.cleaveInstance?.destroy();\n\n this.cleaveInstance = new Cleave(\n this.elementRef.nativeElement,\n {\n ...this.cleave,\n onValueChanged: ({ target }) => {\n // trigger the update with an empty string\n this.ngControl.viewToModelUpdate('');\n\n if (this.cleave.onValueChanged && typeof this.cleave.onValueChanged === 'function') {\n this.cleave.onValueChanged({ target });\n }\n },\n });\n\n if (!this.rawValue) {\n // initially format the value, which will trigger onValueChanged to call viewToModelUpdate\n setTimeout(() => this.cleaveInstance?.setRawValue(this.ngControl.value), 0);\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { NgxCleaveDirective } from './ngx-cleave.directive';\n\n@NgModule({\n imports: [],\n declarations: [NgxCleaveDirective],\n exports: [NgxCleaveDirective],\n})\nexport class NgxCleaveDirectiveModule {\n}\n","/*\n * Public API Surface of ngx-cleave-directive\n */\n\nexport * from './ngx-cleave.directive';\nexport * from './ngx-cleave-directive.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAgBa,kBAAkB;IAiB7B,YACU,UAAsB,EACV,SAAoB;;QADhC,eAAU,GAAV,UAAU,CAAY;QACV,cAAS,GAAT,SAAS,CAAW;QAjBvB,aAAQ,GAAG,KAAK,CAAC;QAa5B,sBAAiB,GAAG,MAAA,IAAI,CAAC,SAAS,0CAAE,iBAAiB,CAAC;QAM5D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,MAAM,IAAI,KAAK,CACb,yHAAyH,CAAC,CAAC;SAC9H;KACF;IArBD,IAAqB,MAAM,CAAE,MAAqB;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAgBD,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,EAAE;;YAElB,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,CAAC,CAAM;;gBACxC,MAAA,IAAI,CAAC,iBAAiB,0CAAE,IAAI,CAC1B,IAAI,CAAC,SAAS;;gBAEd,IAAI,CAAC,QAAQ;sBACT,MAAA,IAAI,CAAC,cAAc,0CAAE,WAAW,EAAE;sBAClC,MAAA,IAAI,CAAC,cAAc,0CAAE,iBAAiB,EAAE,CAC7C,CAAC;aACH,CAAC;SACH;KACF;IAED,WAAW;;QACT,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC3D;QAED,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;KAEhC;IAEO,SAAS;;QACf,MAAA,IAAI,CAAC,cAAc,0CAAE,OAAO,EAAE,CAAC;QAE/B,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAC9B,IAAI,CAAC,UAAU,CAAC,aAAa,kCAE1B,IAAI,CAAC,MAAM,KACd,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE;;gBAEzB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAErC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE;oBAClF,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;iBACxC;aACF,IACD,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;YAElB,UAAU,CAAC,gBAAM,OAAA,MAAA,IAAI,CAAC,cAAc,0CAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,EAAA,EAAE,CAAC,CAAC,CAAC;SAC7E;KACF;;qJAxEU,kBAAkB;yIAAlB,kBAAkB;2FAAlB,kBAAkB;kBAH9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,gCAAgC;iBAC3C;;;8BAoBI,QAAQ;;yBAjBQ,QAAQ;sBAA1B,KAAK;uBAAC,UAAU;gBAEI,MAAM;sBAA1B,KAAK;uBAAC,QAAQ;;;MCZJ,wBAAwB;;2JAAxB,wBAAwB;4JAAxB,wBAAwB,iBAHpB,kBAAkB,aACvB,kBAAkB;4JAEjB,wBAAwB,YAJ1B,EAAE;2FAIA,wBAAwB;kBALpC,QAAQ;mBAAC;oBACR,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B;;;ACPD;;;;ACAA;;;;;;"}