mmhglobal-dynamicform 1.2.3 → 1.3.2

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 (198) hide show
  1. package/README.md +14 -2
  2. package/esm2020/lib/directives/fieldelement.directive.mjs +16 -0
  3. package/esm2020/lib/directives/scrollbar.theme.directive.mjs +43 -0
  4. package/esm2020/lib/mmhglobal-dynamicform.module.mjs +464 -0
  5. package/esm2020/lib/services/main.service.mjs +752 -0
  6. package/esm2020/lib/services/zcomponent.debug.service.mjs +621 -0
  7. package/esm2020/lib/services/zcomponent.service.mjs +81 -0
  8. package/esm2020/lib/uiactionbutton/uiactionbutton.component.mjs +265 -0
  9. package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +67 -0
  10. package/esm2020/lib/uicontent/uicontent.component.mjs +41 -0
  11. package/esm2020/lib/uiheader/uiheader.component.mjs +66 -0
  12. package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +35 -0
  13. package/esm2020/lib/uimenucontent/uimenucontent.component.mjs +37 -0
  14. package/{esm2015/lib/uipage/uipage.component.js → esm2020/lib/uipage/uipage.component.mjs} +12 -13
  15. package/esm2020/lib/uivalidationmessage/uivalidationmessage.component.mjs +41 -0
  16. package/esm2020/lib/zbullet/zbullet.component.mjs +74 -0
  17. package/esm2020/lib/zbuttons/zbuttons.component.mjs +171 -0
  18. package/esm2020/lib/zcard/zcard.component.mjs +72 -0
  19. package/esm2020/lib/zchart/zchart.component.mjs +201 -0
  20. package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +166 -0
  21. package/esm2020/lib/zchip/zchip.component.mjs +121 -0
  22. package/esm2020/lib/zcodeeditor/zcodeeditor.component.mjs +169 -0
  23. package/esm2020/lib/zcodeeditor/zcodeeditor.pipe.mjs +60 -0
  24. package/esm2020/lib/zdaterange/zdaterange.component.mjs +70 -0
  25. package/esm2020/lib/zdatetime/dateParser.pipe.mjs +30 -0
  26. package/esm2020/lib/zdatetime/zdatetime.component.mjs +285 -0
  27. package/esm2020/lib/zdiv/zdiv.component.mjs +50 -0
  28. package/esm2020/lib/zdiv/zdiv.pipe.mjs +31 -0
  29. package/esm2020/lib/zform/zform.component.mjs +147 -0
  30. package/esm2020/lib/zformcontrol/zformcontrol.component.mjs +49 -0
  31. package/esm2020/lib/zgauge/zgauge.component.mjs +148 -0
  32. package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +135 -0
  33. package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +490 -0
  34. package/esm2020/lib/zgrid/zgrid.component.mjs +847 -0
  35. package/esm2020/lib/zgrid/zgrid.popup.anchor-target.directive.mjs +17 -0
  36. package/esm2020/lib/zimg/zimg.component.mjs +121 -0
  37. package/esm2020/lib/zkcard/zkcard.component.mjs +367 -0
  38. package/esm2020/lib/zlabel/zlabel.component.mjs +62 -0
  39. package/esm2020/lib/zmfb/zmfb.component.mjs +215 -0
  40. package/esm2020/lib/zmodal/zmodal-mobile.component.mjs +120 -0
  41. package/esm2020/lib/zmodal/zmodal.component.mjs +125 -0
  42. package/esm2020/lib/znumeric/znumeric.component.mjs +119 -0
  43. package/esm2020/lib/zpostselectinput/zpostselectinput.component.mjs +352 -0
  44. package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +204 -0
  45. package/esm2020/lib/zreport/zreport.component.mjs +105 -0
  46. package/esm2020/lib/zreport/zreport.config.mjs +117 -0
  47. package/esm2020/lib/zscheduler/zscheduler.component.mjs +267 -0
  48. package/{esm2015/lib/zscheduler/zscheduler.toolbar.component.js → esm2020/lib/zscheduler/zscheduler.toolbar.component.mjs} +55 -19
  49. package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +577 -0
  50. package/esm2020/lib/zselectmultiple/zselectmultiple.directive.mjs +35 -0
  51. package/esm2020/lib/ztab/ztab.component.mjs +187 -0
  52. package/esm2020/lib/ztab/ztab.pipe.mjs +26 -0
  53. package/esm2020/lib/ztext/ztext.component.mjs +297 -0
  54. package/esm2020/lib/ztextarea/ztextarea.component.mjs +109 -0
  55. package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +57 -0
  56. package/esm2020/lib/ztree/ztree.component.mjs +380 -0
  57. package/esm2020/lib/ztreelist/ztreelist.component.mjs +544 -0
  58. package/esm2020/lib/ztrendcard/ztrendcard.component.mjs +92 -0
  59. package/esm2020/lib/zudf/zudf.component.mjs +205 -0
  60. package/esm2020/lib/zunknown/zunknown.component.mjs +20 -0
  61. package/esm2020/lib/zupload/zupload.component.mjs +359 -0
  62. package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +216 -0
  63. package/esm2020/mmhglobal-dynamicform.mjs +5 -0
  64. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  65. package/fesm2015/mmhglobal-dynamicform.mjs +10790 -0
  66. package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -0
  67. package/fesm2020/mmhglobal-dynamicform.mjs +10779 -0
  68. package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -0
  69. package/lib/directives/fieldelement.directive.d.ts +3 -0
  70. package/lib/directives/scrollbar.theme.directive.d.ts +3 -0
  71. package/lib/mmhglobal-dynamicform.module.d.ts +92 -0
  72. package/lib/services/main.service.d.ts +3 -0
  73. package/lib/services/zcomponent.debug.service.d.ts +8 -5
  74. package/lib/services/zcomponent.service.d.ts +7 -2
  75. package/lib/uiactionbutton/uiactionbutton.component.d.ts +3 -0
  76. package/lib/uiappmenucontent/uiappmenucontent.component.d.ts +3 -0
  77. package/lib/uicontent/uicontent.component.d.ts +3 -0
  78. package/lib/uiheader/uiheader.component.d.ts +3 -0
  79. package/lib/uimenubutton/uimenubutton.component.d.ts +3 -0
  80. package/lib/uimenucontent/uimenucontent.component.d.ts +3 -0
  81. package/lib/uipage/uipage.component.d.ts +3 -0
  82. package/lib/uivalidationmessage/uivalidationmessage.component.d.ts +3 -0
  83. package/lib/zbullet/zbullet.component.d.ts +3 -0
  84. package/lib/zbuttons/zbuttons.component.d.ts +3 -0
  85. package/lib/zcard/zcard.component.d.ts +3 -0
  86. package/lib/zchart/zchart.component.d.ts +3 -0
  87. package/lib/zcheckbox/zcheckbox.component.d.ts +3 -0
  88. package/lib/zchip/zchip.component.d.ts +3 -0
  89. package/lib/zcodeeditor/zcodeeditor.component.d.ts +3 -0
  90. package/lib/zcodeeditor/zcodeeditor.pipe.d.ts +3 -0
  91. package/lib/zdaterange/zdaterange.component.d.ts +3 -0
  92. package/lib/zdatetime/dateParser.pipe.d.ts +3 -0
  93. package/lib/zdatetime/zdatetime.component.d.ts +3 -0
  94. package/lib/zdiv/zdiv.component.d.ts +3 -0
  95. package/lib/zdiv/zdiv.pipe.d.ts +3 -0
  96. package/lib/zform/zform.component.d.ts +3 -0
  97. package/lib/zformcontrol/zformcontrol.component.d.ts +3 -0
  98. package/lib/zgauge/zgauge.component.d.ts +3 -0
  99. package/lib/zgrid/date-range-cell-filter.component.d.ts +3 -0
  100. package/lib/zgrid/zgrid.binding.directive.d.ts +3 -0
  101. package/lib/zgrid/zgrid.component.d.ts +4 -1
  102. package/lib/zgrid/zgrid.popup.anchor-target.directive.d.ts +3 -0
  103. package/lib/zimg/zimg.component.d.ts +3 -0
  104. package/lib/zkcard/zkcard.component.d.ts +3 -0
  105. package/lib/zlabel/zlabel.component.d.ts +3 -0
  106. package/lib/zmfb/zmfb.component.d.ts +3 -0
  107. package/lib/zmodal/zmodal-mobile.component.d.ts +3 -0
  108. package/lib/zmodal/zmodal.component.d.ts +3 -0
  109. package/lib/znumeric/znumeric.component.d.ts +3 -0
  110. package/lib/zpostselectinput/zpostselectinput.component.d.ts +3 -0
  111. package/lib/zquerybuilder/zquerybuilder.component.d.ts +3 -0
  112. package/lib/zreport/zreport.component.d.ts +3 -0
  113. package/lib/zreport/zreport.config.d.ts +3 -0
  114. package/lib/zscheduler/zscheduler.component.d.ts +3 -0
  115. package/lib/zscheduler/zscheduler.toolbar.component.d.ts +3 -0
  116. package/lib/zselectmultiple/zselectmultiple.component.d.ts +3 -0
  117. package/lib/zselectmultiple/zselectmultiple.directive.d.ts +3 -0
  118. package/lib/ztab/ztab.component.d.ts +3 -0
  119. package/lib/ztab/ztab.pipe.d.ts +3 -0
  120. package/lib/ztext/ztext.component.d.ts +3 -0
  121. package/lib/ztextarea/ztextarea.component.d.ts +3 -0
  122. package/lib/ztexteditor/ztexteditor.component.d.ts +3 -0
  123. package/lib/ztree/ztree.component.d.ts +3 -0
  124. package/lib/ztreelist/ztreelist.component.d.ts +3 -0
  125. package/lib/ztrendcard/ztrendcard.component.d.ts +3 -0
  126. package/lib/zudf/zudf.component.d.ts +3 -0
  127. package/lib/zunknown/zunknown.component.d.ts +3 -0
  128. package/lib/zupload/zupload.component.d.ts +3 -0
  129. package/lib/zworkflowbuttons/zworkflowbuttons.component.d.ts +3 -0
  130. package/mmhglobal-dynamicform.d.ts +1 -2
  131. package/package.json +20 -11
  132. package/bundles/mmhglobal-dynamicform.umd.js +0 -11360
  133. package/bundles/mmhglobal-dynamicform.umd.js.map +0 -1
  134. package/bundles/mmhglobal-dynamicform.umd.min.js +0 -16
  135. package/bundles/mmhglobal-dynamicform.umd.min.js.map +0 -1
  136. package/esm2015/lib/directives/fieldelement.directive.js +0 -15
  137. package/esm2015/lib/directives/scrollbar.theme.directive.js +0 -42
  138. package/esm2015/lib/mmhglobal-dynamicform.module.js +0 -314
  139. package/esm2015/lib/services/main.service.js +0 -766
  140. package/esm2015/lib/services/zcomponent.debug.service.js +0 -626
  141. package/esm2015/lib/services/zcomponent.service.js +0 -167
  142. package/esm2015/lib/uiactionbutton/uiactionbutton.component.js +0 -271
  143. package/esm2015/lib/uiappmenucontent/uiappmenucontent.component.js +0 -69
  144. package/esm2015/lib/uicontent/uicontent.component.js +0 -41
  145. package/esm2015/lib/uiheader/uiheader.component.js +0 -65
  146. package/esm2015/lib/uimenubutton/uimenubutton.component.js +0 -40
  147. package/esm2015/lib/uimenucontent/uimenucontent.component.js +0 -34
  148. package/esm2015/lib/uivalidationmessage/uivalidationmessage.component.js +0 -39
  149. package/esm2015/lib/zbullet/zbullet.component.js +0 -71
  150. package/esm2015/lib/zbuttons/zbuttons.component.js +0 -168
  151. package/esm2015/lib/zcard/zcard.component.js +0 -68
  152. package/esm2015/lib/zchart/zchart.component.js +0 -199
  153. package/esm2015/lib/zcheckbox/zcheckbox.component.js +0 -158
  154. package/esm2015/lib/zchip/zchip.component.js +0 -117
  155. package/esm2015/lib/zcodeeditor/zcodeeditor.component.js +0 -163
  156. package/esm2015/lib/zcodeeditor/zcodeeditor.pipe.js +0 -56
  157. package/esm2015/lib/zdaterange/zdaterange.component.js +0 -63
  158. package/esm2015/lib/zdatetime/dateParser.pipe.js +0 -26
  159. package/esm2015/lib/zdatetime/zdatetime.component.js +0 -279
  160. package/esm2015/lib/zdiv/zdiv.component.js +0 -48
  161. package/esm2015/lib/zdiv/zdiv.pipe.js +0 -27
  162. package/esm2015/lib/zform/zform.component.js +0 -148
  163. package/esm2015/lib/zformcontrol/zformcontrol.component.js +0 -49
  164. package/esm2015/lib/zgauge/zgauge.component.js +0 -146
  165. package/esm2015/lib/zgrid/date-range-cell-filter.component.js +0 -102
  166. package/esm2015/lib/zgrid/zgrid.binding.directive.js +0 -493
  167. package/esm2015/lib/zgrid/zgrid.component.js +0 -834
  168. package/esm2015/lib/zgrid/zgrid.popup.anchor-target.directive.js +0 -16
  169. package/esm2015/lib/zimg/zimg.component.js +0 -123
  170. package/esm2015/lib/zkcard/zkcard.component.js +0 -372
  171. package/esm2015/lib/zlabel/zlabel.component.js +0 -59
  172. package/esm2015/lib/zmfb/zmfb.component.js +0 -215
  173. package/esm2015/lib/zmodal/zmodal-mobile.component.js +0 -119
  174. package/esm2015/lib/zmodal/zmodal.component.js +0 -130
  175. package/esm2015/lib/znumeric/znumeric.component.js +0 -114
  176. package/esm2015/lib/zpostselectinput/zpostselectinput.component.js +0 -345
  177. package/esm2015/lib/zquerybuilder/zquerybuilder.component.js +0 -196
  178. package/esm2015/lib/zreport/zreport.component.js +0 -104
  179. package/esm2015/lib/zreport/zreport.config.js +0 -115
  180. package/esm2015/lib/zscheduler/zscheduler.component.js +0 -268
  181. package/esm2015/lib/zselectmultiple/zselectmultiple.component.js +0 -565
  182. package/esm2015/lib/zselectmultiple/zselectmultiple.directive.js +0 -28
  183. package/esm2015/lib/ztab/ztab.component.js +0 -180
  184. package/esm2015/lib/ztab/ztab.pipe.js +0 -22
  185. package/esm2015/lib/ztext/ztext.component.js +0 -286
  186. package/esm2015/lib/ztextarea/ztextarea.component.js +0 -104
  187. package/esm2015/lib/ztexteditor/ztexteditor.component.js +0 -52
  188. package/esm2015/lib/ztree/ztree.component.js +0 -374
  189. package/esm2015/lib/ztreelist/ztreelist.component.js +0 -539
  190. package/esm2015/lib/ztrendcard/ztrendcard.component.js +0 -89
  191. package/esm2015/lib/zudf/zudf.component.js +0 -206
  192. package/esm2015/lib/zunknown/zunknown.component.js +0 -20
  193. package/esm2015/lib/zupload/zupload.component.js +0 -358
  194. package/esm2015/lib/zworkflowbuttons/zworkflowbuttons.component.js +0 -215
  195. package/esm2015/mmhglobal-dynamicform.js +0 -7
  196. package/fesm2015/mmhglobal-dynamicform.js +0 -10729
  197. package/fesm2015/mmhglobal-dynamicform.js.map +0 -1
  198. package/mmhglobal-dynamicform.metadata.json +0 -1
@@ -0,0 +1,166 @@
1
+ /********** Angular **********/
2
+ import { Component, Input } from "@angular/core";
3
+ import { Validators } from "@angular/forms";
4
+ /********** Ionic **********/
5
+ /********** Plugin **********/
6
+ /********** Component & Service **********/
7
+ import { ZComponentProperties, ZComponentHelper, } from "mmhglobal-zcore";
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ionic/angular";
10
+ import * as i2 from "@fortawesome/angular-fontawesome";
11
+ import * as i3 from "@progress/kendo-angular-inputs";
12
+ import * as i4 from "@progress/kendo-angular-label";
13
+ import * as i5 from "../uivalidationmessage/uivalidationmessage.component";
14
+ import * as i6 from "@angular/common";
15
+ import * as i7 from "@angular/forms";
16
+ import * as i8 from "@progress/kendo-angular-tooltip";
17
+ export class ZcheckboxComponent {
18
+ constructor() {
19
+ this.componentProperties = new ZComponentProperties();
20
+ this.showTooltipsInfoIcon = false;
21
+ this.showTooltipsInfoBySide = false;
22
+ this.tooltipsInfo = null;
23
+ this.tooltipsDisplayText = null;
24
+ this.useKendoSwitch = false;
25
+ this.setEnable = (status) => {
26
+ const fc = this.group.form.controls[this.data.Value];
27
+ status ? fc.enable() : fc.disable();
28
+ this.componentProperties.isReadOnly = !status;
29
+ };
30
+ this.setVisible = (status) => {
31
+ this.componentProperties.isVisible = status;
32
+ this.data.Visible = status;
33
+ };
34
+ this.setRequire = (status) => {
35
+ this.componentProperties.isRequired = status;
36
+ ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
37
+ };
38
+ }
39
+ ngOnInit() {
40
+ ZComponentHelper.setComponentProperties(this);
41
+ ZComponentHelper.registerComponent(this);
42
+ this.tooltipsInfo = this.data['TooltipsInfo'];
43
+ if (this.tooltipsInfo) {
44
+ if ((this.tooltipsInfo['Icon'] != null || this.tooltipsInfo['Icon'] != undefined) && !this.isMobileScreen()) {
45
+ this.showTooltipsInfoIcon = true;
46
+ this.setTooltipsInfoIcon();
47
+ }
48
+ if (this.tooltipsInfo['SideBySide']) {
49
+ this.showTooltipsInfoBySide = true;
50
+ }
51
+ this.setTooltipsDisplayText();
52
+ }
53
+ this.useKendoSwitch = this.data.UseKendoSwitch ? this.data.UseKendoSwitch : false;
54
+ }
55
+ isMobileScreen() {
56
+ const v = ZComponentHelper.isMobileScreen();
57
+ return v;
58
+ }
59
+ onSwitchChange(event) {
60
+ ZComponentHelper.setModelValue(this.data.Value, event, this.group);
61
+ this.group.subject.next({
62
+ type: "onChange",
63
+ target: this.data.OnChange,
64
+ data: { value: event, field: this.data },
65
+ });
66
+ }
67
+ onChange(event) {
68
+ if (this.data.OnChange) {
69
+ const callFunc = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnChange);
70
+ if (typeof callFunc === "function") {
71
+ const newFunc = callFunc.bind(this.group.ctrlScope);
72
+ newFunc(event);
73
+ }
74
+ }
75
+ }
76
+ getLabelStyle() {
77
+ return {
78
+ order: this.data.LabelOrder &&
79
+ this.data.LabelOrder === "end" &&
80
+ this.data.LabelPosition !== "stacked"
81
+ ? 2
82
+ : 0,
83
+ "white-space": "normal",
84
+ };
85
+ }
86
+ getCheckboxClass() {
87
+ const classList = [];
88
+ if (this.data.LabelDivClass) {
89
+ this.data.LabelDivClass.split(" ").forEach((x) => {
90
+ if (x.indexOf("col") !== -1) {
91
+ const divClassSegment = x.split("-");
92
+ divClassSegment[divClassSegment.length - 1] = (12 - parseInt(divClassSegment[divClassSegment.length - 1])).toString();
93
+ classList.push(divClassSegment.join("-"));
94
+ }
95
+ else {
96
+ classList.push(x);
97
+ }
98
+ });
99
+ }
100
+ return classList.join(" ");
101
+ }
102
+ getClass(form, data) {
103
+ return `ionItem ${this.data.Class}`;
104
+ }
105
+ /********** TooltipsInfo **********/
106
+ setTooltipsInfoColor() {
107
+ if (this.tooltipsInfo) {
108
+ if (this.tooltipsInfo['TextColor']) {
109
+ return this.tooltipsInfo['TextColor'];
110
+ }
111
+ }
112
+ return "#acacac"; // default grey
113
+ }
114
+ setTooltipsInfoIcon(displayIcon) {
115
+ if (this.showTooltipsInfoIcon) {
116
+ if (this.tooltipsInfo.Icon != '') {
117
+ if (displayIcon) {
118
+ this.tooltipsDisplayIcon = displayIcon;
119
+ }
120
+ else {
121
+ this.tooltipsDisplayIcon = this.tooltipsInfo.Icon;
122
+ }
123
+ }
124
+ else {
125
+ this.tooltipsDisplayIcon = 'question-circle';
126
+ }
127
+ }
128
+ }
129
+ setTooltipsDisplayText(displayText) {
130
+ if (this.tooltipsInfo) {
131
+ if (displayText) {
132
+ this.tooltipsDisplayText = displayText;
133
+ }
134
+ else {
135
+ this.tooltipsDisplayText = this.tooltipsInfo.DisplayText;
136
+ }
137
+ }
138
+ else {
139
+ this.tooltipsDisplayText = '<Display text error>';
140
+ }
141
+ }
142
+ setTooltipsInfoSideBySide() {
143
+ if (this.tooltipsInfo) {
144
+ if (this.tooltipsInfo['SideBySide'] && !this.showTooltipsInfoIcon) {
145
+ return 'tooltipsinfo-right';
146
+ }
147
+ else {
148
+ return '';
149
+ }
150
+ }
151
+ return 'notooltipsinfo-adjustment';
152
+ }
153
+ }
154
+ ZcheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZcheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
155
+ ZcheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZcheckboxComponent, selector: "app-zcheckbox", inputs: { data: "data", group: "group", form: "form" }, ngImport: i0, template: "<ion-item [ngClass]=\"getClass(form, data)\" [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [attr.for]=\"data.Value\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n [ngClass]=\"data.LabelDivClass\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">\r\n *\r\n </ion-text>\r\n <span kendoTooltip\r\n *ngIf=\"!isMobileScreen() && tooltipsInfo && showTooltipsInfoIcon\"\r\n [title]=\"tooltipsDisplayText\">\r\n <fa-icon [icon]=\"tooltipsDisplayIcon\"\r\n class=\"tooltipsinfo-icon\">\r\n </fa-icon>\r\n </span>\r\n </ion-label>\r\n <div class=\"ion-row divcheckbox\" [ngClass]=\"getCheckboxClass()\">\r\n <div *ngIf=\"useKendoSwitch\">\r\n <span>\r\n <kendo-switch [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (valueChange)=\"onSwitchChange($event)\"\r\n style=\"margin: 7px 0 0 0; width: 100%\"></kendo-switch>\r\n </span>\r\n </div>\r\n <div *ngIf=\"!useKendoSwitch\" [class]=\"setTooltipsInfoSideBySide()\">\r\n <!--<input kendoCheckBox\r\n type=\"checkbox\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (valueChange)=\"onChange($event)\" />-->\r\n <ion-checkbox style=\"margin: 8px 0;\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n color=\"primary\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (ionChange)=\"onChange($event)\"></ion-checkbox>\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon\"\r\n [text]=\"tooltipsDisplayText\"\r\n class=\"tooltipsinfo-text\"\r\n [style.color]=\"setTooltipsInfoColor()\">\r\n </kendo-label>\r\n <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".ionItem{display:flex;flex-flow:row wrap}.gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}:host ::ng-deep ion-item .k-checkbox{margin:6px 0 0 1.5px;height:22px;width:22px}:host ::ng-deep ion-item .k-checkbox:checked,:host ::ng-deep ion-item .k-checkbox.k-checked{margin:6px 0 0 1.5px;height:22px;width:22px;background-color:#3880ff;border:0px;outline:0}:host ::ng-deep ion-item .divcheckbox{justify-content:space-between;order:1}:host ::ng-deep ion-item .notooltipsinfo-adjustment{display:grid;grid-template-columns:.1fr;grid-gap:0px;padding-top:1px}:host ::ng-deep ion-item .tooltipsinfo-text{text-align:justify;text-justify:inter-word;word-wrap:break-word;font-size:10px;margin:6px 0;float:right}:host ::ng-deep ion-item .tooltipsinfo-right{display:grid;grid-template-columns:.1fr .9fr;grid-gap:5px}:host ::ng-deep ion-item .tooltipsinfo-icon{padding-left:10px;color:#3880ff}\n"], components: [{ type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i3.SwitchComponent, selector: "kendo-switch", inputs: ["focusableId", "disabled", "readonly", "tabindex", "checked", "size", "thumbRounded", "trackRounded", "tabIndex", "onLabel", "offLabel"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoSwitch"] }, { type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "indeterminate", "mode", "name", "value"] }, { type: i4.LabelComponent, selector: "kendo-label", inputs: ["text", "for", "optional"], exportAs: ["kendoLabel"] }, { type: i5.UivalidationmessageComponent, selector: "app-uivalidationmessage", inputs: ["group", "data", "form"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "showAfter", "callout", "closable", "offset", "tooltipTemplate", "showOn", "titleTemplate", "tooltipWidth", "tooltipHeight", "tooltipClass", "collision", "closeTitle"], exportAs: ["kendoTooltip"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }] });
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZcheckboxComponent, decorators: [{
157
+ type: Component,
158
+ args: [{ selector: "app-zcheckbox", template: "<ion-item [ngClass]=\"getClass(form, data)\" [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label *ngIf=\"data.ShowLabel === undefined || data.ShowLabel\"\r\n [attr.for]=\"data.Value\"\r\n [position]=\"data.LabelPosition ? data.LabelPosition : 'stacked'\"\r\n [ngStyle]=\"getLabelStyle()\"\r\n [ngClass]=\"data.LabelDivClass\">\r\n {{data.Label}}\r\n <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\"\r\n color=\"danger\">\r\n *\r\n </ion-text>\r\n <span kendoTooltip\r\n *ngIf=\"!isMobileScreen() && tooltipsInfo && showTooltipsInfoIcon\"\r\n [title]=\"tooltipsDisplayText\">\r\n <fa-icon [icon]=\"tooltipsDisplayIcon\"\r\n class=\"tooltipsinfo-icon\">\r\n </fa-icon>\r\n </span>\r\n </ion-label>\r\n <div class=\"ion-row divcheckbox\" [ngClass]=\"getCheckboxClass()\">\r\n <div *ngIf=\"useKendoSwitch\">\r\n <span>\r\n <kendo-switch [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [readonly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (valueChange)=\"onSwitchChange($event)\"\r\n style=\"margin: 7px 0 0 0; width: 100%\"></kendo-switch>\r\n </span>\r\n </div>\r\n <div *ngIf=\"!useKendoSwitch\" [class]=\"setTooltipsInfoSideBySide()\">\r\n <!--<input kendoCheckBox\r\n type=\"checkbox\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n [disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (valueChange)=\"onChange($event)\" />-->\r\n <ion-checkbox style=\"margin: 8px 0;\"\r\n [id]=\"data.Value\"\r\n [formControlName]=\"data.Value\"\r\n color=\"primary\"\r\n [attr.disabled]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\"\r\n (ionChange)=\"onChange($event)\"></ion-checkbox>\r\n <kendo-label *ngIf=\"tooltipsInfo && !showTooltipsInfoIcon\"\r\n [text]=\"tooltipsDisplayText\"\r\n class=\"tooltipsinfo-text\"\r\n [style.color]=\"setTooltipsInfoColor()\">\r\n </kendo-label>\r\n <app-uivalidationmessage [group]=\"group\" [data]=\"data\" [form]=\"form\"></app-uivalidationmessage>\r\n </div>\r\n </div>\r\n</ion-item>\r\n", styles: [".ionItem{display:flex;flex-flow:row wrap}.gridInlineEdit{--background: transparent}.item.sc-ion-label-md-h,.item .sc-ion-label-md-h{font-weight:var(--z-label-weight);color:var(--z-label-color);text-shadow:var(--z-label-shadow)}:host ::ng-deep ion-item .k-checkbox{margin:6px 0 0 1.5px;height:22px;width:22px}:host ::ng-deep ion-item .k-checkbox:checked,:host ::ng-deep ion-item .k-checkbox.k-checked{margin:6px 0 0 1.5px;height:22px;width:22px;background-color:#3880ff;border:0px;outline:0}:host ::ng-deep ion-item .divcheckbox{justify-content:space-between;order:1}:host ::ng-deep ion-item .notooltipsinfo-adjustment{display:grid;grid-template-columns:.1fr;grid-gap:0px;padding-top:1px}:host ::ng-deep ion-item .tooltipsinfo-text{text-align:justify;text-justify:inter-word;word-wrap:break-word;font-size:10px;margin:6px 0;float:right}:host ::ng-deep ion-item .tooltipsinfo-right{display:grid;grid-template-columns:.1fr .9fr;grid-gap:5px}:host ::ng-deep ion-item .tooltipsinfo-icon{padding-left:10px;color:#3880ff}\n"] }]
159
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
160
+ type: Input
161
+ }], group: [{
162
+ type: Input
163
+ }], form: [{
164
+ type: Input
165
+ }] } });
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pjaGVja2JveC96Y2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoZWNrYm94L3pjaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFFOUIsMkNBQTJDO0FBQzNDLE9BQU8sRUFDVyxvQkFBb0IsRUFDeEIsZ0JBQWdCLEdBQzdCLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7QUFRekIsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QjtRQVJBLHdCQUFtQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUMxQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBQ3hDLGlCQUFZLEdBQVEsSUFBSSxDQUFDO1FBQ3pCLHdCQUFtQixHQUFXLElBQUksQ0FBQztRQUVuQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQW1EaEMsY0FBUyxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxP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Q0FBQztTQUNuRDtJQUNILENBQUM7SUFFTSx5QkFBeUI7UUFDOUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFHO1lBQ3RCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBRSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDbEUsT0FBTyxvQkFBb0IsQ0FBQzthQUM3QjtpQkFDSTtnQkFDSCxPQUFPLEVBQUUsQ0FBQzthQUNYO1NBQ0Y7UUFDRCxPQUFPLDJCQUEyQixDQUFDO0lBQ3JDLENBQUM7OytHQTFLVSxrQkFBa0I7bUdBQWxCLGtCQUFrQiw2R0NwQi9CLGl6RkFtREE7MkZEL0JhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzBFQUtoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7IFxyXG4gIFpHcm91cCwgWkZpZWxkLCBaQ29tcG9uZW50UHJvcGVydGllcyxcclxuICBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50T3V0cHV0RXZlbnQsXHJcbn0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC16Y2hlY2tib3hcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pjaGVja2JveC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96Y2hlY2tib3guY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBaY2hlY2tib3hDb21wb25lbnQgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29tcG9uZW50UHJvcGVydGllcyA9IG5ldyBaQ29tcG9uZW50UHJvcGVydGllcygpO1xyXG4gIHB1YmxpYyBzaG93VG9vbHRpcHNJbmZvSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93VG9vbHRpcHNJbmZvQnlTaWRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHRvb2x0aXBzSW5mbzogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgdG9vbHRpcHNEaXNwbGF5VGV4dDogc3RyaW5nID0gbnVsbDtcclxuICBwdWJsaWMgdG9vbHRpcHNEaXNwbGF5SWNvbjogYW55O1xyXG4gIHB1YmxpYyB1c2VLZW5kb1N3aXRjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50UHJvcGVydGllcyh0aGlzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIucmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XHJcblxyXG4gICAgdGhpcy50b29sdGlwc0luZm8gPSB0aGlzLmRhdGFbJ1Rvb2x0aXBzSW5mbyddO1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcHNJbmZvKSB7XHJcbiAgICAgIGlmICgodGhpcy50b29sdGlwc0luZm9bJ0ljb24nXSAhPSBudWxsIHx8IHRoaXMudG9vbHRpcHNJbmZvWydJY29uJ10gIT0gdW5kZWZpbmVkKSAmJiAhdGhpcy5pc01vYmlsZVNjcmVlbigpKSB7XHJcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcHNJbmZvSWNvbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZXRUb29sdGlwc0luZm9JY29uKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudG9vbHRpcHNJbmZvWydTaWRlQnlTaWRlJ10pIHtcclxuICAgICAgICB0aGlzLnNob3dUb29sdGlwc0luZm9CeVNpZGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgICBcclxuICAgICAgdGhpcy5zZXRUb29sdGlwc0Rpc3BsYXlUZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51c2VLZW5kb1N3aXRjaCA9IHRoaXMuZGF0YS5Vc2VLZW5kb1N3aXRjaCA/IHRoaXMuZGF0YS5Vc2VLZW5kb1N3aXRjaCA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNNb2JpbGVTY3JlZW4oKSB7XHJcbiAgICBjb25zdCB2ID0gWkNvbXBvbmVudEhlbHBlci5pc01vYmlsZVNjcmVlbigpO1xyXG4gICAgcmV0dXJuIHY7XHJcbiAgfVxyXG5cclxuICBvblN3aXRjaENoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCBldmVudCwgdGhpcy5ncm91cCk7XHJcbiAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgIHR5cGU6IFwib25DaGFuZ2VcIixcclxuICAgICAgdGFyZ2V0OiB0aGlzLmRhdGEuT25DaGFuZ2UsXHJcbiAgICAgIGRhdGE6IHsgdmFsdWU6IGV2ZW50LCBmaWVsZDogdGhpcy5kYXRhIH0sXHJcbiAgICB9IGFzIFpDb21wb25lbnRPdXRwdXRFdmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5kYXRhLk9uQ2hhbmdlKSB7XHJcbiAgICAgIGNvbnN0IGNhbGxGdW5jID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgdGhpcy5kYXRhLk9uQ2hhbmdlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0eXBlb2YgY2FsbEZ1bmMgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGNvbnN0IG5ld0Z1bmMgPSBjYWxsRnVuYy5iaW5kKHRoaXMuZ3JvdXAuY3RybFNjb3BlKTtcclxuICAgICAgICBuZXdGdW5jKGV2ZW50KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEVuYWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIGNvbnN0IGZjID0gdGhpcy5ncm91cC5mb3JtLmNvbnRyb2xzW3RoaXMuZGF0YS5WYWx1ZV07XHJcbiAgICBzdGF0dXMgPyBmYy5lbmFibGUoKSA6IGZjLmRpc2FibGUoKTtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5ID0gIXN0YXR1cztcclxuICB9O1xyXG5cclxuICBwdWJsaWMgc2V0VmlzaWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUgPSBzdGF0dXM7XHJcbiAgICB0aGlzLmRhdGEuVmlzaWJsZSA9IHN0YXR1cztcclxuICB9O1xyXG5cclxuICBwdWJsaWMgc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkID0gc3RhdHVzO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5jaGFuZ2VWYWxpZGF0b3IoXHJcbiAgICAgIHN0YXR1cyxcclxuICAgICAgdGhpcy5ncm91cCxcclxuICAgICAgdGhpcy5kYXRhLlZhbHVlLFxyXG4gICAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMsXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGdldExhYmVsU3R5bGUoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBvcmRlcjpcclxuICAgICAgICB0aGlzLmRhdGEuTGFiZWxPcmRlciAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhLkxhYmVsT3JkZXIgPT09IFwiZW5kXCIgJiZcclxuICAgICAgICAgIHRoaXMuZGF0YS5MYWJlbFBvc2l0aW9uICE9PSBcInN0YWNrZWRcIlxyXG4gICAgICAgICAgPyAyXHJcbiAgICAgICAgICA6IDAsXHJcbiAgICAgIFwid2hpdGUtc3BhY2VcIjogXCJub3JtYWxcIixcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2hlY2tib3hDbGFzcygpIHtcclxuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFtdO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5MYWJlbERpdkNsYXNzKSB7XHJcbiAgICAgIHRoaXMuZGF0YS5MYWJlbERpdkNsYXNzLnNwbGl0KFwiIFwiKS5mb3JFYWNoKCh4KSA9PiB7XHJcbiAgICAgICAgaWYgKHguaW5kZXhPZihcImNvbFwiKSAhPT0gLTEpIHtcclxuICAgICAgICAgIGNvbnN0IGRpdkNsYXNzU2VnbWVudCA9IHguc3BsaXQoXCItXCIpO1xyXG4gICAgICAgICAgZGl2Q2xhc3NTZWdtZW50W2RpdkNsYXNzU2VnbWVudC5sZW5ndGggLSAxXSA9IChcclxuICAgICAgICAgICAgMTIgLSBwYXJzZUludChkaXZDbGFzc1NlZ21lbnRbZGl2Q2xhc3NTZWdtZW50Lmxlbmd0aCAtIDFdKVxyXG4gICAgICAgICAgKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgY2xhc3NMaXN0LnB1c2goZGl2Q2xhc3NTZWdtZW50LmpvaW4oXCItXCIpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY2xhc3NMaXN0LnB1c2goeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2xhc3NMaXN0LmpvaW4oXCIgXCIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2xhc3MoZm9ybTogRm9ybUdyb3VwLCBkYXRhOiBaRmllbGQpIHtcclxuICAgIHJldHVybiBgaW9uSXRlbSAke3RoaXMuZGF0YS5DbGFzc31gO1xyXG4gIH1cclxuXHJcbiAgLyoqKioqKioqKiogVG9vbHRpcHNJbmZvICoqKioqKioqKiovXHJcbiAgcHVibGljIHNldFRvb2x0aXBzSW5mb0NvbG9yKCkge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcHNJbmZvKSB7XHJcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBzSW5mb1snVGV4dENvbG9yJ10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b29sdGlwc0luZm9bJ1RleHRDb2xvciddO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiI2FjYWNhY1wiOyAvLyBkZWZhdWx0IGdyZXlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRUb29sdGlwc0luZm9JY29uKGRpc3BsYXlJY29uPzogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5zaG93VG9vbHRpcHNJbmZvSWNvbikge1xyXG4gICAgICBpZiAodGhpcy50b29sdGlwc0luZm8uSWNvbiAhPSAnJykge1xyXG4gICAgICAgIGlmIChkaXNwbGF5SWNvbikge1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwc0Rpc3BsYXlJY29uID0gZGlzcGxheUljb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b29sdGlwc0Rpc3BsYXlJY29uID0gdGhpcy50b29sdGlwc0luZm8uSWNvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b29sdGlwc0Rpc3BsYXlJY29uID0gJ3F1ZXN0aW9uLWNpcmNsZSdcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRvb2x0aXBzRGlzcGxheVRleHQoZGlzcGxheVRleHQ/OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBzSW5mbykge1xyXG4gICAgICBpZiAoZGlzcGxheVRleHQpIHtcclxuICAgICAgICB0aGlzLnRvb2x0aXBzRGlzcGxheVRleHQgPSBkaXNwbGF5VGV4dDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvb2x0aXBzRGlzcGxheVRleHQgPSB0aGlzLnRvb2x0aXBzSW5mby5EaXNwbGF5VGV4dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcHNEaXNwbGF5VGV4dCA9ICc8RGlzcGxheSB0ZXh0IGVycm9yPic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9vbHRpcHNJbmZvU2lkZUJ5U2lkZSgpIHsgXHJcbiAgICBpZiAodGhpcy50b29sdGlwc0luZm8gKSB7XHJcbiAgICAgIGlmICh0aGlzLnRvb2x0aXBzSW5mbyBbJ1NpZGVCeVNpZGUnXSAmJiAhdGhpcy5zaG93VG9vbHRpcHNJbmZvSWNvbikge1xyXG4gICAgICAgIHJldHVybiAndG9vbHRpcHNpbmZvLXJpZ2h0JztcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAnbm90b29sdGlwc2luZm8tYWRqdXN0bWVudCc7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGlvbi1pdGVtIFtuZ0NsYXNzXT1cImdldENsYXNzKGZvcm0sIGRhdGEpXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIj5cclxuICA8aW9uLWxhYmVsICpuZ0lmPVwiZGF0YS5TaG93TGFiZWwgPT09IHVuZGVmaW5lZCB8fCBkYXRhLlNob3dMYWJlbFwiXHJcbiAgICAgICAgICAgICBbYXR0ci5mb3JdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICBbcG9zaXRpb25dPVwiZGF0YS5MYWJlbFBvc2l0aW9uID8gZGF0YS5MYWJlbFBvc2l0aW9uIDogJ3N0YWNrZWQnXCJcclxuICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldExhYmVsU3R5bGUoKVwiXHJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJkYXRhLkxhYmVsRGl2Q2xhc3NcIj5cclxuICAgIHt7ZGF0YS5MYWJlbH19XHJcbiAgICA8aW9uLXRleHQgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIlxyXG4gICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCI+XHJcbiAgICAgICpcclxuICAgIDwvaW9uLXRleHQ+XHJcbiAgICA8c3BhbiBrZW5kb1Rvb2x0aXBcclxuICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlU2NyZWVuKCkgJiYgdG9vbHRpcHNJbmZvICYmIHNob3dUb29sdGlwc0luZm9JY29uXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJ0b29sdGlwc0Rpc3BsYXlUZXh0XCI+XHJcbiAgICAgIDxmYS1pY29uIFtpY29uXT1cInRvb2x0aXBzRGlzcGxheUljb25cIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cInRvb2x0aXBzaW5mby1pY29uXCI+XHJcbiAgICAgIDwvZmEtaWNvbj5cclxuICAgIDwvc3Bhbj5cclxuICA8L2lvbi1sYWJlbD5cclxuICA8ZGl2IGNsYXNzPVwiaW9uLXJvdyBkaXZjaGVja2JveFwiIFtuZ0NsYXNzXT1cImdldENoZWNrYm94Q2xhc3MoKVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInVzZUtlbmRvU3dpdGNoXCI+XHJcbiAgICAgIDxzcGFuPlxyXG4gICAgICAgIDxrZW5kby1zd2l0Y2ggW2lkXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkYXRhLlZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uU3dpdGNoQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW46IDdweCAwIDAgMDsgd2lkdGg6IDEwMCVcIj48L2tlbmRvLXN3aXRjaD5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIXVzZUtlbmRvU3dpdGNoXCIgW2NsYXNzXT1cInNldFRvb2x0aXBzSW5mb1NpZGVCeVNpZGUoKVwiPlxyXG4gICAgICA8IS0tPGlucHV0IGtlbmRvQ2hlY2tCb3hcclxuICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICBbaWRdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgW2Rpc2FibGVkXT1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5RmllbGRdIDogY29tcG9uZW50UHJvcGVydGllcy5pc1JlYWRPbmx5KVwiXHJcbiAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIC8+LS0+XHJcbiAgICAgIDxpb24tY2hlY2tib3ggc3R5bGU9XCJtYXJnaW46IDhweCAwO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImRhdGEuVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGF0YS5WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiPjwvaW9uLWNoZWNrYm94PlxyXG4gICAgICA8a2VuZG8tbGFiZWwgKm5nSWY9XCJ0b29sdGlwc0luZm8gJiYgIXNob3dUb29sdGlwc0luZm9JY29uXCJcclxuICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRvb2x0aXBzRGlzcGxheVRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b29sdGlwc2luZm8tdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic2V0VG9vbHRpcHNJbmZvQ29sb3IoKVwiPlxyXG4gICAgICA8L2tlbmRvLWxhYmVsPlxyXG4gICAgICA8YXBwLXVpdmFsaWRhdGlvbm1lc3NhZ2UgW2dyb3VwXT1cImdyb3VwXCIgW2RhdGFdPVwiZGF0YVwiIFtmb3JtXT1cImZvcm1cIj48L2FwcC11aXZhbGlkYXRpb25tZXNzYWdlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvaW9uLWl0ZW0+XHJcbiJdfQ==
@@ -0,0 +1,121 @@
1
+ /********** Angular **********/
2
+ import { Component, Input, ViewChild } from "@angular/core";
3
+ import { Validators } from '@angular/forms';
4
+ /********** Ionic **********/
5
+ /********** Plugin **********/
6
+ import { TooltipDirective } from '@progress/kendo-angular-tooltip';
7
+ /********** Component & Service **********/
8
+ import { ZComponentHelper, ZComponentProperties } from 'mmhglobal-zcore';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "mmhglobal-zcore";
11
+ import * as i2 from "@progress/kendo-angular-buttons";
12
+ import * as i3 from "@angular/common";
13
+ import * as i4 from "@progress/kendo-angular-tooltip";
14
+ export class ZChipComponent {
15
+ constructor(authService) {
16
+ this.authService = authService;
17
+ this.icon = "k-icon k-i-cancel";
18
+ this.selectedIcon = "k-icon k-i-check-circle";
19
+ this.componentProperties = new ZComponentProperties();
20
+ this.setEnable = (status) => {
21
+ this.componentProperties.isReadOnly = !status;
22
+ };
23
+ this.setVisible = (status) => {
24
+ this.componentProperties.isVisible = status;
25
+ this.data.Visible = status;
26
+ };
27
+ this.setRequire = (status) => {
28
+ this.componentProperties.isRequired = status;
29
+ ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
30
+ };
31
+ }
32
+ ngOnInit() {
33
+ this.setupDataSource();
34
+ ZComponentHelper.setComponentProperties(this);
35
+ ZComponentHelper.registerComponent(this);
36
+ }
37
+ setupDataSource() {
38
+ if (!this.data.DataSource) {
39
+ console.error("No data source found for zhip");
40
+ return;
41
+ }
42
+ if (this.data.DataSource.indexOf("group.") !== -1) {
43
+ this.dataSource = ZComponentHelper.getGroupValue(this.data.DataSource, this.group);
44
+ }
45
+ else {
46
+ this.dataSource = this.data.DataSource;
47
+ }
48
+ if (Array.isArray(this.dataSource)) {
49
+ this.dataSource.forEach(x => {
50
+ x.Label = x.Label ? x.Label : x.Value,
51
+ x.Icon = !!x.Selected ? null : (x.Icon ? x.Icon : this.icon),
52
+ x.SelectedIcon = x.SelectedIcon ? x.SelectedIcon : this.selectedIcon,
53
+ x._Icon = x.Icon ? x.Icon : this.icon;
54
+ x._Selected = x.Selected;
55
+ });
56
+ }
57
+ }
58
+ getClass() {
59
+ return this.data.DivClass;
60
+ }
61
+ getChipClass(chip) {
62
+ return chip.Class ? chip.Class : "";
63
+ }
64
+ chipListChangeSelection(selectedChipIndexes) {
65
+ let ind = 0;
66
+ for (let chip of this.dataSource) {
67
+ if (selectedChipIndexes.includes(ind)) {
68
+ chip.Icon = null;
69
+ }
70
+ else {
71
+ chip.Icon = this.dataSource.find(x => x.Value === chip.Value)._Icon;
72
+ }
73
+ ind++;
74
+ }
75
+ }
76
+ chipChangeSelection(chip) {
77
+ this.dataSource.find(x => x.Value === chip.Value)._Selected = !chip._Selected;
78
+ if (this.data.OnChange) {
79
+ this.group.subject.next({
80
+ type: "onChange",
81
+ target: this.data.OnChange,
82
+ data: { value: this.dataSource, selectedItem: chip, field: this.data }
83
+ });
84
+ }
85
+ }
86
+ getDataValue() {
87
+ return this.dataSource;
88
+ }
89
+ mouseover(event, chip) {
90
+ if (this.data.OnHover) {
91
+ this.group.subject.next({
92
+ type: "onHover",
93
+ target: this.data.OnHover,
94
+ data: { value: this.dataSource, selectedItem: chip, field: this.data }
95
+ });
96
+ }
97
+ if (!!this.data['IsShowToolTip']) {
98
+ this.showTooltip(event);
99
+ }
100
+ }
101
+ showTooltip(e) {
102
+ const element = e.target;
103
+ this.tooltipDir.toggle(element);
104
+ }
105
+ }
106
+ ZChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZChipComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component });
107
+ ZChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZChipComponent, selector: "app-zchip", inputs: { data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "tooltipDir", first: true, predicate: TooltipDirective, descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n style=\"margin: 10px 0 6px 0;\" [ngClass]=\"getClass()\">\r\n <ng-template #template let-anchor>\r\n <span>{{ anchor.nativeElement.innerText }}</span>\r\n </ng-template>\r\n <div kendoTooltip [tooltipTemplate]=\"template\">\r\n <kendo-chip-list [selection]=\"data.Multiple ? 'multiple' : 'single'\"\r\n (selectedChange)=\"chipListChangeSelection($event)\">\r\n <kendo-chip *ngFor=\"let chip of dataSource\" [label]=\"chip.Label\" [selected]=\"chip.Selected\"\r\n (mouseover)=\"mouseover($event, chip)\" [ngClass]=\"getChipClass(chip)\" [icon]=\"chip.Icon\"\r\n [selectedIcon]=\"chip.SelectedIcon\" (click)=\"chipChangeSelection(chip)\" >\r\n </kendo-chip>\r\n </kendo-chip-list>\r\n </div>\r\n</div>\r\n", styles: [".medium kendo-chip{padding:20px;margin:5px;font-size:15px;min-height:50px;height:55px;max-height:60px;min-width:280px;max-width:320px}.mediumHeight kendo-chip-list{max-height:400px;border:1px solid black;padding:5px 15px;overflow-x:auto;border-radius:10px}.vertical kendo-chip-list{display:flex;flex-direction:column}.customColor .k-chip-filled.k-chip-selected{background-color:#bafff6;color:#000;font-weight:600}.customColor .k-chip-filled.k-chip-selected:hover{background-color:#9afcf0}.customColor .k-chip-filled.k-chip-has-icon:hover{background-color:#b5b5b5;color:#000}.customColor .chip-pointing{border:3px solid #1a63d9!important}\n"], components: [{ type: i2.ChipListComponent, selector: "kendo-chiplist, kendo-chip-list", inputs: ["selection", "size"], outputs: ["selectedChange", "remove"] }, { type: i2.ChipComponent, selector: "kendo-chip", inputs: ["selected", "removable", "disabled", "size", "rounded", "fillMode", "themeColor", "label", "icon", "iconClass", "avatarClass", "removeIcon"], outputs: ["remove", "contentClick"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.TooltipDirective, selector: "[kendoTooltip]", inputs: ["filter", "position", "showAfter", "callout", "closable", "offset", "tooltipTemplate", "showOn", "titleTemplate", "tooltipWidth", "tooltipHeight", "tooltipClass", "collision", "closeTitle"], exportAs: ["kendoTooltip"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZChipComponent, decorators: [{
109
+ type: Component,
110
+ args: [{ selector: 'app-zchip', template: "<div\r\n *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\"\r\n style=\"margin: 10px 0 6px 0;\" [ngClass]=\"getClass()\">\r\n <ng-template #template let-anchor>\r\n <span>{{ anchor.nativeElement.innerText }}</span>\r\n </ng-template>\r\n <div kendoTooltip [tooltipTemplate]=\"template\">\r\n <kendo-chip-list [selection]=\"data.Multiple ? 'multiple' : 'single'\"\r\n (selectedChange)=\"chipListChangeSelection($event)\">\r\n <kendo-chip *ngFor=\"let chip of dataSource\" [label]=\"chip.Label\" [selected]=\"chip.Selected\"\r\n (mouseover)=\"mouseover($event, chip)\" [ngClass]=\"getChipClass(chip)\" [icon]=\"chip.Icon\"\r\n [selectedIcon]=\"chip.SelectedIcon\" (click)=\"chipChangeSelection(chip)\" >\r\n </kendo-chip>\r\n </kendo-chip-list>\r\n </div>\r\n</div>\r\n", styles: [".medium kendo-chip{padding:20px;margin:5px;font-size:15px;min-height:50px;height:55px;max-height:60px;min-width:280px;max-width:320px}.mediumHeight kendo-chip-list{max-height:400px;border:1px solid black;padding:5px 15px;overflow-x:auto;border-radius:10px}.vertical kendo-chip-list{display:flex;flex-direction:column}.customColor .k-chip-filled.k-chip-selected{background-color:#bafff6;color:#000;font-weight:600}.customColor .k-chip-filled.k-chip-selected:hover{background-color:#9afcf0}.customColor .k-chip-filled.k-chip-has-icon:hover{background-color:#b5b5b5;color:#000}.customColor .chip-pointing{border:3px solid #1a63d9!important}\n"] }]
111
+ }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { data: [{
112
+ type: Input
113
+ }], group: [{
114
+ type: Input
115
+ }], form: [{
116
+ type: Input
117
+ }], tooltipDir: [{
118
+ type: ViewChild,
119
+ args: [TooltipDirective, { static: false }]
120
+ }] } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNoaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoaXAvemNoaXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNoaXAvemNoaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNPLGdCQUFnQixFQUNaLG9CQUFvQixFQUNyQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7QUFRekIsTUFBTSxPQUFPLGNBQWM7SUFXekIsWUFDVSxXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVAxQixTQUFJLEdBQUcsbUJBQW1CLENBQUM7UUFDM0IsaUJBQVksR0FBRyx5QkFBeUIsQ0FBQztRQUMxQyx3QkFBbUIsR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUM7UUFrRGpELGNBQVMsR0FBRyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDaEQsQ0FBQyxDQUFBO1FBRU0sZUFBVSxHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFP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RSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO2FBQzlDLENBQUMsQ0FBQztTQUM3QjtRQUVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsQ0FBYTtRQUM5QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBcUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDOzsyR0FySFUsY0FBYzsrRkFBZCxjQUFjLHFKQVNkLGdCQUFnQixnREM5QjdCLHUzQkFnQkE7MkZES2EsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXO2tHQUtaLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQU1pRCxVQUFVO3NCQUFoRSxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqIEFuZ3VsYXIgKioqKioqKioqKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci10b29sdGlwJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuaW1wb3J0IHsgXHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LFxyXG4gIFpHcm91cCwgWkZpZWxkLCBaQ29tcG9uZW50UHJvcGVydGllcywgQXV0aFNlcnZpY2UgXHJcbn0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC16Y2hpcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3pjaGlwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi96Y2hpcC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWkNoaXBDb21wb25lbnQgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6IFpGaWVsZDtcclxuICBASW5wdXQoKSBncm91cDogWkdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHJpdmF0ZSBpY29uID0gXCJrLWljb24gay1pLWNhbmNlbFwiO1xyXG4gIHByaXZhdGUgc2VsZWN0ZWRJY29uID0gXCJrLWljb24gay1pLWNoZWNrLWNpcmNsZVwiO1xyXG4gIHB1YmxpYyBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgcHVibGljIGRhdGFTb3VyY2U7XHJcbiAgQFZpZXdDaGlsZChUb29sdGlwRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIHRvb2x0aXBEaXI6IFRvb2x0aXBEaXJlY3RpdmU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXR1cERhdGFTb3VyY2UoKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIuc2V0Q29tcG9uZW50UHJvcGVydGllcyh0aGlzKTtcclxuICAgIFpDb21wb25lbnRIZWxwZXIucmVnaXN0ZXJDb21wb25lbnQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwRGF0YVNvdXJjZSgpIHtcclxuICAgIGlmICghdGhpcy5kYXRhLkRhdGFTb3VyY2UpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIk5vIGRhdGEgc291cmNlIGZvdW5kIGZvciB6aGlwXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5EYXRhU291cmNlLmluZGV4T2YoXCJncm91cC5cIikgIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShcclxuICAgICAgICB0aGlzLmRhdGEuRGF0YVNvdXJjZSxcclxuICAgICAgICB0aGlzLmdyb3VwXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5kYXRhLkRhdGFTb3VyY2U7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhU291cmNlKSkge1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICB4LkxhYmVsID0geC5MYWJlbCA/IHguTGFiZWwgOiB4LlZhbHVlLFxyXG4gICAgICAgICAgeC5JY29uID0gISF4LlNlbGVjdGVkID8gbnVsbCA6ICh4Lkljb24gPyB4Lkljb24gOiB0aGlzLmljb24pLFxyXG4gICAgICAgICAgeC5TZWxlY3RlZEljb24gPSB4LlNlbGVjdGVkSWNvbiA/IHguU2VsZWN0ZWRJY29uIDogdGhpcy5zZWxlY3RlZEljb24sXHJcbiAgICAgICAgICB4Ll9JY29uID0geC5JY29uID8geC5JY29uIDogdGhpcy5pY29uO1xyXG4gICAgICAgIHguX1NlbGVjdGVkID0geC5TZWxlY3RlZDtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDbGFzcygpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEuRGl2Q2xhc3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2hpcENsYXNzKGNoaXApIHtcclxuICAgIHJldHVybiBjaGlwLkNsYXNzID8gY2hpcC5DbGFzcyA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RW5hYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSAhc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZpc2libGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlID0gc3RhdHVzO1xyXG4gICAgdGhpcy5kYXRhLlZpc2libGUgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkID0gc3RhdHVzO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5jaGFuZ2VWYWxpZGF0b3Ioc3RhdHVzLCB0aGlzLmdyb3VwLCB0aGlzLmRhdGEuVmFsdWUsIHRoaXMuY29tcG9uZW50UHJvcGVydGllcywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hpcExpc3RDaGFuZ2VTZWxlY3Rpb24oc2VsZWN0ZWRDaGlwSW5kZXhlczogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgaW5kID0gMDtcclxuICAgIGZvciAobGV0IGNoaXAgb2YgdGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZENoaXBJbmRleGVzLmluY2x1ZGVzKGluZCkpIHtcclxuICAgICAgICBjaGlwLkljb24gPSBudWxsXHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY2hpcC5JY29uID0gdGhpcy5kYXRhU291cmNlLmZpbmQoeCA9PiB4LlZhbHVlID09PSBjaGlwLlZhbHVlKS5fSWNvbjtcclxuICAgICAgfVxyXG4gICAgICBpbmQrKztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGlwQ2hhbmdlU2VsZWN0aW9uKGNoaXA6IGFueSkge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmZpbmQoeCA9PiB4LlZhbHVlID09PSBjaGlwLlZhbHVlKS5fU2VsZWN0ZWQgPSAhY2hpcC5fU2VsZWN0ZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZGF0YS5PbkNoYW5nZSkge1xyXG4gICAgICB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAgICAgdHlwZTogXCJvbkNoYW5nZVwiLFxyXG4gICAgICAgIHRhcmdldDogdGhpcy5kYXRhLk9uQ2hhbmdlLFxyXG4gICAgICAgIGRhdGE6IHsgdmFsdWU6IHRoaXMuZGF0YVNvdXJjZSwgc2VsZWN0ZWRJdGVtOiBjaGlwLCBmaWVsZDogdGhpcy5kYXRhIH1cclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGFWYWx1ZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZSBhcyBhbnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW91c2VvdmVyKGV2ZW50OiBhbnksIGNoaXA6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGF0YS5PbkhvdmVyKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgICAgICB0eXBlOiBcIm9uSG92ZXJcIixcclxuICAgICAgICB0YXJnZXQ6IHRoaXMuZGF0YS5PbkhvdmVyLFxyXG4gICAgICAgIGRhdGE6IHsgdmFsdWU6IHRoaXMuZGF0YVNvdXJjZSwgc2VsZWN0ZWRJdGVtOiBjaGlwLCBmaWVsZDogdGhpcy5kYXRhIH1cclxuICAgICAgfSBhcyBaQ29tcG9uZW50T3V0cHV0RXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghIXRoaXMuZGF0YVsnSXNTaG93VG9vbFRpcCddKSB7XHJcbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dUb29sdGlwKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMudG9vbHRpcERpci50b2dnbGUoZWxlbWVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAqbmdJZj1cIighIWNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlKVwiXHJcbiAgc3R5bGU9XCJtYXJnaW46IDEwcHggMCA2cHggMDtcIiBbbmdDbGFzc109XCJnZXRDbGFzcygpXCI+XHJcbiAgPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZSBsZXQtYW5jaG9yPlxyXG4gICAgPHNwYW4+e3sgYW5jaG9yLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0IH19PC9zcGFuPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPGRpdiBrZW5kb1Rvb2x0aXAgW3Rvb2x0aXBUZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiPlxyXG4gICAgPGtlbmRvLWNoaXAtbGlzdCBbc2VsZWN0aW9uXT1cImRhdGEuTXVsdGlwbGUgPyAnbXVsdGlwbGUnIDogJ3NpbmdsZSdcIlxyXG4gICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiY2hpcExpc3RDaGFuZ2VTZWxlY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgICA8a2VuZG8tY2hpcCAqbmdGb3I9XCJsZXQgY2hpcCBvZiBkYXRhU291cmNlXCIgW2xhYmVsXT1cImNoaXAuTGFiZWxcIiBbc2VsZWN0ZWRdPVwiY2hpcC5TZWxlY3RlZFwiXHJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJtb3VzZW92ZXIoJGV2ZW50LCBjaGlwKVwiIFtuZ0NsYXNzXT1cImdldENoaXBDbGFzcyhjaGlwKVwiIFtpY29uXT1cImNoaXAuSWNvblwiXHJcbiAgICAgICAgW3NlbGVjdGVkSWNvbl09XCJjaGlwLlNlbGVjdGVkSWNvblwiIChjbGljayk9XCJjaGlwQ2hhbmdlU2VsZWN0aW9uKGNoaXApXCIgPlxyXG4gICAgICA8L2tlbmRvLWNoaXA+XHJcbiAgICA8L2tlbmRvLWNoaXAtbGlzdD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -0,0 +1,169 @@
1
+ /********** Angular **********/
2
+ import { Component, Input, ViewChild } from "@angular/core";
3
+ import { Validators } from "@angular/forms";
4
+ /********** Ionic **********/
5
+ /********** Plugin **********/
6
+ import { of } from "rxjs";
7
+ import { delay } from "rxjs/operators";
8
+ import "brace";
9
+ import "brace/theme/eclipse";
10
+ import "brace/mode/json";
11
+ import "brace/mode/javascript";
12
+ import "brace/mode/html";
13
+ /********** Component & Service **********/
14
+ import { ZComponentHelper, ZComponentProperties } from "mmhglobal-zcore";
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@ionic/angular";
17
+ import * as i2 from "ng2-ace-editor";
18
+ import * as i3 from "@angular/common";
19
+ import * as i4 from "./zcodeeditor.pipe";
20
+ // import { EditorComponent } from 'ngx-monaco-editor';
21
+ // import { EditorOptions } from "ngx-monaco-editor";
22
+ export class ZcodeeditorComponent {
23
+ constructor() {
24
+ this.code = "";
25
+ this.theme = "eclipse";
26
+ this.mode = "javascript";
27
+ this.componentProperties = new ZComponentProperties();
28
+ this.setEnable = (status) => {
29
+ this.componentProperties.isReadOnly = !status;
30
+ };
31
+ this.setVisible = (status) => {
32
+ this.componentProperties.isVisible = status;
33
+ this.data.Visible = status;
34
+ };
35
+ this.setRequire = (status) => {
36
+ this.componentProperties.isRequired = status;
37
+ ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
38
+ };
39
+ }
40
+ ngOnInit() {
41
+ ZComponentHelper.setComponentProperties(this);
42
+ ZComponentHelper.registerComponent(this);
43
+ this.widthReduce = this.data.WidthReduce || 60;
44
+ this.heightReduce = this.data.HeightReduce || 560;
45
+ // const codeValue = this.getValue();
46
+ // if (codeValue) {
47
+ // this.code = codeValue;
48
+ // }
49
+ if (this.data.Type === "textareajson") {
50
+ this.mode = "json";
51
+ }
52
+ else if (this.data.Type === "textareahtml") {
53
+ this.mode = "html";
54
+ }
55
+ console.log("zcodeeditor OnInit");
56
+ }
57
+ ngOnDestroy() {
58
+ if (this.subscription) {
59
+ this.subscription.unsubscribe();
60
+ }
61
+ }
62
+ // https://github.com/fxmontigny/ng2-ace-editor/blob/master/sample/src/app/app.component.ts
63
+ // ngAfterViewInit() {
64
+ // const Range = ace.require('ace/range')['Range'];
65
+ // this.editor
66
+ // .getEditor()
67
+ // .session.addMarker(new Range(0, 0, 2, 1), 'myMarker', 'fullLine');
68
+ // this.editor.getEditor().session.setOption('useWorker', true);
69
+ // }
70
+ getValue() {
71
+ let v;
72
+ if (this.data.Value.indexOf('.') !== -1) {
73
+ v = this.data.Value;
74
+ }
75
+ else {
76
+ v = "group.zModel." + this.data.Value;
77
+ }
78
+ const evalValue = ZComponentHelper.getEvalValue.call(this, v);
79
+ if (typeof evalValue === 'function') {
80
+ const nextValue = evalValue();
81
+ if (nextValue) {
82
+ try {
83
+ const evalNextValue = ZComponentHelper.getEvalValue.call(this, nextValue, true);
84
+ if (typeof evalNextValue === 'boolean') {
85
+ return evalNextValue.toString();
86
+ }
87
+ if (evalNextValue === undefined) {
88
+ return 'undefined';
89
+ }
90
+ if (evalNextValue === null) {
91
+ return 'null';
92
+ }
93
+ return evalNextValue;
94
+ }
95
+ catch {
96
+ return;
97
+ }
98
+ }
99
+ else {
100
+ return;
101
+ }
102
+ }
103
+ else {
104
+ return evalValue;
105
+ }
106
+ // if (this.data.Type === "textareajson") {
107
+ // if (typeof evalValue === "string") {
108
+ // const jsonValue = JSON.parse(evalValue);
109
+ // return JSON.stringify(jsonValue, null, 2);
110
+ // }
111
+ // if (typeof evalValue === "object" || Array.isArray(evalValue)) {
112
+ // return JSON.stringify(evalValue, null, 2);
113
+ // }
114
+ // }
115
+ // if (typeof evalValue === 'string') {
116
+ // return evalValue;
117
+ // }
118
+ // // debugger;
119
+ // console.warn(
120
+ // "zcodeeditor - Invalid field.Value (" + this.data.Value + ") setting ",
121
+ // evalValue
122
+ // );
123
+ // return "";
124
+ }
125
+ getEditorStyle() {
126
+ // debugger;
127
+ // return { "height.px": 500, "width.px": window.innerWidth - 60 }; // "width.px": this.innerWidth - 25
128
+ return {
129
+ "height.px": this.getEditorHeight(),
130
+ "width.px": window.innerWidth - this.widthReduce
131
+ };
132
+ }
133
+ getEditorHeight() {
134
+ const h = window.innerHeight - this.heightReduce;
135
+ return (h < 180) ? 180 : h;
136
+ }
137
+ onTextChange(newValue) {
138
+ if (this.subscription) {
139
+ this.subscription.unsubscribe();
140
+ }
141
+ // console.log('onTextChange: ', newValue);
142
+ this.subscription = of([])
143
+ .pipe(delay(500))
144
+ .subscribe(() => {
145
+ ZComponentHelper.setModelValue(this.data.Value, newValue, this.group, true);
146
+ this.group.subject.next({
147
+ type: "zcodeeditor-TextChanged",
148
+ target: this.data.OnChange,
149
+ data: newValue
150
+ });
151
+ });
152
+ }
153
+ }
154
+ ZcodeeditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZcodeeditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
155
+ ZcodeeditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZcodeeditorComponent, selector: "app-zcodeeditor", inputs: { data: "data", group: "group", form: "form" }, viewQueries: [{ propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], ngImport: i0, template: "<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label *ngIf=\"data.ShowLabel\" position=\"stacked\" style=\"margin-bottom: 10px;\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div>\r\n <!-- <div ace-editor\r\n [(text)]=\"text\"\r\n ></div> -->\r\n <ace-editor [readOnly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\" #editor [ngStyle]=\"getEditorStyle()\" (textChanged)=\"onTextChange($event)\" [text]=\"getValue() | editorfilter\" [theme]=\"theme\" [mode]=\"mode\"></ace-editor>\r\n\r\n <!-- <ngx-monaco-editor #editor [options]=\"editorOptions\" [(ngModel)]=\"code\" (onInit)=\"onInit($event)\"></ngx-monaco-editor> -->\r\n </div>\r\n\r\n</div>", styles: [""], components: [{ type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i2.AceEditorComponent, selector: "ace-editor", inputs: ["style", "options", "readOnly", "theme", "mode", "value", "text", "autoUpdateContent", "durationBeforeCallback"], outputs: ["textChanged", "textChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "editorfilter": i4.EditorFilter } });
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZcodeeditorComponent, decorators: [{
157
+ type: Component,
158
+ args: [{ selector: "app-zcodeeditor", template: "<div *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label *ngIf=\"data.ShowLabel\" position=\"stacked\" style=\"margin-bottom: 10px;\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <div>\r\n <!-- <div ace-editor\r\n [(text)]=\"text\"\r\n ></div> -->\r\n <ace-editor [readOnly]=\"(!!componentProperties.isReadOnlyField ? group[componentProperties.isReadOnlyField] : componentProperties.isReadOnly)\" #editor [ngStyle]=\"getEditorStyle()\" (textChanged)=\"onTextChange($event)\" [text]=\"getValue() | editorfilter\" [theme]=\"theme\" [mode]=\"mode\"></ace-editor>\r\n\r\n <!-- <ngx-monaco-editor #editor [options]=\"editorOptions\" [(ngModel)]=\"code\" (onInit)=\"onInit($event)\"></ngx-monaco-editor> -->\r\n </div>\r\n\r\n</div>", styles: [""] }]
159
+ }], ctorParameters: function () { return []; }, propDecorators: { data: [{
160
+ type: Input
161
+ }], group: [{
162
+ type: Input
163
+ }], form: [{
164
+ type: Input
165
+ }], editor: [{
166
+ type: ViewChild,
167
+ args: ["editor"]
168
+ }] } });
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvZGVlZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNvZGVlZGl0b3IvemNvZGVlZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvemNvZGVlZGl0b3IvemNvZGVlZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQsNkJBQTZCO0FBRTdCLDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxPQUFPLENBQUM7QUFDZixPQUFPLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLGlCQUFpQixDQUFDO0FBRXpCLDJDQUEyQztBQUMzQyxPQUFPLEVBQ08sZ0JBQWdCLEVBQ1osb0JBQW9CLEVBQ3JDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUt6Qix1REFBdUQ7QUFDdkQscURBQXFEO0FBT3JELE1BQU0sT0FBTyxvQkFBb0I7SUFlL0I7UUFYQSxTQUFJLEdBQXNCLEVBQUUsQ0FBQztRQUM3QixVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBRyxZQUFZLENBQUM7UUFFcEIsd0JBQW1CLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBK0gxQyxjQUFTLEdBQUcsQ0FBQyxNQUFl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QUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDaEIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLElBQUksRUFBRSx5QkFBeUI7Z0JBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQzFCLElBQUksRUFBRSxRQUFRO2FBQ1UsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7aUhBcklVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGlOQ2pDakMsNitCQWFNOzJGRG9CTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzBFQUtsQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFVZSxNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IEFjZUVkaXRvckNvbXBvbmVudCB9IGZyb20gXCJuZzItYWNlLWVkaXRvclwiO1xyXG5pbXBvcnQgXCJicmFjZVwiO1xyXG5pbXBvcnQgXCJicmFjZS90aGVtZS9lY2xpcHNlXCI7XHJcbmltcG9ydCBcImJyYWNlL21vZGUvanNvblwiO1xyXG5pbXBvcnQgXCJicmFjZS9tb2RlL2phdmFzY3JpcHRcIjtcclxuaW1wb3J0IFwiYnJhY2UvbW9kZS9odG1sXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcbmltcG9ydCB7XHJcbiAgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudE91dHB1dEV2ZW50LFxyXG4gIFpGaWVsZCwgWkdyb3VwLCBaQ29tcG9uZW50UHJvcGVydGllc1xyXG59IGZyb20gXCJtbWhnbG9iYWwtemNvcmVcIjtcclxuXHJcblxyXG5kZWNsYXJlIGxldCBhY2U6IGFueTtcclxuXHJcbi8vIGltcG9ydCB7IEVkaXRvckNvbXBvbmVudCB9IGZyb20gJ25neC1tb25hY28tZWRpdG9yJztcclxuLy8gaW1wb3J0IHsgRWRpdG9yT3B0aW9ucyB9IGZyb20gXCJuZ3gtbW9uYWNvLWVkaXRvclwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpjb2RlZWRpdG9yXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi96Y29kZWVkaXRvci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96Y29kZWVkaXRvci5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWmNvZGVlZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBaQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgZGF0YTogWkZpZWxkO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBaR3JvdXA7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG4gIGNvZGU6IHN0cmluZyB8IHN0cmluZ1tdID0gXCJcIjtcclxuICB0aGVtZSA9IFwiZWNsaXBzZVwiO1xyXG4gIG1vZGUgPSBcImphdmFzY3JpcHRcIjtcclxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcbiAgXHJcbiAgcHJpdmF0ZSB3aWR0aFJlZHVjZTogbnVtYmVyO1xyXG4gIHByaXZhdGUgaGVpZ2h0UmVkdWNlOiBudW1iZXI7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJlZGl0b3JcIikgZWRpdG9yOiBBY2VFZGl0b3JDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnNldENvbXBvbmVudFByb3BlcnRpZXModGhpcyk7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLnJlZ2lzdGVyQ29tcG9uZW50KHRoaXMpO1xyXG5cclxuICAgIHRoaXMud2lkdGhSZWR1Y2UgPSB0aGlzLmRhdGEuV2lkdGhSZWR1Y2UgfHwgNjA7XHJcbiAgICB0aGlzLmhlaWdodFJlZHVjZSA9IHRoaXMuZGF0YS5IZWlnaHRSZWR1Y2UgfHwgNTYwO1xyXG5cclxuICAgIC8vIGNvbnN0IGNvZGVWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcclxuICAgIC8vIGlmIChjb2RlVmFsdWUpIHtcclxuICAgIC8vICAgdGhpcy5jb2RlID0gY29kZVZhbHVlO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKHRoaXMuZGF0YS5UeXBlID09PSBcInRleHRhcmVhanNvblwiKSB7XHJcbiAgICAgIHRoaXMubW9kZSA9IFwianNvblwiO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuVHlwZSA9PT0gXCJ0ZXh0YXJlYWh0bWxcIikge1xyXG4gICAgICB0aGlzLm1vZGUgPSBcImh0bWxcIjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwiemNvZGVlZGl0b3IgT25Jbml0XCIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9meG1vbnRpZ255L25nMi1hY2UtZWRpdG9yL2Jsb2IvbWFzdGVyL3NhbXBsZS9zcmMvYXBwL2FwcC5jb21wb25lbnQudHNcclxuICAvLyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgLy8gICBjb25zdCBSYW5nZSA9IGFjZS5yZXF1aXJlKCdhY2UvcmFuZ2UnKVsnUmFuZ2UnXTtcclxuICAvLyAgIHRoaXMuZWRpdG9yXHJcbiAgLy8gICAgIC5nZXRFZGl0b3IoKVxyXG4gIC8vICAgICAuc2Vzc2lvbi5hZGRNYXJrZXIobmV3IFJhbmdlKDAsIDAsIDIsIDEpLCAnbXlNYXJrZXInLCAnZnVsbExpbmUnKTtcclxuXHJcbiAgLy8gICB0aGlzLmVkaXRvci5nZXRFZGl0b3IoKS5zZXNzaW9uLnNldE9wdGlvbigndXNlV29ya2VyJywgdHJ1ZSk7XHJcbiAgLy8gfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIGxldCB2O1xyXG4gICAgaWYgKHRoaXMuZGF0YS5WYWx1ZS5pbmRleE9mKCcuJykgIT09IC0xKSB7XHJcbiAgICAgIHYgPSB0aGlzLmRhdGEuVmFsdWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2ID0gXCJncm91cC56TW9kZWwuXCIgKyB0aGlzLmRhdGEuVmFsdWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmFsVmFsdWUgPSBaQ29tcG9uZW50SGVscGVyLmdldEV2YWxWYWx1ZS5jYWxsKHRoaXMsIHYpO1xyXG4gICAgaWYgKHR5cGVvZiBldmFsVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgY29uc3QgbmV4dFZhbHVlID0gZXZhbFZhbHVlKCk7XHJcbiAgICAgIGlmIChuZXh0VmFsdWUpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgZXZhbE5leHRWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0RXZhbFZhbHVlLmNhbGwodGhpcywgbmV4dFZhbHVlLCB0cnVlKTtcclxuICAgICAgICAgIGlmICh0eXBlb2YgZXZhbE5leHRWYWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBldmFsTmV4dFZhbHVlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZXZhbE5leHRWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChldmFsTmV4dFZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnbnVsbCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZXZhbE5leHRWYWx1ZTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXZhbFZhbHVlO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgKHRoaXMuZGF0YS5UeXBlID09PSBcInRleHRhcmVhanNvblwiKSB7XHJcbiAgICAvLyAgIGlmICh0eXBlb2YgZXZhbFZhbHVlID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAvLyAgICAgY29uc3QganNvblZhbHVlID0gSlNPTi5wYXJzZShldmFsVmFsdWUpO1xyXG4gICAgLy8gICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShqc29uVmFsdWUsIG51bGwsIDIpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGlmICh0eXBlb2YgZXZhbFZhbHVlID09PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoZXZhbFZhbHVlKSkge1xyXG4gICAgLy8gICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShldmFsVmFsdWUsIG51bGwsIDIpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICAvLyBpZiAodHlwZW9mIGV2YWxWYWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgIC8vICAgcmV0dXJuIGV2YWxWYWx1ZTtcclxuICAgIC8vIH1cclxuICAgIC8vIC8vIGRlYnVnZ2VyO1xyXG4gICAgLy8gY29uc29sZS53YXJuKFxyXG4gICAgLy8gICBcInpjb2RlZWRpdG9yIC0gSW52YWxpZCBmaWVsZC5WYWx1ZSAoXCIgKyB0aGlzLmRhdGEuVmFsdWUgKyBcIikgc2V0dGluZyBcIixcclxuICAgIC8vICAgZXZhbFZhbHVlXHJcbiAgICAvLyApO1xyXG4gICAgLy8gcmV0dXJuIFwiXCI7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0b3JTdHlsZSgpIHtcclxuICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgLy8gcmV0dXJuIHsgXCJoZWlnaHQucHhcIjogNTAwLCBcIndpZHRoLnB4XCI6IHdpbmRvdy5pbm5lcldpZHRoIC0gNjAgfTsgLy8gXCJ3aWR0aC5weFwiOiB0aGlzLmlubmVyV2lkdGggLSAyNVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgXCJoZWlnaHQucHhcIjogdGhpcy5nZXRFZGl0b3JIZWlnaHQoKSxcclxuICAgICBcIndpZHRoLnB4XCI6IHdpbmRvdy5pbm5lcldpZHRoIC0gdGhpcy53aWR0aFJlZHVjZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RWRpdG9ySGVpZ2h0KCkge1xyXG4gICAgY29uc3QgaCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRoaXMuaGVpZ2h0UmVkdWNlO1xyXG4gICAgcmV0dXJuIChoIDwgMTgwKSA/IDE4MCA6IGg7XHJcbiAgfVxyXG5cclxuICBvblRleHRDaGFuZ2UobmV3VmFsdWU6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnb25UZXh0Q2hhbmdlOiAnLCBuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG9mKFtdKVxyXG4gICAgICAucGlwZShkZWxheSg1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBaQ29tcG9uZW50SGVscGVyLnNldE1vZGVsVmFsdWUodGhpcy5kYXRhLlZhbHVlLCBuZXdWYWx1ZSwgdGhpcy5ncm91cCwgdHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5ncm91cC5zdWJqZWN0Lm5leHQoe1xyXG4gICAgICAgICAgdHlwZTogXCJ6Y29kZWVkaXRvci1UZXh0Q2hhbmdlZFwiLFxyXG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLmRhdGEuT25DaGFuZ2UsXHJcbiAgICAgICAgICBkYXRhOiBuZXdWYWx1ZVxyXG4gICAgICAgIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RW5hYmxlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHkgPSAhc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFZpc2libGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNWaXNpYmxlID0gc3RhdHVzO1xyXG4gICAgdGhpcy5kYXRhLlZpc2libGUgPSBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0UmVxdWlyZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkID0gc3RhdHVzO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5jaGFuZ2VWYWxpZGF0b3Ioc3RhdHVzLCB0aGlzLmdyb3VwLCB0aGlzLmRhdGEuVmFsdWUsIHRoaXMuY29tcG9uZW50UHJvcGVydGllcywgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIj5cclxuICA8aW9uLWxhYmVsICpuZ0lmPVwiZGF0YS5TaG93TGFiZWxcIiBwb3NpdGlvbj1cInN0YWNrZWRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7XCI+XHJcbiAgICB7e2RhdGEuTGFiZWx9fSA8aW9uLXRleHQgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZEZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZXF1aXJlZClcIiBjb2xvcj1cImRhbmdlclwiPio8L2lvbi10ZXh0PlxyXG4gIDwvaW9uLWxhYmVsPlxyXG4gIDxkaXY+XHJcbiAgPCEtLSA8ZGl2IGFjZS1lZGl0b3JcclxuICAgICAgIFsodGV4dCldPVwidGV4dFwiXHJcbiAgICAgICA+PC9kaXY+IC0tPlxyXG4gIDxhY2UtZWRpdG9yIFtyZWFkT25seV09XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVhZE9ubHlGaWVsZCA/IGdyb3VwW2NvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seUZpZWxkXSA6IGNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSlcIiAjZWRpdG9yIFtuZ1N0eWxlXT1cImdldEVkaXRvclN0eWxlKClcIiAodGV4dENoYW5nZWQpPVwib25UZXh0Q2hhbmdlKCRldmVudClcIiBbdGV4dF09XCJnZXRWYWx1ZSgpIHwgZWRpdG9yZmlsdGVyXCIgW3RoZW1lXT1cInRoZW1lXCIgW21vZGVdPVwibW9kZVwiPjwvYWNlLWVkaXRvcj5cclxuXHJcbiAgICA8IS0tIDxuZ3gtbW9uYWNvLWVkaXRvciAjZWRpdG9yIFtvcHRpb25zXT1cImVkaXRvck9wdGlvbnNcIiBbKG5nTW9kZWwpXT1cImNvZGVcIiAob25Jbml0KT1cIm9uSW5pdCgkZXZlbnQpXCI+PC9uZ3gtbW9uYWNvLWVkaXRvcj4gLS0+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj4iXX0=