From 4fb57de493d405efb2306eb28cb133eeff05148e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Can=20Y=C4=B1lmaz?= Date: Wed, 26 Apr 2023 10:36:30 +0300 Subject: [PATCH] create unique validator --- .../validators/unique-character.validator.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 npm/ng-packs/packages/core/src/lib/validators/unique-character.validator.ts diff --git a/npm/ng-packs/packages/core/src/lib/validators/unique-character.validator.ts b/npm/ng-packs/packages/core/src/lib/validators/unique-character.validator.ts new file mode 100644 index 0000000000..509dc66c7f --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/validators/unique-character.validator.ts @@ -0,0 +1,20 @@ +import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; +import { isNullOrEmpty } from '../utils'; + +export interface UniqueCharacterError { + uniqueCharacter: true; +} + +export function validateUniqueCharacter(): ValidatorFn { + return (control: AbstractControl): UniqueCharacterError | null => { + if (isNullOrEmpty(control.value)) return null; + + return isUnqiueCharacter(control.value) ? null : { uniqueCharacter: true }; + }; +} + +function isUnqiueCharacter(value: string): boolean { + const set = new Set(value.split('')); + + return set.size == value.length; +}