diff --git a/projects/ash-material-file-input/src/lib/directive/no-multiple.directive.spec.ts b/projects/ash-material-file-input/src/lib/directive/no-multiple.directive.spec.ts new file mode 100644 index 0000000..d7ab94c --- /dev/null +++ b/projects/ash-material-file-input/src/lib/directive/no-multiple.directive.spec.ts @@ -0,0 +1,8 @@ +import { NoMultipleDirective } from './no-multiple.directive'; + +describe('MultipleDirective', () => { + it('should create an instance', () => { + const directive = new NoMultipleDirective(); + expect(directive).toBeTruthy(); + }); +}); diff --git a/projects/ash-material-file-input/src/lib/directive/no-multiple.directive.ts b/projects/ash-material-file-input/src/lib/directive/no-multiple.directive.ts new file mode 100644 index 0000000..34290bb --- /dev/null +++ b/projects/ash-material-file-input/src/lib/directive/no-multiple.directive.ts @@ -0,0 +1,24 @@ +import { Directive } from '@angular/core'; +import { NG_VALIDATORS, Validator, FormControl } from '@angular/forms'; + +@Directive({ + selector: 'ash-mat-file-input:not([multiple])', + providers: [{ provide: NG_VALIDATORS, useExisting: NoMultipleDirective, multi: true }], +}) +export class NoMultipleDirective implements Validator { + + constructor() {} + + validate(control: FormControl) { + if (control.value?.length > 1) { + return { + multiple: { + maxFiles: 1, + currentFiles: control.value.length, + } + }; + } + return null; + } + +}