@recursyve/ngx-material-components 18.0.0-beta.2 → 18.0.0-beta.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.
Files changed (35) hide show
  1. package/esm2022/form-field-error/constant.mjs +4 -0
  2. package/esm2022/form-field-error/error-transformer.mjs +51 -0
  3. package/esm2022/form-field-error/error-translater.mjs +2 -0
  4. package/esm2022/form-field-error/form-field-error.directive.mjs +79 -0
  5. package/esm2022/form-field-error/form-field-error.mjs +57 -0
  6. package/esm2022/form-field-error/index.mjs +6 -0
  7. package/esm2022/form-field-error/options.mjs +2 -0
  8. package/esm2022/form-field-error/provider.mjs +18 -0
  9. package/esm2022/form-field-error/recursyve-ngx-material-components-form-field-error.mjs +5 -0
  10. package/esm2022/loading/constant.mjs +3 -0
  11. package/esm2022/loading/index.mjs +4 -0
  12. package/esm2022/loading/loading-spinner.mjs +15 -0
  13. package/esm2022/loading/loading.mjs +45 -0
  14. package/esm2022/loading/options.mjs +2 -0
  15. package/esm2022/loading/provider.mjs +8 -0
  16. package/esm2022/loading/recursyve-ngx-material-components-loading.mjs +5 -0
  17. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs +208 -0
  18. package/fesm2022/recursyve-ngx-material-components-form-field-error.mjs.map +1 -0
  19. package/fesm2022/recursyve-ngx-material-components-loading.mjs +72 -0
  20. package/fesm2022/recursyve-ngx-material-components-loading.mjs.map +1 -0
  21. package/form-field-error/constant.d.ts +3 -0
  22. package/form-field-error/error-transformer.d.ts +13 -0
  23. package/form-field-error/error-translater.d.ts +1 -0
  24. package/form-field-error/form-field-error.d.ts +8 -0
  25. package/form-field-error/form-field-error.directive.d.ts +17 -0
  26. package/form-field-error/index.d.ts +5 -0
  27. package/form-field-error/options.d.ts +9 -0
  28. package/form-field-error/provider.d.ts +3 -0
  29. package/loading/constant.d.ts +2 -0
  30. package/loading/index.d.ts +3 -0
  31. package/loading/loading-spinner.d.ts +9 -0
  32. package/loading/loading.d.ts +11 -0
  33. package/loading/options.d.ts +4 -0
  34. package/loading/provider.d.ts +3 -0
  35. package/package.json +13 -1
@@ -0,0 +1,4 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken("nice_form_field_error_transformers");
3
+ export const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken("nice_form_field_error_translater");
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2NvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUMzRyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5leHBvcnQgY29uc3QgTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TRk9STUVSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbihcIm5pY2VfZm9ybV9maWVsZF9lcnJvcl90cmFuc2Zvcm1lcnNcIik7XG5leHBvcnQgY29uc3QgTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TTEFURVIgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXCJuaWNlX2Zvcm1fZmllbGRfZXJyb3JfdHJhbnNsYXRlclwiKTtcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ export const PatternErrorTransformer = (error, details) => {
2
+ if (details["requiredPattern"]) {
3
+ return {
4
+ key: details["requiredPattern"]
5
+ };
6
+ }
7
+ return { key: error };
8
+ };
9
+ export const MaskErrorTransformer = (error, details) => {
10
+ if (details["requiredMask"]) {
11
+ return {
12
+ key: details["requiredMask"]
13
+ };
14
+ }
15
+ return { key: error };
16
+ };
17
+ export const LengthErrorTransformer = (error, details) => {
18
+ return {
19
+ key: error,
20
+ params: {
21
+ value: details["requiredLength"]
22
+ }
23
+ };
24
+ };
25
+ export const MinErrorTransformer = (error, details) => {
26
+ return {
27
+ key: error,
28
+ params: {
29
+ min: details["min"],
30
+ actual: details["actual"]
31
+ }
32
+ };
33
+ };
34
+ export const MaxErrorTransformer = (error, details) => {
35
+ return {
36
+ key: error,
37
+ params: {
38
+ max: details["max"],
39
+ actual: details["actual"]
40
+ }
41
+ };
42
+ };
43
+ export const DefaultErrorTransformers = {
44
+ pattern: PatternErrorTransformer,
45
+ mask: MaskErrorTransformer,
46
+ minlength: LengthErrorTransformer,
47
+ maxlength: LengthErrorTransformer,
48
+ min: MinErrorTransformer,
49
+ max: MaxErrorTransformer
50
+ };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2Vycm9yLXRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFxQixDQUFDLEtBQWEsRUFBRSxPQUF5QixFQUFFLEVBQUU7SUFDbEcsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87WUFDSCxHQUFHLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1NBQ2xDLENBQUE7SUFDTCxDQUFDO0lBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBcUIsQ0FBQyxLQUFhLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQy9GLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTztZQUNILEdBQUcsRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQy9CLENBQUE7SUFDTCxDQUFDO0lBRUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBcUIsQ0FBQyxLQUFhLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQ2pHLE9BQU87UUFDSCxHQUFHLEVBQUUsS0FBSztRQUNWLE1BQU0sRUFBRTtZQUNKLEtBQUssRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUM7U0FDbkM7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXFCLENBQUMsS0FBYSxFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUM5RixPQUFPO1FBQ0gsR0FBRyxFQUFFLEtBQUs7UUFDVixNQUFNLEVBQUU7WUFDSixHQUFHLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNuQixNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUM1QjtLQUNKLENBQUM7QUFDTixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBcUIsQ0FBQyxLQUFhLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQzlGLE9BQU87UUFDSCxHQUFHLEVBQUUsS0FBSztRQUNWLE1BQU0sRUFBRTtZQUNKLEdBQUcsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ25CLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQzVCO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFzQjtJQUN2RCxPQUFPLEVBQUUsdUJBQXVCO0lBQ2hDLElBQUksRUFBRSxvQkFBb0I7SUFDMUIsU0FBUyxFQUFFLHNCQUFzQjtJQUNqQyxTQUFTLEVBQUUsc0JBQXNCO0lBQ2pDLEdBQUcsRUFBRSxtQkFBbUI7SUFDeEIsR0FBRyxFQUFFLG1CQUFtQjtDQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1lZEVycm9yID0geyBrZXk6IHN0cmluZzsgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB9O1xuZXhwb3J0IHR5cGUgRXJyb3JUcmFuc2Zvcm1lciA9IChlcnJvcjogc3RyaW5nLCBkZXRhaWxzOiBWYWxpZGF0aW9uRXJyb3JzKSA9PiBUcmFuc2Zvcm1lZEVycm9yO1xuZXhwb3J0IHR5cGUgRXJyb3JUcmFuc2Zvcm1lcnMgPSBSZWNvcmQ8c3RyaW5nLCBFcnJvclRyYW5zZm9ybWVyPjtcblxuZXhwb3J0IGNvbnN0IFBhdHRlcm5FcnJvclRyYW5zZm9ybWVyOiBFcnJvclRyYW5zZm9ybWVyID0gKGVycm9yOiBzdHJpbmcsIGRldGFpbHM6IFZhbGlkYXRpb25FcnJvcnMpID0+IHtcbiAgICBpZiAoZGV0YWlsc1tcInJlcXVpcmVkUGF0dGVyblwiXSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2V5OiBkZXRhaWxzW1wicmVxdWlyZWRQYXR0ZXJuXCJdXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBrZXk6IGVycm9yIH07XG59O1xuXG5leHBvcnQgY29uc3QgTWFza0Vycm9yVHJhbnNmb3JtZXI6IEVycm9yVHJhbnNmb3JtZXIgPSAoZXJyb3I6IHN0cmluZywgZGV0YWlsczogVmFsaWRhdGlvbkVycm9ycykgPT4ge1xuICAgIGlmIChkZXRhaWxzW1wicmVxdWlyZWRNYXNrXCJdKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBrZXk6IGRldGFpbHNbXCJyZXF1aXJlZE1hc2tcIl1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGtleTogZXJyb3IgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBMZW5ndGhFcnJvclRyYW5zZm9ybWVyOiBFcnJvclRyYW5zZm9ybWVyID0gKGVycm9yOiBzdHJpbmcsIGRldGFpbHM6IFZhbGlkYXRpb25FcnJvcnMpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGVycm9yLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIHZhbHVlOiBkZXRhaWxzW1wicmVxdWlyZWRMZW5ndGhcIl1cbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgTWluRXJyb3JUcmFuc2Zvcm1lcjogRXJyb3JUcmFuc2Zvcm1lciA9IChlcnJvcjogc3RyaW5nLCBkZXRhaWxzOiBWYWxpZGF0aW9uRXJyb3JzKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBlcnJvcixcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBtaW46IGRldGFpbHNbXCJtaW5cIl0sXG4gICAgICAgICAgICBhY3R1YWw6IGRldGFpbHNbXCJhY3R1YWxcIl1cbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgTWF4RXJyb3JUcmFuc2Zvcm1lcjogRXJyb3JUcmFuc2Zvcm1lciA9IChlcnJvcjogc3RyaW5nLCBkZXRhaWxzOiBWYWxpZGF0aW9uRXJyb3JzKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBlcnJvcixcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBtYXg6IGRldGFpbHNbXCJtYXhcIl0sXG4gICAgICAgICAgICBhY3R1YWw6IGRldGFpbHNbXCJhY3R1YWxcIl1cbiAgICAgICAgfVxuICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdEVycm9yVHJhbnNmb3JtZXJzOiBFcnJvclRyYW5zZm9ybWVycyA9IHtcbiAgICBwYXR0ZXJuOiBQYXR0ZXJuRXJyb3JUcmFuc2Zvcm1lcixcbiAgICBtYXNrOiBNYXNrRXJyb3JUcmFuc2Zvcm1lcixcbiAgICBtaW5sZW5ndGg6IExlbmd0aEVycm9yVHJhbnNmb3JtZXIsXG4gICAgbWF4bGVuZ3RoOiBMZW5ndGhFcnJvclRyYW5zZm9ybWVyLFxuICAgIG1pbjogTWluRXJyb3JUcmFuc2Zvcm1lcixcbiAgICBtYXg6IE1heEVycm9yVHJhbnNmb3JtZXJcbn07XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItdHJhbnNsYXRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2Zvcm0tZmllbGQtZXJyb3IvZXJyb3ItdHJhbnNsYXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgRXJyb3JUcmFuc2xhdGVyID0gKGtleTogc3RyaW5nLCBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiBzdHJpbmc7XG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { DestroyRef, Directive, ElementRef, inject, ViewContainerRef } from "@angular/core";
2
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
3
+ import { MatFormField } from "@angular/material/form-field";
4
+ import { combineLatest } from "rxjs";
5
+ import { NiceFormErrorComponent } from "./form-field-error";
6
+ import { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from "./constant";
7
+ import * as i0 from "@angular/core";
8
+ export class NiceFormFieldErrorDirective {
9
+ destroyRef = inject(DestroyRef);
10
+ elementRef = inject(ElementRef);
11
+ viewContainerRef = inject(ViewContainerRef);
12
+ formField = inject(MatFormField);
13
+ transformers = inject(NICE_FORM_FIELD_ERROR_TRANSFORMERS);
14
+ translater = inject(NICE_FORM_FIELD_ERROR_TRANSLATER);
15
+ ref = null;
16
+ control = null;
17
+ onChange = () => {
18
+ if (this.control === null || this.control.pending) {
19
+ return;
20
+ }
21
+ if (this.control.valid || this.control.untouched) {
22
+ this.setError("", {});
23
+ return;
24
+ }
25
+ for (const error in this.control.errors) {
26
+ const details = this.control.errors[error];
27
+ if (typeof details !== "object") {
28
+ this.setError(`errors.${error}`, {});
29
+ continue;
30
+ }
31
+ const transformer = this.transformers[error];
32
+ if (!transformer) {
33
+ this.setError(`errors.${error}`, {});
34
+ continue;
35
+ }
36
+ const { key, params } = transformer(error, details);
37
+ this.setError(`errors.${key}`, params ?? {});
38
+ }
39
+ };
40
+ ngAfterViewInit() {
41
+ this.control = this.formField._control.ngControl;
42
+ if (this.control !== null && this.control.statusChanges !== null) {
43
+ combineLatest([this.formField._control.stateChanges, this.control.statusChanges])
44
+ .pipe(takeUntilDestroyed(this.destroyRef))
45
+ .subscribe(() => this.onChange());
46
+ }
47
+ }
48
+ setError(text, params) {
49
+ if (!this.ref) {
50
+ this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);
51
+ if (this.elementRef.nativeElement.getElementsByClassName("mat-mdc-form-field-subscript-wrapper").item(0)) {
52
+ const hint = this.elementRef.nativeElement.getElementsByClassName("mat-mdc-form-field-hint").item(0);
53
+ this.ref.location.nativeElement.style.position = "absolute";
54
+ this.ref.location.nativeElement.style.top = hint ? "16px" : "0";
55
+ const wrapper = this.elementRef.nativeElement
56
+ .getElementsByClassName("mat-mdc-form-field-subscript-wrapper")
57
+ .item(0);
58
+ if (hint) {
59
+ wrapper.classList.add("override-height");
60
+ }
61
+ wrapper.prepend(this.ref.location.nativeElement);
62
+ }
63
+ }
64
+ if (text) {
65
+ this.elementRef.nativeElement.classList.add("form-error-show");
66
+ }
67
+ else {
68
+ this.elementRef.nativeElement.classList.remove("form-error-show");
69
+ }
70
+ this.ref.instance.error = this.translater(text, params);
71
+ }
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
73
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
76
+ type: Directive,
77
+ args: [{ selector: "[niceFormFieldError]", standalone: true }]
78
+ }] });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2Zvcm0tZmllbGQtZXJyb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzVELE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFHbEcsTUFBTSxPQUFPLDJCQUEyQjtJQUNuQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxZQUFZLEdBQUcsTUFBTSxDQUFvQixrQ0FBa0MsQ0FBQyxDQUFDO0lBQzdFLFVBQVUsR0FBRyxNQUFNLENBQWtCLGdDQUFnQyxDQUFDLENBQUM7SUFFaEYsR0FBRyxHQUFnRCxJQUFJLENBQUU7SUFDekQsT0FBTyxHQUFnRCxJQUFJLENBQUM7SUFFN0QsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDaEQsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNyQyxTQUFTO1lBQ2IsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDckMsU0FBUztZQUNiLENBQUM7WUFFRCxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQyxDQUFBO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUVqRCxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9ELGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2lCQUM1RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRLENBQUMsSUFBWSxFQUFFLE1BQThCO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUN6RSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLHNDQUFzQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFnQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO2dCQUMvRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxhQUFnQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFFcEYsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO3FCQUN4QyxzQkFBc0IsQ0FBQyxzQ0FBc0MsQ0FBQztxQkFDOUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNiLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1AsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztnQkFFRCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRSxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7d0dBM0VRLDJCQUEyQjs0RkFBM0IsMkJBQTJCOzs0RkFBM0IsMkJBQTJCO2tCQUR2QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcFwiO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IE5pY2VGb3JtRXJyb3JDb21wb25lbnQgfSBmcm9tIFwiLi9mb3JtLWZpZWxkLWVycm9yXCI7XG5pbXBvcnQgeyBFcnJvclRyYW5zZm9ybWVycyB9IGZyb20gXCIuL2Vycm9yLXRyYW5zZm9ybWVyXCI7XG5pbXBvcnQgeyBFcnJvclRyYW5zbGF0ZXIgfSBmcm9tIFwiLi9lcnJvci10cmFuc2xhdGVyXCI7XG5pbXBvcnQgeyBOSUNFX0ZPUk1fRklFTERfRVJST1JfVFJBTlNGT1JNRVJTLCBOSUNFX0ZPUk1fRklFTERfRVJST1JfVFJBTlNMQVRFUiB9IGZyb20gXCIuL2NvbnN0YW50XCI7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogXCJbbmljZUZvcm1GaWVsZEVycm9yXVwiLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmljZUZvcm1GaWVsZEVycm9yRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtRmllbGQgPSBpbmplY3QoTWF0Rm9ybUZpZWxkKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zZm9ybWVycyA9IGluamVjdDxFcnJvclRyYW5zZm9ybWVycz4oTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TRk9STUVSUyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVyID0gaW5qZWN0PEVycm9yVHJhbnNsYXRlcj4oTklDRV9GT1JNX0ZJRUxEX0VSUk9SX1RSQU5TTEFURVIpO1xuXG4gICAgcHJpdmF0ZSByZWY6IENvbXBvbmVudFJlZjxOaWNlRm9ybUVycm9yQ29tcG9uZW50PiB8IG51bGwgPSBudWxsIDtcbiAgICBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbCB8IEFic3RyYWN0Q29udHJvbERpcmVjdGl2ZSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sID09PSBudWxsIHx8IHRoaXMuY29udHJvbC5wZW5kaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250cm9sLnZhbGlkIHx8IHRoaXMuY29udHJvbC51bnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoXCJcIiwge30pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBlcnJvciBpbiB0aGlzLmNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zdCBkZXRhaWxzID0gdGhpcy5jb250cm9sLmVycm9yc1tlcnJvcl07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRldGFpbHMgIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEVycm9yKGBlcnJvcnMuJHtlcnJvcn1gLCB7fSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gdGhpcy50cmFuc2Zvcm1lcnNbZXJyb3JdO1xuICAgICAgICAgICAgaWYgKCF0cmFuc2Zvcm1lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RXJyb3IoYGVycm9ycy4ke2Vycm9yfWAsIHt9KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgeyBrZXksIHBhcmFtcyB9ID0gdHJhbnNmb3JtZXIoZXJyb3IsIGRldGFpbHMpO1xuICAgICAgICAgICAgdGhpcy5zZXRFcnJvcihgZXJyb3JzLiR7a2V5fWAsIHBhcmFtcyA/PyB7fSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmZvcm1GaWVsZC5fY29udHJvbC5uZ0NvbnRyb2w7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCAhPT0gbnVsbCAmJiB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5mb3JtRmllbGQuX2NvbnRyb2wuc3RhdGVDaGFuZ2VzLCB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlc10pXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uQ2hhbmdlKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yKHRleHQ6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5yZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChOaWNlRm9ybUVycm9yQ29tcG9uZW50KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyXCIpLml0ZW0oMCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoaW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50XCIpLml0ZW0oMCk7XG4gICAgICAgICAgICAgICAgKHRoaXMucmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTERpdkVsZW1lbnQpLnN0eWxlLnBvc2l0aW9uID0gXCJhYnNvbHV0ZVwiO1xuICAgICAgICAgICAgICAgICh0aGlzLnJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50KS5zdHlsZS50b3AgPSBoaW50ID8gXCIxNnB4XCIgOiBcIjBcIjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcIm1hdC1tZGMtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlclwiKVxuICAgICAgICAgICAgICAgICAgICAuaXRlbSgwKTtcbiAgICAgICAgICAgICAgICBpZiAoaGludCkge1xuICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmNsYXNzTGlzdC5hZGQoXCJvdmVycmlkZS1oZWlnaHRcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgd3JhcHBlci5wcmVwZW5kKHRoaXMucmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJmb3JtLWVycm9yLXNob3dcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiZm9ybS1lcnJvci1zaG93XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWYuaW5zdGFuY2UuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZXIodGV4dCwgcGFyYW1zKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { animate, style, transition, trigger } from "@angular/animations";
2
+ import { Component, Input, ViewEncapsulation } from "@angular/core";
3
+ import { MatError } from "@angular/material/form-field";
4
+ import * as i0 from "@angular/core";
5
+ export class NiceFormErrorComponent {
6
+ message = "";
7
+ increment = 0;
8
+ set error(value) {
9
+ if (value) {
10
+ if (this.message !== value) {
11
+ this.increment++;
12
+ }
13
+ }
14
+ this.message = value;
15
+ }
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
18
+ @if (message) {
19
+ <div [@animation]="increment">
20
+ <mat-error>{{ message }}</mat-error>
21
+ </div>
22
+ }
23
+ `, isInline: true, styles: [".form-error-show .mat-mdc-form-field-subscript-wrapper.override-height:before{height:32px!important}\n"], dependencies: [{ kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }], animations: [
24
+ trigger("animation", [
25
+ transition(":increment", [style({ opacity: 0 }), animate("200ms ease-in", style({ opacity: 1 }))]),
26
+ transition(":enter", [
27
+ style({ opacity: 0, transform: "translateY(-1rem)" }),
28
+ animate("200ms ease-in", style({ opacity: 1, transform: "translateY(0)" }))
29
+ ]),
30
+ transition(":leave", [animate("200ms ease-out", style({ opacity: 0, transform: "translateY(-1rem)" }))])
31
+ ])
32
+ ], encapsulation: i0.ViewEncapsulation.None });
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: "nice-form-field-error", template: `
37
+ @if (message) {
38
+ <div [@animation]="increment">
39
+ <mat-error>{{ message }}</mat-error>
40
+ </div>
41
+ }
42
+ `, animations: [
43
+ trigger("animation", [
44
+ transition(":increment", [style({ opacity: 0 }), animate("200ms ease-in", style({ opacity: 1 }))]),
45
+ transition(":enter", [
46
+ style({ opacity: 0, transform: "translateY(-1rem)" }),
47
+ animate("200ms ease-in", style({ opacity: 1, transform: "translateY(0)" }))
48
+ ]),
49
+ transition(":leave", [animate("200ms ease-out", style({ opacity: 0, transform: "translateY(-1rem)" }))])
50
+ ])
51
+ ], encapsulation: ViewEncapsulation.None, imports: [
52
+ MatError
53
+ ], standalone: true, styles: [".form-error-show .mat-mdc-form-field-subscript-wrapper.override-height:before{height:32px!important}\n"] }]
54
+ }], propDecorators: { error: [{
55
+ type: Input
56
+ }] } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2Zvcm0tZmllbGQtZXJyb3IvZm9ybS1maWVsZC1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQTRCeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2IsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUVyQixJQUNXLEtBQUssQ0FBQyxLQUFhO1FBQzFCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7d0dBWlEsc0JBQXNCOzRGQUF0QixzQkFBc0IsNkdBeEJyQjs7Ozs7O0tBTVQsZ0xBY0csUUFBUSxvRUFaQTtZQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUU7Z0JBQ2pCLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbEcsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztvQkFDckQsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO2lCQUM5RSxDQUFDO2dCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzRyxDQUFDO1NBQ0w7OzRGQU9RLHNCQUFzQjtrQkExQmxDLFNBQVM7K0JBQ0ksdUJBQXVCLFlBQ3ZCOzs7Ozs7S0FNVCxjQUVXO3dCQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ2pCLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDbEcsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztnQ0FDckQsT0FBTyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUM5RSxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDM0csQ0FBQztxQkFDTCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNMLFFBQVE7cUJBQ1gsY0FDVyxJQUFJOzhCQU9MLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdEVycm9yIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGRcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwibmljZS1mb3JtLWZpZWxkLWVycm9yXCIsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgQGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICA8ZGl2IFtAYW5pbWF0aW9uXT1cImluY3JlbWVudFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3sgbWVzc2FnZSB9fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICBgLFxuICAgIHN0eWxlVXJsczogW1wiLi9mb3JtLWZpZWxkLWVycm9yLnNjc3NcIl0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKFwiYW5pbWF0aW9uXCIsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCI6aW5jcmVtZW50XCIsIFtzdHlsZSh7IG9wYWNpdHk6IDAgfSksIGFuaW1hdGUoXCIyMDBtcyBlYXNlLWluXCIsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSldKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oXCI6ZW50ZXJcIiwgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoLTFyZW0pXCIgfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcIjIwMG1zIGVhc2UtaW5cIiwgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgwKVwiIH0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKFwiOmxlYXZlXCIsIFthbmltYXRlKFwiMjAwbXMgZWFzZS1vdXRcIiwgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgtMXJlbSlcIiB9KSldKVxuICAgICAgICBdKVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdEVycm9yXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIE5pY2VGb3JtRXJyb3JDb21wb25lbnQge1xuICAgIHB1YmxpYyBtZXNzYWdlID0gXCJcIjtcbiAgICBwdWJsaWMgaW5jcmVtZW50ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBlcnJvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubWVzc2FnZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluY3JlbWVudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IHZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from "./error-transformer";
2
+ export * from "./error-translater";
3
+ export * from "./form-field-error.directive";
4
+ export * from "./form-field-error";
5
+ export * from "./provider";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9lcnJvci10cmFuc2Zvcm1lclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3ItdHJhbnNsYXRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybS1maWVsZC1lcnJvci5kaXJlY3RpdmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Zvcm0tZmllbGQtZXJyb3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyXCI7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2Zvcm0tZmllbGQtZXJyb3Ivb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFjdG9yeVByb3ZpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVycm9yVHJhbnNsYXRlciB9IGZyb20gXCIuL2Vycm9yLXRyYW5zbGF0ZXJcIjtcbmltcG9ydCB7IEVycm9yVHJhbnNmb3JtZXJzIH0gZnJvbSBcIi4vZXJyb3ItdHJhbnNmb3JtZXJcIjtcblxuZXhwb3J0IHR5cGUgTmljZUZvcm1GaWVsZEVycm9yc09wdGlvbnMgPSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0cmFuc2xhdGVyOiBPbWl0PEZhY3RvcnlQcm92aWRlciwgXCJwcm92aWRlXCIgfCBcIm11bHRpXCI+ICYgeyB1c2VGYWN0b3J5OiAoLi4uYXJnczogYW55W10pID0+IEVycm9yVHJhbnNsYXRlciB9O1xuICAgIGVycm9yVHJhbnNmb3JtZXJzPzogRXJyb3JUcmFuc2Zvcm1lcnM7XG59O1xuIl19
@@ -0,0 +1,18 @@
1
+ import { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from "./constant";
2
+ import { DefaultErrorTransformers } from "./error-transformer";
3
+ export function provideFormFieldError(options) {
4
+ return [
5
+ {
6
+ provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,
7
+ useValue: {
8
+ ...DefaultErrorTransformers,
9
+ ...options.errorTransformers
10
+ }
11
+ },
12
+ {
13
+ provide: NICE_FORM_FIELD_ERROR_TRANSLATER,
14
+ ...options.translater
15
+ }
16
+ ];
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVsRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsT0FBbUM7SUFDckUsT0FBTztRQUNIO1lBQ0ksT0FBTyxFQUFFLGtDQUFrQztZQUMzQyxRQUFRLEVBQUU7Z0JBQ04sR0FBRyx3QkFBd0I7Z0JBQzNCLEdBQUcsT0FBTyxDQUFDLGlCQUFpQjthQUMvQjtTQUNKO1FBQ0Q7WUFDSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLEdBQUcsT0FBTyxDQUFDLFVBQVU7U0FDeEI7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0ZPUk1FUlMsIE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0xBVEVSIH0gZnJvbSBcIi4vY29uc3RhbnRcIjtcbmltcG9ydCB7IE5pY2VGb3JtRmllbGRFcnJvcnNPcHRpb25zIH0gZnJvbSBcIi4vb3B0aW9uc1wiO1xuaW1wb3J0IHsgRGVmYXVsdEVycm9yVHJhbnNmb3JtZXJzIH0gZnJvbSBcIi4vZXJyb3ItdHJhbnNmb3JtZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVGb3JtRmllbGRFcnJvcihvcHRpb25zOiBOaWNlRm9ybUZpZWxkRXJyb3JzT3B0aW9ucyk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0ZPUk1FUlMsXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIC4uLkRlZmF1bHRFcnJvclRyYW5zZm9ybWVycyxcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLmVycm9yVHJhbnNmb3JtZXJzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5JQ0VfRk9STV9GSUVMRF9FUlJPUl9UUkFOU0xBVEVSLFxuICAgICAgICAgICAgLi4ub3B0aW9ucy50cmFuc2xhdGVyXG4gICAgICAgIH1cbiAgICBdO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdXJzeXZlLW5neC1tYXRlcmlhbC1jb21wb25lbnRzLWZvcm0tZmllbGQtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9mb3JtLWZpZWxkLWVycm9yL3JlY3Vyc3l2ZS1uZ3gtbWF0ZXJpYWwtY29tcG9uZW50cy1mb3JtLWZpZWxkLWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const NICE_LOADING_OPTIONS = new InjectionToken("nice_loading_options");
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL2NvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IE5JQ0VfTE9BRElOR19PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuKFwibmljZV9sb2FkaW5nX29wdGlvbnNcIik7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from "./loading";
2
+ export * from "./loading-spinner";
3
+ export * from "./provider";
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sb2FkaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9sb2FkaW5nLXNwaW5uZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyXCI7XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { Component, input } from "@angular/core";
2
+ import { MatProgressSpinner } from "@angular/material/progress-spinner";
3
+ import * as i0 from "@angular/core";
4
+ export class NiceLoadingSpinner {
5
+ loading = input(false);
6
+ mode = input("indeterminate");
7
+ diameter = input(50);
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: NiceLoadingSpinner, isStandalone: true, selector: "nice-loading-spinner", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingSpinner, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: "nice-loading-spinner", imports: [MatProgressSpinner], standalone: true, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"] }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1zcGlubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWNvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLXNwaW5uZXIudHMiLCIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL2xvYWRpbmctc3Bpbm5lci5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFTN0YsTUFBTSxPQUFPLGtCQUFrQjtJQUNYLE9BQU8sR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBc0IsZUFBZSxDQUFDLENBQUM7SUFDbkQsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQzt3R0FINUIsa0JBQWtCOzRGQUFsQixrQkFBa0IsZ2RDVi9CLDJFQUNBLHVGRE1jLGtCQUFrQjs7NEZBR25CLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxzQkFBc0IsV0FHdkIsQ0FBQyxrQkFBa0IsQ0FBQyxjQUNqQixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXIsIFByb2dyZXNzU3Bpbm5lck1vZGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lclwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJuaWNlLWxvYWRpbmctc3Bpbm5lclwiLFxuICAgIHRlbXBsYXRlVXJsOiBcImxvYWRpbmctc3Bpbm5lci5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2xvYWRpbmctc3Bpbm5lci5zY3NzXCJdLFxuICAgIGltcG9ydHM6IFtNYXRQcm9ncmVzc1NwaW5uZXJdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTmljZUxvYWRpbmdTcGlubmVyIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZSA9IGlucHV0PFByb2dyZXNzU3Bpbm5lck1vZGU+KFwiaW5kZXRlcm1pbmF0ZVwiKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlhbWV0ZXIgPSBpbnB1dCg1MCk7XG59XG4iLCI8bWF0LXNwaW5uZXIgW2RpYW1ldGVyXT1cImRpYW1ldGVyKClcIiBbbW9kZV09XCJtb2RlKClcIj48L21hdC1zcGlubmVyPlxuIl19
@@ -0,0 +1,45 @@
1
+ import { Overlay } from "@angular/cdk/overlay";
2
+ import { ComponentPortal } from "@angular/cdk/portal";
3
+ import { Directive, effect, inject, input } from "@angular/core";
4
+ import { NICE_LOADING_OPTIONS } from "./constant";
5
+ import { NiceLoadingSpinner } from "./loading-spinner";
6
+ import * as i0 from "@angular/core";
7
+ export class NiceLoadingDirective {
8
+ options = inject(NICE_LOADING_OPTIONS, { optional: true });
9
+ overlay = inject(Overlay);
10
+ loading = input(null, { alias: "niceLoadingOverlay" });
11
+ overlayRef = null;
12
+ _loading = false;
13
+ constructor() {
14
+ effect(() => {
15
+ if (this.loading() === this._loading) {
16
+ return;
17
+ }
18
+ this._loading = this.loading() ?? false;
19
+ if (!this.overlayRef) {
20
+ this.overlayRef = this.overlay.create({
21
+ positionStrategy: this.overlay
22
+ .position()
23
+ .global()
24
+ .centerHorizontally()
25
+ .centerVertically(),
26
+ hasBackdrop: true,
27
+ panelClass: "nice-loading-overlay"
28
+ });
29
+ }
30
+ if (this._loading) {
31
+ this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));
32
+ }
33
+ else {
34
+ this.overlayRef.detach();
35
+ }
36
+ });
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NiceLoadingDirective, isStandalone: true, selector: "[niceLoadingOverlay]", inputs: { loading: { classPropertyName: "loading", publicName: "niceLoadingOverlay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingDirective, decorators: [{
42
+ type: Directive,
43
+ args: [{ selector: "[niceLoadingOverlay]", standalone: true }]
44
+ }], ctorParameters: () => [] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUl2RCxNQUFNLE9BQU8sb0JBQW9CO0lBQ1osT0FBTyxHQUFHLE1BQU0sQ0FBcUIsb0JBQW9CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMvRSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBDLE9BQU8sR0FBRyxLQUFLLENBQWlCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFFdEUsVUFBVSxHQUFzQixJQUFJLENBQUM7SUFDckMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV6QjtRQUNJLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25DLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ2xDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPO3lCQUN6QixRQUFRLEVBQUU7eUJBQ1YsTUFBTSxFQUFFO3lCQUNSLGtCQUFrQixFQUFFO3lCQUNwQixnQkFBZ0IsRUFBRTtvQkFDdkIsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLFVBQVUsRUFBRSxzQkFBc0I7aUJBQ3JDLENBQUMsQ0FBQztZQUNQLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLElBQUksa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQ25HLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBbENRLG9CQUFvQjs0RkFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTklDRV9MT0FESU5HX09QVElPTlMgfSBmcm9tIFwiLi9jb25zdGFudFwiO1xuaW1wb3J0IHsgTmljZUxvYWRpbmdTcGlubmVyIH0gZnJvbSBcIi4vbG9hZGluZy1zcGlubmVyXCI7XG5pbXBvcnQgeyBOaWNlTG9hZGluZ09wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zXCI7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogXCJbbmljZUxvYWRpbmdPdmVybGF5XVwiLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTmljZUxvYWRpbmdEaXJlY3RpdmUge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdDxOaWNlTG9hZGluZ09wdGlvbnM+KE5JQ0VfTE9BRElOR19PUFRJT05TLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcblxuICAgIHB1YmxpYyBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiB8IG51bGw+KG51bGwsIHsgYWxpYXM6IFwibmljZUxvYWRpbmdPdmVybGF5XCIgfSk7XG5cbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9sb2FkaW5nID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvYWRpbmcoKSA9PT0gdGhpcy5fbG9hZGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fbG9hZGluZyA9IHRoaXMubG9hZGluZygpID8/IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAgICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmdsb2JhbCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiBcIm5pY2UtbG9hZGluZy1vdmVybGF5XCJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX2xvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5vcHRpb25zPy5jdXN0b21Mb2FkaW5nID8/IE5pY2VMb2FkaW5nU3Bpbm5lcikpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1jb21wb25lbnRzL2xvYWRpbmcvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbmV4cG9ydCB0eXBlIE5pY2VMb2FkaW5nT3B0aW9ucyA9IHtcbiAgICBjdXN0b21Mb2FkaW5nPzogVHlwZTx1bmtub3duPjtcbn07XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { NICE_LOADING_OPTIONS } from "./constant";
2
+ export function provideNiceLoadingOptions(options) {
3
+ return {
4
+ provide: NICE_LOADING_OPTIONS,
5
+ useValue: options
6
+ };
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVsRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBMkI7SUFDakUsT0FBTztRQUNILE9BQU8sRUFBRSxvQkFBb0I7UUFDN0IsUUFBUSxFQUFFLE9BQU87S0FDcEIsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOaWNlTG9hZGluZ09wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zXCI7XG5pbXBvcnQgeyBOSUNFX0xPQURJTkdfT1BUSU9OUyB9IGZyb20gXCIuL2NvbnN0YW50XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlTmljZUxvYWRpbmdPcHRpb25zKG9wdGlvbnM6IE5pY2VMb2FkaW5nT3B0aW9ucyk6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBOSUNFX0xPQURJTkdfT1BUSU9OUyxcbiAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnNcbiAgICB9O1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdXJzeXZlLW5neC1tYXRlcmlhbC1jb21wb25lbnRzLWxvYWRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwtY29tcG9uZW50cy9sb2FkaW5nL3JlY3Vyc3l2ZS1uZ3gtbWF0ZXJpYWwtY29tcG9uZW50cy1sb2FkaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,208 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, ViewEncapsulation, Input, InjectionToken, inject, DestroyRef, ElementRef, ViewContainerRef, Directive } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { MatError, MatFormField } from '@angular/material/form-field';
5
+ import { combineLatest } from 'rxjs';
6
+ import { trigger, transition, style, animate } from '@angular/animations';
7
+
8
+ const PatternErrorTransformer = (error, details) => {
9
+ if (details["requiredPattern"]) {
10
+ return {
11
+ key: details["requiredPattern"]
12
+ };
13
+ }
14
+ return { key: error };
15
+ };
16
+ const MaskErrorTransformer = (error, details) => {
17
+ if (details["requiredMask"]) {
18
+ return {
19
+ key: details["requiredMask"]
20
+ };
21
+ }
22
+ return { key: error };
23
+ };
24
+ const LengthErrorTransformer = (error, details) => {
25
+ return {
26
+ key: error,
27
+ params: {
28
+ value: details["requiredLength"]
29
+ }
30
+ };
31
+ };
32
+ const MinErrorTransformer = (error, details) => {
33
+ return {
34
+ key: error,
35
+ params: {
36
+ min: details["min"],
37
+ actual: details["actual"]
38
+ }
39
+ };
40
+ };
41
+ const MaxErrorTransformer = (error, details) => {
42
+ return {
43
+ key: error,
44
+ params: {
45
+ max: details["max"],
46
+ actual: details["actual"]
47
+ }
48
+ };
49
+ };
50
+ const DefaultErrorTransformers = {
51
+ pattern: PatternErrorTransformer,
52
+ mask: MaskErrorTransformer,
53
+ minlength: LengthErrorTransformer,
54
+ maxlength: LengthErrorTransformer,
55
+ min: MinErrorTransformer,
56
+ max: MaxErrorTransformer
57
+ };
58
+
59
+ class NiceFormErrorComponent {
60
+ message = "";
61
+ increment = 0;
62
+ set error(value) {
63
+ if (value) {
64
+ if (this.message !== value) {
65
+ this.increment++;
66
+ }
67
+ }
68
+ this.message = value;
69
+ }
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NiceFormErrorComponent, isStandalone: true, selector: "nice-form-field-error", inputs: { error: "error" }, ngImport: i0, template: `
72
+ @if (message) {
73
+ <div [@animation]="increment">
74
+ <mat-error>{{ message }}</mat-error>
75
+ </div>
76
+ }
77
+ `, isInline: true, styles: [".form-error-show .mat-mdc-form-field-subscript-wrapper.override-height:before{height:32px!important}\n"], dependencies: [{ kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }], animations: [
78
+ trigger("animation", [
79
+ transition(":increment", [style({ opacity: 0 }), animate("200ms ease-in", style({ opacity: 1 }))]),
80
+ transition(":enter", [
81
+ style({ opacity: 0, transform: "translateY(-1rem)" }),
82
+ animate("200ms ease-in", style({ opacity: 1, transform: "translateY(0)" }))
83
+ ]),
84
+ transition(":leave", [animate("200ms ease-out", style({ opacity: 0, transform: "translateY(-1rem)" }))])
85
+ ])
86
+ ], encapsulation: i0.ViewEncapsulation.None });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormErrorComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: "nice-form-field-error", template: `
91
+ @if (message) {
92
+ <div [@animation]="increment">
93
+ <mat-error>{{ message }}</mat-error>
94
+ </div>
95
+ }
96
+ `, animations: [
97
+ trigger("animation", [
98
+ transition(":increment", [style({ opacity: 0 }), animate("200ms ease-in", style({ opacity: 1 }))]),
99
+ transition(":enter", [
100
+ style({ opacity: 0, transform: "translateY(-1rem)" }),
101
+ animate("200ms ease-in", style({ opacity: 1, transform: "translateY(0)" }))
102
+ ]),
103
+ transition(":leave", [animate("200ms ease-out", style({ opacity: 0, transform: "translateY(-1rem)" }))])
104
+ ])
105
+ ], encapsulation: ViewEncapsulation.None, imports: [
106
+ MatError
107
+ ], standalone: true, styles: [".form-error-show .mat-mdc-form-field-subscript-wrapper.override-height:before{height:32px!important}\n"] }]
108
+ }], propDecorators: { error: [{
109
+ type: Input
110
+ }] } });
111
+
112
+ const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken("nice_form_field_error_transformers");
113
+ const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken("nice_form_field_error_translater");
114
+
115
+ class NiceFormFieldErrorDirective {
116
+ destroyRef = inject(DestroyRef);
117
+ elementRef = inject(ElementRef);
118
+ viewContainerRef = inject(ViewContainerRef);
119
+ formField = inject(MatFormField);
120
+ transformers = inject(NICE_FORM_FIELD_ERROR_TRANSFORMERS);
121
+ translater = inject(NICE_FORM_FIELD_ERROR_TRANSLATER);
122
+ ref = null;
123
+ control = null;
124
+ onChange = () => {
125
+ if (this.control === null || this.control.pending) {
126
+ return;
127
+ }
128
+ if (this.control.valid || this.control.untouched) {
129
+ this.setError("", {});
130
+ return;
131
+ }
132
+ for (const error in this.control.errors) {
133
+ const details = this.control.errors[error];
134
+ if (typeof details !== "object") {
135
+ this.setError(`errors.${error}`, {});
136
+ continue;
137
+ }
138
+ const transformer = this.transformers[error];
139
+ if (!transformer) {
140
+ this.setError(`errors.${error}`, {});
141
+ continue;
142
+ }
143
+ const { key, params } = transformer(error, details);
144
+ this.setError(`errors.${key}`, params ?? {});
145
+ }
146
+ };
147
+ ngAfterViewInit() {
148
+ this.control = this.formField._control.ngControl;
149
+ if (this.control !== null && this.control.statusChanges !== null) {
150
+ combineLatest([this.formField._control.stateChanges, this.control.statusChanges])
151
+ .pipe(takeUntilDestroyed(this.destroyRef))
152
+ .subscribe(() => this.onChange());
153
+ }
154
+ }
155
+ setError(text, params) {
156
+ if (!this.ref) {
157
+ this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);
158
+ if (this.elementRef.nativeElement.getElementsByClassName("mat-mdc-form-field-subscript-wrapper").item(0)) {
159
+ const hint = this.elementRef.nativeElement.getElementsByClassName("mat-mdc-form-field-hint").item(0);
160
+ this.ref.location.nativeElement.style.position = "absolute";
161
+ this.ref.location.nativeElement.style.top = hint ? "16px" : "0";
162
+ const wrapper = this.elementRef.nativeElement
163
+ .getElementsByClassName("mat-mdc-form-field-subscript-wrapper")
164
+ .item(0);
165
+ if (hint) {
166
+ wrapper.classList.add("override-height");
167
+ }
168
+ wrapper.prepend(this.ref.location.nativeElement);
169
+ }
170
+ }
171
+ if (text) {
172
+ this.elementRef.nativeElement.classList.add("form-error-show");
173
+ }
174
+ else {
175
+ this.elementRef.nativeElement.classList.remove("form-error-show");
176
+ }
177
+ this.ref.instance.error = this.translater(text, params);
178
+ }
179
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormFieldErrorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
180
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: NiceFormFieldErrorDirective, isStandalone: true, selector: "[niceFormFieldError]", ngImport: i0 });
181
+ }
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceFormFieldErrorDirective, decorators: [{
183
+ type: Directive,
184
+ args: [{ selector: "[niceFormFieldError]", standalone: true }]
185
+ }] });
186
+
187
+ function provideFormFieldError(options) {
188
+ return [
189
+ {
190
+ provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,
191
+ useValue: {
192
+ ...DefaultErrorTransformers,
193
+ ...options.errorTransformers
194
+ }
195
+ },
196
+ {
197
+ provide: NICE_FORM_FIELD_ERROR_TRANSLATER,
198
+ ...options.translater
199
+ }
200
+ ];
201
+ }
202
+
203
+ /**
204
+ * Generated bundle index. Do not edit.
205
+ */
206
+
207
+ export { DefaultErrorTransformers, LengthErrorTransformer, MaskErrorTransformer, MaxErrorTransformer, MinErrorTransformer, NiceFormErrorComponent, NiceFormFieldErrorDirective, PatternErrorTransformer, provideFormFieldError };
208
+ //# sourceMappingURL=recursyve-ngx-material-components-form-field-error.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursyve-ngx-material-components-form-field-error.mjs","sources":["../../../src/material-components/form-field-error/error-transformer.ts","../../../src/material-components/form-field-error/form-field-error.ts","../../../src/material-components/form-field-error/constant.ts","../../../src/material-components/form-field-error/form-field-error.directive.ts","../../../src/material-components/form-field-error/provider.ts","../../../src/material-components/form-field-error/recursyve-ngx-material-components-form-field-error.ts"],"sourcesContent":["import { ValidationErrors } from \"@angular/forms\";\n\nexport type TransformedError = { key: string; params?: Record<string, string> };\nexport type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;\nexport type ErrorTransformers = Record<string, ErrorTransformer>;\n\nexport const PatternErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredPattern\"]) {\n return {\n key: details[\"requiredPattern\"]\n }\n }\n\n return { key: error };\n};\n\nexport const MaskErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n if (details[\"requiredMask\"]) {\n return {\n key: details[\"requiredMask\"]\n }\n }\n\n return { key: error };\n};\n\nexport const LengthErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n value: details[\"requiredLength\"]\n }\n };\n};\n\nexport const MinErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n min: details[\"min\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const MaxErrorTransformer: ErrorTransformer = (error: string, details: ValidationErrors) => {\n return {\n key: error,\n params: {\n max: details[\"max\"],\n actual: details[\"actual\"]\n }\n };\n};\n\nexport const DefaultErrorTransformers: ErrorTransformers = {\n pattern: PatternErrorTransformer,\n mask: MaskErrorTransformer,\n minlength: LengthErrorTransformer,\n maxlength: LengthErrorTransformer,\n min: MinErrorTransformer,\n max: MaxErrorTransformer\n};\n","import { animate, style, transition, trigger } from \"@angular/animations\";\nimport { Component, Input, ViewEncapsulation } from \"@angular/core\";\nimport { MatError } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"nice-form-field-error\",\n template: `\n @if (message) {\n <div [@animation]=\"increment\">\n <mat-error>{{ message }}</mat-error>\n </div>\n }\n `,\n styleUrls: [\"./form-field-error.scss\"],\n animations: [\n trigger(\"animation\", [\n transition(\":increment\", [style({ opacity: 0 }), animate(\"200ms ease-in\", style({ opacity: 1 }))]),\n transition(\":enter\", [\n style({ opacity: 0, transform: \"translateY(-1rem)\" }),\n animate(\"200ms ease-in\", style({ opacity: 1, transform: \"translateY(0)\" }))\n ]),\n transition(\":leave\", [animate(\"200ms ease-out\", style({ opacity: 0, transform: \"translateY(-1rem)\" }))])\n ])\n ],\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatError\n ],\n standalone: true\n})\nexport class NiceFormErrorComponent {\n public message = \"\";\n public increment = 0;\n\n @Input()\n public set error(value: string) {\n if (value) {\n if (this.message !== value) {\n this.increment++;\n }\n }\n this.message = value;\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_FORM_FIELD_ERROR_TRANSFORMERS = new InjectionToken(\"nice_form_field_error_transformers\");\nexport const NICE_FORM_FIELD_ERROR_TRANSLATER = new InjectionToken(\"nice_form_field_error_translater\");\n","import {\n AfterViewInit,\n ComponentRef,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n ViewContainerRef\n} from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { AbstractControlDirective, NgControl } from \"@angular/forms\";\nimport { MatFormField } from \"@angular/material/form-field\";\nimport { combineLatest } from \"rxjs\";\nimport { NiceFormErrorComponent } from \"./form-field-error\";\nimport { ErrorTransformers } from \"./error-transformer\";\nimport { ErrorTranslater } from \"./error-translater\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\n\n@Directive({ selector: \"[niceFormFieldError]\", standalone: true })\nexport class NiceFormFieldErrorDirective implements AfterViewInit {\n private readonly destroyRef = inject(DestroyRef);\n private readonly elementRef = inject(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly formField = inject(MatFormField);\n private readonly transformers = inject<ErrorTransformers>(NICE_FORM_FIELD_ERROR_TRANSFORMERS);\n private readonly translater = inject<ErrorTranslater>(NICE_FORM_FIELD_ERROR_TRANSLATER);\n\n private ref: ComponentRef<NiceFormErrorComponent> | null = null ;\n private control: NgControl | AbstractControlDirective | null = null;\n\n public onChange = () => {\n if (this.control === null || this.control.pending) {\n return;\n }\n\n if (this.control.valid || this.control.untouched) {\n this.setError(\"\", {});\n return;\n }\n\n for (const error in this.control.errors) {\n const details = this.control.errors[error];\n if (typeof details !== \"object\") {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const transformer = this.transformers[error];\n if (!transformer) {\n this.setError(`errors.${error}`, {});\n continue;\n }\n\n const { key, params } = transformer(error, details);\n this.setError(`errors.${key}`, params ?? {});\n }\n }\n\n public ngAfterViewInit(): void {\n this.control = this.formField._control.ngControl;\n\n if (this.control !== null && this.control.statusChanges !== null) {\n combineLatest([this.formField._control.stateChanges, this.control.statusChanges])\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onChange());\n }\n }\n\n public setError(text: string, params: Record<string, string>): void {\n if (!this.ref) {\n this.ref = this.viewContainerRef.createComponent(NiceFormErrorComponent);\n if (this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\").item(0)) {\n const hint = this.elementRef.nativeElement.getElementsByClassName(\"mat-mdc-form-field-hint\").item(0);\n (this.ref.location.nativeElement as HTMLDivElement).style.position = \"absolute\";\n (this.ref.location.nativeElement as HTMLDivElement).style.top = hint ? \"16px\" : \"0\";\n\n const wrapper = this.elementRef.nativeElement\n .getElementsByClassName(\"mat-mdc-form-field-subscript-wrapper\")\n .item(0);\n if (hint) {\n wrapper.classList.add(\"override-height\");\n }\n\n wrapper.prepend(this.ref.location.nativeElement);\n }\n }\n\n if (text) {\n this.elementRef.nativeElement.classList.add(\"form-error-show\");\n } else {\n this.elementRef.nativeElement.classList.remove(\"form-error-show\");\n }\n\n this.ref.instance.error = this.translater(text, params);\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NICE_FORM_FIELD_ERROR_TRANSFORMERS, NICE_FORM_FIELD_ERROR_TRANSLATER } from \"./constant\";\nimport { NiceFormFieldErrorsOptions } from \"./options\";\nimport { DefaultErrorTransformers } from \"./error-transformer\";\n\nexport function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[] {\n return [\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSFORMERS,\n useValue: {\n ...DefaultErrorTransformers,\n ...options.errorTransformers\n }\n },\n {\n provide: NICE_FORM_FIELD_ERROR_TRANSLATER,\n ...options.translater\n }\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { Overlay } from '@angular/cdk/overlay';
2
+ import { ComponentPortal } from '@angular/cdk/portal';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, input, Component, inject, effect, Directive } from '@angular/core';
5
+ import { MatProgressSpinner } from '@angular/material/progress-spinner';
6
+
7
+ const NICE_LOADING_OPTIONS = new InjectionToken("nice_loading_options");
8
+
9
+ class NiceLoadingSpinner {
10
+ loading = input(false);
11
+ mode = input("indeterminate");
12
+ diameter = input(50);
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: NiceLoadingSpinner, isStandalone: true, selector: "nice-loading-spinner", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, diameter: { classPropertyName: "diameter", publicName: "diameter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingSpinner, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: "nice-loading-spinner", imports: [MatProgressSpinner], standalone: true, template: "<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n", styles: [":host{display:inline-block}\n"] }]
19
+ }] });
20
+
21
+ class NiceLoadingDirective {
22
+ options = inject(NICE_LOADING_OPTIONS, { optional: true });
23
+ overlay = inject(Overlay);
24
+ loading = input(null, { alias: "niceLoadingOverlay" });
25
+ overlayRef = null;
26
+ _loading = false;
27
+ constructor() {
28
+ effect(() => {
29
+ if (this.loading() === this._loading) {
30
+ return;
31
+ }
32
+ this._loading = this.loading() ?? false;
33
+ if (!this.overlayRef) {
34
+ this.overlayRef = this.overlay.create({
35
+ positionStrategy: this.overlay
36
+ .position()
37
+ .global()
38
+ .centerHorizontally()
39
+ .centerVertically(),
40
+ hasBackdrop: true,
41
+ panelClass: "nice-loading-overlay"
42
+ });
43
+ }
44
+ if (this._loading) {
45
+ this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));
46
+ }
47
+ else {
48
+ this.overlayRef.detach();
49
+ }
50
+ });
51
+ }
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
53
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: NiceLoadingDirective, isStandalone: true, selector: "[niceLoadingOverlay]", inputs: { loading: { classPropertyName: "loading", publicName: "niceLoadingOverlay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NiceLoadingDirective, decorators: [{
56
+ type: Directive,
57
+ args: [{ selector: "[niceLoadingOverlay]", standalone: true }]
58
+ }], ctorParameters: () => [] });
59
+
60
+ function provideNiceLoadingOptions(options) {
61
+ return {
62
+ provide: NICE_LOADING_OPTIONS,
63
+ useValue: options
64
+ };
65
+ }
66
+
67
+ /**
68
+ * Generated bundle index. Do not edit.
69
+ */
70
+
71
+ export { NiceLoadingDirective, NiceLoadingSpinner, provideNiceLoadingOptions };
72
+ //# sourceMappingURL=recursyve-ngx-material-components-loading.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursyve-ngx-material-components-loading.mjs","sources":["../../../src/material-components/loading/constant.ts","../../../src/material-components/loading/loading-spinner.ts","../../../src/material-components/loading/loading-spinner.html","../../../src/material-components/loading/loading.ts","../../../src/material-components/loading/provider.ts","../../../src/material-components/loading/recursyve-ngx-material-components-loading.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const NICE_LOADING_OPTIONS = new InjectionToken(\"nice_loading_options\");\n","import { Component, input } from \"@angular/core\";\nimport { MatProgressSpinner, ProgressSpinnerMode } from \"@angular/material/progress-spinner\";\n\n@Component({\n selector: \"nice-loading-spinner\",\n templateUrl: \"loading-spinner.html\",\n styleUrls: [\"./loading-spinner.scss\"],\n imports: [MatProgressSpinner],\n standalone: true\n})\nexport class NiceLoadingSpinner {\n public readonly loading = input<boolean>(false);\n public readonly mode = input<ProgressSpinnerMode>(\"indeterminate\");\n public readonly diameter = input(50);\n}\n","<mat-spinner [diameter]=\"diameter()\" [mode]=\"mode()\"></mat-spinner>\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, effect, ElementRef, inject, input } from \"@angular/core\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\nimport { NiceLoadingSpinner } from \"./loading-spinner\";\nimport { NiceLoadingOptions } from \"./options\";\n\n@Directive({ selector: \"[niceLoadingOverlay]\", standalone: true })\nexport class NiceLoadingDirective {\n private readonly options = inject<NiceLoadingOptions>(NICE_LOADING_OPTIONS, { optional: true });\n private readonly overlay = inject(Overlay);\n\n public loading = input<boolean | null>(null, { alias: \"niceLoadingOverlay\" });\n\n private overlayRef: OverlayRef | null = null;\n private _loading = false;\n\n constructor() {\n effect(() => {\n if (this.loading() === this._loading) {\n return;\n }\n\n this._loading = this.loading() ?? false;\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically(),\n hasBackdrop: true,\n panelClass: \"nice-loading-overlay\"\n });\n }\n\n if (this._loading) {\n this.overlayRef.attach(new ComponentPortal(this.options?.customLoading ?? NiceLoadingSpinner));\n } else {\n this.overlayRef.detach();\n }\n });\n }\n}\n","import { Provider } from \"@angular/core\";\nimport { NiceLoadingOptions } from \"./options\";\nimport { NICE_LOADING_OPTIONS } from \"./constant\";\n\nexport function provideNiceLoadingOptions(options: NiceLoadingOptions): Provider {\n return {\n provide: NICE_LOADING_OPTIONS,\n useValue: options\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const NICE_FORM_FIELD_ERROR_TRANSFORMERS: InjectionToken<unknown>;
3
+ export declare const NICE_FORM_FIELD_ERROR_TRANSLATER: InjectionToken<unknown>;
@@ -0,0 +1,13 @@
1
+ import { ValidationErrors } from "@angular/forms";
2
+ export type TransformedError = {
3
+ key: string;
4
+ params?: Record<string, string>;
5
+ };
6
+ export type ErrorTransformer = (error: string, details: ValidationErrors) => TransformedError;
7
+ export type ErrorTransformers = Record<string, ErrorTransformer>;
8
+ export declare const PatternErrorTransformer: ErrorTransformer;
9
+ export declare const MaskErrorTransformer: ErrorTransformer;
10
+ export declare const LengthErrorTransformer: ErrorTransformer;
11
+ export declare const MinErrorTransformer: ErrorTransformer;
12
+ export declare const MaxErrorTransformer: ErrorTransformer;
13
+ export declare const DefaultErrorTransformers: ErrorTransformers;
@@ -0,0 +1 @@
1
+ export type ErrorTranslater = (key: string, params?: Record<string, string>) => string;
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NiceFormErrorComponent {
3
+ message: string;
4
+ increment: number;
5
+ set error(value: string);
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceFormErrorComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceFormErrorComponent, "nice-form-field-error", never, { "error": { "alias": "error"; "required": false; }; }, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,17 @@
1
+ import { AfterViewInit } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class NiceFormFieldErrorDirective implements AfterViewInit {
4
+ private readonly destroyRef;
5
+ private readonly elementRef;
6
+ private readonly viewContainerRef;
7
+ private readonly formField;
8
+ private readonly transformers;
9
+ private readonly translater;
10
+ private ref;
11
+ private control;
12
+ onChange: () => void;
13
+ ngAfterViewInit(): void;
14
+ setError(text: string, params: Record<string, string>): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceFormFieldErrorDirective, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceFormFieldErrorDirective, "[niceFormFieldError]", never, {}, {}, never, never, true, never>;
17
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./error-transformer";
2
+ export * from "./error-translater";
3
+ export * from "./form-field-error.directive";
4
+ export * from "./form-field-error";
5
+ export * from "./provider";
@@ -0,0 +1,9 @@
1
+ import { FactoryProvider } from "@angular/core";
2
+ import { ErrorTranslater } from "./error-translater";
3
+ import { ErrorTransformers } from "./error-transformer";
4
+ export type NiceFormFieldErrorsOptions = {
5
+ translater: Omit<FactoryProvider, "provide" | "multi"> & {
6
+ useFactory: (...args: any[]) => ErrorTranslater;
7
+ };
8
+ errorTransformers?: ErrorTransformers;
9
+ };
@@ -0,0 +1,3 @@
1
+ import { Provider } from "@angular/core";
2
+ import { NiceFormFieldErrorsOptions } from "./options";
3
+ export declare function provideFormFieldError(options: NiceFormFieldErrorsOptions): Provider[];
@@ -0,0 +1,2 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const NICE_LOADING_OPTIONS: InjectionToken<unknown>;
@@ -0,0 +1,3 @@
1
+ export * from "./loading";
2
+ export * from "./loading-spinner";
3
+ export * from "./provider";
@@ -0,0 +1,9 @@
1
+ import { ProgressSpinnerMode } from "@angular/material/progress-spinner";
2
+ import * as i0 from "@angular/core";
3
+ export declare class NiceLoadingSpinner {
4
+ readonly loading: import("@angular/core").InputSignal<boolean>;
5
+ readonly mode: import("@angular/core").InputSignal<ProgressSpinnerMode>;
6
+ readonly diameter: import("@angular/core").InputSignal<number>;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceLoadingSpinner, never>;
8
+ static ɵcmp: i0.ɵɵComponentDeclaration<NiceLoadingSpinner, "nice-loading-spinner", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
9
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class NiceLoadingDirective {
3
+ private readonly options;
4
+ private readonly overlay;
5
+ loading: import("@angular/core").InputSignal<boolean | null>;
6
+ private overlayRef;
7
+ private _loading;
8
+ constructor();
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<NiceLoadingDirective, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NiceLoadingDirective, "[niceLoadingOverlay]", never, { "loading": { "alias": "niceLoadingOverlay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11
+ }
@@ -0,0 +1,4 @@
1
+ import { Type } from "@angular/core";
2
+ export type NiceLoadingOptions = {
3
+ customLoading?: Type<unknown>;
4
+ };
@@ -0,0 +1,3 @@
1
+ import { Provider } from "@angular/core";
2
+ import { NiceLoadingOptions } from "./options";
3
+ export declare function provideNiceLoadingOptions(options: NiceLoadingOptions): Provider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@recursyve/ngx-material-components",
3
- "version": "18.0.0-beta.2",
3
+ "version": "18.0.0-beta.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"
@@ -21,6 +21,18 @@
21
21
  "esm": "./esm2022/recursyve-ngx-material-components.mjs",
22
22
  "default": "./fesm2022/recursyve-ngx-material-components.mjs"
23
23
  },
24
+ "./form-field-error": {
25
+ "types": "./form-field-error/index.d.ts",
26
+ "esm2022": "./esm2022/form-field-error/recursyve-ngx-material-components-form-field-error.mjs",
27
+ "esm": "./esm2022/form-field-error/recursyve-ngx-material-components-form-field-error.mjs",
28
+ "default": "./fesm2022/recursyve-ngx-material-components-form-field-error.mjs"
29
+ },
30
+ "./loading": {
31
+ "types": "./loading/index.d.ts",
32
+ "esm2022": "./esm2022/loading/recursyve-ngx-material-components-loading.mjs",
33
+ "esm": "./esm2022/loading/recursyve-ngx-material-components-loading.mjs",
34
+ "default": "./fesm2022/recursyve-ngx-material-components-loading.mjs"
35
+ },
24
36
  "./typeahead": {
25
37
  "types": "./typeahead/index.d.ts",
26
38
  "esm2022": "./esm2022/typeahead/recursyve-ngx-material-components-typeahead.mjs",