@starley/ion-directives 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -35,6 +35,28 @@ import { DirectivesModule } from '@starley/ion-directives';
35
35
  export class MyComponent {}
36
36
  ```
37
37
 
38
+ ### Para usar a FormChangeDetector
39
+
40
+ * Importe a service FormChangeDetector no componente que desejar utilizar.
41
+
42
+ * Injete a service no construtor do componente:
43
+
44
+ ```typescript
45
+ constructor(private formChangeDetector: FormChangeDetector) {}
46
+ ```
47
+
48
+ Crie o formulario usando o FormGroup, e chame o método `prepareFormChangeDetection` passando o formulário como parâmetro.
49
+
50
+ Ex: this.myForm = this.formChangeDetector.prepareFormChangeDetection(this.myForm);
51
+
52
+ É necessário retornar o formulário para a própria variável, pois quando o formulário é atualizado, as mudanças precisam ser refletidas na variável para que o sistema de detecção de mudanças do Angular funcione corretamente.
53
+
54
+ Agora temos a variavel booleana `isDirty` que indica se o formulário foi modificado e pode ser usada para habilitar/desabilitar botões de salvar com base nas alterações.
55
+
56
+ Ex: if(this.formChangeDetector.isDirty) { ... }
57
+
58
+ Agora você pode usar o formulário com detecção de mudanças automaticamente.
59
+
38
60
  ### Para usar a mascara 'appMask'
39
61
 
40
62
  Adicione dentro do input a chamada passando após o simbolo de '=' a formatação desejada!
@@ -1,10 +1,10 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
3
+ import { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';
3
4
  import { IonInputMaskDirective } from './input-mask/input-mask.directive';
4
5
  import { IonInputRemoveDirective } from './input-remove/input-remove.directive';
5
6
  import { PressHoldDirective } from './press-hold/press-hold.directive';
6
7
  import { TapDirective } from './tap/tap.directive';
7
- import { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';
8
8
  import * as i0 from "@angular/core";
9
9
  /**
10
10
  * Gerencia precionamento de enventos
@@ -33,7 +33,7 @@ export { DirectivesModule };
33
33
  TapDirective,
34
34
  IonInputMaskDirective,
35
35
  IonInputRemoveDirective,
36
- BlockCopyPasteDirective
36
+ BlockCopyPasteDirective,
37
37
  ],
38
38
  imports: [
39
39
  CommonModule
@@ -45,7 +45,8 @@ export { DirectivesModule };
45
45
  IonInputRemoveDirective,
46
46
  BlockCopyPasteDirective
47
47
  ],
48
- schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]
48
+ schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
49
+ providers: []
49
50
  }]
50
51
  }], null, null); })();
51
52
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(DirectivesModule, { declarations: [PressHoldDirective,
@@ -1 +1 @@
1
- {"version":3,"file":"directive.module.js","sourceRoot":"","sources":["../src/directive.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAuB,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;;AAElF;;;GAGG;AAEH;IAAA;KA4BC;IANU,wBAAO,GAAd;QACI,OAAO;YACH,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,EAAE;SAChB,CAAC;IACN,CAAC;oHANQ,gBAAgB;sEAAhB,gBAAgB;0EAZrB,YAAY;2BAtBpB;CAyCC,AA5BD,IA4BC;SAPY,gBAAgB;uFAAhB,gBAAgB;cArB5B,QAAQ;eAAC;gBACN,YAAY,EAAE;oBACV,kBAAkB;oBAClB,YAAY;oBACZ,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;iBAC1B;gBACD,OAAO,EAAE;oBACL,YAAY;iBACf;gBACD,OAAO,EAAE;oBACL,kBAAkB;oBAClB,YAAY;oBACZ,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;iBAC1B;gBACD,OAAO,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;aAEtD;;wFACY,gBAAgB,mBAnBrB,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB,aAGvB,YAAY,aAGZ,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { IonInputMaskDirective } from './input-mask/input-mask.directive';\nimport { IonInputRemoveDirective } from './input-remove/input-remove.directive';\nimport { PressHoldDirective } from './press-hold/press-hold.directive';\nimport { TapDirective } from './tap/tap.directive';\nimport { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';\n\n/**\n * Gerencia precionamento de enventos\n * @author Starley Cazorla\n */\n\n@NgModule({\n declarations: [\n PressHoldDirective,\n TapDirective,\n IonInputMaskDirective,\n IonInputRemoveDirective,\n BlockCopyPasteDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n PressHoldDirective,\n TapDirective,\n IonInputMaskDirective,\n IonInputRemoveDirective,\n BlockCopyPasteDirective\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA]\n\n})\nexport class DirectivesModule {\n static forRoot(): ModuleWithProviders<DirectivesModule> {\n return {\n ngModule: DirectivesModule,\n providers: [],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"directive.module.js","sourceRoot":"","sources":["../src/directive.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAuB,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;;AAEnD;;;GAGG;AAEH;IAAA;KA6BC;IANU,wBAAO,GAAd;QACI,OAAO;YACH,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,EAAE;SAChB,CAAC;IACN,CAAC;oHANQ,gBAAgB;sEAAhB,gBAAgB;0EAbrB,YAAY;2BAtBpB;CA0CC,AA7BD,IA6BC;SAPY,gBAAgB;uFAAhB,gBAAgB;cAtB5B,QAAQ;eAAC;gBACN,YAAY,EAAE;oBACV,kBAAkB;oBAClB,YAAY;oBACZ,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;iBAC1B;gBACD,OAAO,EAAE;oBACL,YAAY;iBACf;gBACD,OAAO,EAAE;oBACL,kBAAkB;oBAClB,YAAY;oBACZ,qBAAqB;oBACrB,uBAAuB;oBACvB,uBAAuB;iBAC1B;gBACD,OAAO,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;gBACnD,SAAS,EAAE,EAAE;aAEhB;;wFACY,gBAAgB,mBApBrB,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB,aAGvB,YAAY,aAGZ,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, ModuleWithProviders, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { BlockCopyPasteDirective } from './block-input/block-copy-past.directive';\nimport { IonInputMaskDirective } from './input-mask/input-mask.directive';\nimport { IonInputRemoveDirective } from './input-remove/input-remove.directive';\nimport { PressHoldDirective } from './press-hold/press-hold.directive';\nimport { TapDirective } from './tap/tap.directive';\n\n/**\n * Gerencia precionamento de enventos\n * @author Starley Cazorla\n */\n\n@NgModule({\n declarations: [\n PressHoldDirective,\n TapDirective,\n IonInputMaskDirective,\n IonInputRemoveDirective,\n BlockCopyPasteDirective,\n ],\n imports: [\n CommonModule\n ],\n exports: [\n PressHoldDirective,\n TapDirective,\n IonInputMaskDirective,\n IonInputRemoveDirective,\n BlockCopyPasteDirective\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\n providers: []\n\n})\nexport class DirectivesModule {\n static forRoot(): ModuleWithProviders<DirectivesModule> {\n return {\n ngModule: DirectivesModule,\n providers: [],\n };\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { FormGroup } from '@angular/forms';
2
+ import * as i0 from "@angular/core";
3
+ export declare class FormChangeDetector {
4
+ isDirty: boolean;
5
+ private originalFormValues;
6
+ private clearFormChangeDetection;
7
+ prepareFormChangeDetection(documentForm: FormGroup): FormGroup<any>;
8
+ private formChangeDetection;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormChangeDetector, never>;
10
+ static ɵprov: i0.ɵɵInjectableDeclaration<FormChangeDetector>;
11
+ }
@@ -0,0 +1,56 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { Injectable } from '@angular/core';
13
+ import * as i0 from "@angular/core";
14
+ var FormChangeDetector = /** @class */ (function () {
15
+ function FormChangeDetector() {
16
+ this.isDirty = false;
17
+ }
18
+ FormChangeDetector.prototype.clearFormChangeDetection = function () {
19
+ this.originalFormValues = null;
20
+ this.isDirty = false;
21
+ };
22
+ FormChangeDetector.prototype.prepareFormChangeDetection = function (documentForm) {
23
+ this.clearFormChangeDetection();
24
+ this.originalFormValues = __assign({}, documentForm.getRawValue());
25
+ // Garante estado pristine inicial
26
+ documentForm.markAsPristine();
27
+ documentForm.markAsUntouched();
28
+ this.isDirty = false;
29
+ this.formChangeDetection(documentForm);
30
+ return documentForm;
31
+ };
32
+ FormChangeDetector.prototype.formChangeDetection = function (documentForm) {
33
+ var _this = this;
34
+ documentForm.valueChanges.subscribe(function () {
35
+ if (!_this.originalFormValues) {
36
+ _this.isDirty = false;
37
+ return;
38
+ }
39
+ var currentValues = documentForm.getRawValue();
40
+ var normalizedCurrent = __assign({}, currentValues);
41
+ var normalizedOriginal = __assign({}, _this.originalFormValues);
42
+ _this.isDirty = JSON.stringify(normalizedCurrent) !== JSON.stringify(normalizedOriginal);
43
+ });
44
+ };
45
+ FormChangeDetector.ɵfac = function FormChangeDetector_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormChangeDetector)(); };
46
+ FormChangeDetector.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormChangeDetector, factory: FormChangeDetector.ɵfac, providedIn: 'root' });
47
+ return FormChangeDetector;
48
+ }());
49
+ export { FormChangeDetector };
50
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormChangeDetector, [{
51
+ type: Injectable,
52
+ args: [{
53
+ providedIn: 'root',
54
+ }]
55
+ }], null, null); })();
56
+ //# sourceMappingURL=form-change-detector.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-change-detector.service.js","sourceRoot":"","sources":["../../src/forms/form-change-detector.service.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C;IAAA;QAKI,YAAO,GAAY,KAAK,CAAC;KAmC5B;IA/BW,qDAAwB,GAAhC;QACI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,uDAA0B,GAA1B,UAA2B,YAAuB;QAC9C,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,gBAAQ,YAAY,CAAC,WAAW,EAAE,CAAE,CAAC;QAC5D,kCAAkC;QAClC,YAAY,CAAC,cAAc,EAAE,CAAC;QAC9B,YAAY,CAAC,eAAe,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEvC,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,gDAAmB,GAA3B,UAA4B,YAAuB;QAAnD,iBAYC;QAXG,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,KAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC3B,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,OAAO;YACX,CAAC;YAED,IAAM,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,iBAAiB,gBAAQ,aAAa,CAAE,CAAC;YAC7C,IAAI,kBAAkB,gBAAQ,KAAI,CAAC,kBAAkB,CAAE,CAAC;YACxD,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACP,CAAC;wHAnCQ,kBAAkB;4EAAlB,kBAAkB,WAAlB,kBAAkB,mBAFf,MAAM;6BAJtB;CA2CC,AAxCD,IAwCC;SArCY,kBAAkB;uFAAlB,kBAAkB;cAH9B,UAAU;eAAC;gBACR,UAAU,EAAE,MAAM;aACrB","sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormChangeDetector {\n\n isDirty: boolean = false;\n\n private originalFormValues: any;\n\n private clearFormChangeDetection() {\n this.originalFormValues = null;\n this.isDirty = false;\n }\n\n prepareFormChangeDetection(documentForm: FormGroup) {\n this.clearFormChangeDetection();\n this.originalFormValues = { ...documentForm.getRawValue() };\n // Garante estado pristine inicial\n documentForm.markAsPristine();\n documentForm.markAsUntouched();\n this.isDirty = false;\n this.formChangeDetection(documentForm);\n\n return documentForm;\n }\n\n private formChangeDetection(documentForm: FormGroup): any {\n documentForm.valueChanges.subscribe(() => {\n if (!this.originalFormValues) {\n this.isDirty = false;\n return;\n }\n\n const currentValues = documentForm.getRawValue();\n let normalizedCurrent = { ...currentValues };\n let normalizedOriginal = { ...this.originalFormValues };\n this.isDirty = JSON.stringify(normalizedCurrent) !== JSON.stringify(normalizedOriginal);\n });\n }\n\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './block-input/block-copy-past.directive';
2
2
  export * from './directive.module';
3
+ export { FormChangeDetector } from './forms/form-change-detector.service';
3
4
  export * from './input-mask/input-mask.directive';
4
5
  export * from './input-remove/input-remove.directive';
5
6
  export * from './press-hold/press-hold.directive';
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './block-input/block-copy-past.directive';
2
2
  export * from './directive.module';
3
+ export { FormChangeDetector } from './forms/form-change-detector.service';
3
4
  export * from './input-mask/input-mask.directive';
4
5
  export * from './input-remove/input-remove.directive';
5
6
  export * from './press-hold/press-hold.directive';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './block-input/block-copy-past.directive';\nexport * from './directive.module';\nexport * from './input-mask/input-mask.directive';\nexport * from './input-remove/input-remove.directive';\nexport * from './press-hold/press-hold.directive';\nexport { ConnectorSqlitePwaProvider } from './provider/connector-sqlite-pwa.provider';\nexport { DateUtilProvider } from './provider/date-util-provider';\nexport { IonUtilsProvider } from './provider/ion-utils-provider';\nexport { IonValidateFilds } from './provider/ion-validate-filds';\nexport * from './tap/tap.directive';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './block-input/block-copy-past.directive';\nexport * from './directive.module';\nexport { FormChangeDetector } from './forms/form-change-detector.service';\nexport * from './input-mask/input-mask.directive';\nexport * from './input-remove/input-remove.directive';\nexport * from './press-hold/press-hold.directive';\nexport { ConnectorSqlitePwaProvider } from './provider/connector-sqlite-pwa.provider';\nexport { DateUtilProvider } from './provider/date-util-provider';\nexport { IonUtilsProvider } from './provider/ion-utils-provider';\nexport { IonValidateFilds } from './provider/ion-validate-filds';\nexport * from './tap/tap.directive';\n"]}
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
4
4
  /**
5
5
  * Directive input mask
6
6
  * @author Starley Cazorla
7
- * @version 1.0.0
7
+ * @version 3.0.0
8
8
  */
9
9
  export declare class IonInputMaskDirective implements OnChanges {
10
10
  private elementRef;
@@ -5,7 +5,7 @@ import * as i1 from "@angular/forms";
5
5
  /**
6
6
  * Directive input mask
7
7
  * @author Starley Cazorla
8
- * @version 1.0.0
8
+ * @version 3.0.0
9
9
  */
10
10
  var IonInputMaskDirective = /** @class */ (function () {
11
11
  function IonInputMaskDirective(elementRef, renderer, ngModel, cdRef) {
@@ -17,6 +17,7 @@ var IonInputMaskDirective = /** @class */ (function () {
17
17
  }
18
18
  IonInputMaskDirective.prototype.ngOnChanges = function (changes) {
19
19
  if (changes['pattern'] && !changes['pattern'].firstChange) {
20
+ this.pattern = changes['pattern'].currentValue;
20
21
  // Quando a máscara muda, limpe o valor e aplique a nova máscara
21
22
  this.rawValue = this.extractRawValue(this.ngModel.value); // Extraia o valor bruto antes de aplicar a nova máscara
22
23
  this.applyMask(); // Reaplique a máscara
@@ -62,13 +63,15 @@ var IonInputMaskDirective = /** @class */ (function () {
62
63
  }
63
64
  var maskedValue = '';
64
65
  var rawValIndex = 0;
65
- for (var i = 0; i < mask.length && rawValIndex < rawValue.length; i++) {
66
+ var i = 0;
67
+ while (rawValIndex < rawValue.length) {
66
68
  if (mask[i] === '*') {
67
69
  maskedValue += rawValue[rawValIndex++];
68
70
  }
69
71
  else {
70
- maskedValue += mask[i];
72
+ maskedValue += mask[i] ? mask[i] : '';
71
73
  }
74
+ i = (i + 1) % mask.length; // Volta ao início da máscara se necessário
72
75
  }
73
76
  return maskedValue;
74
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"input-mask.directive.js","sourceRoot":"","sources":["../../src/input-mask/input-mask.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectorRef, Directive, ElementRef, HostListener, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n/**\n * Directive input mask\n * @author Starley Cazorla\n * @version 1.0.0\n */\n\n@Directive({\n selector: '[appMask]',\n providers: [NgModel]\n})\nexport class IonInputMaskDirective implements OnChanges {\n\n @Input('appMask') pattern: string;\n private rawValue: string = '';\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private ngModel: NgModel, private cdRef: ChangeDetectorRef) { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['pattern'] && !changes['pattern'].firstChange) {\n // Quando a máscara muda, limpe o valor e aplique a nova máscara\n this.rawValue = this.extractRawValue(this.ngModel.value); // Extraia o valor bruto antes de aplicar a nova máscara\n this.applyMask(); // Reaplique a máscara\n this.cdRef.detectChanges();\n }\n }\n\n @HostListener('input', ['$event.target.value'])\n onInput(value: string) {\n this.rawValue = this.extractRawValue(value); // Atualize o valor bruto com o novo valor de entrada\n this.applyMask(); // Reaplique a máscara\n }\n\n /**\n * Applys mask\n * @author Starley Cazorla\n */\n private applyMask() {\n if (!this.pattern) {\n return;\n }\n\n // Aplique a máscara ao valor bruto\n const maskedValue = this.maskValue(this.rawValue, this.pattern);\n Promise.resolve().then(() => {\n // Atualizar o input e o modelo de controle com o valor mascarado\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', maskedValue);\n this.ngModel.control?.setValue(maskedValue, { emitEvent: false });\n });\n }\n\n private extractRawValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, ''); // Remove todos os caracteres não são letras e digitos\n }\n\n /**\n * Masks value\n * @author Starley Cazorla\n * @param rawValue\n * @param mask\n * @returns value\n */\n private maskValue(rawValue: string, mask: string): string {\n\n // Se a máscara não tiver um padrão, não faca nada\n if (!mask || mask === undefined || mask === null || mask === '') {\n return rawValue;\n }\n\n let maskedValue = '';\n let rawValIndex = 0;\n for (let i = 0; i < mask.length && rawValIndex < rawValue.length; i++) {\n if (mask[i] === '*') {\n maskedValue += rawValue[rawValIndex++];\n } else {\n maskedValue += mask[i];\n }\n }\n return maskedValue;\n }\n}\n"]}
1
+ {"version":3,"file":"input-mask.directive.js","sourceRoot":"","sources":["../../src/input-mask/input-mask.directive.ts"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectorRef, Directive, ElementRef, HostListener, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n/**\n * Directive input mask\n * @author Starley Cazorla\n * @version 3.0.0\n */\n\n@Directive({\n selector: '[appMask]',\n providers: [NgModel]\n})\nexport class IonInputMaskDirective implements OnChanges {\n\n @Input('appMask') pattern: string;\n private rawValue: string = '';\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private ngModel: NgModel, private cdRef: ChangeDetectorRef) { }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['pattern'] && !changes['pattern'].firstChange) {\n this.pattern = changes['pattern'].currentValue;\n // Quando a máscara muda, limpe o valor e aplique a nova máscara\n this.rawValue = this.extractRawValue(this.ngModel.value); // Extraia o valor bruto antes de aplicar a nova máscara\n this.applyMask(); // Reaplique a máscara\n this.cdRef.detectChanges();\n }\n }\n\n @HostListener('input', ['$event.target.value'])\n onInput(value: string) {\n this.rawValue = this.extractRawValue(value); // Atualize o valor bruto com o novo valor de entrada\n this.applyMask(); // Reaplique a máscara\n }\n\n /**\n * Applys mask\n * @author Starley Cazorla\n */\n private applyMask() {\n if (!this.pattern) {\n return;\n }\n\n // Aplique a máscara ao valor bruto\n const maskedValue = this.maskValue(this.rawValue, this.pattern);\n Promise.resolve().then(() => {\n // Atualizar o input e o modelo de controle com o valor mascarado\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', maskedValue);\n this.ngModel.control?.setValue(maskedValue, { emitEvent: false });\n });\n }\n\n private extractRawValue(value: string): string {\n return value.replace(/[^a-zA-Z0-9]/g, ''); // Remove todos os caracteres não são letras e digitos\n }\n\n /**\n * Masks value\n * @author Starley Cazorla\n * @param rawValue\n * @param mask\n * @returns value\n */\n private maskValue(rawValue: string, mask: string): string {\n\n // Se a máscara não tiver um padrão, não faca nada\n if (!mask || mask === undefined || mask === null || mask === '') {\n return rawValue;\n }\n\n let maskedValue = '';\n let rawValIndex = 0;\n let i = 0;\n\n while (rawValIndex < rawValue.length) {\n if (mask[i] === '*') {\n maskedValue += rawValue[rawValIndex++];\n } else {\n maskedValue += mask[i] ? mask[i] : '';\n }\n i = (i + 1) % mask.length; // Volta ao início da máscara se necessário\n }\n\n return maskedValue;\n }\n\n}\n"]}
@@ -1,32 +1,22 @@
1
1
  import { NgModel } from "@angular/forms";
2
2
  import * as i0 from "@angular/core";
3
- /**
4
- * Remove any text from input
5
- * @author Starley Cazorla
6
- */
7
3
  export declare class IonInputRemoveDirective {
8
4
  model: NgModel;
9
- pattern: any;
5
+ pattern: string;
6
+ constructor(model: NgModel);
10
7
  /**
11
- * Construtor
12
- * @param {NgModel} model
13
- * @param {string} pattern
14
- */
15
- constructor(model: NgModel, pattern?: any);
16
- /**
17
- * Determines whether key down on
8
+ * Determines whether ion input on
18
9
  * @author Starley Cazorla
19
10
  * @param event
20
- * @returns
21
11
  */
22
- onKeyDown(event: any): boolean;
12
+ onIonInput(event: any): void;
23
13
  /**
24
- * Gets pattern to remove or set the text to remove
14
+ * Gets pattern
25
15
  * @author Starley Cazorla
26
- * @param typePatter - letter - number - special - punctuation
27
- * @returns
16
+ * @param typePatter
17
+ * @returns pattern - letter - number - special - punctuation
28
18
  */
29
- getPattern(typePatter: string): string | RegExp;
30
- static ɵfac: i0.ɵɵFactoryDeclaration<IonInputRemoveDirective, [null, { attribute: "appRemoveFromInput"; }]>;
31
- static ɵdir: i0.ɵɵDirectiveDeclaration<IonInputRemoveDirective, "[appRemoveFromInput]", never, {}, {}, never, never, false, never>;
19
+ getPattern(typePatter: string): RegExp;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<IonInputRemoveDirective, [{ optional: true; host: true; self: true; }]>;
21
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IonInputRemoveDirective, "[appRemoveFromInput]", never, { "pattern": { "alias": "appRemoveFromInput"; "required": false; }; }, {}, never, never, false, never>;
32
22
  }
@@ -1,61 +1,51 @@
1
- import { Attribute, Directive } from '@angular/core';
2
- import { NgModel } from "@angular/forms";
1
+ import { Directive, Host, Input, Optional, Self } from '@angular/core';
3
2
  import * as i0 from "@angular/core";
4
3
  import * as i1 from "@angular/forms";
5
- /**
6
- * Remove any text from input
7
- * @author Starley Cazorla
8
- */
9
4
  var IonInputRemoveDirective = /** @class */ (function () {
10
- /**
11
- * Construtor
12
- * @param {NgModel} model
13
- * @param {string} pattern
14
- */
15
- function IonInputRemoveDirective(model, pattern) {
16
- if (pattern === void 0) { pattern = null; }
5
+ function IonInputRemoveDirective(model) {
17
6
  this.model = model;
18
- this.pattern = null;
19
- this.pattern = pattern;
20
7
  }
21
8
  /**
22
- * Determines whether key down on
9
+ * Determines whether ion input on
23
10
  * @author Starley Cazorla
24
11
  * @param event
25
- * @returns
26
12
  */
27
- IonInputRemoveDirective.prototype.onKeyDown = function (event) {
28
- var value = event.target.value;
29
- if (this.pattern && this.pattern !== undefined && this.pattern !== null && this.pattern !== '') {
13
+ IonInputRemoveDirective.prototype.onIonInput = function (event) {
14
+ var input = event.target;
15
+ var value = input.value;
16
+ if (this.pattern) {
30
17
  value = value.normalize('NFD').replace(this.getPattern(this.pattern), '');
18
+ input.value = value;
19
+ if (this.model) {
20
+ this.model.control.setValue(value, {
21
+ emitEvent: true,
22
+ emitModelToViewChange: true,
23
+ emitViewToModelChange: true
24
+ });
25
+ }
31
26
  }
32
- event.target.value = value;
33
- if (this.model) {
34
- this.model.update.emit(value);
35
- }
36
- return true;
37
27
  };
38
28
  /**
39
- * Gets pattern to remove or set the text to remove
29
+ * Gets pattern
40
30
  * @author Starley Cazorla
41
- * @param typePatter - letter - number - special - punctuation
42
- * @returns
31
+ * @param typePatter
32
+ * @returns pattern - letter - number - special - punctuation
43
33
  */
44
34
  IonInputRemoveDirective.prototype.getPattern = function (typePatter) {
45
35
  if (typePatter === 'letter')
46
36
  return /[a-zA-Z]+/g;
47
37
  if (typePatter === 'number')
48
- return /[0-9]/;
38
+ return /[0-9]/g;
49
39
  if (typePatter === 'special')
50
40
  return /[^a-zA-Z0-9\s.,!?'"():;]/g;
51
41
  if (typePatter === 'punctuation')
52
42
  return /[.,!?'"():;_-]/g;
53
- return typePatter;
43
+ return new RegExp(typePatter, 'g');
54
44
  };
55
- IonInputRemoveDirective.ɵfac = function IonInputRemoveDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || IonInputRemoveDirective)(i0.ɵɵdirectiveInject(i1.NgModel), i0.ɵɵinjectAttribute('appRemoveFromInput')); };
45
+ IonInputRemoveDirective.ɵfac = function IonInputRemoveDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || IonInputRemoveDirective)(i0.ɵɵdirectiveInject(i1.NgModel, 11)); };
56
46
  IonInputRemoveDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: IonInputRemoveDirective, selectors: [["", "appRemoveFromInput", ""]], hostBindings: function IonInputRemoveDirective_HostBindings(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵlistener("keydown", function IonInputRemoveDirective_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); });
58
- } }, standalone: false, features: [i0.ɵɵProvidersFeature([NgModel])] });
47
+ i0.ɵɵlistener("ionInput", function IonInputRemoveDirective_ionInput_HostBindingHandler($event) { return ctx.onIonInput($event); });
48
+ } }, inputs: { pattern: [0, "appRemoveFromInput", "pattern"] }, standalone: false });
59
49
  return IonInputRemoveDirective;
60
50
  }());
61
51
  export { IonInputRemoveDirective };
@@ -64,12 +54,17 @@ export { IonInputRemoveDirective };
64
54
  args: [{
65
55
  selector: '[appRemoveFromInput]',
66
56
  host: {
67
- '(keydown)': 'onKeyDown($event)'
68
- },
69
- providers: [NgModel]
57
+ '(ionInput)': 'onIonInput($event)'
58
+ }
70
59
  }]
71
- }], function () { return [{ type: i1.NgModel }, { type: undefined, decorators: [{
72
- type: Attribute,
73
- args: ['appRemoveFromInput']
74
- }] }]; }, null); })();
60
+ }], function () { return [{ type: i1.NgModel, decorators: [{
61
+ type: Optional
62
+ }, {
63
+ type: Host
64
+ }, {
65
+ type: Self
66
+ }] }]; }, { pattern: [{
67
+ type: Input,
68
+ args: ['appRemoveFromInput']
69
+ }] }); })();
75
70
  //# sourceMappingURL=input-remove.directive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-remove.directive.js","sourceRoot":"","sources":["../../src/input-remove/input-remove.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;;;AAEzC;;;GAGG;AAEH;IAWI;;;;OAIG;IACH,iCAAmB,KAAc,EACI,OAAmB;QAApD,wBAAA,EAAA,cAAoD;QADrC,UAAK,GAAL,KAAK,CAAS;QAPjC,YAAO,GAAQ,IAAI,CAAC;QAShB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,2CAAS,GAAT,UAAU,KAAU;QAChB,IAAI,KAAK,GAAQ,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QAEpC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE,CAAC;YAC7F,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,4CAAU,GAAV,UAAW,UAAkB;QACzB,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,YAAY,CAAC;QACjD,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QAC5C,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,2BAA2B,CAAC;QACjE,IAAI,UAAU,KAAK,aAAa;YAAE,OAAO,iBAAiB,CAAC;QAC3D,OAAO,UAAU,CAAC;IACtB,CAAC;kIA9CQ,uBAAuB,yDAUjB,oBAAoB;8EAV1B,uBAAuB;YAAvB,sGAAA,qBAAiB,IAAM;iEAFrB,CAAC,OAAO,CAAC;kCAbxB;CA+DC,AAvDD,IAuDC;SAhDY,uBAAuB;uFAAvB,uBAAuB;cAPnC,SAAS;eAAC;gBACP,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE;oBACF,WAAW,EAAE,mBAAmB;iBACnC;gBACD,SAAS,EAAE,CAAC,OAAO,CAAC;aACvB;;sBAWQ,SAAS;uBAAC,oBAAoB","sourcesContent":["import { Attribute, Directive } from '@angular/core';\nimport { NgModel } from \"@angular/forms\";\n\n/**\n * Remove any text from input\n * @author Starley Cazorla\n */\n\n@Directive({\n selector: '[appRemoveFromInput]',\n host: {\n '(keydown)': 'onKeyDown($event)'\n },\n providers: [NgModel]\n})\nexport class IonInputRemoveDirective {\n\n pattern: any = null;\n\n /**\n * Construtor\n * @param {NgModel} model\n * @param {string} pattern\n */\n constructor(public model: NgModel,\n @Attribute('appRemoveFromInput') pattern: any = null) {\n this.pattern = pattern;\n }\n\n /**\n * Determines whether key down on\n * @author Starley Cazorla\n * @param event\n * @returns\n */\n onKeyDown(event: any) {\n let value: any = event.target.value;\n\n if (this.pattern && this.pattern !== undefined && this.pattern !== null && this.pattern !== '') {\n value = value.normalize('NFD').replace(this.getPattern(this.pattern), '');\n }\n\n event.target.value = value;\n if (this.model) {\n this.model.update.emit(value);\n }\n return true;\n }\n\n /**\n * Gets pattern to remove or set the text to remove\n * @author Starley Cazorla\n * @param typePatter - letter - number - special - punctuation\n * @returns\n */\n getPattern(typePatter: string) {\n if (typePatter === 'letter') return /[a-zA-Z]+/g;\n if (typePatter === 'number') return /[0-9]/;\n if (typePatter === 'special') return /[^a-zA-Z0-9\\s.,!?'\"():;]/g;\n if (typePatter === 'punctuation') return /[.,!?'\"():;_-]/g;\n return typePatter;\n }\n\n}\n"]}
1
+ {"version":3,"file":"input-remove.directive.js","sourceRoot":"","sources":["../../src/input-remove/input-remove.directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;;AAGvE;IASI,iCAA+C,KAAc;QAAd,UAAK,GAAL,KAAK,CAAS;IAAI,CAAC;IAElE;;;;OAIG;IACH,4CAAU,GAAV,UAAW,KAAU;QACjB,IAAM,KAAK,GAAG,KAAK,CAAC,MAA0B,CAAC;QAC/C,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAExB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YAEpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE;oBAC/B,SAAS,EAAE,IAAI;oBACf,qBAAqB,EAAE,IAAI;oBAC3B,qBAAqB,EAAE,IAAI;iBAC9B,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,4CAAU,GAAV,UAAW,UAAkB;QACzB,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,YAAY,CAAC;QACjD,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC7C,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,2BAA2B,CAAC;QACjE,IAAI,UAAU,KAAK,aAAa;YAAE,OAAO,iBAAiB,CAAC;QAC3D,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;kIAxCQ,uBAAuB;8EAAvB,uBAAuB;YAAvB,wGAAA,sBAAkB,IAAK;;kCATpC;CAkDC,AA/CD,IA+CC;SAzCY,uBAAuB;uFAAvB,uBAAuB;cANnC,SAAS;eAAC;gBACP,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE;oBACF,YAAY,EAAE,oBAAoB;iBACrC;aACJ;;sBAIgB,QAAQ;;sBAAI,IAAI;;sBAAI,IAAI;wBAFR,OAAO;kBAAnC,KAAK;mBAAC,oBAAoB","sourcesContent":["import { Directive, Host, Input, Optional, Self } from '@angular/core';\nimport { NgModel } from \"@angular/forms\";\n\n@Directive({\n selector: '[appRemoveFromInput]',\n host: {\n '(ionInput)': 'onIonInput($event)'\n }\n})\nexport class IonInputRemoveDirective {\n @Input('appRemoveFromInput') pattern: string;\n\n constructor(@Optional() @Host() @Self() public model: NgModel) { }\n\n /**\n * Determines whether ion input on\n * @author Starley Cazorla\n * @param event\n */\n onIonInput(event: any) {\n const input = event.target as HTMLInputElement;\n let value = input.value;\n\n if (this.pattern) {\n value = value.normalize('NFD').replace(this.getPattern(this.pattern), '');\n input.value = value;\n\n if (this.model) {\n this.model.control.setValue(value, {\n emitEvent: true,\n emitModelToViewChange: true,\n emitViewToModelChange: true\n });\n }\n }\n }\n\n /**\n * Gets pattern\n * @author Starley Cazorla\n * @param typePatter\n * @returns pattern - letter - number - special - punctuation\n */\n getPattern(typePatter: string): RegExp {\n if (typePatter === 'letter') return /[a-zA-Z]+/g;\n if (typePatter === 'number') return /[0-9]/g;\n if (typePatter === 'special') return /[^a-zA-Z0-9\\s.,!?'\"():;]/g;\n if (typePatter === 'punctuation') return /[.,!?'\"():;_-]/g;\n return new RegExp(typePatter, 'g');\n }\n}\n"]}
@@ -45,6 +45,7 @@ export declare class DateUtilProvider {
45
45
  * Gets diff days by today
46
46
  * @author Starley Cazorla
47
47
  * @param date1
48
+ * @deprecated
48
49
  * @returns
49
50
  */
50
51
  getDiffDaysByToday(date1: any): number;
@@ -59,6 +60,28 @@ export declare class DateUtilProvider {
59
60
  dayName: string;
60
61
  dayNumber: number;
61
62
  };
63
+ /**
64
+ * Gets diff days by date
65
+ * @author Starley Cazorla
66
+ * @param date
67
+ * @returns
68
+ */
69
+ getDiffDaysByDate(date: Date): number;
70
+ getDiffYearsByToday(date: Date): boolean;
71
+ /**
72
+ * Format date to DD/MM/YYYY
73
+ * @author Starley Cazorla
74
+ * @param date
75
+ * @returns formatted date
76
+ */
77
+ returnFormatBrDate(date: Date | string): string;
78
+ /**
79
+ * Convert DD/MM/YYYY to Date
80
+ * @author Starley Cazorla
81
+ * @param dateBr
82
+ * @returns Date object
83
+ */
84
+ convertBrDateToDate(dateBr: string): Date;
62
85
  static ɵfac: i0.ɵɵFactoryDeclaration<DateUtilProvider, never>;
63
86
  static ɵprov: i0.ɵɵInjectableDeclaration<DateUtilProvider>;
64
87
  }
@@ -89,6 +89,7 @@ var DateUtilProvider = /** @class */ (function () {
89
89
  * Gets diff days by today
90
90
  * @author Starley Cazorla
91
91
  * @param date1
92
+ * @deprecated
92
93
  * @returns
93
94
  */
94
95
  DateUtilProvider.prototype.getDiffDaysByToday = function (date1) {
@@ -114,6 +115,56 @@ var DateUtilProvider = /** @class */ (function () {
114
115
  'dayNumber': d.getDate()
115
116
  };
116
117
  };
118
+ /**
119
+ * Gets diff days by date
120
+ * @author Starley Cazorla
121
+ * @param date
122
+ * @returns
123
+ */
124
+ DateUtilProvider.prototype.getDiffDaysByDate = function (date) {
125
+ if (!date)
126
+ return 0;
127
+ this.newDate.setHours(0, 0, 0, 0); // opcional: ignora hora
128
+ date.setHours(0, 0, 0, 0);
129
+ var diffDays = Math.floor((date.getTime() - this.newDate.getTime()) / (1000 * 60 * 60 * 24));
130
+ return diffDays; // positivo = dias restantes, negativo = dias vencidos (-4 = 4 dias atrasado)
131
+ };
132
+ DateUtilProvider.prototype.getDiffYearsByToday = function (date) {
133
+ if (!date)
134
+ return false;
135
+ var hoje = new Date();
136
+ var dataLimite = new Date(hoje.getFullYear() - 18, hoje.getMonth(), hoje.getDate());
137
+ return date <= dataLimite;
138
+ };
139
+ /**
140
+ * Format date to DD/MM/YYYY
141
+ * @author Starley Cazorla
142
+ * @param date
143
+ * @returns formatted date
144
+ */
145
+ DateUtilProvider.prototype.returnFormatBrDate = function (date) {
146
+ var d = date instanceof Date ? date : new Date(date);
147
+ var day = String(d.getDate()).padStart(2, '0');
148
+ var month = String(d.getMonth() + 1).padStart(2, '0');
149
+ var year = d.getFullYear();
150
+ return "".concat(day, "/").concat(month, "/").concat(year);
151
+ };
152
+ /**
153
+ * Convert DD/MM/YYYY to Date
154
+ * @author Starley Cazorla
155
+ * @param dateBr
156
+ * @returns Date object
157
+ */
158
+ DateUtilProvider.prototype.convertBrDateToDate = function (dateBr) {
159
+ if (!dateBr) {
160
+ throw new Error('Data não informada');
161
+ }
162
+ var _a = dateBr.split('/').map(Number), day = _a[0], month = _a[1], year = _a[2];
163
+ if (!day || !month || !year) {
164
+ throw new Error('Data inválida');
165
+ }
166
+ return new Date(year, month - 1, day, 0, 0, 0, 0);
167
+ };
117
168
  DateUtilProvider.ɵfac = function DateUtilProvider_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || DateUtilProvider)(); };
118
169
  DateUtilProvider.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DateUtilProvider, factory: DateUtilProvider.ɵfac });
119
170
  return DateUtilProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"date-util-provider.js","sourceRoot":"","sources":["../../src/provider/date-util-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@angular/core\";\nimport moment from 'moment';\n\n/**\n * Date utils\n * @author Starley Cazorla\n */\n\n@Injectable()\nexport class DateUtilProvider {\n newDate = new Date();\n\n constructor() { }\n\n /**\n * Veifica se a data e valida\n * @param date \n * @returns \n */\n isValidDate(date: string) {\n if (!date) return false;\n // Regex format: DD/MM/YYYY | DD-MM-YYYY | DD.MM.YYYY\n const re = /^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$/;\n return re.test(date);\n }\n\n /**\n * Converts date to int\n * @author Starley Cazorla\n * @param data \n * @returns date to int \n */\n convertDateToInt(data: string): number {\n let temp: any;\n\n if (data === null || data === undefined || data.length <= 0) {\n return 0;\n }\n data = data.substring(0, 10);\n\n if (data.includes('/')) {\n temp = data.split('/');\n } else if (data.includes('-')) {\n temp = data.split('-');\n }\n\n if (temp === undefined) {\n return 0;\n } else if (temp[0].length > 2) {\n return temp[0] + temp[1] + temp[2];\n } else {\n return temp[2] + temp[1] + temp[0];\n }\n }\n\n /**\n * Determines whether today is\n * @author Starley Cazorla\n * @param dateInput \n * @returns true if today \n */\n isToday(dateInput: any): boolean {\n if (dateInput && this.convertDateToInt(dateInput) === this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Determines whether date is bigger today is\n * @author Starley Cazorla\n * @param dateInput \n * @returns true if date is bigger today \n */\n isDateIsSmallerToday(dateInput: any): boolean {\n if (dateInput === null || dateInput === undefined) return false;\n if (this.convertDateToInt(dateInput) < this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Firsts bigger than second\n * @author Starley Cazorla\n * @param firstDate \n * @param lastDate \n * @returns true if bigger than second \n */\n firstBiggerThanSecond(firstDate: any, lastDate: any): boolean {\n if (this.convertDateToInt(firstDate) < this.convertDateToInt(lastDate)) return true;\n return false;\n }\n\n /**\n * Gets diff days by today\n * @author Starley Cazorla\n * @param date1 \n * @returns \n */\n getDiffDaysByToday(date1: any) {\n var momentA = moment(date1, 'DD/MM/YYYY');\n var momentB = moment(new Intl.DateTimeFormat('pt-BR').format(this.newDate), 'DD/MM/YYYY');\n var diff = momentB.valueOf() - momentA.valueOf();\n var diffDays = Math.ceil(diff / (1000 * 3600 * 24));\n return diffDays;\n }\n\n /**\n * Gets name day\n * @author Starley Cazorla\n * @param date \n * @param nmDays \n * @returns \n */\n getNameDay(date: any, nmDays: any) {\n var days = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];\n var d = new Date(date);\n d.setDate(d.getDate() + nmDays)\n return {\n 'dayName': days[d.getDay()],\n 'dayNumber': d.getDate()\n };\n }\n}"]}
1
+ {"version":3,"file":"date-util-provider.js","sourceRoot":"","sources":["../../src/provider/date-util-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@angular/core\";\nimport moment from 'moment';\n\n/**\n * Date utils\n * @author Starley Cazorla\n */\n\n@Injectable()\nexport class DateUtilProvider {\n newDate = new Date();\n\n constructor() { }\n\n /**\n * Veifica se a data e valida\n * @param date\n * @returns\n */\n isValidDate(date: string) {\n if (!date) return false;\n // Regex format: DD/MM/YYYY | DD-MM-YYYY | DD.MM.YYYY\n const re = /^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$/;\n return re.test(date);\n }\n\n /**\n * Converts date to int\n * @author Starley Cazorla\n * @param data\n * @returns date to int\n */\n convertDateToInt(data: string): number {\n let temp: any;\n\n if (data === null || data === undefined || data.length <= 0) {\n return 0;\n }\n data = data.substring(0, 10);\n\n if (data.includes('/')) {\n temp = data.split('/');\n } else if (data.includes('-')) {\n temp = data.split('-');\n }\n\n if (temp === undefined) {\n return 0;\n } else if (temp[0].length > 2) {\n return temp[0] + temp[1] + temp[2];\n } else {\n return temp[2] + temp[1] + temp[0];\n }\n }\n\n /**\n * Determines whether today is\n * @author Starley Cazorla\n * @param dateInput\n * @returns true if today\n */\n isToday(dateInput: any): boolean {\n if (dateInput && this.convertDateToInt(dateInput) === this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Determines whether date is bigger today is\n * @author Starley Cazorla\n * @param dateInput\n * @returns true if date is bigger today\n */\n isDateIsSmallerToday(dateInput: any): boolean {\n if (dateInput === null || dateInput === undefined) return false;\n if (this.convertDateToInt(dateInput) < this.convertDateToInt(new Date().toLocaleDateString('pt-Br'))) return true;\n return false;\n }\n\n /**\n * Firsts bigger than second\n * @author Starley Cazorla\n * @param firstDate\n * @param lastDate\n * @returns true if bigger than second\n */\n firstBiggerThanSecond(firstDate: any, lastDate: any): boolean {\n if (this.convertDateToInt(firstDate) < this.convertDateToInt(lastDate)) return true;\n return false;\n }\n\n /**\n * Gets diff days by today\n * @author Starley Cazorla\n * @param date1\n * @deprecated\n * @returns\n */\n getDiffDaysByToday(date1: any) {\n var momentA = moment(date1, 'DD/MM/YYYY');\n var momentB = moment(new Intl.DateTimeFormat('pt-BR').format(this.newDate), 'DD/MM/YYYY');\n var diff = momentB.valueOf() - momentA.valueOf();\n var diffDays = Math.ceil(diff / (1000 * 3600 * 24));\n return diffDays;\n }\n\n /**\n * Gets name day\n * @author Starley Cazorla\n * @param date\n * @param nmDays\n * @returns\n */\n getNameDay(date: any, nmDays: any) {\n var days = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sabado'];\n var d = new Date(date);\n d.setDate(d.getDate() + nmDays)\n return {\n 'dayName': days[d.getDay()],\n 'dayNumber': d.getDate()\n };\n }\n\n /**\n * Gets diff days by date\n * @author Starley Cazorla\n * @param date\n * @returns\n */\n getDiffDaysByDate(date: Date) {\n if (!date) return 0;\n\n this.newDate.setHours(0, 0, 0, 0); // opcional: ignora hora\n date.setHours(0, 0, 0, 0);\n\n const diffDays = Math.floor((date.getTime() - this.newDate.getTime()) / (1000 * 60 * 60 * 24));\n return diffDays; // positivo = dias restantes, negativo = dias vencidos (-4 = 4 dias atrasado)\n }\n\n getDiffYearsByToday(date: Date) {\n if (!date) return false;\n\n const hoje = new Date();\n const dataLimite = new Date(\n hoje.getFullYear() - 18,\n hoje.getMonth(),\n hoje.getDate()\n );\n\n return date <= dataLimite;\n }\n\n /**\n * Format date to DD/MM/YYYY\n * @author Starley Cazorla\n * @param date\n * @returns formatted date\n */\n returnFormatBrDate(date: Date | string) {\n const d = date instanceof Date ? date : new Date(date);\n\n const day = String(d.getDate()).padStart(2, '0');\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const year = d.getFullYear();\n\n return `${day}/${month}/${year}`;\n }\n\n /**\n * Convert DD/MM/YYYY to Date\n * @author Starley Cazorla\n * @param dateBr\n * @returns Date object\n */\n convertBrDateToDate(dateBr: string): Date {\n if (!dateBr) {\n throw new Error('Data não informada');\n }\n\n const [day, month, year] = dateBr.split('/').map(Number);\n\n if (!day || !month || !year) {\n throw new Error('Data inválida');\n }\n\n return new Date(year, month - 1, day, 0, 0, 0, 0);\n }\n\n\n}\n"]}
@@ -4,6 +4,14 @@ import * as i0 from "@angular/core";
4
4
  * @author Starley Cazorla
5
5
  */
6
6
  export declare class IonValidateFilds {
7
+ private tamanhoCNPJSemDV;
8
+ private regexCNPJSemDV;
9
+ private regexCNPJ;
10
+ private regexCaracteresNaoPermitidos;
11
+ private regexCaracteresMascara;
12
+ private cnpjZerado;
13
+ private pesosDV;
14
+ private valorBase;
7
15
  constructor();
8
16
  /**
9
17
  * Validar ddd de todos os estados brasileiros
@@ -34,6 +42,21 @@ export declare class IonValidateFilds {
34
42
  * @returns true if cnpj
35
43
  */
36
44
  validarCNPJ(cnpj: string): boolean;
45
+ /**
46
+ * Validas novo formato cnpj
47
+ * @author Starley Cazorla
48
+ * @param cnpj
49
+ * @returns
50
+ */
51
+ validaNovoFormatoCNPJ(cnpj: string): boolean;
52
+ /**
53
+ * Calculas dv novo formato cnpj
54
+ * @author Starley Cazorla
55
+ * @param cnpj
56
+ * @returns
57
+ */
58
+ calculaDvNovoFormatoCNPJ(cnpj: string): string;
59
+ removeMascaraNovoFormatoCNPJ(cnpj: string): string;
37
60
  /**
38
61
  * Formats fild
39
62
  * @author Starley Cazorla
@@ -6,6 +6,15 @@ import * as i0 from "@angular/core";
6
6
  */
7
7
  var IonValidateFilds = /** @class */ (function () {
8
8
  function IonValidateFilds() {
9
+ // Novo formato de validação de CNPJ
10
+ this.tamanhoCNPJSemDV = 12;
11
+ this.regexCNPJSemDV = /^([A-Z\d]){12}$/;
12
+ this.regexCNPJ = /^([A-Z\d]){12}(\d){2}$/;
13
+ this.regexCaracteresNaoPermitidos = /[^A-Z\d./-]/i;
14
+ this.regexCaracteresMascara = /[./-]/g;
15
+ this.cnpjZerado = "00000000000000";
16
+ this.pesosDV = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
17
+ this.valorBase = "0".charCodeAt(0);
9
18
  }
10
19
  /**
11
20
  * Validar ddd de todos os estados brasileiros
@@ -85,6 +94,9 @@ var IonValidateFilds = /** @class */ (function () {
85
94
  if (formatoCelular.test(telefone)) {
86
95
  var ddd = telefone.substring(0, 2);
87
96
  var numero_1 = telefone.substring(2);
97
+ var dig = telefone[2];
98
+ if (dig !== '9')
99
+ return false;
88
100
  return this.validarDDD(ddd) && numero_1.length === 9;
89
101
  }
90
102
  // Número de telefone inválido
@@ -98,32 +110,33 @@ var IonValidateFilds = /** @class */ (function () {
98
110
  */
99
111
  IonValidateFilds.prototype.validarCPF = function (cpf) {
100
112
  cpf = cpf.replace(/\D/g, '');
113
+ // CPF precisa ter 11 dígitos
114
+ if (cpf.length !== 11)
115
+ return false;
116
+ // Elimina CPFs inválidos conhecidos (sequências repetidas)
117
+ if (/^(\d)\1{10}$/.test(cpf))
118
+ return false;
101
119
  var soma = 0;
102
120
  var resto;
103
- if (cpf === '00000000000') {
104
- return false;
105
- }
121
+ // Valida primeiro dígito
106
122
  for (var i = 1; i <= 9; i++) {
107
- soma = soma + parseInt(cpf.substring(i - 1, i), 10) * (11 - i);
123
+ soma += parseInt(cpf.substring(i - 1, i), 10) * (11 - i);
108
124
  }
109
125
  resto = (soma * 10) % 11;
110
- if (resto === 10 || resto === 11) {
126
+ if (resto === 10 || resto === 11)
111
127
  resto = 0;
112
- }
113
- if (resto !== parseInt(cpf.substring(9, 10), 10)) {
128
+ if (resto !== parseInt(cpf.substring(9, 10), 10))
114
129
  return false;
115
- }
130
+ // Valida segundo dígito
116
131
  soma = 0;
117
132
  for (var i = 1; i <= 10; i++) {
118
- soma = soma + parseInt(cpf.substring(i - 1, i), 10) * (12 - i);
133
+ soma += parseInt(cpf.substring(i - 1, i), 10) * (12 - i);
119
134
  }
120
135
  resto = (soma * 10) % 11;
121
- if (resto === 10 || resto === 11) {
136
+ if (resto === 10 || resto === 11)
122
137
  resto = 0;
123
- }
124
- if (resto !== parseInt(cpf.substring(10, 11), 10)) {
138
+ if (resto !== parseInt(cpf.substring(10, 11), 10))
125
139
  return false;
126
- }
127
140
  return true;
128
141
  };
129
142
  /**
@@ -133,6 +146,11 @@ var IonValidateFilds = /** @class */ (function () {
133
146
  * @returns true if cnpj
134
147
  */
135
148
  IonValidateFilds.prototype.validarCNPJ = function (cnpj) {
149
+ // Novo formato de validação do CNPJ - 2026
150
+ var newCnpj = /[A-Za-z]/;
151
+ if (newCnpj.test(cnpj)) {
152
+ return this.validaNovoFormatoCNPJ(cnpj);
153
+ }
136
154
  // Remover caracteres não numéricos
137
155
  cnpj = cnpj.replace(/[^\d]/g, '');
138
156
  // Verificar se o CNPJ possui 14 dígitos
@@ -178,6 +196,52 @@ var IonValidateFilds = /** @class */ (function () {
178
196
  // CNPJ válido
179
197
  return true;
180
198
  };
199
+ /**
200
+ * Validas novo formato cnpj
201
+ * @author Starley Cazorla
202
+ * @param cnpj
203
+ * @returns
204
+ */
205
+ IonValidateFilds.prototype.validaNovoFormatoCNPJ = function (cnpj) {
206
+ cnpj = cnpj.toUpperCase();
207
+ if (!this.regexCaracteresNaoPermitidos.test(cnpj)) {
208
+ var cnpjSemMascara = this.removeMascaraNovoFormatoCNPJ(cnpj);
209
+ if (this.regexCNPJ.test(cnpjSemMascara) && cnpjSemMascara !== this.cnpjZerado) {
210
+ var dvInformado = cnpjSemMascara.substring(this.tamanhoCNPJSemDV);
211
+ var dvCalculado = this.calculaDvNovoFormatoCNPJ(cnpjSemMascara.substring(0, this.tamanhoCNPJSemDV));
212
+ return dvInformado === dvCalculado;
213
+ }
214
+ }
215
+ return false;
216
+ };
217
+ /**
218
+ * Calculas dv novo formato cnpj
219
+ * @author Starley Cazorla
220
+ * @param cnpj
221
+ * @returns
222
+ */
223
+ IonValidateFilds.prototype.calculaDvNovoFormatoCNPJ = function (cnpj) {
224
+ cnpj = cnpj.toUpperCase();
225
+ if (!this.regexCaracteresNaoPermitidos.test(cnpj)) {
226
+ var cnpjSemMascara = cnpj.replace(this.regexCaracteresMascara, '');
227
+ if (this.regexCNPJSemDV.test(cnpjSemMascara) && cnpjSemMascara !== this.cnpjZerado.substring(0, this.tamanhoCNPJSemDV)) {
228
+ var somatorioDV1 = 0;
229
+ var somatorioDV2 = 0;
230
+ for (var i = 0; i < this.tamanhoCNPJSemDV; i++) {
231
+ var asciiDigito = cnpjSemMascara.charCodeAt(i) - this.valorBase;
232
+ somatorioDV1 += asciiDigito * this.pesosDV[i + 1];
233
+ somatorioDV2 += asciiDigito * this.pesosDV[i];
234
+ }
235
+ var dv1 = somatorioDV1 % 11 < 2 ? 0 : 11 - (somatorioDV1 % 11);
236
+ somatorioDV2 += dv1 * this.pesosDV[this.tamanhoCNPJSemDV];
237
+ var dv2 = somatorioDV2 % 11 < 2 ? 0 : 11 - (somatorioDV2 % 11);
238
+ return "".concat(dv1).concat(dv2);
239
+ }
240
+ }
241
+ };
242
+ IonValidateFilds.prototype.removeMascaraNovoFormatoCNPJ = function (cnpj) {
243
+ return cnpj.replace(this.regexCaracteresMascara, "");
244
+ };
181
245
  /**
182
246
  * Formats fild
183
247
  * @author Starley Cazorla
@@ -1 +1 @@
1
- {"version":3,"file":"ion-validate-filds.js","sourceRoot":"","sources":["../../src/provider/ion-validate-filds.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@angular/core\";\n\n/**\n * Classe responsavel gerenciar os utils\n * @author Starley Cazorla\n */\n\n@Injectable({ providedIn: 'root' })\nexport class IonValidateFilds {\n\n constructor() { }\n\n /**\n * Validar ddd de todos os estados brasileiros\n * @author Starley Cazorla\n * @param ddd\n * @returns true if ddd\n */\n private validarDDD(ddd: string): boolean {\n const dddsValidos = [\n '11', '12', '13', '14', '15', '16', '17', '18', '19', // SP\n '21', '22', '24', // RJ\n '27', '28', // ES\n '31', '32', '33', '34', '35', '37', '38', // MG\n '41', '42', '43', '44', '45', '46', // PR\n '47', '48', '49', // SC\n '51', '53', '54', '55', // RS\n '61', // DF e GO\n '62', '64', // GO\n '63', // TO\n '65', '66', // MT\n '67', // MS\n '68', // AC\n '69', // RO\n '71', '73', '74', '75', '77', // BA\n '79', // SE\n '81', '87', // PE\n '82', // AL\n '83', // PB\n '84', // RN\n '85', '88', // CE\n '86', '89', // PI\n '91', '93', '94', // PA\n '92', '97', // AM\n '95', // RR\n '96', // AP\n '98', '99', // MA\n ];\n\n return dddsValidos.includes(ddd);\n }\n\n private contemSequenciaRepetida(numero: string): boolean {\n const sequenciasRepetidas = [\n '00000000',\n '11111111',\n '22222222',\n '33333333',\n '44444444',\n '55555555',\n '66666666',\n '77777777',\n '88888888',\n '99999999'\n ];\n\n return sequenciasRepetidas.some(sequencia => numero.includes(sequencia));\n }\n\n /**\n * Validar numero telefone\n * @author Starley Cazorla\n * @param telefone \n * @returns true if numero telefone \n */\n public validarNumeroTelefone(telefone: string): boolean {\n // Remover caracteres não numéricos\n telefone = telefone.replace(/\\D/g, '');\n\n // Verificar o formato do número de telefone fixo (10 dígitos) com DDD\n // const formatoFixo = /^\\d{10}$/;\n\n const numero = telefone.substring(2);\n if (this.contemSequenciaRepetida(numero)) {\n return false;\n }\n\n // if (formatoFixo.test(telefone)) {\n // const ddd = telefone.substring(0, 2);\n // const numero = telefone.substring(2);\n // return this.validarDDD(ddd) && numero.length === 8;\n // }\n\n // Verificar o formato do número de telefone celular (11 dígitos) com DDD\n const formatoCelular = /^\\d{11}$/;\n\n if (formatoCelular.test(telefone)) {\n const ddd = telefone.substring(0, 2);\n const numero = telefone.substring(2);\n return this.validarDDD(ddd) && numero.length === 9;\n }\n\n // Número de telefone inválido\n return false;\n }\n\n /**\n * Validar cpf\n * @author Starley Cazorla\n * @param cpf \n * @returns true if cpf \n */\n validarCPF(cpf: string): boolean {\n\n cpf = cpf.replace(/\\D/g, '');\n\n let soma = 0;\n let resto;\n\n if (cpf === '00000000000') {\n return false;\n }\n\n for (let i = 1; i <= 9; i++) {\n soma = soma + parseInt(cpf.substring(i - 1, i), 10) * (11 - i);\n }\n\n resto = (soma * 10) % 11;\n\n if (resto === 10 || resto === 11) {\n resto = 0;\n }\n\n if (resto !== parseInt(cpf.substring(9, 10), 10)) {\n return false;\n }\n\n soma = 0;\n\n for (let i = 1; i <= 10; i++) {\n soma = soma + parseInt(cpf.substring(i - 1, i), 10) * (12 - i);\n }\n\n resto = (soma * 10) % 11;\n\n if (resto === 10 || resto === 11) {\n resto = 0;\n }\n\n if (resto !== parseInt(cpf.substring(10, 11), 10)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validar cnpj\n * @author Starley Cazorla\n * @param cnpj \n * @returns true if cnpj \n */\n validarCNPJ(cnpj: string): boolean {\n // Remover caracteres não numéricos\n cnpj = cnpj.replace(/[^\\d]/g, '');\n\n // Verificar se o CNPJ possui 14 dígitos\n if (cnpj.length !== 14) {\n return false;\n }\n\n // Verificar se todos os dígitos são iguais (CNPJ inválido)\n if (/^(\\d)\\1+$/.test(cnpj)) {\n return false;\n }\n\n // Calcular os dígitos verificadores\n let tamanho = cnpj.length - 2;\n let numeros = cnpj.substring(0, tamanho);\n const digitos = cnpj.substring(tamanho);\n let soma = 0;\n let pos = tamanho - 7;\n\n for (let i = tamanho; i >= 1; i--) {\n soma += parseInt(numeros.charAt(tamanho - i), 10) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n\n let resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);\n\n // Verificar o primeiro dígito verificador\n if (resultado !== parseInt(digitos.charAt(0), 10)) {\n return false;\n }\n\n tamanho++;\n numeros = cnpj.substring(0, tamanho);\n soma = 0;\n pos = tamanho - 7;\n\n for (let i = tamanho; i >= 1; i--) {\n soma += parseInt(numeros.charAt(tamanho - i), 10) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n\n resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);\n\n // Verificar o segundo dígito verificador\n if (resultado !== parseInt(digitos.charAt(1), 10)) {\n return false;\n }\n\n // CNPJ válido\n return true;\n }\n\n /**\n * Formats fild\n * @author Starley Cazorla\n * @param inputFildValue \n * @param [tipoChave] - celular - cpf - cnpj\n * @returns fild \n */\n formatFild(inputFildValue: string, tipoChave?: string): any {\n const regexCPF = /^\\d{11}$/;\n const regexCNPJ = /^\\d{14}$/;\n const regexCelular = /^\\d{10,11}$/;\n\n const chaveSemMascara = inputFildValue.replace(/\\W/g, '');\n\n let fildFormated = {\n fild: '',\n tipoChave: '',\n isValid: false\n };\n\n if ((tipoChave !== undefined && tipoChave === 'celular' || (tipoChave === undefined && regexCelular.test(chaveSemMascara)) && this.validarNumeroTelefone(chaveSemMascara)) && !this.validarCPF(chaveSemMascara)) {\n // Chave é um número de celular válido\n fildFormated.fild = `(${chaveSemMascara.substr(0, 2)}) ${chaveSemMascara.substr(2, 5)}-${chaveSemMascara.substr(7)}`;\n fildFormated.tipoChave = 'TELEFONE';\n } else if (tipoChave !== undefined && tipoChave === 'cpf' || (tipoChave === undefined && regexCPF.test(chaveSemMascara)) && this.validarCPF(chaveSemMascara)) {\n // Chave é um CPF válido\n fildFormated.fild = `${chaveSemMascara.substr(0, 3)}.${chaveSemMascara.substr(3, 3)}.${chaveSemMascara.substr(6, 3)}-${chaveSemMascara.substr(9)}`;\n fildFormated.tipoChave = 'CPF';\n } else if (tipoChave !== undefined && tipoChave === 'cnpj' || (tipoChave === undefined && regexCNPJ.test(chaveSemMascara)) && this.validarCNPJ(chaveSemMascara)) {\n // Chave é um CNPJ válido\n fildFormated.fild = `${chaveSemMascara.substr(0, 2)}.${chaveSemMascara.substr(2, 3)}.${chaveSemMascara.substr(5, 3)}/${chaveSemMascara.substr(8, 4)}-${chaveSemMascara.substr(12)}`;\n fildFormated.tipoChave = 'CNPJ';\n } else {\n // Chave não corresponde a nenhum formato válido\n fildFormated.fild = inputFildValue;\n fildFormated.tipoChave = 'INVÁLIDA';\n }\n\n fildFormated.isValid = fildFormated.tipoChave !== 'INVÁLIDA';\n\n return fildFormated;\n }\n\n}"]}
1
+ {"version":3,"file":"ion-validate-filds.js","sourceRoot":"","sources":["../../src/provider/ion-validate-filds.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@angular/core\";\n\n/**\n * Classe responsavel gerenciar os utils\n * @author Starley Cazorla\n */\n\n@Injectable({ providedIn: 'root' })\nexport class IonValidateFilds {\n\n // Novo formato de validação de CNPJ\n private tamanhoCNPJSemDV = 12;\n private regexCNPJSemDV = /^([A-Z\\d]){12}$/;\n private regexCNPJ = /^([A-Z\\d]){12}(\\d){2}$/;\n private regexCaracteresNaoPermitidos = /[^A-Z\\d./-]/i;\n private regexCaracteresMascara = /[./-]/g;\n private cnpjZerado = \"00000000000000\";\n private pesosDV = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n private valorBase: number = \"0\".charCodeAt(0);\n\n constructor() { }\n\n /**\n * Validar ddd de todos os estados brasileiros\n * @author Starley Cazorla\n * @param ddd\n * @returns true if ddd\n */\n private validarDDD(ddd: string): boolean {\n const dddsValidos = [\n '11', '12', '13', '14', '15', '16', '17', '18', '19', // SP\n '21', '22', '24', // RJ\n '27', '28', // ES\n '31', '32', '33', '34', '35', '37', '38', // MG\n '41', '42', '43', '44', '45', '46', // PR\n '47', '48', '49', // SC\n '51', '53', '54', '55', // RS\n '61', // DF e GO\n '62', '64', // GO\n '63', // TO\n '65', '66', // MT\n '67', // MS\n '68', // AC\n '69', // RO\n '71', '73', '74', '75', '77', // BA\n '79', // SE\n '81', '87', // PE\n '82', // AL\n '83', // PB\n '84', // RN\n '85', '88', // CE\n '86', '89', // PI\n '91', '93', '94', // PA\n '92', '97', // AM\n '95', // RR\n '96', // AP\n '98', '99', // MA\n ];\n\n return dddsValidos.includes(ddd);\n }\n\n private contemSequenciaRepetida(numero: string): boolean {\n const sequenciasRepetidas = [\n '00000000',\n '11111111',\n '22222222',\n '33333333',\n '44444444',\n '55555555',\n '66666666',\n '77777777',\n '88888888',\n '99999999'\n ];\n\n return sequenciasRepetidas.some(sequencia => numero.includes(sequencia));\n }\n\n /**\n * Validar numero telefone\n * @author Starley Cazorla\n * @param telefone\n * @returns true if numero telefone\n */\n public validarNumeroTelefone(telefone: string): boolean {\n // Remover caracteres não numéricos\n telefone = telefone.replace(/\\D/g, '');\n\n // Verificar o formato do número de telefone fixo (10 dígitos) com DDD\n // const formatoFixo = /^\\d{10}$/;\n\n const numero = telefone.substring(2);\n if (this.contemSequenciaRepetida(numero)) {\n return false;\n }\n\n // if (formatoFixo.test(telefone)) {\n // const ddd = telefone.substring(0, 2);\n // const numero = telefone.substring(2);\n // return this.validarDDD(ddd) && numero.length === 8;\n // }\n\n // Verificar o formato do número de telefone celular (11 dígitos) com DDD\n const formatoCelular = /^\\d{11}$/;\n\n if (formatoCelular.test(telefone)) {\n const ddd = telefone.substring(0, 2);\n const numero = telefone.substring(2);\n const dig = telefone[2];\n if (dig !== '9') return false;\n return this.validarDDD(ddd) && numero.length === 9;\n }\n\n // Número de telefone inválido\n return false;\n }\n\n /**\n * Validar cpf\n * @author Starley Cazorla\n * @param cpf\n * @returns true if cpf\n */\n validarCPF(cpf: string): boolean {\n cpf = cpf.replace(/\\D/g, '');\n\n // CPF precisa ter 11 dígitos\n if (cpf.length !== 11) return false;\n\n // Elimina CPFs inválidos conhecidos (sequências repetidas)\n if (/^(\\d)\\1{10}$/.test(cpf)) return false;\n\n let soma = 0;\n let resto;\n\n // Valida primeiro dígito\n for (let i = 1; i <= 9; i++) {\n soma += parseInt(cpf.substring(i - 1, i), 10) * (11 - i);\n }\n resto = (soma * 10) % 11;\n if (resto === 10 || resto === 11) resto = 0;\n if (resto !== parseInt(cpf.substring(9, 10), 10)) return false;\n\n // Valida segundo dígito\n soma = 0;\n for (let i = 1; i <= 10; i++) {\n soma += parseInt(cpf.substring(i - 1, i), 10) * (12 - i);\n }\n resto = (soma * 10) % 11;\n if (resto === 10 || resto === 11) resto = 0;\n if (resto !== parseInt(cpf.substring(10, 11), 10)) return false;\n\n return true;\n }\n\n /**\n * Validar cnpj\n * @author Starley Cazorla\n * @param cnpj\n * @returns true if cnpj\n */\n validarCNPJ(cnpj: string): boolean {\n\n // Novo formato de validação do CNPJ - 2026\n let newCnpj = /[A-Za-z]/;\n if (newCnpj.test(cnpj)) {\n return this.validaNovoFormatoCNPJ(cnpj);\n }\n\n // Remover caracteres não numéricos\n cnpj = cnpj.replace(/[^\\d]/g, '');\n\n // Verificar se o CNPJ possui 14 dígitos\n if (cnpj.length !== 14) {\n return false;\n }\n\n // Verificar se todos os dígitos são iguais (CNPJ inválido)\n if (/^(\\d)\\1+$/.test(cnpj)) {\n return false;\n }\n\n // Calcular os dígitos verificadores\n let tamanho = cnpj.length - 2;\n let numeros = cnpj.substring(0, tamanho);\n const digitos = cnpj.substring(tamanho);\n let soma = 0;\n let pos = tamanho - 7;\n\n for (let i = tamanho; i >= 1; i--) {\n soma += parseInt(numeros.charAt(tamanho - i), 10) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n\n let resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);\n\n // Verificar o primeiro dígito verificador\n if (resultado !== parseInt(digitos.charAt(0), 10)) {\n return false;\n }\n\n tamanho++;\n numeros = cnpj.substring(0, tamanho);\n soma = 0;\n pos = tamanho - 7;\n\n for (let i = tamanho; i >= 1; i--) {\n soma += parseInt(numeros.charAt(tamanho - i), 10) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n\n resultado = soma % 11 < 2 ? 0 : 11 - (soma % 11);\n\n // Verificar o segundo dígito verificador\n if (resultado !== parseInt(digitos.charAt(1), 10)) {\n return false;\n }\n\n // CNPJ válido\n return true;\n }\n\n /**\n * Validas novo formato cnpj\n * @author Starley Cazorla\n * @param cnpj\n * @returns\n */\n validaNovoFormatoCNPJ(cnpj: string) {\n cnpj = cnpj.toUpperCase();\n if (!this.regexCaracteresNaoPermitidos.test(cnpj)) {\n let cnpjSemMascara = this.removeMascaraNovoFormatoCNPJ(cnpj);\n if (this.regexCNPJ.test(cnpjSemMascara) && cnpjSemMascara !== this.cnpjZerado) {\n const dvInformado = cnpjSemMascara.substring(this.tamanhoCNPJSemDV);\n const dvCalculado = this.calculaDvNovoFormatoCNPJ(cnpjSemMascara.substring(0, this.tamanhoCNPJSemDV));\n return dvInformado === dvCalculado;\n }\n }\n return false;\n }\n\n /**\n * Calculas dv novo formato cnpj\n * @author Starley Cazorla\n * @param cnpj\n * @returns\n */\n calculaDvNovoFormatoCNPJ(cnpj: string) {\n cnpj = cnpj.toUpperCase();\n if (!this.regexCaracteresNaoPermitidos.test(cnpj)) {\n let cnpjSemMascara = cnpj.replace(this.regexCaracteresMascara, '');\n if (this.regexCNPJSemDV.test(cnpjSemMascara) && cnpjSemMascara !== this.cnpjZerado.substring(0, this.tamanhoCNPJSemDV)) {\n let somatorioDV1 = 0;\n let somatorioDV2 = 0;\n for (let i = 0; i < this.tamanhoCNPJSemDV; i++) {\n const asciiDigito = cnpjSemMascara.charCodeAt(i) - this.valorBase;\n somatorioDV1 += asciiDigito * this.pesosDV[i + 1];\n somatorioDV2 += asciiDigito * this.pesosDV[i];\n }\n const dv1 = somatorioDV1 % 11 < 2 ? 0 : 11 - (somatorioDV1 % 11);\n somatorioDV2 += dv1 * this.pesosDV[this.tamanhoCNPJSemDV];\n const dv2 = somatorioDV2 % 11 < 2 ? 0 : 11 - (somatorioDV2 % 11);\n return `${dv1}${dv2}`;\n }\n }\n }\n\n removeMascaraNovoFormatoCNPJ(cnpj: string): string {\n return cnpj.replace(this.regexCaracteresMascara, \"\");\n }\n\n /**\n * Formats fild\n * @author Starley Cazorla\n * @param inputFildValue\n * @param [tipoChave] - celular - cpf - cnpj\n * @returns fild\n */\n formatFild(inputFildValue: string, tipoChave?: string): any {\n const regexCPF = /^\\d{11}$/;\n const regexCNPJ = /^\\d{14}$/;\n const regexCelular = /^\\d{10,11}$/;\n\n const chaveSemMascara = inputFildValue.replace(/\\W/g, '');\n\n let fildFormated = {\n fild: '',\n tipoChave: '',\n isValid: false\n };\n\n if ((tipoChave !== undefined && tipoChave === 'celular' || (tipoChave === undefined && regexCelular.test(chaveSemMascara)) && this.validarNumeroTelefone(chaveSemMascara)) && !this.validarCPF(chaveSemMascara)) {\n // Chave é um número de celular válido\n fildFormated.fild = `(${chaveSemMascara.substr(0, 2)}) ${chaveSemMascara.substr(2, 5)}-${chaveSemMascara.substr(7)}`;\n fildFormated.tipoChave = 'TELEFONE';\n } else if (tipoChave !== undefined && tipoChave === 'cpf' || (tipoChave === undefined && regexCPF.test(chaveSemMascara)) && this.validarCPF(chaveSemMascara)) {\n // Chave é um CPF válido\n fildFormated.fild = `${chaveSemMascara.substr(0, 3)}.${chaveSemMascara.substr(3, 3)}.${chaveSemMascara.substr(6, 3)}-${chaveSemMascara.substr(9)}`;\n fildFormated.tipoChave = 'CPF';\n } else if (tipoChave !== undefined && tipoChave === 'cnpj' || (tipoChave === undefined && regexCNPJ.test(chaveSemMascara)) && this.validarCNPJ(chaveSemMascara)) {\n // Chave é um CNPJ válido\n fildFormated.fild = `${chaveSemMascara.substr(0, 2)}.${chaveSemMascara.substr(2, 3)}.${chaveSemMascara.substr(5, 3)}/${chaveSemMascara.substr(8, 4)}-${chaveSemMascara.substr(12)}`;\n fildFormated.tipoChave = 'CNPJ';\n } else {\n // Chave não corresponde a nenhum formato válido\n fildFormated.fild = inputFildValue;\n fildFormated.tipoChave = 'INVÁLIDA';\n }\n\n fildFormated.isValid = fildFormated.tipoChave !== 'INVÁLIDA';\n\n return fildFormated;\n }\n\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starley/ion-directives",
3
- "version": "1.3.2",
3
+ "version": "1.3.3",
4
4
  "description": "Directivas internas para ionic",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "ngc": "ngc",
12
- "build": "rm -rf dist && rm -rf node_modules && npm install && npm run ngc",
12
+ "build": "rm -rf dist && rm -rf node_modules package-lock.json && npm install --legacy-peer-deps && npm run ngc",
13
13
  "publishPackage": "npm run build && npm publish"
14
14
  },
15
15
  "peerDependencies": {
@@ -39,7 +39,7 @@
39
39
  "devDependencies": {
40
40
  "@angular/common": "^19.2.2",
41
41
  "@angular/compiler": "^19.2.2",
42
- "@angular/compiler-cli": "^18.0.00",
42
+ "@angular/compiler-cli": "^18.0.0",
43
43
  "@angular/core": "^19.2.2",
44
44
  "@angular/forms": "^19.2.2",
45
45
  "@types/node": "^22.13.10",