Skip to content

Commit

Permalink
Merge pull request #12 from viniciusrc15/master
Browse files Browse the repository at this point in the history
Implements titulo de eleitor
  • Loading branch information
mariohmol committed Aug 9, 2018
2 parents de9b58f + fe4ef17 commit 57ede46
Show file tree
Hide file tree
Showing 7 changed files with 117 additions and 6 deletions.
16 changes: 16 additions & 0 deletions ng-brazil/src/core/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ export const MASKS = {
placa: {
text: 'AAA-0000',
textMask: [/[A-Za-z]/, /[A-Za-z]/, /[A-Za-z]/, '-', /\d/, /\d/, /\d/, /\d/]
},
titulo: {
text: '0000.0000.0000',
textMask: [/\d/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/]
}
}

Expand Down Expand Up @@ -292,3 +296,15 @@ export function validate_placa(placa) {
}
return true;
}

export function validate_titulo(titulo) {
const tituloClean = titulo.replace(/./, '');
const exp = /\d{4}\.\d{4}\.\d{4}/;
const expClean = /\d{4}\d{4}\d{4}/;

if (!exp.test(titulo) && !expClean.test(titulo)) {
return false;
}
return true;

}
11 changes: 9 additions & 2 deletions ng-brazil/src/lib.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ import { placa } from './placa/validator';
import { PLACAValidator } from './placa/directive';
import { PLACAPipe } from './placa/pipe';

import { titulo } from './titulo/validator';
import { TITULOValidator } from './titulo/directive';
import { TITULOPipe } from './titulo/pipe';

export const NgBrazilValidators: any = {
cpf,
cnpj,
Expand All @@ -52,7 +56,8 @@ export const NgBrazilValidators: any = {
currency,
percentage,
time,
placa
placa,
titulo
}

const CustomDirectives = [
Expand All @@ -75,7 +80,9 @@ const CustomDirectives = [
TIMEValidator,
TIMEPipe,
PLACAValidator,
PLACAPipe
PLACAPipe,
TITULOValidator,
TITULOPipe
];

@NgModule({
Expand Down
21 changes: 21 additions & 0 deletions ng-brazil/src/titulo/directive.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { Directive, forwardRef} from '@angular/core';
import { NG_VALIDATORS, Validator, AbstractControl } from '@angular/forms';

import { titulo } from './validator';

const TITULO_VALIDATOR: any = {
provide: NG_VALIDATORS,
useExisting: forwardRef(() => TITULOValidator),
multi: true
};

@Directive({
// tslint:disable-next-line:directive-selector
selector: '[titulo][formControlName],[titulo][formControl],[titulo][ngModel]',
providers: [TITULO_VALIDATOR]
})
export class TITULOValidator implements Validator {
validate(c: AbstractControl): {[key: string]: any} {
return titulo(c);
}
}
20 changes: 20 additions & 0 deletions ng-brazil/src/titulo/pipe.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { Pipe, PipeTransform } from '@angular/core';
import { conformToMask } from 'angular2-text-mask';
import { validate_titulo, MASKS } from '../core/utils';

@Pipe({
name: 'titulo'
})
export class TITULOPipe implements PipeTransform {
transform(tituloValue: any) {
if (!tituloValue) {
return '';
}

return conformToMask(
tituloValue,
MASKS.titulo.textMask,
{ guide: false }
).conformedValue
}
}
12 changes: 12 additions & 0 deletions ng-brazil/src/titulo/validator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { AbstractControl, Validators, ValidatorFn, RequiredValidator } from '@angular/forms';

import { isPresent, validate_titulo } from '../core/utils';

export const titulo: ValidatorFn = (control: AbstractControl): {[key: string]: boolean} => {
if (isPresent(Validators.required(control))) {
return null;
}

const v: string = control.value;
return validate_titulo(v) ? null : {titulo: true};
}
31 changes: 31 additions & 0 deletions src/app/demo/demo.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,20 @@ <h2>PLACA</h2>
</span>
</p>
</div>
<div>
<h2>TITULO</h2>
<span>Working example: {{data.titulo}}</span>
<input id="mask-titulo" type="text" formControlName="titulo" titulo [textMask]="{mask: MASKS.titulo.textMask}">
<span>
TITULO: {{formData.titulo}}
</span>
<p *ngIf="formDataValidate.titulo">
Errors Found:
<span id="mask-titulo-error" *ngFor="let v of objectKeys(formDataValidate.titulo)">
{{v}} {{formDataValidate.titulo[v]}}
</span>
</p>
</div>
<h2>----</h2>
<button>Submit</button>
</form>
Expand Down Expand Up @@ -167,6 +181,8 @@ <h2>Pipes</h2>
<span id="pipe-time">{{DATARAW.time | time}}</span>
<br/> Placa: From {{DATARAW.placa}} to
<span id="pipe-placa">{{DATARAW.placa | placa}}</span>
<br/> Titulo: From {{DATARAW.titulo}} to
<span id="pipe-titulo">{{DATARAW.titulo | titulo}}</span>


<br/>
Expand Down Expand Up @@ -329,6 +345,21 @@ <h2>PLACA</h2>
</p>
</div>

<div>
<h2>TITULO</h2>
<span>Working example: {{data.titulo}}</span>
<input id="nomask-titulo" type="text" formControlName="titulo" titulo>
<span>
TITULO: {{formData.titulo}}
</span>
<p *ngIf="formDataValidate.titulo">
Errors Found:
<span id="nomask-titulo-error" *ngFor="let v of objectKeys(formDataValidate.titulo)">
{{v}} {{formDataValidate.titulo[v]}}
</span>
</p>
</div>

<h2>----</h2>

<button id="submit">Submit</button>
Expand Down
12 changes: 8 additions & 4 deletions src/app/demo/demo.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ export const DATA = {
},
currency: '1.000,10',
time: '06:33',
placa: 'ABC-1234'
placa: 'ABC-1234',
titulo: '2053.9588.0384'
}

export const DATARAW = {
Expand All @@ -35,7 +36,8 @@ export const DATARAW = {
},
currency: '123321,22',
time: '0633',
placa: 'ADJ5468'
placa: 'ADJ5468',
titulo: '205395880384'
}


Expand All @@ -54,7 +56,8 @@ export const DATAERROR = {
},
currency: 'R$1000.10',
time: '0633',
placa: 'AEJ123'
placa: 'AEJ123',
titulo: '205395880384'
}

@Component({
Expand Down Expand Up @@ -95,7 +98,8 @@ export class DemoComponent implements OnInit {
cep: ['', [<any>Validators.required, <any>NgBrazilValidators.cep]],
currency: ['', [<any>Validators.required, <any>NgBrazilValidators.currency]],
time: ['', [<any>Validators.required, <any>NgBrazilValidators.time]],
placa: ['', [<any>Validators.required, <any>NgBrazilValidators.placa]]
placa: ['', [<any>Validators.required, <any>NgBrazilValidators.placa]],
titulo: ['', [<any>Validators.required, <any>NgBrazilValidators.titulo]]
};
this.form = this.fb.group(this.formFields);

Expand Down

0 comments on commit 57ede46

Please sign in to comment.