@datarailsshared/datarailsshared 1.4.195-rocket → 1.4.202

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 (360) hide show
  1. package/_datarailsshared.styles.css +4 -4
  2. package/assets/styles/_styles.scss +2 -2
  3. package/assets/styles/mixins.scss +7 -0
  4. package/bundles/datarailsshared-datarailsshared.umd.js +8041 -0
  5. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -0
  6. package/datarailsshared-datarailsshared-1.4.202.tgz +0 -0
  7. package/datarailsshared-datarailsshared.d.ts +34 -0
  8. package/datarailsshared-datarailsshared.metadata.json +1 -0
  9. package/esm2015/datarailsshared-datarailsshared.js +35 -0
  10. package/esm2015/lib/date-tags/date-tag.component.js +73 -0
  11. package/esm2015/lib/date-tags/date-tag.module.js +36 -0
  12. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +77 -0
  13. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +153 -0
  14. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +80 -0
  15. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +105 -0
  16. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +84 -0
  17. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +78 -0
  18. package/esm2015/lib/dr-accordion/accordion-item-body.component.js +55 -0
  19. package/esm2015/lib/dr-accordion/accordion-item-header.component.js +77 -0
  20. package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -0
  21. package/esm2015/lib/dr-accordion/accordion.component.js +43 -0
  22. package/esm2015/lib/dr-accordion/accordion.module.js +23 -0
  23. package/esm2015/lib/dr-avatar/dr-avatar.component.js +44 -0
  24. package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -0
  25. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +16 -0
  26. package/esm2015/lib/dr-badge-status/dr-badge-status.component.js +25 -0
  27. package/esm2015/lib/dr-badge-status/dr-badge-status.module.js +20 -0
  28. package/esm2015/lib/dr-chat/chat.component.js +119 -0
  29. package/esm2015/lib/dr-chat/chat.module.js +41 -0
  30. package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +155 -0
  31. package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +71 -0
  32. package/{esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs → esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js} +21 -21
  33. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +23 -0
  34. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +47 -0
  35. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +18 -0
  36. package/esm2015/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.js +87 -0
  37. package/esm2015/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.js +15 -0
  38. package/esm2015/lib/dr-details-list/dr-details-list.component.js +65 -0
  39. package/esm2015/lib/dr-details-list/dr-details-list.module.js +16 -0
  40. package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +70 -0
  41. package/esm2015/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.js +92 -0
  42. package/esm2015/lib/dr-dialog/dialog.module.js +34 -0
  43. package/esm2015/lib/dr-dialog/interfaces/dialog-data.js +25 -0
  44. package/esm2015/lib/dr-dialog/services/dialog.service.js +78 -0
  45. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -0
  46. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +104 -0
  47. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +114 -0
  48. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +104 -0
  49. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -0
  50. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -0
  51. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.component.js +103 -0
  52. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.module.js +19 -0
  53. package/esm2015/lib/dr-error/dr-error.component.js +64 -0
  54. package/esm2015/lib/dr-error/dr-error.module.js +22 -0
  55. package/esm2015/lib/dr-inputs/button/button.component.js +39 -0
  56. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +65 -0
  57. package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +47 -0
  58. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +216 -0
  59. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +180 -0
  60. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +183 -0
  61. package/esm2015/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.js +12 -0
  62. package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +194 -0
  63. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +194 -0
  64. package/esm2015/lib/dr-inputs/dr-inputs.module.js +66 -0
  65. package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +29 -0
  66. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +119 -0
  67. package/esm2015/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.js +74 -0
  68. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +68 -0
  69. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +63 -0
  70. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +73 -0
  71. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +157 -0
  72. package/esm2015/lib/dr-layout/dr-layout-body.component.js +13 -0
  73. package/esm2015/lib/dr-layout/dr-layout-header.component.js +17 -0
  74. package/esm2015/lib/dr-layout/dr-layout.component.js +14 -0
  75. package/esm2015/lib/dr-layout/dr-layout.module.js +20 -0
  76. package/esm2015/lib/dr-popover/dr-popover-ref.js +20 -0
  77. package/esm2015/lib/dr-popover/dr-popover.component.js +106 -0
  78. package/esm2015/lib/dr-popover/dr-popover.directive.js +84 -0
  79. package/esm2015/lib/dr-popover/dr-popover.module.js +23 -0
  80. package/esm2015/lib/dr-popover/dr-popover.service.js +106 -0
  81. package/esm2015/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.js +102 -0
  82. package/esm2015/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.js +74 -0
  83. package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +73 -0
  84. package/esm2015/lib/dr-scenario/dr-scenario.module.js +28 -0
  85. package/esm2015/lib/dr-scenario/services/scenario.service.js +167 -0
  86. package/esm2015/lib/dr-spinner/dr-spinner.component.js +18 -0
  87. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +56 -0
  88. package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -0
  89. package/esm2015/lib/dr-tabs/dr-tab.component.js +26 -0
  90. package/esm2015/lib/dr-tabs/dr-tabs.component.js +35 -0
  91. package/esm2015/lib/dr-tabs/dr-tabs.module.js +32 -0
  92. package/esm2015/lib/dr-tags/dr-tag.component.js +177 -0
  93. package/esm2015/lib/dr-tags/dr-tag.module.js +24 -0
  94. package/esm2015/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.js +19 -0
  95. package/esm2015/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.js +18 -0
  96. package/esm2015/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.js +20 -0
  97. package/esm2015/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.js +34 -0
  98. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +40 -0
  99. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +147 -0
  100. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +35 -0
  101. package/esm2015/lib/dr-treeview/components/treeview/treeview.component.js +210 -0
  102. package/esm2015/lib/dr-treeview/components/treeview-item/treeview-item.component.js +58 -0
  103. package/esm2015/lib/dr-treeview/dr-tree-view.module.js +38 -0
  104. package/esm2015/lib/dr-treeview/helpers/treeview-event-parser.js +97 -0
  105. package/esm2015/lib/dr-treeview/models/treeview-config.js +22 -0
  106. package/esm2015/lib/dr-treeview/models/treeview-i18n.js +42 -0
  107. package/esm2015/lib/dr-treeview/models/treeview-item.js +155 -0
  108. package/esm2015/lib/dr-treeview/pipes/treeview.pipe.js +17 -0
  109. package/esm2015/lib/list-tags/list-tag.component.js +37 -0
  110. package/esm2015/lib/list-tags/list-tag.module.js +23 -0
  111. package/esm2015/lib/models/chat.js +36 -0
  112. package/esm2015/lib/models/datePicker.js +73 -0
  113. package/esm2015/lib/models/popover.js +27 -0
  114. package/esm2015/lib/stepper/stepper.component.js +55 -0
  115. package/esm2015/lib/stepper/stepper.module.js +17 -0
  116. package/esm2015/public-api.js +93 -0
  117. package/fesm2015/datarailsshared-datarailsshared.js +6885 -0
  118. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -0
  119. package/lib/date-tags/date-tag.component.d.ts +16 -4
  120. package/lib/date-tags/date-tag.module.d.ts +2 -19
  121. package/lib/date-tags/day-tag/day-tag.component.d.ts +1 -4
  122. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +2 -5
  123. package/lib/date-tags/month-tag/month-tag.component.d.ts +1 -4
  124. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +1 -4
  125. package/lib/date-tags/week-tag/week-tag.component.d.ts +1 -4
  126. package/lib/date-tags/year-tag/year-tag.component.d.ts +1 -4
  127. package/lib/dr-accordion/accordion-item-body.component.d.ts +0 -3
  128. package/lib/dr-accordion/accordion-item-header.component.d.ts +0 -3
  129. package/lib/dr-accordion/accordion-item.component.d.ts +0 -3
  130. package/lib/dr-accordion/accordion.component.d.ts +0 -3
  131. package/lib/dr-accordion/accordion.module.d.ts +0 -9
  132. package/lib/dr-avatar/dr-avatar.component.d.ts +0 -3
  133. package/lib/dr-avatar/dr-avatar.module.d.ts +0 -9
  134. package/lib/dr-avatar/dr-avatar.pipe.d.ts +0 -3
  135. package/lib/dr-badge-status/dr-badge-status.component.d.ts +0 -3
  136. package/lib/dr-badge-status/dr-badge-status.module.d.ts +0 -7
  137. package/lib/dr-chat/chat.component.d.ts +0 -3
  138. package/lib/dr-chat/chat.module.d.ts +0 -17
  139. package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +0 -3
  140. package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +0 -3
  141. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +0 -3
  142. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +0 -3
  143. package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +0 -3
  144. package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +0 -3
  145. package/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.d.ts +0 -3
  146. package/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.d.ts +0 -3
  147. package/lib/dr-details-list/dr-details-list.component.d.ts +0 -3
  148. package/lib/dr-details-list/dr-details-list.module.d.ts +0 -6
  149. package/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.d.ts +1 -4
  150. package/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.d.ts +1 -4
  151. package/lib/dr-dialog/dialog.module.d.ts +0 -12
  152. package/lib/dr-dialog/interfaces/dialog-data.d.ts +7 -7
  153. package/lib/dr-dialog/services/dialog.service.d.ts +1 -4
  154. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +0 -3
  155. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +0 -3
  156. package/lib/dr-dropdown/dr-dropdown.component.d.ts +0 -3
  157. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +0 -3
  158. package/lib/dr-dropdown/dr-dropdown.module.d.ts +0 -10
  159. package/lib/dr-dropdown/dr-dropdown.service.d.ts +0 -3
  160. package/lib/dr-dynamic-tag/dr-dynamic-tag.component.d.ts +0 -3
  161. package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +0 -8
  162. package/lib/dr-error/dr-error.component.d.ts +0 -3
  163. package/lib/dr-error/dr-error.module.d.ts +0 -8
  164. package/lib/dr-inputs/button/button.component.d.ts +1 -4
  165. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +0 -3
  166. package/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.d.ts +0 -3
  167. package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +0 -3
  168. package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +0 -3
  169. package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +8 -4
  170. package/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.d.ts +2 -4
  171. package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +0 -3
  172. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +0 -3
  173. package/lib/dr-inputs/dr-inputs.module.d.ts +0 -25
  174. package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +0 -3
  175. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +0 -3
  176. package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +0 -3
  177. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +0 -3
  178. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +0 -3
  179. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +0 -3
  180. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +0 -3
  181. package/lib/dr-layout/dr-layout-body.component.d.ts +0 -3
  182. package/lib/dr-layout/dr-layout-header.component.d.ts +0 -3
  183. package/lib/dr-layout/dr-layout.component.d.ts +0 -3
  184. package/lib/dr-layout/dr-layout.module.d.ts +0 -8
  185. package/lib/dr-popover/dr-popover.component.d.ts +4 -8
  186. package/lib/dr-popover/dr-popover.directive.d.ts +0 -3
  187. package/lib/dr-popover/dr-popover.module.d.ts +0 -7
  188. package/lib/dr-popover/dr-popover.service.d.ts +0 -3
  189. package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +0 -3
  190. package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +0 -3
  191. package/lib/dr-scenario/dr-scenario.module.d.ts +0 -10
  192. package/lib/dr-scenario/interfaces/scenario.d.ts +3 -3
  193. package/lib/dr-scenario/services/scenario.service.d.ts +0 -3
  194. package/lib/dr-spinner/dr-spinner.component.d.ts +0 -3
  195. package/lib/dr-spinner/dr-spinner.directive.d.ts +0 -3
  196. package/lib/dr-spinner/dr-spinner.module.d.ts +0 -7
  197. package/lib/dr-tabs/dr-tab.component.d.ts +0 -3
  198. package/lib/dr-tabs/dr-tabs.component.d.ts +0 -3
  199. package/lib/dr-tabs/dr-tabs.module.d.ts +0 -11
  200. package/lib/dr-tags/dr-tag.component.d.ts +0 -3
  201. package/lib/dr-tags/dr-tag.module.d.ts +0 -9
  202. package/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.d.ts +0 -3
  203. package/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.d.ts +0 -3
  204. package/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.d.ts +0 -3
  205. package/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.d.ts +0 -3
  206. package/lib/dr-tooltip/dr-tooltip.component.d.ts +1 -4
  207. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +0 -3
  208. package/lib/dr-tooltip/dr-tooltip.module.d.ts +0 -11
  209. package/lib/dr-tooltip/interfaces/tooltip-component-context.d.ts +1 -1
  210. package/lib/dr-treeview/components/treeview/treeview.component.d.ts +0 -3
  211. package/lib/dr-treeview/components/treeview-item/treeview-item.component.d.ts +0 -3
  212. package/lib/dr-treeview/dr-tree-view.module.d.ts +0 -9
  213. package/lib/dr-treeview/helpers/treeview-event-parser.d.ts +0 -9
  214. package/lib/dr-treeview/models/treeview-config.d.ts +0 -3
  215. package/lib/dr-treeview/models/treeview-i18n.d.ts +0 -5
  216. package/lib/dr-treeview/pipes/treeview.pipe.d.ts +0 -3
  217. package/lib/list-tags/list-tag.component.d.ts +0 -3
  218. package/lib/list-tags/list-tag.module.d.ts +0 -8
  219. package/lib/models/chat.d.ts +2 -2
  220. package/lib/models/datePicker.d.ts +3 -10
  221. package/lib/models/dropdown.d.ts +1 -1
  222. package/lib/models/popover.d.ts +1 -1
  223. package/lib/models/serverTags.d.ts +4 -4
  224. package/lib/stepper/interfaces/stepper.d.ts +1 -1
  225. package/lib/stepper/stepper.component.d.ts +0 -3
  226. package/lib/stepper/stepper.module.d.ts +0 -7
  227. package/package.json +15 -27
  228. package/public-api.d.ts +0 -27
  229. package/datarailsshared-datarailsshared-1.4.195-rocket.tgz +0 -0
  230. package/esm2022/datarailsshared-datarailsshared.mjs +0 -5
  231. package/esm2022/lib/date-tags/any-tag.component.mjs +0 -45
  232. package/esm2022/lib/date-tags/date-tag.component.mjs +0 -48
  233. package/esm2022/lib/date-tags/date-tag.module.mjs +0 -66
  234. package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +0 -83
  235. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +0 -161
  236. package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +0 -88
  237. package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +0 -106
  238. package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +0 -90
  239. package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +0 -84
  240. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +0 -94
  241. package/esm2022/lib/directives/click-outside/click-outside.module.mjs +0 -18
  242. package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +0 -59
  243. package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +0 -109
  244. package/esm2022/lib/dr-accordion/accordion-item.component.mjs +0 -142
  245. package/esm2022/lib/dr-accordion/accordion.component.mjs +0 -41
  246. package/esm2022/lib/dr-accordion/accordion.module.mjs +0 -34
  247. package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +0 -48
  248. package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +0 -37
  249. package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +0 -20
  250. package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +0 -30
  251. package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +0 -27
  252. package/esm2022/lib/dr-chat/chat.component.mjs +0 -147
  253. package/esm2022/lib/dr-chat/chat.module.mjs +0 -68
  254. package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +0 -169
  255. package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +0 -108
  256. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +0 -24
  257. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +0 -57
  258. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +0 -23
  259. package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +0 -89
  260. package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +0 -13
  261. package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +0 -78
  262. package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +0 -21
  263. package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +0 -79
  264. package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +0 -102
  265. package/esm2022/lib/dr-dialog/dialog.module.mjs +0 -51
  266. package/esm2022/lib/dr-dialog/interfaces/dialog-data.mjs +0 -25
  267. package/esm2022/lib/dr-dialog/services/dialog.service.mjs +0 -78
  268. package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +0 -16
  269. package/esm2022/lib/dr-dropdown/dr-dropdown-position.directive.mjs +0 -108
  270. package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +0 -124
  271. package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +0 -125
  272. package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +0 -49
  273. package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +0 -26
  274. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +0 -119
  275. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +0 -28
  276. package/esm2022/lib/dr-error/dr-error.component.mjs +0 -69
  277. package/esm2022/lib/dr-error/dr-error.module.mjs +0 -31
  278. package/esm2022/lib/dr-inputs/button/button.component.mjs +0 -70
  279. package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +0 -67
  280. package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +0 -67
  281. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +0 -233
  282. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +0 -194
  283. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +0 -194
  284. package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +0 -16
  285. package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +0 -196
  286. package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +0 -232
  287. package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +0 -108
  288. package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +0 -32
  289. package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +0 -182
  290. package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +0 -82
  291. package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +0 -77
  292. package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +0 -69
  293. package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +0 -82
  294. package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +0 -180
  295. package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +0 -16
  296. package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +0 -24
  297. package/esm2022/lib/dr-layout/dr-layout.component.mjs +0 -13
  298. package/esm2022/lib/dr-layout/dr-layout.module.mjs +0 -29
  299. package/esm2022/lib/dr-popover/dr-popover-ref.mjs +0 -23
  300. package/esm2022/lib/dr-popover/dr-popover.component.mjs +0 -141
  301. package/esm2022/lib/dr-popover/dr-popover.directive.mjs +0 -115
  302. package/esm2022/lib/dr-popover/dr-popover.module.mjs +0 -30
  303. package/esm2022/lib/dr-popover/dr-popover.service.mjs +0 -110
  304. package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +0 -110
  305. package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +0 -85
  306. package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +0 -81
  307. package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +0 -41
  308. package/esm2022/lib/dr-scenario/services/scenario.service.mjs +0 -166
  309. package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +0 -18
  310. package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +0 -66
  311. package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +0 -23
  312. package/esm2022/lib/dr-tabs/dr-tab.component.mjs +0 -42
  313. package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +0 -51
  314. package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +0 -49
  315. package/esm2022/lib/dr-tags/dr-tag.component.mjs +0 -201
  316. package/esm2022/lib/dr-tags/dr-tag.module.mjs +0 -35
  317. package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +0 -20
  318. package/esm2022/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.mjs +0 -17
  319. package/esm2022/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.mjs +0 -19
  320. package/esm2022/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.mjs +0 -20
  321. package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +0 -53
  322. package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +0 -165
  323. package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +0 -48
  324. package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +0 -224
  325. package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +0 -62
  326. package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +0 -48
  327. package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +0 -103
  328. package/esm2022/lib/dr-treeview/models/treeview-config.mjs +0 -23
  329. package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +0 -47
  330. package/esm2022/lib/dr-treeview/models/treeview-item.mjs +0 -158
  331. package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +0 -21
  332. package/esm2022/lib/list-tags/list-tag.component.mjs +0 -45
  333. package/esm2022/lib/list-tags/list-tag.module.mjs +0 -34
  334. package/esm2022/lib/models/chat.mjs +0 -49
  335. package/esm2022/lib/models/datePicker.mjs +0 -71
  336. package/esm2022/lib/models/popover.mjs +0 -27
  337. package/esm2022/lib/stepper/stepper.component.mjs +0 -66
  338. package/esm2022/lib/stepper/stepper.module.mjs +0 -24
  339. package/esm2022/public-api.mjs +0 -120
  340. package/fesm2022/datarailsshared-datarailsshared.mjs +0 -7879
  341. package/fesm2022/datarailsshared-datarailsshared.mjs.map +0 -1
  342. package/index.d.ts +0 -5
  343. package/lib/date-tags/any-tag.component.d.ts +0 -20
  344. package/lib/directives/click-outside/click-outside.directive.d.ts +0 -23
  345. package/lib/directives/click-outside/click-outside.module.d.ts +0 -8
  346. /package/{esm2022/lib/dr-inputs/dr-toggle-button/toggle-button-mode.mjs → esm2015/lib/dr-inputs/dr-toggle-button/toggle-button-mode.js} +0 -0
  347. /package/{esm2022/lib/dr-scenario/interfaces/scenario.mjs → esm2015/lib/dr-scenario/interfaces/scenario.js} +0 -0
  348. /package/{esm2022/lib/dr-tooltip/enums/tooltip-position.enum.mjs → esm2015/lib/dr-tooltip/enums/tooltip-position.enum.js} +0 -0
  349. /package/{esm2022/lib/dr-tooltip/interfaces/tooltip-component-context.mjs → esm2015/lib/dr-tooltip/interfaces/tooltip-component-context.js} +0 -0
  350. /package/{esm2022/lib/dr-treeview/helpers/treeview-helper.mjs → esm2015/lib/dr-treeview/helpers/treeview-helper.js} +0 -0
  351. /package/{esm2022/lib/dr-treeview/models/treeview-header-template-context.mjs → esm2015/lib/dr-treeview/models/treeview-header-template-context.js} +0 -0
  352. /package/{esm2022/lib/dr-treeview/models/treeview-item-template-context.mjs → esm2015/lib/dr-treeview/models/treeview-item-template-context.js} +0 -0
  353. /package/{esm2022/lib/models/badgeStatus.mjs → esm2015/lib/models/badgeStatus.js} +0 -0
  354. /package/{esm2022/lib/models/constants.mjs → esm2015/lib/models/constants.js} +0 -0
  355. /package/{esm2022/lib/models/dropdown.mjs → esm2015/lib/models/dropdown.js} +0 -0
  356. /package/{esm2022/lib/models/serverTags.mjs → esm2015/lib/models/serverTags.js} +0 -0
  357. /package/{esm2022/lib/models/spinnerOptions.mjs → esm2015/lib/models/spinnerOptions.js} +0 -0
  358. /package/{esm2022/lib/models/validationError.mjs → esm2015/lib/models/validationError.js} +0 -0
  359. /package/{esm2022/lib/stepper/interfaces/stepper.mjs → esm2015/lib/stepper/interfaces/stepper.js} +0 -0
  360. /package/{esm2022/lib/utils/dr-shared-utils.mjs → esm2015/lib/utils/dr-shared-utils.js} +0 -0
@@ -1,83 +0,0 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
2
- import { AnyTagComponent } from '../any-tag.component';
3
- import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
4
- import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
5
- import * as moment from 'moment';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
9
- const DAY_FORMATS = {
10
- parse: {
11
- dateInput: 'DD-MM-YYYY',
12
- },
13
- display: {
14
- dateInput: 'DD.MM.YYYY',
15
- monthYearLabel: 'MMMM YYYY',
16
- dateA11yLabel: 'LL',
17
- monthYearA11yLabel: 'MMMM YYYY'
18
- },
19
- };
20
- export class DayTagComponent extends AnyTagComponent {
21
- get isLocked() {
22
- return this.date ? !this.dateFilter(moment.unix(this.date)) : false;
23
- }
24
- lockedDate = [];
25
- date;
26
- constructor() {
27
- super();
28
- }
29
- initDate() {
30
- this.date = this.defaultValue || moment().unix();
31
- this.dateObj.date = this.date;
32
- }
33
- initName() {
34
- if (!this.name) {
35
- this.name = 'Day';
36
- }
37
- }
38
- chosenTagHandler(value) {
39
- const date = moment.unix(value);
40
- const resultTag = {
41
- name: this.name,
42
- value: date.unix(),
43
- label: date.format('MM/DD/YYYY'),
44
- locked: !this.dateFilter(date)
45
- };
46
- console.log('resultTag', resultTag);
47
- this.dateChange.emit(resultTag);
48
- }
49
- dateFilter(momentData) {
50
- const date = momentData.date();
51
- return !this.lockedDate.some((timestamp) => {
52
- const lockDate = moment.unix(timestamp);
53
- return lockDate.date() === date;
54
- });
55
- }
56
- ;
57
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DayTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: DayTagComponent, selector: "day-tag", inputs: { lockedDate: "lockedDate" }, host: { properties: { "class.locked": "this.isLocked" } }, providers: [
59
- {
60
- provide: DateAdapter,
61
- useClass: MomentDateAdapter,
62
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
63
- },
64
- { provide: MAT_DATE_FORMATS, useValue: DAY_FORMATS },
65
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"day\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "datepickerFilter"] }] });
66
- }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DayTagComponent, decorators: [{
68
- type: Component,
69
- args: [{ selector: 'day-tag', providers: [
70
- {
71
- provide: DateAdapter,
72
- useClass: MomentDateAdapter,
73
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
74
- },
75
- { provide: MAT_DATE_FORMATS, useValue: DAY_FORMATS },
76
- ], template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"day\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
77
- }], ctorParameters: function () { return []; }, propDecorators: { isLocked: [{
78
- type: HostBinding,
79
- args: ['class.locked']
80
- }], lockedDate: [{
81
- type: Input
82
- }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LXRhZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kYXRlLXRhZ3MvZGF5LXRhZy9kYXktdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9kYXktdGFnL2RheS10YWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hGLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7O0FBRWpDLE1BQU0sV0FBVyxHQUFHO0lBQ2hCLEtBQUssRUFBRTtRQUNILFNBQVMsRUFBRSxZQUFZO0tBQzFCO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFlBQVk7UUFDdkIsY0FBYyxFQUFFLFdBQVc7UUFDM0IsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsV0FBVztLQUNsQztDQUNKLENBQUM7QUFnQkYsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUNoRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVRLFVBQVUsR0FBVSxFQUFFLENBQUM7SUFFaEMsSUFBSSxDQUFDO0lBRUw7UUFDSSxLQUFLLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWE7UUFDMUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBYTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDaEMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7U0FDakMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsVUFBVTtRQUNqQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0IsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQzt1R0E1Q08sZUFBZTsyRkFBZixlQUFlLG1JQVZiO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7Z0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQzthQUMzRDtZQUNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7U0FDdkQsaURDOUJMLHNXQVNBOzsyRkR3QmEsZUFBZTtrQkFkM0IsU0FBUzsrQkFFSSxTQUFTLGFBRVI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLFdBQVc7NEJBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7NEJBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQzt5QkFDM0Q7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtxQkFDdkQ7MEVBS0csUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGNBQWM7Z0JBS2xCLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGVUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBBbnlUYWdDb21wb25lbnQgfSBmcm9tICcuLi9hbnktdGFnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBEQVlfRk9STUFUUyA9IHtcbiAgICBwYXJzZToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdERC1NTS1ZWVlZJyxcbiAgICB9LFxuICAgIGRpc3BsYXk6IHtcbiAgICAgICAgZGF0ZUlucHV0OiAnREQuTU0uWVlZWScsXG4gICAgICAgIG1vbnRoWWVhckxhYmVsOiAnTU1NTSBZWVlZJyxcbiAgICAgICAgZGF0ZUExMXlMYWJlbDogJ0xMJyxcbiAgICAgICAgbW9udGhZZWFyQTExeUxhYmVsOiAnTU1NTSBZWVlZJ1xuICAgIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJ2RheS10YWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHNlbGVjdG9yOiAnZGF5LXRhZycsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF5LXRhZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcbiAgICAgICAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcbiAgICAgICAgICAgIGRlcHM6IFtNQVRfREFURV9MT0NBTEUsIE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlNdLFxuICAgICAgICB9LFxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBEQVlfRk9STUFUUyB9LFxuICAgIF0sXG59KVxuXG5leHBvcnQgY2xhc3MgRGF5VGFnQ29tcG9uZW50IGV4dGVuZHMgQW55VGFnQ29tcG9uZW50IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmxvY2tlZCcpXG4gICAgZ2V0IGlzTG9ja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRlID8gIXRoaXMuZGF0ZUZpbHRlcihtb21lbnQudW5peCh0aGlzLmRhdGUpKSA6IGZhbHNlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XG5cbiAgICBkYXRlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdERhdGUoKSB7XG4gICAgICAgIHRoaXMuZGF0ZSA9IHRoaXMuZGVmYXVsdFZhbHVlIHx8IG1vbWVudCgpLnVuaXgoKTtcbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSB0aGlzLmRhdGU7XG4gICAgfVxuXG4gICAgaW5pdE5hbWUoKSB7XG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnRGF5JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNob3NlblRhZ0hhbmRsZXIodmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBkYXRlID0gbW9tZW50LnVuaXgodmFsdWUpO1xuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IGRhdGUudW5peCgpLFxuICAgICAgICAgICAgbGFiZWw6IGRhdGUuZm9ybWF0KCdNTS9ERC9ZWVlZJyksXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIoZGF0ZSlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2coJ3Jlc3VsdFRhZycsIHJlc3VsdFRhZyk7XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gICAgfVxuXG4gICAgZGF0ZUZpbHRlcihtb21lbnREYXRhKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBtb21lbnREYXRhLmRhdGUoKTtcblxuICAgICAgICByZXR1cm4gIXRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHJldHVybiBsb2NrRGF0ZS5kYXRlKCkgPT09IGRhdGU7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFnLXdyYXBwZXJcIj5cbiAgICA8cCBjbGFzcz1cInRhZ19fbGFiZWxcIj57eyBuYW1lIH19PC9wPlxuICAgIDxkci1kYXRlLXBpY2tlciBmb3JtYXQ9XCJkYXlcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbZGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyLmJpbmQodGhpcylcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaG9zZW5UYWdIYW5kbGVyKCRldmVudClcIj48L2RyLWRhdGUtcGlja2VyPlxuPC9kaXY+XG5cbiJdfQ==
@@ -1,161 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { AnyTagComponent } from '../any-tag.component';
3
- import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
4
- import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
5
- import { find as _find } from 'lodash';
6
- import * as moment from 'moment';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/forms";
9
- import * as i2 from "../../dr-inputs/dr-select/dr-select.component";
10
- import * as i3 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
11
- export class ForecastTagComponent extends AnyTagComponent {
12
- fiscalYearStartsFrom;
13
- fiscalYearBack;
14
- lockedDate = [];
15
- forecastValue = undefined;
16
- isDateEventHappened = false;
17
- forecastTags = [
18
- { value: 0, label: '0+12' },
19
- { value: 1, label: '1+11' },
20
- { value: 2, label: '2+10' },
21
- { value: 3, label: '3+9' },
22
- { value: 4, label: '4+8' },
23
- { value: 5, label: '5+7' },
24
- { value: 6, label: '6+6' },
25
- { value: 7, label: '7+5' },
26
- { value: 8, label: '8+4' },
27
- { value: 9, label: '9+3' },
28
- { value: 10, label: '10+2' },
29
- { value: 11, label: '11+1' }
30
- ];
31
- constructor() {
32
- super();
33
- }
34
- initDate() {
35
- const dateVal = this.defaultValue ? moment.unix(this.defaultValue) : moment();
36
- const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
37
- const fiscal_year_back = this.fiscalYearBack || false;
38
- this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
39
- const fiscal_year = this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, fiscal_year_back);
40
- this.updateYear(fiscal_year, this.forecastValue);
41
- this.updateLockedDate();
42
- }
43
- updateYear(fiscalYear, month) {
44
- const MONTH_DIFF = 1;
45
- this.dateObj.date = fiscalYear
46
- ? moment(`${month + MONTH_DIFF || '01'}/01/${fiscalYear} 12:00:00`, 'MM/DD/YYYY hh:mm:ss').utc().unix()
47
- : moment.utc().unix();
48
- }
49
- updateLockedDate() {
50
- const year = moment.unix(this.dateObj.date).year();
51
- for (const forecastTag of this.forecastTags) {
52
- forecastTag.disabled = this.lockedDate.some((timestamp) => {
53
- const locked = moment.unix(timestamp);
54
- return locked.month() === forecastTag.value && +locked.year() === +year;
55
- });
56
- }
57
- }
58
- initName() {
59
- if (!this.name) {
60
- this.name = 'Forecast (New)';
61
- }
62
- }
63
- getFiscalMonthFromDate(dateObj, fiscal_year_starts_from) {
64
- const all_months = [];
65
- for (let i = fiscal_year_starts_from; i < 13; i++) {
66
- all_months.push(i);
67
- }
68
- for (let i = 1; i < fiscal_year_starts_from; i++) {
69
- all_months.push(i);
70
- }
71
- return all_months.indexOf(dateObj.month() + 1) + 1;
72
- }
73
- getFiscalYearFromDate(dateObj, fiscal_year_starts_from, fiscal_year_back) {
74
- let fiscal_year = dateObj.year();
75
- if (!fiscal_year_back) {
76
- if (dateObj.month() + 1 >= fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
77
- fiscal_year += 1;
78
- }
79
- }
80
- else {
81
- if (dateObj.month() + 1 < fiscal_year_starts_from && fiscal_year_starts_from !== 1) {
82
- fiscal_year -= 1;
83
- }
84
- }
85
- return fiscal_year;
86
- }
87
- changeTagInputHandler(event) {
88
- this.chosenTagHandler();
89
- }
90
- changeYearInputHandler(event) {
91
- this.updateLockedDate();
92
- this.chosenTagHandler();
93
- }
94
- chosenTagHandler() {
95
- if (this.isDateEventHappened)
96
- return;
97
- const month = this.forecastValue;
98
- const year = moment.unix(this.dateObj.date).year();
99
- if (!Number.isNaN(month) && !Number.isNaN(year)) {
100
- const date = new Date(year, month, 1, 12, 0, 0, 0);
101
- const fiscal_year_starts_from = this.fiscalYearStartsFrom || 1;
102
- const fiscal_year_back = this.fiscalYearBack || false;
103
- if (fiscal_year_starts_from !== 1) {
104
- if (!fiscal_year_back) {
105
- date.setMonth(date.getMonth() - 13 + fiscal_year_starts_from);
106
- }
107
- else {
108
- date.setMonth(date.getMonth() - 1 + fiscal_year_starts_from);
109
- }
110
- }
111
- const momentDate = moment.unix(date.getTime() / 1000);
112
- const fiscal_year = this.getFiscalYearFromDate(momentDate, fiscal_year_starts_from, fiscal_year_back);
113
- this.updateYear(fiscal_year, date.getMonth());
114
- this.isDateEventHappened = true;
115
- setTimeout(() => {
116
- this.isDateEventHappened = false;
117
- });
118
- }
119
- const resultTag = {
120
- name: this.name,
121
- value: this.dateObj.date,
122
- label: _find(this.forecastTags, { value: this.forecastValue })?.label,
123
- locked: !this.dateFilter(moment.unix(this.dateObj.date))
124
- };
125
- this.dateChange.emit(resultTag);
126
- }
127
- dateFilter(date) {
128
- const month = this.forecastValue;
129
- const year = date.year();
130
- return !this.lockedDate.some((timestamp) => {
131
- const lockDate = moment.unix(timestamp);
132
- return lockDate.month() === month && lockDate.year() === year;
133
- });
134
- }
135
- ;
136
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ForecastTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
137
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: ForecastTagComponent, selector: "forecast-tag", inputs: { fiscalYearStartsFrom: "fiscalYearStartsFrom", fiscalYearBack: "fiscalYearBack", lockedDate: "lockedDate" }, providers: [
138
- {
139
- provide: DateAdapter,
140
- useClass: MomentDateAdapter,
141
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
142
- }
143
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler($event)\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker format=\"year\"\n [(ngModel)]=\"dateObj.date\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler($event)\"></dr-date-picker>\n </div>\n</div>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrSelectComponent, selector: "dr-select", inputs: ["className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen"], outputs: ["change", "open"] }, { kind: "component", type: i3.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "datepickerFilter"] }] });
144
- }
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ForecastTagComponent, decorators: [{
146
- type: Component,
147
- args: [{ selector: 'forecast-tag', providers: [
148
- {
149
- provide: DateAdapter,
150
- useClass: MomentDateAdapter,
151
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
152
- }
153
- ], template: "<div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler($event)\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker format=\"year\"\n [(ngModel)]=\"dateObj.date\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler($event)\"></dr-date-picker>\n </div>\n</div>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}\n"] }]
154
- }], ctorParameters: function () { return []; }, propDecorators: { fiscalYearStartsFrom: [{
155
- type: Input
156
- }], fiscalYearBack: [{
157
- type: Input
158
- }], lockedDate: [{
159
- type: Input
160
- }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7OztBQWVqQyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZTtJQUM1QyxvQkFBb0IsQ0FBVTtJQUM5QixjQUFjLENBQVc7SUFDekIsVUFBVSxHQUFVLEVBQUUsQ0FBQztJQUVoQyxhQUFhLEdBQXVCLFNBQVMsQ0FBQztJQUM5QyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFFNUIsWUFBWSxHQUFVO1FBQ2xCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1FBQzNCLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFL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QUssSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUFBLENBQUM7dUdBckpPLG9CQUFvQjsyRkFBcEIsb0JBQW9CLDZKQVRsQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7YUFDM0Q7U0FDSixpRENwQkwsbzRCQW9CQTs7MkZER2Esb0JBQW9CO2tCQWJoQyxTQUFTOytCQUVJLGNBQWMsYUFFYjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsV0FBVzs0QkFDcEIsUUFBUSxFQUFFLGlCQUFpQjs0QkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO3lCQUMzRDtxQkFDSjswRUFJUSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGVUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBBbnlUYWdDb21wb25lbnQgfSBmcm9tICcuLi9hbnktdGFnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRMZWdhY3lTZWxlY3RDaGFuZ2UgYXMgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNlbGVjdCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIE1vbWVudERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHsgZmluZCBhcyBfZmluZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICdmb3JlY2FzdC10YWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHNlbGVjdG9yOiAnZm9yZWNhc3QtdGFnJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JlY2FzdC10YWcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICAgICAgICB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsXG4gICAgICAgICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXSxcbiAgICAgICAgfVxuICAgIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBGb3JlY2FzdFRhZ0NvbXBvbmVudCBleHRlbmRzIEFueVRhZ0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZmlzY2FsWWVhclN0YXJ0c0Zyb20/OiBudW1iZXI7XG4gICAgQElucHV0KCkgZmlzY2FsWWVhckJhY2s/OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueVtdID0gW107XG5cbiAgICBmb3JlY2FzdFZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaXNEYXRlRXZlbnRIYXBwZW5lZCA9IGZhbHNlO1xuXG4gICAgZm9yZWNhc3RUYWdzOiBhbnlbXSA9IFtcbiAgICAgICAgeyB2YWx1ZTogMCwgbGFiZWw6ICcwKzEyJyB9LFxuICAgICAgICB7IHZhbHVlOiAxLCBsYWJlbDogJzErMTEnIH0sXG4gICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnMisxMCcgfSxcbiAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6ICczKzknIH0sXG4gICAgICAgIHsgdmFsdWU6IDQsIGxhYmVsOiAnNCs4JyB9LFxuICAgICAgICB7IHZhbHVlOiA1LCBsYWJlbDogJzUrNycgfSxcbiAgICAgICAgeyB2YWx1ZTogNiwgbGFiZWw6ICc2KzYnIH0sXG4gICAgICAgIHsgdmFsdWU6IDcsIGxhYmVsOiAnNys1JyB9LFxuICAgICAgICB7IHZhbHVlOiA4LCBsYWJlbDogJzgrNCcgfSxcbiAgICAgICAgeyB2YWx1ZTogOSwgbGFiZWw6ICc5KzMnIH0sXG4gICAgICAgIHsgdmFsdWU6IDEwLCBsYWJlbDogJzEwKzInIH0sXG4gICAgICAgIHsgdmFsdWU6IDExLCBsYWJlbDogJzExKzEnIH1cbiAgICBdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdERhdGUoKSB7XG4gICAgICAgIGNvbnN0IGRhdGVWYWwgPSB0aGlzLmRlZmF1bHRWYWx1ZSA/IG1vbWVudC51bml4KHRoaXMuZGVmYXVsdFZhbHVlKSA6IG1vbWVudCgpO1xuICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSA9IHRoaXMuZmlzY2FsWWVhclN0YXJ0c0Zyb20gfHwgMTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfYmFjayA9IHRoaXMuZmlzY2FsWWVhckJhY2sgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuZm9yZWNhc3RWYWx1ZSA9IHRoaXMuZ2V0RmlzY2FsTW9udGhGcm9tRGF0ZShkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSkgLSAxO1xuICAgICAgICBjb25zdCBmaXNjYWxfeWVhciA9IHRoaXMuZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVWYWwsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVllYXIoZmlzY2FsX3llYXIsIHRoaXMuZm9yZWNhc3RWYWx1ZSk7XG4gICAgICAgIHRoaXMudXBkYXRlTG9ja2VkRGF0ZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVllYXIoZmlzY2FsWWVhcj86IG51bWJlciwgbW9udGg/OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgTU9OVEhfRElGRiA9IDE7XG5cbiAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSBmaXNjYWxZZWFyXG4gICAgICAgICAgICA/IG1vbWVudChgJHsgbW9udGggKyBNT05USF9ESUZGIHx8ICcwMScgfS8wMS8keyBmaXNjYWxZZWFyIH0gMTI6MDA6MDBgLCAnTU0vREQvWVlZWSBoaDptbTpzcycpLnV0YygpLnVuaXgoKVxuICAgICAgICAgICAgOiBtb21lbnQudXRjKCkudW5peCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUxvY2tlZERhdGUoKSB7XG4gICAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQudW5peCh0aGlzLmRhdGVPYmouZGF0ZSkueWVhcigpO1xuXG4gICAgICAgIGZvciAoY29uc3QgZm9yZWNhc3RUYWcgb2YgdGhpcy5mb3JlY2FzdFRhZ3MpIHtcbiAgICAgICAgICAgIGZvcmVjYXN0VGFnLmRpc2FibGVkID0gdGhpcy5sb2NrZWREYXRlLnNvbWUoKHRpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2tlZCA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tlZC5tb250aCgpID09PSBmb3JlY2FzdFRhZy52YWx1ZSAmJiArbG9ja2VkLnllYXIoKSA9PT0gK3llYXI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ0ZvcmVjYXN0IChOZXcpJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pIHtcbiAgICAgICAgY29uc3QgYWxsX21vbnRocyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbTsgaSA8IDEzOyBpKyspIHtcbiAgICAgICAgICAgIGFsbF9tb250aHMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb207IGkrKykge1xuICAgICAgICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFsbF9tb250aHMuaW5kZXhPZihkYXRlT2JqLm1vbnRoKCkgKyAxKSArIDE7XG4gICAgfVxuXG4gICAgZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgIGxldCBmaXNjYWxfeWVhciA9IGRhdGVPYmoueWVhcigpO1xuXG4gICAgICAgIGlmICghZmlzY2FsX3llYXJfYmFjaykge1xuICAgICAgICAgICAgaWYgKGRhdGVPYmoubW9udGgoKSArIDEgPj0gZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gJiYgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxfeWVhciArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRhdGVPYmoubW9udGgoKSArIDEgPCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAmJiBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGZpc2NhbF95ZWFyIC09IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlzY2FsX3llYXI7XG4gICAgfVxuXG4gICAgY2hhbmdlVGFnSW5wdXRIYW5kbGVyKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UgfCBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlWWVhcklucHV0SGFuZGxlcihldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xuICAgIH1cblxuICAgIGNob3NlblRhZ0hhbmRsZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBtb250aCA9IHRoaXMuZm9yZWNhc3RWYWx1ZTtcbiAgICAgICAgY29uc3QgeWVhciA9IG1vbWVudC51bml4KHRoaXMuZGF0ZU9iai5kYXRlKS55ZWFyKCk7XG5cbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obW9udGgpICYmICFOdW1iZXIuaXNOYU4oeWVhcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSwgMTIsIDAsIDAsIDApO1xuICAgICAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSB0aGlzLmZpc2NhbFllYXJTdGFydHNGcm9tIHx8IDE7XG4gICAgICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9iYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjayB8fCBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMTMgKyBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgLSAxICsgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbW9tZW50RGF0ZSA9IG1vbWVudC51bml4KGRhdGUuZ2V0VGltZSgpIC8gMTAwMCk7XG4gICAgICAgICAgICBjb25zdCBmaXNjYWxfeWVhciA9IHRoaXMuZ2V0RmlzY2FsWWVhckZyb21EYXRlKG1vbWVudERhdGUsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCBmaXNjYWxfeWVhcl9iYWNrKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlWWVhcihmaXNjYWxfeWVhciwgZGF0ZS5nZXRNb250aCgpKTtcblxuICAgICAgICAgICAgdGhpcy5pc0RhdGVFdmVudEhhcHBlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEYXRlRXZlbnRIYXBwZW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHRUYWc6IElEYXRlVGFnID0ge1xuICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZGF0ZU9iai5kYXRlLFxuICAgICAgICAgICAgbGFiZWw6IF9maW5kKHRoaXMuZm9yZWNhc3RUYWdzLCB7IHZhbHVlOiB0aGlzLmZvcmVjYXN0VmFsdWUgfSk/LmxhYmVsLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKG1vbWVudC51bml4KHRoaXMuZGF0ZU9iai5kYXRlKSlcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xuICAgIH1cblxuICAgIGRhdGVGaWx0ZXIoZGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtb250aCA9IHRoaXMuZm9yZWNhc3RWYWx1ZTtcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGUueWVhcigpO1xuXG4gICAgICAgIHJldHVybiAhdGhpcy5sb2NrZWREYXRlLnNvbWUoKHRpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9ja0RhdGUgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuICAgICAgICAgICAgcmV0dXJuIGxvY2tEYXRlLm1vbnRoKCkgPT09IG1vbnRoICYmIGxvY2tEYXRlLnllYXIoKSA9PT0geWVhcjtcbiAgICAgICAgfSk7XG4gICAgfTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JlY2FzdC10YWdfX2NvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JlY2FzdC10YWdfX2ZvcmVjYXN0XCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGFnX19sYWJlbFwiPkZvcmVjYXN0PC9wPlxuICAgICAgICA8ZHItc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcmVjYXN0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZm9yZWNhc3RUYWdzXCJcbiAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VUYWdJbnB1dEhhbmRsZXIoJGV2ZW50KVwiPjwvZHItc2VsZWN0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JlY2FzdC10YWdfX3llYXJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0YWdfX2xhYmVsXCI+WWVhcjwvcD5cbiAgICAgICAgPGRyLWRhdGUtcGlja2VyIGZvcm1hdD1cInllYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRlT2JqLmRhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VZZWFySW5wdXRIYW5kbGVyKCRldmVudClcIj48L2RyLWRhdGUtcGlja2VyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,88 +0,0 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
2
- import { AnyTagComponent } from '../any-tag.component';
3
- import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
4
- import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
5
- // @ts-ignore
6
- // const moment = require('moment');
7
- import * as moment from 'moment';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- import * as i2 from "../../dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component";
11
- const MONTH_FORMATS = {
12
- parse: {
13
- dateInput: 'DD-MM-YYYY',
14
- },
15
- display: {
16
- dateInput: 'MMMM YYYY',
17
- monthYearLabel: 'MMMM YYYY',
18
- dateA11yLabel: 'LL',
19
- monthYearA11yLabel: 'MMMM YYYY'
20
- },
21
- };
22
- export class MonthTagComponent extends AnyTagComponent {
23
- get isLocked() {
24
- return this.date ? !this.dateFilter(moment.unix(this.date)) : false;
25
- }
26
- lockedDate = [];
27
- date;
28
- constructor() {
29
- super();
30
- }
31
- initDate() {
32
- this.date = this.defaultValue || moment().unix();
33
- this.dateObj.date = this.date;
34
- }
35
- initName() {
36
- if (!this.name) {
37
- this.name = 'Month';
38
- }
39
- }
40
- chosenTagHandler(value) {
41
- const resultDate = moment.unix(value);
42
- resultDate.hour(12);
43
- const resultTag = {
44
- name: this.name,
45
- value: resultDate.unix(),
46
- label: resultDate.format('MMMM YYYY'),
47
- locked: !this.dateFilter(resultDate)
48
- };
49
- console.log(resultTag, value);
50
- this.dateChange.emit(resultTag);
51
- }
52
- // Should be as arrow function to avoid lose scope
53
- dateFilter(date) {
54
- const month = date.month();
55
- const year = date.year();
56
- return !this.lockedDate.some((timestamp) => {
57
- const lockDate = moment.unix(timestamp);
58
- return lockDate.year() === year && lockDate.month() === month;
59
- });
60
- }
61
- ;
62
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: MonthTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: MonthTagComponent, selector: "month-tag", inputs: { lockedDate: "lockedDate" }, host: { properties: { "class.locked": "this.isLocked" } }, providers: [
64
- {
65
- provide: DateAdapter,
66
- useClass: MomentDateAdapter,
67
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
68
- },
69
- { provide: MAT_DATE_FORMATS, useValue: MONTH_FORMATS },
70
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"month\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrDatePickerComponent, selector: "dr-date-picker", inputs: ["format", "min", "max", "periodPosition", "placeholder", "disabled", "fiscalYearMonthsModifier", "datepickerFilter"] }] });
71
- }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: MonthTagComponent, decorators: [{
73
- type: Component,
74
- args: [{ selector: 'month-tag', providers: [
75
- {
76
- provide: DateAdapter,
77
- useClass: MomentDateAdapter,
78
- deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
79
- },
80
- { provide: MAT_DATE_FORMATS, useValue: MONTH_FORMATS },
81
- ], template: "<div class=\"tag-wrapper\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-date-picker format=\"month\"\n [(ngModel)]=\"date\"\n [disabled]=\"disabled\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-date-picker>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-date-picker{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
82
- }], ctorParameters: function () { return []; }, propDecorators: { isLocked: [{
83
- type: HostBinding,
84
- args: ['class.locked']
85
- }], lockedDate: [{
86
- type: Input
87
- }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9udGgtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9tb250aC10YWcvbW9udGgtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RyxhQUFhO0FBQ2Isb0NBQW9DO0FBQ3BDLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7O0FBRWpDLE1BQU0sYUFBYSxHQUFHO0lBQ2xCLEtBQUssRUFBRTtRQUNILFNBQVMsRUFBRSxZQUFZO0tBQzFCO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFdBQVc7UUFDdEIsY0FBYyxFQUFFLFdBQVc7UUFDM0IsYUFBYSxFQUFFLElBQUk7UUFDbkIsa0JBQWtCLEVBQUUsV0FBVztLQUNsQztDQUNKLENBQUM7QUFnQkYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFDbEQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFFUSxVQUFVLEdBQVUsRUFBRSxDQUFDO0lBRWhDLElBQUksQ0FBQztJQUVMO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztTQUN2QjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQixNQUFNLFNBQVMsR0FBYTtZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRTtZQUN4QixLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7WUFDckMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7U0FDdkMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsVUFBVSxDQUFDLElBQUk7UUFDWCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXpCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQzt1R0EvQ08saUJBQWlCOzJGQUFqQixpQkFBaUIscUlBVmY7WUFDUDtnQkFDSSxPQUFPLEVBQUUsV0FBVztnQkFDcEIsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO2FBQzNEO1lBQ0QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtTQUN6RCxpRENoQ0wsc1dBUUE7OzJGRDJCYSxpQkFBaUI7a0JBZDdCLFNBQVM7K0JBR0ksV0FBVyxhQUNWO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSxXQUFXOzRCQUNwQixRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsK0JBQStCLENBQUM7eUJBQzNEO3dCQUNELEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7cUJBQ3pEOzBFQUtHLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyxjQUFjO2dCQUtsQixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElEYXRlVGFnIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgQW55VGFnQ29tcG9uZW50IH0gZnJvbSAnLi4vYW55LXRhZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OUywgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG4vLyBAdHMtaWdub3JlXG4vLyBjb25zdCBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBNT05USF9GT1JNQVRTID0ge1xuICAgIHBhcnNlOiB7XG4gICAgICAgIGRhdGVJbnB1dDogJ0RELU1NLVlZWVknLFxuICAgIH0sXG4gICAgZGlzcGxheToge1xuICAgICAgICBkYXRlSW5wdXQ6ICdNTU1NIFlZWVknLFxuICAgICAgICBtb250aFllYXJMYWJlbDogJ01NTU0gWVlZWScsXG4gICAgICAgIGRhdGVBMTF5TGFiZWw6ICdMTCcsXG4gICAgICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWSdcbiAgICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICdtb250aC10YWcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21vbnRoLXRhZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHNlbGVjdG9yOiAnbW9udGgtdGFnJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXG4gICAgICAgICAgICB1c2VDbGFzczogTW9tZW50RGF0ZUFkYXB0ZXIsXG4gICAgICAgICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTU9OVEhfRk9STUFUUyB9LFxuICAgIF0sXG59KVxuXG5leHBvcnQgY2xhc3MgTW9udGhUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MubG9ja2VkJylcbiAgICBnZXQgaXNMb2NrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGUgPyAhdGhpcy5kYXRlRmlsdGVyKG1vbWVudC51bml4KHRoaXMuZGF0ZSkpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcblxuICAgIGRhdGU7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBpbml0RGF0ZSgpIHtcbiAgICAgICAgdGhpcy5kYXRlID0gdGhpcy5kZWZhdWx0VmFsdWUgfHwgbW9tZW50KCkudW5peCgpO1xuICAgICAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IHRoaXMuZGF0ZTtcbiAgICB9XG5cbiAgICBpbml0TmFtZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICdNb250aCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0RGF0ZSA9IG1vbWVudC51bml4KHZhbHVlKTtcbiAgICAgICAgcmVzdWx0RGF0ZS5ob3VyKDEyKTtcbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiByZXN1bHREYXRlLnVuaXgoKSxcbiAgICAgICAgICAgIGxhYmVsOiByZXN1bHREYXRlLmZvcm1hdCgnTU1NTSBZWVlZJyksXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIocmVzdWx0RGF0ZSlcbiAgICAgICAgfTtcbiAgICAgICAgY29uc29sZS5sb2cocmVzdWx0VGFnLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gICAgfVxuXG4gICAgLy8gU2hvdWxkIGJlIGFzIGFycm93IGZ1bmN0aW9uIHRvIGF2b2lkIGxvc2Ugc2NvcGVcbiAgICBkYXRlRmlsdGVyKGRhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbW9udGggPSBkYXRlLm1vbnRoKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLnllYXIoKTtcblxuICAgICAgICByZXR1cm4gIXRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHJldHVybiBsb2NrRGF0ZS55ZWFyKCkgPT09IHllYXIgJiYgbG9ja0RhdGUubW9udGgoKSA9PT0gbW9udGg7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFnLXdyYXBwZXJcIj5cbiAgICA8cCBjbGFzcz1cInRhZ19fbGFiZWxcIj57eyBuYW1lIH19PC9wPlxuICAgIDxkci1kYXRlLXBpY2tlciBmb3JtYXQ9XCJtb250aFwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtkYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNob3NlblRhZ0hhbmRsZXIoJGV2ZW50KVwiPjwvZHItZGF0ZS1waWNrZXI+XG48L2Rpdj5cbiJdfQ==
@@ -1,106 +0,0 @@
1
- import { Component, HostBinding, Input } from '@angular/core';
2
- import { AnyTagComponent } from '../any-tag.component';
3
- import * as moment from 'moment';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/forms";
6
- import * as i2 from "../../dr-inputs/dr-select/dr-select.component";
7
- export class QuarterTagComponent extends AnyTagComponent {
8
- get isLocked() {
9
- return this.quarters
10
- ? this.quarters.some((quarter) => !this.dateFilter(moment.unix(quarter.value)))
11
- : false;
12
- }
13
- lockedDate = [];
14
- selectedValue = 0;
15
- quarters = [];
16
- constructor() {
17
- super();
18
- }
19
- ngOnInit() {
20
- this.initName();
21
- this.quarters = this.getQuarterOptions();
22
- for (const quarter of this.quarters) {
23
- quarter.disabled = false;
24
- if (quarter.isSelected) {
25
- this.selectedValue = quarter;
26
- this.chosenTagHandler(quarter);
27
- }
28
- this.dateFilter(quarter);
29
- }
30
- }
31
- initName() {
32
- if (!this.name) {
33
- this.name = 'Quarter';
34
- }
35
- }
36
- chosenTagHandler(quarter) {
37
- const resultDate = moment.unix(quarter.value);
38
- const resultTag = {
39
- name: this.name,
40
- value: resultDate.unix(),
41
- label: this.getQuarterLabel(resultDate.toString()),
42
- locked: !this.dateFilter(quarter)
43
- };
44
- this.dateChange.emit(resultTag);
45
- }
46
- getQuarterOptions() {
47
- const quartersBeforeToday = 8;
48
- const quartersAfterToday = 8;
49
- const dateNow = new Date();
50
- const dateNowUnix = this.getUTCTimestamp(dateNow);
51
- let defaultValue = dateNowUnix;
52
- let tempDate = new Date();
53
- if (this.defaultValue) {
54
- defaultValue = this.defaultValue * 1000;
55
- }
56
- let afterDefault = Math.round(Math.abs(dateNowUnix - defaultValue) / 7776000000) + quartersAfterToday;
57
- afterDefault = Math.min(afterDefault, 100);
58
- let i;
59
- let tempValue;
60
- const to_return = [];
61
- for (i = 0 - quartersBeforeToday; i <= afterDefault; i++) {
62
- tempDate = new Date(defaultValue);
63
- tempDate.setDate(15);
64
- tempDate.setMonth(tempDate.getMonth() + 3 * i);
65
- tempValue = this.getUTCTimestamp(tempDate);
66
- to_return.push({
67
- value: tempValue / 1000,
68
- label: this.getQuarterLabel(tempValue),
69
- isSelected: (i === 0),
70
- });
71
- }
72
- return to_return;
73
- }
74
- getQuarterLabel(timeValue) {
75
- const date = new Date(timeValue);
76
- return 'Q' + Math.floor((date.getMonth() / 3) + 1) + ' ' + date.getFullYear();
77
- }
78
- getUTCTimestamp(date) {
79
- const month = Math.floor(date.getMonth() / 3) * 3;
80
- return Date.UTC(date.getFullYear(), month, 1, 12, 0, 0, 0);
81
- }
82
- dateFilter(quarter) {
83
- const quarterDate = moment.unix(quarter.value);
84
- return !this.lockedDate.some((timestamp) => {
85
- const lockDate = moment.unix(timestamp);
86
- if (lockDate.year() === quarterDate.year() && lockDate.month() === quarterDate.month()) {
87
- quarter.disabled = true;
88
- return true;
89
- }
90
- return false;
91
- });
92
- }
93
- ;
94
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: QuarterTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
95
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: QuarterTagComponent, selector: "quarter-tag", inputs: { lockedDate: "lockedDate" }, host: { properties: { "class.locked": "this.isLocked" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"tag-wrapper quarter-tag\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-select class=\"quarter-tag__list\"\n placeholder=\"Select\"\n bindLabel=\"label\"\n [(ngModel)]=\"selectedValue\"\n [disabled]=\"disabled\"\n [items]=\"quarters\"\n dropdownClass=\"quarter-tag__select dr-tag__select\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-select>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-select.quarter-tag__list{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.DrSelectComponent, selector: "dr-select", inputs: ["className", "items", "addTag", "appendTo", "bindLabel", "bindValue", "clearable", "searchable", "searchFn", "multiple", "hideSelected", "placeholder", "loading", "readonly", "disabled", "groupBy", "optionWithDescription", "id", "keyDownFn", "selectedItem", "dropdownClass", "closeOnSelect", "textView", "autofocus", "isOpen"], outputs: ["change", "open"] }] });
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: QuarterTagComponent, decorators: [{
98
- type: Component,
99
- args: [{ selector: 'quarter-tag', template: "<div class=\"tag-wrapper quarter-tag\">\n <p class=\"tag__label\">{{ name }}</p>\n <dr-select class=\"quarter-tag__list\"\n placeholder=\"Select\"\n bindLabel=\"label\"\n [(ngModel)]=\"selectedValue\"\n [disabled]=\"disabled\"\n [items]=\"quarters\"\n dropdownClass=\"quarter-tag__select dr-tag__select\"\n (ngModelChange)=\"chosenTagHandler($event)\"></dr-select>\n</div>\n", styles: [":host.locked>.tag-wrapper>dr-select.quarter-tag__list{opacity:.4}.tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}\n"] }]
100
- }], ctorParameters: function () { return []; }, propDecorators: { isLocked: [{
101
- type: HostBinding,
102
- args: ['class.locked']
103
- }], lockedDate: [{
104
- type: Input
105
- }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhcnRlci10YWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZGF0ZS10YWdzL3F1YXJ0ZXItdGFnL3F1YXJ0ZXItdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9xdWFydGVyLXRhZy9xdWFydGVyLXRhZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7O0FBT2pDLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBQ3BELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMvRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2hCLENBQUM7SUFFUSxVQUFVLEdBQVUsRUFBRSxDQUFDO0lBQ2hDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDbEIsUUFBUSxHQUFVLEVBQUUsQ0FBQztJQUVyQjtRQUNJLEtBQUssRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QyxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakMsT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFFekIsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2xDO1lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDWixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFhO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ3hCLEtBQUssRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsRCxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztTQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0IsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzNDO1FBRUQsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztRQUN0RyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLENBQUM7UUFBQyxJQUFJLFNBQVMsQ0FBQztRQUNyQixNQUFNLFNBQVMsR0FBVSxFQUFFLENBQUM7UUFDNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9DLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsS0FBSyxFQUFFLFNBQVMsR0FBRyxJQUFJO2dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3RDLFVBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDeEIsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQVM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xGLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBSTtRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTztRQUNkLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxXQUFXLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3BGLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQUEsQ0FBQzt1R0FuR08sbUJBQW1COzJGQUFuQixtQkFBbUIsMktDVmhDLGdlQVdBOzsyRkREYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBR0ksYUFBYTswRUFJbkIsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGNBQWM7Z0JBT2xCLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRGF0ZVRhZyB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcbmltcG9ydCB7IEFueVRhZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FueS10YWcuY29tcG9uZW50JztcbmltcG9ydCAqIGFzIG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJ3F1YXJ0ZXItdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9xdWFydGVyLXRhZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHNlbGVjdG9yOiAncXVhcnRlci10YWcnLFxufSlcbmV4cG9ydCBjbGFzcyBRdWFydGVyVGFnQ29tcG9uZW50IGV4dGVuZHMgQW55VGFnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmxvY2tlZCcpXG4gICAgZ2V0IGlzTG9ja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWFydGVyc1xuICAgICAgICAgICAgPyB0aGlzLnF1YXJ0ZXJzLnNvbWUoKHF1YXJ0ZXIpID0+ICF0aGlzLmRhdGVGaWx0ZXIobW9tZW50LnVuaXgocXVhcnRlci52YWx1ZSkpKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xuICAgIHNlbGVjdGVkVmFsdWUgPSAwO1xuICAgIHF1YXJ0ZXJzOiBhbnlbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdE5hbWUoKTtcbiAgICAgICAgdGhpcy5xdWFydGVycyA9IHRoaXMuZ2V0UXVhcnRlck9wdGlvbnMoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHF1YXJ0ZXIgb2YgdGhpcy5xdWFydGVycykge1xuICAgICAgICAgICAgcXVhcnRlci5kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAocXVhcnRlci5pc1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlID0gcXVhcnRlcjtcbiAgICAgICAgICAgICAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIocXVhcnRlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlcihxdWFydGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXROYW1lKCkge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5uYW1lID0gJ1F1YXJ0ZXInO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hvc2VuVGFnSGFuZGxlcihxdWFydGVyKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdERhdGUgPSBtb21lbnQudW5peChxdWFydGVyLnZhbHVlKTtcbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiByZXN1bHREYXRlLnVuaXgoKSxcbiAgICAgICAgICAgIGxhYmVsOiB0aGlzLmdldFF1YXJ0ZXJMYWJlbChyZXN1bHREYXRlLnRvU3RyaW5nKCkpLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKHF1YXJ0ZXIpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHJlc3VsdFRhZyk7XG4gICAgfVxuXG4gICAgZ2V0UXVhcnRlck9wdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHF1YXJ0ZXJzQmVmb3JlVG9kYXkgPSA4O1xuICAgICAgICBjb25zdCBxdWFydGVyc0FmdGVyVG9kYXkgPSA4O1xuICAgICAgICBjb25zdCBkYXRlTm93ID0gbmV3IERhdGUoKTtcbiAgICAgICAgY29uc3QgZGF0ZU5vd1VuaXggPSB0aGlzLmdldFVUQ1RpbWVzdGFtcChkYXRlTm93KTtcbiAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IGRhdGVOb3dVbml4O1xuICAgICAgICBsZXQgdGVtcERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlICogMTAwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhZnRlckRlZmF1bHQgPSBNYXRoLnJvdW5kKE1hdGguYWJzKGRhdGVOb3dVbml4IC0gZGVmYXVsdFZhbHVlKSAvIDc3NzYwMDAwMDApICsgcXVhcnRlcnNBZnRlclRvZGF5O1xuICAgICAgICBhZnRlckRlZmF1bHQgPSBNYXRoLm1pbihhZnRlckRlZmF1bHQsIDEwMCk7XG4gICAgICAgIGxldCBpOyBsZXQgdGVtcFZhbHVlO1xuICAgICAgICBjb25zdCB0b19yZXR1cm46IGFueVtdID0gW107XG4gICAgICAgIGZvciAoaSA9IDAgLSBxdWFydGVyc0JlZm9yZVRvZGF5OyBpIDw9IGFmdGVyRGVmYXVsdDsgaSsrKSB7XG4gICAgICAgICAgICB0ZW1wRGF0ZSA9IG5ldyBEYXRlKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB0ZW1wRGF0ZS5zZXREYXRlKDE1KTtcbiAgICAgICAgICAgIHRlbXBEYXRlLnNldE1vbnRoKHRlbXBEYXRlLmdldE1vbnRoKCkgKyAzICogaSk7XG4gICAgICAgICAgICB0ZW1wVmFsdWUgPSB0aGlzLmdldFVUQ1RpbWVzdGFtcCh0ZW1wRGF0ZSk7XG4gICAgICAgICAgICB0b19yZXR1cm4ucHVzaCh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRlbXBWYWx1ZSAvIDEwMDAsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0UXVhcnRlckxhYmVsKHRlbXBWYWx1ZSksXG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZDogKGkgPT09IDApLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRvX3JldHVybjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFF1YXJ0ZXJMYWJlbCh0aW1lVmFsdWUpIHtcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRpbWVWYWx1ZSk7XG4gICAgICAgIHJldHVybiAnUScgKyBNYXRoLmZsb29yKChkYXRlLmdldE1vbnRoKCkgLyAzKSArIDEpICsgJyAnICsgZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VVRDVGltZXN0YW1wKGRhdGUpIHtcbiAgICAgICAgY29uc3QgbW9udGggPSBNYXRoLmZsb29yKGRhdGUuZ2V0TW9udGgoKSAvIDMpICogMztcbiAgICAgICAgcmV0dXJuIERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGgsIDEsIDEyLCAwLCAwLCAwKTtcbiAgICB9XG5cbiAgICBkYXRlRmlsdGVyKHF1YXJ0ZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcXVhcnRlckRhdGUgPSBtb21lbnQudW5peChxdWFydGVyLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuICF0aGlzLmxvY2tlZERhdGUuc29tZSgodGltZXN0YW1wKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsb2NrRGF0ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICBpZiAobG9ja0RhdGUueWVhcigpID09PSBxdWFydGVyRGF0ZS55ZWFyKCkgJiYgbG9ja0RhdGUubW9udGgoKSA9PT0gcXVhcnRlckRhdGUubW9udGgoKSkge1xuICAgICAgICAgICAgICAgIHF1YXJ0ZXIuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFnLXdyYXBwZXIgcXVhcnRlci10YWdcIj5cbiAgICA8cCBjbGFzcz1cInRhZ19fbGFiZWxcIj57eyBuYW1lIH19PC9wPlxuICAgIDxkci1zZWxlY3QgY2xhc3M9XCJxdWFydGVyLXRhZ19fbGlzdFwiXG4gICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiXG4gICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkVmFsdWVcIlxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgIFtpdGVtc109XCJxdWFydGVyc1wiXG4gICAgICAgICAgICAgICBkcm9wZG93bkNsYXNzPVwicXVhcnRlci10YWdfX3NlbGVjdCBkci10YWdfX3NlbGVjdFwiXG4gICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaG9zZW5UYWdIYW5kbGVyKCRldmVudClcIj48L2RyLXNlbGVjdD5cbjwvZGl2PlxuIl19