@wemake4u/form-player-se 1.0.24 → 1.0.25

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 (60) hide show
  1. package/esm2022/lib/dialog/dialog.component.mjs +15 -7
  2. package/esm2022/lib/directives/collapse.directive.mjs +20 -12
  3. package/esm2022/lib/directives/date.directive.mjs +2 -2
  4. package/esm2022/lib/directives/dialog.directive.mjs +2 -1
  5. package/esm2022/lib/directives/dropdown.directive.mjs +23 -5
  6. package/esm2022/lib/directives/formIndex.directive.mjs +25 -0
  7. package/esm2022/lib/directives/grid.directive.mjs +64 -19
  8. package/esm2022/lib/directives/readonly.directive.mjs +101 -0
  9. package/esm2022/lib/dynamic-fields/dynamic-fields.component.mjs +51 -25
  10. package/esm2022/lib/dynamic-form/dynamic-form.component.mjs +80 -92
  11. package/esm2022/lib/locale/locale-de.mjs +3 -2
  12. package/esm2022/lib/locale/locale-en.mjs +3 -2
  13. package/esm2022/lib/locale/locale-es.mjs +3 -2
  14. package/esm2022/lib/locale/locale-fr.mjs +3 -2
  15. package/esm2022/lib/locale/locale-it.mjs +3 -2
  16. package/esm2022/lib/locale/locale-pt.mjs +3 -2
  17. package/esm2022/lib/services/chart.service.mjs +62 -56
  18. package/esm2022/lib/services/dialog.service.mjs +1 -1
  19. package/esm2022/lib/services/feel.service.mjs +186 -19
  20. package/esm2022/lib/services/form.service.mjs +76 -12
  21. package/esm2022/lib/services/formatter.service.mjs +68 -54
  22. package/esm2022/lib/services/function.service.mjs +2 -4
  23. package/esm2022/lib/services/grid.service.mjs +163 -51
  24. package/esm2022/lib/services/metadata.service.mjs +1 -8
  25. package/esm2022/lib/services/programmability.service.mjs +318 -64
  26. package/esm2022/lib/services/weak.service.mjs +3 -5
  27. package/esm2022/lib/utils/groupByRow.mjs +3 -1
  28. package/fesm2022/wemake4u-form-player-se.mjs +1254 -566
  29. package/fesm2022/wemake4u-form-player-se.mjs.map +1 -1
  30. package/lib/components/deleteRowRenderer/deleteRowRenderer.component.d.ts +1 -0
  31. package/lib/components/objectURLRenderer/objectURLRenderer.component.d.ts +1 -0
  32. package/lib/components/setFilter/setFilter.component.d.ts +1 -0
  33. package/lib/dialog/dialog.component.d.ts +11 -0
  34. package/lib/directives/collapse.directive.d.ts +7 -4
  35. package/lib/directives/dropdown.directive.d.ts +4 -0
  36. package/lib/directives/formIndex.directive.d.ts +10 -0
  37. package/lib/directives/grid.directive.d.ts +12 -5
  38. package/lib/directives/{disable.directive.d.ts → readonly.directive.d.ts} +7 -4
  39. package/lib/dynamic-fields/dynamic-fields.component.d.ts +27 -4
  40. package/lib/dynamic-form/dynamic-form.component.d.ts +17 -10
  41. package/lib/locale/locale-de.d.ts +1 -0
  42. package/lib/locale/locale-en.d.ts +1 -0
  43. package/lib/locale/locale-es.d.ts +1 -0
  44. package/lib/locale/locale-fr.d.ts +1 -0
  45. package/lib/locale/locale-it.d.ts +1 -0
  46. package/lib/locale/locale-pt.d.ts +1 -0
  47. package/lib/locale/locale.d.ts +7 -0
  48. package/lib/services/chart.service.d.ts +5 -2
  49. package/lib/services/dialog.service.d.ts +0 -1
  50. package/lib/services/feel.service.d.ts +8 -0
  51. package/lib/services/form.service.d.ts +10 -1
  52. package/lib/services/formatter.service.d.ts +8 -6
  53. package/lib/services/grid.service.d.ts +13 -3
  54. package/lib/services/metadata.service.d.ts +0 -3
  55. package/lib/services/programmability.service.d.ts +28 -4
  56. package/lib/utils/groupByRow.d.ts +2 -0
  57. package/package.json +2 -2
  58. package/esm2022/lib/directives/disable.directive.mjs +0 -90
  59. package/esm2022/lib/directives/disable.path.directive.mjs +0 -40
  60. package/lib/directives/disable.path.directive.d.ts +0 -16
@@ -1,18 +1,27 @@
1
- import { Directive, Input, Host } from '@angular/core';
1
+ import { Directive, Input, Host, inject } from '@angular/core';
2
+ import { of, isObservable } from 'rxjs';
3
+ import { catchError, take, tap, finalize } from 'rxjs/operators';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { DestroyRef } from '@angular/core';
6
+ import { Texts } from '../locale/locale';
7
+ import { localize } from '../locale/localize';
2
8
  import * as i0 from "@angular/core";
3
9
  import * as i1 from "ag-grid-angular";
4
10
  import * as i2 from "../services/grid.service";
11
+ import * as i3 from "@wemake4u/interact";
5
12
  export class GridDirective {
6
13
  grid;
7
14
  gridService;
8
- rowSource = null;
15
+ languageService;
16
+ rowSource;
9
17
  columnDefs = null;
10
18
  formGroup;
11
- language;
12
19
  component = null;
13
- constructor(grid, gridService) {
20
+ destroyRef = inject(DestroyRef);
21
+ constructor(grid, gridService, languageService) {
14
22
  this.grid = grid;
15
23
  this.gridService = gridService;
24
+ this.languageService = languageService;
16
25
  grid.gridReady.subscribe((params) => {
17
26
  this.gridApi = params.api;
18
27
  this.isGridReady = true;
@@ -21,8 +30,23 @@ export class GridDirective {
21
30
  }
22
31
  //https://www.ag-grid.com/angular-data-grid/column-updating-definitions/
23
32
  ngOnChanges(changes) {
24
- if (changes["rowSource"]) {
25
- this.onRowChanges(this.rowSource);
33
+ if (changes['rowSource']) {
34
+ if (isObservable(this.rowSource)) {
35
+ this.showLoading(true);
36
+ this.rowSource
37
+ .pipe(take(1), tap(() => this.showLoadError(false)), catchError(err => {
38
+ this.showLoadError(true);
39
+ return this.noData;
40
+ }), finalize(() => {
41
+ this.showLoading(false);
42
+ }), takeUntilDestroyed(this.destroyRef))
43
+ .subscribe(value => {
44
+ this.applyResult(value ?? []);
45
+ });
46
+ }
47
+ else {
48
+ this.applyResult(this.rowSource);
49
+ }
26
50
  }
27
51
  if (changes["columnDefs"]) {
28
52
  this.onColumnsChanges();
@@ -30,12 +54,13 @@ export class GridDirective {
30
54
  }
31
55
  gridApi;
32
56
  isGridReady = false;
33
- onRowChanges(rowSource) {
34
- if (this.isArray(rowSource)) {
35
- this.setRowData(rowSource);
57
+ noData = of([]);
58
+ applyResult(data) {
59
+ if (this.isArray(data)) {
60
+ this.setRowData(data);
36
61
  }
37
- else if (this.isDataSource(rowSource)) {
38
- this.setDataSource(rowSource);
62
+ else if (this.isDataSource(data)) {
63
+ this.setDataSource(data);
39
64
  }
40
65
  else {
41
66
  this.setRowData([]);
@@ -63,19 +88,41 @@ export class GridDirective {
63
88
  return Array.isArray(rowSource);
64
89
  }
65
90
  isDataSource(obj) {
66
- return typeof obj.getRows === "function";
91
+ return obj && typeof obj.getRows === "function";
67
92
  }
68
93
  onGridReady() {
69
94
  this.onColumnsChanges();
70
95
  }
71
96
  onColumnsChanges() {
72
97
  if (this.gridApi) {
73
- const columnDef = this.gridService.getColumnDefs(this.component, this.columnDefs, this.formGroup, this.language);
98
+ const columnDef = this.gridService.getColumnDefs(this.component, this.columnDefs, this.formGroup);
74
99
  this.gridApi.setGridOption("columnDefs", columnDef);
75
100
  }
76
101
  }
77
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridDirective, deps: [{ token: i1.AgGridAngular, host: true }, { token: i2.GridService }], target: i0.ɵɵFactoryTarget.Directive });
78
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GridDirective, isStandalone: true, selector: "[rowSource], [columnDefs]", inputs: { rowSource: "rowSource", columnDefs: "columnDefs", formGroup: "formGroup", language: "language", component: ["register", "component"] }, usesOnChanges: true, ngImport: i0 });
102
+ showLoading(value) {
103
+ if (this.gridApi) {
104
+ this.gridApi.setGridOption('loading', value);
105
+ }
106
+ }
107
+ showLoadError(value) {
108
+ if (!this.gridApi)
109
+ return;
110
+ if (value) {
111
+ this.grid.api.setGridOption('overlayNoRowsTemplate', this.locale(Texts, 'LoadingFailed'));
112
+ this.grid.api.showNoRowsOverlay();
113
+ }
114
+ else {
115
+ this.grid.api.setGridOption('overlayNoRowsTemplate', undefined);
116
+ }
117
+ }
118
+ get language() {
119
+ return this.languageService.getLanguage();
120
+ }
121
+ locale(component, key) {
122
+ return localize(this.language, component, key);
123
+ }
124
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridDirective, deps: [{ token: i1.AgGridAngular, host: true }, { token: i2.GridService }, { token: i3.LanguageService }], target: i0.ɵɵFactoryTarget.Directive });
125
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GridDirective, isStandalone: true, selector: "[rowSource], [columnDefs]", inputs: { rowSource: "rowSource", columnDefs: "columnDefs", formGroup: "formGroup", component: ["register", "component"] }, usesOnChanges: true, ngImport: i0 });
79
126
  }
80
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GridDirective, decorators: [{
81
128
  type: Directive,
@@ -85,16 +132,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
85
132
  }]
86
133
  }], ctorParameters: () => [{ type: i1.AgGridAngular, decorators: [{
87
134
  type: Host
88
- }] }, { type: i2.GridService }], propDecorators: { rowSource: [{
135
+ }] }, { type: i2.GridService }, { type: i3.LanguageService }], propDecorators: { rowSource: [{
89
136
  type: Input
90
137
  }], columnDefs: [{
91
138
  type: Input
92
139
  }], formGroup: [{
93
140
  type: Input
94
- }], language: [{
95
- type: Input
96
141
  }], component: [{
97
142
  type: Input,
98
143
  args: ["register"]
99
144
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2dyaWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFXakYsTUFBTSxPQUFPLGFBQWE7SUFRTjtJQUNSO0lBUkQsU0FBUyxHQUFRLElBQUksQ0FBQztJQUN0QixVQUFVLEdBQVEsSUFBSSxDQUFDO0lBQ3ZCLFNBQVMsQ0FBYTtJQUN0QixRQUFRLENBQVU7SUFDUixTQUFTLEdBQVEsSUFBSSxDQUFDO0lBRXpDLFlBQ2tCLElBQW1CLEVBQzNCLFdBQXdCO1FBRGhCLFNBQUksR0FBSixJQUFJLENBQWU7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHdFQUF3RTtJQUV4RSxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVPLE9BQU8sQ0FBZ0I7SUFFdkIsV0FBVyxHQUFZLEtBQUssQ0FBQztJQUU3QixZQUFZLENBQUMsU0FBYztRQUNqQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFDSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxTQUFjO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELENBQUM7YUFDSSxDQUFDO1lBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLFNBQWM7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO1FBQ3BDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkQsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFFTyxPQUFPLENBQUMsU0FBYztRQUM1QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLFlBQVksQ0FBQyxHQUFRO1FBQzNCLE9BQU8sT0FBTyxHQUFHLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQztJQUMzQyxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqSCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7d0dBbkZVLGFBQWE7NEZBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFKekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQVNJLElBQUk7bUVBUEUsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDYSxTQUFTO3NCQUEzQixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEhvc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHsgR3JpZEFwaSB9IGZyb20gXCJhZy1ncmlkLWNvbW11bml0eVwiO1xyXG5pbXBvcnQgeyBJUm93c1NvdXJjZSB9IGZyb20gJy4uL2RhdGFTb3VyY2VzL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2dyaWQuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tyb3dTb3VyY2VdLCBbY29sdW1uRGVmc10nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIHJvd1NvdXJjZTogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBjb2x1bW5EZWZzOiBhbnkgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cCE6IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBsYW5ndWFnZSE6IHN0cmluZztcclxuICBASW5wdXQoXCJyZWdpc3RlclwiKSBjb21wb25lbnQ6IGFueSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEhvc3QoKSBwcml2YXRlIGdyaWQ6IEFnR3JpZEFuZ3VsYXIsXHJcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZVxyXG4gICkge1xyXG5cclxuICAgIGdyaWQuZ3JpZFJlYWR5LnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZEFwaSA9IHBhcmFtcy5hcGk7XHJcbiAgICAgIHRoaXMuaXNHcmlkUmVhZHkgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uR3JpZFJlYWR5KCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vaHR0cHM6Ly93d3cuYWctZ3JpZC5jb20vYW5ndWxhci1kYXRhLWdyaWQvY29sdW1uLXVwZGF0aW5nLWRlZmluaXRpb25zL1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1tcInJvd1NvdXJjZVwiXSkge1xyXG4gICAgICB0aGlzLm9uUm93Q2hhbmdlcyh0aGlzLnJvd1NvdXJjZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1tcImNvbHVtbkRlZnNcIl0pIHtcclxuICAgICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2VzKCk7ICAgICAgXHJcbiAgICB9ICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JpZEFwaSE6IEdyaWRBcGk8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBpc0dyaWRSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIG9uUm93Q2hhbmdlcyhyb3dTb3VyY2U6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaXNBcnJheShyb3dTb3VyY2UpKSB7XHJcbiAgICAgIHRoaXMuc2V0Um93RGF0YShyb3dTb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pc0RhdGFTb3VyY2Uocm93U291cmNlKSkge1xyXG4gICAgICB0aGlzLnNldERhdGFTb3VyY2Uocm93U291cmNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFJvd0RhdGEoW10pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRSb3dEYXRhKHJvd1NvdXJjZTogYW55KSB7XHJcbiAgICB0aGlzLmdyaWQucm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xyXG4gICAgaWYgKHRoaXMuaXNHcmlkUmVhZHkpIHtcclxuICAgICAgdGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgcm93U291cmNlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWQucm93RGF0YSA9IHJvd1NvdXJjZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YVNvdXJjZShyb3dTb3VyY2U6IGFueSkge1xyXG4gICAgdGhpcy5ncmlkLnJvd01vZGVsVHlwZSA9ICdpbmZpbml0ZSc7XHJcbiAgICBpZiAodGhpcy5pc0dyaWRSZWFkeSkge1xyXG4gICAgICB0aGlzLmdyaWQuYXBpLnNldEdyaWRPcHRpb24oJ2RhdGFzb3VyY2UnLCByb3dTb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JpZC5kYXRhc291cmNlID0gcm93U291cmNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0FycmF5KHJvd1NvdXJjZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyb3dTb3VyY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc0RhdGFTb3VyY2Uob2JqOiBhbnkpOiBvYmogaXMgSVJvd3NTb3VyY2Uge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBvYmouZ2V0Um93cyA9PT0gXCJmdW5jdGlvblwiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkdyaWRSZWFkeSgpIHtcclxuICAgIHRoaXMub25Db2x1bW5zQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNvbHVtbnNDaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xyXG4gICAgICBjb25zdCBjb2x1bW5EZWYgPSB0aGlzLmdyaWRTZXJ2aWNlLmdldENvbHVtbkRlZnModGhpcy5jb21wb25lbnQsIHRoaXMuY29sdW1uRGVmcywgdGhpcy5mb3JtR3JvdXAsIHRoaXMubGFuZ3VhZ2UpO1xyXG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcImNvbHVtbkRlZnNcIiwgY29sdW1uRGVmKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2lyaW8vc3JjL2xpYi9kaXJlY3RpdmVzL2dyaWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBYyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7O0FBTTlDLE1BQU0sT0FBTyxhQUFhO0lBU047SUFDUjtJQUNBO0lBVkQsU0FBUyxDQUFPO0lBQ2hCLFVBQVUsR0FBUSxJQUFJLENBQUM7SUFDdkIsU0FBUyxDQUFhO0lBQ1osU0FBUyxHQUFRLElBQUksQ0FBQztJQUVqQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhDLFlBQ2tCLElBQW1CLEVBQzNCLFdBQXdCLEVBQ3hCLGVBQWdDO1FBRnhCLFNBQUksR0FBSixJQUFJLENBQWU7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBR3hDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxN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cEMsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFZLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBYyxFQUFFLEdBQVc7UUFDeEMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDakQsQ0FBQzt3R0F4SVUsYUFBYTs0RkFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUp6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBVUksSUFBSTtpR0FSRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDYSxTQUFTO3NCQUEzQixLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEhvc3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBpc09ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgdGFrZSwgdGFwLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBEZXN0cm95UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBHcmlkQXBpIH0gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XHJcbmltcG9ydCB7IElSb3dzU291cmNlIH0gZnJvbSAnLi4vZGF0YVNvdXJjZXMvaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0B3ZW1ha2U0dS9pbnRlcmFjdCc7XHJcbmltcG9ydCB7IFRleHRzIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsZSc7XHJcbmltcG9ydCB7IGxvY2FsaXplIH0gZnJvbSAnLi4vbG9jYWxlL2xvY2FsaXplJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3Jvd1NvdXJjZV0sIFtjb2x1bW5EZWZzXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgcm93U291cmNlITogYW55O1xyXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwOyAgXHJcbiAgQElucHV0KFwicmVnaXN0ZXJcIikgY29tcG9uZW50OiBhbnkgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEhvc3QoKSBwcml2YXRlIGdyaWQ6IEFnR3JpZEFuZ3VsYXIsXHJcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2VcclxuICApIHtcclxuXHJcbiAgICBncmlkLmdyaWRSZWFkeS5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICB0aGlzLmdyaWRBcGkgPSBwYXJhbXMuYXBpO1xyXG4gICAgICB0aGlzLmlzR3JpZFJlYWR5ID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkdyaWRSZWFkeSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL2h0dHBzOi8vd3d3LmFnLWdyaWQuY29tL2FuZ3VsYXItZGF0YS1ncmlkL2NvbHVtbi11cGRhdGluZy1kZWZpbml0aW9ucy9cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3Jvd1NvdXJjZSddKSB7XHJcbiAgICAgIGlmIChpc09ic2VydmFibGUodGhpcy5yb3dTb3VyY2UpKSB7XHJcbiAgICAgICAgdGhpcy5zaG93TG9hZGluZyh0cnVlKTtcclxuICAgICAgICB0aGlzLnJvd1NvdXJjZVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNob3dMb2FkRXJyb3IoZmFsc2UpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0xvYWRFcnJvcih0cnVlKTtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ub0RhdGE7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zaG93TG9hZGluZyhmYWxzZSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbHlSZXN1bHQodmFsdWUgPz8gW10pOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hcHBseVJlc3VsdCh0aGlzLnJvd1NvdXJjZSk7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1tcImNvbHVtbkRlZnNcIl0pIHtcclxuICAgICAgdGhpcy5vbkNvbHVtbnNDaGFuZ2VzKCk7XHJcbiAgICB9ICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JpZEFwaSE6IEdyaWRBcGk8YW55PjtcclxuXHJcbiAgcHJpdmF0ZSBpc0dyaWRSZWFkeTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIG5vRGF0YTogT2JzZXJ2YWJsZTxhbnk+ID0gb2YoW10pO1xyXG5cclxuICBwcml2YXRlIGFwcGx5UmVzdWx0KGRhdGE6IGFueSkge1xyXG5cclxuICAgIGlmICh0aGlzLmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgdGhpcy5zZXRSb3dEYXRhKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5pc0RhdGFTb3VyY2UoZGF0YSkpIHtcclxuICAgICAgdGhpcy5zZXREYXRhU291cmNlKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0Um93RGF0YShbXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFJvd0RhdGEocm93U291cmNlOiBhbnkpIHtcclxuICAgIHRoaXMuZ3JpZC5yb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgICBpZiAodGhpcy5pc0dyaWRSZWFkeSkge1xyXG4gICAgICB0aGlzLmdyaWQuYXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCByb3dTb3VyY2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JpZC5yb3dEYXRhID0gcm93U291cmNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREYXRhU291cmNlKHJvd1NvdXJjZTogYW55KSB7XHJcbiAgICB0aGlzLmdyaWQucm93TW9kZWxUeXBlID0gJ2luZmluaXRlJztcclxuICAgIGlmICh0aGlzLmlzR3JpZFJlYWR5KSB7XHJcbiAgICAgIHRoaXMuZ3JpZC5hcGkuc2V0R3JpZE9wdGlvbignZGF0YXNvdXJjZScsIHJvd1NvdXJjZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5ncmlkLmRhdGFzb3VyY2UgPSByb3dTb3VyY2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzQXJyYXkocm93U291cmNlOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJvd1NvdXJjZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzRGF0YVNvdXJjZShvYmo6IGFueSk6IG9iaiBpcyBJUm93c1NvdXJjZSB7XHJcbiAgICByZXR1cm4gb2JqICYmIHR5cGVvZiBvYmouZ2V0Um93cyA9PT0gXCJmdW5jdGlvblwiO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkdyaWRSZWFkeSgpIHsgICAgXHJcbiAgICB0aGlzLm9uQ29sdW1uc0NoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25Db2x1bW5zQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcclxuICAgICAgY29uc3QgY29sdW1uRGVmID0gdGhpcy5ncmlkU2VydmljZS5nZXRDb2x1bW5EZWZzKHRoaXMuY29tcG9uZW50LCB0aGlzLmNvbHVtbkRlZnMsIHRoaXMuZm9ybUdyb3VwKTtcclxuICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oXCJjb2x1bW5EZWZzXCIsIGNvbHVtbkRlZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dMb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5ncmlkQXBpKSB7XHJcbiAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKCdsb2FkaW5nJywgdmFsdWUpO1xyXG4gICAgfSAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvd0xvYWRFcnJvcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKCF0aGlzLmdyaWRBcGkpIHJldHVybjtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5ncmlkLmFwaS5zZXRHcmlkT3B0aW9uKCdvdmVybGF5Tm9Sb3dzVGVtcGxhdGUnLCB0aGlzLmxvY2FsZShUZXh0cywgJ0xvYWRpbmdGYWlsZWQnKSk7XHJcbiAgICAgIHRoaXMuZ3JpZC5hcGkuc2hvd05vUm93c092ZXJsYXkoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWQuYXBpLnNldEdyaWRPcHRpb24oJ292ZXJsYXlOb1Jvd3NUZW1wbGF0ZScsIHVuZGVmaW5lZCk7ICAgXHJcbiAgICB9ICAgIFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlU2VydmljZS5nZXRMYW5ndWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2NhbGUoY29tcG9uZW50OiBhbnksIGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBsb2NhbGl6ZSh0aGlzLmxhbmd1YWdlLCBjb21wb25lbnQsIGtleSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,101 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ import * as i2 from "../services/global.service";
5
+ export class ReadOnlyDirective {
6
+ ngControl;
7
+ global;
8
+ el;
9
+ renderer;
10
+ readonly = null;
11
+ placeholder = null;
12
+ componentRef;
13
+ properties;
14
+ constructor(ngControl, global, el, renderer) {
15
+ this.ngControl = ngControl;
16
+ this.global = global;
17
+ this.el = el;
18
+ this.renderer = renderer;
19
+ }
20
+ disableClass = "is-disabled";
21
+ readonlyClass = "is-readonly";
22
+ lightReadonlyClass = "light-readonly";
23
+ sub;
24
+ ngOnInit() {
25
+ const control = this.ngControl.control;
26
+ if (control) {
27
+ this.sub = control.statusChanges.subscribe(_ => {
28
+ this.apply();
29
+ });
30
+ }
31
+ }
32
+ ngOnDestroy() {
33
+ this.sub?.unsubscribe();
34
+ }
35
+ ngOnChanges(changes) {
36
+ if (changes["readonly"]) {
37
+ this.apply();
38
+ }
39
+ }
40
+ apply() {
41
+ const control = this.ngControl.control;
42
+ if (!control)
43
+ return;
44
+ if (control.disabled) {
45
+ this.toggleClass(true, this.disableClass);
46
+ this.overridePlaceholder(false);
47
+ }
48
+ else {
49
+ this.toggleClass(false, this.disableClass);
50
+ const readonly = this.readonly === true;
51
+ this.ngControl.valueAccessor?.setDisabledState(readonly);
52
+ if (this.useLightReadonly()) {
53
+ this.toggleClass(readonly, this.lightReadonlyClass);
54
+ this.overridePlaceholder(readonly);
55
+ }
56
+ else {
57
+ this.toggleClass(readonly, this.readonlyClass);
58
+ }
59
+ }
60
+ }
61
+ toggleClass(value, className) {
62
+ if (value) {
63
+ this.renderer.addClass(this.el.nativeElement, className);
64
+ }
65
+ else {
66
+ this.renderer.removeClass(this.el.nativeElement, className);
67
+ }
68
+ }
69
+ overridePlaceholder(value) {
70
+ if ('placeholder' in this.componentRef) {
71
+ this.componentRef.placeholder = value
72
+ ? "-"
73
+ : this.placeholder;
74
+ }
75
+ }
76
+ useLightReadonly() {
77
+ const value = this.properties?.useLightReadonly
78
+ || this.global.getProperty("useLightReadonly", "yes");
79
+ if (value !== "yes" && value !== "no")
80
+ return true;
81
+ return (value === "yes");
82
+ }
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReadOnlyDirective, deps: [{ token: i1.NgControl }, { token: i2.GlobalService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
84
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ReadOnlyDirective, isStandalone: true, selector: "[readonly]", inputs: { readonly: "readonly", placeholder: "placeholder", componentRef: "componentRef", properties: "properties" }, usesOnChanges: true, ngImport: i0 });
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReadOnlyDirective, decorators: [{
87
+ type: Directive,
88
+ args: [{
89
+ selector: '[readonly]',
90
+ standalone: true
91
+ }]
92
+ }], ctorParameters: () => [{ type: i1.NgControl }, { type: i2.GlobalService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { readonly: [{
93
+ type: Input
94
+ }], placeholder: [{
95
+ type: Input
96
+ }], componentRef: [{
97
+ type: Input
98
+ }], properties: [{
99
+ type: Input
100
+ }] } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZG9ubHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNpcmlvL3NyYy9saWIvZGlyZWN0aXZlcy9yZWFkb25seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW1ELE1BQU0sZUFBZSxDQUFDOzs7O0FBU2xHLE1BQU0sT0FBTyxpQkFBaUI7SUFNUjtJQUNSO0lBQ0E7SUFDQTtJQVJILFFBQVEsR0FBbUIsSUFBSSxDQUFDO0lBQ2hDLFdBQVcsR0FBa0IsSUFBSSxDQUFDO0lBQ2xDLFlBQVksQ0FBTTtJQUNsQixVQUFVLENBQU07SUFFekIsWUFBb0IsU0FBb0IsRUFDNUIsTUFBcUIsRUFDckIsRUFBYyxFQUNkLFFBQW1CO1FBSFgsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ3JCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQy9CLENBQUM7SUFFTyxZQUFZLEdBQVcsYUFBYSxDQUFDO0lBQ3JDLGFBQWEsR0FBVyxhQUFhLENBQUM7SUFDdEMsa0JBQWtCLEdBQVcsZ0JBQWdCLENBQUM7SUFFOUMsR0FBRyxDQUFnQjtJQUUzQixRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzdDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLO1FBQ1gsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFxQixFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxDQUFDO2lCQUNJLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFjLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzNELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUFjO1FBQ3hDLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxLQUFLO2dCQUNuQyxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQjtlQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxLQUFLLElBQUk7WUFDbkMsT0FBTyxJQUFJLENBQUM7UUFDZCxPQUFPLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7d0dBL0VVLGlCQUFpQjs0RkFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7MkpBRVUsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1tyZWFkb25seV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlYWRPbmx5RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBjb21wb25lbnRSZWY6IGFueTtcclxuICBASW5wdXQoKSBwcm9wZXJ0aWVzOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2xcclxuICAgICwgcHJpdmF0ZSBnbG9iYWw6IEdsb2JhbFNlcnZpY2VcclxuICAgICwgcHJpdmF0ZSBlbDogRWxlbWVudFJlZlxyXG4gICAgLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlzYWJsZUNsYXNzOiBzdHJpbmcgPSBcImlzLWRpc2FibGVkXCI7XHJcbiAgcHJpdmF0ZSByZWFkb25seUNsYXNzOiBzdHJpbmcgPSBcImlzLXJlYWRvbmx5XCI7XHJcbiAgcHJpdmF0ZSBsaWdodFJlYWRvbmx5Q2xhc3M6IHN0cmluZyA9IFwibGlnaHQtcmVhZG9ubHlcIjtcclxuXHJcbiAgcHJpdmF0ZSBzdWI/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2w7XHJcbiAgICBpZiAoY29udHJvbCkge1xyXG4gICAgICB0aGlzLnN1YiA9IGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgdGhpcy5hcHBseSgpOyAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1Yj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzW1wicmVhZG9ubHlcIl0pIHtcclxuICAgICAgdGhpcy5hcHBseSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseSgpIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sO1xyXG4gICAgaWYgKCFjb250cm9sKSByZXR1cm47XHJcbiAgICBpZiAoY29udHJvbC5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnRvZ2dsZUNsYXNzKHRydWUsIHRoaXMuZGlzYWJsZUNsYXNzKTtcclxuICAgICAgdGhpcy5vdmVycmlkZVBsYWNlaG9sZGVyKGZhbHNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9nZ2xlQ2xhc3MoZmFsc2UsIHRoaXMuZGlzYWJsZUNsYXNzKTtcclxuICAgICAgY29uc3QgcmVhZG9ubHkgPSB0aGlzLnJlYWRvbmx5ID09PSB0cnVlO1xyXG4gICAgICAodGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciBhcyBhbnkpPy5zZXREaXNhYmxlZFN0YXRlKHJlYWRvbmx5KTtcclxuICAgICAgaWYgKHRoaXMudXNlTGlnaHRSZWFkb25seSgpKSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVDbGFzcyhyZWFkb25seSwgdGhpcy5saWdodFJlYWRvbmx5Q2xhc3MpO1xyXG4gICAgICAgIHRoaXMub3ZlcnJpZGVQbGFjZWhvbGRlcihyZWFkb25seSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2dnbGVDbGFzcyhyZWFkb25seSwgdGhpcy5yZWFkb25seUNsYXNzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b2dnbGVDbGFzcyh2YWx1ZTogYm9vbGVhbiwgY2xhc3NOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvdmVycmlkZVBsYWNlaG9sZGVyKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBpZiAoJ3BsYWNlaG9sZGVyJyBpbiB0aGlzLmNvbXBvbmVudFJlZikge1xyXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5wbGFjZWhvbGRlciA9IHZhbHVlXHJcbiAgICAgICAgPyBcIi1cIlxyXG4gICAgICAgIDogdGhpcy5wbGFjZWhvbGRlcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXNlTGlnaHRSZWFkb25seSgpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wcm9wZXJ0aWVzPy51c2VMaWdodFJlYWRvbmx5XHJcbiAgICAgIHx8IHRoaXMuZ2xvYmFsLmdldFByb3BlcnR5KFwidXNlTGlnaHRSZWFkb25seVwiLCBcInllc1wiKTtcclxuICAgIGlmICh2YWx1ZSAhPT0gXCJ5ZXNcIiAmJiB2YWx1ZSAhPT0gXCJub1wiKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiAodmFsdWUgPT09IFwieWVzXCIpO1xyXG4gIH1cclxufVxyXG4iXX0=