@dignite-ng/expand.core 0.0.5 → 0.0.7

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,2 +1,3 @@
1
1
  export * from './update-list.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vdXBkYXRlLWxpc3Quc2VydmljZSc7XHJcbiJdfQ==
2
+ export * from './validators.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi91cGRhdGUtbGlzdC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3JzLnNlcnZpY2UnO1xyXG4iXX0=
@@ -0,0 +1,84 @@
1
+ import { LocalizationService } from '@abp/ng.core';
2
+ import { ToasterService } from '@abp/ng.theme.shared';
3
+ import { inject, Injectable } from '@angular/core';
4
+ import { FormGroup, FormArray, FormControl, FormBuilder } from '@angular/forms';
5
+ import * as i0 from "@angular/core";
6
+ export class ValidatorsService {
7
+ constructor() {
8
+ this.fb = inject(FormBuilder);
9
+ this.toaster = inject(ToasterService);
10
+ this._LocalizationService = inject(LocalizationService);
11
+ }
12
+ /**检查表单- */
13
+ isCheckForm(input, module = 'AbpValidation') {
14
+ let keys = Object.keys(input);
15
+ for (let i = 0; i < keys.length; i++) {
16
+ const element = keys[i];
17
+ if (input[element] == false) {
18
+ let info = `"${this._LocalizationService.instant(`${module}::${element}`)}" `;
19
+ if (element.includes('.') && !element.includes('].')) {
20
+ let arr = element.split('.');
21
+ info = `"${this._LocalizationService.instant(`${module}::${arr[0]}`)}.${this._LocalizationService.instant(`${module}::${arr[1]}`)}"`;
22
+ }
23
+ if (element.includes('].')) {
24
+ let arr = element.split('].');
25
+ let arrStart = arr[0].split('[');
26
+ info = `"${this._LocalizationService.instant(`${module}::${arrStart[0]}`)}[${arrStart[1]}].${this._LocalizationService.instant(`${module}::${arr[1]}`)}"`;
27
+ }
28
+ info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);
29
+ //使用abp多语言提示
30
+ this.toaster.warn(info);
31
+ return true;
32
+ }
33
+ }
34
+ return false;
35
+ }
36
+ /**获取表单所有字段是否通过验证 */
37
+ getFormValidationStatus(formEntity) {
38
+ let validationStatus = {};
39
+ // 递归遍历表单组和表单控件集合
40
+ const traverseForm = (form, prefix = '') => {
41
+ if (form instanceof FormGroup) {
42
+ Object.keys(form.controls).forEach(key => {
43
+ const control = form.controls[key];
44
+ let displayName = key.charAt(0).toUpperCase() + key.slice(1);
45
+ const fullKey = prefix ? `${prefix}.${displayName}` : displayName;
46
+ if (control instanceof FormControl) {
47
+ validationStatus[fullKey] = control.valid;
48
+ }
49
+ else if (control instanceof FormArray) {
50
+ traverseForm(control, fullKey);
51
+ }
52
+ else if (control instanceof FormGroup) {
53
+ traverseForm(control, fullKey);
54
+ }
55
+ });
56
+ }
57
+ else if (form instanceof FormArray) {
58
+ form.controls.forEach((control, index) => {
59
+ const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;
60
+ if (control instanceof FormControl) {
61
+ validationStatus[fullKey] = control.valid;
62
+ }
63
+ else if (control instanceof FormArray) {
64
+ traverseForm(control, fullKey);
65
+ }
66
+ else if (control instanceof FormGroup) {
67
+ traverseForm(control, fullKey);
68
+ }
69
+ });
70
+ }
71
+ };
72
+ traverseForm(formEntity);
73
+ return validationStatus;
74
+ }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ValidatorsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
76
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ValidatorsService, providedIn: 'root' }); }
77
+ }
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ValidatorsService, decorators: [{
79
+ type: Injectable,
80
+ args: [{
81
+ providedIn: 'root',
82
+ }]
83
+ }], ctorParameters: () => [] });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZhbGlkYXRvcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLaEYsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QjtRQUVRLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqQyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUo1QyxDQUFDO0lBTWhCLFdBQVc7SUFDWCxXQUFXLENBQUMsS0FBVSxFQUFFLE1BQU0sR0FBRyxlQUFlO1FBQzlDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzVCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0s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Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLElBQUksSUFBSSxZQUFZLFNBQVMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDdkMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQztvQkFDOUQsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFLENBQUM7d0JBQ25DLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7b0JBQzVDLENBQUM7eUJBQU0sSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7d0JBQ3hDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7eUJBQU0sSUFBSSxPQUFPLFlBQVksU0FBUyxFQUFFLENBQUM7d0JBQ3hDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ2pDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXpCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQzs4R0F4RVUsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdG9yc1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XHJcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcclxuICBwcml2YXRlIF9Mb2NhbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KExvY2FsaXphdGlvblNlcnZpY2UpO1xyXG4gIFxyXG4gIC8qKuajgOafpeihqOWNlS0gKi9cclxuICBpc0NoZWNrRm9ybShpbnB1dDogYW55LCBtb2R1bGUgPSAnQWJwVmFsaWRhdGlvbicpIHtcclxuICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXQpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBrZXlzW2ldO1xyXG4gICAgICBpZiAoaW5wdXRbZWxlbWVudF0gPT0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgaW5mbyA9IGBcIiR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGAke21vZHVsZX06OiR7ZWxlbWVudH1gKX1cIiBgO1xyXG4gICAgICAgIGlmIChlbGVtZW50LmluY2x1ZGVzKCcuJykgJiYgIWVsZW1lbnQuaW5jbHVkZXMoJ10uJykpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSBlbGVtZW50LnNwbGl0KCcuJyk7XHJcbiAgICAgICAgICBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAgIGAke21vZHVsZX06OiR7YXJyWzBdfWBcclxuICAgICAgICAgICl9LiR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGAke21vZHVsZX06OiR7YXJyWzFdfWApfVwiYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuaW5jbHVkZXMoJ10uJykpIHtcclxuICAgICAgICAgIGxldCBhcnIgPSBlbGVtZW50LnNwbGl0KCddLicpO1xyXG4gICAgICAgICAgbGV0IGFyclN0YXJ0ID0gYXJyWzBdLnNwbGl0KCdbJyk7XHJcbiAgICAgICAgICBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYCR7bW9kdWxlfTo6JHthcnJTdGFydFswXX1gKX1bJHtcclxuICAgICAgICAgICAgYXJyU3RhcnRbMV1cclxuICAgICAgICAgIH1dLiR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGAke21vZHVsZX06OiR7YXJyWzFdfWApfVwiYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5mbyA9aW5mbysgdGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdFZhbGlkLmApO1xyXG4gICAgICAgIC8v5L2/55SoYWJw5aSa6K+t6KiA5o+Q56S6XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLndhcm4oaW5mbyk7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKuiOt+WPluihqOWNleaJgOacieWtl+auteaYr+WQpumAmui/h+mqjOivgSAqL1xyXG4gIGdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xyXG4gICAgbGV0IHZhbGlkYXRpb25TdGF0dXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHJcbiAgICAvLyDpgJLlvZLpgY3ljobooajljZXnu4TlkozooajljZXmjqfku7bpm4blkIhcclxuICAgIGNvbnN0IHRyYXZlcnNlRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksIHByZWZpeCA9ICcnKSA9PiB7XHJcbiAgICAgIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNba2V5XTtcclxuICAgICAgICAgIGxldCBkaXNwbGF5TmFtZSA9IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcclxuICAgICAgICAgIGNvbnN0IGZ1bGxLZXkgPSBwcmVmaXggPyBgJHtwcmVmaXh9LiR7ZGlzcGxheU5hbWV9YCA6IGRpc3BsYXlOYW1lO1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uU3RhdHVzW2Z1bGxLZXldID0gY29udHJvbC52YWxpZDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZUZvcm0oY29udHJvbCwgZnVsbEtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgICBmb3JtLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBmdWxsS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fVske2luZGV4fV1gIDogYFske2luZGV4fV1gO1xyXG4gICAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0aW9uU3RhdHVzW2Z1bGxLZXldID0gY29udHJvbC52YWxpZDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xyXG4gICAgICAgICAgICB0cmF2ZXJzZUZvcm0oY29udHJvbCwgZnVsbEtleSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHRyYXZlcnNlRm9ybShmb3JtRW50aXR5KTtcclxuXHJcbiAgICByZXR1cm4gdmFsaWRhdGlvblN0YXR1cztcclxuICB9XHJcbn1cclxuIl19
@@ -2,9 +2,10 @@ import * as i0 from '@angular/core';
2
2
  import { EventEmitter, Injectable, inject, Pipe, Component, Input, Output, Directive, HostListener } from '@angular/core';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import * as i3 from '@abp/ng.core';
5
- import { EnvironmentService, ConfigStateService, CoreModule } from '@abp/ng.core';
5
+ import { LocalizationService, EnvironmentService, ConfigStateService, CoreModule } from '@abp/ng.core';
6
+ import { ToasterService, ThemeSharedModule } from '@abp/ng.theme.shared';
7
+ import { FormBuilder, FormGroup, FormControl, FormArray } from '@angular/forms';
6
8
  import { PageModule } from '@abp/ng.components/page';
7
- import { ThemeSharedModule } from '@abp/ng.theme.shared';
8
9
  import * as i2 from '@angular/common';
9
10
  import { CommonModule } from '@angular/common';
10
11
  import * as i1 from '@ng-bootstrap/ng-bootstrap';
@@ -140,6 +141,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
140
141
  }]
141
142
  }], ctorParameters: () => [] });
142
143
 
144
+ class ValidatorsService {
145
+ constructor() {
146
+ this.fb = inject(FormBuilder);
147
+ this.toaster = inject(ToasterService);
148
+ this._LocalizationService = inject(LocalizationService);
149
+ }
150
+ /**检查表单- */
151
+ isCheckForm(input, module = 'AbpValidation') {
152
+ let keys = Object.keys(input);
153
+ for (let i = 0; i < keys.length; i++) {
154
+ const element = keys[i];
155
+ if (input[element] == false) {
156
+ let info = `"${this._LocalizationService.instant(`${module}::${element}`)}" `;
157
+ if (element.includes('.') && !element.includes('].')) {
158
+ let arr = element.split('.');
159
+ info = `"${this._LocalizationService.instant(`${module}::${arr[0]}`)}.${this._LocalizationService.instant(`${module}::${arr[1]}`)}"`;
160
+ }
161
+ if (element.includes('].')) {
162
+ let arr = element.split('].');
163
+ let arrStart = arr[0].split('[');
164
+ info = `"${this._LocalizationService.instant(`${module}::${arrStart[0]}`)}[${arrStart[1]}].${this._LocalizationService.instant(`${module}::${arr[1]}`)}"`;
165
+ }
166
+ info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);
167
+ //使用abp多语言提示
168
+ this.toaster.warn(info);
169
+ return true;
170
+ }
171
+ }
172
+ return false;
173
+ }
174
+ /**获取表单所有字段是否通过验证 */
175
+ getFormValidationStatus(formEntity) {
176
+ let validationStatus = {};
177
+ // 递归遍历表单组和表单控件集合
178
+ const traverseForm = (form, prefix = '') => {
179
+ if (form instanceof FormGroup) {
180
+ Object.keys(form.controls).forEach(key => {
181
+ const control = form.controls[key];
182
+ let displayName = key.charAt(0).toUpperCase() + key.slice(1);
183
+ const fullKey = prefix ? `${prefix}.${displayName}` : displayName;
184
+ if (control instanceof FormControl) {
185
+ validationStatus[fullKey] = control.valid;
186
+ }
187
+ else if (control instanceof FormArray) {
188
+ traverseForm(control, fullKey);
189
+ }
190
+ else if (control instanceof FormGroup) {
191
+ traverseForm(control, fullKey);
192
+ }
193
+ });
194
+ }
195
+ else if (form instanceof FormArray) {
196
+ form.controls.forEach((control, index) => {
197
+ const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;
198
+ if (control instanceof FormControl) {
199
+ validationStatus[fullKey] = control.valid;
200
+ }
201
+ else if (control instanceof FormArray) {
202
+ traverseForm(control, fullKey);
203
+ }
204
+ else if (control instanceof FormGroup) {
205
+ traverseForm(control, fullKey);
206
+ }
207
+ });
208
+ }
209
+ };
210
+ traverseForm(formEntity);
211
+ return validationStatus;
212
+ }
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ValidatorsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
214
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ValidatorsService, providedIn: 'root' }); }
215
+ }
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: ValidatorsService, decorators: [{
217
+ type: Injectable,
218
+ args: [{
219
+ providedIn: 'root',
220
+ }]
221
+ }], ctorParameters: () => [] });
222
+
143
223
  /**获取当前窗口域名
144
224
  * 需要将environment.ts页面配置
145
225
  application: {
@@ -520,5 +600,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
520
600
  * Generated bundle index. Do not edit.
521
601
  */
522
602
 
523
- export { GetNowDomainPipe, GetTenantImgPipe, ImagePreviewComponent, KeydownPreventDefaultDirective, SimpleReuseStrategy, SlugNormalizerPipe, UpdateListService };
603
+ export { GetNowDomainPipe, GetTenantImgPipe, ImagePreviewComponent, KeydownPreventDefaultDirective, SimpleReuseStrategy, SlugNormalizerPipe, UpdateListService, ValidatorsService };
524
604
  //# sourceMappingURL=dignite-ng-expand.core.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dignite-ng-expand.core.mjs","sources":["../../../projects/core/src/lib/strategies/simple-reuse-strategy.ts","../../../projects/core/src/lib/services/update-list.service.ts","../../../projects/core/src/lib/pipes/get-now-domain.pipe.ts","../../../projects/core/src/lib/pipes/get-tenant-img.pipe.ts","../../../projects/core/src/lib/pipes/slug-normalizer.pipe.ts","../../../projects/core/src/lib/expand/image-preview.component.ts","../../../projects/core/src/lib/directives/keydown-prevent-default.directive.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/dignite-ng-expand.core.ts"],"sourcesContent":["import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\r\n/**\r\n * 路由复用策略\r\n * \r\n * 1. 实现shouldReuseRoute方法,判断是否同一路由时复用路由\r\n * 2. 实现retrieve方法,获取存储路由\r\n * 3. 实现shouldDetach方法,判断是否有路由存储\r\n * 4. 实现store方法,存储路由\r\n * 5. 实现shouldAttach方法,判断是否有路由存储\r\n * 6. 实现retrieve方法,获取存储路由\r\n * 7. 实现destroy方法,销毁路由\r\n * \r\n * *使用方法\r\n @NgModule({\r\n providers: [\r\n { provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }\r\n ],\r\n })\r\n\r\n data: { keep: true }\r\n */\r\nexport class SimpleReuseStrategy implements RouteReuseStrategy {\r\n static cacheRouters = new Map<string, DetachedRouteHandle>();\r\n\r\n public static deleteRouteCache(url): void {\r\n if (SimpleReuseStrategy.cacheRouters.has(url)) {\r\n const handle: any = SimpleReuseStrategy.cacheRouters.get(url);\r\n try {\r\n handle.componentRef.destory();\r\n } catch (e) { }\r\n SimpleReuseStrategy.cacheRouters.delete(url);\r\n }\r\n }\r\n\r\n public static deleteAllRouteCache(): void {\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n }\r\n\r\n // one 进入路由触发,是否同一路由时复用路由\r\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n return (\r\n future.routeConfig === curr.routeConfig &&\r\n JSON.stringify(future.params) === JSON.stringify(curr.params)\r\n );\r\n }\r\n\r\n // 获取存储路由\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n const url = this.getFullRouteURL(route);\r\n if (route.data.keep && SimpleReuseStrategy.cacheRouters.has(url)) {\r\n return SimpleReuseStrategy.cacheRouters.get(url);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // Whether to allow multiplexing routes\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return Boolean(route.data.keep);\r\n }\r\n //It is triggered when the route leaves. The route is stored\r\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n const url = this.getFullRouteURL(route);\r\n // 先把之前缓存的删除,\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n SimpleReuseStrategy.cacheRouters.set(url, handle);\r\n }\r\n // Whether to allow route restoration\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n const url = this.getFullRouteURL(route);\r\n return Boolean(route.data.keep) && SimpleReuseStrategy.cacheRouters.has(url);\r\n }\r\n\r\n // Gets the current route url\r\n private getFullRouteURL(route: ActivatedRouteSnapshot): string {\r\n const { pathFromRoot } = route;\r\n let fullRouteUrlPath: string[] = [];\r\n pathFromRoot.forEach((item: ActivatedRouteSnapshot) => {\r\n fullRouteUrlPath = fullRouteUrlPath.concat(this.getRouteUrlPath(item));\r\n });\r\n return `/${fullRouteUrlPath.join('/')}`;\r\n }\r\n private getRouteUrlPath(route: ActivatedRouteSnapshot) {\r\n return route.url.map(urlSegment => urlSegment.path);\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n/**\r\n * 子页面更新父级列表服务\r\n * \r\n * 父页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n\r\n this._UpdateListService.updateListEvent.subscribe(() => {\r\n this.list.get()\r\n });\r\n * \r\n * 子页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n this._UpdateListService.updateList();\r\n */\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UpdateListService {\r\n public updateListEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n updateList() {\r\n this.updateListEvent.emit();\r\n }\r\n\r\n /**\r\n * 使用发起数据\r\n * this.dataSubject.next(res);\r\n * \r\n * 接收数据产生回调\r\n this._UpdateLogoService.userInfo$.subscribe((res) => {\r\n this.getData();\r\n });\r\n */\r\n\r\n private dataSubject = new BehaviorSubject<any>(null);\r\n data$ = this.dataSubject.asObservable();\r\n updatedata(newdata: any) {\r\n this.dataSubject.next(newdata);\r\n }\r\n}\r\n","import { EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n/**获取当前窗口域名\r\n * 需要将environment.ts页面配置\r\n application: {\r\n baseUrl,\r\n name: 'Travely',\r\n webUrl:'https://localhost:44374',\r\n },\r\n *\r\n */\r\n@Pipe({\r\n name: 'getNowDomain',\r\n standalone: true\r\n})\r\nexport class GetNowDomainPipe implements PipeTransform {\r\n private environment = inject(EnvironmentService);\r\n\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n let production = this.environment.getEnvironment()?.production;\r\n let application:any=this.environment.getEnvironment()?.application;\r\n let webUrl=application?.webUrl;\r\n if (!production) return webUrl + value\r\n return this.get(value);\r\n }\r\n\r\n /**获取当前域名并重定向链接 */\r\n get(value) {\r\n const baseUrl: any = (function () {\r\n let extractDomain = (url) => {\r\n const regex = /^(https?:\\/\\/)?([^\\/]+)(?:[\\/?].*)?$/;\r\n const match = url.match(regex);\r\n if (match) {\r\n const protocol = match[1] || '';\r\n const domain = `${protocol}${match[2]}`;\r\n return `${domain}`;\r\n }\r\n return url;\r\n }\r\n let url = window.location.href;\r\n return `${extractDomain(url)}` + value\r\n })()\r\n return baseUrl\r\n }\r\n\r\n}\r\n","//pipe下新建:get-tenant-img.pipe.ts,\r\n//如何引用见:独立管道的使用\r\n\r\nimport { ConfigStateService, EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getTenantImg',\r\n standalone:true,\r\n})\r\nexport class GetTenantImgPipe implements PipeTransform {\r\n private configState = inject(ConfigStateService)\r\n private environment = inject(EnvironmentService)\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n let tenantId = this.configState.getDeep('currentUser.tenantId')\r\n const environment = this.environment.getEnvironment();\r\n let imgUrl =`${environment.apis.default.url}/api/file-explorer/files/${args}/${value}?__tenant=${tenantId}`\r\n return value?imgUrl:'';\r\n }\r\n}\r\n//使用\r\n// {{'agentAvatarBlobName'|getTenantImg:'Avatar'}}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'slugNormalizer',\r\n standalone: true\r\n})\r\nexport class SlugNormalizerPipe implements PipeTransform {\r\n\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n return this.normalize(value);\r\n }\r\n\r\n normalize(value) {\r\n // Convert to lowercase\r\n value = value.toLowerCase();\r\n // Replace special characters with hyphen\r\n const invalidChars = ['\\\\', '/', '?', '&', '=', '+', '%', '#', '@', '!', '$', '\\'', '\"', ':', ';', '>', '<', '*', '(', ')', '[', '],', '{', '}', '|', '^', '`', '~'];\r\n for (let c of invalidChars) {\r\n value = value.replaceAll(c, '-');\r\n }\r\n // Convert spaces to hyphens\r\n value = value.replaceAll(\" \", \"-\");\r\n\r\n // Remove multiple consecutive hyphens\r\n while (value.includes(\"--\")) {\r\n value = value.replaceAll(\"--\", \"-\");\r\n }\r\n\r\n // Trim hyphens from start and end\r\n value = value.trim('-');\r\n \r\n // URL encode the remaining string (handles UTF-8 characters)\r\n //部分编码-保留语义\r\n //return encodeURI(value);\r\n //全部编码\r\n return encodeURIComponent(value);\r\n }\r\n\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output, TemplateRef } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-image-preview',\r\n template: `\r\n <div\r\n [id]=\"id\"\r\n *ngIf=\"_src\"\r\n class=\"image-preview imagehove border position-relative m-1 overflow-hidden \"\r\n [style]=\"{'width': width+'px','height': height+'px',borderRadius:rounded}\" [ngClass]=\"{'rounded-4': !rounded}\"\r\n >\r\n <img [src]=\"_src\" alt=\"\" class=\"w-100 h-100 object-fit-cover\" />\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input position-absolute top-0 end-0 m-1\"\r\n *ngIf=\"checkChange.observed\"\r\n (change)=\"checkImage($event)\"\r\n style=\"z-index: 10;\"\r\n />\r\n <div\r\n class=\"w-100 h-100 text-white position-absolute top-0 start-0\"\r\n style=\"background-color: #00000050;\"\r\n *ngIf=\"preview || deleteChange.observed\"\r\n >\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-eye p-2\"\r\n *ngIf=\"preview\"\r\n (click.stop)=\"OpenPreviewImage(content)\"\r\n ></i>\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-times p-2\"\r\n *ngIf=\"deleteChange.observed\"\r\n (click.stop)=\"deletecoverPics()\"\r\n ></i>\r\n </div>\r\n </div>\r\n\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <div class=\"d-flex justify-content-end w-100 fs-3 text-white\">\r\n <i\r\n class=\"mx-2 fa fa fa-repeat\"\r\n aria-hidden=\"true\"\r\n title=\"右旋转\"\r\n role=\"button\"\r\n (click)=\"RotateRight()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-minus\"\r\n aria-hidden=\"true\"\r\n title=\"缩小\"\r\n role=\"button\"\r\n (click)=\"zoomOut()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-plus\"\r\n aria-hidden=\"true\"\r\n title=\"放大\"\r\n role=\"button\"\r\n (click)=\"zoomIn()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-times\"\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n (click)=\"modal.dismiss('Cross click')\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"modal-body d-flex justify-content-center align-items-center \">\r\n <img\r\n width=\"400\"\r\n class=\"modal-body-preview\"\r\n [src]=\"_src\"\r\n [style.transform]=\"'scale(' + zoom / 10 + ') rotate(' + rotate + 'deg)'\"\r\n />\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: [\r\n `\r\n .image-preview.imagehove > div {\r\n display: none;\r\n }\r\n\r\n .image-preview.imagehove:hover div {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n ::ng-deep.dignite-preview .modal-content {\r\n background-color: transparent !important;\r\n }\r\n .object-fit-cover{\r\n object-fit: cover;\r\n }\r\n `,\r\n ],\r\n standalone: true,\r\n imports: [CoreModule, ThemeSharedModule, CommonModule, PageModule],\r\n})\r\nexport class ImagePreviewComponent {\r\n /**图片链接 */\r\n _src: any = '';\r\n @Input()\r\n public set src(v: any) {\r\n this._src = v;\r\n }\r\n\r\n /**是否预览 */\r\n @Input() preview = true;\r\n\r\n /**宽 */\r\n @Input() width = 90;\r\n /**高 */\r\n @Input() height = 90;\r\n @Input() rounded = '';\r\n @Input() id = '';\r\n\r\n /**模态框实例 */\r\n modalRef!: NgbModalRef;\r\n\r\n /**放大倍数 */\r\n zoom: number = 10;\r\n\r\n /**旋转 */\r\n rotate: number = 0;\r\n constructor(\r\n private modalService:NgbModal\r\n ){\r\n\r\n }\r\n\r\n // private modalService = inject(NgbModal);\r\n\r\n @Output() deleteChange = new EventEmitter();\r\n @Output() checkChange = new EventEmitter();\r\n\r\n /**选择图片的事件,返回父组件是否选中 */\r\n checkImage(event: any) {\r\n this.checkChange.emit(event.target.checked);\r\n }\r\n\r\n /**删除图片 */\r\n deletecoverPics() {\r\n this.deleteChange.emit();\r\n }\r\n\r\n /**打开预览弹窗 */\r\n OpenPreviewImage(content: TemplateRef<any>) {\r\n this.modalRef = this.modalService.open(content, {\r\n fullscreen: true,\r\n modalDialogClass: 'dignite-preview',\r\n });\r\n this.modalRef.result.then(\r\n result => {},\r\n reason => {\r\n this.zoom = 10;\r\n }\r\n );\r\n }\r\n /**放大图像 */\r\n zoomIn() {\r\n let zoom = this.zoom;\r\n if (zoom == 20) return;\r\n zoom++;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**缩小图像 */\r\n zoomOut() {\r\n let zoom = this.zoom;\r\n if (zoom == 3) return;\r\n zoom--;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**右旋转 */\r\n RotateRight() {\r\n if (this.rotate == 360) return (this.rotate = 0);\r\n this.rotate += 90;\r\n }\r\n}\r\n","/* eslint-disable @angular-eslint/directive-selector */\r\nimport { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[KeydownPreventDefault]',\r\n standalone: true,\r\n})\r\nexport class KeydownPreventDefaultDirective {\r\n constructor() {}\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/strategies';\r\nexport * from './lib/services';\r\nexport * from './lib/pipes';\r\nexport * from './lib/expand';\r\nexport * from './lib/directives';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dignite-ng-expand.core.mjs","sources":["../../../projects/core/src/lib/strategies/simple-reuse-strategy.ts","../../../projects/core/src/lib/services/update-list.service.ts","../../../projects/core/src/lib/services/validators.service.ts","../../../projects/core/src/lib/pipes/get-now-domain.pipe.ts","../../../projects/core/src/lib/pipes/get-tenant-img.pipe.ts","../../../projects/core/src/lib/pipes/slug-normalizer.pipe.ts","../../../projects/core/src/lib/expand/image-preview.component.ts","../../../projects/core/src/lib/directives/keydown-prevent-default.directive.ts","../../../projects/core/src/public-api.ts","../../../projects/core/src/dignite-ng-expand.core.ts"],"sourcesContent":["import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\r\n/**\r\n * 路由复用策略\r\n * \r\n * 1. 实现shouldReuseRoute方法,判断是否同一路由时复用路由\r\n * 2. 实现retrieve方法,获取存储路由\r\n * 3. 实现shouldDetach方法,判断是否有路由存储\r\n * 4. 实现store方法,存储路由\r\n * 5. 实现shouldAttach方法,判断是否有路由存储\r\n * 6. 实现retrieve方法,获取存储路由\r\n * 7. 实现destroy方法,销毁路由\r\n * \r\n * *使用方法\r\n @NgModule({\r\n providers: [\r\n { provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }\r\n ],\r\n })\r\n\r\n data: { keep: true }\r\n */\r\nexport class SimpleReuseStrategy implements RouteReuseStrategy {\r\n static cacheRouters = new Map<string, DetachedRouteHandle>();\r\n\r\n public static deleteRouteCache(url): void {\r\n if (SimpleReuseStrategy.cacheRouters.has(url)) {\r\n const handle: any = SimpleReuseStrategy.cacheRouters.get(url);\r\n try {\r\n handle.componentRef.destory();\r\n } catch (e) { }\r\n SimpleReuseStrategy.cacheRouters.delete(url);\r\n }\r\n }\r\n\r\n public static deleteAllRouteCache(): void {\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n }\r\n\r\n // one 进入路由触发,是否同一路由时复用路由\r\n shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n return (\r\n future.routeConfig === curr.routeConfig &&\r\n JSON.stringify(future.params) === JSON.stringify(curr.params)\r\n );\r\n }\r\n\r\n // 获取存储路由\r\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle {\r\n const url = this.getFullRouteURL(route);\r\n if (route.data.keep && SimpleReuseStrategy.cacheRouters.has(url)) {\r\n return SimpleReuseStrategy.cacheRouters.get(url);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // Whether to allow multiplexing routes\r\n shouldDetach(route: ActivatedRouteSnapshot): boolean {\r\n return Boolean(route.data.keep);\r\n }\r\n //It is triggered when the route leaves. The route is stored\r\n store(route: ActivatedRouteSnapshot, handle: DetachedRouteHandle): void {\r\n const url = this.getFullRouteURL(route);\r\n // 先把之前缓存的删除,\r\n SimpleReuseStrategy.cacheRouters.forEach((handle: any, key) => {\r\n SimpleReuseStrategy.deleteRouteCache(key);\r\n });\r\n SimpleReuseStrategy.cacheRouters.set(url, handle);\r\n }\r\n // Whether to allow route restoration\r\n shouldAttach(route: ActivatedRouteSnapshot): boolean {\r\n const url = this.getFullRouteURL(route);\r\n return Boolean(route.data.keep) && SimpleReuseStrategy.cacheRouters.has(url);\r\n }\r\n\r\n // Gets the current route url\r\n private getFullRouteURL(route: ActivatedRouteSnapshot): string {\r\n const { pathFromRoot } = route;\r\n let fullRouteUrlPath: string[] = [];\r\n pathFromRoot.forEach((item: ActivatedRouteSnapshot) => {\r\n fullRouteUrlPath = fullRouteUrlPath.concat(this.getRouteUrlPath(item));\r\n });\r\n return `/${fullRouteUrlPath.join('/')}`;\r\n }\r\n private getRouteUrlPath(route: ActivatedRouteSnapshot) {\r\n return route.url.map(urlSegment => urlSegment.path);\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n/**\r\n * 子页面更新父级列表服务\r\n * \r\n * 父页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n\r\n this._UpdateListService.updateListEvent.subscribe(() => {\r\n this.list.get()\r\n });\r\n * \r\n * 子页面:\r\n * \r\n private _UpdateListService=inject(UpdateListService)\r\n this._UpdateListService.updateList();\r\n */\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UpdateListService {\r\n public updateListEvent: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {}\r\n\r\n updateList() {\r\n this.updateListEvent.emit();\r\n }\r\n\r\n /**\r\n * 使用发起数据\r\n * this.dataSubject.next(res);\r\n * \r\n * 接收数据产生回调\r\n this._UpdateLogoService.userInfo$.subscribe((res) => {\r\n this.getData();\r\n });\r\n */\r\n\r\n private dataSubject = new BehaviorSubject<any>(null);\r\n data$ = this.dataSubject.asObservable();\r\n updatedata(newdata: any) {\r\n this.dataSubject.next(newdata);\r\n }\r\n}\r\n","import { LocalizationService } from '@abp/ng.core';\r\nimport { ToasterService } from '@abp/ng.theme.shared';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { FormGroup, FormArray, FormControl, FormBuilder } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ValidatorsService {\r\n constructor() {}\r\n\r\n private fb = inject(FormBuilder);\r\n private toaster = inject(ToasterService);\r\n private _LocalizationService = inject(LocalizationService);\r\n \r\n /**检查表单- */\r\n isCheckForm(input: any, module = 'AbpValidation') {\r\n let keys = Object.keys(input);\r\n for (let i = 0; i < keys.length; i++) {\r\n const element = keys[i];\r\n if (input[element] == false) {\r\n let info = `\"${this._LocalizationService.instant(`${module}::${element}`)}\" `;\r\n if (element.includes('.') && !element.includes('].')) {\r\n let arr = element.split('.');\r\n info = `\"${this._LocalizationService.instant(\r\n `${module}::${arr[0]}`\r\n )}.${this._LocalizationService.instant(`${module}::${arr[1]}`)}\"`;\r\n }\r\n if (element.includes('].')) {\r\n let arr = element.split('].');\r\n let arrStart = arr[0].split('[');\r\n info = `\"${this._LocalizationService.instant(`${module}::${arrStart[0]}`)}[${\r\n arrStart[1]\r\n }].${this._LocalizationService.instant(`${module}::${arr[1]}`)}\"`;\r\n }\r\n info =info+ this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);\r\n //使用abp多语言提示\r\n this.toaster.warn(info);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**获取表单所有字段是否通过验证 */\r\n getFormValidationStatus(formEntity: FormGroup | FormArray): { [key: string]: any } {\r\n let validationStatus: { [key: string]: any } = {};\r\n\r\n // 递归遍历表单组和表单控件集合\r\n const traverseForm = (form: FormGroup | FormArray, prefix = '') => {\r\n if (form instanceof FormGroup) {\r\n Object.keys(form.controls).forEach(key => {\r\n const control = form.controls[key];\r\n let displayName = key.charAt(0).toUpperCase() + key.slice(1);\r\n const fullKey = prefix ? `${prefix}.${displayName}` : displayName;\r\n if (control instanceof FormControl) {\r\n validationStatus[fullKey] = control.valid;\r\n } else if (control instanceof FormArray) {\r\n traverseForm(control, fullKey);\r\n } else if (control instanceof FormGroup) {\r\n traverseForm(control, fullKey);\r\n }\r\n });\r\n } else if (form instanceof FormArray) {\r\n form.controls.forEach((control, index) => {\r\n const fullKey = prefix ? `${prefix}[${index}]` : `[${index}]`;\r\n if (control instanceof FormControl) {\r\n validationStatus[fullKey] = control.valid;\r\n } else if (control instanceof FormArray) {\r\n traverseForm(control, fullKey);\r\n } else if (control instanceof FormGroup) {\r\n traverseForm(control, fullKey);\r\n }\r\n });\r\n }\r\n };\r\n\r\n traverseForm(formEntity);\r\n\r\n return validationStatus;\r\n }\r\n}\r\n","import { EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n/**获取当前窗口域名\r\n * 需要将environment.ts页面配置\r\n application: {\r\n baseUrl,\r\n name: 'Travely',\r\n webUrl:'https://localhost:44374',\r\n },\r\n *\r\n */\r\n@Pipe({\r\n name: 'getNowDomain',\r\n standalone: true\r\n})\r\nexport class GetNowDomainPipe implements PipeTransform {\r\n private environment = inject(EnvironmentService);\r\n\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n let production = this.environment.getEnvironment()?.production;\r\n let application:any=this.environment.getEnvironment()?.application;\r\n let webUrl=application?.webUrl;\r\n if (!production) return webUrl + value\r\n return this.get(value);\r\n }\r\n\r\n /**获取当前域名并重定向链接 */\r\n get(value) {\r\n const baseUrl: any = (function () {\r\n let extractDomain = (url) => {\r\n const regex = /^(https?:\\/\\/)?([^\\/]+)(?:[\\/?].*)?$/;\r\n const match = url.match(regex);\r\n if (match) {\r\n const protocol = match[1] || '';\r\n const domain = `${protocol}${match[2]}`;\r\n return `${domain}`;\r\n }\r\n return url;\r\n }\r\n let url = window.location.href;\r\n return `${extractDomain(url)}` + value\r\n })()\r\n return baseUrl\r\n }\r\n\r\n}\r\n","//pipe下新建:get-tenant-img.pipe.ts,\r\n//如何引用见:独立管道的使用\r\n\r\nimport { ConfigStateService, EnvironmentService } from '@abp/ng.core';\r\nimport { inject, Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getTenantImg',\r\n standalone:true,\r\n})\r\nexport class GetTenantImgPipe implements PipeTransform {\r\n private configState = inject(ConfigStateService)\r\n private environment = inject(EnvironmentService)\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n let tenantId = this.configState.getDeep('currentUser.tenantId')\r\n const environment = this.environment.getEnvironment();\r\n let imgUrl =`${environment.apis.default.url}/api/file-explorer/files/${args}/${value}?__tenant=${tenantId}`\r\n return value?imgUrl:'';\r\n }\r\n}\r\n//使用\r\n// {{'agentAvatarBlobName'|getTenantImg:'Avatar'}}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'slugNormalizer',\r\n standalone: true\r\n})\r\nexport class SlugNormalizerPipe implements PipeTransform {\r\n\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n return this.normalize(value);\r\n }\r\n\r\n normalize(value) {\r\n // Convert to lowercase\r\n value = value.toLowerCase();\r\n // Replace special characters with hyphen\r\n const invalidChars = ['\\\\', '/', '?', '&', '=', '+', '%', '#', '@', '!', '$', '\\'', '\"', ':', ';', '>', '<', '*', '(', ')', '[', '],', '{', '}', '|', '^', '`', '~'];\r\n for (let c of invalidChars) {\r\n value = value.replaceAll(c, '-');\r\n }\r\n // Convert spaces to hyphens\r\n value = value.replaceAll(\" \", \"-\");\r\n\r\n // Remove multiple consecutive hyphens\r\n while (value.includes(\"--\")) {\r\n value = value.replaceAll(\"--\", \"-\");\r\n }\r\n\r\n // Trim hyphens from start and end\r\n value = value.trim('-');\r\n \r\n // URL encode the remaining string (handles UTF-8 characters)\r\n //部分编码-保留语义\r\n //return encodeURI(value);\r\n //全部编码\r\n return encodeURIComponent(value);\r\n }\r\n\r\n}\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { PageModule } from '@abp/ng.components/page';\r\nimport { CoreModule } from '@abp/ng.core';\r\nimport { ThemeSharedModule } from '@abp/ng.theme.shared';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output, TemplateRef } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-image-preview',\r\n template: `\r\n <div\r\n [id]=\"id\"\r\n *ngIf=\"_src\"\r\n class=\"image-preview imagehove border position-relative m-1 overflow-hidden \"\r\n [style]=\"{'width': width+'px','height': height+'px',borderRadius:rounded}\" [ngClass]=\"{'rounded-4': !rounded}\"\r\n >\r\n <img [src]=\"_src\" alt=\"\" class=\"w-100 h-100 object-fit-cover\" />\r\n <input\r\n type=\"checkbox\"\r\n class=\"form-check-input position-absolute top-0 end-0 m-1\"\r\n *ngIf=\"checkChange.observed\"\r\n (change)=\"checkImage($event)\"\r\n style=\"z-index: 10;\"\r\n />\r\n <div\r\n class=\"w-100 h-100 text-white position-absolute top-0 start-0\"\r\n style=\"background-color: #00000050;\"\r\n *ngIf=\"preview || deleteChange.observed\"\r\n >\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-eye p-2\"\r\n *ngIf=\"preview\"\r\n (click.stop)=\"OpenPreviewImage(content)\"\r\n ></i>\r\n <i\r\n type=\"button\"\r\n class=\"fa fa-times p-2\"\r\n *ngIf=\"deleteChange.observed\"\r\n (click.stop)=\"deletecoverPics()\"\r\n ></i>\r\n </div>\r\n </div>\r\n\r\n <ng-template #content let-modal>\r\n <div class=\"modal-header\">\r\n <div class=\"d-flex justify-content-end w-100 fs-3 text-white\">\r\n <i\r\n class=\"mx-2 fa fa fa-repeat\"\r\n aria-hidden=\"true\"\r\n title=\"右旋转\"\r\n role=\"button\"\r\n (click)=\"RotateRight()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-minus\"\r\n aria-hidden=\"true\"\r\n title=\"缩小\"\r\n role=\"button\"\r\n (click)=\"zoomOut()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-search-plus\"\r\n aria-hidden=\"true\"\r\n title=\"放大\"\r\n role=\"button\"\r\n (click)=\"zoomIn()\"\r\n ></i>\r\n <i\r\n class=\"mx-2 fa fa-times\"\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n (click)=\"modal.dismiss('Cross click')\"\r\n ></i>\r\n </div>\r\n </div>\r\n <div class=\"modal-body d-flex justify-content-center align-items-center \">\r\n <img\r\n width=\"400\"\r\n class=\"modal-body-preview\"\r\n [src]=\"_src\"\r\n [style.transform]=\"'scale(' + zoom / 10 + ') rotate(' + rotate + 'deg)'\"\r\n />\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: [\r\n `\r\n .image-preview.imagehove > div {\r\n display: none;\r\n }\r\n\r\n .image-preview.imagehove:hover div {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n\r\n ::ng-deep.dignite-preview .modal-content {\r\n background-color: transparent !important;\r\n }\r\n .object-fit-cover{\r\n object-fit: cover;\r\n }\r\n `,\r\n ],\r\n standalone: true,\r\n imports: [CoreModule, ThemeSharedModule, CommonModule, PageModule],\r\n})\r\nexport class ImagePreviewComponent {\r\n /**图片链接 */\r\n _src: any = '';\r\n @Input()\r\n public set src(v: any) {\r\n this._src = v;\r\n }\r\n\r\n /**是否预览 */\r\n @Input() preview = true;\r\n\r\n /**宽 */\r\n @Input() width = 90;\r\n /**高 */\r\n @Input() height = 90;\r\n @Input() rounded = '';\r\n @Input() id = '';\r\n\r\n /**模态框实例 */\r\n modalRef!: NgbModalRef;\r\n\r\n /**放大倍数 */\r\n zoom: number = 10;\r\n\r\n /**旋转 */\r\n rotate: number = 0;\r\n constructor(\r\n private modalService:NgbModal\r\n ){\r\n\r\n }\r\n\r\n // private modalService = inject(NgbModal);\r\n\r\n @Output() deleteChange = new EventEmitter();\r\n @Output() checkChange = new EventEmitter();\r\n\r\n /**选择图片的事件,返回父组件是否选中 */\r\n checkImage(event: any) {\r\n this.checkChange.emit(event.target.checked);\r\n }\r\n\r\n /**删除图片 */\r\n deletecoverPics() {\r\n this.deleteChange.emit();\r\n }\r\n\r\n /**打开预览弹窗 */\r\n OpenPreviewImage(content: TemplateRef<any>) {\r\n this.modalRef = this.modalService.open(content, {\r\n fullscreen: true,\r\n modalDialogClass: 'dignite-preview',\r\n });\r\n this.modalRef.result.then(\r\n result => {},\r\n reason => {\r\n this.zoom = 10;\r\n }\r\n );\r\n }\r\n /**放大图像 */\r\n zoomIn() {\r\n let zoom = this.zoom;\r\n if (zoom == 20) return;\r\n zoom++;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**缩小图像 */\r\n zoomOut() {\r\n let zoom = this.zoom;\r\n if (zoom == 3) return;\r\n zoom--;\r\n this.zoom = zoom;\r\n }\r\n\r\n /**右旋转 */\r\n RotateRight() {\r\n if (this.rotate == 360) return (this.rotate = 0);\r\n this.rotate += 90;\r\n }\r\n}\r\n","/* eslint-disable @angular-eslint/directive-selector */\r\nimport { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[KeydownPreventDefault]',\r\n standalone: true,\r\n})\r\nexport class KeydownPreventDefaultDirective {\r\n constructor() {}\r\n\r\n @HostListener('keydown.enter', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n event.preventDefault();\r\n }\r\n}\r\n","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/strategies';\r\nexport * from './lib/services';\r\nexport * from './lib/pipes';\r\nexport * from './lib/expand';\r\nexport * from './lib/directives';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export * from './update-list.service';
2
+ export * from './validators.service';
@@ -0,0 +1,16 @@
1
+ import { FormGroup, FormArray } from '@angular/forms';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ValidatorsService {
4
+ constructor();
5
+ private fb;
6
+ private toaster;
7
+ private _LocalizationService;
8
+ /**检查表单- */
9
+ isCheckForm(input: any, module?: string): boolean;
10
+ /**获取表单所有字段是否通过验证 */
11
+ getFormValidationStatus(formEntity: FormGroup | FormArray): {
12
+ [key: string]: any;
13
+ };
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<ValidatorsService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<ValidatorsService>;
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dignite-ng/expand.core",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.1.0",
6
6
  "@angular/core": "^18.1.0"