ngx-sp-infra 1.4.95 → 1.4.97

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.
@@ -1,4 +1,7 @@
1
1
  import { UntypedFormGroup, UntypedFormArray } from '@angular/forms';
2
+ /**
3
+ * @summary Contém diversos métodos de utilidade para formulários
4
+ */
2
5
  export class FormUtils {
3
6
  /** Verifica se um campo é inválido (Template Driven) */
4
7
  static isInvalidFieldTemplate(control) {
@@ -12,7 +15,7 @@ export class FormUtils {
12
15
  /** Verifica se um campo é inválido ou se possui algum erro customizado (Data Driven) */
13
16
  static isInvalidFieldError(control) {
14
17
  if (control) {
15
- if ((!control.valid && (control.dirty || control.touched)) || control.errors) {
18
+ if (!control.valid && (control.dirty || control.touched)) {
16
19
  return true;
17
20
  }
18
21
  else {
@@ -53,5 +56,53 @@ export class FormUtils {
53
56
  ? config[validatorName]
54
57
  : `Este validador - ${validatorName} - não foi implementado`);
55
58
  }
59
+ /**
60
+ * @summary Mapeia os valores de um formulário reativo para um objeto de modelo.
61
+ *
62
+ * @description
63
+ * O método `mapFormToModel` recebe um objeto de modelo e um `FormGroup` do Angular,
64
+ * e retorna um novo objeto que combina as propriedades do modelo original com os valores
65
+ * atuais do formulário. Este método é útil para atualizar dinamicamente as propriedades
66
+ * de um modelo com base nos valores inseridos pelo usuário em um formulário.
67
+ *
68
+ * Se o objeto `record` ou o `formGroup` forem nulos ou indefinidos, o método retornará `null`.
69
+ * Caso contrário, o método retorna um novo objeto que inclui todas as propriedades
70
+ * do objeto original, sobrescrevendo-as com os valores atuais do formulário, se disponíveis.
71
+ *
72
+ * @param {object} record - O objeto de modelo original que será atualizado com os valores do formulário.
73
+ * @param {FormGroup} formGroup - O `FormGroup` contendo os valores inseridos pelo usuário.
74
+ * @returns {object | null} - Um novo objeto combinando o modelo original e os valores do formulário, ou `null` se `record` ou `formGroup` forem nulos ou indefinidos.
75
+ *
76
+ * @example
77
+ * // Suponha que você tenha um objeto de modelo `person` e um `FormGroup` chamado `personForm`.
78
+ * const person = {
79
+ * name: 'John Doe',
80
+ * age: 30,
81
+ * email: 'john.doe@example.com'
82
+ * };
83
+ *
84
+ * const personForm: FormGroup = this.formBuilder.group({
85
+ * name: ['Jane Doe'],
86
+ * age: [25],
87
+ * email: ['jane.doe@example.com']
88
+ * });
89
+ *
90
+ * const updatedPerson = this.mapFormToModel(person, personForm);
91
+ * // `updatedPerson` agora contém:
92
+ * // {
93
+ * // name: 'Jane Doe',
94
+ * // age: 25,
95
+ * // email: 'jane.doe@example.com'
96
+ * // }
97
+ */
98
+ mapFormToModel(record, formGroup) {
99
+ if ((record === null || record === undefined) || (formGroup === null || formGroup === undefined)) {
100
+ return null;
101
+ }
102
+ return {
103
+ ...record,
104
+ ...formGroup.value
105
+ };
106
+ }
56
107
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL3V0aWxzL2Zvcm0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhHLE1BQU0sT0FBTyxTQUFTO0lBRXBCLHdEQUF3RDtJQUN4RCxNQUFNLENBQUMsc0JBQXNCLENBQUMsT0FBa0I7UUFDOUMsTUFBTSxHQUFHLEdBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBK0I7UUFDbkQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE9BQStCO1FBQ3hELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQUMsT0FBTyxJQUFJLENBQUE7WUFBQyxDQUFDO2lCQUN4RixDQUFDO2dCQUFDLE9BQU8sS0FBSyxDQUFBO1lBQUMsQ0FBQztRQUN2QixDQUFDO2FBQ0ksQ0FBQztZQUFDLE9BQU8sS0FBSyxDQUFBO1FBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsMkNBQTJDO0lBQzNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBOEM7UUFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQztZQUV6QixJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDL0UsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixDQUFDO1FBRUgsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQsOERBQThEO0lBQzlELE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBaUIsRUFBRSxhQUFxQixFQUFFLGNBQW9CLEVBQUUsa0JBQTJCO1FBQ2hILE1BQU0sTUFBTSxHQUFTO1lBQ25CLFVBQVUsRUFBRSwyQkFBMkI7WUFDdkMsV0FBVyxFQUFFLHFDQUFxQyxjQUFjLENBQUMsY0FBYyxjQUFjO1lBQzdGLFdBQVcsRUFBRSxxQ0FBcUMsY0FBYyxDQUFDLGNBQWMsY0FBYztZQUM3RixLQUFLLEVBQUUsaUNBQWlDLGNBQWMsQ0FBQyxHQUFHLEdBQUc7WUFDN0QsS0FBSyxFQUFFLGlDQUFpQyxjQUFjLENBQUMsR0FBRyxHQUFHO1lBQzdELGVBQWUsRUFBRSxRQUFRLFNBQVMsaUJBQWlCO1lBQ25ELG9CQUFvQixFQUFFLFFBQVEsU0FBUywwQkFBMEI7WUFDakUsV0FBVyxFQUFFLDJCQUEyQjtZQUN4QyxPQUFPLEVBQUUsNEJBQTRCO1NBQ3RDLENBQUM7UUFFRixPQUFPLENBQUMsa0JBQWtCO1lBQ3hCLENBQUMsQ0FBQyxrQkFBa0I7WUFDcEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUN2QixDQUFDLENBQUMsb0JBQW9CLGFBQWEseUJBQXlCLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5nQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtVXRpbHMge1xyXG5cclxuICAvKiogVmVyaWZpY2Egc2UgdW0gY2FtcG8gw6kgaW52w6FsaWRvIChUZW1wbGF0ZSBEcml2ZW4pICovXHJcbiAgc3RhdGljIGlzSW52YWxpZEZpZWxkVGVtcGxhdGUoY29udHJvbDogTmdDb250cm9sKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZXQ6IGFueSA9ICFjb250cm9sLnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCk7XHJcbiAgXHJcbiAgICByZXR1cm4gKHJldCA/IHJldCA6IGZhbHNlKVxyXG4gIH1cclxuICBcclxuICAvKiogVmVyaWZpY2Egc2UgdW0gY2FtcG8gw6kgaW52w6FsaWRvIChEYXRhIERyaXZlbikgKi9cclxuICBzdGF0aWMgaXNJbnZhbGlkRmllbGQoY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sID8gIWNvbnRyb2wudmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSA6IGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8qKiBWZXJpZmljYSBzZSB1bSBjYW1wbyDDqSBpbnbDoWxpZG8gb3Ugc2UgcG9zc3VpIGFsZ3VtIGVycm8gY3VzdG9taXphZG8gKERhdGEgRHJpdmVuKSAqL1xyXG4gIHN0YXRpYyBpc0ludmFsaWRGaWVsZEVycm9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGlmIChjb250cm9sKSB7XHJcbiAgICAgIGlmICgoIWNvbnRyb2wudmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSkgfHwgY29udHJvbC5lcnJvcnMpIHsgcmV0dXJuIHRydWUgfVxyXG4gICAgICBlbHNlIHsgcmV0dXJuIGZhbHNlIH1cclxuICAgIH1cclxuICAgIGVsc2UgeyByZXR1cm4gZmFsc2UgfVxyXG4gIH1cclxuXHJcbiAgLyoqIFZhbGlkYSB0b2RvcyBvcyBjYW1wb3MgZG8gZm9ybXVsw6FyaW8gKi9cclxuICBzdGF0aWMgdmFsaWRhdGVGaWVsZHMoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwIHwgVW50eXBlZEZvcm1BcnJheSk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmtleXMoZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1Hcm91cC5nZXQoZmllbGQpO1xyXG4gIFxyXG4gICAgICBjb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICBjb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXAgfHwgY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRlRmllbGRzKGNvbnRyb2wpO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICB9KTtcclxuICBcclxuICB9ICAgICBcclxuICAgICAgXHJcbiAgLyoqIE9idMOpbSBhIG1lbnNhZ2VtIGRlIGVycm8gY29uZm9ybWUgbyB2YWxpZGFkb3IgdXRpbGl6YWRvICovXHJcbiAgc3RhdGljIGdldEVycm9yTWVzc2FnZShmaWVsZE5hbWU6IHN0cmluZywgdmFsaWRhdG9yTmFtZTogc3RyaW5nLCB2YWxpZGF0b3JWYWx1ZT86IGFueSwgY3VzdG9tRXJyb3JNZXNzYWdlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNvbmZpZyA6IGFueSA9IHtcclxuICAgICAgJ3JlcXVpcmVkJzogYEVzdGUgY2FtcG8gw6kgb2JyaWdhdMOzcmlvLmAsXHJcbiAgICAgICdtaW5sZW5ndGgnOiBgRXN0ZSBjYW1wbyBkZXZlIHBvc3N1aXIgbm8gbcOtbmltbyAke3ZhbGlkYXRvclZhbHVlLnJlcXVpcmVkTGVuZ3RofSBjYXJhY3RlcmVzLmAsXHJcbiAgICAgICdtYXhsZW5ndGgnOiBgRXN0ZSBjYW1wbyBkZXZlIHBvc3N1aXIgbm8gbcOheGltbyAke3ZhbGlkYXRvclZhbHVlLnJlcXVpcmVkTGVuZ3RofSBjYXJhY3RlcmVzLmAsXHJcbiAgICAgICdtaW4nOiBgRXN0ZSBjYW1wbyBkZXZlIHNlciBubyBtw61uaW1vICR7dmFsaWRhdG9yVmFsdWUubWlufS5gLFxyXG4gICAgICAnbWF4JzogYEVzdGUgY2FtcG8gZGV2ZSBzZXIgbm8gbcOheGltbyAke3ZhbGlkYXRvclZhbHVlLm1heH0uYCxcclxuICAgICAgJ2NwY25wakludmFsaWQnOiBgRXN0ZSAke2ZpZWxkTmFtZX0gZXN0w6EgaW52w6FsaWRvLmAsXHJcbiAgICAgICdjcGNucGpJbnZhbGlkRGlnaXQnOiBgRXN0ZSAke2ZpZWxkTmFtZX0gdGVtIHVtIGTDrWdpdG8gaW52w6FsaWRvLmAsXHJcbiAgICAgICdpbmNvcnJlY3QnOiBgRXN0ZSBjYW1wbyBlc3TDoSBpbnbDoWxpZG8uYCxcclxuICAgICAgJ2VtYWlsJzogYEVzdGUgZS1tYWlsIGVzdMOhIGludsOhbGlkby5gXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoY3VzdG9tRXJyb3JNZXNzYWdlXHJcbiAgICAgID8gY3VzdG9tRXJyb3JNZXNzYWdlXHJcbiAgICAgIDogY29uZmlnW3ZhbGlkYXRvck5hbWVdXHJcbiAgICAgICAgPyBjb25maWdbdmFsaWRhdG9yTmFtZV1cclxuICAgICAgICA6IGBFc3RlIHZhbGlkYWRvciAtICR7dmFsaWRhdG9yTmFtZX0gLSBuw6NvIGZvaSBpbXBsZW1lbnRhZG9gKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zcC1pbmZyYS9zcmMvbGliL3V0aWxzL2Zvcm0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRzNHOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFFcEIsd0RBQXdEO0lBQ3hELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxPQUFrQjtRQUM5QyxNQUFNLEdBQUcsR0FBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0RSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVCLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUErQjtRQUNuRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELHdGQUF3RjtJQUN4RixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBK0I7UUFDeEQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFBQyxPQUFPLElBQUksQ0FBQTtZQUFDLENBQUM7aUJBQ3BFLENBQUM7Z0JBQUMsT0FBTyxLQUFLLENBQUE7WUFBQyxDQUFDO1FBQ3ZCLENBQUM7YUFDSSxDQUFDO1lBQUMsT0FBTyxLQUFLLENBQUE7UUFBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUE4QztRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBRXpCLElBQUksT0FBTyxZQUFZLGdCQUFnQixJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMvRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFFSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFpQixFQUFFLGFBQXFCLEVBQUUsY0FBb0IsRUFBRSxrQkFBMkI7UUFDaEgsTUFBTSxNQUFNLEdBQVM7WUFDbkIsVUFBVSxFQUFFLDJCQUEyQjtZQUN2QyxXQUFXLEVBQUUscUNBQXFDLGNBQWMsQ0FBQyxjQUFjLGNBQWM7WUFDN0YsV0FBVyxFQUFFLHFDQUFxQyxjQUFjLENBQUMsY0FBYyxjQUFjO1lBQzdGLEtBQUssRUFBRSxpQ0FBaUMsY0FBYyxDQUFDLEdBQUcsR0FBRztZQUM3RCxLQUFLLEVBQUUsaUNBQWlDLGNBQWMsQ0FBQyxHQUFHLEdBQUc7WUFDN0QsZUFBZSxFQUFFLFFBQVEsU0FBUyxpQkFBaUI7WUFDbkQsb0JBQW9CLEVBQUUsUUFBUSxTQUFTLDBCQUEwQjtZQUNqRSxXQUFXLEVBQUUsMkJBQTJCO1lBQ3hDLE9BQU8sRUFBRSw0QkFBNEI7U0FDdEMsQ0FBQztRQUVGLE9BQU8sQ0FBQyxrQkFBa0I7WUFDeEIsQ0FBQyxDQUFDLGtCQUFrQjtZQUNwQixDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3ZCLENBQUMsQ0FBQyxvQkFBb0IsYUFBYSx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFJRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFzQ0U7SUFDSyxjQUFjLENBQUMsTUFBYyxFQUFFLFNBQW9CO1FBQ3hELElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQztRQUFDLENBQUM7UUFFbEgsT0FBTztZQUNMLEdBQUcsTUFBTTtZQUNULEdBQUcsU0FBUyxDQUFDLEtBQUs7U0FDbkIsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdDb250cm9sLCBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUFycmF5LCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IENvbnTDqW0gZGl2ZXJzb3MgbcOpdG9kb3MgZGUgdXRpbGlkYWRlIHBhcmEgZm9ybXVsw6FyaW9zXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRm9ybVV0aWxzIHtcclxuXHJcbiAgLyoqIFZlcmlmaWNhIHNlIHVtIGNhbXBvIMOpIGludsOhbGlkbyAoVGVtcGxhdGUgRHJpdmVuKSAqL1xyXG4gIHN0YXRpYyBpc0ludmFsaWRGaWVsZFRlbXBsYXRlKGNvbnRyb2w6IE5nQ29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmV0OiBhbnkgPSAhY29udHJvbC52YWxpZCAmJiAoY29udHJvbC5kaXJ0eSB8fCBjb250cm9sLnRvdWNoZWQpO1xyXG4gIFxyXG4gICAgcmV0dXJuIChyZXQgPyByZXQgOiBmYWxzZSlcclxuICB9XHJcbiAgXHJcbiAgLyoqIFZlcmlmaWNhIHNlIHVtIGNhbXBvIMOpIGludsOhbGlkbyAoRGF0YSBEcml2ZW4pICovXHJcbiAgc3RhdGljIGlzSW52YWxpZEZpZWxkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoY29udHJvbCA/ICFjb250cm9sLnZhbGlkICYmIChjb250cm9sLmRpcnR5IHx8IGNvbnRyb2wudG91Y2hlZCkgOiBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKiogVmVyaWZpY2Egc2UgdW0gY2FtcG8gw6kgaW52w6FsaWRvIG91IHNlIHBvc3N1aSBhbGd1bSBlcnJvIGN1c3RvbWl6YWRvIChEYXRhIERyaXZlbikgKi9cclxuICBzdGF0aWMgaXNJbnZhbGlkRmllbGRFcnJvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICBpZiAoIWNvbnRyb2wudmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKSkgeyByZXR1cm4gdHJ1ZSB9XHJcbiAgICAgIGVsc2UgeyByZXR1cm4gZmFsc2UgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7IHJldHVybiBmYWxzZSB9XHJcbiAgfVxyXG5cclxuICAvKiogVmFsaWRhIHRvZG9zIG9zIGNhbXBvcyBkbyBmb3JtdWzDoXJpbyAqL1xyXG4gIHN0YXRpYyB2YWxpZGF0ZUZpZWxkcyhmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXAgfCBVbnR5cGVkRm9ybUFycmF5KTogdm9pZCB7XHJcbiAgICBPYmplY3Qua2V5cyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goZmllbGQgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChmaWVsZCk7XHJcbiAgXHJcbiAgICAgIGNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgIGNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgXHJcbiAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCB8fCBjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVGaWVsZHMoY29udHJvbCk7XHJcbiAgICAgIH1cclxuICBcclxuICAgIH0pO1xyXG4gIFxyXG4gIH0gICAgIFxyXG4gICAgICBcclxuICAvKiogT2J0w6ltIGEgbWVuc2FnZW0gZGUgZXJybyBjb25mb3JtZSBvIHZhbGlkYWRvciB1dGlsaXphZG8gKi9cclxuICBzdGF0aWMgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkTmFtZTogc3RyaW5nLCB2YWxpZGF0b3JOYW1lOiBzdHJpbmcsIHZhbGlkYXRvclZhbHVlPzogYW55LCBjdXN0b21FcnJvck1lc3NhZ2U/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY29uZmlnIDogYW55ID0ge1xyXG4gICAgICAncmVxdWlyZWQnOiBgRXN0ZSBjYW1wbyDDqSBvYnJpZ2F0w7NyaW8uYCxcclxuICAgICAgJ21pbmxlbmd0aCc6IGBFc3RlIGNhbXBvIGRldmUgcG9zc3VpciBubyBtw61uaW1vICR7dmFsaWRhdG9yVmFsdWUucmVxdWlyZWRMZW5ndGh9IGNhcmFjdGVyZXMuYCxcclxuICAgICAgJ21heGxlbmd0aCc6IGBFc3RlIGNhbXBvIGRldmUgcG9zc3VpciBubyBtw6F4aW1vICR7dmFsaWRhdG9yVmFsdWUucmVxdWlyZWRMZW5ndGh9IGNhcmFjdGVyZXMuYCxcclxuICAgICAgJ21pbic6IGBFc3RlIGNhbXBvIGRldmUgc2VyIG5vIG3DrW5pbW8gJHt2YWxpZGF0b3JWYWx1ZS5taW59LmAsXHJcbiAgICAgICdtYXgnOiBgRXN0ZSBjYW1wbyBkZXZlIHNlciBubyBtw6F4aW1vICR7dmFsaWRhdG9yVmFsdWUubWF4fS5gLFxyXG4gICAgICAnY3BjbnBqSW52YWxpZCc6IGBFc3RlICR7ZmllbGROYW1lfSBlc3TDoSBpbnbDoWxpZG8uYCxcclxuICAgICAgJ2NwY25wakludmFsaWREaWdpdCc6IGBFc3RlICR7ZmllbGROYW1lfSB0ZW0gdW0gZMOtZ2l0byBpbnbDoWxpZG8uYCxcclxuICAgICAgJ2luY29ycmVjdCc6IGBFc3RlIGNhbXBvIGVzdMOhIGludsOhbGlkby5gLFxyXG4gICAgICAnZW1haWwnOiBgRXN0ZSBlLW1haWwgZXN0w6EgaW52w6FsaWRvLmBcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChjdXN0b21FcnJvck1lc3NhZ2VcclxuICAgICAgPyBjdXN0b21FcnJvck1lc3NhZ2VcclxuICAgICAgOiBjb25maWdbdmFsaWRhdG9yTmFtZV1cclxuICAgICAgICA/IGNvbmZpZ1t2YWxpZGF0b3JOYW1lXVxyXG4gICAgICAgIDogYEVzdGUgdmFsaWRhZG9yIC0gJHt2YWxpZGF0b3JOYW1lfSAtIG7Do28gZm9pIGltcGxlbWVudGFkb2ApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICAgKiBAc3VtbWFyeSBNYXBlaWEgb3MgdmFsb3JlcyBkZSB1bSBmb3JtdWzDoXJpbyByZWF0aXZvIHBhcmEgdW0gb2JqZXRvIGRlIG1vZGVsby5cclxuICAgKlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIE8gbcOpdG9kbyBgbWFwRm9ybVRvTW9kZWxgIHJlY2ViZSB1bSBvYmpldG8gZGUgbW9kZWxvIGUgdW0gYEZvcm1Hcm91cGAgZG8gQW5ndWxhciwgXHJcbiAgICogZSByZXRvcm5hIHVtIG5vdm8gb2JqZXRvIHF1ZSBjb21iaW5hIGFzIHByb3ByaWVkYWRlcyBkbyBtb2RlbG8gb3JpZ2luYWwgY29tIG9zIHZhbG9yZXMgXHJcbiAgICogYXR1YWlzIGRvIGZvcm11bMOhcmlvLiBFc3RlIG3DqXRvZG8gw6kgw7p0aWwgcGFyYSBhdHVhbGl6YXIgZGluYW1pY2FtZW50ZSBhcyBwcm9wcmllZGFkZXMgXHJcbiAgICogZGUgdW0gbW9kZWxvIGNvbSBiYXNlIG5vcyB2YWxvcmVzIGluc2VyaWRvcyBwZWxvIHVzdcOhcmlvIGVtIHVtIGZvcm11bMOhcmlvLlxyXG4gICAqIFxyXG4gICAqIFNlIG8gb2JqZXRvIGByZWNvcmRgIG91IG8gYGZvcm1Hcm91cGAgZm9yZW0gbnVsb3Mgb3UgaW5kZWZpbmlkb3MsIG8gbcOpdG9kbyByZXRvcm5hcsOhIGBudWxsYC5cclxuICAgKiBDYXNvIGNvbnRyw6FyaW8sIG8gbcOpdG9kbyByZXRvcm5hIHVtIG5vdm8gb2JqZXRvIHF1ZSBpbmNsdWkgdG9kYXMgYXMgcHJvcHJpZWRhZGVzIFxyXG4gICAqIGRvIG9iamV0byBvcmlnaW5hbCwgc29icmVzY3JldmVuZG8tYXMgY29tIG9zIHZhbG9yZXMgYXR1YWlzIGRvIGZvcm11bMOhcmlvLCBzZSBkaXNwb27DrXZlaXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVjb3JkIC0gTyBvYmpldG8gZGUgbW9kZWxvIG9yaWdpbmFsIHF1ZSBzZXLDoSBhdHVhbGl6YWRvIGNvbSBvcyB2YWxvcmVzIGRvIGZvcm11bMOhcmlvLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwfSBmb3JtR3JvdXAgLSBPIGBGb3JtR3JvdXBgIGNvbnRlbmRvIG9zIHZhbG9yZXMgaW5zZXJpZG9zIHBlbG8gdXN1w6FyaW8uXHJcbiAgICogQHJldHVybnMge29iamVjdCB8IG51bGx9IC0gVW0gbm92byBvYmpldG8gY29tYmluYW5kbyBvIG1vZGVsbyBvcmlnaW5hbCBlIG9zIHZhbG9yZXMgZG8gZm9ybXVsw6FyaW8sIG91IGBudWxsYCBzZSBgcmVjb3JkYCBvdSBgZm9ybUdyb3VwYCBmb3JlbSBudWxvcyBvdSBpbmRlZmluaWRvcy5cclxuICAgKlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogLy8gU3Vwb25oYSBxdWUgdm9jw6ogdGVuaGEgdW0gb2JqZXRvIGRlIG1vZGVsbyBgcGVyc29uYCBlIHVtIGBGb3JtR3JvdXBgIGNoYW1hZG8gYHBlcnNvbkZvcm1gLlxyXG4gICAqIGNvbnN0IHBlcnNvbiA9IHtcclxuICAgKiAgIG5hbWU6ICdKb2huIERvZScsXHJcbiAgICogICBhZ2U6IDMwLFxyXG4gICAqICAgZW1haWw6ICdqb2huLmRvZUBleGFtcGxlLmNvbSdcclxuICAgKiB9O1xyXG4gICAqIFxyXG4gICAqIGNvbnN0IHBlcnNvbkZvcm06IEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAqICAgbmFtZTogWydKYW5lIERvZSddLFxyXG4gICAqICAgYWdlOiBbMjVdLFxyXG4gICAqICAgZW1haWw6IFsnamFuZS5kb2VAZXhhbXBsZS5jb20nXVxyXG4gICAqIH0pO1xyXG4gICAqIFxyXG4gICAqIGNvbnN0IHVwZGF0ZWRQZXJzb24gPSB0aGlzLm1hcEZvcm1Ub01vZGVsKHBlcnNvbiwgcGVyc29uRm9ybSk7XHJcbiAgICogLy8gYHVwZGF0ZWRQZXJzb25gIGFnb3JhIGNvbnTDqW06XHJcbiAgICogLy8ge1xyXG4gICAqIC8vICAgbmFtZTogJ0phbmUgRG9lJyxcclxuICAgKiAvLyAgIGFnZTogMjUsXHJcbiAgICogLy8gICBlbWFpbDogJ2phbmUuZG9lQGV4YW1wbGUuY29tJ1xyXG4gICAqIC8vIH1cclxuICAqL1xyXG4gIHB1YmxpYyBtYXBGb3JtVG9Nb2RlbChyZWNvcmQ6IG9iamVjdCwgZm9ybUdyb3VwOiBGb3JtR3JvdXApOiBvYmplY3QgfCBudWxsIHtcclxuICAgIGlmICgocmVjb3JkID09PSBudWxsIHx8IHJlY29yZCA9PT0gdW5kZWZpbmVkKSB8fCAoZm9ybUdyb3VwID09PSBudWxsIHx8IGZvcm1Hcm91cCA9PT0gdW5kZWZpbmVkKSkgeyByZXR1cm4gbnVsbDsgfVxyXG4gICAgXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5yZWNvcmQsXHJcbiAgICAgIC4uLmZvcm1Hcm91cC52YWx1ZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1011,6 +1011,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
1011
1011
  type: Input
1012
1012
  }] } });
1013
1013
 
1014
+ /**
1015
+ * @summary Contém diversos métodos de utilidade para formulários
1016
+ */
1014
1017
  class FormUtils {
1015
1018
  /** Verifica se um campo é inválido (Template Driven) */
1016
1019
  static isInvalidFieldTemplate(control) {
@@ -1024,7 +1027,7 @@ class FormUtils {
1024
1027
  /** Verifica se um campo é inválido ou se possui algum erro customizado (Data Driven) */
1025
1028
  static isInvalidFieldError(control) {
1026
1029
  if (control) {
1027
- if ((!control.valid && (control.dirty || control.touched)) || control.errors) {
1030
+ if (!control.valid && (control.dirty || control.touched)) {
1028
1031
  return true;
1029
1032
  }
1030
1033
  else {
@@ -1065,6 +1068,54 @@ class FormUtils {
1065
1068
  ? config[validatorName]
1066
1069
  : `Este validador - ${validatorName} - não foi implementado`);
1067
1070
  }
1071
+ /**
1072
+ * @summary Mapeia os valores de um formulário reativo para um objeto de modelo.
1073
+ *
1074
+ * @description
1075
+ * O método `mapFormToModel` recebe um objeto de modelo e um `FormGroup` do Angular,
1076
+ * e retorna um novo objeto que combina as propriedades do modelo original com os valores
1077
+ * atuais do formulário. Este método é útil para atualizar dinamicamente as propriedades
1078
+ * de um modelo com base nos valores inseridos pelo usuário em um formulário.
1079
+ *
1080
+ * Se o objeto `record` ou o `formGroup` forem nulos ou indefinidos, o método retornará `null`.
1081
+ * Caso contrário, o método retorna um novo objeto que inclui todas as propriedades
1082
+ * do objeto original, sobrescrevendo-as com os valores atuais do formulário, se disponíveis.
1083
+ *
1084
+ * @param {object} record - O objeto de modelo original que será atualizado com os valores do formulário.
1085
+ * @param {FormGroup} formGroup - O `FormGroup` contendo os valores inseridos pelo usuário.
1086
+ * @returns {object | null} - Um novo objeto combinando o modelo original e os valores do formulário, ou `null` se `record` ou `formGroup` forem nulos ou indefinidos.
1087
+ *
1088
+ * @example
1089
+ * // Suponha que você tenha um objeto de modelo `person` e um `FormGroup` chamado `personForm`.
1090
+ * const person = {
1091
+ * name: 'John Doe',
1092
+ * age: 30,
1093
+ * email: 'john.doe@example.com'
1094
+ * };
1095
+ *
1096
+ * const personForm: FormGroup = this.formBuilder.group({
1097
+ * name: ['Jane Doe'],
1098
+ * age: [25],
1099
+ * email: ['jane.doe@example.com']
1100
+ * });
1101
+ *
1102
+ * const updatedPerson = this.mapFormToModel(person, personForm);
1103
+ * // `updatedPerson` agora contém:
1104
+ * // {
1105
+ * // name: 'Jane Doe',
1106
+ * // age: 25,
1107
+ * // email: 'jane.doe@example.com'
1108
+ * // }
1109
+ */
1110
+ mapFormToModel(record, formGroup) {
1111
+ if ((record === null || record === undefined) || (formGroup === null || formGroup === undefined)) {
1112
+ return null;
1113
+ }
1114
+ return {
1115
+ ...record,
1116
+ ...formGroup.value
1117
+ };
1118
+ }
1068
1119
  }
1069
1120
 
1070
1121
  class FieldErrorMessageComponent {