@vgip/meta-ui 1.7.0 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2020 → esm2022}/lib/common/metaAutofocus.directive.mjs +4 -4
- package/esm2022/lib/common/metaIcons.pipe.mjs +29 -0
- package/esm2022/lib/common/metaModel.pipe.mjs +23 -0
- package/esm2022/lib/common/metaNormalizer.mjs +341 -0
- package/{esm2020 → esm2022}/lib/common/metaStripHtml.pipe.mjs +4 -4
- package/esm2022/lib/common/utils/colorThemes.mjs +77 -0
- package/esm2022/lib/common/utils/indexedDbStore/index.mjs +218 -0
- package/{esm2020 → esm2022}/lib/common/utils/templateBuilder.mjs +3 -3
- package/esm2022/lib/fieldAbstract.mjs +291 -0
- package/{esm2020 → esm2022}/lib/fieldBoolean/index.mjs +4 -4
- package/{esm2020 → esm2022}/lib/fieldComposite/index.mjs +4 -4
- package/esm2022/lib/fieldDatetime/index.mjs +365 -0
- package/{esm2020 → esm2022}/lib/fieldHidden/index.mjs +4 -4
- package/{esm2020 → esm2022}/lib/fieldInput/index.mjs +5 -5
- package/esm2022/lib/fieldList/index.mjs +69 -0
- package/{esm2020 → esm2022}/lib/fieldRadio/index.mjs +5 -5
- package/esm2022/lib/fieldReference/index.mjs +829 -0
- package/esm2022/lib/fieldRichtext/index.mjs +95 -0
- package/esm2022/lib/fieldSelect/index.mjs +495 -0
- package/{esm2020 → esm2022}/lib/fieldText/index.mjs +5 -5
- package/esm2022/lib/fieldUnknown/index.mjs +19 -0
- package/esm2022/lib/index.mjs +163 -0
- package/esm2022/lib/layout/index.mjs +155 -0
- package/{esm2020 → esm2022}/lib/metaField/index.mjs +7 -7
- package/esm2022/lib/refDialog/index.mjs +135 -0
- package/esm2022/lib/resource/index.mjs +495 -0
- package/{esm2020 → esm2022}/lib/resourceCard/index.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/metaContext/index.mjs +4 -4
- package/esm2022/lib/services/metaMsg/index.mjs +84 -0
- package/esm2022/lib/services/metaReference/index.mjs +89 -0
- package/{esm2020 → esm2022}/lib/services/metaResource/index.mjs +7 -7
- package/{esm2020 → esm2022}/lib/services/metaResource/metaHttpClient.mjs +5 -5
- package/{esm2020 → esm2022}/lib/services/metaTracker/index.mjs +4 -4
- package/esm2022/lib/services/resourceDrafts/index.mjs +69 -0
- package/{fesm2020/vgip-meta-ui-fieldAbstract-f7d80db6.mjs → fesm2022/vgip-meta-ui-fieldAbstract-9955be39.mjs} +10 -8
- package/fesm2022/vgip-meta-ui-fieldAbstract-9955be39.mjs.map +1 -0
- package/{fesm2020/vgip-meta-ui-index-301b28cd.mjs → fesm2022/vgip-meta-ui-index-39011b04.mjs} +20 -20
- package/{fesm2020/vgip-meta-ui-index-301b28cd.mjs.map → fesm2022/vgip-meta-ui-index-39011b04.mjs.map} +1 -1
- package/{fesm2020/vgip-meta-ui-index-4fcefde0.mjs → fesm2022/vgip-meta-ui-index-3bc3d41b.mjs} +88 -56
- package/fesm2022/vgip-meta-ui-index-3bc3d41b.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-3fda8c0e.mjs +74 -0
- package/fesm2022/vgip-meta-ui-index-3fda8c0e.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-5871a6f2.mjs +95 -0
- package/fesm2022/vgip-meta-ui-index-5871a6f2.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-5891b8e7.mjs +24 -0
- package/fesm2022/vgip-meta-ui-index-5891b8e7.mjs.map +1 -0
- package/{fesm2020/vgip-meta-ui-index-87041aad.mjs → fesm2022/vgip-meta-ui-index-5d13f5e6.mjs} +5 -5
- package/{fesm2015/vgip-meta-ui-index-87041aad.mjs.map → fesm2022/vgip-meta-ui-index-5d13f5e6.mjs.map} +1 -1
- package/fesm2022/vgip-meta-ui-index-9e4137fe.mjs +68 -0
- package/fesm2022/vgip-meta-ui-index-9e4137fe.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-a2a973a6.mjs +862 -0
- package/fesm2022/vgip-meta-ui-index-a2a973a6.mjs.map +1 -0
- package/{fesm2015/vgip-meta-ui-index-81aa79dc.mjs → fesm2022/vgip-meta-ui-index-af4eda3c.mjs} +8 -8
- package/fesm2022/vgip-meta-ui-index-af4eda3c.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-b0a76073.mjs +97 -0
- package/fesm2022/vgip-meta-ui-index-b0a76073.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-b48e32ce.mjs +502 -0
- package/fesm2022/vgip-meta-ui-index-b48e32ce.mjs.map +1 -0
- package/{fesm2020/vgip-meta-ui-index-2b20afc8.mjs → fesm2022/vgip-meta-ui-index-b6fcc07d.mjs} +10 -8
- package/fesm2022/vgip-meta-ui-index-b6fcc07d.mjs.map +1 -0
- package/{fesm2015/vgip-meta-ui-index-bf5b6c0f.mjs → fesm2022/vgip-meta-ui-index-c39ea0ec.mjs} +6 -6
- package/{fesm2020/vgip-meta-ui-index-bf5b6c0f.mjs.map → fesm2022/vgip-meta-ui-index-c39ea0ec.mjs.map} +1 -1
- package/{fesm2020/vgip-meta-ui-index-6e77c362.mjs → fesm2022/vgip-meta-ui-index-ea5c2466.mjs} +6 -6
- package/fesm2022/vgip-meta-ui-index-ea5c2466.mjs.map +1 -0
- package/{fesm2020/vgip-meta-ui-index-b92a559b.mjs → fesm2022/vgip-meta-ui-index-fef499eb.mjs} +6 -6
- package/{fesm2020/vgip-meta-ui-index-b92a559b.mjs.map → fesm2022/vgip-meta-ui-index-fef499eb.mjs.map} +1 -1
- package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs +26 -0
- package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/vgip-meta-ui.mjs +108 -103
- package/fesm2022/vgip-meta-ui.mjs.map +1 -0
- package/lib/common/metaAutofocus.directive.d.ts +1 -1
- package/lib/common/metaIcons.pipe.d.ts +1 -1
- package/lib/common/metaModel.pipe.d.ts +1 -2
- package/lib/common/utils/indexedDbStore/index.d.ts +2 -2
- package/lib/fieldAbstract.d.ts +0 -4
- package/lib/fieldBoolean/index.d.ts +1 -1
- package/lib/fieldComposite/index.d.ts +1 -1
- package/lib/fieldRadio/index.d.ts +1 -1
- package/lib/fieldReference/index.d.ts +1 -1
- package/lib/fieldRichtext/index.d.ts +6 -8
- package/lib/fieldSelect/index.d.ts +1 -1
- package/lib/fieldText/index.d.ts +1 -1
- package/lib/layout/index.d.ts +5 -5
- package/lib/metaField/index.d.ts +1 -1
- package/lib/refDialog/index.d.ts +3 -3
- package/lib/resource/index.d.ts +2 -2
- package/lib/resourceCard/index.d.ts +1 -1
- package/package.json +8 -14
- package/esm2020/lib/common/metaIcons.pipe.mjs +0 -29
- package/esm2020/lib/common/metaModel.pipe.mjs +0 -25
- package/esm2020/lib/common/metaNormalizer.mjs +0 -327
- package/esm2020/lib/common/utils/colorThemes.mjs +0 -79
- package/esm2020/lib/common/utils/indexedDbStore/index.mjs +0 -218
- package/esm2020/lib/fieldAbstract.mjs +0 -287
- package/esm2020/lib/fieldDatetime/index.mjs +0 -363
- package/esm2020/lib/fieldList/index.mjs +0 -69
- package/esm2020/lib/fieldReference/index.mjs +0 -825
- package/esm2020/lib/fieldRichtext/index.mjs +0 -85
- package/esm2020/lib/fieldSelect/index.mjs +0 -490
- package/esm2020/lib/fieldUnknown/index.mjs +0 -19
- package/esm2020/lib/index.mjs +0 -158
- package/esm2020/lib/layout/index.mjs +0 -149
- package/esm2020/lib/refDialog/index.mjs +0 -127
- package/esm2020/lib/resource/index.mjs +0 -491
- package/esm2020/lib/services/metaMsg/index.mjs +0 -84
- package/esm2020/lib/services/metaReference/index.mjs +0 -89
- package/esm2020/lib/services/resourceDrafts/index.mjs +0 -68
- package/fesm2015/vgip-meta-ui-fieldAbstract-f7d80db6.mjs +0 -397
- package/fesm2015/vgip-meta-ui-fieldAbstract-f7d80db6.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-1d2b4c69.mjs +0 -68
- package/fesm2015/vgip-meta-ui-index-1d2b4c69.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-2737c81e.mjs +0 -1900
- package/fesm2015/vgip-meta-ui-index-2737c81e.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-2b20afc8.mjs +0 -368
- package/fesm2015/vgip-meta-ui-index-2b20afc8.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-3eefa50a.mjs +0 -75
- package/fesm2015/vgip-meta-ui-index-3eefa50a.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-476b6cb7.mjs +0 -24
- package/fesm2015/vgip-meta-ui-index-476b6cb7.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-4b8d731c.mjs +0 -151
- package/fesm2015/vgip-meta-ui-index-4b8d731c.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-4ecdd48a.mjs +0 -72
- package/fesm2015/vgip-meta-ui-index-4ecdd48a.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-62be0e3e.mjs +0 -858
- package/fesm2015/vgip-meta-ui-index-62be0e3e.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-640f8e62.mjs +0 -95
- package/fesm2015/vgip-meta-ui-index-640f8e62.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-695384af.mjs +0 -88
- package/fesm2015/vgip-meta-ui-index-695384af.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-6e77c362.mjs +0 -130
- package/fesm2015/vgip-meta-ui-index-6e77c362.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-81aa79dc.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-87041aad.mjs +0 -23
- package/fesm2015/vgip-meta-ui-index-a76ba482.mjs +0 -498
- package/fesm2015/vgip-meta-ui-index-a76ba482.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-index-bf5b6c0f.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui-metaModel.pipe-4b068359.mjs +0 -28
- package/fesm2015/vgip-meta-ui-metaModel.pipe-4b068359.mjs.map +0 -1
- package/fesm2015/vgip-meta-ui.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-fieldAbstract-f7d80db6.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-1d2b4c69.mjs +0 -68
- package/fesm2020/vgip-meta-ui-index-1d2b4c69.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-2b20afc8.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-476b6cb7.mjs +0 -24
- package/fesm2020/vgip-meta-ui-index-476b6cb7.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-4c4a4daf.mjs +0 -858
- package/fesm2020/vgip-meta-ui-index-4c4a4daf.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-4fcefde0.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-640f8e62.mjs +0 -95
- package/fesm2020/vgip-meta-ui-index-640f8e62.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-695384af.mjs +0 -88
- package/fesm2020/vgip-meta-ui-index-695384af.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-6e77c362.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-81aa79dc.mjs +0 -460
- package/fesm2020/vgip-meta-ui-index-81aa79dc.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-87041aad.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-aee28354.mjs +0 -497
- package/fesm2020/vgip-meta-ui-index-aee28354.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-index-bf5b6c0f.mjs +0 -61
- package/fesm2020/vgip-meta-ui-index-f7370960.mjs +0 -74
- package/fesm2020/vgip-meta-ui-index-f7370960.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-metaModel.pipe-4b068359.mjs +0 -28
- package/fesm2020/vgip-meta-ui-metaModel.pipe-4b068359.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs +0 -51
- package/fesm2020/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs.map +0 -1
- package/fesm2020/vgip-meta-ui.mjs +0 -524
- package/fesm2020/vgip-meta-ui.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/boolean.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/datetime.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/number.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/radio.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/reference.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/richtext.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/string.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/text.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/fieldNormalizer/uniqueNameFilter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/relativeTimeBuilder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/resourceCardLabel.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/smartProp.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/vgip-meta-ui.mjs +0 -0
- /package/{fesm2015 → fesm2022}/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs +0 -0
- /package/{fesm2015 → fesm2022}/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs.map +0 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: Alexander.Vangelov@vonage.com
|
|
3
|
+
* @Date: 2019-09-19 17:34:44
|
|
4
|
+
* @Last Modified by: Alexander.Vangelov@vonage.com
|
|
5
|
+
* @Last Modified time: 2020-04-18 21:18:08
|
|
6
|
+
*/
|
|
7
|
+
import { Directive } from '@angular/core';
|
|
8
|
+
// import { ControlValueAccessor } from '@angular/forms';
|
|
9
|
+
import { BehaviorSubject } from 'rxjs';
|
|
10
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
11
|
+
import { metaDark, metaLight } from './common/utils/colorThemes';
|
|
12
|
+
import { extractValueBySmartProp, extractBooleanValueBySmartProp } from '../lib/common/utils/smartProp';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
// export interface IMetaField<T extends FieldAbstract> {
|
|
15
|
+
// meta: any;
|
|
16
|
+
// model: any;
|
|
17
|
+
// }
|
|
18
|
+
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
19
|
+
export class FieldAbstract {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.scope = '';
|
|
22
|
+
this.validationAttributes = [];
|
|
23
|
+
this.changeEvent = document.createEvent('MouseEvents');
|
|
24
|
+
this.logicalDisabled = false;
|
|
25
|
+
this.flags = {};
|
|
26
|
+
}
|
|
27
|
+
get parentChangeSubject() {
|
|
28
|
+
if (!Object.getOwnPropertyDescriptor(this.parent, '$changeSubject')) {
|
|
29
|
+
Object.defineProperty(this.parent, '$changeSubject', {
|
|
30
|
+
value: new BehaviorSubject({}).pipe(debounceTime(300), distinctUntilChanged()),
|
|
31
|
+
writable: false,
|
|
32
|
+
enumerable: false
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return this.parent.$changeSubject;
|
|
36
|
+
}
|
|
37
|
+
get isPersistedParent() {
|
|
38
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
39
|
+
return this.parent && this.parent._vgis && (this.parent._vgis.externalId || this.parent._vgis.id);
|
|
40
|
+
}
|
|
41
|
+
get validations() {
|
|
42
|
+
return this.meta.validations || {};
|
|
43
|
+
}
|
|
44
|
+
get name() {
|
|
45
|
+
return (typeof (this.index) === 'undefined') ? `${this.scope}${this.meta.name}` : `${this.scope}${this.meta.name}[${this.index}]`;
|
|
46
|
+
}
|
|
47
|
+
get default() {
|
|
48
|
+
return this.meta.default || this.meta.defaultValue;
|
|
49
|
+
}
|
|
50
|
+
get disabled() {
|
|
51
|
+
// TODO conditions
|
|
52
|
+
return this.logicalDisabled || this.validations.disabled || this.meta.disabled === true || this.flags.disabled
|
|
53
|
+
|| (this.flags.updatable === false && this.isPersistedParent);
|
|
54
|
+
}
|
|
55
|
+
get readonly() {
|
|
56
|
+
// TODO conditions
|
|
57
|
+
return !!(this.validations.readonly || this.meta.readonly || (this.flags.updatable === false));
|
|
58
|
+
}
|
|
59
|
+
get sendToServer() {
|
|
60
|
+
return this.isPersistedParent ? (this.flags.updatable !== false) : (this.flags.creatable !== false);
|
|
61
|
+
}
|
|
62
|
+
get uiInput() {
|
|
63
|
+
if (!this.mainInput) {
|
|
64
|
+
this.mainInput = this.elementRef.nativeElement.querySelector('.main:not([type="hidden"]):not(.standalone)');
|
|
65
|
+
}
|
|
66
|
+
return this.mainInput;
|
|
67
|
+
}
|
|
68
|
+
get isOptional() {
|
|
69
|
+
const baseOptional = this.preview || (!this.meta.unset && !this.validations.required && !this.meta.visible);
|
|
70
|
+
switch (this.meta.type) {
|
|
71
|
+
case 'composite': {
|
|
72
|
+
if (baseOptional) {
|
|
73
|
+
return !this.meta.fields.find((f) => !f.$optional);
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
case 'list': {
|
|
78
|
+
if (baseOptional) {
|
|
79
|
+
return !(this.parent[this.meta.name] instanceof Array && this.parent[this.meta.name].length) && !this.meta.min;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
default: {
|
|
84
|
+
return baseOptional && typeof (this.parent[this.meta.name]) === 'undefined';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
static setup(instance, parent, meta) { } // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
89
|
+
ngAfterViewInit() {
|
|
90
|
+
if (this.elementRef) {
|
|
91
|
+
if (this.integrationCode === 'mocks') {
|
|
92
|
+
this.integrationIcon = 'Brand-icon-vonage';
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
switch (this.integrationCode) {
|
|
96
|
+
case 'office365':
|
|
97
|
+
this.integrationIcon = 'Brand-icon-office-color';
|
|
98
|
+
break;
|
|
99
|
+
case 'sugar':
|
|
100
|
+
this.integrationIcon = 'Brand-icon-sugarcrm-color';
|
|
101
|
+
break;
|
|
102
|
+
case 'msdynamics':
|
|
103
|
+
this.integrationIcon = 'Brand-icon-dynamics-color';
|
|
104
|
+
break;
|
|
105
|
+
default:
|
|
106
|
+
this.integrationIcon = `Brand-icon-${(this.integrationCode || '').toLowerCase()}-color`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
Object.defineProperty(this.meta, '$optional', {
|
|
110
|
+
value: (typeof (this.default) === 'undefined') && this.isOptional,
|
|
111
|
+
writable: true,
|
|
112
|
+
configurable: true,
|
|
113
|
+
enumerable: false
|
|
114
|
+
});
|
|
115
|
+
this.flags = this.meta.flags || {};
|
|
116
|
+
Object.defineProperty(this.meta, '$hidden', {
|
|
117
|
+
value: !this.isPersistedParent && this.flags.creatable === false,
|
|
118
|
+
writable: true,
|
|
119
|
+
configurable: true,
|
|
120
|
+
enumerable: false
|
|
121
|
+
});
|
|
122
|
+
if (typeof (this.meta.hidden) !== 'undefined') {
|
|
123
|
+
if (typeof (this.meta.hidden) === 'object') {
|
|
124
|
+
const setHiddenByPropertyConfig = (par) => {
|
|
125
|
+
if (typeof (this.meta.hidden[par]) === 'boolean') { // any value makes me hidden
|
|
126
|
+
this.meta.$hidden = !!this.parent[par];
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
const value = extractValueBySmartProp(this.parent, par);
|
|
130
|
+
const parValue = value ? (value.id || value.value || value) : value;
|
|
131
|
+
this.meta.$hidden = this.meta.hidden[par] === parValue;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
for (const par of Object.keys(this.meta.hidden)) {
|
|
135
|
+
setHiddenByPropertyConfig(par);
|
|
136
|
+
this.parentChangeSubject.subscribe((value) => {
|
|
137
|
+
if (value && value.hasOwnProperty(par.split('.')[0])) {
|
|
138
|
+
setHiddenByPropertyConfig(par);
|
|
139
|
+
if (this.meta.$hidden) {
|
|
140
|
+
delete this.parent[this.meta.name];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else if (typeof (this.meta.hidden) === 'string') {
|
|
147
|
+
if (this.meta.hidden.toUpperCase() === 'CREATE') {
|
|
148
|
+
this.meta.$hidden = !this.isPersistedParent;
|
|
149
|
+
}
|
|
150
|
+
else if (this.meta.hidden.toUpperCase() === 'UPDATE') {
|
|
151
|
+
this.meta.$hidden = this.isPersistedParent;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
this.meta.$hidden = !!this.meta.hidden;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
Object.defineProperty(this.meta, '$invisible', {
|
|
159
|
+
value: false,
|
|
160
|
+
writable: true,
|
|
161
|
+
configurable: true,
|
|
162
|
+
enumerable: false
|
|
163
|
+
});
|
|
164
|
+
if (typeof (this.meta.visible) !== 'undefined') {
|
|
165
|
+
if (typeof (this.meta.visible) === 'object') {
|
|
166
|
+
const setInvisibleByPropertyConfig = (par) => {
|
|
167
|
+
if (typeof (this.meta.visible[par]) === 'boolean') { // any value makes me hidden
|
|
168
|
+
this.meta.$invisible = extractBooleanValueBySmartProp(this.parent[par], this.meta.visible[par]);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
const value = extractValueBySmartProp(this.parent, par);
|
|
172
|
+
const parValue = value ? (value.id || value.value || value) : value;
|
|
173
|
+
this.meta.$invisible = this.meta.visible[par] !== parValue;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
for (const par of Object.keys(this.meta.visible)) {
|
|
177
|
+
setInvisibleByPropertyConfig(par);
|
|
178
|
+
this.parentChangeSubject.subscribe(() => {
|
|
179
|
+
// if (value && value.hasOwnProperty(par.split('.')[0])) {
|
|
180
|
+
setInvisibleByPropertyConfig(par);
|
|
181
|
+
if (this.meta.$invisible) {
|
|
182
|
+
delete this.parent[this.meta.name];
|
|
183
|
+
}
|
|
184
|
+
// }
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else if (typeof (this.meta.visible) === 'string') {
|
|
189
|
+
if (this.meta.visible.toUpperCase() === 'CREATE') {
|
|
190
|
+
this.meta.$invisible = this.isPersistedParent;
|
|
191
|
+
}
|
|
192
|
+
else if (this.meta.visible.toUpperCase() === 'UPDATE') {
|
|
193
|
+
this.meta.$invisible = !this.isPersistedParent;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (this.theme !== 'inherit') {
|
|
198
|
+
const metaTheme = this.theme === 'dark' ? metaDark : metaLight;
|
|
199
|
+
for (const key of Object.keys(metaTheme.properties)) {
|
|
200
|
+
this.elementRef.nativeElement.style.setProperty(key, metaTheme.properties[key]);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
focus() {
|
|
206
|
+
const input = this.uiInput;
|
|
207
|
+
if (input) {
|
|
208
|
+
input.focus();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
modelToValue(m, valueType) {
|
|
212
|
+
if (typeof (m) !== 'undefined') {
|
|
213
|
+
switch (valueType) {
|
|
214
|
+
case 'object': {
|
|
215
|
+
return m ? { id: m.id, label: m.label, type: m.type } : m;
|
|
216
|
+
}
|
|
217
|
+
case 'number': {
|
|
218
|
+
if (m != null) {
|
|
219
|
+
const v = m.id || m;
|
|
220
|
+
try {
|
|
221
|
+
return parseInt(v, 10);
|
|
222
|
+
}
|
|
223
|
+
catch (e) {
|
|
224
|
+
return v;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
default: {
|
|
230
|
+
if (m != null) {
|
|
231
|
+
return m.id || m;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
onSubjectChange(model) {
|
|
238
|
+
if (Object.getOwnPropertyDescriptor(this.parent, '$changeSubject')) {
|
|
239
|
+
const parentChange = {};
|
|
240
|
+
parentChange[this.meta.name] = model;
|
|
241
|
+
this.parentChangeSubject.next(parentChange);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
onModelChange(model) {
|
|
245
|
+
// TODO add resource type logic
|
|
246
|
+
if (this.model instanceof Array) {
|
|
247
|
+
this.parent[this.meta.name] = this.model.map((m) => this.modelToValue(m, this.meta.valueType));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
this.parent[this.meta.name] = this.modelToValue(model, this.meta.valueType);
|
|
251
|
+
}
|
|
252
|
+
this.onChange.emit(model);
|
|
253
|
+
this.onSubjectChange(model);
|
|
254
|
+
// console.log('onChange', model);
|
|
255
|
+
this.changeEvent.initMouseEvent('change', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
|
256
|
+
this.elementRef.nativeElement.dispatchEvent(this.changeEvent);
|
|
257
|
+
if (this.model) {
|
|
258
|
+
this.prevModel = this.model;
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
this.meta.unset = true;
|
|
262
|
+
}
|
|
263
|
+
this.meta.$optional = this.isOptional;
|
|
264
|
+
}
|
|
265
|
+
clear() {
|
|
266
|
+
delete this.model;
|
|
267
|
+
this.onModelChange(this.model);
|
|
268
|
+
}
|
|
269
|
+
applyValidations() {
|
|
270
|
+
this.validationAttributes.forEach((attribute) => {
|
|
271
|
+
const validation = this.validations[attribute];
|
|
272
|
+
if (validation) {
|
|
273
|
+
this.modelInput.setAttribute(attribute, validation.value || validation);
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldAbstract, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
278
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.11", type: FieldAbstract, ngImport: i0 }); }
|
|
279
|
+
}
|
|
280
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldAbstract, decorators: [{
|
|
281
|
+
type: Directive
|
|
282
|
+
}] });
|
|
283
|
+
export class MetaElem {
|
|
284
|
+
}
|
|
285
|
+
export class MetaElemDisableadble {
|
|
286
|
+
disable() {
|
|
287
|
+
console.log(this.cssmodifier);
|
|
288
|
+
this.elementRef.nativeElement.classList.remove(this.cssmodifier);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRBYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21ldGEtdWkvc3JjL2xpYi9maWVsZEFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUEyQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBRXhHLHlEQUF5RDtBQUN6RCxlQUFlO0FBQ2YsZ0JBQWdCO0FBQ2hCLElBQUk7QUFHSixrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQixhQUFhO0lBRm5DO1FBTUUsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQVlYLHlCQUFvQixHQUFHLEVBQUUsQ0FBQztRQUcxQixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFbEQsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsVUFBSyxHQUFRLEVBQUUsQ0FBQztLQW9RakI7SUFsUUMsSUFBSSxtQkFBbUI7UUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLEVBQUU7WUFDbkUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFO2dCQUNuRCxLQUFLLEVBQUUsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMs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Z0I7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0MsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLENBQUM7YUFDekU7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBMVJtQixhQUFhO21HQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRmxDLFNBQVM7O0FBZ1NWLE1BQU0sT0FBTyxRQUFRO0NBR3BCO0FBRUQsTUFBTSxPQUFnQixvQkFBb0I7SUFLeEMsT0FBTztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAQXV0aG9yOiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQERhdGU6IDIwMTktMDktMTkgMTc6MzQ6NDRcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wNC0xOCAyMToxODowOFxuICovXG5cbmltcG9ydCB7IEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIEV2ZW50RW1pdHRlciwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBpbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG1ldGFEYXJrLCBtZXRhTGlnaHQgfSBmcm9tICcuL2NvbW1vbi91dGlscy9jb2xvclRoZW1lcyc7XG5pbXBvcnQgeyBleHRyYWN0VmFsdWVCeVNtYXJ0UHJvcCwgZXh0cmFjdEJvb2xlYW5WYWx1ZUJ5U21hcnRQcm9wIH0gZnJvbSAnLi4vbGliL2NvbW1vbi91dGlscy9zbWFydFByb3AnO1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElNZXRhRmllbGQ8VCBleHRlbmRzIEZpZWxkQWJzdHJhY3Q+IHtcbi8vICAgbWV0YTogYW55O1xuLy8gICBtb2RlbDogYW55O1xuLy8gfVxuXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHsgLy8gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIG1vZGVsOiBhbnk7XG4gIG1ldGE6IGFueTtcbiAgaW5kZXg6IG51bWJlcjtcbiAgc2NvcGUgPSAnJztcbiAgcGFyZW50OiBhbnk7XG4gIGludGVncmF0aW9uQ29kZTogc3RyaW5nO1xuICBpbnRlZ3JhdGlvbkljb246IHN0cmluZztcbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gIG1vZGVsSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIG1vZGVsQ29udHJvbDogSFRNTElucHV0RWxlbWVudDtcbiAgbWFpbklucHV0OiBIVE1MSW5wdXRFbGVtZW50O1xuICBrZXlMaXN0ZW5lckFjdGl2ZTogYm9vbGVhbjtcbiAgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBvbkxlYXZlOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgdmFsaWRhdGlvbkF0dHJpYnV0ZXMgPSBbXTtcbiAgcHJldmlldzogYm9vbGVhbjtcbiAgcHJldk1vZGVsOiBhbnk7XG4gIGNoYW5nZUV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnRzJyk7XG4gIG1ldGFSZXNvdXJjZVNlcnZpY2U6IGFueTtcbiAgbG9naWNhbERpc2FibGVkID0gZmFsc2U7XG4gIHRoZW1lOiBzdHJpbmc7XG4gIGZsYWdzOiBhbnkgPSB7fTtcblxuICBnZXQgcGFyZW50Q2hhbmdlU3ViamVjdCgpIHtcbiAgICBpZiAoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5wYXJlbnQsICckY2hhbmdlU3ViamVjdCcpKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wYXJlbnQsICckY2hhbmdlU3ViamVjdCcsIHtcbiAgICAgICAgdmFsdWU6IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucGFyZW50LiRjaGFuZ2VTdWJqZWN0O1xuICB9XG5cbiAgZ2V0IGlzUGVyc2lzdGVkUGFyZW50KCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgIHJldHVybiB0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC5fdmdpcyAmJiAodGhpcy5wYXJlbnQuX3ZnaXMuZXh0ZXJuYWxJZCB8fCB0aGlzLnBhcmVudC5fdmdpcy5pZCApO1xuICB9XG5cbiAgZ2V0IHZhbGlkYXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGEudmFsaWRhdGlvbnMgfHwge307XG4gIH1cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gKHR5cGVvZiAodGhpcy5pbmRleCkgPT09ICd1bmRlZmluZWQnKSA/IGAke3RoaXMuc2NvcGV9JHt0aGlzLm1ldGEubmFtZX1gIDogYCR7dGhpcy5zY29wZX0ke3RoaXMubWV0YS5uYW1lfVske3RoaXMuaW5kZXh9XWA7XG4gIH1cblxuICBnZXQgZGVmYXVsdCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhLmRlZmF1bHQgfHwgdGhpcy5tZXRhLmRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICAvLyBUT0RPIGNvbmRpdGlvbnNcbiAgICByZXR1cm4gdGhpcy5sb2dpY2FsRGlzYWJsZWQgfHwgdGhpcy52YWxpZGF0aW9ucy5kaXNhYmxlZCB8fCB0aGlzLm1ldGEuZGlzYWJsZWQgPT09IHRydWUgfHwgdGhpcy5mbGFncy5kaXNhYmxlZFxuICAgICAgfHwgKHRoaXMuZmxhZ3MudXBkYXRhYmxlID09PSBmYWxzZSAmJiB0aGlzLmlzUGVyc2lzdGVkUGFyZW50KTtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpIHtcbiAgICAvLyBUT0RPIGNvbmRpdGlvbnNcbiAgICByZXR1cm4gISEodGhpcy52YWxpZGF0aW9ucy5yZWFkb25seSB8fCB0aGlzLm1ldGEucmVhZG9ubHkgfHwgKHRoaXMuZmxhZ3MudXBkYXRhYmxlID09PSBmYWxzZSkpO1xuICB9XG5cbiAgZ2V0IHNlbmRUb1NlcnZlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pc1BlcnNpc3RlZFBhcmVudCA/ICh0aGlzLmZsYWdzLnVwZGF0YWJsZSAhPT0gZmFsc2UpIDogKHRoaXMuZmxhZ3MuY3JlYXRhYmxlICE9PSBmYWxzZSk7XG4gIH1cblxuICBnZXQgdWlJbnB1dCgpIHtcbiAgICBpZiAoIXRoaXMubWFpbklucHV0KSB7XG4gICAgICB0aGlzLm1haW5JbnB1dCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYWluOm5vdChbdHlwZT1cImhpZGRlblwiXSk6bm90KC5zdGFuZGFsb25lKScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tYWluSW5wdXQ7XG4gIH1cblxuICBnZXQgaXNPcHRpb25hbCgpIHtcbiAgICBjb25zdCBiYXNlT3B0aW9uYWwgPSB0aGlzLnByZXZpZXcgfHwgKCF0aGlzLm1ldGEudW5zZXQgJiYgIXRoaXMudmFsaWRhdGlvbnMucmVxdWlyZWQgJiYgIXRoaXMubWV0YS52aXNpYmxlKTtcbiAgICBzd2l0Y2ggKHRoaXMubWV0YS50eXBlKSB7XG4gICAgICBjYXNlICdjb21wb3NpdGUnOiB7XG4gICAgICAgIGlmIChiYXNlT3B0aW9uYWwpIHtcbiAgICAgICAgICByZXR1cm4gIXRoaXMubWV0YS5maWVsZHMuZmluZCgoZikgPT4gIWYuJG9wdGlvbmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjYXNlICdsaXN0Jzoge1xuICAgICAgICBpZiAoYmFzZU9wdGlvbmFsKSB7XG4gICAgICAgICAgcmV0dXJuICEodGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdIGluc3RhbmNlb2YgQXJyYXkgJiYgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdLmxlbmd0aCkgJiYgIXRoaXMubWV0YS5taW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gYmFzZU9wdGlvbmFsICYmIHR5cGVvZih0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV0pID09PSAndW5kZWZpbmVkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgc2V0dXAoaW5zdGFuY2UsIHBhcmVudCwgbWV0YSkgeyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYpIHtcbiAgICAgIGlmICh0aGlzLmludGVncmF0aW9uQ29kZSA9PT0gJ21vY2tzJykge1xuICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9ICdCcmFuZC1pY29uLXZvbmFnZSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW50ZWdyYXRpb25Db2RlKSB7XG4gICAgICAgICAgY2FzZSAnb2ZmaWNlMzY1JzpcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25JY29uID0gJ0JyYW5kLWljb24tb2ZmaWNlLWNvbG9yJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3N1Z2FyJzpcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25JY29uID0gJ0JyYW5kLWljb24tc3VnYXJjcm0tY29sb3InO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbXNkeW5hbWljcyc6XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9ICdCcmFuZC1pY29uLWR5bmFtaWNzLWNvbG9yJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9IGBCcmFuZC1pY29uLSR7KHRoaXMuaW50ZWdyYXRpb25Db2RlIHx8ICcnKS50b0xvd2VyQ2FzZSgpfS1jb2xvcmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLm1ldGEsICckb3B0aW9uYWwnLCB7XG4gICAgICAgIHZhbHVlOiAodHlwZW9mKHRoaXMuZGVmYXVsdCkgPT09ICd1bmRlZmluZWQnKSAmJiB0aGlzLmlzT3B0aW9uYWwsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZmxhZ3MgPSB0aGlzLm1ldGEuZmxhZ3MgfHwge307XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5tZXRhLCAnJGhpZGRlbicsIHtcbiAgICAgICAgdmFsdWU6ICF0aGlzLmlzUGVyc2lzdGVkUGFyZW50ICYmIHRoaXMuZmxhZ3MuY3JlYXRhYmxlID09PSBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEuaGlkZGVuKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEuaGlkZGVuKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBzZXRIaWRkZW5CeVByb3BlcnR5Q29uZmlnID0gKHBhcikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEuaGlkZGVuW3Bhcl0pID09PSAnYm9vbGVhbicpIHsgLy8gYW55IHZhbHVlIG1ha2VzIG1lIGhpZGRlblxuICAgICAgICAgICAgICB0aGlzLm1ldGEuJGhpZGRlbiA9ICEhdGhpcy5wYXJlbnRbcGFyXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZXh0cmFjdFZhbHVlQnlTbWFydFByb3AodGhpcy5wYXJlbnQsIHBhcik7XG4gICAgICAgICAgICAgIGNvbnN0IHBhclZhbHVlID0gdmFsdWUgPyAodmFsdWUuaWQgfHwgdmFsdWUudmFsdWUgfHwgdmFsdWUpIDogdmFsdWU7XG4gICAgICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuID0gdGhpcy5tZXRhLmhpZGRlbltwYXJdID09PSBwYXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvciAoY29uc3QgcGFyIG9mIE9iamVjdC5rZXlzKHRoaXMubWV0YS5oaWRkZW4pKSB7XG4gICAgICAgICAgICBzZXRIaWRkZW5CeVByb3BlcnR5Q29uZmlnKHBhcik7XG4gICAgICAgICAgICB0aGlzLnBhcmVudENoYW5nZVN1YmplY3Quc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkocGFyLnNwbGl0KCcuJylbMF0pKSB7XG4gICAgICAgICAgICAgICAgc2V0SGlkZGVuQnlQcm9wZXJ0eUNvbmZpZyhwYXIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1ldGEuJGhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YodGhpcy5tZXRhLmhpZGRlbikgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWYgKHRoaXMubWV0YS5oaWRkZW4udG9VcHBlckNhc2UoKSA9PT0gJ0NSRUFURScpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuID0gIXRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1ldGEuaGlkZGVuLnRvVXBwZXJDYXNlKCkgPT09ICdVUERBVEUnKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEuJGhpZGRlbiA9IHRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuPSAhIXRoaXMubWV0YS5oaWRkZW47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMubWV0YSwgJyRpbnZpc2libGUnLCB7XG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEudmlzaWJsZSkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5tZXRhLnZpc2libGUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGNvbnN0IHNldEludmlzaWJsZUJ5UHJvcGVydHlDb25maWcgPSAocGFyKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mKHRoaXMubWV0YS52aXNpYmxlW3Bhcl0pID09PSAnYm9vbGVhbicpIHsgLy8gYW55IHZhbHVlIG1ha2VzIG1lIGhpZGRlblxuICAgICAgICAgICAgICB0aGlzLm1ldGEuJGludmlzaWJsZSA9IGV4dHJhY3RCb29sZWFuVmFsdWVCeVNtYXJ0UHJvcCh0aGlzLnBhcmVudFtwYXJdLHRoaXMubWV0YS52aXNpYmxlW3Bhcl0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBleHRyYWN0VmFsdWVCeVNtYXJ0UHJvcCh0aGlzLnBhcmVudCwgcGFyKTtcbiAgICAgICAgICAgICAgY29uc3QgcGFyVmFsdWUgPSB2YWx1ZSA/ICh2YWx1ZS5pZCB8fCB2YWx1ZS52YWx1ZSB8fCB2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgdGhpcy5tZXRhLiRpbnZpc2libGUgPSB0aGlzLm1ldGEudmlzaWJsZVtwYXJdICE9PSBwYXJWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvciAoY29uc3QgcGFyIG9mIE9iamVjdC5rZXlzKHRoaXMubWV0YS52aXNpYmxlKSkge1xuICAgICAgICAgICAgc2V0SW52aXNpYmxlQnlQcm9wZXJ0eUNvbmZpZyhwYXIpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRDaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGlmICh2YWx1ZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eShwYXIuc3BsaXQoJy4nKVswXSkpIHtcbiAgICAgICAgICAgICAgICBzZXRJbnZpc2libGVCeVByb3BlcnR5Q29uZmlnKHBhcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWV0YS4kaW52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZih0aGlzLm1ldGEudmlzaWJsZSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWYgKHRoaXMubWV0YS52aXNpYmxlLnRvVXBwZXJDYXNlKCkgPT09ICdDUkVBVEUnKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEuJGludmlzaWJsZSA9IHRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1ldGEudmlzaWJsZS50b1VwcGVyQ2FzZSgpID09PSAnVVBEQVRFJykge1xuICAgICAgICAgICAgdGhpcy5tZXRhLiRpbnZpc2libGUgPSAhdGhpcy5pc1BlcnNpc3RlZFBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudGhlbWUgIT09ICdpbmhlcml0Jykge1xuICAgICAgICBjb25zdCBtZXRhVGhlbWUgPSB0aGlzLnRoZW1lID09PSAnZGFyaycgPyBtZXRhRGFyayA6IG1ldGFMaWdodDtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWV0YVRoZW1lLnByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCBtZXRhVGhlbWUucHJvcGVydGllc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy51aUlucHV0O1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBtb2RlbFRvVmFsdWUobSwgdmFsdWVUeXBlKSB7XG4gICAgaWYgKHR5cGVvZihtKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgICByZXR1cm4gbSA/IHsgaWQ6IG0uaWQsIGxhYmVsOiBtLmxhYmVsLCB0eXBlOiBtLnR5cGUgfSA6IG07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgIGlmIChtICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBtLmlkIHx8IG07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQodiwgMTApO1xuICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgaWYgKG0gIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG0uaWQgfHwgbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblN1YmplY3RDaGFuZ2UobW9kZWwpIHtcbiAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLnBhcmVudCwgJyRjaGFuZ2VTdWJqZWN0JykpIHtcbiAgICAgIGNvbnN0IHBhcmVudENoYW5nZTogYW55ID0ge307XG4gICAgICBwYXJlbnRDaGFuZ2VbdGhpcy5tZXRhLm5hbWVdID0gbW9kZWw7XG4gICAgICB0aGlzLnBhcmVudENoYW5nZVN1YmplY3QubmV4dChwYXJlbnRDaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2UobW9kZWwpIHtcbiAgICAvLyBUT0RPIGFkZCByZXNvdXJjZSB0eXBlIGxvZ2ljXG4gICAgaWYgKHRoaXMubW9kZWwgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gdGhpcy5tb2RlbC5tYXAoKG0pID0+IHRoaXMubW9kZWxUb1ZhbHVlKG0sIHRoaXMubWV0YS52YWx1ZVR5cGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gdGhpcy5tb2RlbFRvVmFsdWUobW9kZWwsIHRoaXMubWV0YS52YWx1ZVR5cGUpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQobW9kZWwpO1xuICAgIHRoaXMub25TdWJqZWN0Q2hhbmdlKG1vZGVsKTtcbiAgICAvLyBjb25zb2xlLmxvZygnb25DaGFuZ2UnLCBtb2RlbCk7XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5pbml0TW91c2VFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudCh0aGlzLmNoYW5nZUV2ZW50KTtcbiAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgdGhpcy5wcmV2TW9kZWwgPSB0aGlzLm1vZGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGEudW5zZXQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm1ldGEuJG9wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgZGVsZXRlIHRoaXMubW9kZWw7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMubW9kZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25zKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbkF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy52YWxpZGF0aW9uc1thdHRyaWJ1dGVdO1xuICAgICAgaWYgKHZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5tb2RlbElucHV0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbGlkYXRpb24udmFsdWUgfHwgdmFsaWRhdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgTWV0YUVsZW0ge1xuICBjc3NlbGVtOiBzdHJpbmc7XG4gIG1ldGE6IGFueTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1ldGFFbGVtRGlzYWJsZWFkYmxlIGltcGxlbWVudHMgTWV0YUVsZW0ge1xuICBjc3Ntb2RpZmllcjogc3RyaW5nO1xuICBhYnN0cmFjdCBtZXRhOiBhbnk7XG4gIGFic3RyYWN0IGNzc2VsZW06IHN0cmluZztcbiAgYWJzdHJhY3QgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgZGlzYWJsZSgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNzc21vZGlmaWVyKTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY3NzbW9kaWZpZXIpO1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -44,13 +44,13 @@ export class FieldBoolean extends FieldAbstract {
|
|
|
44
44
|
onOptionChange() {
|
|
45
45
|
this.onModelChange(this.model);
|
|
46
46
|
}
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldBoolean, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: FieldBoolean, selector: "ng-component", inputs: { meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label' [title]='meta.label || meta.name'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>\n {{ model ? '\u2714' : '\u2718'}}\n </div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element\" [ngClass]=\"{ 'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched) }\">\n\t<input class='model' type='hidden' [required]='validations.required' [(ngModel)]='model' #f='ngModel' [name]='name' />\n\t<div class=\"Vlt-switch\" *ngIf=\"meta.subtype === 'switch'\">\n\t\t<label style='vertical-align: middle;'>\n\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='model' (change)='onOptionChange()' [name]='name'/>\n\t\t\t<span class=\"Vlt-switch__slider\"></span>\n\t\t\t<span style='margin-left: 60px; line-height: 30px; white-space: nowrap;'>{{meta.label || meta.name}}</span>\n\t\t</label>\n\t</div>\n\t<div class=\"Vlt-checkbox\" *ngIf=\"meta.subtype !== 'switch'\">\n\t\t<label style='cursor: pointer;'>\n\t\t\t<span class=\"Vlt-checkbox__button\">\n\t\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='model' (change)='onOptionChange()' [name]='name'/>\n\t\t\t\t<span class=\"Vlt-checkbox__icon\"></span>\n\t\t\t</span>\n\t\t\t{{meta.label || meta.name}}\n\t\t</label>\n\t</div>\n\t<small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}} </span>\n </small>\n\t<small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-checkbox+.Vlt-form__element__hint{margin-top:4px}.Vlt-checkbox__button input:not(:checked)~.Vlt-checkbox__icon{background-color:var(--vgip-meta-input-bg-color);border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:hover:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:not(:checked)~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-active-border-color)}.Vlt-checkbox__button input:hover:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-accent-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.MetaModelPipe, name: "metaModel" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
|
|
47
49
|
}
|
|
48
|
-
|
|
49
|
-
FieldBoolean.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: FieldBoolean, selector: "ng-component", inputs: { meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label' [title]='meta.label || meta.name'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>\n {{ model ? '\u2714' : '\u2718'}}\n </div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element\" [ngClass]=\"{ 'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched) }\">\n\t<input class='model' type='hidden' [required]='validations.required' [(ngModel)]='model' #f='ngModel' [name]='name' />\n\t<div class=\"Vlt-switch\" *ngIf=\"meta.subtype === 'switch'\">\n\t\t<label style='vertical-align: middle;'>\n\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='model' (change)='onOptionChange()' [name]='name'/>\n\t\t\t<span class=\"Vlt-switch__slider\"></span>\n\t\t\t<span style='margin-left: 60px; line-height: 30px; white-space: nowrap;'>{{meta.label || meta.name}}</span>\n\t\t</label>\n\t</div>\n\t<div class=\"Vlt-checkbox\" *ngIf=\"meta.subtype !== 'switch'\">\n\t\t<label style='cursor: pointer;'>\n\t\t\t<span class=\"Vlt-checkbox__button\">\n\t\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='model' (change)='onOptionChange()' [name]='name'/>\n\t\t\t\t<span class=\"Vlt-checkbox__icon\"></span>\n\t\t\t</span>\n\t\t\t{{meta.label || meta.name}}\n\t\t</label>\n\t</div>\n\t<small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}} </span>\n </small>\n\t<small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-checkbox+.Vlt-form__element__hint{margin-top:4px}.Vlt-checkbox__button input:not(:checked)~.Vlt-checkbox__icon{background-color:var(--vgip-meta-input-bg-color);border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:hover:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:not(:checked)~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-active-border-color)}.Vlt-checkbox__button input:hover:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-accent-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.MetaModelPipe, name: "metaModel" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FieldBoolean, decorators: [{
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldBoolean, decorators: [{
|
|
51
51
|
type: Component,
|
|
52
52
|
args: [{ viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label' [title]='meta.label || meta.name'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>\n {{ model ? '\u2714' : '\u2718'}}\n </div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element\" [ngClass]=\"{ 'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched) }\">\n\t<input class='model' type='hidden' [required]='validations.required' [(ngModel)]='model' #f='ngModel' [name]='name' />\n\t<div class=\"Vlt-switch\" *ngIf=\"meta.subtype === 'switch'\">\n\t\t<label style='vertical-align: middle;'>\n\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='model' (change)='onOptionChange()' [name]='name'/>\n\t\t\t<span class=\"Vlt-switch__slider\"></span>\n\t\t\t<span style='margin-left: 60px; line-height: 30px; white-space: nowrap;'>{{meta.label || meta.name}}</span>\n\t\t</label>\n\t</div>\n\t<div class=\"Vlt-checkbox\" *ngIf=\"meta.subtype !== 'switch'\">\n\t\t<label style='cursor: pointer;'>\n\t\t\t<span class=\"Vlt-checkbox__button\">\n\t\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='model' (change)='onOptionChange()' [name]='name'/>\n\t\t\t\t<span class=\"Vlt-checkbox__icon\"></span>\n\t\t\t</span>\n\t\t\t{{meta.label || meta.name}}\n\t\t</label>\n\t</div>\n\t<small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}} </span>\n </small>\n\t<small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-checkbox+.Vlt-form__element__hint{margin-top:4px}.Vlt-checkbox__button input:not(:checked)~.Vlt-checkbox__icon{background-color:var(--vgip-meta-input-bg-color);border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:hover:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:not(:checked)~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-active-border-color)}.Vlt-checkbox__button input:hover:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-accent-color)}\n"] }]
|
|
53
53
|
}], propDecorators: { meta: [{
|
|
54
54
|
type: Input
|
|
55
55
|
}] } });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvZmllbGRCb29sZWFuL2luZGV4LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWV0YS11aS9zcmMvbGliL2ZpZWxkQm9vbGVhbi92aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUNqRCw2REFBNkQ7QUFPN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxhQUFhO0lBSTdDLFFBQVE7UUFDTixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pELEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNiLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUNqRCxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztpQkFDMUM7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUM5RSxLQUFLLEdBQUcsS0FBSyxDQUFDO2lCQUNmO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3hDLENBQUM7WUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzdCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksT0FBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxPQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLElBQUksT0FBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQzVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDOytHQW5DVSxZQUFZO21HQUFaLFlBQVkscUdDbEJ6Qixrc0RBOEJBLDhqRURkaUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7OzRGQUV4RCxZQUFZO2tCQUx4QixTQUFTO29DQUdPLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDOzhCQUcxRCxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBEYXRlOiAyMDE5LTA5LTE5IDE3OjM0OjQ5XG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDMtMjYgMTI6NTc6NTFcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRmllbGRBYnN0cmFjdCB9IGZyb20gJy4uL2ZpZWxkQWJzdHJhY3QnO1xuLy8gaW1wb3J0IHsgdE1ldGFGaWVsZCB9IGZyb20gJy4uLy4uLy4uL21ldGFUeXBlcy90TWV0YUZpZWxkJ1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZEJvb2xlYW4gZXh0ZW5kcyBGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbWV0YTogYW55O1xuICB2YWx1ZTogYm9vbGVhbjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBvcmlnVmFsdWUgPSB0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMucGFyZW50LCB0aGlzLm1ldGEubmFtZSwge1xuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWUgfHwgdmFsdWUuaWQgfHwgZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZSAmJiAodHlwZW9mKHRoaXMucHJldk1vZGVsKSA9PT0gJ2Jvb2xlYW4nKSAmJiB0aGlzLmlzUGVyc2lzdGVkUGFyZW50KSB7XG4gICAgICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZygnYm9vbGVhbiBmaWVsZCBzZXR0aW5nIG1vZGVsJywgdmFsdWUpO1xuICAgICAgICB0aGlzLm1vZGVsID0gKHZhbHVlID09PSB0cnVlKSB8fCAodmFsdWUgIT0gbnVsbCAmJiAoWyd0cnVlJywgJzEnXS5pbmRleE9mKHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xKSk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1vZGVsO1xuICAgICAgICB0aGlzLm1ldGEuJG9wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsO1xuICAgICAgfSxcbiAgICAgIGdldDogKCkgPT4gdGhpcy52YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuc2VuZFRvU2VydmVyLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZihvcmlnVmFsdWUpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gb3JpZ1ZhbHVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mKHRoaXMubWV0YS5kZWZhdWx0KSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mKHRoaXMubW9kZWwpID09PSAndW5kZWZpbmVkJyAmJiAhKHRoaXMubWV0YS5kZWZhdWx0IGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMubWV0YS5kZWZhdWx0KTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIG9uT3B0aW9uQ2hhbmdlKCkge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSh0aGlzLm1vZGVsKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz0ndmdpcC1tZXRhLWZpZWxkLXByZXZpZXcnICpuZ0lmPSdwcmV2aWV3ICYmIG1vZGVsJz5cbiAgPGRpdiBjbGFzcz0ndmdpcC1tZXRhLWZpZWxkLWxhYmVsJyBbdGl0bGVdPSdtZXRhLmxhYmVsIHx8IG1ldGEubmFtZSc+e3ttZXRhLmxhYmVsIHx8IG1ldGEubmFtZX19PC9kaXY+XG4gIDxkaXYgY2xhc3M9J3ZnaXAtbWV0YS1maWVsZC12YWx1ZSBfX2d1Jz5cbiAgICB7eyBtb2RlbCA/ICfinJQnIDogJ+KcmCd9fVxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj0nIXByZXZpZXcnIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnRcIiBbbmdDbGFzc109XCJ7ICdWbHQtZm9ybV9fZWxlbWVudC0tZXJyb3InOiBmLmludmFsaWQgJiYgKChmIHwgbWV0YU1vZGVsKS5fcGFyZW50LnN1Ym1pdHRlZCB8fCAoZiB8IG1ldGFNb2RlbCApLnRvdWNoZWQpIH1cIj5cblx0PGlucHV0IGNsYXNzPSdtb2RlbCcgdHlwZT0naGlkZGVuJyBbcmVxdWlyZWRdPSd2YWxpZGF0aW9ucy5yZXF1aXJlZCcgWyhuZ01vZGVsKV09J21vZGVsJyAjZj0nbmdNb2RlbCcgW25hbWVdPSduYW1lJyAvPlxuXHQ8ZGl2IGNsYXNzPVwiVmx0LXN3aXRjaFwiICpuZ0lmPVwibWV0YS5zdWJ0eXBlID09PSAnc3dpdGNoJ1wiPlxuXHRcdDxsYWJlbCBzdHlsZT0ndmVydGljYWwtYWxpZ246IG1pZGRsZTsnPlxuXHRcdFx0PGlucHV0IGNsYXNzPSdtb2RlbCcgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09J21vZGVsJyAoY2hhbmdlKT0nb25PcHRpb25DaGFuZ2UoKScgW25hbWVdPSduYW1lJy8+XG5cdFx0XHQ8c3BhbiBjbGFzcz1cIlZsdC1zd2l0Y2hfX3NsaWRlclwiPjwvc3Bhbj5cblx0XHRcdDxzcGFuIHN0eWxlPSdtYXJnaW4tbGVmdDogNjBweDsgbGluZS1oZWlnaHQ6IDMwcHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7Jz57e21ldGEubGFiZWwgfHwgbWV0YS5uYW1lfX08L3NwYW4+XG5cdFx0PC9sYWJlbD5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJWbHQtY2hlY2tib3hcIiAqbmdJZj1cIm1ldGEuc3VidHlwZSAhPT0gJ3N3aXRjaCdcIj5cblx0XHQ8bGFiZWwgc3R5bGU9J2N1cnNvcjogcG9pbnRlcjsnPlxuXHRcdFx0PHNwYW4gY2xhc3M9XCJWbHQtY2hlY2tib3hfX2J1dHRvblwiPlxuXHRcdFx0XHQ8aW5wdXQgY2xhc3M9J21vZGVsJyB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT0nbW9kZWwnIChjaGFuZ2UpPSdvbk9wdGlvbkNoYW5nZSgpJyBbbmFtZV09J25hbWUnLz5cblx0XHRcdFx0PHNwYW4gY2xhc3M9XCJWbHQtY2hlY2tib3hfX2ljb25cIj48L3NwYW4+XG5cdFx0XHQ8L3NwYW4+XG5cdFx0XHR7e21ldGEubGFiZWwgfHwgbWV0YS5uYW1lfX1cblx0XHQ8L2xhYmVsPlxuXHQ8L2Rpdj5cblx0PHNtYWxsICpuZ0lmPSdmLmludmFsaWQgJiYgKChmIHwgbWV0YU1vZGVsKS5fcGFyZW50LnN1Ym1pdHRlZCB8fCAoKGYgfCBtZXRhTW9kZWwgKS50b3VjaGVkKSknIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnRfX2Vycm9yXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJmLmVycm9ycy5yZXF1aXJlZFwiPlJlcXVpcmVkPC9zcGFuPlxuICAgIDxzcGFuICpuZ0lmPVwiZi5lcnJvcnMuY3VzdG9tXCI+e3tmLmVycm9ycy5jdXN0b219fSZuYnNwOzwvc3Bhbj5cbiAgPC9zbWFsbD5cblx0PHNtYWxsICpuZ0lmPSdtZXRhLmhpbnQnIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnRfX2hpbnRcIj57e21ldGEuaGludH19PC9zbWFsbD5cbjwvZGl2PlxuIl19
|
|
@@ -54,13 +54,13 @@ export class FieldComposite extends FieldAbstract {
|
|
|
54
54
|
this.value = this.parent;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldComposite, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: FieldComposite, selector: "ng-component", inputs: { meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{ 'Vlt-grid Vlt-grid--narrow': isRow }\">\n <ng-container *ngFor='let field of fields'>\n <div style='margin: 0;' [ngClass]=\"{ 'Vlt-col': isRow, 'Vlt-col--1of3': isRow && fields.length > 3 }\" *ngIf=\"!field.$invisible\">\n <vgip-meta-field *ngIf='!meta.$invisible' [ngClass]=\"{ shown: !field.$invisible}\" [index]='index' [scope]='scope' [meta]='field'\n [parent]='value' [integrationCode]='integrationCode' [resourceType]='resourceType' [preview]='preview'\n theme='inherit'></vgip-meta-field>\n </div>\n </ng-container>\n</div>\n", styles: ["div>vgip-meta-field{display:none}div>vgip-meta-field.shown{display:initial}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MetaField, selector: "vgip-meta-field", inputs: ["meta", "parent", "integrationCode", "resourceType", "index", "scope", "preview", "theme"], outputs: ["onChange", "onLeave"] }] }); }
|
|
57
59
|
}
|
|
58
|
-
|
|
59
|
-
FieldComposite.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", type: FieldComposite, selector: "ng-component", inputs: { meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<div [ngClass]=\"{ 'Vlt-grid Vlt-grid--narrow': isRow }\">\n <ng-container *ngFor='let field of fields'>\n <div style='margin: 0;' [ngClass]=\"{ 'Vlt-col': isRow, 'Vlt-col--1of3': isRow && fields.length > 3 }\" *ngIf=\"!field.$invisible\">\n <vgip-meta-field *ngIf='!meta.$invisible' [ngClass]=\"{ shown: !field.$invisible}\" [index]='index' [scope]='scope' [meta]='field'\n [parent]='value' [integrationCode]='integrationCode' [resourceType]='resourceType' [preview]='preview'\n theme='inherit'></vgip-meta-field>\n </div>\n </ng-container>\n</div>\n", styles: ["div>vgip-meta-field{display:none}div>vgip-meta-field.shown{display:initial}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MetaField, selector: "vgip-meta-field", inputs: ["meta", "parent", "integrationCode", "resourceType", "index", "scope", "preview", "theme"], outputs: ["onChange", "onLeave"] }] });
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: FieldComposite, decorators: [{
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: FieldComposite, decorators: [{
|
|
61
61
|
type: Component,
|
|
62
62
|
args: [{ template: "<div [ngClass]=\"{ 'Vlt-grid Vlt-grid--narrow': isRow }\">\n <ng-container *ngFor='let field of fields'>\n <div style='margin: 0;' [ngClass]=\"{ 'Vlt-col': isRow, 'Vlt-col--1of3': isRow && fields.length > 3 }\" *ngIf=\"!field.$invisible\">\n <vgip-meta-field *ngIf='!meta.$invisible' [ngClass]=\"{ shown: !field.$invisible}\" [index]='index' [scope]='scope' [meta]='field'\n [parent]='value' [integrationCode]='integrationCode' [resourceType]='resourceType' [preview]='preview'\n theme='inherit'></vgip-meta-field>\n </div>\n </ng-container>\n</div>\n", styles: ["div>vgip-meta-field{display:none}div>vgip-meta-field.shown{display:initial}\n"] }]
|
|
63
63
|
}], propDecorators: { meta: [{
|
|
64
64
|
type: Input
|
|
65
65
|
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvZmllbGRDb21wb3NpdGUvaW5kZXgudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvZmllbGRDb21wb3NpdGUvdmlldy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQU1qRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFJL0MsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4QyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLEVBQUUsNkNBQTZDO2dCQUN4RSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDZjtZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLG1CQUFtQjtRQUNuQixJQUFJLGlCQUF5QixDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9DLGlCQUFpQixHQUFHLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDakQsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxLQUFLLEVBQUU7d0JBQ1QsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDMUI7cUJBQ0Y7Z0JBQ0gsQ0FBQztnQkFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUNSLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO3dCQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7cUJBQ25CO2dCQUNILENBQUM7Z0JBQ0QsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUM3QixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFDLENBQUM7WUFDSCxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTt3QkFDckIsQ0FBQyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7cUJBQ25CO2lCQUNGO2dCQUNELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDekQsSUFBSSxnQkFBZ0IsRUFBRTtvQkFDcEIsQ0FBQyxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVFQUF1RTtpQkFDdEc7YUFDRjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDMUI7SUFDSCxDQUFDOytHQXREVSxjQUFjO21HQUFkLGNBQWMscUdDUDNCLG9rQkFTQTs7NEZERmEsY0FBYztrQkFKMUIsU0FBUzs7OEJBS0MsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZEFic3RyYWN0IH0gZnJvbSAnLi4vZmllbGRBYnN0cmFjdCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZENvbXBvc2l0ZSBleHRlbmRzIEZpZWxkQWJzdHJhY3QgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBtZXRhOiBhbnk7XG4gIHZhbHVlOiBhbnk7XG5cbiAgZ2V0IGlzUm93KCkge1xuICAgIHJldHVybiB0aGlzLm1ldGEuc3VidHlwZSAhPT0gJ2NvbHVtbic7XG4gIH1cblxuICBnZXQgZmllbGRzKCkge1xuICAgIHJldHVybiAodGhpcy5tZXRhLmZpZWxkcyB8fCBbXSkubWFwKChmKSA9PiB7XG4gICAgICBpZiAoZi50eXBlID09PSAndGV4dGFyZWEnKSB7IC8vIG5vIHRleHRhcmVhcyBpbnNpZGUgY29tcG9zaXRlICh1c2Ugc3RyaW5nKVxuICAgICAgICBkZWxldGUgZi50eXBlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGY7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBzdXBlci5uZ09uSW5pdCgpXG4gICAgbGV0IG5lc3RlZEZpZWxkc1JlZ2V4OiBSZWdFeHA7XG4gICAgaWYgKHRoaXMubWV0YS5uYW1lKSB7XG4gICAgICB0aGlzLnNjb3BlICs9IGAke3RoaXMubWV0YS5uYW1lfV9gO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXSB8fCB7fTtcbiAgICAgIG5lc3RlZEZpZWxkc1JlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7dGhpcy5tZXRhLm5hbWV9XFxcXC4oLiopYCk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5wYXJlbnQsIHRoaXMubWV0YS5uYW1lLCB7XG4gICAgICAgIHNldDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVbdl0gPSB2YWx1ZVt2XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldDogKCkgPT4ge1xuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKSAhPT0gJ3t9Jykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0aGlzLnNlbmRUb1NlcnZlcixcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLm1ldGEuZmllbGRzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUm93KSB7XG4gICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICBmLnR5cGUgPSAnc3RyaW5nJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmVzdGVkRmllbGRNYXRjaCA9IGYubmFtZS5tYXRjaChuZXN0ZWRGaWVsZHNSZWdleCk7XG4gICAgICAgIGlmIChuZXN0ZWRGaWVsZE1hdGNoKSB7XG4gICAgICAgICAgZi5uYW1lID0gbmVzdGVkRmllbGRNYXRjaFsxXTsgLy8gZm9yIFZHSVMgVjIgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBub3JtYWxpemUgbmFtZSB3aXRoIGRvdHRlZCBzeW50YXhcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW25nQ2xhc3NdPVwieyAnVmx0LWdyaWQgVmx0LWdyaWQtLW5hcnJvdyc6IGlzUm93IH1cIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9J2xldCBmaWVsZCBvZiBmaWVsZHMnPlxuICAgIDxkaXYgc3R5bGU9J21hcmdpbjogMDsnIFtuZ0NsYXNzXT1cInsgJ1ZsdC1jb2wnOiBpc1JvdywgJ1ZsdC1jb2wtLTFvZjMnOiBpc1JvdyAmJiBmaWVsZHMubGVuZ3RoID4gMyB9XCIgKm5nSWY9XCIhZmllbGQuJGludmlzaWJsZVwiPlxuICAgICAgPHZnaXAtbWV0YS1maWVsZCAqbmdJZj0nIW1ldGEuJGludmlzaWJsZScgW25nQ2xhc3NdPVwieyBzaG93bjogIWZpZWxkLiRpbnZpc2libGV9XCIgW2luZGV4XT0naW5kZXgnIFtzY29wZV09J3Njb3BlJyBbbWV0YV09J2ZpZWxkJ1xuICAgICAgICBbcGFyZW50XT0ndmFsdWUnIFtpbnRlZ3JhdGlvbkNvZGVdPSdpbnRlZ3JhdGlvbkNvZGUnIFtyZXNvdXJjZVR5cGVdPSdyZXNvdXJjZVR5cGUnIFtwcmV2aWV3XT0ncHJldmlldydcbiAgICAgICAgdGhlbWU9J2luaGVyaXQnPjwvdmdpcC1tZXRhLWZpZWxkPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|