@fagon/ngx-intellitoolx 16.0.2 → 16.0.3
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 +664 -465
- package/esm2022/lib/form-validators/max-words.validator.mjs +2 -2
- package/esm2022/lib/form-validators/password-mismatch.validator.mjs +2 -2
- package/fesm2022/fagon-ngx-intellitoolx.mjs +3 -3
- package/fesm2022/fagon-ngx-intellitoolx.mjs.map +1 -1
- package/lib/form-validators/max-words.validator.d.ts +2 -2
- package/lib/form-validators/password-mismatch.validator.d.ts +1 -1
- package/package.json +16 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function maxWordsValidator(maxWords) {
|
|
2
2
|
return (control) => {
|
|
3
3
|
if (!control.value)
|
|
4
4
|
return null;
|
|
@@ -8,4 +8,4 @@ export function MaxWordsValidator(maxWords) {
|
|
|
8
8
|
: null;
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LXdvcmRzLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZm9ybS12YWxpZGF0b3JzL21heC13b3Jkcy52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFFBQWdCO0lBQ2hELE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWhDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzRCxPQUFPLFNBQVMsR0FBRyxRQUFRO1lBQ3pCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1heFdvcmRzVmFsaWRhdG9yKG1heFdvcmRzOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGlmICghY29udHJvbC52YWx1ZSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCB3b3JkQ291bnQgPSBjb250cm9sLnZhbHVlLnRyaW0oKS5zcGxpdCgvXFxzKy8pLmxlbmd0aDtcbiAgICByZXR1cm4gd29yZENvdW50ID4gbWF4V29yZHNcbiAgICAgID8geyBtYXhXb3JkczogeyBhY3R1YWw6IHdvcmRDb3VudCwgbWF4OiBtYXhXb3JkcyB9IH1cbiAgICAgIDogbnVsbDtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function
|
|
1
|
+
export function passwordMismatchValidator(controlName, matchingControlName) {
|
|
2
2
|
return (formGroup) => {
|
|
3
3
|
const control = formGroup.controls[controlName];
|
|
4
4
|
const matchingControl = formGroup.controls[matchingControlName];
|
|
@@ -13,4 +13,4 @@ export function PasswordMismatchValidator(controlName, matchingControlName) {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtLXZhbGlkYXRvcnMvcGFzc3dvcmQtbWlzbWF0Y2gudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsV0FBbUIsRUFDbkIsbUJBQTJCO0lBRTNCLE9BQU8sQ0FBQyxTQUEyQixFQUFFLEVBQUU7UUFDckMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDaEUsSUFBSSxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3pFLE9BQU87U0FDUjtRQUNELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQzNDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU07WUFDTCxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXNzd29yZE1pc21hdGNoVmFsaWRhdG9yKFxuICBjb250cm9sTmFtZTogc3RyaW5nLFxuICBtYXRjaGluZ0NvbnRyb2xOYW1lOiBzdHJpbmcsXG4pIHtcbiAgcmV0dXJuIChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXTtcbiAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XG4gICAgaWYgKG1hdGNoaW5nQ29udHJvbC5lcnJvcnMgJiYgIW1hdGNoaW5nQ29udHJvbC5lcnJvcnNbJ3Bhc3N3b3JkTWlzbWF0Y2gnXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC52YWx1ZSAhPT0gbWF0Y2hpbmdDb250cm9sLnZhbHVlKSB7XG4gICAgICBtYXRjaGluZ0NvbnRyb2wuc2V0RXJyb3JzKHsgcGFzc3dvcmRNaXNtYXRjaDogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWF0Y2hpbmdDb250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -372,7 +372,7 @@ function customMaxAmountValidator(maxValue) {
|
|
|
372
372
|
};
|
|
373
373
|
}
|
|
374
374
|
|
|
375
|
-
function
|
|
375
|
+
function maxWordsValidator(maxWords) {
|
|
376
376
|
return (control) => {
|
|
377
377
|
if (!control.value)
|
|
378
378
|
return null;
|
|
@@ -401,7 +401,7 @@ function customMinAmountValidator(minValue) {
|
|
|
401
401
|
};
|
|
402
402
|
}
|
|
403
403
|
|
|
404
|
-
function
|
|
404
|
+
function passwordMismatchValidator(controlName, matchingControlName) {
|
|
405
405
|
return (formGroup) => {
|
|
406
406
|
const control = formGroup.controls[controlName];
|
|
407
407
|
const matchingControl = formGroup.controls[matchingControlName];
|
|
@@ -572,5 +572,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
572
572
|
* Generated bundle index. Do not edit.
|
|
573
573
|
*/
|
|
574
574
|
|
|
575
|
-
export { DEFAULT_REQUIRED_MARKER_CONFIG, IntelliToolxHelper, IntellitoolxFormErrors, IntellitoolxFormUpdateMessage, IntellitoolxRegExps, JsonParsePipe,
|
|
575
|
+
export { DEFAULT_REQUIRED_MARKER_CONFIG, IntelliToolxHelper, IntellitoolxFormErrors, IntellitoolxFormUpdateMessage, IntellitoolxRegExps, JsonParsePipe, NgxIntellitoolxComponent, NgxIntellitoolxModule, REQUIRED_MARKER_GLOBAL_CONFIG, RequiredMarkerDirective, UnsavedChangesGuard, customMaxAmountValidator, customMinAmountValidator, maxWordsValidator, passwordMismatchValidator, uniqueEmailsValidator };
|
|
576
576
|
//# sourceMappingURL=fagon-ngx-intellitoolx.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fagon-ngx-intellitoolx.mjs","sources":["../../src/lib/ngx-intellitoolx.module.ts","../../src/lib/helpers/intellitoolx.helper.ts","../../src/lib/pipes/json-parse.pipe.ts","../../src/lib/ngx-intellitoolx.component.ts","../../src/lib/form-update/form-update-message.component.ts","../../src/lib/form-errors/form-errors.component.ts","../../src/lib/form-validators/max-amount.validator.ts","../../src/lib/form-validators/max-words.validator.ts","../../src/lib/form-validators/min-amount.validator.ts","../../src/lib/form-validators/password-mismatch.validator.ts","../../src/lib/form-validators/unique-email.validators.ts","../../src/lib/regex/regex.utils.ts","../../src/lib/directives/required-marker/required-marker.token.ts","../../src/lib/directives/required-marker/required-marker.defaults.ts","../../src/lib/directives/required-marker/required-marker.directive.ts","../../src/lib/form-update/unsaved-changes.guard.ts","../../src/public-api.ts","../../src/fagon-ngx-intellitoolx.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n exports: [],\n})\nexport class NgxIntellitoolxModule {}\n","import {\n AbstractControl,\n FormArray,\n FormControl,\n FormGroup,\n} from '@angular/forms';\nimport { ConfirmHandler } from '../form-update/confirm-handler.type';\n\nexport class IntelliToolxHelper {\n static captureInitialFormValue(form: AbstractControl): any {\n const initialValue = (form as any).getRawValue?.() ?? form.value;\n form.markAsPristine();\n return this.clone(initialValue);\n }\n\n static trimFormGroup(control: AbstractControl): void {\n if (control instanceof FormGroup) {\n Object.keys(control.controls).forEach((key) =>\n this.trimFormGroup(control.controls[key]),\n );\n return;\n }\n\n if (control instanceof FormArray) {\n control.controls.forEach((ctrl) => this.trimFormGroup(ctrl));\n return;\n }\n\n if (control instanceof FormControl) {\n const value = control.value;\n if (typeof value === 'string') {\n control.setValue(value.trim(), { emitEvent: false });\n }\n }\n }\n\n static deepEqual(obj1: any, obj2: any): boolean {\n // treat null, undefined, and empty string as equal\n if (this.isEmpty(obj1) && this.isEmpty(obj2)) {\n return true;\n }\n\n // normalize numeric values\n if (typeof obj1 === 'number' && typeof obj2 === 'number') {\n return Number(obj1) === Number(obj2);\n }\n\n // strict equality shortcut\n if (obj1 === obj2) return true;\n\n // File comparison\n if (obj1 instanceof File && obj2 instanceof File) {\n return (\n obj1.name === obj2.name &&\n obj1.size === obj2.size &&\n obj1.type === obj2.type &&\n obj1.lastModified === obj2.lastModified\n );\n }\n\n // if not objects → not equal\n if (\n typeof obj1 !== 'object' ||\n typeof obj2 !== 'object' ||\n obj1 === null ||\n obj2 === null\n ) {\n return false;\n }\n\n // arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) return false;\n return obj1.every((v, i) => this.deepEqual(v, obj2[i]));\n }\n\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (!keys2.includes(key)) return false;\n if (!this.deepEqual(obj1[key], obj2[key])) return false;\n }\n\n return true;\n }\n\n static isEmpty(value: any): boolean {\n return (\n value === null ||\n value === undefined ||\n (typeof value === 'string' && value.trim() === '')\n );\n }\n\n static clone(value: any): any {\n return structuredClone(value); // Angular 14+ safe\n }\n\n static formHasChanges(initialValue: any, form: AbstractControl): boolean {\n if (!form) return false;\n\n const current = form.getRawValue();\n return !this.deepEqual(initialValue, current);\n }\n\n static async confirmIfChanged(\n hasChanges: boolean,\n confirmHandler?: ConfirmHandler,\n ): Promise<boolean> {\n if (!hasChanges) return true;\n\n if (confirmHandler) {\n const result = confirmHandler();\n return typeof result === 'boolean' ? result : await result;\n }\n\n // fallback (only if handler not provided)\n return confirm('You have unsaved changes. Continue?');\n }\n\n static registerBeforeUnload(shouldBlock: () => boolean, message?: string) {\n const handler = (event: BeforeUnloadEvent) => {\n if (!shouldBlock()) return;\n\n event.preventDefault();\n event.returnValue = message || '';\n };\n\n window.addEventListener('beforeunload', handler);\n\n return () => window.removeEventListener('beforeunload', handler);\n }\n\n static getFormControl<T = any>(\n form: AbstractControl,\n path: string,\n ): FormControl<T> | null {\n if (!form || !path) return null;\n\n const segments = path.split('.');\n let current: AbstractControl | null = form;\n\n for (const segment of segments) {\n if (!current) return null;\n\n // Treat numeric segment as FormArray index\n const index = Number(segment);\n if (!isNaN(index) && current instanceof FormArray) {\n current = current.at(index);\n } else if (current instanceof FormGroup) {\n current = current.get(segment);\n } else {\n return null;\n }\n }\n\n return current instanceof FormControl ? (current as FormControl<T>) : null;\n }\n\n static convertImageToBase64(file: File): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n const base64String = reader.result as string;\n const base64StringArray = base64String.split(',');\n resolve(base64StringArray[1]);\n };\n\n reader.onerror = (error) => {\n reject(error);\n };\n });\n }\n\n static replaceCharacter(\n text: any,\n replaceChar: string,\n replaceWithChar: string,\n ): string {\n return text?.replaceAll(replaceChar, replaceWithChar) || '';\n }\n\n static convertJsonStringToJson<T = any>(\n value: T | string | null | undefined,\n ): T | null {\n if (!value) {\n return null;\n }\n\n if (typeof value === 'string') {\n try {\n return JSON.parse(value) as T;\n } catch {\n return null;\n }\n }\n\n return value as T;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IntelliToolxHelper } from '../helpers/intellitoolx.helper';\n\n@Pipe({\n name: 'jsonParse',\n standalone: true,\n})\nexport class JsonParsePipe implements PipeTransform {\n transform<T = any>(value: T | string | null | undefined): T | null {\n return IntelliToolxHelper.convertJsonStringToJson(value);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ngx-intellitoolx',\n standalone: true,\n template: ` <p>ngx-intellitoolx works!</p> `,\n styles: [],\n})\nexport class NgxIntellitoolxComponent {}\n","import { Component, Input } from '@angular/core';\nimport { IntellitoolxFormUpdateMessageConfig } from './form-update-message-config.interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'itx-form-update-message',\n standalone: true,\n imports: [CommonModule],\n styleUrls: ['./form-update-message.component.css'],\n template: `\n <div class=\"form-update-message\" role=\"alert\" [ngStyle]=\"containerStyles\">\n <span class=\"form-update-icon\" aria-hidden=\"true\" [ngStyle]=\"iconStyles\"\n >⚠</span\n >\n <span>\n {{ itxFormUpdateMessageConfig?.message || defaultMessage }}\n </span>\n </div>\n `,\n})\nexport class IntellitoolxFormUpdateMessage {\n @Input() itxFormUpdateMessageConfig?: IntellitoolxFormUpdateMessageConfig;\n defaultMessage =\n 'There are no changes to save. Please modify a field to continue.';\n\n get containerStyles(): { [key: string]: string } {\n return {\n padding: this.itxFormUpdateMessageConfig?.padding || '1rem',\n gap: this.itxFormUpdateMessageConfig?.iconAndMessageGap || '0.5rem',\n color: this.itxFormUpdateMessageConfig?.textColor || '#963C00',\n border:\n '1px solid ' +\n (this.itxFormUpdateMessageConfig?.borderColor || '#f3cd5a'),\n 'background-color':\n this.itxFormUpdateMessageConfig?.backgroundColor || '#fff3cd',\n 'font-weight': String(this.itxFormUpdateMessageConfig?.fontWeight || 400),\n 'border-radius':\n this.itxFormUpdateMessageConfig?.borderRadius || '0.5rem',\n };\n }\n\n get iconStyles(): { [key: string]: string } {\n return {\n 'font-size': this.itxFormUpdateMessageConfig?.iconSize || '1rem',\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n UntypedFormControl,\n} from '@angular/forms';\n\nexport interface ErrorMessages {\n [key: string]: string;\n required: string;\n email: string;\n minlength: string;\n maxlength: string;\n pattern: string;\n passwordMismatch: string;\n futureDate: string;\n exceededAllowedDateDifference: string;\n exceededLeastDateAllowed: string;\n duplicateEmail: string;\n maxWords: string;\n maxMonthYear: string;\n minMonthYear: string;\n}\n\n@Component({\n selector: 'itx-form-errors',\n standalone: true,\n imports: [CommonModule],\n template: `\n <ng-container *ngIf=\"control?.touched && control?.invalid\">\n <ng-container *ngFor=\"let error of control?.errors | keyvalue\">\n {{ getErrorMessage(error?.key ?? '', error?.value) }}\n </ng-container>\n </ng-container>\n `,\n})\nexport class IntellitoolxFormErrors {\n @Input() control: FormControl | UntypedFormControl | AbstractControl | null =\n null;\n @Input() componentValidation: Record<string, { message: string }> = {};\n @Input() controlLabel: string | null = null;\n\n errorMessages: ErrorMessages = {\n required: 'This field is required',\n email: 'The email entered is invalid',\n minlength: 'You must enter at least {length} characters',\n maxlength: 'You must not enter more than {length} characters',\n pattern: 'Your entry must match the required pattern',\n passwordMismatch: 'Password and confirm password do not match.',\n futureDate: 'Future date is not allowed.',\n exceededAllowedDateDifference: 'Date difference can only be one month.',\n exceededLeastDateAllowed: 'Start date cannot be greater than end date',\n duplicateEmail: 'Each email must be unique.',\n maxWords: 'Exceeded maximum number of words.',\n maxMonthYear: 'Date is later than allowed.',\n minMonthYear: 'Date is earlier than allowed.',\n };\n\n getErrorMessage(key: string, value: any): string {\n if (!this.control) return '';\n\n const customMessage = this.componentValidation?.[key]?.message;\n\n if (typeof value === 'boolean') {\n return customMessage || this.errorMessages[key] || '';\n }\n\n if (typeof value === 'string') {\n return customMessage || value;\n }\n\n if (typeof value === 'object') {\n switch (key) {\n case 'pattern':\n return (\n customMessage ||\n `Please provide a valid ${this.controlLabel || 'data'}.`\n );\n case 'min':\n return customMessage\n ? customMessage\n : this.controlLabel\n ? `${this.controlLabel} cannot be less than ${value.min}.`\n : `Number cannot be less than ${value.min}`;\n case 'max':\n return customMessage\n ? customMessage\n : this.controlLabel\n ? `${this.controlLabel} cannot be greater than ${value.max}.`\n : `Number cannot be greater than ${value.max}`;\n case 'minlength':\n return (\n customMessage ||\n this.errorMessages.minlength.replace(\n '{length}',\n value?.requiredLength || '',\n )\n );\n case 'maxlength':\n return (\n customMessage ||\n this.errorMessages.maxlength.replace(\n '{length}',\n value?.requiredLength || '',\n )\n );\n case 'customMinValue':\n case 'customMaxValue':\n return customMessage || value?.message || '';\n case 'ngbDate':\n return (\n customMessage ||\n (this.control.value ? 'Invalid date format provided' : '')\n );\n case 'passwordMismatch':\n case 'futureDate':\n case 'duplicateEmail':\n case 'maxWords':\n case 'maxMonthYear':\n case 'minMonthYear':\n case 'exceededAllowedDateDifference':\n case 'exceededLeastDateAllowed':\n return customMessage || this.errorMessages[key];\n default:\n return customMessage || '';\n }\n }\n\n return '';\n }\n}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from \"@angular/forms\";\n\nexport function customMaxAmountValidator(maxValue: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value !== null && control.value > maxValue) {\n control.setErrors({ exceededMaximumValue: true });\n const maxValueToFloat = maxValue.toFixed(2);\n return {\n customMaxValue: {\n requiredMin: maxValue,\n actual: control.value,\n message: `The value must not exceed ${maxValueToFloat}`,\n },\n };\n }\n\n control.setErrors(null);\n return null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\n\nexport function MaxWordsValidator(maxWords: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) return null;\n\n const wordCount = control.value.trim().split(/\\s+/).length;\n return wordCount > maxWords\n ? { maxWords: { actual: wordCount, max: maxWords } }\n : null;\n };\n}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from \"@angular/forms\";\n\nexport function customMinAmountValidator(minValue: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value !== null && control.value < minValue) {\n control.setErrors({ exceededMinimumValue: true });\n const minValueToFloat = minValue.toFixed(2);\n return {\n customMinValue: {\n requiredMin: minValue,\n actual: control.value,\n message: `The value must be at least ${minValueToFloat}`,\n },\n };\n }\n\n control.setErrors(null);\n return null;\n };\n}\n","import { UntypedFormGroup } from '@angular/forms';\n\nexport function PasswordMismatchValidator(\n controlName: string,\n matchingControlName: string,\n) {\n return (formGroup: UntypedFormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n if (matchingControl.errors && !matchingControl.errors['passwordMismatch']) {\n return;\n }\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ passwordMismatch: true });\n } else {\n matchingControl.setErrors(null);\n }\n };\n}\n","import {\n AbstractControl,\n ValidationErrors,\n ValidatorFn,\n FormArray,\n FormGroup,\n} from '@angular/forms';\n\nexport function uniqueEmailsValidator(): ValidatorFn {\n return (formArray: AbstractControl): ValidationErrors | null => {\n if (!(formArray instanceof FormArray)) {\n return null;\n }\n\n const controls = formArray.controls as FormGroup[];\n\n // Collect all email values safely\n const emails = controls.map((control: FormGroup) => {\n const value = control.get('email')?.value;\n return typeof value === 'string' ? value.toLowerCase().trim() : '';\n });\n\n // Count occurrences\n const emailCounts: Record<string, number> = {};\n emails.forEach((email: string) => {\n if (email) {\n emailCounts[email] = (emailCounts[email] || 0) + 1;\n }\n });\n\n // Update each control's errors\n controls.forEach((control: FormGroup) => {\n const emailControl = control.get('email');\n const email = emailControl?.value?.toLowerCase()?.trim();\n\n if (emailControl) {\n const currentErrors = emailControl.errors || {};\n\n if (email && emailCounts[email] > 1) {\n emailControl.setErrors({ ...currentErrors, duplicateEmail: true });\n } else if (currentErrors?.['duplicateEmail']) {\n delete currentErrors['duplicateEmail'];\n const hasOtherErrors = Object.keys(currentErrors)?.length > 0;\n emailControl.setErrors(hasOtherErrors ? currentErrors : null);\n }\n }\n });\n\n const hasDuplicates = Object.values(emailCounts)?.some(\n (count) => count > 1,\n );\n return hasDuplicates ? { duplicateEmails: true } : null;\n };\n}\n","export const IntellitoolxRegExps = {\n EMAIL_REGEX: /^(?=.{1,50}$)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[A-Za-z]{2,}$/,\n NUMBER_REGEX: /^\\d+$/,\n AMOUNT_REGEX: /^\\d+(\\.\\d{1,2})?$/,\n DOMAIN_REGEX:\n /^(?=.{1,255}$)(https?|ftp):\\/\\/([\\w.-]+)\\.([a-z\\.]{2,6})(:[0-9]{1,5})?(\\/\\S*)?$/,\n};\n","import { InjectionToken } from '@angular/core';\nimport { RequiredMarkerConfig } from './required-marker.config';\n\nexport const REQUIRED_MARKER_GLOBAL_CONFIG =\n new InjectionToken<RequiredMarkerConfig>('Required Marker Global Config');\n","import { ResolvedRequiredMarkerConfig } from './required-marker.config';\n\nexport const DEFAULT_REQUIRED_MARKER_CONFIG: ResolvedRequiredMarkerConfig = {\n sign: '*',\n color: 'red',\n position: 'after',\n spacing: '2px',\n className: '',\n showIfOptional: false,\n};\n","import {\n Directive,\n ElementRef,\n Renderer2,\n AfterViewInit,\n OnDestroy,\n inject,\n} from '@angular/core';\nimport {\n FormGroupDirective,\n AbstractControl,\n Validators,\n} from '@angular/forms';\nimport { merge, Subscription } from 'rxjs';\n\nimport { ResolvedRequiredMarkerConfig } from './required-marker.config';\nimport { REQUIRED_MARKER_GLOBAL_CONFIG } from './required-marker.token';\nimport { DEFAULT_REQUIRED_MARKER_CONFIG } from './required-marker.defaults';\n\n@Directive({\n selector: 'label[itxRequired]',\n standalone: true,\n})\nexport class RequiredMarkerDirective implements AfterViewInit, OnDestroy {\n private subscription?: Subscription;\n\n private globalConfig = inject(REQUIRED_MARKER_GLOBAL_CONFIG, {\n optional: true,\n });\n\n constructor(\n private el: ElementRef<HTMLLabelElement>,\n private renderer: Renderer2,\n private parentForm: FormGroupDirective,\n ) {}\n\n private resolveConfig(): ResolvedRequiredMarkerConfig {\n return {\n ...DEFAULT_REQUIRED_MARKER_CONFIG,\n ...this.globalConfig,\n };\n }\n\n ngAfterViewInit() {\n const label = this.el.nativeElement;\n const controlId = label.getAttribute('for');\n if (!controlId) return;\n\n const control = this.parentForm.form.get(controlId);\n if (!control) return;\n\n this.updateLabel(label, control);\n\n this.subscription = merge(\n control.valueChanges,\n control.statusChanges,\n ).subscribe(() => this.updateLabel(label, control));\n }\n\n private updateLabel(label: HTMLLabelElement, control: AbstractControl) {\n const config = this.resolveConfig();\n const isRequired = control.hasValidator?.(Validators.required);\n\n const original =\n label.getAttribute('data-original') || label.textContent || '';\n\n if (!label.getAttribute('data-original')) {\n label.setAttribute('data-original', original.trim());\n }\n\n const match = original.match(/^([^\\(]+)(.*)$/);\n const mainText = match ? match[1].trim() : original;\n const extraText = match ? match[2] : '';\n\n this.renderer.setProperty(label, 'textContent', '');\n\n const main = this.renderer.createText(mainText);\n\n const marker = this.renderer.createElement('span');\n this.renderer.setStyle(marker, 'color', config.color);\n this.renderer.setStyle(marker, 'margin-left', config.spacing);\n\n this.renderer.appendChild(marker, this.renderer.createText(config.sign));\n\n if (isRequired) {\n if (config.position === 'before') {\n this.renderer.appendChild(label, marker);\n this.renderer.appendChild(label, main);\n } else {\n this.renderer.appendChild(label, main);\n this.renderer.appendChild(label, marker);\n }\n } else {\n this.renderer.appendChild(label, main);\n }\n\n const extra = this.renderer.createText(extraText);\n this.renderer.appendChild(label, extra);\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\n\nexport interface CanComponentDeactivate {\n hasUnsavedChanges: () => boolean;\n getUnsavedMessage?: () => string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UnsavedChangesGuard implements CanDeactivate<CanComponentDeactivate> {\n canDeactivate(component: CanComponentDeactivate): boolean {\n if (!component.hasUnsavedChanges()) {\n return true;\n }\n\n const message =\n component.getUnsavedMessage?.() ||\n 'You have unsaved changes. Leave without saving?';\n\n return confirm(message);\n }\n}\n","/*\n * Public API Surface of ngx-intellitoolx\n */\n\n// Moddules\nexport * from './lib/ngx-intellitoolx.module';\n\n// Helpers\nexport * from './lib/helpers/intellitoolx.helper';\n\n// Pipes\nexport * from './lib/pipes/json-parse.pipe';\n\n// Components\nexport * from './lib/ngx-intellitoolx.component';\nexport * from './lib/form-update/form-update-message.component';\nexport * from './lib/form-errors/form-errors.component';\n\n// Validators\nexport * from './lib/form-validators';\n\n// Regular expressions\nexport * from './lib/regex/regex.utils';\n\n// Models/Interfaces\nexport * from './lib/form-update/form-update-message-config.interface';\n\n// Required marker directive\nexport * from './lib/directives/required-marker/required-marker.directive';\nexport * from './lib/directives/required-marker/required-marker.config';\nexport * from './lib/directives/required-marker/required-marker.token';\nexport * from './lib/directives/required-marker/required-marker.defaults';\n\n// Guards\nexport * from './lib/form-update/unsaved-changes.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fagon-ngx-intellitoolx.mjs","sources":["../../src/lib/ngx-intellitoolx.module.ts","../../src/lib/helpers/intellitoolx.helper.ts","../../src/lib/pipes/json-parse.pipe.ts","../../src/lib/ngx-intellitoolx.component.ts","../../src/lib/form-update/form-update-message.component.ts","../../src/lib/form-errors/form-errors.component.ts","../../src/lib/form-validators/max-amount.validator.ts","../../src/lib/form-validators/max-words.validator.ts","../../src/lib/form-validators/min-amount.validator.ts","../../src/lib/form-validators/password-mismatch.validator.ts","../../src/lib/form-validators/unique-email.validators.ts","../../src/lib/regex/regex.utils.ts","../../src/lib/directives/required-marker/required-marker.token.ts","../../src/lib/directives/required-marker/required-marker.defaults.ts","../../src/lib/directives/required-marker/required-marker.directive.ts","../../src/lib/form-update/unsaved-changes.guard.ts","../../src/public-api.ts","../../src/fagon-ngx-intellitoolx.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n exports: [],\n})\nexport class NgxIntellitoolxModule {}\n","import {\n AbstractControl,\n FormArray,\n FormControl,\n FormGroup,\n} from '@angular/forms';\nimport { ConfirmHandler } from '../form-update/confirm-handler.type';\n\nexport class IntelliToolxHelper {\n static captureInitialFormValue(form: AbstractControl): any {\n const initialValue = (form as any).getRawValue?.() ?? form.value;\n form.markAsPristine();\n return this.clone(initialValue);\n }\n\n static trimFormGroup(control: AbstractControl): void {\n if (control instanceof FormGroup) {\n Object.keys(control.controls).forEach((key) =>\n this.trimFormGroup(control.controls[key]),\n );\n return;\n }\n\n if (control instanceof FormArray) {\n control.controls.forEach((ctrl) => this.trimFormGroup(ctrl));\n return;\n }\n\n if (control instanceof FormControl) {\n const value = control.value;\n if (typeof value === 'string') {\n control.setValue(value.trim(), { emitEvent: false });\n }\n }\n }\n\n static deepEqual(obj1: any, obj2: any): boolean {\n // treat null, undefined, and empty string as equal\n if (this.isEmpty(obj1) && this.isEmpty(obj2)) {\n return true;\n }\n\n // normalize numeric values\n if (typeof obj1 === 'number' && typeof obj2 === 'number') {\n return Number(obj1) === Number(obj2);\n }\n\n // strict equality shortcut\n if (obj1 === obj2) return true;\n\n // File comparison\n if (obj1 instanceof File && obj2 instanceof File) {\n return (\n obj1.name === obj2.name &&\n obj1.size === obj2.size &&\n obj1.type === obj2.type &&\n obj1.lastModified === obj2.lastModified\n );\n }\n\n // if not objects → not equal\n if (\n typeof obj1 !== 'object' ||\n typeof obj2 !== 'object' ||\n obj1 === null ||\n obj2 === null\n ) {\n return false;\n }\n\n // arrays\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) return false;\n return obj1.every((v, i) => this.deepEqual(v, obj2[i]));\n }\n\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (!keys2.includes(key)) return false;\n if (!this.deepEqual(obj1[key], obj2[key])) return false;\n }\n\n return true;\n }\n\n static isEmpty(value: any): boolean {\n return (\n value === null ||\n value === undefined ||\n (typeof value === 'string' && value.trim() === '')\n );\n }\n\n static clone(value: any): any {\n return structuredClone(value); // Angular 14+ safe\n }\n\n static formHasChanges(initialValue: any, form: AbstractControl): boolean {\n if (!form) return false;\n\n const current = form.getRawValue();\n return !this.deepEqual(initialValue, current);\n }\n\n static async confirmIfChanged(\n hasChanges: boolean,\n confirmHandler?: ConfirmHandler,\n ): Promise<boolean> {\n if (!hasChanges) return true;\n\n if (confirmHandler) {\n const result = confirmHandler();\n return typeof result === 'boolean' ? result : await result;\n }\n\n // fallback (only if handler not provided)\n return confirm('You have unsaved changes. Continue?');\n }\n\n static registerBeforeUnload(shouldBlock: () => boolean, message?: string) {\n const handler = (event: BeforeUnloadEvent) => {\n if (!shouldBlock()) return;\n\n event.preventDefault();\n event.returnValue = message || '';\n };\n\n window.addEventListener('beforeunload', handler);\n\n return () => window.removeEventListener('beforeunload', handler);\n }\n\n static getFormControl<T = any>(\n form: AbstractControl,\n path: string,\n ): FormControl<T> | null {\n if (!form || !path) return null;\n\n const segments = path.split('.');\n let current: AbstractControl | null = form;\n\n for (const segment of segments) {\n if (!current) return null;\n\n // Treat numeric segment as FormArray index\n const index = Number(segment);\n if (!isNaN(index) && current instanceof FormArray) {\n current = current.at(index);\n } else if (current instanceof FormGroup) {\n current = current.get(segment);\n } else {\n return null;\n }\n }\n\n return current instanceof FormControl ? (current as FormControl<T>) : null;\n }\n\n static convertImageToBase64(file: File): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n const base64String = reader.result as string;\n const base64StringArray = base64String.split(',');\n resolve(base64StringArray[1]);\n };\n\n reader.onerror = (error) => {\n reject(error);\n };\n });\n }\n\n static replaceCharacter(\n text: any,\n replaceChar: string,\n replaceWithChar: string,\n ): string {\n return text?.replaceAll(replaceChar, replaceWithChar) || '';\n }\n\n static convertJsonStringToJson<T = any>(\n value: T | string | null | undefined,\n ): T | null {\n if (!value) {\n return null;\n }\n\n if (typeof value === 'string') {\n try {\n return JSON.parse(value) as T;\n } catch {\n return null;\n }\n }\n\n return value as T;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IntelliToolxHelper } from '../helpers/intellitoolx.helper';\n\n@Pipe({\n name: 'jsonParse',\n standalone: true,\n})\nexport class JsonParsePipe implements PipeTransform {\n transform<T = any>(value: T | string | null | undefined): T | null {\n return IntelliToolxHelper.convertJsonStringToJson(value);\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-ngx-intellitoolx',\n standalone: true,\n template: ` <p>ngx-intellitoolx works!</p> `,\n styles: [],\n})\nexport class NgxIntellitoolxComponent {}\n","import { Component, Input } from '@angular/core';\nimport { IntellitoolxFormUpdateMessageConfig } from './form-update-message-config.interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'itx-form-update-message',\n standalone: true,\n imports: [CommonModule],\n styleUrls: ['./form-update-message.component.css'],\n template: `\n <div class=\"form-update-message\" role=\"alert\" [ngStyle]=\"containerStyles\">\n <span class=\"form-update-icon\" aria-hidden=\"true\" [ngStyle]=\"iconStyles\"\n >⚠</span\n >\n <span>\n {{ itxFormUpdateMessageConfig?.message || defaultMessage }}\n </span>\n </div>\n `,\n})\nexport class IntellitoolxFormUpdateMessage {\n @Input() itxFormUpdateMessageConfig?: IntellitoolxFormUpdateMessageConfig;\n defaultMessage =\n 'There are no changes to save. Please modify a field to continue.';\n\n get containerStyles(): { [key: string]: string } {\n return {\n padding: this.itxFormUpdateMessageConfig?.padding || '1rem',\n gap: this.itxFormUpdateMessageConfig?.iconAndMessageGap || '0.5rem',\n color: this.itxFormUpdateMessageConfig?.textColor || '#963C00',\n border:\n '1px solid ' +\n (this.itxFormUpdateMessageConfig?.borderColor || '#f3cd5a'),\n 'background-color':\n this.itxFormUpdateMessageConfig?.backgroundColor || '#fff3cd',\n 'font-weight': String(this.itxFormUpdateMessageConfig?.fontWeight || 400),\n 'border-radius':\n this.itxFormUpdateMessageConfig?.borderRadius || '0.5rem',\n };\n }\n\n get iconStyles(): { [key: string]: string } {\n return {\n 'font-size': this.itxFormUpdateMessageConfig?.iconSize || '1rem',\n };\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport {\n AbstractControl,\n FormControl,\n UntypedFormControl,\n} from '@angular/forms';\n\nexport interface ErrorMessages {\n [key: string]: string;\n required: string;\n email: string;\n minlength: string;\n maxlength: string;\n pattern: string;\n passwordMismatch: string;\n futureDate: string;\n exceededAllowedDateDifference: string;\n exceededLeastDateAllowed: string;\n duplicateEmail: string;\n maxWords: string;\n maxMonthYear: string;\n minMonthYear: string;\n}\n\n@Component({\n selector: 'itx-form-errors',\n standalone: true,\n imports: [CommonModule],\n template: `\n <ng-container *ngIf=\"control?.touched && control?.invalid\">\n <ng-container *ngFor=\"let error of control?.errors | keyvalue\">\n {{ getErrorMessage(error?.key ?? '', error?.value) }}\n </ng-container>\n </ng-container>\n `,\n})\nexport class IntellitoolxFormErrors {\n @Input() control: FormControl | UntypedFormControl | AbstractControl | null =\n null;\n @Input() componentValidation: Record<string, { message: string }> = {};\n @Input() controlLabel: string | null = null;\n\n errorMessages: ErrorMessages = {\n required: 'This field is required',\n email: 'The email entered is invalid',\n minlength: 'You must enter at least {length} characters',\n maxlength: 'You must not enter more than {length} characters',\n pattern: 'Your entry must match the required pattern',\n passwordMismatch: 'Password and confirm password do not match.',\n futureDate: 'Future date is not allowed.',\n exceededAllowedDateDifference: 'Date difference can only be one month.',\n exceededLeastDateAllowed: 'Start date cannot be greater than end date',\n duplicateEmail: 'Each email must be unique.',\n maxWords: 'Exceeded maximum number of words.',\n maxMonthYear: 'Date is later than allowed.',\n minMonthYear: 'Date is earlier than allowed.',\n };\n\n getErrorMessage(key: string, value: any): string {\n if (!this.control) return '';\n\n const customMessage = this.componentValidation?.[key]?.message;\n\n if (typeof value === 'boolean') {\n return customMessage || this.errorMessages[key] || '';\n }\n\n if (typeof value === 'string') {\n return customMessage || value;\n }\n\n if (typeof value === 'object') {\n switch (key) {\n case 'pattern':\n return (\n customMessage ||\n `Please provide a valid ${this.controlLabel || 'data'}.`\n );\n case 'min':\n return customMessage\n ? customMessage\n : this.controlLabel\n ? `${this.controlLabel} cannot be less than ${value.min}.`\n : `Number cannot be less than ${value.min}`;\n case 'max':\n return customMessage\n ? customMessage\n : this.controlLabel\n ? `${this.controlLabel} cannot be greater than ${value.max}.`\n : `Number cannot be greater than ${value.max}`;\n case 'minlength':\n return (\n customMessage ||\n this.errorMessages.minlength.replace(\n '{length}',\n value?.requiredLength || '',\n )\n );\n case 'maxlength':\n return (\n customMessage ||\n this.errorMessages.maxlength.replace(\n '{length}',\n value?.requiredLength || '',\n )\n );\n case 'customMinValue':\n case 'customMaxValue':\n return customMessage || value?.message || '';\n case 'ngbDate':\n return (\n customMessage ||\n (this.control.value ? 'Invalid date format provided' : '')\n );\n case 'passwordMismatch':\n case 'futureDate':\n case 'duplicateEmail':\n case 'maxWords':\n case 'maxMonthYear':\n case 'minMonthYear':\n case 'exceededAllowedDateDifference':\n case 'exceededLeastDateAllowed':\n return customMessage || this.errorMessages[key];\n default:\n return customMessage || '';\n }\n }\n\n return '';\n }\n}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from \"@angular/forms\";\n\nexport function customMaxAmountValidator(maxValue: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value !== null && control.value > maxValue) {\n control.setErrors({ exceededMaximumValue: true });\n const maxValueToFloat = maxValue.toFixed(2);\n return {\n customMaxValue: {\n requiredMin: maxValue,\n actual: control.value,\n message: `The value must not exceed ${maxValueToFloat}`,\n },\n };\n }\n\n control.setErrors(null);\n return null;\n };\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport function maxWordsValidator(maxWords: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (!control.value) return null;\n\n const wordCount = control.value.trim().split(/\\s+/).length;\n return wordCount > maxWords\n ? { maxWords: { actual: wordCount, max: maxWords } }\n : null;\n };\n}\n","import { ValidatorFn, AbstractControl, ValidationErrors } from \"@angular/forms\";\n\nexport function customMinAmountValidator(minValue: number): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n if (control.value !== null && control.value < minValue) {\n control.setErrors({ exceededMinimumValue: true });\n const minValueToFloat = minValue.toFixed(2);\n return {\n customMinValue: {\n requiredMin: minValue,\n actual: control.value,\n message: `The value must be at least ${minValueToFloat}`,\n },\n };\n }\n\n control.setErrors(null);\n return null;\n };\n}\n","import { UntypedFormGroup } from '@angular/forms';\n\nexport function passwordMismatchValidator(\n controlName: string,\n matchingControlName: string,\n) {\n return (formGroup: UntypedFormGroup) => {\n const control = formGroup.controls[controlName];\n const matchingControl = formGroup.controls[matchingControlName];\n if (matchingControl.errors && !matchingControl.errors['passwordMismatch']) {\n return;\n }\n if (control.value !== matchingControl.value) {\n matchingControl.setErrors({ passwordMismatch: true });\n } else {\n matchingControl.setErrors(null);\n }\n };\n}\n","import {\n AbstractControl,\n ValidationErrors,\n ValidatorFn,\n FormArray,\n FormGroup,\n} from '@angular/forms';\n\nexport function uniqueEmailsValidator(): ValidatorFn {\n return (formArray: AbstractControl): ValidationErrors | null => {\n if (!(formArray instanceof FormArray)) {\n return null;\n }\n\n const controls = formArray.controls as FormGroup[];\n\n // Collect all email values safely\n const emails = controls.map((control: FormGroup) => {\n const value = control.get('email')?.value;\n return typeof value === 'string' ? value.toLowerCase().trim() : '';\n });\n\n // Count occurrences\n const emailCounts: Record<string, number> = {};\n emails.forEach((email: string) => {\n if (email) {\n emailCounts[email] = (emailCounts[email] || 0) + 1;\n }\n });\n\n // Update each control's errors\n controls.forEach((control: FormGroup) => {\n const emailControl = control.get('email');\n const email = emailControl?.value?.toLowerCase()?.trim();\n\n if (emailControl) {\n const currentErrors = emailControl.errors || {};\n\n if (email && emailCounts[email] > 1) {\n emailControl.setErrors({ ...currentErrors, duplicateEmail: true });\n } else if (currentErrors?.['duplicateEmail']) {\n delete currentErrors['duplicateEmail'];\n const hasOtherErrors = Object.keys(currentErrors)?.length > 0;\n emailControl.setErrors(hasOtherErrors ? currentErrors : null);\n }\n }\n });\n\n const hasDuplicates = Object.values(emailCounts)?.some(\n (count) => count > 1,\n );\n return hasDuplicates ? { duplicateEmails: true } : null;\n };\n}\n","export const IntellitoolxRegExps = {\n EMAIL_REGEX: /^(?=.{1,50}$)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[A-Za-z]{2,}$/,\n NUMBER_REGEX: /^\\d+$/,\n AMOUNT_REGEX: /^\\d+(\\.\\d{1,2})?$/,\n DOMAIN_REGEX:\n /^(?=.{1,255}$)(https?|ftp):\\/\\/([\\w.-]+)\\.([a-z\\.]{2,6})(:[0-9]{1,5})?(\\/\\S*)?$/,\n};\n","import { InjectionToken } from '@angular/core';\nimport { RequiredMarkerConfig } from './required-marker.config';\n\nexport const REQUIRED_MARKER_GLOBAL_CONFIG =\n new InjectionToken<RequiredMarkerConfig>('Required Marker Global Config');\n","import { ResolvedRequiredMarkerConfig } from './required-marker.config';\n\nexport const DEFAULT_REQUIRED_MARKER_CONFIG: ResolvedRequiredMarkerConfig = {\n sign: '*',\n color: 'red',\n position: 'after',\n spacing: '2px',\n className: '',\n showIfOptional: false,\n};\n","import {\n Directive,\n ElementRef,\n Renderer2,\n AfterViewInit,\n OnDestroy,\n inject,\n} from '@angular/core';\nimport {\n FormGroupDirective,\n AbstractControl,\n Validators,\n} from '@angular/forms';\nimport { merge, Subscription } from 'rxjs';\n\nimport { ResolvedRequiredMarkerConfig } from './required-marker.config';\nimport { REQUIRED_MARKER_GLOBAL_CONFIG } from './required-marker.token';\nimport { DEFAULT_REQUIRED_MARKER_CONFIG } from './required-marker.defaults';\n\n@Directive({\n selector: 'label[itxRequired]',\n standalone: true,\n})\nexport class RequiredMarkerDirective implements AfterViewInit, OnDestroy {\n private subscription?: Subscription;\n\n private globalConfig = inject(REQUIRED_MARKER_GLOBAL_CONFIG, {\n optional: true,\n });\n\n constructor(\n private el: ElementRef<HTMLLabelElement>,\n private renderer: Renderer2,\n private parentForm: FormGroupDirective,\n ) {}\n\n private resolveConfig(): ResolvedRequiredMarkerConfig {\n return {\n ...DEFAULT_REQUIRED_MARKER_CONFIG,\n ...this.globalConfig,\n };\n }\n\n ngAfterViewInit() {\n const label = this.el.nativeElement;\n const controlId = label.getAttribute('for');\n if (!controlId) return;\n\n const control = this.parentForm.form.get(controlId);\n if (!control) return;\n\n this.updateLabel(label, control);\n\n this.subscription = merge(\n control.valueChanges,\n control.statusChanges,\n ).subscribe(() => this.updateLabel(label, control));\n }\n\n private updateLabel(label: HTMLLabelElement, control: AbstractControl) {\n const config = this.resolveConfig();\n const isRequired = control.hasValidator?.(Validators.required);\n\n const original =\n label.getAttribute('data-original') || label.textContent || '';\n\n if (!label.getAttribute('data-original')) {\n label.setAttribute('data-original', original.trim());\n }\n\n const match = original.match(/^([^\\(]+)(.*)$/);\n const mainText = match ? match[1].trim() : original;\n const extraText = match ? match[2] : '';\n\n this.renderer.setProperty(label, 'textContent', '');\n\n const main = this.renderer.createText(mainText);\n\n const marker = this.renderer.createElement('span');\n this.renderer.setStyle(marker, 'color', config.color);\n this.renderer.setStyle(marker, 'margin-left', config.spacing);\n\n this.renderer.appendChild(marker, this.renderer.createText(config.sign));\n\n if (isRequired) {\n if (config.position === 'before') {\n this.renderer.appendChild(label, marker);\n this.renderer.appendChild(label, main);\n } else {\n this.renderer.appendChild(label, main);\n this.renderer.appendChild(label, marker);\n }\n } else {\n this.renderer.appendChild(label, main);\n }\n\n const extra = this.renderer.createText(extraText);\n this.renderer.appendChild(label, extra);\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\n\nexport interface CanComponentDeactivate {\n hasUnsavedChanges: () => boolean;\n getUnsavedMessage?: () => string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UnsavedChangesGuard implements CanDeactivate<CanComponentDeactivate> {\n canDeactivate(component: CanComponentDeactivate): boolean {\n if (!component.hasUnsavedChanges()) {\n return true;\n }\n\n const message =\n component.getUnsavedMessage?.() ||\n 'You have unsaved changes. Leave without saving?';\n\n return confirm(message);\n }\n}\n","/*\n * Public API Surface of ngx-intellitoolx\n */\n\n// Moddules\nexport * from './lib/ngx-intellitoolx.module';\n\n// Helpers\nexport * from './lib/helpers/intellitoolx.helper';\n\n// Pipes\nexport * from './lib/pipes/json-parse.pipe';\n\n// Components\nexport * from './lib/ngx-intellitoolx.component';\nexport * from './lib/form-update/form-update-message.component';\nexport * from './lib/form-errors/form-errors.component';\n\n// Validators\nexport * from './lib/form-validators';\n\n// Regular expressions\nexport * from './lib/regex/regex.utils';\n\n// Models/Interfaces\nexport * from './lib/form-update/form-update-message-config.interface';\n\n// Required marker directive\nexport * from './lib/directives/required-marker/required-marker.directive';\nexport * from './lib/directives/required-marker/required-marker.config';\nexport * from './lib/directives/required-marker/required-marker.token';\nexport * from './lib/directives/required-marker/required-marker.defaults';\n\n// Guards\nexport * from './lib/form-update/unsaved-changes.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ValidatorFn } from
|
|
2
|
-
export declare function
|
|
1
|
+
import { ValidatorFn } from '@angular/forms';
|
|
2
|
+
export declare function maxWordsValidator(maxWords: number): ValidatorFn;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { UntypedFormGroup } from '@angular/forms';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function passwordMismatchValidator(controlName: string, matchingControlName: string): (formGroup: UntypedFormGroup) => void;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fagon/ngx-intellitoolx",
|
|
3
|
-
"version": "16.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "16.0.3",
|
|
4
|
+
"description": "A comprehensive Angular utility library for reactive forms, validation, form state management, UX messaging, and reusable business-rule validators.",
|
|
5
5
|
"author": "Kingsley Darko Asomaning",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"peerDependencies": {
|
|
@@ -13,6 +13,20 @@
|
|
|
13
13
|
"tslib": "^2.3.0"
|
|
14
14
|
},
|
|
15
15
|
"sideEffects": false,
|
|
16
|
+
"keywords": [
|
|
17
|
+
"angular",
|
|
18
|
+
"angular reactive forms",
|
|
19
|
+
"angular validators",
|
|
20
|
+
"form validation",
|
|
21
|
+
"form errors",
|
|
22
|
+
"angular form utilities",
|
|
23
|
+
"reactive forms helper",
|
|
24
|
+
"unsaved changes guard",
|
|
25
|
+
"angular directives",
|
|
26
|
+
"angular standalone components",
|
|
27
|
+
"typescript utilities",
|
|
28
|
+
"angular ux"
|
|
29
|
+
],
|
|
16
30
|
"module": "fesm2022/fagon-ngx-intellitoolx.mjs",
|
|
17
31
|
"typings": "index.d.ts",
|
|
18
32
|
"exports": {
|