ps-toolkit-ui 0.0.1

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 (162) hide show
  1. package/README.md +24 -0
  2. package/bundles/ps-toolkit-ui.umd.js +7344 -0
  3. package/bundles/ps-toolkit-ui.umd.js.map +1 -0
  4. package/bundles/ps-toolkit-ui.umd.min.js +2 -0
  5. package/bundles/ps-toolkit-ui.umd.min.js.map +1 -0
  6. package/esm2015/lib/classes/enum.class.js +162 -0
  7. package/esm2015/lib/classes/form.class.js +467 -0
  8. package/esm2015/lib/classes/helper.class.js +275 -0
  9. package/esm2015/lib/classes/lang.class.js +32 -0
  10. package/esm2015/lib/classes/login.class.js +22 -0
  11. package/esm2015/lib/classes/modal.class.js +52 -0
  12. package/esm2015/lib/classes/permission.class.js +29 -0
  13. package/esm2015/lib/classes/request.class.js +255 -0
  14. package/esm2015/lib/classes/safestyle.class.js +15 -0
  15. package/esm2015/lib/classes/sidebar.class.js +14 -0
  16. package/esm2015/lib/classes/steps.class.js +20 -0
  17. package/esm2015/lib/classes/string.class.js +203 -0
  18. package/esm2015/lib/classes/table.class.js +278 -0
  19. package/esm2015/lib/components/accordion/accordion.component.js +45 -0
  20. package/esm2015/lib/components/alert/alert.component.js +41 -0
  21. package/esm2015/lib/components/base.component.js +55 -0
  22. package/esm2015/lib/components/confirm/confirm.component.js +50 -0
  23. package/esm2015/lib/components/footer/footer.component.js +23 -0
  24. package/esm2015/lib/components/form/bank-card/form.bank-card.component.js +148 -0
  25. package/esm2015/lib/components/form/button/form.button.component.js +68 -0
  26. package/esm2015/lib/components/form/car/form.car.component.js +84 -0
  27. package/esm2015/lib/components/form/car/search/form.car.search.component.js +173 -0
  28. package/esm2015/lib/components/form/checkbox/form.checkbox.component.js +66 -0
  29. package/esm2015/lib/components/form/date/form.date.component.js +256 -0
  30. package/esm2015/lib/components/form/datetime/form.datetime.component.js +104 -0
  31. package/esm2015/lib/components/form/file/form.file.component.js +133 -0
  32. package/esm2015/lib/components/form/finger/form.finger.component.js +138 -0
  33. package/esm2015/lib/components/form/icon/form.icon.component.js +76 -0
  34. package/esm2015/lib/components/form/index/form.component.js +48 -0
  35. package/esm2015/lib/components/form/label/form.label.component.js +31 -0
  36. package/esm2015/lib/components/form/plaque/form.plaque.component.js +176 -0
  37. package/esm2015/lib/components/form/plaque/select/form.plaque.select.component.js +390 -0
  38. package/esm2015/lib/components/form/radio/form.radio.component.js +79 -0
  39. package/esm2015/lib/components/form/select/form.select.component.js +369 -0
  40. package/esm2015/lib/components/form/select/item/form.select.item.component.js +43 -0
  41. package/esm2015/lib/components/form/table/form.table.component.js +98 -0
  42. package/esm2015/lib/components/form/textarea/form.textarea.component.js +78 -0
  43. package/esm2015/lib/components/form/textbox/form.textbox.component.js +186 -0
  44. package/esm2015/lib/components/form/time/form.time.component.js +145 -0
  45. package/esm2015/lib/components/form/tree/form.tree.component.js +93 -0
  46. package/esm2015/lib/components/form/tree/item/form.tree.item.component.js +48 -0
  47. package/esm2015/lib/components/header/header.component.js +28 -0
  48. package/esm2015/lib/components/header/sub/sub.header.component.js +14 -0
  49. package/esm2015/lib/components/layout/layout.component.js +23 -0
  50. package/esm2015/lib/components/loading/loading.component.js +22 -0
  51. package/esm2015/lib/components/login/login.component.js +145 -0
  52. package/esm2015/lib/components/modal/modal.component.js +25 -0
  53. package/esm2015/lib/components/notfound/notfound.component.js +29 -0
  54. package/esm2015/lib/components/notification/notification.component.js +14 -0
  55. package/esm2015/lib/components/sidebar/item/sidebar.item.component.js +53 -0
  56. package/esm2015/lib/components/sidebar/sidebar.component.js +65 -0
  57. package/esm2015/lib/components/steps/steps.component.js +51 -0
  58. package/esm2015/lib/components/table/loading/table.loading.component.js +17 -0
  59. package/esm2015/lib/components/table/pagination/table.pagination.component.js +84 -0
  60. package/esm2015/lib/components/table/report/table.report.component.js +245 -0
  61. package/esm2015/lib/components/table/row/table.row.component.js +274 -0
  62. package/esm2015/lib/components/table/table.component.js +207 -0
  63. package/esm2015/lib/components/tooltip/tooltip.component.js +19 -0
  64. package/esm2015/lib/ps-toolkit-ui.module.js +89 -0
  65. package/esm2015/lib/services/config.service.js +14 -0
  66. package/esm2015/ps-toolkit-ui.js +16 -0
  67. package/esm2015/public-api.js +52 -0
  68. package/fesm2015/ps-toolkit-ui.js +6277 -0
  69. package/fesm2015/ps-toolkit-ui.js.map +1 -0
  70. package/lib/classes/enum.class.d.ts +137 -0
  71. package/lib/classes/form.class.d.ts +173 -0
  72. package/lib/classes/helper.class.d.ts +26 -0
  73. package/lib/classes/lang.class.d.ts +5 -0
  74. package/lib/classes/login.class.d.ts +17 -0
  75. package/lib/classes/modal.class.d.ts +19 -0
  76. package/lib/classes/permission.class.d.ts +19 -0
  77. package/lib/classes/request.class.d.ts +12 -0
  78. package/lib/classes/safestyle.class.d.ts +7 -0
  79. package/lib/classes/sidebar.class.d.ts +11 -0
  80. package/lib/classes/steps.class.d.ts +17 -0
  81. package/lib/classes/string.class.d.ts +201 -0
  82. package/lib/classes/table.class.d.ts +67 -0
  83. package/lib/components/accordion/accordion.component.d.ts +7 -0
  84. package/lib/components/alert/alert.component.d.ts +10 -0
  85. package/lib/components/base.component.d.ts +12 -0
  86. package/lib/components/confirm/confirm.component.d.ts +14 -0
  87. package/lib/components/footer/footer.component.d.ts +6 -0
  88. package/lib/components/form/bank-card/form.bank-card.component.d.ts +22 -0
  89. package/lib/components/form/button/form.button.component.d.ts +15 -0
  90. package/lib/components/form/car/form.car.component.d.ts +16 -0
  91. package/lib/components/form/car/search/form.car.search.component.d.ts +18 -0
  92. package/lib/components/form/checkbox/form.checkbox.component.d.ts +14 -0
  93. package/lib/components/form/date/form.date.component.d.ts +41 -0
  94. package/lib/components/form/datetime/form.datetime.component.d.ts +13 -0
  95. package/lib/components/form/file/form.file.component.d.ts +17 -0
  96. package/lib/components/form/finger/form.finger.component.d.ts +15 -0
  97. package/lib/components/form/icon/form.icon.component.d.ts +15 -0
  98. package/lib/components/form/index/form.component.d.ts +10 -0
  99. package/lib/components/form/label/form.label.component.d.ts +8 -0
  100. package/lib/components/form/plaque/form.plaque.component.d.ts +22 -0
  101. package/lib/components/form/plaque/select/form.plaque.select.component.d.ts +36 -0
  102. package/lib/components/form/radio/form.radio.component.d.ts +13 -0
  103. package/lib/components/form/select/form.select.component.d.ts +39 -0
  104. package/lib/components/form/select/item/form.select.item.component.d.ts +12 -0
  105. package/lib/components/form/table/form.table.component.d.ts +9 -0
  106. package/lib/components/form/textarea/form.textarea.component.d.ts +13 -0
  107. package/lib/components/form/textbox/form.textbox.component.d.ts +20 -0
  108. package/lib/components/form/time/form.time.component.d.ts +25 -0
  109. package/lib/components/form/tree/form.tree.component.d.ts +16 -0
  110. package/lib/components/form/tree/item/form.tree.item.component.d.ts +17 -0
  111. package/lib/components/header/header.component.d.ts +7 -0
  112. package/lib/components/header/sub/sub.header.component.d.ts +3 -0
  113. package/lib/components/layout/layout.component.d.ts +6 -0
  114. package/lib/components/loading/loading.component.d.ts +5 -0
  115. package/lib/components/login/login.component.d.ts +13 -0
  116. package/lib/components/modal/modal.component.d.ts +9 -0
  117. package/lib/components/notfound/notfound.component.d.ts +7 -0
  118. package/lib/components/notification/notification.component.d.ts +3 -0
  119. package/lib/components/sidebar/item/sidebar.item.component.d.ts +14 -0
  120. package/lib/components/sidebar/sidebar.component.d.ts +18 -0
  121. package/lib/components/steps/steps.component.d.ts +10 -0
  122. package/lib/components/table/loading/table.loading.component.d.ts +5 -0
  123. package/lib/components/table/pagination/table.pagination.component.d.ts +15 -0
  124. package/lib/components/table/report/table.report.component.d.ts +34 -0
  125. package/lib/components/table/row/table.row.component.d.ts +36 -0
  126. package/lib/components/table/table.component.d.ts +39 -0
  127. package/lib/components/tooltip/tooltip.component.d.ts +5 -0
  128. package/lib/ps-toolkit-ui.module.d.ts +4 -0
  129. package/lib/services/config.service.d.ts +6 -0
  130. package/package.json +22 -0
  131. package/ps-toolkit-ui.d.ts +15 -0
  132. package/ps-toolkit-ui.metadata.json +1 -0
  133. package/public-api.d.ts +48 -0
  134. package/src/assets/fonts/Vazir.eot +0 -0
  135. package/src/assets/fonts/Vazir.ttf +0 -0
  136. package/src/assets/fonts/Vazir.woff +0 -0
  137. package/src/assets/fonts/Vazir.woff2 +0 -0
  138. package/src/assets/fonts/VazirBlack.eot +0 -0
  139. package/src/assets/fonts/VazirBlack.ttf +0 -0
  140. package/src/assets/fonts/VazirBlack.woff +0 -0
  141. package/src/assets/fonts/VazirBlack.woff2 +0 -0
  142. package/src/assets/fonts/VazirBold.eot +0 -0
  143. package/src/assets/fonts/VazirBold.ttf +0 -0
  144. package/src/assets/fonts/VazirBold.woff +0 -0
  145. package/src/assets/fonts/VazirBold.woff2 +0 -0
  146. package/src/assets/fonts/VazirLight.eot +0 -0
  147. package/src/assets/fonts/VazirLight.ttf +0 -0
  148. package/src/assets/fonts/VazirLight.woff +0 -0
  149. package/src/assets/fonts/VazirLight.woff2 +0 -0
  150. package/src/assets/fonts/VazirMedium.eot +0 -0
  151. package/src/assets/fonts/VazirMedium.ttf +0 -0
  152. package/src/assets/fonts/VazirMedium.woff +0 -0
  153. package/src/assets/fonts/VazirMedium.woff2 +0 -0
  154. package/src/assets/fonts/VazirThin.eot +0 -0
  155. package/src/assets/fonts/VazirThin.ttf +0 -0
  156. package/src/assets/fonts/VazirThin.woff +0 -0
  157. package/src/assets/fonts/VazirThin.woff2 +0 -0
  158. package/src/assets/images/partsilicon.png +0 -0
  159. package/src/assets/images/plaque.png +0 -0
  160. package/src/assets/images/plaque_m.png +0 -0
  161. package/src/assets/scripts/base.js +26 -0
  162. package/src/assets/styles/base.css +259 -0
@@ -0,0 +1,66 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import { InputError } from '../../../classes/enum.class';
3
+ export class FormCheckboxComponent {
4
+ constructor() {
5
+ this.changeIndex = new EventEmitter();
6
+ }
7
+ ngOnInit() {
8
+ this.inp.clear = () => {
9
+ this.inp.error = null;
10
+ this.inp.value = this.inp.default;
11
+ };
12
+ this.inp.isValid = () => {
13
+ this.inp.error = null;
14
+ if (this.inp.required && !this.inp.value) {
15
+ this.inp.error = InputError.Required;
16
+ return false;
17
+ }
18
+ return true;
19
+ };
20
+ this.inp.data = () => {
21
+ return this.inp.value;
22
+ };
23
+ this.inp.setValue = (v) => {
24
+ this.inp.value = v;
25
+ };
26
+ this.inp.focus = () => {
27
+ this.onFocusIn();
28
+ };
29
+ }
30
+ onFocusIn() {
31
+ this.inp.error = null;
32
+ this.inputBase.nativeElement.focus();
33
+ }
34
+ onClick() {
35
+ this.inputBase.nativeElement.click();
36
+ }
37
+ onChange() {
38
+ if (this.inp.onChange) {
39
+ setTimeout(() => {
40
+ this.inp.onChange(this.inp);
41
+ }, 1);
42
+ }
43
+ }
44
+ onKeyDown(e) {
45
+ const code = e.keyCode || e.which;
46
+ if (code === 9 || code === 13) {
47
+ e.preventDefault();
48
+ this.changeIndex.emit(code === 9 ? e.shiftKey ? 'ShiftTab' : 'Tab' : e.shiftKey ? 'ShiftEnter' : 'Enter');
49
+ }
50
+ }
51
+ }
52
+ FormCheckboxComponent.decorators = [
53
+ { type: Component, args: [{
54
+ selector: 'lib-form-checkbox',
55
+ template: "<div #inputDiv [id]=\"inp.name + 'Input'\" [style]=\"inp.style\" [className]=\"inp.class + ' form-input-con checkbox' + (inp.error == null ? '' : ' error') + (inp.disabled ? ' disabled' : '') + (inp.icon == null ? ' without-icon' : '')\">\r\n <div class=\"form-input\" (click)=\"onFocusIn()\">\r\n <div *ngIf=\"inp.displayLabel\" class=\"label\"></div>\r\n <input (keydown)=\"onKeyDown($event)\" (change)=\"onChange()\" [disabled]=\"inp.disabled\" [(ngModel)]=\"inp.value\" #inputBase type=\"checkbox\" [name]=\"inp.name\" class=\"check\">\r\n <div (click)=\"onClick()\" class=\"control\">{{inp.l(inp.name)}}</div>\r\n <i *ngIf=\"inp.icon != null || inp.loading\" #inputIcon [className]=\"(inp.loading ? 'fad fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n </div>\r\n</div>\r\n",
56
+ styles: [".form-input-con.checkbox{padding:0 15px}.form-input-con.checkbox,.form-input-con.checkbox .form-input{float:right;position:relative;width:100%}.form-input-con.checkbox .form-input .label{cursor:default;direction:rtl;font-size:12px;height:20px;line-height:20px;margin-bottom:3px;padding:0 10px;text-align:right}.form-input-con.checkbox .form-input .control,.form-input-con.checkbox .form-input .label{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;float:right;width:100%}.form-input-con.checkbox .form-input .control{background-color:#fff;border:var(--border-input);border-radius:5px;cursor:pointer;font-size:11px;height:35px;line-height:35px;padding:0 35px;position:relative;text-align:center;z-index:2}.form-input-con.checkbox .form-input .control:after{content:\"\\f0c8\";font-family:Font Awesome\\ 5 Pro;font-size:17px;font-weight:400;height:35px;line-height:32px;position:absolute;right:0;top:0;width:35px}.form-input-con.checkbox .form-input .check:focus+.control,.form-input-con.checkbox .form-input .control:hover{border:var(--border-input-dark);outline:none}.form-input-con.checkbox.error .form-input .control{border:var(--border-input-red)}.form-input-con.checkbox.error .form-input .control,.form-input-con.checkbox.error .form-input span.icon{color:var(--red)}.form-input-con.checkbox .form-input .check{cursor:pointer;height:0;opacity:0;position:absolute;right:50%;top:50%;width:0;z-index:1}.form-input-con.checkbox .form-input .check:checked+.control:after{animation:pop .18s ease-in;color:var(--green);content:\"\\f14a\";font-weight:900}.form-input-con.checkbox .form-input i.icon{bottom:0;color:var(--icon);cursor:pointer;font-size:13px;height:35px;left:0;line-height:35px;position:absolute;text-align:center;transition:all .35s ease-in-out;width:35px;z-index:2}.form-input-con.checkbox.without-icon .form-input .control{padding:0 0 0 35px}.form-input-con.checkbox.h-30 .form-input .control{font-size:10px;height:30px;line-height:28px;padding:0 30px}.form-input-con.checkbox.h-30 .form-input .control:after{font-size:14px;height:30px;line-height:28px;width:30px}.form-input-con.checkbox.h-30 .form-input i.icon{font-size:11px;height:30px;line-height:30px;width:30px}.form-input-con.checkbox.h-30.without-icon .form-input .control{padding:0 0 0 30px}"]
57
+ },] }
58
+ ];
59
+ FormCheckboxComponent.ctorParameters = () => [];
60
+ FormCheckboxComponent.propDecorators = {
61
+ inp: [{ type: Input }],
62
+ changeIndex: [{ type: Output }],
63
+ inputBase: [{ type: ViewChild, args: ['inputBase',] }],
64
+ inputDiv: [{ type: ViewChild, args: ['inputDiv',] }]
65
+ };
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jaGVja2JveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovUHJvamVjdHMvUHNUb29sa2l0L1VJL3Byb2plY3RzL3BzLXRvb2xraXQtdWkvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZm9ybS9jaGVja2JveC9mb3JtLmNoZWNrYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBZ0IsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbEgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBT3ZELE1BQU0sT0FBTyxxQkFBcUI7SUFPaEM7UUFIQSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFJekMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ3BDLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTtZQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUNyQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztRQUN4QixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFDO1lBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0gsQ0FBQztJQUNELFNBQVMsQ0FBQyxDQUFDO1FBQ1QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1lBQzdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzRztJQUNILENBQUM7OztZQTFERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0Isd3lCQUE2Qzs7YUFFOUM7Ozs7a0JBRUUsS0FBSzswQkFFTCxNQUFNO3dCQUVOLFNBQVMsU0FBQyxXQUFXO3VCQUNyQixTQUFTLFNBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0lucHV0Q2xhc3N9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRFcnJvcn0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnVtLmNsYXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWZvcm0tY2hlY2tib3gnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmNoZWNrYm94LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUNoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0e1xyXG4gIEBJbnB1dCgpXHJcbiAgaW5wOiBJbnB1dENsYXNzO1xyXG4gIEBPdXRwdXQoKVxyXG4gIGNoYW5nZUluZGV4ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRCYXNlJykgaW5wdXRCYXNlOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RGl2JykgaW5wdXREaXY6IEVsZW1lbnRSZWY7XHJcbiAgY29uc3RydWN0b3IoKXtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnAuY2xlYXIgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuaW5wLmVycm9yID0gbnVsbDtcclxuICAgICAgdGhpcy5pbnAudmFsdWUgPSB0aGlzLmlucC5kZWZhdWx0O1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmlzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuaW5wLmVycm9yID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuaW5wLnJlcXVpcmVkICYmICF0aGlzLmlucC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuaW5wLmVycm9yID0gSW5wdXRFcnJvci5SZXF1aXJlZDtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZGF0YSA9ICgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5wLnZhbHVlO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLnNldFZhbHVlID0gKHYpID0+IHtcclxuICAgICAgdGhpcy5pbnAudmFsdWUgPSB2O1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmZvY3VzID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLm9uRm9jdXNJbigpO1xyXG4gICAgfTtcclxuICB9XHJcbiAgb25Gb2N1c0luKCk6IHZvaWR7XHJcbiAgICB0aGlzLmlucC5lcnJvciA9IG51bGw7XHJcbiAgICB0aGlzLmlucHV0QmFzZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgfVxyXG4gIG9uQ2xpY2soKTogdm9pZHtcclxuICAgIHRoaXMuaW5wdXRCYXNlLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICB9XHJcbiAgb25DaGFuZ2UoKTogdm9pZHtcclxuICAgIGlmICh0aGlzLmlucC5vbkNoYW5nZSl7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5wLm9uQ2hhbmdlKHRoaXMuaW5wKTtcclxuICAgICAgfSwgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uS2V5RG93bihlKTogdm9pZHtcclxuICAgIGNvbnN0IGNvZGUgPSBlLmtleUNvZGUgfHwgZS53aGljaDtcclxuICAgIGlmIChjb2RlID09PSA5IHx8IGNvZGUgPT09IDEzKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VJbmRleC5lbWl0KGNvZGUgPT09IDkgPyBlLnNoaWZ0S2V5ID8gJ1NoaWZ0VGFiJyA6ICdUYWInIDogZS5zaGlmdEtleSA/ICdTaGlmdEVudGVyJyA6ICdFbnRlcicpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,256 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import * as moment from 'jalali-moment';
3
+ import * as $ from 'jquery';
4
+ import { DayClass } from '../../../classes/form.class';
5
+ import { InputError } from '../../../classes/enum.class';
6
+ export class FormDateComponent {
7
+ constructor() {
8
+ this.changeIndex = new EventEmitter();
9
+ this.previousDays = [];
10
+ this.nextDays = [];
11
+ this.days = [];
12
+ this.cSearch = '';
13
+ this.state = 'day';
14
+ this.months = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'];
15
+ this.active = moment();
16
+ }
17
+ ngOnInit() {
18
+ // moment.locale('fa');
19
+ const today = moment().locale('fa');
20
+ this.todayDay = parseInt(today.format('jDD'), 10);
21
+ this.todayMonth = parseInt(today.format('jMM'), 10);
22
+ this.todayYear = parseInt(today.format('jYYYY'), 10);
23
+ if (this.inp.value) {
24
+ this.active = moment(this.inp.value);
25
+ this.inp.value = this.active.format('jYYYY/jMM/jDD');
26
+ this.inp.search = this.inp.value;
27
+ }
28
+ else {
29
+ this.active = moment();
30
+ }
31
+ this.setDate();
32
+ this.inp.setValue = (v) => {
33
+ if (v === null) {
34
+ this.inp.clear();
35
+ return;
36
+ }
37
+ else if (typeof v === 'string') {
38
+ const d = parseInt(v.substring(6, v.length - 2), 10);
39
+ this.active = moment(d);
40
+ }
41
+ else {
42
+ this.active = moment(v);
43
+ }
44
+ this.inp.value = this.active.format('jYYYY/jMM/jDD');
45
+ this.inp.search = this.active.format('jYYYY/jMM/jDD');
46
+ this.setDate();
47
+ };
48
+ this.inp.isValid = () => {
49
+ this.inp.error = null;
50
+ if (this.inp.required && !this.inp.value) {
51
+ this.inp.error = InputError.Required;
52
+ return false;
53
+ }
54
+ if (!this.inp.required && !this.inp.value) {
55
+ return true;
56
+ }
57
+ if (!moment(this.inp.value, 'jYYYY/jMM/jDD').isValid()) {
58
+ this.inp.error = InputError.Invalid;
59
+ return false;
60
+ }
61
+ return true;
62
+ };
63
+ this.inp.clear = () => {
64
+ if (this.inp.default) {
65
+ this.inp.setValue(this.inp.default, false);
66
+ }
67
+ else {
68
+ this.inp.value = null;
69
+ this.inp.search = null;
70
+ }
71
+ };
72
+ this.inp.data = () => {
73
+ return this.inp.value ? moment(this.inp.value, 'jYYYY/jMM/jDD').locale('en').format('YYYY/MM/DD') : null;
74
+ };
75
+ this.inp.focus = () => {
76
+ this.openCalendar();
77
+ };
78
+ this.inp.focusOut = () => {
79
+ $(this.inputBase.nativeElement).blur();
80
+ };
81
+ }
82
+ setDate() {
83
+ const n = this.active.clone();
84
+ const countDayInMonth = n.daysInMonth();
85
+ const startWeek = parseInt(n.startOf('month').format('d'), 10);
86
+ const previousMonth = n.subtract(1, 'month');
87
+ const countDayInPreviousMonth = previousMonth.daysInMonth();
88
+ const nextMonth = n.add(2, 'month');
89
+ const previousDays = [];
90
+ const nextDays = [];
91
+ const days = [];
92
+ if (startWeek !== 6) {
93
+ for (let i = countDayInPreviousMonth - startWeek; i <= countDayInPreviousMonth; i++) {
94
+ previousDays.push(new DayClass(i, this.isToday(previousMonth, i), false));
95
+ }
96
+ }
97
+ for (let i = 1; i <= countDayInMonth; i++) {
98
+ days.push(new DayClass(i, this.isToday(this.active, i), this.isSelected(this.active, i)));
99
+ }
100
+ const end = (days.length + previousDays.length) % 7;
101
+ if (end !== 0) {
102
+ for (let i = 1; i <= 7 - end; i++) {
103
+ nextDays.push(new DayClass(i, this.isToday(nextMonth, i), false));
104
+ }
105
+ }
106
+ this.previousDays = previousDays;
107
+ this.nextDays = nextDays;
108
+ this.days = days;
109
+ }
110
+ isToday(m, d) {
111
+ const month = parseInt(m.format('jMM'), 10);
112
+ const year = parseInt(m.format('jYYYY'), 10);
113
+ return year === this.todayYear && month === this.todayMonth && d === this.todayDay;
114
+ }
115
+ isSelected(m, d) {
116
+ if (this.inp.value == null) {
117
+ return false;
118
+ }
119
+ const month = parseInt(m.format('jMM'), 10);
120
+ const year = parseInt(m.format('jYYYY'), 10);
121
+ const vDay = parseInt(this.inp.value.split('/')[2], 10);
122
+ const vMonth = parseInt(this.inp.value.split('/')[1], 10);
123
+ const vYear = parseInt(this.inp.value.split('/')[0], 10);
124
+ return year === vYear && month === vMonth && d === vDay;
125
+ }
126
+ add(c) {
127
+ this.active.add(c, this.state === 'day' ? 'month' : 'year');
128
+ this.setDate();
129
+ }
130
+ changeMonth(c) {
131
+ this.active = moment(this.active.format('jYYYY') + '/' + ('0' + c).slice(-2) + '/' + this.active.format('jDD'), 'jYYYY/jMM/jDD');
132
+ this.setDate();
133
+ this.changeState('day');
134
+ }
135
+ changeYear(c) {
136
+ this.active = moment(('000' + c).slice(-4) + '/' + this.active.format('jMM') + '/' + this.active.format('jDD'), 'jYYYY/jMM/jDD');
137
+ this.setDate();
138
+ this.changeState('month');
139
+ }
140
+ toggleCalendar() {
141
+ this.openCalendar();
142
+ }
143
+ openCalendar() {
144
+ this.setPosition();
145
+ $(this.inputBase.nativeElement).focus();
146
+ }
147
+ onKeyDown(e) {
148
+ const code = e.keyCode || e.which;
149
+ if (code === 9 || code === 13) {
150
+ e.preventDefault();
151
+ $(this.inputDiv.nativeElement).removeClass('top');
152
+ this.changeIndex.emit(code === 9 ? e.shiftKey ? 'ShiftTab' : 'Tab' : e.shiftKey ? 'ShiftEnter' : 'Enter');
153
+ if (!this.inForm) {
154
+ $(this.inputBase.nativeElement).blur();
155
+ }
156
+ }
157
+ }
158
+ onKeyUp(e) {
159
+ this.inp.error = null;
160
+ this.inp.value = null;
161
+ if (this.cSearch !== e.target.value) {
162
+ this.cSearch = e.target.value;
163
+ if (this.inp.search !== '' && this.inp.search !== null) {
164
+ const v = moment(this.inp.search, 'jYYYY/jMM/jDD');
165
+ if (v.isValid() && this.inp.search.length <= 10) {
166
+ this.active = v;
167
+ this.inp.value = this.active.format('jYYYY/jMM/jDD');
168
+ this.setDate();
169
+ if (this.inp.onChange) {
170
+ this.inp.onChange(this.inp);
171
+ }
172
+ }
173
+ else {
174
+ this.setDate();
175
+ }
176
+ }
177
+ else {
178
+ this.setDate();
179
+ if (this.inp.onChange) {
180
+ this.inp.onChange(this.inp);
181
+ }
182
+ }
183
+ }
184
+ }
185
+ onFocusOut() {
186
+ $(this.inputDiv.nativeElement).removeClass('top');
187
+ this.inp.search = this.inp.value;
188
+ this.state = 'day';
189
+ }
190
+ setPosition() {
191
+ const rect = this.inputDiv.nativeElement.getBoundingClientRect();
192
+ const offsetOfBottom = window.innerHeight - rect.bottom;
193
+ const height = this.inputCalendarDiv.nativeElement.offsetHeight;
194
+ if (offsetOfBottom < height) {
195
+ $(this.inputDiv.nativeElement).addClass('top');
196
+ }
197
+ else {
198
+ $(this.inputDiv.nativeElement).removeClass('top');
199
+ }
200
+ }
201
+ selectDate(d) {
202
+ this.inp.error = null;
203
+ const s = this.days.find(x => x.selected);
204
+ if (s) {
205
+ s.selected = false;
206
+ }
207
+ const m = parseInt(this.active.format('jMM'), 10);
208
+ const y = parseInt(this.active.format('jYYYY'), 10);
209
+ this.setValue(y, m, d.day);
210
+ d.selected = true;
211
+ this.cSearch = this.inp.search;
212
+ setTimeout(() => {
213
+ $(this.inputDiv.nativeElement).removeClass('top');
214
+ this.changeIndex.emit('Tab');
215
+ if (!this.inForm) {
216
+ $(this.inputBase.nativeElement).blur();
217
+ }
218
+ }, 10);
219
+ if (this.inp.onChange) {
220
+ this.inp.onChange(this.inp);
221
+ }
222
+ }
223
+ setValue(y, m, d) {
224
+ this.inp.value = y + '/' + (m > 9 ? m : '0' + m) + '/' + (d > 9 ? d : '0' + d);
225
+ this.inp.search = y + '/' + (m > 9 ? m : '0' + m) + '/' + (d > 9 ? d : '0' + d);
226
+ }
227
+ changeState(s) {
228
+ this.state = s;
229
+ }
230
+ getYears() {
231
+ const y = parseInt(this.active.format('jYYYY'), 10);
232
+ const sy = y - (y % 20);
233
+ return Array.from({ length: 20 }, (x, i) => sy + i);
234
+ }
235
+ getActiveMonth() {
236
+ return this.months[parseInt(this.active.format('jM'), 10) - 1];
237
+ }
238
+ }
239
+ FormDateComponent.decorators = [
240
+ { type: Component, args: [{
241
+ selector: 'lib-form-date',
242
+ template: "<div #inputDiv [id]=\"inp.name + 'Input'\" [style]=\"inp.style\" [className]=\"inp.class + ' form-input-con date' + (inp.error == null ? '' : ' error') + (inp.disabled ? ' disabled' : '')\">\r\n <div class=\"form-input\" (click)=\"toggleCalendar()\">\r\n <div *ngIf=\"inp.displayLabel\" class=\"label\"><i *ngIf=\"inp.required\" class=\"fas fa-star-of-life required-icon\"></i>{{inp.getLabel()}}</div>\r\n <div class=\"w-100 p-r\">\r\n <i *ngIf=\"inp.icon != null || inp.loading\" #inputIcon [className]=\"(inp.loading ? 'fad fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n <i *ngIf=\"inp.withClear && inp.value\" (click)=\"inp.clear()\" class=\"fad fa-eraser clear-icon\"></i>\r\n <input (keydown)=\"onKeyDown($event)\" (keyup)=\"onKeyUp($event)\" (focusout)=\"onFocusOut()\" [disabled]=\"inp.disabled\" [(ngModel)]=\"inp.search\" #inputBase [name]=\"inp.name\" [placeholder]=\"inp.l(inp.name)\" class=\"control\" autocomplete=\"off\" maxlength=\"\">\r\n <div #inputCalendarDiv class=\"calendar\">\r\n <div class=\"header\">\r\n <i (click)=\"add(state === 'day' || state === 'month' ? -1 : -20)\" class=\"fas fa-angle-right previous-month\"></i>\r\n <div class=\"title\">\r\n <div (click)=\"(state === 'day' || state === 'month') && changeState('year')\" class=\"year header-item\">\r\n {{active.format('jYYYY')}}\r\n </div>\r\n <div (click)=\"state === 'day' && changeState('month')\" class=\"month header-item\">\r\n {{getActiveMonth()}}\r\n </div>\r\n </div>\r\n <i (click)=\"add(state === 'day' || state === 'month' ? 1 : 20)\" class=\"fas fa-angle-left next-month\"></i>\r\n </div>\r\n <div [style]=\"state === 'day' ? {} : {display: 'none'}\" class=\"days-con\">\r\n <div class=\"day-names underline\">\r\n <div class=\"item\">\u0634</div>\r\n <div class=\"item\">\u06CC</div>\r\n <div class=\"item\">\u062F</div>\r\n <div class=\"item\">\u0633</div>\r\n <div class=\"item\">\u0686</div>\r\n <div class=\"item\">\u067E</div>\r\n <div class=\"item\">\u062C</div>\r\n </div>\r\n <div class=\"days\">\r\n <div [className]=\"'item not-in-month' + (d.today ? ' today' : '')\" *ngFor=\"let d of previousDays\">{{d.day}}</div>\r\n <div (click)=\"selectDate(d)\" [className]=\"'item' + (d.today ? ' today' : '') + (d.selected ? ' selected' : '')\" *ngFor=\"let d of days\">{{d.day}}</div>\r\n <div [className]=\"'item not-in-month' + (d.today ? ' today' : '')\" *ngFor=\"let d of nextDays\">{{d.day}}</div>\r\n </div>\r\n </div>\r\n <div [style]=\"state === 'month' ? {} : {display: 'none'}\" class=\"months-con\">\r\n <div [className]=\"(i + 1 == active.format('jM') ? 'selected ' : '') + 'month'\" (click)=\"changeMonth(i + 1)\" *ngFor=\"let m of months; let i = index\">{{m}}</div>\r\n </div>\r\n <div [style]=\"state === 'year' ? {} : {display: 'none'}\" class=\"years-con\">\r\n <div [className]=\"(y == active.format('jYYYY') ? 'selected ' : '') + 'year'\" (click)=\"changeYear(y)\" *ngFor=\"let y of getYears()\">{{y}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
243
+ styles: [".form-input-con.date{padding:0 15px}.form-input-con.date,.form-input-con.date .form-input{float:right;position:relative;width:100%}.form-input-con.date .form-input .label{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:default;direction:rtl;float:right;font-size:12px;height:20px;line-height:20px;margin-bottom:3px;padding:0 10px;text-align:right;width:100%}.form-input-con.date.error .form-input .label{color:var(--red);font-size:10px}.form-input-con.date .form-input .label .required-icon{color:var(--red);font-size:9px;height:20px;line-height:20px;text-align:center;width:20px}.form-input-con.date .form-input .control{background-color:#fff;background-image:none;border:none;border:var(--border-input);border-radius:5px;color:var(--black);display:block;font-family:Vazir;font-size:11px;height:35px;padding:5px 35px;position:relative;text-align:center;width:100%;z-index:2}.form-input-con.date .form-input .control:focus{border-radius:5px 5px 5px 0}.form-input-con.date.top .form-input .control:focus{border-radius:0 5px 5px 5px}.form-input-con.date .form-input .control:focus,.form-input-con.date .form-input:hover .control{border:var(--border-input-dark);outline:none}.form-input-con.date .form-input i.icon{color:var(--icon);cursor:text;font-size:13px;left:0;line-height:35px}.form-input-con.date .form-input i.clear-icon,.form-input-con.date .form-input i.icon{bottom:0;height:35px;position:absolute;text-align:center;transition:all .35s ease-in-out;width:35px;z-index:3}.form-input-con.date .form-input i.clear-icon{color:var(--red);cursor:pointer;font-size:14px;line-height:38px;right:0}.form-input-con.date.disabled .form-input .control,.form-input-con.date.disabled .form-input .label,.form-input-con.date.disabled .form-input i.icon{cursor:default;filter:blur(.5px);opacity:.7}.form-input-con.date.error .form-input .control,.form-input-con.date.error .form-input i.icon{color:var(--red-cc)}.form-input-con.date.error .form-input .control{border:var(--border-input-red)}.form-input-con.date.error .form-input .control:focus,.form-input-con.date.error .form-input:hover .control{border:var(--border-input-red-dark)}.form-input-con.date .form-input .calendar{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background-color:#fff;border:var(--border-input);border-radius:0 0 5px 5px;color:var(--black);height:235px;left:0;overflow:hidden;position:absolute;top:-200000px;width:200px;z-index:102}.form-input-con.date .form-input .control:focus+.calendar{top:35px!important}.form-input-con.date.top .form-input .control:focus+.calendar{border-radius:5px 5px 0 0;bottom:35px;top:unset!important}.form-input-con.date .form-input .days-con{float:right;width:100%}.form-input-con.date .form-input .calendar .header{background:var(--black-33);float:right;width:100%}.form-input-con.date .form-input .calendar .header .next-month,.form-input-con.date .form-input .calendar .header .previous-month{cursor:pointer;float:right;font-size:15px;height:30px;line-height:30px;text-align:center;width:30px}.form-input-con.date .form-input .calendar .header .next-month:hover,.form-input-con.date .form-input .calendar .header .previous-month:hover{background:var(--black-33)}.form-input-con.date .form-input .calendar .header .title{float:right;font-family:VazirBold;font-size:12px;height:30px;line-height:30px;text-align:center;width:calc(100% - 60px)}.form-input-con.date .form-input .calendar .header .header-item{background-color:#fff;border:var(--border-input);border-radius:5px;cursor:pointer;float:right;height:20px;line-height:20px;margin-right:5px;margin-top:5px;text-align:center}.form-input-con.date .form-input .calendar .header .header-item:hover{background-color:var(--base-11)}.form-input-con.date .form-input .calendar .header .header-item.year{width:calc(40% - 10px)}.form-input-con.date .form-input .calendar .header .header-item.month{width:calc(60% - 10px)}.form-input-con.date .form-input .calendar .days-con .day-names{float:right;font-family:VazirLight;font-size:12px;position:relative;text-align:center;width:100%}.form-input-con.date .form-input .calendar .days-con .day-names .item{float:right;font-size:12px;height:25px;line-height:25px;text-align:center;width:14.28571%}.form-input-con.date .form-input .calendar .days-con .days{float:right;font-size:12px;text-align:center;width:100%}.form-input-con.date .form-input .calendar .days-con .days .item{cursor:pointer;float:right;font-size:11px;height:30px;line-height:30px;text-align:center;width:14.28571%}.form-input-con.date .form-input .calendar .days-con .days .item.not-in-month{cursor:default;opacity:.5}.form-input-con.date .form-input .calendar .days-con .days .item:hover{background-color:var(--black-33)}.form-input-con.date .form-input .calendar .days-con .days .item.not-in-month:hover{background-color:unset}.form-input-con.date .form-input .calendar .days-con .days .item.today{background-color:var(--black-33)}.form-input-con.date .form-input .calendar .days-con .days .item.selected{background-color:var(--icon);color:#fff}.form-input-con.date .form-input .calendar .days-con .days .item.today.not-in-month:hover{background-color:var(--black-33)}.form-input-con.date .form-input .calendar .months-con{float:right;width:100%}.form-input-con.date .form-input .calendar .months-con .month{cursor:pointer;float:right;font-size:11px;height:51.25px;line-height:51.25px;text-align:center;width:33.33333%}.form-input-con.date .form-input .calendar .months-con .month.selected,.form-input-con.date .form-input .calendar .months-con .month:hover{background-color:var(--black-33)}.form-input-con.date .form-input .calendar .years-con{float:right;width:100%}.form-input-con.date .form-input .calendar .years-con .year{cursor:pointer;float:right;font-size:11px;height:41px;line-height:41px;text-align:center;width:25%}.form-input-con.date .form-input .calendar .years-con .year.selected,.form-input-con.date .form-input .calendar .years-con .year:hover{background-color:var(--black-33)}.form-input-con.date.table-search{float:right;padding:0;width:100%}.form-input-con.date.h-25 .form-input .control{height:25px;padding:5px}.form-input-con.date.h-25 .form-input i.icon{display:none}.form-input-con.date.h-25 .form-input .control:focus+.calendar{top:25px!important}.form-input-con.date.top.h-25 .form-input .control:focus+.calendar{bottom:25px}"]
244
+ },] }
245
+ ];
246
+ FormDateComponent.ctorParameters = () => [];
247
+ FormDateComponent.propDecorators = {
248
+ inp: [{ type: Input }],
249
+ inForm: [{ type: Input }],
250
+ changeIndex: [{ type: Output }],
251
+ inputBase: [{ type: ViewChild, args: ['inputBase',] }],
252
+ inputDiv: [{ type: ViewChild, args: ['inputDiv',] }],
253
+ inputLabel: [{ type: ViewChild, args: ['inputLabel',] }],
254
+ inputCalendarDiv: [{ type: ViewChild, args: ['inputCalendarDiv',] }]
255
+ };
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qcm9qZWN0cy9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9mb3JtL2RhdGUvZm9ybS5kYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUMsUUFBUSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBT3ZELE1BQU0sT0FBTyxpQkFBaUI7SUFxQjVCO1FBZkEsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGlCQUFZLEdBQWUsRUFBRSxDQUFDO1FBQzlCLGFBQVEsR0FBZSxFQUFFLENBQUM7UUFDMUIsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUl0QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFdBQU0sR0FBRyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakgsV0FBTSxHQUFrQixNQUFNLEVBQUUsQ0FBQztJQU1qQyxDQUFDO0lBQ0QsUUFBUTtRQUNOLHVCQUF1QjtRQUN2QixNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENB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QztZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBQ0QsUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxXQUFXLENBQUMsQ0FBUztRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBQ0QsUUFBUTtRQUNOLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsTUFBTSxFQUFFLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDOzs7WUFqUEYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6Qix1eUdBQXlDOzthQUUxQzs7OztrQkFFRSxLQUFLO3FCQUVMLEtBQUs7MEJBRUwsTUFBTTt3QkFZTixTQUFTLFNBQUMsV0FBVzt1QkFDckIsU0FBUyxTQUFDLFVBQVU7eUJBQ3BCLFNBQVMsU0FBQyxZQUFZOytCQUN0QixTQUFTLFNBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnamFsYWxpLW1vbWVudCc7XHJcbmltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuaW1wb3J0IHtEYXlDbGFzcywgSW5wdXRDbGFzc30gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLmNsYXNzJztcclxuaW1wb3J0IHtJbnB1dEVycm9yfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudW0uY2xhc3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZm9ybS1kYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS5kYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLmRhdGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKVxyXG4gIGlucDogSW5wdXRDbGFzcztcclxuICBASW5wdXQoKVxyXG4gIGluRm9ybTogYm9vbGVhbjtcclxuICBAT3V0cHV0KClcclxuICBjaGFuZ2VJbmRleCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIHByZXZpb3VzRGF5czogRGF5Q2xhc3NbXSA9IFtdO1xyXG4gIG5leHREYXlzOiBEYXlDbGFzc1tdID0gW107XHJcbiAgZGF5czogRGF5Q2xhc3NbXSA9IFtdO1xyXG4gIHRvZGF5RGF5OiBudW1iZXI7XHJcbiAgdG9kYXlNb250aDogbnVtYmVyO1xyXG4gIHRvZGF5WWVhcjogbnVtYmVyO1xyXG4gIGNTZWFyY2ggPSAnJztcclxuICBzdGF0ZSA9ICdkYXknO1xyXG4gIG1vbnRocyA9IFsn2YHYsdmI2LHYr9uM2YYnLCAn2KfYsdiv24zYqNmH2LTYqicsICfYrtix2K/Yp9ivJywgJ9iq24zYsScsICfZhdix2K/Yp9ivJywgJ9i02YfYsduM2YjYsScsICfZhdmH2LEnLCAn2KLYqNin2YYnLCAn2KLYsNixJywgJ9iv24wnLCAn2KjZh9mF2YYnLCAn2KfYs9mB2YbYryddO1xyXG4gIGFjdGl2ZTogbW9tZW50Lk1vbWVudCA9IG1vbWVudCgpO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0QmFzZScpIGlucHV0QmFzZTogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdpbnB1dERpdicpIGlucHV0RGl2OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0TGFiZWwnKSBpbnB1dExhYmVsOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Q2FsZW5kYXJEaXYnKSBpbnB1dENhbGVuZGFyRGl2OiBFbGVtZW50UmVmO1xyXG4gIGNvbnN0cnVjdG9yKCl7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWR7XHJcbiAgICAvLyBtb21lbnQubG9jYWxlKCdmYScpO1xyXG4gICAgY29uc3QgdG9kYXkgPSBtb21lbnQoKS5sb2NhbGUoJ2ZhJyk7XHJcbiAgICB0aGlzLnRvZGF5RGF5ID0gcGFyc2VJbnQodG9kYXkuZm9ybWF0KCdqREQnKSwgMTApO1xyXG4gICAgdGhpcy50b2RheU1vbnRoID0gcGFyc2VJbnQodG9kYXkuZm9ybWF0KCdqTU0nKSwgMTApO1xyXG4gICAgdGhpcy50b2RheVllYXIgPSBwYXJzZUludCh0b2RheS5mb3JtYXQoJ2pZWVlZJyksIDEwKTtcclxuICAgIGlmICh0aGlzLmlucC52YWx1ZSl7XHJcbiAgICAgIHRoaXMuYWN0aXZlID0gbW9tZW50KHRoaXMuaW5wLnZhbHVlKTtcclxuICAgICAgdGhpcy5pbnAudmFsdWUgPSB0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pZWVlZL2pNTS9qREQnKTtcclxuICAgICAgdGhpcy5pbnAuc2VhcmNoID0gdGhpcy5pbnAudmFsdWU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5hY3RpdmUgPSBtb21lbnQoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RGF0ZSgpO1xyXG4gICAgdGhpcy5pbnAuc2V0VmFsdWUgPSAodikgPT4ge1xyXG4gICAgICBpZiAodiA9PT0gbnVsbCl7XHJcbiAgICAgICAgdGhpcy5pbnAuY2xlYXIoKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgZCA9IHBhcnNlSW50KHYuc3Vic3RyaW5nKDYsIHYubGVuZ3RoIC0gMiksIDEwKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IG1vbWVudChkKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBtb21lbnQodik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbnAudmFsdWUgPSB0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pZWVlZL2pNTS9qREQnKTtcclxuICAgICAgdGhpcy5pbnAuc2VhcmNoID0gdGhpcy5hY3RpdmUuZm9ybWF0KCdqWVlZWS9qTU0vakREJyk7XHJcbiAgICAgIHRoaXMuc2V0RGF0ZSgpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmlzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuaW5wLmVycm9yID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuaW5wLnJlcXVpcmVkICYmICF0aGlzLmlucC52YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuaW5wLmVycm9yID0gSW5wdXRFcnJvci5SZXF1aXJlZDtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLmlucC5yZXF1aXJlZCAmJiAhdGhpcy5pbnAudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIW1vbWVudCh0aGlzLmlucC52YWx1ZSwgJ2pZWVlZL2pNTS9qREQnKS5pc1ZhbGlkKCkpIHtcclxuICAgICAgICB0aGlzLmlucC5lcnJvciA9IElucHV0RXJyb3IuSW52YWxpZDtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuY2xlYXIgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlucC5kZWZhdWx0KXtcclxuICAgICAgICB0aGlzLmlucC5zZXRWYWx1ZSh0aGlzLmlucC5kZWZhdWx0LCBmYWxzZSk7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuaW5wLnZhbHVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlucC5zZWFyY2ggPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZGF0YSA9ICgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5wLnZhbHVlID8gbW9tZW50KHRoaXMuaW5wLnZhbHVlLCAnallZWVkvak1NL2pERCcpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ1lZWVkvTU0vREQnKSA6IG51bGw7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZm9jdXMgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZm9jdXNPdXQgPSAoKSA9PiB7XHJcbiAgICAgICQodGhpcy5pbnB1dEJhc2UubmF0aXZlRWxlbWVudCkuYmx1cigpO1xyXG4gICAgfTtcclxuICB9XHJcbiAgc2V0RGF0ZSgpOiB2b2lke1xyXG4gICAgY29uc3QgbiA9IHRoaXMuYWN0aXZlLmNsb25lKCk7XHJcbiAgICBjb25zdCBjb3VudERheUluTW9udGggPSBuLmRheXNJbk1vbnRoKCk7XHJcbiAgICBjb25zdCBzdGFydFdlZWsgPSBwYXJzZUludChuLnN0YXJ0T2YoJ21vbnRoJykuZm9ybWF0KCdkJyksIDEwKTtcclxuICAgIGNvbnN0IHByZXZpb3VzTW9udGggPSBuLnN1YnRyYWN0KDEsICdtb250aCcpO1xyXG4gICAgY29uc3QgY291bnREYXlJblByZXZpb3VzTW9udGggPSBwcmV2aW91c01vbnRoLmRheXNJbk1vbnRoKCk7XHJcbiAgICBjb25zdCBuZXh0TW9udGggPSBuLmFkZCgyLCAnbW9udGgnKTtcclxuICAgIGNvbnN0IHByZXZpb3VzRGF5czogRGF5Q2xhc3NbXSA9IFtdO1xyXG4gICAgY29uc3QgbmV4dERheXMgPSBbXTtcclxuICAgIGNvbnN0IGRheXMgPSBbXTtcclxuICAgIGlmIChzdGFydFdlZWsgIT09IDYpe1xyXG4gICAgICBmb3IgKGxldCBpID0gY291bnREYXlJblByZXZpb3VzTW9udGggLSBzdGFydFdlZWs7IGkgPD0gY291bnREYXlJblByZXZpb3VzTW9udGg7IGkrKyl7XHJcbiAgICAgICAgcHJldmlvdXNEYXlzLnB1c2gobmV3IERheUNsYXNzKGksIHRoaXMuaXNUb2RheShwcmV2aW91c01vbnRoLCBpKSwgZmFsc2UpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gY291bnREYXlJbk1vbnRoOyBpKyspe1xyXG4gICAgICBkYXlzLnB1c2gobmV3IERheUNsYXNzKGksIHRoaXMuaXNUb2RheSh0aGlzLmFjdGl2ZSwgaSksIHRoaXMuaXNTZWxlY3RlZCh0aGlzLmFjdGl2ZSwgaSkpKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVuZCA9IChkYXlzLmxlbmd0aCArIHByZXZpb3VzRGF5cy5sZW5ndGgpICUgNztcclxuICAgIGlmIChlbmQgIT09IDApe1xyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3IC0gZW5kOyBpKyspe1xyXG4gICAgICAgIG5leHREYXlzLnB1c2gobmV3IERheUNsYXNzKGksIHRoaXMuaXNUb2RheShuZXh0TW9udGgsIGkpLCBmYWxzZSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpb3VzRGF5cyA9IHByZXZpb3VzRGF5cztcclxuICAgIHRoaXMubmV4dERheXMgPSBuZXh0RGF5cztcclxuICAgIHRoaXMuZGF5cyA9IGRheXM7XHJcbiAgfVxyXG4gIGlzVG9kYXkobTogbW9tZW50Lk1vbWVudCwgZDogbnVtYmVyKTogYm9vbGVhbntcclxuICAgIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQobS5mb3JtYXQoJ2pNTScpLCAxMCk7XHJcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQobS5mb3JtYXQoJ2pZWVlZJyksIDEwKTtcclxuICAgIHJldHVybiB5ZWFyID09PSB0aGlzLnRvZGF5WWVhciAmJiBtb250aCA9PT0gdGhpcy50b2RheU1vbnRoICYmIGQgPT09IHRoaXMudG9kYXlEYXk7XHJcbiAgfVxyXG4gIGlzU2VsZWN0ZWQobTogbW9tZW50Lk1vbWVudCwgZDogbnVtYmVyKTogYm9vbGVhbntcclxuICAgIGlmICh0aGlzLmlucC52YWx1ZSA9PSBudWxsKXtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbW9udGggPSBwYXJzZUludChtLmZvcm1hdCgnak1NJyksIDEwKTtcclxuICAgIGNvbnN0IHllYXIgPSBwYXJzZUludChtLmZvcm1hdCgnallZWVknKSwgMTApO1xyXG4gICAgY29uc3QgdkRheSA9IHBhcnNlSW50KHRoaXMuaW5wLnZhbHVlLnNwbGl0KCcvJylbMl0sIDEwKTtcclxuICAgIGNvbnN0IHZNb250aCA9IHBhcnNlSW50KHRoaXMuaW5wLnZhbHVlLnNwbGl0KCcvJylbMV0sIDEwKTtcclxuICAgIGNvbnN0IHZZZWFyID0gcGFyc2VJbnQodGhpcy5pbnAudmFsdWUuc3BsaXQoJy8nKVswXSwgMTApO1xyXG4gICAgcmV0dXJuIHllYXIgPT09IHZZZWFyICYmIG1vbnRoID09PSB2TW9udGggJiYgZCA9PT0gdkRheTtcclxuICB9XHJcbiAgYWRkKGM6IG51bWJlcik6IHZvaWR7XHJcbiAgICB0aGlzLmFjdGl2ZS5hZGQoYywgdGhpcy5zdGF0ZSA9PT0gJ2RheScgPyAnbW9udGgnIDogJ3llYXInKTtcclxuICAgIHRoaXMuc2V0RGF0ZSgpO1xyXG4gIH1cclxuICBjaGFuZ2VNb250aChjOiBudW1iZXIpOiB2b2lke1xyXG4gICAgdGhpcy5hY3RpdmUgPSBtb21lbnQodGhpcy5hY3RpdmUuZm9ybWF0KCdqWVlZWScpICsgJy8nICsgKCcwJyArIGMpLnNsaWNlKC0yKSArICcvJyArIHRoaXMuYWN0aXZlLmZvcm1hdCgnakREJyksICdqWVlZWS9qTU0vakREJyk7XHJcbiAgICB0aGlzLnNldERhdGUoKTtcclxuICAgIHRoaXMuY2hhbmdlU3RhdGUoJ2RheScpO1xyXG4gIH1cclxuICBjaGFuZ2VZZWFyKGM6IG51bWJlcik6IHZvaWR7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IG1vbWVudCgoJzAwMCcgKyBjKS5zbGljZSgtNCkgKyAnLycgKyB0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pNTScpICsgJy8nICsgdGhpcy5hY3RpdmUuZm9ybWF0KCdqREQnKSwgJ2pZWVlZL2pNTS9qREQnKTtcclxuICAgIHRoaXMuc2V0RGF0ZSgpO1xyXG4gICAgdGhpcy5jaGFuZ2VTdGF0ZSgnbW9udGgnKTtcclxuICB9XHJcbiAgdG9nZ2xlQ2FsZW5kYXIoKTogdm9pZHtcclxuICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XHJcbiAgfVxyXG4gIG9wZW5DYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcclxuICAgICQodGhpcy5pbnB1dEJhc2UubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcclxuICB9XHJcbiAgb25LZXlEb3duKGUpOiB2b2lke1xyXG4gICAgY29uc3QgY29kZSA9IGUua2V5Q29kZSB8fCBlLndoaWNoO1xyXG4gICAgaWYgKGNvZGUgPT09IDkgfHwgY29kZSA9PT0gMTMpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAkKHRoaXMuaW5wdXREaXYubmF0aXZlRWxlbWVudCkucmVtb3ZlQ2xhc3MoJ3RvcCcpO1xyXG4gICAgICB0aGlzLmNoYW5nZUluZGV4LmVtaXQoY29kZSA9PT0gOSA/IGUuc2hpZnRLZXkgPyAnU2hpZnRUYWInIDogJ1RhYicgOiBlLnNoaWZ0S2V5ID8gJ1NoaWZ0RW50ZXInIDogJ0VudGVyJyk7XHJcbiAgICAgIGlmICghdGhpcy5pbkZvcm0pe1xyXG4gICAgICAgICQodGhpcy5pbnB1dEJhc2UubmF0aXZlRWxlbWVudCkuYmx1cigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uS2V5VXAoZSk6IHZvaWR7XHJcbiAgICB0aGlzLmlucC5lcnJvciA9IG51bGw7XHJcbiAgICB0aGlzLmlucC52YWx1ZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5jU2VhcmNoICE9PSBlLnRhcmdldC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmNTZWFyY2ggPSBlLnRhcmdldC52YWx1ZTtcclxuICAgICAgaWYgKHRoaXMuaW5wLnNlYXJjaCAhPT0gJycgJiYgdGhpcy5pbnAuc2VhcmNoICE9PSBudWxsKXtcclxuICAgICAgICBjb25zdCB2ID0gbW9tZW50KHRoaXMuaW5wLnNlYXJjaCwgJ2pZWVlZL2pNTS9qREQnKTtcclxuICAgICAgICBpZiAodi5pc1ZhbGlkKCkgJiYgdGhpcy5pbnAuc2VhcmNoLmxlbmd0aCA8PSAxMCl7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHY7XHJcbiAgICAgICAgICB0aGlzLmlucC52YWx1ZSA9IHRoaXMuYWN0aXZlLmZvcm1hdCgnallZWVkvak1NL2pERCcpO1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRlKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5pbnAub25DaGFuZ2Upe1xyXG4gICAgICAgICAgICB0aGlzLmlucC5vbkNoYW5nZSh0aGlzLmlucCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLnNldERhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5wLm9uQ2hhbmdlKXtcclxuICAgICAgICAgIHRoaXMuaW5wLm9uQ2hhbmdlKHRoaXMuaW5wKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb25Gb2N1c091dCgpOiB2b2lke1xyXG4gICAgJCh0aGlzLmlucHV0RGl2Lm5hdGl2ZUVsZW1lbnQpLnJlbW92ZUNsYXNzKCd0b3AnKTtcclxuICAgIHRoaXMuaW5wLnNlYXJjaCA9IHRoaXMuaW5wLnZhbHVlO1xyXG4gICAgdGhpcy5zdGF0ZSA9ICdkYXknO1xyXG4gIH1cclxuICBzZXRQb3NpdGlvbigpOiB2b2lke1xyXG4gICAgY29uc3QgcmVjdCA9IHRoaXMuaW5wdXREaXYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG9mZnNldE9mQm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b207XHJcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmlucHV0Q2FsZW5kYXJEaXYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICBpZiAob2Zmc2V0T2ZCb3R0b20gPCBoZWlnaHQpe1xyXG4gICAgICAkKHRoaXMuaW5wdXREaXYubmF0aXZlRWxlbWVudCkuYWRkQ2xhc3MoJ3RvcCcpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgICQodGhpcy5pbnB1dERpdi5uYXRpdmVFbGVtZW50KS5yZW1vdmVDbGFzcygndG9wJyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbGVjdERhdGUoZDogRGF5Q2xhc3MpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wLmVycm9yID0gbnVsbDtcclxuICAgIGNvbnN0IHMgPSB0aGlzLmRheXMuZmluZCh4ID0+IHguc2VsZWN0ZWQpO1xyXG4gICAgaWYgKHMpe1xyXG4gICAgICBzLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBtID0gcGFyc2VJbnQodGhpcy5hY3RpdmUuZm9ybWF0KCdqTU0nKSwgMTApO1xyXG4gICAgY29uc3QgeSA9IHBhcnNlSW50KHRoaXMuYWN0aXZlLmZvcm1hdCgnallZWVknKSwgMTApO1xyXG4gICAgdGhpcy5zZXRWYWx1ZSh5LCBtLCBkLmRheSk7XHJcbiAgICBkLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuY1NlYXJjaCA9IHRoaXMuaW5wLnNlYXJjaDtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAkKHRoaXMuaW5wdXREaXYubmF0aXZlRWxlbWVudCkucmVtb3ZlQ2xhc3MoJ3RvcCcpO1xyXG4gICAgICB0aGlzLmNoYW5nZUluZGV4LmVtaXQoJ1RhYicpO1xyXG4gICAgICBpZiAoIXRoaXMuaW5Gb3JtKXtcclxuICAgICAgICAkKHRoaXMuaW5wdXRCYXNlLm5hdGl2ZUVsZW1lbnQpLmJsdXIoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTApO1xyXG4gICAgaWYgKHRoaXMuaW5wLm9uQ2hhbmdlKXtcclxuICAgICAgdGhpcy5pbnAub25DaGFuZ2UodGhpcy5pbnApO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRWYWx1ZSh5OiBudW1iZXIsIG06IG51bWJlciwgZDogbnVtYmVyKTogdm9pZHtcclxuICAgIHRoaXMuaW5wLnZhbHVlID0geSArICcvJyArIChtID4gOSA/IG0gOiAnMCcgKyBtKSArICcvJyArIChkID4gOSA/IGQgOiAnMCcgKyBkKTtcclxuICAgIHRoaXMuaW5wLnNlYXJjaCA9IHkgKyAnLycgKyAobSA+IDkgPyBtIDogJzAnICsgbSkgKyAnLycgKyAoZCA+IDkgPyBkIDogJzAnICsgZCk7XHJcbiAgfVxyXG4gIGNoYW5nZVN0YXRlKHM6IHN0cmluZyk6IHZvaWR7XHJcbiAgICB0aGlzLnN0YXRlID0gcztcclxuICB9XHJcbiAgZ2V0WWVhcnMoKTogbnVtYmVyW117XHJcbiAgICBjb25zdCB5ID0gcGFyc2VJbnQodGhpcy5hY3RpdmUuZm9ybWF0KCdqWVlZWScpLCAxMCk7XHJcbiAgICBjb25zdCBzeSA9IHkgLSAoeSAlIDIwKTtcclxuICAgIHJldHVybiBBcnJheS5mcm9tKHtsZW5ndGg6IDIwfSwgKHgsIGkpID0+IHN5ICsgaSk7XHJcbiAgfVxyXG4gIGdldEFjdGl2ZU1vbnRoKCk6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLm1vbnRoc1twYXJzZUludCh0aGlzLmFjdGl2ZS5mb3JtYXQoJ2pNJyksIDEwKSAtIDFdO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,104 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as moment from 'jalali-moment';
3
+ import { InputClass } from '../../../classes/form.class';
4
+ import { InputError, InputType } from '../../../classes/enum.class';
5
+ export class FormDatetimeComponent {
6
+ constructor() {
7
+ this.changeIndex = new EventEmitter();
8
+ }
9
+ ngOnInit() {
10
+ this.date = new InputClass(this.inp.environment, this.inp.l, 'Date', null, InputType.Date);
11
+ this.time = new InputClass(this.inp.environment, this.inp.l, 'Time', null, InputType.Time);
12
+ this.date.displayLabel = this.time.displayLabel = false;
13
+ if (this.inp.value) {
14
+ this.inp.setValue(this.inp.value, false);
15
+ }
16
+ this.inp.setValue = (v) => {
17
+ if (v === null) {
18
+ this.inp.clear();
19
+ return;
20
+ }
21
+ else if (typeof v === 'string') {
22
+ v = parseInt(v.substring(6, v.length - 2), 10);
23
+ }
24
+ const m = moment(v).locale('fa');
25
+ this.date.setValue(m, false);
26
+ this.time.setValue({ Hours: m.hours(), Minutes: m.minutes() }, false);
27
+ };
28
+ this.inp.isValid = () => {
29
+ this.inp.value = this.getValue();
30
+ this.inp.error = null;
31
+ this.date.error = null;
32
+ this.time.error = null;
33
+ if (this.inp.required && !this.inp.value) {
34
+ this.inp.error = InputError.Required;
35
+ this.date.error = InputError.Required;
36
+ this.time.error = InputError.Required;
37
+ return false;
38
+ }
39
+ if (!this.inp.required && !this.inp.value) {
40
+ return true;
41
+ }
42
+ if (!moment(this.inp.value, 'jYYYY/jMM/jDD HH:mm').isValid()) {
43
+ this.inp.error = InputError.Invalid;
44
+ this.date.error = InputError.Invalid;
45
+ this.time.error = InputError.Invalid;
46
+ return false;
47
+ }
48
+ return true;
49
+ };
50
+ this.inp.clear = () => {
51
+ if (this.inp.default) {
52
+ this.inp.setValue(this.inp.default, false);
53
+ }
54
+ else {
55
+ this.date.clear();
56
+ this.time.clear();
57
+ }
58
+ };
59
+ this.inp.data = () => {
60
+ return moment(this.getValue(), 'jYYYY/jMM/jDD HH:mm').locale('en').format('YYYY/MM/DD HH:mm');
61
+ };
62
+ this.inp.focus = () => {
63
+ this.date.focus();
64
+ };
65
+ this.inp.focusOut = () => {
66
+ this.date.focusOut();
67
+ };
68
+ }
69
+ changeFocus(p, a) {
70
+ if (p === 'Date') {
71
+ if (a === 'Tab' || a === 'Enter') {
72
+ this.time.focus();
73
+ }
74
+ else if (a === 'ShiftTab' || a === 'ShiftEnter') {
75
+ this.changeIndex.emit('ShiftTab');
76
+ }
77
+ }
78
+ else {
79
+ if (a === 'Tab' || a === 'Enter') {
80
+ this.changeIndex.emit('Tab');
81
+ }
82
+ else if (a === 'ShiftTab' || a === 'ShiftEnter') {
83
+ this.date.focus();
84
+ }
85
+ }
86
+ }
87
+ getValue() {
88
+ return !this.date.value || !this.time.value ? null : `${this.date.value} ${this.time.value}`;
89
+ }
90
+ }
91
+ FormDatetimeComponent.decorators = [
92
+ { type: Component, args: [{
93
+ selector: 'lib-form-datetime',
94
+ template: "<div [id]=\"inp.name + 'Input'\" [style]=\"inp.style\" [className]=\"inp.class + ' form-input-con datetime' + (inp.error == null ? '' : ' error') + (inp.disabled ? ' disabled' : '')\">\r\n <div class=\"form-input\">\r\n <div *ngIf=\"inp.displayLabel\" (click)=\"this.date.focus()\" class=\"label\"><i *ngIf=\"inp.required\" class=\"fas fa-star-of-life required-icon\"></i>{{inp.getLabel()}}</div>\r\n <div class=\"w-100 p-r\">\r\n <i (click)=\"this.date.focus()\" *ngIf=\"inp.icon != null || inp.loading\" #inputIcon [className]=\"(inp.loading ? 'fad fa-spin fa-spinner' : inp.icon) + ' icon'\"></i>\r\n <i *ngIf=\"inp.withClear && (date.value || time.value)\" (click)=\"inp.clear()\" class=\"fad fa-eraser clear-icon\"></i>\r\n <lib-form-date (changeIndex)=\"changeFocus('Date', $event)\" [inp]=\"date\"></lib-form-date>\r\n <lib-form-time (changeIndex)=\"changeFocus('Time', $event)\" [inp]=\"time\"></lib-form-time>\r\n </div>\r\n </div>\r\n</div>\r\n",
95
+ styles: [".form-input-con.datetime{padding:0 15px}.form-input-con.datetime,.form-input-con.datetime .form-input{float:right;position:relative;width:100%}.form-input-con.datetime .form-input .label{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:default;direction:rtl;float:right;font-size:12px;height:20px;line-height:20px;margin-bottom:3px;padding:0 10px;text-align:right;width:100%}.form-input-con.datetime.error .form-input .label{color:var(--red);font-size:10px}.form-input-con.datetime .form-input .label .required-icon{color:var(--red);font-size:9px;height:20px;line-height:20px;text-align:center;width:20px}.form-input-con.datetime .form-input .control{background-color:#fff;background-image:none;border:none;border:var(--border-input);border-radius:5px;color:var(--black);display:block;font-family:Vazir;font-size:11px;height:35px;padding:5px 35px;position:relative;text-align:center;width:100%;z-index:2}.form-input-con.datetime .form-input .control:focus{border-radius:5px 5px 5px 0}.form-input-con.datetime.top .form-input .control:focus{border-radius:0 5px 5px 5px}.form-input-con.datetime .form-input .control:focus,.form-input-con.datetime .form-input:hover .control{border:var(--border-input-dark);outline:none}.form-input-con.datetime .form-input i.icon{color:var(--icon);cursor:text;font-size:13px;left:0;line-height:35px}.form-input-con.datetime .form-input i.clear-icon,.form-input-con.datetime .form-input i.icon{bottom:0;height:35px;position:absolute;text-align:center;transition:all .35s ease-in-out;width:35px;z-index:3}.form-input-con.datetime .form-input i.clear-icon{color:var(--red);cursor:pointer;font-size:14px;line-height:38px;right:0}.form-input-con.datetime.disabled .form-input,.form-input-con.datetime.disabled .form-input .label,.form-input-con.datetime.disabled .form-input i.icon{cursor:default;filter:blur(.5px);opacity:.7;pointer-events:none}::ng-deep .form-input-con.datetime .form-input .form-input-con.date .form-input .control{padding:5px 15px 5px 35px!important;padding:5px 15px!important}::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.date .form-input .control,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.date .form-input .label,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.date .form-input i.icon,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.time .form-input .control,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.time .form-input .label,::ng-deep .form-input-con.datetime.disabled .form-input .form-input-con.time .form-input i.icon{cursor:default;filter:blur(.5px);opacity:.7;pointer-events:none}.form-input-con.datetime.error .form-input .control,.form-input-con.datetime.error .form-input i.icon{color:var(--red-cc)}.form-input-con.datetime.error .form-input .control{border:var(--border-input-red)}.form-input-con.datetime.error .form-input .control:focus,.form-input-con.datetime.error .form-input:hover .control{border:var(--border-input-red-dark)}::ng-deep .form-input-con.datetime .form-input .form-input-con.date{float:left;padding:0;width:60%}::ng-deep .form-input-con.datetime .form-input .form-input-con.time{float:right;padding:0;width:40%}::ng-deep .form-input-con.datetime .form-input .form-input-con.date .form-input .control{border-radius:5px 0 0 5px!important}::ng-deep .form-input-con.datetime .form-input .form-input-con.time .form-input .control{border-left:unset!important;border-radius:0 5px 5px 0!important}"]
96
+ },] }
97
+ ];
98
+ FormDatetimeComponent.ctorParameters = () => [];
99
+ FormDatetimeComponent.propDecorators = {
100
+ inp: [{ type: Input }],
101
+ inForm: [{ type: Input }],
102
+ changeIndex: [{ type: Output }]
103
+ };
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5kYXRldGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovUHJvamVjdHMvUHNUb29sa2l0L1VJL3Byb2plY3RzL3BzLXRvb2xraXQtdWkvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZm9ybS9kYXRldGltZS9mb3JtLmRhdGV0aW1lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsVUFBVSxFQUFFLFNBQVMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBT2xFLE1BQU0sT0FBTyxxQkFBcUI7SUFTaEM7UUFIQSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFJekMsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFL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QUFDLEtBQUssWUFBWSxFQUFDO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ25CO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvRixDQUFDOzs7WUEzRkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLHErQkFBNkM7O2FBRTlDOzs7O2tCQUVFLEtBQUs7cUJBRUwsS0FBSzswQkFFTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnamFsYWxpLW1vbWVudCc7XHJcbmltcG9ydCB7SW5wdXRDbGFzc30gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9mb3JtLmNsYXNzJztcclxuaW1wb3J0IHtJbnB1dEVycm9yLCBJbnB1dFR5cGV9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW51bS5jbGFzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWRhdGV0aW1lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS5kYXRldGltZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS5kYXRldGltZS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1EYXRldGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKVxyXG4gIGlucDogSW5wdXRDbGFzcztcclxuICBASW5wdXQoKVxyXG4gIGluRm9ybTogYm9vbGVhbjtcclxuICBAT3V0cHV0KClcclxuICBjaGFuZ2VJbmRleCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIGRhdGU6IElucHV0Q2xhc3M7XHJcbiAgdGltZTogSW5wdXRDbGFzcztcclxuICBjb25zdHJ1Y3Rvcigpe1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lke1xyXG4gICAgdGhpcy5kYXRlID0gbmV3IElucHV0Q2xhc3ModGhpcy5pbnAuZW52aXJvbm1lbnQsIHRoaXMuaW5wLmwsICdEYXRlJywgbnVsbCwgSW5wdXRUeXBlLkRhdGUpO1xyXG4gICAgdGhpcy50aW1lID0gbmV3IElucHV0Q2xhc3ModGhpcy5pbnAuZW52aXJvbm1lbnQsIHRoaXMuaW5wLmwsICdUaW1lJywgbnVsbCwgSW5wdXRUeXBlLlRpbWUpO1xyXG4gICAgdGhpcy5kYXRlLmRpc3BsYXlMYWJlbCA9IHRoaXMudGltZS5kaXNwbGF5TGFiZWwgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmlucC52YWx1ZSl7XHJcbiAgICAgIHRoaXMuaW5wLnNldFZhbHVlKHRoaXMuaW5wLnZhbHVlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlucC5zZXRWYWx1ZSA9ICh2KSA9PiB7XHJcbiAgICAgIGlmICh2ID09PSBudWxsKXtcclxuICAgICAgICB0aGlzLmlucC5jbGVhcigpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICB2ID0gcGFyc2VJbnQodi5zdWJzdHJpbmcoNiwgdi5sZW5ndGggLSAyKSwgMTApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG0gPSBtb21lbnQodikubG9jYWxlKCdmYScpO1xyXG4gICAgICB0aGlzLmRhdGUuc2V0VmFsdWUobSwgZmFsc2UpO1xyXG4gICAgICB0aGlzLnRpbWUuc2V0VmFsdWUoe0hvdXJzOiBtLmhvdXJzKCksIE1pbnV0ZXM6IG0ubWludXRlcygpfSwgZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmlzVmFsaWQgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuaW5wLnZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xyXG4gICAgICB0aGlzLmlucC5lcnJvciA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGF0ZS5lcnJvciA9IG51bGw7XHJcbiAgICAgIHRoaXMudGltZS5lcnJvciA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmlucC5yZXF1aXJlZCAmJiAhdGhpcy5pbnAudmFsdWUpIHtcclxuICAgICAgICB0aGlzLmlucC5lcnJvciA9IElucHV0RXJyb3IuUmVxdWlyZWQ7XHJcbiAgICAgICAgdGhpcy5kYXRlLmVycm9yID0gSW5wdXRFcnJvci5SZXF1aXJlZDtcclxuICAgICAgICB0aGlzLnRpbWUuZXJyb3IgPSBJbnB1dEVycm9yLlJlcXVpcmVkO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuaW5wLnJlcXVpcmVkICYmICF0aGlzLmlucC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghbW9tZW50KHRoaXMuaW5wLnZhbHVlLCAnallZWVkvak1NL2pERCBISDptbScpLmlzVmFsaWQoKSkge1xyXG4gICAgICAgIHRoaXMuaW5wLmVycm9yID0gSW5wdXRFcnJvci5JbnZhbGlkO1xyXG4gICAgICAgIHRoaXMuZGF0ZS5lcnJvciA9IElucHV0RXJyb3IuSW52YWxpZDtcclxuICAgICAgICB0aGlzLnRpbWUuZXJyb3IgPSBJbnB1dEVycm9yLkludmFsaWQ7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmNsZWFyID0gKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5pbnAuZGVmYXVsdCl7XHJcbiAgICAgICAgdGhpcy5pbnAuc2V0VmFsdWUodGhpcy5pbnAuZGVmYXVsdCwgZmFsc2UpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLmRhdGUuY2xlYXIoKTtcclxuICAgICAgICB0aGlzLnRpbWUuY2xlYXIoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuaW5wLmRhdGEgPSAoKSA9PiB7XHJcbiAgICAgIHJldHVybiBtb21lbnQodGhpcy5nZXRWYWx1ZSgpLCAnallZWVkvak1NL2pERCBISDptbScpLmxvY2FsZSgnZW4nKS5mb3JtYXQoJ1lZWVkvTU0vREQgSEg6bW0nKTtcclxuICAgIH07XHJcbiAgICB0aGlzLmlucC5mb2N1cyA9ICgpID0+IHtcclxuICAgICAgdGhpcy5kYXRlLmZvY3VzKCk7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5pbnAuZm9jdXNPdXQgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0ZS5mb2N1c091dCgpO1xyXG4gICAgfTtcclxuICB9XHJcbiAgY2hhbmdlRm9jdXMocCwgYSk6IHZvaWR7XHJcbiAgICBpZiAocCA9PT0gJ0RhdGUnKXtcclxuICAgICAgaWYgKGEgPT09ICdUYWInIHx8IGEgPT09ICdFbnRlcicpe1xyXG4gICAgICAgIHRoaXMudGltZS5mb2N1cygpO1xyXG4gICAgICB9IGVsc2UgaWYgKGEgPT09ICdTaGlmdFRhYicgfHwgYSA9PT0gJ1NoaWZ0RW50ZXInKXtcclxuICAgICAgICB0aGlzLmNoYW5nZUluZGV4LmVtaXQoJ1NoaWZ0VGFiJyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChhID09PSAnVGFiJyB8fCBhID09PSAnRW50ZXInKXtcclxuICAgICAgICB0aGlzLmNoYW5nZUluZGV4LmVtaXQoJ1RhYicpO1xyXG4gICAgICB9IGVsc2UgaWYgKGEgPT09ICdTaGlmdFRhYicgfHwgYSA9PT0gJ1NoaWZ0RW50ZXInKXtcclxuICAgICAgICB0aGlzLmRhdGUuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBnZXRWYWx1ZSgpOiBzdHJpbmd7XHJcbiAgICByZXR1cm4gIXRoaXMuZGF0ZS52YWx1ZSB8fCAhdGhpcy50aW1lLnZhbHVlID8gbnVsbCA6IGAke3RoaXMuZGF0ZS52YWx1ZX0gJHt0aGlzLnRpbWUudmFsdWV9YDtcclxuICB9XHJcbn1cclxuIl19