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,117 @@
1
+ import { Component } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@progress/telerik-angular-report-viewer";
4
+ import * as i2 from "@angular/common";
5
+ // @dynamic
6
+ export class ExportOptions {
7
+ constructor() {
8
+ this.viewerToolTipOpening = null;
9
+ this.resourceURL = null;
10
+ this.ReportSource = null;
11
+ this.ready = null;
12
+ this.exportBegin = null;
13
+ this.exportEnd = null;
14
+ this.onRenderingEnd = null;
15
+ this.viewerContainerStyle = null;
16
+ this.isVisible = null;
17
+ this.paramToResizeReportViewer = null;
18
+ this.resizeReportView = null;
19
+ // public static instance: ExportOptions;
20
+ // public static init(component: any) {
21
+ // if (!ExportOptions.instance) {
22
+ // ExportOptions.instance = new ExportOptions();
23
+ // }
24
+ // ExportOptions.instance.bindEvents(component);
25
+ // // Add the options when init. Sometime it will not init the class.
26
+ // ExportOptions.instance.hideOptions = ["PDF", "CSV", "XLS", "XLSX", "RTF", "IMAGE", "MHTML", "XPS"];
27
+ // }
28
+ this.largeMenuBound = false;
29
+ this.sideMenuBound = false;
30
+ this.reportSource = "";
31
+ this.hideOptions = [];
32
+ }
33
+ update(reportSource) {
34
+ this.reportSource = reportSource;
35
+ // show all extensions
36
+ //$('[data-command-parameter]').show();
37
+ // check to hide options
38
+ this.hideUnwantedOptions();
39
+ }
40
+ bindEvents(component) {
41
+ this.exportOption(component);
42
+ const sideMenu = $(".trv-side-menu").children("ul").data('kendoPanelBar');
43
+ const largeMenu = $(".trv-menu-large").data("kendoMenu");
44
+ const smallMenu = $(".trv-menu-small");
45
+ // hide export button if all option is not available
46
+ if (this.hideOptions.length == 8) {
47
+ const exportButton = $("[data-command*='telerik_ReportViewer_export']");
48
+ exportButton.hide();
49
+ }
50
+ // bind to the 'open' event of the main menu
51
+ if (!this.largeMenuBound && largeMenu) {
52
+ largeMenu.bind("open", () => {
53
+ this.hideUnwantedOptions();
54
+ });
55
+ this.largeMenuBound = true;
56
+ }
57
+ // bind to the 'expand' event of the side menu
58
+ if (!this.sideMenuBound && smallMenu) {
59
+ if (sideMenu) {
60
+ sideMenu.bind("expand", () => {
61
+ // recheck export options
62
+ //if (reloadHideOptions) {
63
+ // thisComponent.exportOption(thisComponent);
64
+ //}
65
+ this.hideUnwantedOptions();
66
+ });
67
+ }
68
+ this.sideMenuBound = true;
69
+ }
70
+ }
71
+ exportOption(component) {
72
+ const _data = component.data;
73
+ if (_data.EnableExportPDF) {
74
+ this.hideOptions = this.hideOptions.filter(item => item !== "PDF");
75
+ }
76
+ if (_data.EnableExportCSV) {
77
+ this.hideOptions = this.hideOptions.filter(item => item !== "CSV");
78
+ }
79
+ if (_data.EnableExportExcel) {
80
+ this.hideOptions = this.hideOptions.filter(item => item !== "XLS");
81
+ this.hideOptions = this.hideOptions.filter(item => item !== "XLSX");
82
+ }
83
+ if (_data.EnableExportRTF) {
84
+ this.hideOptions = this.hideOptions.filter(item => item !== "RTF");
85
+ }
86
+ if (_data.EnableExportTIFF) {
87
+ this.hideOptions = this.hideOptions.filter(item => item !== "IMAGE");
88
+ }
89
+ if (_data.EnableExportMHTML) {
90
+ this.hideOptions = this.hideOptions.filter(item => item !== "MHTML");
91
+ }
92
+ if (_data.EnableExportXPS) {
93
+ this.hideOptions = this.hideOptions.filter(item => item !== "XPS");
94
+ }
95
+ }
96
+ hideUnwantedOptions() {
97
+ // show all extensions
98
+ $('[data-command-parameter]').show();
99
+ // hide the specified extensions
100
+ $.each(this.hideOptions, function (index, item) {
101
+ var hiddenOption = $('[data-command-parameter="' + item + '"]');
102
+ if (hiddenOption && hiddenOption.length) {
103
+ hiddenOption.hide();
104
+ }
105
+ });
106
+ }
107
+ resizeViewer() {
108
+ return null;
109
+ }
110
+ }
111
+ ExportOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ExportOptions, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ ExportOptions.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ExportOptions, selector: "app-zreport", ngImport: i0, template: "<div *ngIf=\"isVisible\" width=\"100%\" height=\"800px\">\r\n <tr-viewer #ReportViewer\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"resourceURL\"\r\n [reportSource]=\"ReportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [pageMode]=\"'SINGLE_PAGE'\"\r\n [scale]=\"1.0\"\r\n [ready]=\"ready(this)\"\r\n [exportBegin]=\"exportBegin(this)\"\r\n [exportEnd]=\"exportEnd(this)\"\r\n [viewerToolTipOpening]=\"viewerToolTipOpening\"\r\n [enableAccessibility]=\"false\"\r\n [pageReady] = \"resizeReportView()\"\r\n [renderingEnd]=\"onRenderingEnd\">\r\n </tr-viewer>\r\n</div>\r\n", styles: [""], components: [{ type: i1.TelerikReportViewerComponent, selector: "tr-viewer", inputs: ["id", "serviceUrl", "reportServer", "templateUrl", "initialPageAreaImageUrl", "reportSource", "sendEmail", "parameters", "scale", "scaleMode", "viewMode", "pageMode", "persistSession", "parameterEditors", "authenticationToken", "printMode", "selector", "disabledButtonClass", "checkedButtonClass", "enableAccessibility", "searchMetadataOnDemand", "parametersAreaVisible", "documentMapVisible", "ready", "error", "parametersAreaPosition", "documentMapAreaPosition", "exportBegin", "exportEnd", "sendEmailBegin", "sendEmailEnd", "pageReady", "printBegin", "printEnd", "renderingBegin", "renderingEnd", "updateUi", "interactiveActionExecuting", "interactiveActionEnter", "interactiveActionLeave", "viewerToolTipOpening", "containerStyle"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ExportOptions, decorators: [{
114
+ type: Component,
115
+ args: [{ selector: "app-zreport", template: "<div *ngIf=\"isVisible\" width=\"100%\" height=\"800px\">\r\n <tr-viewer #ReportViewer\r\n [containerStyle]=\"viewerContainerStyle\"\r\n [serviceUrl]=\"resourceURL\"\r\n [reportSource]=\"ReportSource\"\r\n [viewMode]=\"'INTERACTIVE'\"\r\n [scaleMode]=\"'SPECIFIC'\"\r\n [pageMode]=\"'SINGLE_PAGE'\"\r\n [scale]=\"1.0\"\r\n [ready]=\"ready(this)\"\r\n [exportBegin]=\"exportBegin(this)\"\r\n [exportEnd]=\"exportEnd(this)\"\r\n [viewerToolTipOpening]=\"viewerToolTipOpening\"\r\n [enableAccessibility]=\"false\"\r\n [pageReady] = \"resizeReportView()\"\r\n [renderingEnd]=\"onRenderingEnd\">\r\n </tr-viewer>\r\n</div>\r\n", styles: [""] }]
116
+ }] });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienJlcG9ydC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96cmVwb3J0L3pyZXBvcnQuY29uZmlnLnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenJlcG9ydC96cmVwb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7Ozs7QUFVdEQsV0FBVztBQUNYLE1BQU0sT0FBTyxhQUFhO0lBUDFCO1FBUUUseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUNuQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUM1QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLDhCQUF5QixHQUFHLElBQUksQ0FBQztRQUNqQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIseUNBQXlDO1FBQ3pDLHVDQUF1QztRQUN2QyxtQ0FBbUM7UUFDbkMsb0RBQW9EO1FBQ3BELE1BQU07UUFDTixrREFBa0Q7UUFFbEQsdUVBQXVFO1FBQ3ZFLHdHQUF3RztRQUN4RyxJQUFJO1FBRUksbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7S0EyRjFCO0lBekZRLE1BQU0sQ0FBQyxZQUFvQjtRQUNoQyxJQUFJLENBQUMs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QUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztTQUN0RTtRQUNELElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7U0FDdEU7UUFDRCxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7WUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztTQUNwRTtJQUNILENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsc0JBQXNCO1FBQ3RCLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXJDLGdDQUFnQztRQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxLQUFLLEVBQUUsSUFBSTtZQUM1QyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2hFLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNyQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzswR0FwSFUsYUFBYTs4RkFBYixhQUFhLG1EQ1gxQix5eEJBa0JBOzJGRFBhLGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0UsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vIGltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXpyZXBvcnRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3pyZXBvcnQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4venJlcG9ydC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBFeHBvcnRPcHRpb25zIHtcclxuICB2aWV3ZXJUb29sVGlwT3BlbmluZyA9IG51bGw7XHJcbiAgcmVzb3VyY2VVUkwgPSBudWxsO1xyXG4gIFJlcG9ydFNvdXJjZSA9IG51bGw7XHJcbiAgcmVhZHkgPSBudWxsO1xyXG4gIGV4cG9ydEJlZ2luID0gbnVsbDtcclxuICBleHBvcnRFbmQgPSBudWxsO1xyXG4gIG9uUmVuZGVyaW5nRW5kID0gbnVsbDtcclxuICB2aWV3ZXJDb250YWluZXJTdHlsZSA9IG51bGw7XHJcbiAgaXNWaXNpYmxlID0gbnVsbDtcclxuICBwYXJhbVRvUmVzaXplUmVwb3J0Vmlld2VyID0gbnVsbDtcclxuICByZXNpemVSZXBvcnRWaWV3ID0gbnVsbDtcclxuICAvLyBwdWJsaWMgc3RhdGljIGluc3RhbmNlOiBFeHBvcnRPcHRpb25zO1xyXG4gIC8vIHB1YmxpYyBzdGF0aWMgaW5pdChjb21wb25lbnQ6IGFueSkge1xyXG4gIC8vICAgaWYgKCFFeHBvcnRPcHRpb25zLmluc3RhbmNlKSB7XHJcbiAgLy8gICAgIEV4cG9ydE9wdGlvbnMuaW5zdGFuY2UgPSBuZXcgRXhwb3J0T3B0aW9ucygpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgRXhwb3J0T3B0aW9ucy5pbnN0YW5jZS5iaW5kRXZlbnRzKGNvbXBvbmVudCk7XHJcblxyXG4gIC8vICAgLy8gQWRkIHRoZSBvcHRpb25zIHdoZW4gaW5pdC4gU29tZXRpbWUgaXQgd2lsbCBub3QgaW5pdCB0aGUgY2xhc3MuXHJcbiAgLy8gICBFeHBvcnRPcHRpb25zLmluc3RhbmNlLmhpZGVPcHRpb25zID0gW1wiUERGXCIsIFwiQ1NWXCIsIFwiWExTXCIsIFwiWExTWFwiLCBcIlJURlwiLCBcIklNQUdFXCIsIFwiTUhUTUxcIiwgXCJYUFNcIl07XHJcbiAgLy8gfVxyXG5cclxuICBwcml2YXRlIGxhcmdlTWVudUJvdW5kID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzaWRlTWVudUJvdW5kID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSByZXBvcnRTb3VyY2UgPSBcIlwiO1xyXG4gIHByaXZhdGUgaGlkZU9wdGlvbnMgPSBbXTtcclxuXHJcbiAgcHVibGljIHVwZGF0ZShyZXBvcnRTb3VyY2U6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZXBvcnRTb3VyY2UgPSByZXBvcnRTb3VyY2U7XHJcbiAgICAvLyBzaG93IGFsbCBleHRlbnNpb25zXHJcbiAgICAvLyQoJ1tkYXRhLWNvbW1hbmQtcGFyYW1ldGVyXScpLnNob3coKTtcclxuXHJcbiAgICAvLyBjaGVjayB0byBoaWRlIG9wdGlvbnNcclxuICAgIHRoaXMuaGlkZVVud2FudGVkT3B0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGJpbmRFdmVudHMoY29tcG9uZW50OiBhbnkpIHtcclxuICAgIHRoaXMuZXhwb3J0T3B0aW9uKGNvbXBvbmVudCk7XHJcblxyXG4gICAgY29uc3Qgc2lkZU1lbnUgPSAkKFwiLnRydi1zaWRlLW1lbnVcIikuY2hpbGRyZW4oXCJ1bFwiKS5kYXRhKCdrZW5kb1BhbmVsQmFyJyk7XHJcbiAgICBjb25zdCBsYXJnZU1lbnUgPSAkKFwiLnRydi1tZW51LWxhcmdlXCIpLmRhdGEoXCJrZW5kb01lbnVcIik7XHJcbiAgICBjb25zdCBzbWFsbE1lbnUgPSAkKFwiLnRydi1tZW51LXNtYWxsXCIpO1xyXG5cclxuICAgIC8vIGhpZGUgZXhwb3J0IGJ1dHRvbiBpZiBhbGwgb3B0aW9uIGlzIG5vdCBhdmFpbGFibGVcclxuICAgIGlmICh0aGlzLmhpZGVPcHRpb25zLmxlbmd0aCA9PSA4KSB7XHJcbiAgICAgIGNvbnN0IGV4cG9ydEJ1dHRvbiA9ICQoXCJbZGF0YS1jb21tYW5kKj0ndGVsZXJpa19SZXBvcnRWaWV3ZXJfZXhwb3J0J11cIilcclxuICAgICAgZXhwb3J0QnV0dG9uLmhpZGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBiaW5kIHRvIHRoZSAnb3BlbicgZXZlbnQgb2YgdGhlIG1haW4gbWVudVxyXG4gICAgaWYgKCF0aGlzLmxhcmdlTWVudUJvdW5kICYmIGxhcmdlTWVudSkge1xyXG4gICAgICBsYXJnZU1lbnUuYmluZChcIm9wZW5cIiwgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlkZVVud2FudGVkT3B0aW9ucygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMubGFyZ2VNZW51Qm91bmQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGJpbmQgdG8gdGhlICdleHBhbmQnIGV2ZW50IG9mIHRoZSBzaWRlIG1lbnVcclxuICAgIGlmICghdGhpcy5zaWRlTWVudUJvdW5kICYmIHNtYWxsTWVudSkge1xyXG4gICAgICBpZiAoc2lkZU1lbnUpIHtcclxuICAgICAgICBzaWRlTWVudS5iaW5kKFwiZXhwYW5kXCIsICgpID0+IHtcclxuICAgICAgICAgIC8vIHJlY2hlY2sgZXhwb3J0IG9wdGlvbnNcclxuICAgICAgICAgIC8vaWYgKHJlbG9hZEhpZGVPcHRpb25zKSB7XHJcbiAgICAgICAgICAvLyAgdGhpc0NvbXBvbmVudC5leHBvcnRPcHRpb24odGhpc0NvbXBvbmVudCk7XHJcbiAgICAgICAgICAvL31cclxuICAgICAgICAgIHRoaXMuaGlkZVVud2FudGVkT3B0aW9ucygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNpZGVNZW51Qm91bmQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydE9wdGlvbihjb21wb25lbnQ6IGFueSkge1xyXG4gICAgY29uc3QgX2RhdGEgPSBjb21wb25lbnQuZGF0YTtcclxuICAgIGlmIChfZGF0YS5FbmFibGVFeHBvcnRQREYpIHtcclxuICAgICAgdGhpcy5oaWRlT3B0aW9ucyA9IHRoaXMuaGlkZU9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gXCJQREZcIik7XHJcbiAgICB9XHJcbiAgICBpZiAoX2RhdGEuRW5hYmxlRXhwb3J0Q1NWKSB7XHJcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMgPSB0aGlzLmhpZGVPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFwiQ1NWXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKF9kYXRhLkVuYWJsZUV4cG9ydEV4Y2VsKSB7XHJcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMgPSB0aGlzLmhpZGVPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFwiWExTXCIpO1xyXG4gICAgICB0aGlzLmhpZGVPcHRpb25zID0gdGhpcy5oaWRlT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBcIlhMU1hcIik7XHJcbiAgICB9XHJcbiAgICBpZiAoX2RhdGEuRW5hYmxlRXhwb3J0UlRGKSB7XHJcbiAgICAgIHRoaXMuaGlkZU9wdGlvbnMgPSB0aGlzLmhpZGVPcHRpb25zLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IFwiUlRGXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKF9kYXRhLkVuYWJsZUV4cG9ydFRJRkYpIHtcclxuICAgICAgdGhpcy5oaWRlT3B0aW9ucyA9IHRoaXMuaGlkZU9wdGlvbnMuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gXCJJTUFHRVwiKTtcclxuICAgIH1cclxuICAgIGlmIChfZGF0YS5FbmFibGVFeHBvcnRNSFRNTCkge1xyXG4gICAgICB0aGlzLmhpZGVPcHRpb25zID0gdGhpcy5oaWRlT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBcIk1IVE1MXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKF9kYXRhLkVuYWJsZUV4cG9ydFhQUykge1xyXG4gICAgICB0aGlzLmhpZGVPcHRpb25zID0gdGhpcy5oaWRlT3B0aW9ucy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBcIlhQU1wiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlVW53YW50ZWRPcHRpb25zKCkge1xyXG4gICAgLy8gc2hvdyBhbGwgZXh0ZW5zaW9uc1xyXG4gICAgJCgnW2RhdGEtY29tbWFuZC1wYXJhbWV0ZXJdJykuc2hvdygpO1xyXG5cclxuICAgIC8vIGhpZGUgdGhlIHNwZWNpZmllZCBleHRlbnNpb25zXHJcbiAgICAkLmVhY2godGhpcy5oaWRlT3B0aW9ucywgZnVuY3Rpb24gKGluZGV4LCBpdGVtKSB7XHJcbiAgICAgIHZhciBoaWRkZW5PcHRpb24gPSAkKCdbZGF0YS1jb21tYW5kLXBhcmFtZXRlcj1cIicgKyBpdGVtICsgJ1wiXScpO1xyXG4gICAgICBpZiAoaGlkZGVuT3B0aW9uICYmIGhpZGRlbk9wdGlvbi5sZW5ndGgpIHtcclxuICAgICAgICBoaWRkZW5PcHRpb24uaGlkZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNpemVWaWV3ZXIoKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImlzVmlzaWJsZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjgwMHB4XCI+XHJcbiAgPHRyLXZpZXdlciAjUmVwb3J0Vmlld2VyXHJcbiAgICAgICAgICAgICBbY29udGFpbmVyU3R5bGVdPVwidmlld2VyQ29udGFpbmVyU3R5bGVcIlxyXG4gICAgICAgICAgICAgW3NlcnZpY2VVcmxdPVwicmVzb3VyY2VVUkxcIlxyXG4gICAgICAgICAgICAgW3JlcG9ydFNvdXJjZV09XCJSZXBvcnRTb3VyY2VcIlxyXG4gICAgICAgICAgICAgW3ZpZXdNb2RlXT1cIidJTlRFUkFDVElWRSdcIlxyXG4gICAgICAgICAgICAgW3NjYWxlTW9kZV09XCInU1BFQ0lGSUMnXCJcclxuICAgICAgICAgICAgIFtwYWdlTW9kZV09XCInU0lOR0xFX1BBR0UnXCJcclxuICAgICAgICAgICAgIFtzY2FsZV09XCIxLjBcIlxyXG4gICAgICAgICAgICAgW3JlYWR5XT1cInJlYWR5KHRoaXMpXCJcclxuICAgICAgICAgICAgIFtleHBvcnRCZWdpbl09XCJleHBvcnRCZWdpbih0aGlzKVwiXHJcbiAgICAgICAgICAgICBbZXhwb3J0RW5kXT1cImV4cG9ydEVuZCh0aGlzKVwiXHJcbiAgICAgICAgICAgICBbdmlld2VyVG9vbFRpcE9wZW5pbmddPVwidmlld2VyVG9vbFRpcE9wZW5pbmdcIlxyXG4gICAgICAgICAgICAgW2VuYWJsZUFjY2Vzc2liaWxpdHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgW3BhZ2VSZWFkeV0gPSBcInJlc2l6ZVJlcG9ydFZpZXcoKVwiXHJcbiAgICAgICAgICAgICBbcmVuZGVyaW5nRW5kXT1cIm9uUmVuZGVyaW5nRW5kXCI+XHJcbiAgPC90ci12aWV3ZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,267 @@
1
+ import { Component, Input } from "@angular/core";
2
+ import { ZComponentHelper, ZComponentProperties } from "mmhglobal-zcore";
3
+ import { Validators } from "@angular/forms";
4
+ import { of } from 'rxjs';
5
+ import { delay, take } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "mmhglobal-zcore";
8
+ import * as i2 from "@ionic/angular";
9
+ import * as i3 from "@progress/kendo-angular-scheduler";
10
+ import * as i4 from "./zscheduler.toolbar.component";
11
+ import * as i5 from "@angular/common";
12
+ import * as i6 from "@angular/forms";
13
+ import * as i7 from "@progress/kendo-angular-intl";
14
+ export class ZschedulerComponent {
15
+ // eventFields: SchedulerModelFields = {
16
+ // id: "Id",
17
+ // title: "Objective",
18
+ // description: "Description",
19
+ // // startTimezone: 'StartTimezone',
20
+ // start: "Date_UTC",
21
+ // end: "End_UTC"
22
+ // // endTimezone: 'EndTimezone',
23
+ // // isAllDay: 'IsAllDay',
24
+ // // recurrenceRule: 'RecurrenceRule',
25
+ // // recurrenceId: 'RecurrenceID',
26
+ // // recurrenceExceptions: 'RecurrenceException'
27
+ // };
28
+ constructor(changeDetector, storageService, authService) {
29
+ this.changeDetector = changeDetector;
30
+ this.storageService = storageService;
31
+ this.authService = authService;
32
+ this.isLoading = true;
33
+ this.events = [];
34
+ this.selectedDate = new Date();
35
+ this.local = {
36
+ inProgress: false,
37
+ ctrlScope: null
38
+ };
39
+ // selectedDate: Date = new Date();
40
+ this.selectedViewIndex = 3;
41
+ this.componentProperties = new ZComponentProperties();
42
+ this.getEventStyles = (args) => {
43
+ if (args && args.event && args.event.dataItem) {
44
+ const BGColor = args.event.dataItem["backgroundColor"];
45
+ const BorderColor = args.event.dataItem["borderColor"];
46
+ if (BGColor && BorderColor) {
47
+ return { backgroundColor: BGColor, bordercolor: BorderColor, color: "white" };
48
+ }
49
+ else {
50
+ return { backgroundColor: "#ff7c73", bordercolor: "#ff7c73", color: "white" };
51
+ }
52
+ }
53
+ };
54
+ this.getSlotClass = (args) => {
55
+ const hour = args.start.getHours();
56
+ args.resources = this.events;
57
+ return {
58
+ args
59
+ };
60
+ };
61
+ this.setData = (gData) => {
62
+ this.selectedViewIndex = gData || this.selectedViewIndex;
63
+ //reset data
64
+ this.getItems();
65
+ };
66
+ this.setEnable = (status) => {
67
+ this.componentProperties.isReadOnly = !status;
68
+ };
69
+ this.setVisible = (status) => {
70
+ this.componentProperties.isVisible = status;
71
+ this.data.Visible = status;
72
+ };
73
+ this.setRequire = (status) => {
74
+ this.componentProperties.isRequired = status;
75
+ ZComponentHelper.changeValidator(status, this.group, this.data.Value, this.componentProperties, Validators.required);
76
+ };
77
+ }
78
+ ngOnInit() {
79
+ ZComponentHelper.setComponentProperties(this);
80
+ ZComponentHelper.registerComponent(this);
81
+ this.local.ctrlScope = this.group.ctrlScope;
82
+ //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;
83
+ //
84
+ if (this.data['SaveFilter']) {
85
+ this.setSchedulerSessionKey(this.group);
86
+ this.getSchedulerSessionFilter(this.group);
87
+ }
88
+ this.getItems();
89
+ }
90
+ ngAfterViewInit() {
91
+ //this.selectedViewIndex = this.data.SelectedViewIndex || this.selectedViewIndex;
92
+ }
93
+ getItems() {
94
+ // if (this.isLoading) {
95
+ // return [];
96
+ // }
97
+ // debugger;
98
+ const v = this.data.Value;
99
+ if (Array.isArray(v)) {
100
+ return v;
101
+ }
102
+ else {
103
+ const evalValue = ZComponentHelper.getGroupEvalValue.call(this, v);
104
+ // debugger;
105
+ if (evalValue) {
106
+ this.events = evalValue;
107
+ if (this.events) {
108
+ this.isLoading = false;
109
+ }
110
+ }
111
+ else {
112
+ console.warn("Invalid field.Value setting ", this.data.Value);
113
+ return [];
114
+ }
115
+ }
116
+ }
117
+ onDateChange(args) {
118
+ // this.events = generateEvents(args.dateRange.start, 7);
119
+ if (this.local.inProgress) {
120
+ return;
121
+ }
122
+ //Set session values
123
+ this.group["selectedDate"] = args.selectedDate;
124
+ console.log("zschedule component date-change selection: ", args.dateRange);
125
+ // this.local.selectedDate = args.dateRange.start;
126
+ this.group.subject.next({
127
+ type: "zscheduler-onDateChange",
128
+ target: this.data.CalendarOptions + ".dateClick",
129
+ event: args.dateRange
130
+ });
131
+ // We're setting the events after the current change detection cycle
132
+ // has completed, hence we need to trigger a new one.
133
+ this.changeDetector.detectChanges();
134
+ }
135
+ onSlotDblClick({ sender, start, end, isAllDay }) {
136
+ console.log("zscheduler component slot-double-click: ", sender, start, end, isAllDay);
137
+ if (sender.selectedView.name === "month" ||
138
+ sender.selectedView.name === "week") {
139
+ this.local.inProgress = true;
140
+ this.selectedViewIndex = 3;
141
+ this.selectedDate = start;
142
+ of([]).pipe(take(1), delay(1000)).subscribe(() => this.local.inProgress = false);
143
+ }
144
+ // this.group.subject.next({
145
+ // Type: "zscheduler-onSlotDblClick",
146
+ // Target: this.data.CalendarOptions + 'select',
147
+ // event: { sender, start, end, isAllDay }
148
+ // });
149
+ // this.closeEditor(sender);
150
+ // this.formGroup = this.formBuilder.group({
151
+ // 'Start': [start, Validators.required],
152
+ // 'End': [end, Validators.required],
153
+ // 'StartTimezone': new FormControl(),
154
+ // 'EndTimezone': new FormControl(),
155
+ // 'IsAllDay': isAllDay,
156
+ // 'Title': new FormControl(''),
157
+ // 'Description': new FormControl(''),
158
+ // 'RecurrenceRule': new FormControl(),
159
+ // 'RecurrenceID': new FormControl()
160
+ // });
161
+ // sender.addEvent(this.formGroup);
162
+ }
163
+ onEventDblClick({ sender, event }) {
164
+ console.log("zscheduler component event-double-click: ", sender, event);
165
+ // this.group.subject.next({
166
+ // type: "zscheduler-onEventDblClick" + ".eventClick",
167
+ // target: this.data.CalendarOptions,
168
+ // event: { sender, event }
169
+ // } as ZComponentOutputEvent);
170
+ // this.closeEditor(sender);
171
+ // let dataItem = event.dataItem;
172
+ // if (this.editService.isRecurring(dataItem)) {
173
+ // sender.openRecurringConfirmationDialog(CrudOperation.Edit)
174
+ // // The result will be undefined if the dialog was closed.
175
+ // .pipe(filter(editMode => editMode !== undefined))
176
+ // .subscribe((editMode: EditMode) => {
177
+ // if (editMode === EditMode.Series) {
178
+ // dataItem = this.editService.findRecurrenceMaster(dataItem);
179
+ // }
180
+ // this.formGroup = this.createFormGroup(dataItem);
181
+ // sender.editEvent(dataItem, { group: this.formGroup, mode: editMode });
182
+ // });
183
+ // } else {
184
+ // this.formGroup = this.createFormGroup(dataItem);
185
+ // sender.editEvent(dataItem, { group: this.formGroup });
186
+ // }
187
+ if (this.data.OnItemClick) {
188
+ //Restore session
189
+ this.beforeSchedulerGetData(this.group);
190
+ this.setSchedulerSessionFilter(this.group);
191
+ const func = ZComponentHelper.getGroupEvalValue.call(this, this.data.OnItemClick);
192
+ if (typeof func === 'function') {
193
+ const callFunc = func.bind(this.group.ctrlScope);
194
+ callFunc(event);
195
+ }
196
+ return;
197
+ }
198
+ }
199
+ setSchedulerSessionKey(group) {
200
+ if (group["SchedulerStorageKey"]) {
201
+ return;
202
+ }
203
+ else {
204
+ group["SchedulerStorageKey"] = 'zgrid_' + group.resourceURL + '_' + this.data.Value + '::' + this.authService.e1Token.userName;
205
+ }
206
+ }
207
+ beforeSchedulerGetData(group) {
208
+ console.warn("beforeDateRangeBinding triggered");
209
+ if (!group.beforeSchedulerGetData) {
210
+ console.warn("group.beforeDateRangeBinding is undefined");
211
+ return of(true);
212
+ }
213
+ return group.beforeSchedulerGetData(group);
214
+ }
215
+ async setSchedulerSessionFilter(group) {
216
+ if (!group["SchedulerStorageKey"]) {
217
+ return null;
218
+ }
219
+ const StorageKey = group["SchedulerStorageKey"];
220
+ let lstFilter = {};
221
+ if (group && this.storageService && this.data['SaveFilter']) {
222
+ //list of data for StateFilter and FilterParams
223
+ lstFilter = {
224
+ "SelectedDate": JSON.stringify(group["selectedDate"])
225
+ };
226
+ //create session storage
227
+ this.storageService.set(StorageKey, JSON.stringify(lstFilter));
228
+ }
229
+ }
230
+ async getSchedulerSessionFilter(group) {
231
+ if (!group["SchedulerStorageKey"]) {
232
+ return null;
233
+ }
234
+ const StorageKey = group["SchedulerStorageKey"];
235
+ if (this.storageService) {
236
+ await this.storageService.get(StorageKey)
237
+ .then(data => {
238
+ if (!data || !data.value || data.value === "null") {
239
+ return null;
240
+ }
241
+ else {
242
+ const result = JSON.parse(data.value);
243
+ this.selectedDate = new Date(JSON.parse(result["SelectedDate"]));
244
+ return data;
245
+ }
246
+ });
247
+ }
248
+ else {
249
+ return null;
250
+ }
251
+ }
252
+ }
253
+ ZschedulerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZschedulerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.StorageSessionService }, { token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component });
254
+ ZschedulerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZschedulerComponent, selector: "app-zscheduler", inputs: { data: "data", group: "group", form: "form", ngStyle: "ngStyle" }, ngImport: i0, template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <kendo-scheduler *ngIf=\"!isLoading\" [kendoSchedulerBinding]=\"events\" [selectedDate]=\"selectedDate\" (dateChange)=\"onDateChange($event)\"\r\n [selectedViewIndex]=\"selectedViewIndex\" [eventStyles]=\"getEventStyles\" [slotClass]=\"getSlotClass\" \r\n (slotDblClick)=\"onSlotDblClick($event)\" (eventDblClick)=\"onEventDblClick($event)\" scrollTime=\"08:00\"\r\n [style.height]=\"(!!data.Height ? [data.Height] : '600px')\">\r\n <!-- [style.font-size]=\"(!!data.FontSize ? [data.FontSize] : '12px')\"> -->\r\n \r\n <!--Note: line-height same with [eventHeight]-->\r\n <ng-template kendoSchedulerEventTemplate let-event>\r\n <span style=\"margin-left: -5px;line-height: 25px;\">{{ event.title }}</span>\r\n </ng-template>\r\n\r\n <ng-template kendoSchedulerToolbarTemplate let-selectedDate=\"selectedDate\">\r\n <zschedulertoolbar [local]=\"local\" [selectedDate]=\"selectedDate\">\r\n </zschedulertoolbar>\r\n <ul kendoSchedulerToolbarViewSelector></ul>\r\n </ng-template>\r\n\r\n <ng-template kendoSchedulerAllDaySlotTemplate let-date=\"date\">\r\n <strong>{{ date | kendoDate: 'dd-MMM-yyyy' }}</strong>\r\n </ng-template>\r\n <ng-template kendoSchedulerDateHeaderTemplate let-date=\"date\">\r\n <strong>{{ date | kendoDate: \"ccc\" }}</strong>\r\n </ng-template>\r\n\r\n \r\n <!-- <kendo-scheduler-day-view startTime=\"08:00\">\r\n </kendo-scheduler-day-view>\r\n\r\n <kendo-scheduler-week-view startTime=\"08:00\">\r\n </kendo-scheduler-week-view> -->\r\n\r\n <kendo-scheduler-day-view>\r\n </kendo-scheduler-day-view>\r\n\r\n <kendo-scheduler-week-view>\r\n </kendo-scheduler-week-view>\r\n\r\n <kendo-scheduler-month-view [eventHeight]=\"25\"> \r\n </kendo-scheduler-month-view>\r\n\r\n <!-- <kendo-scheduler-timeline-view>\r\n </kendo-scheduler-timeline-view> -->\r\n\r\n <kendo-scheduler-agenda-view>\r\n </kendo-scheduler-agenda-view>\r\n </kendo-scheduler>\r\n\r\n</ion-item>", styles: ["ion-item{--padding-start: 0px;--inner-padding-end: 0px}\n"], components: [{ type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { type: i3.SchedulerComponent, selector: "kendo-scheduler", inputs: ["editable", "selectable", "eventHeight", "columnWidth", "startTime", "endTime", "workDayStart", "workDayEnd", "slotDuration", "slotDivisions", "slotFill", "scrollTime", "currentTimeMarker", "highlightOngoingEvents", "isSlotSelected", "selectedViewIndex", "weekStart", "timezone", "events", "selectedDate", "modelFields", "min", "max", "showWorkHours", "workWeekStart", "workWeekEnd", "group", "resources", "loading", "slotClass", "eventClass", "eventStyles"], outputs: ["selectedViewIndexChange", "navigate", "dateChange", "slotClick", "slotDblClick", "create", "eventClick", "eventDblClick", "eventKeydown", "cancel", "save", "remove", "resizeStart", "resize", "resizeEnd", "dragStart", "drag", "dragEnd", "slotDragStart", "slotDrag", "slotDragEnd", "pdfExport"] }, { type: i4.ZSchedulerToolBarComponent, selector: "zschedulertoolbar", inputs: ["local", "selectedDate"] }, { type: i3.ToolbarViewSelectorComponent, selector: "[kendoSchedulerToolbarViewSelector]" }, { type: i3.DayViewComponent, selector: "kendo-scheduler-day-view", inputs: ["selectedDateFormat", "selectedShortDateFormat"] }, { type: i3.WeekViewComponent, selector: "kendo-scheduler-week-view", inputs: ["selectedDateFormat", "selectedShortDateFormat"] }, { type: i3.MonthViewComponent, selector: "kendo-scheduler-month-view", inputs: ["selectedDateFormat", "selectedShortDateFormat", "eventHeight"] }, { type: i3.AgendaViewComponent, selector: "kendo-scheduler-agenda-view", inputs: ["selectedDateFormat", "selectedShortDateFormat", "numberOfDays"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.ShortcutsDirective, selector: "kendo-scheduler" }, { type: i3.DataBindingDirective, selector: "[kendoSchedulerBinding]", inputs: ["kendoSchedulerBinding"] }, { type: i3.EventTemplateDirective, selector: "[kendoSchedulerEventTemplate]" }, { type: i3.ToolbarTemplateDirective, selector: "[kendoSchedulerToolbarTemplate]" }, { type: i3.AllDaySlotTemplateDirective, selector: "[kendoSchedulerAllDaySlotTemplate]" }, { type: i3.DateHeaderTemplateDirective, selector: "[kendoSchedulerDateHeaderTemplate]" }], pipes: { "kendoDate": i7.DatePipe } });
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZschedulerComponent, decorators: [{
256
+ type: Component,
257
+ args: [{ selector: "app-zscheduler", template: "<ion-item [formGroup]=\"form\" *ngIf=\"(!!componentProperties.isVisibleField ? group[componentProperties.isVisibleField] : componentProperties.isVisible)\">\r\n <ion-label [attr.for]=\"data.Value\" *ngIf=\"data.ShowLabel\" position=\"stacked\">\r\n {{data.Label}} <ion-text *ngIf=\"(!!componentProperties.isRequiredField ? group[componentProperties.isRequiredField] : componentProperties.isRequired)\" color=\"danger\">*</ion-text>\r\n </ion-label>\r\n <kendo-scheduler *ngIf=\"!isLoading\" [kendoSchedulerBinding]=\"events\" [selectedDate]=\"selectedDate\" (dateChange)=\"onDateChange($event)\"\r\n [selectedViewIndex]=\"selectedViewIndex\" [eventStyles]=\"getEventStyles\" [slotClass]=\"getSlotClass\" \r\n (slotDblClick)=\"onSlotDblClick($event)\" (eventDblClick)=\"onEventDblClick($event)\" scrollTime=\"08:00\"\r\n [style.height]=\"(!!data.Height ? [data.Height] : '600px')\">\r\n <!-- [style.font-size]=\"(!!data.FontSize ? [data.FontSize] : '12px')\"> -->\r\n \r\n <!--Note: line-height same with [eventHeight]-->\r\n <ng-template kendoSchedulerEventTemplate let-event>\r\n <span style=\"margin-left: -5px;line-height: 25px;\">{{ event.title }}</span>\r\n </ng-template>\r\n\r\n <ng-template kendoSchedulerToolbarTemplate let-selectedDate=\"selectedDate\">\r\n <zschedulertoolbar [local]=\"local\" [selectedDate]=\"selectedDate\">\r\n </zschedulertoolbar>\r\n <ul kendoSchedulerToolbarViewSelector></ul>\r\n </ng-template>\r\n\r\n <ng-template kendoSchedulerAllDaySlotTemplate let-date=\"date\">\r\n <strong>{{ date | kendoDate: 'dd-MMM-yyyy' }}</strong>\r\n </ng-template>\r\n <ng-template kendoSchedulerDateHeaderTemplate let-date=\"date\">\r\n <strong>{{ date | kendoDate: \"ccc\" }}</strong>\r\n </ng-template>\r\n\r\n \r\n <!-- <kendo-scheduler-day-view startTime=\"08:00\">\r\n </kendo-scheduler-day-view>\r\n\r\n <kendo-scheduler-week-view startTime=\"08:00\">\r\n </kendo-scheduler-week-view> -->\r\n\r\n <kendo-scheduler-day-view>\r\n </kendo-scheduler-day-view>\r\n\r\n <kendo-scheduler-week-view>\r\n </kendo-scheduler-week-view>\r\n\r\n <kendo-scheduler-month-view [eventHeight]=\"25\"> \r\n </kendo-scheduler-month-view>\r\n\r\n <!-- <kendo-scheduler-timeline-view>\r\n </kendo-scheduler-timeline-view> -->\r\n\r\n <kendo-scheduler-agenda-view>\r\n </kendo-scheduler-agenda-view>\r\n </kendo-scheduler>\r\n\r\n</ion-item>", styles: ["ion-item{--padding-start: 0px;--inner-padding-end: 0px}\n"] }]
258
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.StorageSessionService }, { type: i1.AuthService }]; }, propDecorators: { data: [{
259
+ type: Input
260
+ }], group: [{
261
+ type: Input
262
+ }], form: [{
263
+ type: Input
264
+ }], ngStyle: [{
265
+ type: Input
266
+ }] } });
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNjaGVkdWxlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi96c2NoZWR1bGVyL3pzY2hlZHVsZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvenNjaGVkdWxlci96c2NoZWR1bGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ08sZ0JBQWdCLEVBQ1osb0JBQW9CLEVBQ3JDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUXZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBTzdDLE1BQU0sT0FBTyxtQkFBbUI7SUFrQjlCLHdDQUF3QztJQUN4QyxjQUFjO0lBQ2Qsd0JBQXdCO0lBQ3hCLGdDQUFnQztJQUNoQyx1Q0FBdUM7SUFDdkMsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixtQ0FBbUM7SUFDbkMsNkJBQTZCO0lBQzdCLHlDQUF5QztJQUN6QyxxQ0FBcUM7SUFDckMsbURBQW1EO0lBQ25ELEtBQUs7SUFFTCxZQUNVLGNBQWlDLEVBQ2pDLGNBQXFDLEVBQ3JDLFdBQXdCO1FBRnhCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUE1QmxDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsV0FBTSxHQUFVLEVBQUUsQ0FBQztR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b250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIFpDb21wb25lbnQsIFpDb21wb25lbnRIZWxwZXIsIFpDb21wb25lbnRPdXRwdXRFdmVudCxcclxuICBaR3JvdXAsIFpGaWVsZCwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFN0b3JhZ2VTZXNzaW9uU2VydmljZSwgQXV0aFNlcnZpY2VcclxufSBmcm9tIFwibW1oZ2xvYmFsLXpjb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1xyXG4gIERhdGVDaGFuZ2VFdmVudCxcclxuICBTbG90Q2xpY2tFdmVudCxcclxuICBFdmVudENsaWNrRXZlbnQsXHJcbiAgRXZlbnRTdHlsZUFyZ3MsXHJcbiAgU2xvdENsYXNzQXJnc1xyXG59IGZyb20gXCJAcHJvZ3Jlc3Mva2VuZG8tYW5ndWxhci1zY2hlZHVsZXJcIjtcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJhcHAtenNjaGVkdWxlclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4venNjaGVkdWxlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi96c2NoZWR1bGVyLmNvbXBvbmVudC5zY3NzXCJdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBac2NoZWR1bGVyQ29tcG9uZW50IGltcGxlbWVudHMgWkNvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBASW5wdXQoKSBkYXRhOiBaRmllbGQ7XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgbmdTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueTsgfVxyXG5cclxuXHJcbiAgaXNMb2FkaW5nID0gdHJ1ZTtcclxuICBldmVudHM6IGFueVtdID0gW107XHJcbiAgc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoKTtcclxuICBsb2NhbCA9IHtcclxuICAgIGluUHJvZ3Jlc3M6IGZhbHNlLFxyXG4gICAgY3RybFNjb3BlOiBudWxsXHJcbiAgfTtcclxuICAvLyBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHNlbGVjdGVkVmlld0luZGV4ID0gMztcclxuICBjb21wb25lbnRQcm9wZXJ0aWVzID0gbmV3IFpDb21wb25lbnRQcm9wZXJ0aWVzKCk7XHJcblxyXG4gIC8vIGV2ZW50RmllbGRzOiBTY2hlZHVsZXJNb2RlbEZpZWxkcyA9IHtcclxuICAvLyAgIGlkOiBcIklkXCIsXHJcbiAgLy8gICB0aXRsZTogXCJPYmplY3RpdmVcIixcclxuICAvLyAgIGRlc2NyaXB0aW9uOiBcIkRlc2NyaXB0aW9uXCIsXHJcbiAgLy8gICAvLyBzdGFydFRpbWV6b25lOiAnU3RhcnRUaW1lem9uZScsXHJcbiAgLy8gICBzdGFydDogXCJEYXRlX1VUQ1wiLFxyXG4gIC8vICAgZW5kOiBcIkVuZF9VVENcIlxyXG4gIC8vICAgLy8gZW5kVGltZXpvbmU6ICdFbmRUaW1lem9uZScsXHJcbiAgLy8gICAvLyBpc0FsbERheTogJ0lzQWxsRGF5JyxcclxuICAvLyAgIC8vIHJlY3VycmVuY2VSdWxlOiAnUmVjdXJyZW5jZVJ1bGUnLFxyXG4gIC8vICAgLy8gcmVjdXJyZW5jZUlkOiAnUmVjdXJyZW5jZUlEJyxcclxuICAvLyAgIC8vIHJlY3VycmVuY2VFeGNlcHRpb25zOiAnUmVjdXJyZW5jZUV4Y2VwdGlvbidcclxuICAvLyB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlc3Npb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5zZXRDb21wb25lbnRQcm9wZXJ0aWVzKHRoaXMpO1xyXG4gICAgWkNvbXBvbmVudEhlbHBlci5yZWdpc3RlckNvbXBvbmVudCh0aGlzKTtcclxuICAgIHRoaXMubG9jYWwuY3RybFNjb3BlID0gdGhpcy5ncm91cC5jdHJsU2NvcGU7XHJcbiAgICAvL3RoaXMuc2VsZWN0ZWRWaWV3SW5kZXggPSB0aGlzLmRhdGEuU2VsZWN0ZWRWaWV3SW5kZXggfHwgdGhpcy5zZWxlY3RlZFZpZXdJbmRleDtcclxuICAgIC8vXHJcbiAgICBpZiAodGhpcy5kYXRhWydTYXZlRmlsdGVyJ10pIHtcclxuICAgICAgdGhpcy5zZXRTY2hlZHVsZXJTZXNzaW9uS2V5KHRoaXMuZ3JvdXApO1xyXG4gICAgICB0aGlzLmdldFNjaGVkdWxlclNlc3Npb25GaWx0ZXIodGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEl0ZW1zKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAvL3RoaXMuc2VsZWN0ZWRWaWV3SW5kZXggPSB0aGlzLmRhdGEuU2VsZWN0ZWRWaWV3SW5kZXggfHwgdGhpcy5zZWxlY3RlZFZpZXdJbmRleDtcclxuICB9XHJcblxyXG4gIGdldEV2ZW50U3R5bGVzID0gKGFyZ3M6IEV2ZW50U3R5bGVBcmdzKSA9PiB7XHJcblxyXG4gICAgaWYoYXJncyAmJiBhcmdzLmV2ZW50ICYmIGFyZ3MuZXZlbnQuZGF0YUl0ZW0pXHJcbiAgICB7XHJcbiAgICAgIGNvbnN0IEJHQ29sb3I9YXJncy5ldmVudC5kYXRhSXRlbVtcImJhY2tncm91bmRDb2xvclwiXTtcclxuICAgICAgY29uc3QgQm9yZGVyQ29sb3I9YXJncy5ldmVudC5kYXRhSXRlbVtcImJvcmRlckNvbG9yXCJdO1xyXG5cclxuICAgIGlmIChCR0NvbG9yICYmIEJvcmRlckNvbG9yKSBcclxuICAgIHsgcmV0dXJuIHsgYmFja2dyb3VuZENvbG9yOiBCR0NvbG9yLCBib3JkZXJjb2xvcjogQm9yZGVyQ29sb3IsIGNvbG9yOiBcIndoaXRlXCIgfTsgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB7IGJhY2tncm91bmRDb2xvcjogXCIjZmY3YzczXCIsIGJvcmRlcmNvbG9yOiBcIiNmZjdjNzNcIiAsIGNvbG9yOiBcIndoaXRlXCIgfTtcclxuICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U2xvdENsYXNzID0gKGFyZ3M6IFNsb3RDbGFzc0FyZ3MpID0+IHtcclxuICAgIGNvbnN0IGhvdXIgPSBhcmdzLnN0YXJ0LmdldEhvdXJzKCk7XHJcbiAgICBhcmdzLnJlc291cmNlcyA9IHRoaXMuZXZlbnRzXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBhcmdzXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0SXRlbXMoKSB7XHJcbiAgICAvLyBpZiAodGhpcy5pc0xvYWRpbmcpIHtcclxuICAgIC8vICAgIHJldHVybiBbXTtcclxuICAgIC8vICB9XHJcbiAgICAvLyBkZWJ1Z2dlcjtcclxuICAgIGNvbnN0IHYgPSB0aGlzLmRhdGEuVmFsdWU7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xyXG4gICAgICByZXR1cm4gdjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGV2YWxWYWx1ZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB2KTtcclxuICAgICAgLy8gZGVidWdnZXI7XHJcbiAgICAgIGlmIChldmFsVmFsdWUpIHtcclxuICAgICAgICB0aGlzLmV2ZW50cyA9IGV2YWxWYWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5ldmVudHMpIHtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcIkludmFsaWQgZmllbGQuVmFsdWUgc2V0dGluZyBcIiwgdGhpcy5kYXRhLlZhbHVlKTtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGF0ZUNoYW5nZShhcmdzOiBEYXRlQ2hhbmdlRXZlbnQpOiB2b2lkIHtcclxuXHJcbiAgICAvLyB0aGlzLmV2ZW50cyA9IGdlbmVyYXRlRXZlbnRzKGFyZ3MuZGF0ZVJhbmdlLnN0YXJ0LCA3KTtcclxuXHJcbiAgICBpZiAodGhpcy5sb2NhbC5pblByb2dyZXNzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL1NldCBzZXNzaW9uIHZhbHVlc1xyXG4gICAgdGhpcy5ncm91cFtcInNlbGVjdGVkRGF0ZVwiXSA9IGFyZ3Muc2VsZWN0ZWREYXRlO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKFwienNjaGVkdWxlIGNvbXBvbmVudCBkYXRlLWNoYW5nZSBzZWxlY3Rpb246IFwiLCBhcmdzLmRhdGVSYW5nZSk7XHJcbiAgICAgLy8gdGhpcy5sb2NhbC5zZWxlY3RlZERhdGUgPSBhcmdzLmRhdGVSYW5nZS5zdGFydDtcclxuICAgIHRoaXMuZ3JvdXAuc3ViamVjdC5uZXh0KHtcclxuICAgIHR5cGU6IFwienNjaGVkdWxlci1vbkRhdGVDaGFuZ2VcIixcclxuICAgIHRhcmdldDogdGhpcy5kYXRhLkNhbGVuZGFyT3B0aW9ucyArIFwiLmRhdGVDbGlja1wiLFxyXG4gICAgZXZlbnQ6IGFyZ3MuZGF0ZVJhbmdlXHJcbiAgICB9IGFzIFpDb21wb25lbnRPdXRwdXRFdmVudCk7XHJcbiAgICAvLyBXZSdyZSBzZXR0aW5nIHRoZSBldmVudHMgYWZ0ZXIgdGhlIGN1cnJlbnQgY2hhbmdlIGRldGVjdGlvbiBjeWNsZVxyXG4gICAgLy8gaGFzIGNvbXBsZXRlZCwgaGVuY2Ugd2UgbmVlZCB0byB0cmlnZ2VyIGEgbmV3IG9uZS5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICB9XHJcblxyXG4gIG9uU2xvdERibENsaWNrKHsgc2VuZGVyLCBzdGFydCwgZW5kLCBpc0FsbERheSB9OiBTbG90Q2xpY2tFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXHJcbiAgICAgIFwienNjaGVkdWxlciBjb21wb25lbnQgc2xvdC1kb3VibGUtY2xpY2s6IFwiLFxyXG4gICAgICBzZW5kZXIsXHJcbiAgICAgIHN0YXJ0LFxyXG4gICAgICBlbmQsXHJcbiAgICAgIGlzQWxsRGF5XHJcbiAgICApO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgc2VuZGVyLnNlbGVjdGVkVmlldy5uYW1lID09PSBcIm1vbnRoXCIgfHxcclxuICAgICAgc2VuZGVyLnNlbGVjdGVkVmlldy5uYW1lID09PSBcIndlZWtcIlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubG9jYWwuaW5Qcm9ncmVzcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRWaWV3SW5kZXggPSAzO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHN0YXJ0O1xyXG4gICAgICBvZihbXSkucGlwZSh0YWtlKDEpLCBkZWxheSgxMDAwKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9jYWwuaW5Qcm9ncmVzcyA9IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAvLyAgIFR5cGU6IFwienNjaGVkdWxlci1vblNsb3REYmxDbGlja1wiLFxyXG4gICAgLy8gICBUYXJnZXQ6IHRoaXMuZGF0YS5DYWxlbmRhck9wdGlvbnMgKyAnc2VsZWN0JyxcclxuICAgIC8vICAgZXZlbnQ6IHsgc2VuZGVyLCBzdGFydCwgZW5kLCBpc0FsbERheSB9XHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHRoaXMuY2xvc2VFZGl0b3Ioc2VuZGVyKTtcclxuICAgIC8vIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAvLyAgICAgJ1N0YXJ0JzogW3N0YXJ0LCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgIC8vICAgICAnRW5kJzogW2VuZCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAvLyAgICAgJ1N0YXJ0VGltZXpvbmUnOiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgIC8vICAgICAnRW5kVGltZXpvbmUnOiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgIC8vICAgICAnSXNBbGxEYXknOiBpc0FsbERheSxcclxuICAgIC8vICAgICAnVGl0bGUnOiBuZXcgRm9ybUNvbnRyb2woJycpLFxyXG4gICAgLy8gICAgICdEZXNjcmlwdGlvbic6IG5ldyBGb3JtQ29udHJvbCgnJyksXHJcbiAgICAvLyAgICAgJ1JlY3VycmVuY2VSdWxlJzogbmV3IEZvcm1Db250cm9sKCksXHJcbiAgICAvLyAgICAgJ1JlY3VycmVuY2VJRCc6IG5ldyBGb3JtQ29udHJvbCgpXHJcbiAgICAvLyB9KTtcclxuICAgIC8vIHNlbmRlci5hZGRFdmVudCh0aGlzLmZvcm1Hcm91cCk7XHJcbiAgfVxyXG5cclxuICBvbkV2ZW50RGJsQ2xpY2soeyBzZW5kZXIsIGV2ZW50IH06IEV2ZW50Q2xpY2tFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJ6c2NoZWR1bGVyIGNvbXBvbmVudCBldmVudC1kb3VibGUtY2xpY2s6IFwiLCBzZW5kZXIsIGV2ZW50KTtcclxuXHJcbiAgICAvLyB0aGlzLmdyb3VwLnN1YmplY3QubmV4dCh7XHJcbiAgICAvLyAgIHR5cGU6IFwienNjaGVkdWxlci1vbkV2ZW50RGJsQ2xpY2tcIiArIFwiLmV2ZW50Q2xpY2tcIixcclxuICAgIC8vICAgdGFyZ2V0OiB0aGlzLmRhdGEuQ2FsZW5kYXJPcHRpb25zLFxyXG4gICAgLy8gICBldmVudDogeyBzZW5kZXIsIGV2ZW50IH1cclxuICAgIC8vIH0gYXMgWkNvbXBvbmVudE91dHB1dEV2ZW50KTtcclxuXHJcbiAgICAvLyB0aGlzLmNsb3NlRWRpdG9yKHNlbmRlcik7XHJcbiAgICAvLyBsZXQgZGF0YUl0ZW0gPSBldmVudC5kYXRhSXRlbTtcclxuICAgIC8vIGlmICh0aGlzLmVkaXRTZXJ2aWNlLmlzUmVjdXJyaW5nKGRhdGFJdGVtKSkge1xyXG4gICAgLy8gICAgIHNlbmRlci5vcGVuUmVjdXJyaW5nQ29uZmlybWF0aW9uRGlhbG9nKENydWRPcGVyYXRpb24uRWRpdClcclxuICAgIC8vICAgICAgICAgLy8gVGhlIHJlc3VsdCB3aWxsIGJlIHVuZGVmaW5lZCBpZiB0aGUgZGlhbG9nIHdhcyBjbG9zZWQuXHJcbiAgICAvLyAgICAgICAgIC5waXBlKGZpbHRlcihlZGl0TW9kZSA9PiBlZGl0TW9kZSAhPT0gdW5kZWZpbmVkKSlcclxuICAgIC8vICAgICAgICAgLnN1YnNjcmliZSgoZWRpdE1vZGU6IEVkaXRNb2RlKSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICBpZiAoZWRpdE1vZGUgPT09IEVkaXRNb2RlLlNlcmllcykge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgIGRhdGFJdGVtID0gdGhpcy5lZGl0U2VydmljZS5maW5kUmVjdXJyZW5jZU1hc3RlcihkYXRhSXRlbSk7XHJcbiAgICAvLyAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuY3JlYXRlRm9ybUdyb3VwKGRhdGFJdGVtKTtcclxuICAgIC8vICAgICAgICAgICAgIHNlbmRlci5lZGl0RXZlbnQoZGF0YUl0ZW0sIHsgZ3JvdXA6IHRoaXMuZm9ybUdyb3VwLCBtb2RlOiBlZGl0TW9kZSB9KTtcclxuICAgIC8vICAgICAgICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5jcmVhdGVGb3JtR3JvdXAoZGF0YUl0ZW0pO1xyXG4gICAgLy8gICAgIHNlbmRlci5lZGl0RXZlbnQoZGF0YUl0ZW0sIHsgZ3JvdXA6IHRoaXMuZm9ybUdyb3VwIH0pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEuT25JdGVtQ2xpY2spIHtcclxuXHJcbiAgICAgIC8vUmVzdG9yZSBzZXNzaW9uXHJcbiAgICAgIHRoaXMuYmVmb3JlU2NoZWR1bGVyR2V0RGF0YSh0aGlzLmdyb3VwKTtcclxuICAgICAgdGhpcy5zZXRTY2hlZHVsZXJTZXNzaW9uRmlsdGVyKHRoaXMuZ3JvdXApO1xyXG5cclxuICAgICAgY29uc3QgZnVuYyA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbCh0aGlzLCB0aGlzLmRhdGEuT25JdGVtQ2xpY2spO1xyXG4gICAgICBpZiAodHlwZW9mIGZ1bmMgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb25zdCBjYWxsRnVuYyA9IGZ1bmMuYmluZCh0aGlzLmdyb3VwLmN0cmxTY29wZSk7XHJcbiAgICAgICAgY2FsbEZ1bmMoZXZlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuICBcclxuICBwdWJsaWMgc2V0RGF0YSA9IChnRGF0YTogYW55KSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkVmlld0luZGV4ID0gZ0RhdGEgfHwgdGhpcy5zZWxlY3RlZFZpZXdJbmRleDtcclxuICAgIC8vcmVzZXQgZGF0YVxyXG4gICAgdGhpcy5nZXRJdGVtcygpO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRFbmFibGUgPSAoc3RhdHVzOiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLmNvbXBvbmVudFByb3BlcnRpZXMuaXNSZWFkT25seSA9ICFzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VmlzaWJsZSA9IChzdGF0dXM6IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGUgPSBzdGF0dXM7XHJcbiAgICB0aGlzLmRhdGEuVmlzaWJsZSA9IHN0YXR1cztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRSZXF1aXJlID0gKHN0YXR1czogYm9vbGVhbikgPT4ge1xyXG4gICAgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQgPSBzdGF0dXM7XHJcbiAgICBaQ29tcG9uZW50SGVscGVyLmNoYW5nZVZhbGlkYXRvcihzdGF0dXMsIHRoaXMuZ3JvdXAsIHRoaXMuZGF0YS5WYWx1ZSwgdGhpcy5jb21wb25lbnRQcm9wZXJ0aWVzLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICB9XHJcblxyXG5cclxuICBwdWJsaWMgc2V0U2NoZWR1bGVyU2Vzc2lvbktleShncm91cDogWkdyb3VwKSB7XHJcblxyXG4gICAgaWYgKGdyb3VwW1wiU2NoZWR1bGVyU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgZ3JvdXBbXCJTY2hlZHVsZXJTdG9yYWdlS2V5XCJdID0gJ3pncmlkXycgKyBncm91cC5yZXNvdXJjZVVSTCArICdfJyArIHRoaXMuZGF0YS5WYWx1ZSArICc6OicgKyB0aGlzLmF1dGhTZXJ2aWNlLmUxVG9rZW4udXNlck5hbWU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGJlZm9yZVNjaGVkdWxlckdldERhdGEoZ3JvdXA6IFpHcm91cCkge1xyXG4gICAgY29uc29sZS53YXJuKFwiYmVmb3JlRGF0ZVJhbmdlQmluZGluZyB0cmlnZ2VyZWRcIik7XHJcbiAgICBpZiAoIWdyb3VwLmJlZm9yZVNjaGVkdWxlckdldERhdGEpIHtcclxuICAgICAgY29uc29sZS53YXJuKFwiZ3JvdXAuYmVmb3JlRGF0ZVJhbmdlQmluZGluZyBpcyB1bmRlZmluZWRcIik7XHJcbiAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZ3JvdXAuYmVmb3JlU2NoZWR1bGVyR2V0RGF0YShncm91cCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRTY2hlZHVsZXJTZXNzaW9uRmlsdGVyKGdyb3VwOiBaR3JvdXApIHtcclxuXHJcbiAgICBpZiAoIWdyb3VwW1wiU2NoZWR1bGVyU3RvcmFnZUtleVwiXSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IFN0b3JhZ2VLZXkgPSBncm91cFtcIlNjaGVkdWxlclN0b3JhZ2VLZXlcIl07XHJcblxyXG4gICAgbGV0IGxzdEZpbHRlcjogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG5cclxuICAgIGlmIChncm91cCAmJiB0aGlzLnN0b3JhZ2VTZXJ2aWNlICYmIHRoaXMuZGF0YVsnU2F2ZUZpbHRlciddKSB7XHJcblxyXG4gICAgICAvL2xpc3Qgb2YgZGF0YSBmb3IgU3RhdGVGaWx0ZXIgYW5kIEZpbHRlclBhcmFtc1xyXG4gICAgICBsc3RGaWx0ZXIgPSB7XHJcbiAgICAgICAgXCJTZWxlY3RlZERhdGVcIjogSlNPTi5zdHJpbmdpZnkoZ3JvdXBbXCJzZWxlY3RlZERhdGVcIl0pXHJcbiAgICAgIH1cclxuICAgICAgLy9jcmVhdGUgc2Vzc2lvbiBzdG9yYWdlIFxyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldChTdG9yYWdlS2V5LCBKU09OLnN0cmluZ2lmeShsc3RGaWx0ZXIpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0U2NoZWR1bGVyU2Vzc2lvbkZpbHRlcihncm91cDogWkdyb3VwKSB7XHJcblxyXG4gICAgaWYgKCFncm91cFtcIlNjaGVkdWxlclN0b3JhZ2VLZXlcIl0pIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBTdG9yYWdlS2V5ID0gZ3JvdXBbXCJTY2hlZHVsZXJTdG9yYWdlS2V5XCJdO1xyXG5cclxuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFN0b3JhZ2VLZXkpXHJcbiAgICAgICAgLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWRhdGEgfHwgIWRhdGEudmFsdWUgfHwgZGF0YS52YWx1ZSA9PT0gXCJudWxsXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gSlNPTi5wYXJzZShkYXRhLnZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZShKU09OLnBhcnNlKHJlc3VsdFtcIlNlbGVjdGVkRGF0ZVwiXSkpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHsgcmV0dXJuIG51bGw7IH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8aW9uLWl0ZW0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKm5nSWY9XCIoISFjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZUZpZWxkID8gZ3JvdXBbY29tcG9uZW50UHJvcGVydGllcy5pc1Zpc2libGVGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzVmlzaWJsZSlcIj5cclxuICA8aW9uLWxhYmVsIFthdHRyLmZvcl09XCJkYXRhLlZhbHVlXCIgKm5nSWY9XCJkYXRhLlNob3dMYWJlbFwiIHBvc2l0aW9uPVwic3RhY2tlZFwiPlxyXG4gICAge3tkYXRhLkxhYmVsfX0gPGlvbi10ZXh0ICpuZ0lmPVwiKCEhY29tcG9uZW50UHJvcGVydGllcy5pc1JlcXVpcmVkRmllbGQgPyBncm91cFtjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWRGaWVsZF0gOiBjb21wb25lbnRQcm9wZXJ0aWVzLmlzUmVxdWlyZWQpXCIgY29sb3I9XCJkYW5nZXJcIj4qPC9pb24tdGV4dD5cclxuICA8L2lvbi1sYWJlbD5cclxuICA8a2VuZG8tc2NoZWR1bGVyICpuZ0lmPVwiIWlzTG9hZGluZ1wiIFtrZW5kb1NjaGVkdWxlckJpbmRpbmddPVwiZXZlbnRzXCIgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGVcIiAoZGF0ZUNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICBbc2VsZWN0ZWRWaWV3SW5kZXhdPVwic2VsZWN0ZWRWaWV3SW5kZXhcIiBbZXZlbnRTdHlsZXNdPVwiZ2V0RXZlbnRTdHlsZXNcIiBbc2xvdENsYXNzXT1cImdldFNsb3RDbGFzc1wiIFxyXG4gICAgKHNsb3REYmxDbGljayk9XCJvblNsb3REYmxDbGljaygkZXZlbnQpXCIgKGV2ZW50RGJsQ2xpY2spPVwib25FdmVudERibENsaWNrKCRldmVudClcIiBzY3JvbGxUaW1lPVwiMDg6MDBcIlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCIoISFkYXRhLkhlaWdodCA/IFtkYXRhLkhlaWdodF0gOiAnNjAwcHgnKVwiPlxyXG4gICAgIDwhLS0gW3N0eWxlLmZvbnQtc2l6ZV09XCIoISFkYXRhLkZvbnRTaXplID8gW2RhdGEuRm9udFNpemVdIDogJzEycHgnKVwiPiAtLT5cclxuICAgICBcclxuICAgICA8IS0tTm90ZTogbGluZS1oZWlnaHQgc2FtZSB3aXRoIFtldmVudEhlaWdodF0tLT5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1NjaGVkdWxlckV2ZW50VGVtcGxhdGUgbGV0LWV2ZW50PlxyXG4gICAgICA8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtNXB4O2xpbmUtaGVpZ2h0OiAyNXB4O1wiPnt7IGV2ZW50LnRpdGxlIH19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9TY2hlZHVsZXJUb29sYmFyVGVtcGxhdGUgbGV0LXNlbGVjdGVkRGF0ZT1cInNlbGVjdGVkRGF0ZVwiPlxyXG4gICAgICA8enNjaGVkdWxlcnRvb2xiYXIgW2xvY2FsXT1cImxvY2FsXCIgW3NlbGVjdGVkRGF0ZV09XCJzZWxlY3RlZERhdGVcIj5cclxuICAgICAgPC96c2NoZWR1bGVydG9vbGJhcj5cclxuICAgICAgPHVsIGtlbmRvU2NoZWR1bGVyVG9vbGJhclZpZXdTZWxlY3Rvcj48L3VsPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUga2VuZG9TY2hlZHVsZXJBbGxEYXlTbG90VGVtcGxhdGUgbGV0LWRhdGU9XCJkYXRlXCI+XHJcbiAgICAgIDxzdHJvbmc+e3sgZGF0ZSB8IGtlbmRvRGF0ZTogJ2RkLU1NTS15eXl5JyB9fTwvc3Ryb25nPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1NjaGVkdWxlckRhdGVIZWFkZXJUZW1wbGF0ZSBsZXQtZGF0ZT1cImRhdGVcIj5cclxuICAgICAgPHN0cm9uZz57eyBkYXRlIHwga2VuZG9EYXRlOiBcImNjY1wiIH19PC9zdHJvbmc+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICBcclxuICAgIDwhLS0gPGtlbmRvLXNjaGVkdWxlci1kYXktdmlldyBzdGFydFRpbWU9XCIwODowMFwiPlxyXG4gICAgPC9rZW5kby1zY2hlZHVsZXItZGF5LXZpZXc+XHJcblxyXG4gICAgPGtlbmRvLXNjaGVkdWxlci13ZWVrLXZpZXcgc3RhcnRUaW1lPVwiMDg6MDBcIj5cclxuICAgIDwva2VuZG8tc2NoZWR1bGVyLXdlZWstdmlldz4gLS0+XHJcblxyXG4gICAgPGtlbmRvLXNjaGVkdWxlci1kYXktdmlldz5cclxuICAgIDwva2VuZG8tc2NoZWR1bGVyLWRheS12aWV3PlxyXG5cclxuICAgIDxrZW5kby1zY2hlZHVsZXItd2Vlay12aWV3PlxyXG4gICAgPC9rZW5kby1zY2hlZHVsZXItd2Vlay12aWV3PlxyXG5cclxuICAgIDxrZW5kby1zY2hlZHVsZXItbW9udGgtdmlldyBbZXZlbnRIZWlnaHRdPVwiMjVcIj4gXHJcbiAgICA8L2tlbmRvLXNjaGVkdWxlci1tb250aC12aWV3PlxyXG5cclxuICAgIDwhLS0gPGtlbmRvLXNjaGVkdWxlci10aW1lbGluZS12aWV3PlxyXG4gICAgPC9rZW5kby1zY2hlZHVsZXItdGltZWxpbmUtdmlldz4gLS0+XHJcblxyXG4gICAgPGtlbmRvLXNjaGVkdWxlci1hZ2VuZGEtdmlldz5cclxuICAgIDwva2VuZG8tc2NoZWR1bGVyLWFnZW5kYS12aWV3PlxyXG4gIDwva2VuZG8tc2NoZWR1bGVyPlxyXG5cclxuPC9pb24taXRlbT4iXX0=
@@ -4,7 +4,12 @@ import { Component, Input, HostListener } from "@angular/core";
4
4
  /********** Plugin **********/
5
5
  import { of } from "rxjs";
6
6
  import { delay, take } from "rxjs/operators";
7
- import { ToolbarService } from "@progress/kendo-angular-scheduler";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@progress/kendo-angular-scheduler";
9
+ import * as i2 from "@progress/kendo-angular-popup";
10
+ import * as i3 from "@progress/kendo-angular-dateinputs";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "@progress/kendo-angular-intl";
8
13
  /********** Component & Service **********/
9
14
  export class ZSchedulerToolBarComponent {
10
15
  constructor(toolbarService) {
@@ -64,10 +69,8 @@ export class ZSchedulerToolBarComponent {
64
69
  }
65
70
  }
66
71
  }
67
- ZSchedulerToolBarComponent.decorators = [
68
- { type: Component, args: [{
69
- selector: "zschedulertoolbar",
70
- template: `
72
+ ZSchedulerToolBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZSchedulerToolBarComponent, deps: [{ token: i1.ToolbarService }], target: i0.ɵɵFactoryTarget.Component });
73
+ ZSchedulerToolBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.4", type: ZSchedulerToolBarComponent, selector: "zschedulertoolbar", inputs: { local: "local", selectedDate: "selectedDate" }, host: { listeners: { "keydown": "keydown($event)", "document:click": "documentClick($event)" } }, ngImport: i0, template: `
71
74
  <div class="k-scheduler-navigation">
72
75
  <button class="k-nav-today" (click)="today()">
73
76
  Today
@@ -98,17 +101,50 @@ ZSchedulerToolBarComponent.decorators = [
98
101
  (valueChange)="onChange_Calendar($event)"
99
102
  ></kendo-calendar>
100
103
  </kendo-popup>
101
- `,
102
- styles: [":host{margin:5px 0}"]
103
- },] }
104
- ];
105
- ZSchedulerToolBarComponent.ctorParameters = () => [
106
- { type: ToolbarService }
107
- ];
108
- ZSchedulerToolBarComponent.propDecorators = {
109
- local: [{ type: Input }],
110
- selectedDate: [{ type: Input }],
111
- keydown: [{ type: HostListener, args: ["keydown", ["$event"],] }],
112
- documentClick: [{ type: HostListener, args: ["document:click", ["$event"],] }]
113
- };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNjaGVkdWxlci50b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pzY2hlZHVsZXIvenNjaGVkdWxlci50b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVuRSwyQ0FBMkM7QUF1QzNDLE1BQU0sT0FBTywwQkFBMEI7SUFLckMsWUFBbUIsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSnhDLFVBQUssR0FBUSxFQUFFLENBQUM7UUFFekIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFFK0IsQ0FBQztJQUU5QyxLQUFLO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDM0IsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sSUFBSSxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDM0IsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sSUFBSSxDQUFDLEtBQVU7UUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDM0IsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDM0IsSUFBSSxFQUFFLGFBQWE7WUFDbkIsSUFBSSxFQUFFLEtBQUs7U0FDWixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNILElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFnQjtRQUM3QixJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDekMsQ0FBQztJQUdNLE9BQU8sQ0FBQyxLQUFVO1FBQ3ZCLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFHTSxhQUFhLENBQUMsS0FBVTtRQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxLQUFLLGVBQWUsRUFBRTtZQUM5QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7YUFBTTtZQUNMLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDNUI7U0FDRjtJQUNILENBQUM7OztZQXJHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JUOzthQUVGOzs7WUF4Q1EsY0FBYzs7O29CQTBDcEIsS0FBSzsyQkFDTCxLQUFLO3NCQStDTCxZQUFZLFNBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDOzRCQU9sQyxZQUFZLFNBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RMaXN0ZW5lciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZGVsYXksIHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVG9vbGJhclNlcnZpY2UgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItc2NoZWR1bGVyXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwienNjaGVkdWxlcnRvb2xiYXJcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImstc2NoZWR1bGVyLW5hdmlnYXRpb25cIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImstbmF2LXRvZGF5XCIgKGNsaWNrKT1cInRvZGF5KClcIj5cclxuICAgICAgICBUb2RheVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImstbmF2LXByZXZcIiAoY2xpY2spPVwicHJldigkZXZlbnQpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJrLWljb24gay1pLWFycm93LTYwLWxlZnRcIj48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPiAmbmJzcDtcclxuICAgICAgPHNwYW4+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJrLW5hdi1jdXJyZW50XCIgI2FuY2hvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImstaWNvbiBrLWktY2FsZW5kYXJcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgICAge3sgc2VsZWN0ZWREYXRlIHwga2VuZG9EYXRlOiBcImRkLU1NTS15eXl5XCIgfX1cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvc3Bhbj4gJm5ic3A7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJrLW5hdi1uZXh0XCIgKGNsaWNrKT1cIm5leHQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiay1pY29uIGstaS1hcnJvdy02MC1yaWdodFwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxrZW5kby1wb3B1cFxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luOjE1cHggMHB4IDBweCAwcHg7XCJcclxuICAgICAgW2FuY2hvcl09XCJhbmNob3JcIlxyXG4gICAgICAoYW5jaG9yVmlld3BvcnRMZWF2ZSk9XCJzaG93Q2FsZW5kYXIgPSBmYWxzZVwiXHJcbiAgICAgICpuZ0lmPVwic2hvd0NhbGVuZGFyXCJcclxuICAgID5cclxuICAgICAgICA8a2VuZG8tY2FsZW5kYXJcclxuICAgICAgICAgIFtmb2N1c2VkRGF0ZV09XCJzZWxlY3RlZERhdGVcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyX0NhbGVuZGFyKClcIlxyXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlX0NhbGVuZGFyKCRldmVudClcIlxyXG4gICAgICAgID48L2tlbmRvLWNhbGVuZGFyPlxyXG4gICAgPC9rZW5kby1wb3B1cD5cclxuICBgLFxyXG4gIHN0eWxlVXJsczogW1wiLi96c2NoZWR1bGVyLnRvb2xiYXIuY29tcG9uZW50LmNzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWlNjaGVkdWxlclRvb2xCYXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGxvY2FsOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlO1xyXG4gIHNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdG9vbGJhclNlcnZpY2U6IFRvb2xiYXJTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgdG9kYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvb2xiYXJTZXJ2aWNlLm5hdmlnYXRlKHtcclxuICAgICAgdHlwZTogXCJ0b2RheVwiXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudG9vbGJhclNlcnZpY2UubmF2aWdhdGUoe1xyXG4gICAgICB0eXBlOiBcIm5leHRcIlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRvb2xiYXJTZXJ2aWNlLm5hdmlnYXRlKHtcclxuICAgICAgdHlwZTogXCJwcmV2XCJcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VfQ2FsZW5kYXIodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2NhbC5pblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMudG9vbGJhclNlcnZpY2UubmF2aWdhdGUoe1xyXG4gICAgICB0eXBlOiAnc2VsZWN0LWRhdGUnLFxyXG4gICAgICBkYXRlOiB2YWx1ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKCk7XHJcbiAgICBvZihbXSlcclxuICAgICAgLnBpcGUodGFrZSgxKSwgZGVsYXkoMTAwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMubG9jYWwuaW5Qcm9ncmVzcyA9IGZhbHNlKSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXJfQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDYWxlbmRhcihzdGF0dXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoc3RhdHVzID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSlcclxuICBwdWJsaWMga2V5ZG93bihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjcgJiYgdGhpcy5zaG93Q2FsZW5kYXIgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50b2dnbGVDYWxlbmRhcihmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIHB1YmxpYyBkb2N1bWVudENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NOYW1lID09PSBcImstbmF2LWN1cnJlbnRcIikge1xyXG4gICAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5zaG93Q2FsZW5kYXIgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
104
+ `, isInline: true, styles: [":host{margin:5px 0}\n"], components: [{ type: i2.PopupComponent, selector: "kendo-popup", inputs: ["animate", "anchorAlign", "collision", "popupAlign", "copyAnchorStyles", "positionMode", "offset", "anchor", "popupClass", "margin"], outputs: ["anchorViewportLeave", "close", "open", "positionChange"], exportAs: ["kendo-popup"] }, { type: i3.CalendarComponent, selector: "kendo-calendar", inputs: ["id", "rangeValidation", "selection", "disabled", "tabindex", "navigation", "activeView", "bottomView", "topView", "animateNavigation", "weekNumber", "focusedDate", "min", "max", "value", "tabIndex", "disabledDates", "type", "cellTemplate", "monthCellTemplate", "yearCellTemplate", "decadeCellTemplate", "centuryCellTemplate", "weekNumberTemplate", "headerTitleTemplate", "navigationItemTemplate"], outputs: ["activeViewChange", "navigate", "activeViewDateChange", "valueChange"], exportAs: ["kendo-calendar"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "kendoDate": i5.DatePipe } });
105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: ZSchedulerToolBarComponent, decorators: [{
106
+ type: Component,
107
+ args: [{ selector: "zschedulertoolbar", template: `
108
+ <div class="k-scheduler-navigation">
109
+ <button class="k-nav-today" (click)="today()">
110
+ Today
111
+ </button>
112
+ <button class="k-nav-prev" (click)="prev($event)">
113
+ <span class="k-icon k-i-arrow-60-left"></span>
114
+ </button> &nbsp;
115
+ <span>
116
+ <a class="k-nav-current" #anchor
117
+ >
118
+ <!-- <span class="k-icon k-i-calendar"></span> -->
119
+ {{ selectedDate | kendoDate: "dd-MMM-yyyy" }}
120
+ </a>
121
+ </span> &nbsp;
122
+ <button class="k-nav-next" (click)="next($event)">
123
+ <span class="k-icon k-i-arrow-60-right"></span>
124
+ </button>
125
+ </div>
126
+ <kendo-popup
127
+ style="margin:15px 0px 0px 0px;"
128
+ [anchor]="anchor"
129
+ (anchorViewportLeave)="showCalendar = false"
130
+ *ngIf="showCalendar"
131
+ >
132
+ <kendo-calendar
133
+ [focusedDate]="selectedDate"
134
+ (blur)="onBlur_Calendar()"
135
+ (valueChange)="onChange_Calendar($event)"
136
+ ></kendo-calendar>
137
+ </kendo-popup>
138
+ `, styles: [":host{margin:5px 0}\n"] }]
139
+ }], ctorParameters: function () { return [{ type: i1.ToolbarService }]; }, propDecorators: { local: [{
140
+ type: Input
141
+ }], selectedDate: [{
142
+ type: Input
143
+ }], keydown: [{
144
+ type: HostListener,
145
+ args: ["keydown", ["$event"]]
146
+ }], documentClick: [{
147
+ type: HostListener,
148
+ args: ["document:click", ["$event"]]
149
+ }] } });
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoienNjaGVkdWxlci50b29sYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21taGdsb2JhbC1keW5hbWljZm9ybS9zcmMvbGliL3pzY2hlZHVsZXIvenNjaGVkdWxlci50b29sYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9ELDZCQUE2QjtBQUU3Qiw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBRzdDLDJDQUEyQztBQXVDM0MsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQyxZQUFtQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFKeEMsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUV6QixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQUUrQixDQUFDO0lBRTlDLEtBQUs7UUFDVixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUMzQixJQUFJLEVBQUUsT0FBTztTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUMzQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxJQUFJLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUMzQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUMzQixJQUFJLEVBQUUsYUFBYTtZQUNuQixJQUFJLEVBQUUsS0FBSztTQUNaLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixFQUFFLENBQUMsRUFBRSxDQUFDO2FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDMUIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWdCO1FBQzdCLElBQUksTUFBTSxLQUFLLEtBQUssRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUMxQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBR00sT0FBTyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtZQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUdNLGFBQWEsQ0FBQyxLQUFVO1FBQzdCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssZUFBZSxFQUFFO1lBQzlDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjthQUFNO1lBQ0wsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QjtTQUNGO0lBQ0gsQ0FBQzs7dUhBakVVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLHFOQWxDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQ7MkZBR1UsMEJBQTBCO2tCQXBDdEMsU0FBUzsrQkFDRSxtQkFBbUIsWUFDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQ7cUdBSVEsS0FBSztzQkFBYixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBZ0RDLE9BQU87c0JBRGIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUTVCLGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RMaXN0ZW5lciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKioqKioqKioqKiBJb25pYyAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogUGx1Z2luICoqKioqKioqKiovXHJcbmltcG9ydCB7IG9mIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgZGVsYXksIHRha2UgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVG9vbGJhclNlcnZpY2UgfSBmcm9tIFwiQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItc2NoZWR1bGVyXCI7XHJcblxyXG4vKioqKioqKioqKiBDb21wb25lbnQgJiBTZXJ2aWNlICoqKioqKioqKiovXHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwienNjaGVkdWxlcnRvb2xiYXJcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImstc2NoZWR1bGVyLW5hdmlnYXRpb25cIj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImstbmF2LXRvZGF5XCIgKGNsaWNrKT1cInRvZGF5KClcIj5cclxuICAgICAgICBUb2RheVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImstbmF2LXByZXZcIiAoY2xpY2spPVwicHJldigkZXZlbnQpXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJrLWljb24gay1pLWFycm93LTYwLWxlZnRcIj48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPiAmbmJzcDtcclxuICAgICAgPHNwYW4+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJrLW5hdi1jdXJyZW50XCIgI2FuY2hvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImstaWNvbiBrLWktY2FsZW5kYXJcIj48L3NwYW4+IC0tPlxyXG4gICAgICAgICAge3sgc2VsZWN0ZWREYXRlIHwga2VuZG9EYXRlOiBcImRkLU1NTS15eXl5XCIgfX1cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvc3Bhbj4gJm5ic3A7XHJcbiAgICAgIDxidXR0b24gY2xhc3M9XCJrLW5hdi1uZXh0XCIgKGNsaWNrKT1cIm5leHQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiay1pY29uIGstaS1hcnJvdy02MC1yaWdodFwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxrZW5kby1wb3B1cFxyXG4gICAgICAgIHN0eWxlPVwibWFyZ2luOjE1cHggMHB4IDBweCAwcHg7XCJcclxuICAgICAgW2FuY2hvcl09XCJhbmNob3JcIlxyXG4gICAgICAoYW5jaG9yVmlld3BvcnRMZWF2ZSk9XCJzaG93Q2FsZW5kYXIgPSBmYWxzZVwiXHJcbiAgICAgICpuZ0lmPVwic2hvd0NhbGVuZGFyXCJcclxuICAgID5cclxuICAgICAgICA8a2VuZG8tY2FsZW5kYXJcclxuICAgICAgICAgIFtmb2N1c2VkRGF0ZV09XCJzZWxlY3RlZERhdGVcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyX0NhbGVuZGFyKClcIlxyXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uQ2hhbmdlX0NhbGVuZGFyKCRldmVudClcIlxyXG4gICAgICAgID48L2tlbmRvLWNhbGVuZGFyPlxyXG4gICAgPC9rZW5kby1wb3B1cD5cclxuICBgLFxyXG4gIHN0eWxlVXJsczogW1wiLi96c2NoZWR1bGVyLnRvb2xiYXIuY29tcG9uZW50LmNzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWlNjaGVkdWxlclRvb2xCYXJDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGxvY2FsOiBhbnkgPSB7fTtcclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0ZWREYXRlOiBEYXRlO1xyXG4gIHNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdG9vbGJhclNlcnZpY2U6IFRvb2xiYXJTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgdG9kYXkoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvb2xiYXJTZXJ2aWNlLm5hdmlnYXRlKHtcclxuICAgICAgdHlwZTogXCJ0b2RheVwiXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMudG9vbGJhclNlcnZpY2UubmF2aWdhdGUoe1xyXG4gICAgICB0eXBlOiBcIm5leHRcIlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnRvb2xiYXJTZXJ2aWNlLm5hdmlnYXRlKHtcclxuICAgICAgdHlwZTogXCJwcmV2XCJcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VfQ2FsZW5kYXIodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2NhbC5pblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIHRoaXMudG9vbGJhclNlcnZpY2UubmF2aWdhdGUoe1xyXG4gICAgICB0eXBlOiAnc2VsZWN0LWRhdGUnLFxyXG4gICAgICBkYXRlOiB2YWx1ZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKCk7XHJcbiAgICBvZihbXSlcclxuICAgICAgLnBpcGUodGFrZSgxKSwgZGVsYXkoMTAwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMubG9jYWwuaW5Qcm9ncmVzcyA9IGZhbHNlKSk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXJfQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVDYWxlbmRhcihzdGF0dXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoc3RhdHVzID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLnNob3dDYWxlbmRhciA9IGZhbHNlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhciA9ICF0aGlzLnNob3dDYWxlbmRhcjtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSlcclxuICBwdWJsaWMga2V5ZG93bihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMjcgJiYgdGhpcy5zaG93Q2FsZW5kYXIgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy50b2dnbGVDYWxlbmRhcihmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxyXG4gIHB1YmxpYyBkb2N1bWVudENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuY2xhc3NOYW1lID09PSBcImstbmF2LWN1cnJlbnRcIikge1xyXG4gICAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5zaG93Q2FsZW5kYXIgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnRvZ2dsZUNhbGVuZGFyKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=