@starley/ion-directives 1.3.21 → 1.3.23-beta
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 +5 -5
- package/dist/{utils/form-util.service.d.ts → forms/form-change-detector.service.d.ts} +5 -3
- package/dist/forms/form-change-detector.service.js +97 -0
- package/dist/forms/form-change-detector.service.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/utils/form-util.service.js +0 -56
- package/dist/utils/form-util.service.js.map +0 -1
package/README.md
CHANGED
|
@@ -35,25 +35,25 @@ import { DirectivesModule } from '@starley/ion-directives';
|
|
|
35
35
|
export class MyComponent {}
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
### Para usar a
|
|
38
|
+
### Para usar a FormChangeDetector
|
|
39
39
|
|
|
40
|
-
* Importe a service
|
|
40
|
+
* Importe a service FormChangeDetector no componente que desejar utilizar.
|
|
41
41
|
|
|
42
42
|
* Injete a service no construtor do componente:
|
|
43
43
|
|
|
44
44
|
```typescript
|
|
45
|
-
constructor(private
|
|
45
|
+
constructor(private formChangeDetector: FormChangeDetector) {}
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
Crie o formulario usando o FormGroup, e chame o método `prepareFormChangeDetection` passando o formulário como parâmetro.
|
|
49
49
|
|
|
50
|
-
Ex: this.myForm = this.
|
|
50
|
+
Ex: this.myForm = this.formChangeDetector.prepareFormChangeDetection(this.myForm);
|
|
51
51
|
|
|
52
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
53
|
|
|
54
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
55
|
|
|
56
|
-
Ex: if(this.
|
|
56
|
+
Ex: if(this.formChangeDetector.isDirty) { ... }
|
|
57
57
|
|
|
58
58
|
Agora você pode usar o formulário com detecção de mudanças automaticamente.
|
|
59
59
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { FormGroup } from '@angular/forms';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class FormChangeDetector {
|
|
4
4
|
isDirty: boolean;
|
|
5
5
|
private originalFormValues;
|
|
6
6
|
private clearFormChangeDetection;
|
|
7
7
|
prepareFormChangeDetection(documentForm: FormGroup): FormGroup<any>;
|
|
8
8
|
private formChangeDetection;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
extractFormChanges(documentForm: FormGroup): any;
|
|
10
|
+
private buildChangedValues;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormChangeDetector, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FormChangeDetector>;
|
|
11
13
|
}
|
|
@@ -0,0 +1,97 @@
|
|
|
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
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
21
|
+
import { Injectable } from '@angular/core';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
var FormChangeDetector = /** @class */ (function () {
|
|
24
|
+
function FormChangeDetector() {
|
|
25
|
+
this.isDirty = false;
|
|
26
|
+
}
|
|
27
|
+
FormChangeDetector.prototype.clearFormChangeDetection = function () {
|
|
28
|
+
this.originalFormValues = null;
|
|
29
|
+
this.isDirty = false;
|
|
30
|
+
};
|
|
31
|
+
FormChangeDetector.prototype.prepareFormChangeDetection = function (documentForm) {
|
|
32
|
+
this.clearFormChangeDetection();
|
|
33
|
+
this.originalFormValues = __assign({}, documentForm.getRawValue());
|
|
34
|
+
// Garante estado pristine inicial
|
|
35
|
+
documentForm.markAsPristine();
|
|
36
|
+
documentForm.markAsUntouched();
|
|
37
|
+
this.isDirty = false;
|
|
38
|
+
this.formChangeDetection(documentForm);
|
|
39
|
+
return documentForm;
|
|
40
|
+
};
|
|
41
|
+
FormChangeDetector.prototype.formChangeDetection = function (documentForm) {
|
|
42
|
+
var _this = this;
|
|
43
|
+
documentForm.valueChanges.subscribe(function () {
|
|
44
|
+
if (!_this.originalFormValues) {
|
|
45
|
+
_this.isDirty = false;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
var currentValues = documentForm.getRawValue();
|
|
49
|
+
var normalizedCurrent = __assign({}, currentValues);
|
|
50
|
+
var normalizedOriginal = __assign({}, _this.originalFormValues);
|
|
51
|
+
_this.isDirty = JSON.stringify(normalizedCurrent) !== JSON.stringify(normalizedOriginal);
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
FormChangeDetector.prototype.extractFormChanges = function (documentForm) {
|
|
55
|
+
if (!this.originalFormValues)
|
|
56
|
+
return {};
|
|
57
|
+
var currentValues = documentForm.getRawValue();
|
|
58
|
+
return this.buildChangedValues(this.originalFormValues, currentValues);
|
|
59
|
+
};
|
|
60
|
+
FormChangeDetector.prototype.buildChangedValues = function (original, current) {
|
|
61
|
+
if (original === null || original === undefined ||
|
|
62
|
+
current === null || current === undefined ||
|
|
63
|
+
typeof original !== typeof current) {
|
|
64
|
+
return original !== current ? current : undefined;
|
|
65
|
+
}
|
|
66
|
+
if (typeof original !== 'object' || original === null) {
|
|
67
|
+
// Valor primitivo
|
|
68
|
+
return original !== current ? current : undefined;
|
|
69
|
+
}
|
|
70
|
+
// Objeto ou array
|
|
71
|
+
var result = Array.isArray(original) ? [] : {};
|
|
72
|
+
var keys = new Set(__spreadArray(__spreadArray([], Object.keys(original), true), Object.keys(current), true));
|
|
73
|
+
var hasChanges = false;
|
|
74
|
+
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
75
|
+
var key = keys_1[_i];
|
|
76
|
+
var childOriginal = original[key];
|
|
77
|
+
var childCurrent = current[key];
|
|
78
|
+
var childResult = this.buildChangedValues(childOriginal, childCurrent);
|
|
79
|
+
if (childResult !== undefined) {
|
|
80
|
+
result[key] = childResult;
|
|
81
|
+
hasChanges = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return hasChanges ? result : undefined;
|
|
85
|
+
};
|
|
86
|
+
FormChangeDetector.ɵfac = function FormChangeDetector_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormChangeDetector)(); };
|
|
87
|
+
FormChangeDetector.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormChangeDetector, factory: FormChangeDetector.ɵfac, providedIn: 'root' });
|
|
88
|
+
return FormChangeDetector;
|
|
89
|
+
}());
|
|
90
|
+
export { FormChangeDetector };
|
|
91
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormChangeDetector, [{
|
|
92
|
+
type: Injectable,
|
|
93
|
+
args: [{
|
|
94
|
+
providedIn: 'root',
|
|
95
|
+
}]
|
|
96
|
+
}], null, null); })();
|
|
97
|
+
//# 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":"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","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 extractFormChanges(documentForm: FormGroup): any {\n if (!this.originalFormValues) return {};\n\n const currentValues = documentForm.getRawValue();\n return this.buildChangedValues(this.originalFormValues, currentValues);\n }\n\n private buildChangedValues(original: any, current: any): any {\n if (original === null || original === undefined ||\n current === null || current === undefined ||\n typeof original !== typeof current) {\n return original !== current ? current : undefined;\n }\n\n if (typeof original !== 'object' || original === null) {\n // Valor primitivo\n return original !== current ? current : undefined;\n }\n\n // Objeto ou array\n const result: any = Array.isArray(original) ? [] : {};\n\n const keys: any = new Set([...Object.keys(original), ...Object.keys(current)]);\n\n let hasChanges = false;\n for (const key of keys) {\n const childOriginal = original[key];\n const childCurrent = current[key];\n const childResult = this.buildChangedValues(childOriginal, childCurrent);\n\n if (childResult !== undefined) {\n result[key] = childResult;\n hasChanges = true;\n }\n }\n\n return hasChanges ? result : undefined;\n }\n\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export * from './block-input/block-copy-past.directive';
|
|
2
2
|
export * from './directive.module';
|
|
3
|
-
export { FormUtilService } from './utils/form-util.service';
|
|
4
3
|
export * from './input-mask/input-mask.directive';
|
|
5
4
|
export * from './input-remove/input-remove.directive';
|
|
6
5
|
export * from './press-hold/press-hold.directive';
|
|
@@ -9,3 +8,4 @@ export { DateUtilProvider } from './provider/date-util-provider';
|
|
|
9
8
|
export { IonUtilsProvider } from './provider/ion-utils-provider';
|
|
10
9
|
export { IonValidateFilds } from './provider/ion-validate-filds';
|
|
11
10
|
export * from './tap/tap.directive';
|
|
11
|
+
export { FormChangeDetector } from './forms/form-change-detector.service';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export * from './block-input/block-copy-past.directive';
|
|
2
2
|
export * from './directive.module';
|
|
3
|
-
export { FormUtilService } from './utils/form-util.service';
|
|
4
3
|
export * from './input-mask/input-mask.directive';
|
|
5
4
|
export * from './input-remove/input-remove.directive';
|
|
6
5
|
export * from './press-hold/press-hold.directive';
|
|
@@ -9,4 +8,5 @@ export { DateUtilProvider } from './provider/date-util-provider';
|
|
|
9
8
|
export { IonUtilsProvider } from './provider/ion-utils-provider';
|
|
10
9
|
export { IonValidateFilds } from './provider/ion-validate-filds';
|
|
11
10
|
export * from './tap/tap.directive';
|
|
11
|
+
export { FormChangeDetector } from './forms/form-change-detector.service';
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
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,
|
|
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;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,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';\nexport { FormChangeDetector } from './forms/form-change-detector.service';\n"]}
|
package/package.json
CHANGED
|
@@ -1,56 +0,0 @@
|
|
|
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 FormUtilService = /** @class */ (function () {
|
|
15
|
-
function FormUtilService() {
|
|
16
|
-
this.isDirty = false;
|
|
17
|
-
}
|
|
18
|
-
FormUtilService.prototype.clearFormChangeDetection = function () {
|
|
19
|
-
this.originalFormValues = null;
|
|
20
|
-
this.isDirty = false;
|
|
21
|
-
};
|
|
22
|
-
FormUtilService.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
|
-
FormUtilService.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
|
-
FormUtilService.ɵfac = function FormUtilService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormUtilService)(); };
|
|
46
|
-
FormUtilService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormUtilService, factory: FormUtilService.ɵfac, providedIn: 'root' });
|
|
47
|
-
return FormUtilService;
|
|
48
|
-
}());
|
|
49
|
-
export { FormUtilService };
|
|
50
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormUtilService, [{
|
|
51
|
-
type: Injectable,
|
|
52
|
-
args: [{
|
|
53
|
-
providedIn: 'root',
|
|
54
|
-
}]
|
|
55
|
-
}], null, null); })();
|
|
56
|
-
//# sourceMappingURL=form-util.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-util.service.js","sourceRoot":"","sources":["../../src/utils/form-util.service.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;;AAG3C;IAAA;QAKI,YAAO,GAAY,KAAK,CAAC;KAmC5B;IA/BW,kDAAwB,GAAhC;QACI,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,oDAA0B,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,6CAAmB,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;kHAnCQ,eAAe;yEAAf,eAAe,WAAf,eAAe,mBAFZ,MAAM;0BAJtB;CA2CC,AAxCD,IAwCC;SArCY,eAAe;uFAAf,eAAe;cAH3B,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 FormUtilService {\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"]}
|