@energycap/components 0.31.0 → 0.31.1-ECAP-12439-angular-14.20220901-1019

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 (284) hide show
  1. package/energycap-components.d.ts +1 -3
  2. package/energycap-components.min.css +2 -2
  3. package/esm2020/energycap-components.mjs +5 -0
  4. package/esm2020/lib/components.module.mjs +383 -0
  5. package/esm2020/lib/controls/banner/banner.component.mjs +106 -0
  6. package/esm2020/lib/controls/button/button.component.mjs +106 -0
  7. package/esm2020/lib/controls/button/copy-button.directive.mjs +65 -0
  8. package/esm2020/lib/controls/checkbox/checkbox.component.mjs +139 -0
  9. package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
  10. package/esm2020/lib/controls/combobox/combobox.component.mjs +840 -0
  11. package/esm2020/lib/controls/dropdown/dropdown.component.mjs +237 -0
  12. package/esm2020/lib/controls/file-upload/file-upload.component.mjs +169 -0
  13. package/esm2020/lib/controls/form-control/form-control.component.mjs +86 -0
  14. package/esm2020/lib/controls/form-control-base.mjs +143 -0
  15. package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  16. package/esm2020/lib/controls/form-group/form-group.component.mjs +252 -0
  17. package/esm2020/lib/controls/help-popover/help-popover.component.mjs +28 -0
  18. package/esm2020/lib/controls/item-picker/item-picker.component.mjs +233 -0
  19. package/esm2020/lib/controls/link-button/link-button.component.mjs +11 -0
  20. package/esm2020/lib/controls/menu/menu.component.mjs +443 -0
  21. package/{esm2015/lib/controls/navigation/link-item.js → esm2020/lib/controls/navigation/link-item.mjs} +0 -0
  22. package/{esm2015/lib/controls/navigation/nav-group.js → esm2020/lib/controls/navigation/nav-group.mjs} +0 -0
  23. package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  24. package/{esm2015/lib/controls/navigation/nav-item.js → esm2020/lib/controls/navigation/nav-item.mjs} +0 -0
  25. package/esm2020/lib/controls/numericbox/numericbox.component.mjs +371 -0
  26. package/esm2020/lib/controls/popover/popover.component.mjs +84 -0
  27. package/{esm2015/lib/controls/radio-button/radio-button-option.js → esm2020/lib/controls/radio-button/radio-button-option.mjs} +0 -0
  28. package/esm2020/lib/controls/radio-button/radio-button.component.mjs +81 -0
  29. package/esm2020/lib/controls/select/select.component.mjs +87 -0
  30. package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
  31. package/esm2020/lib/controls/textbox/textbox.component.mjs +154 -0
  32. package/{esm2015/lib/core/cache.service.js → esm2020/lib/core/cache.service.mjs} +9 -8
  33. package/{esm2015/lib/core/custom-validators.js → esm2020/lib/core/custom-validators.mjs} +0 -0
  34. package/{esm2015/lib/core/date-time-helper.js → esm2020/lib/core/date-time-helper.mjs} +0 -0
  35. package/esm2020/lib/core/error.service.mjs +57 -0
  36. package/esm2020/lib/core/scroll.service.mjs +89 -0
  37. package/esm2020/lib/core/telemetry-tracker.service.mjs +16 -0
  38. package/esm2020/lib/core/telemetry.service.mjs +38 -0
  39. package/esm2020/lib/core/validation-message.service.mjs +181 -0
  40. package/{esm2015/lib/core/validation-patterns.js → esm2020/lib/core/validation-patterns.mjs} +0 -0
  41. package/esm2020/lib/core/window.service.mjs +182 -0
  42. package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
  43. package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
  44. package/{esm2015/lib/display/avatar/avatar.service.js → esm2020/lib/display/avatar/avatar.service.mjs} +9 -7
  45. package/esm2020/lib/display/confirm/confirm.component.mjs +131 -0
  46. package/{esm2015/lib/display/dialog/dialog-content.js → esm2020/lib/display/dialog/dialog-content.mjs} +0 -0
  47. package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  48. package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs} +0 -0
  49. package/esm2020/lib/display/dialog/dialog.component.mjs +242 -0
  50. package/esm2020/lib/display/dialog/dialog.service.mjs +71 -0
  51. package/{esm2015/lib/display/help/help-types.js → esm2020/lib/display/help/help-types.mjs} +0 -0
  52. package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +106 -0
  53. package/{esm2015/lib/display/hierarchy/hierarchy-mocks.spec.js → esm2020/lib/display/hierarchy/hierarchy-mocks.spec.mjs} +5 -9
  54. package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +59 -0
  55. package/esm2020/lib/display/item-display/item-display.component.mjs +67 -0
  56. package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
  57. package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
  58. package/esm2020/lib/display/resizable/resizable.component.mjs +57 -0
  59. package/esm2020/lib/display/spinner/spinner.component.mjs +12 -0
  60. package/esm2020/lib/display/splash/splash.component.mjs +42 -0
  61. package/esm2020/lib/display/splash/splash.service.mjs +35 -0
  62. package/esm2020/lib/display/table/resizable-column.component.mjs +20 -0
  63. package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
  64. package/esm2020/lib/display/table/searchable-table.component.mjs +338 -0
  65. package/esm2020/lib/display/table/table-detail-row.component.mjs +27 -0
  66. package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
  67. package/esm2020/lib/display/table/table-master-header-row.component.mjs +11 -0
  68. package/esm2020/lib/display/table/table-master-row.component.mjs +150 -0
  69. package/esm2020/lib/display/table/table-pagination.component.mjs +150 -0
  70. package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
  71. package/esm2020/lib/display/table/table.component.mjs +244 -0
  72. package/esm2020/lib/display/tags/tag.mjs +15 -0
  73. package/esm2020/lib/display/tags/tags.component.mjs +77 -0
  74. package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
  75. package/{esm2015/lib/display/toast/toast-types.js → esm2020/lib/display/toast/toast-types.mjs} +0 -0
  76. package/esm2020/lib/display/toast/toast.service.mjs +35 -0
  77. package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
  78. package/esm2020/lib/display/tree/tree.component.mjs +125 -0
  79. package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  80. package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  81. package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  82. package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
  83. package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  84. package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  85. package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +48 -0
  86. package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  87. package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  88. package/{esm2015/lib/shared/display.js → esm2020/lib/shared/display.mjs} +0 -0
  89. package/esm2020/lib/shared/form-group.helper.mjs +67 -0
  90. package/{esm2015/lib/shared/json-helper.js → esm2020/lib/shared/json-helper.mjs} +0 -0
  91. package/{esm2015/lib/shared/lodash-helper.js → esm2020/lib/shared/lodash-helper.mjs} +0 -0
  92. package/esm2020/lib/shared/page/page-base/page-base.component.mjs +339 -0
  93. package/{esm2015/lib/shared/page/page-statuses.js → esm2020/lib/shared/page/page-statuses.mjs} +0 -0
  94. package/esm2020/lib/shared/page/page-title/page-title.component.mjs +23 -0
  95. package/esm2020/lib/shared/page/page-view/page-view.component.mjs +115 -0
  96. package/{esm2015/lib/shared/testing/hierarchy-base-test-injector-factory.spec.js → esm2020/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs} +0 -0
  97. package/esm2020/lib/shared/testing/page-base-component-test-helper.spec.mjs +30 -0
  98. package/{esm2015/lib/shared/testing/page-base-component-test-injector-factory.spec.js → esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs} +0 -0
  99. package/esm2020/lib/shared/testing/public-mocks.spec.mjs +132 -0
  100. package/{esm2015/lib/shared/testing/spy-factory.spec.js → esm2020/lib/shared/testing/spy-factory.spec.mjs} +0 -0
  101. package/{esm2015/lib/shared/testing/translation-mocks.spec.js → esm2020/lib/shared/testing/translation-mocks.spec.mjs} +0 -0
  102. package/esm2020/lib/shared/user-preference.service.mjs +17 -0
  103. package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  104. package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
  105. package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
  106. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  107. package/fesm2015/energycap-components.mjs +10002 -0
  108. package/fesm2015/energycap-components.mjs.map +1 -0
  109. package/fesm2020/energycap-components.mjs +9912 -0
  110. package/fesm2020/energycap-components.mjs.map +1 -0
  111. package/lib/components.module.d.ts +71 -0
  112. package/lib/controls/banner/banner.component.d.ts +3 -0
  113. package/lib/controls/button/button.component.d.ts +3 -0
  114. package/lib/controls/button/copy-button.directive.d.ts +3 -0
  115. package/lib/controls/checkbox/checkbox.component.d.ts +3 -0
  116. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +3 -0
  117. package/lib/controls/combobox/combobox.component.d.ts +3 -0
  118. package/lib/controls/dropdown/dropdown.component.d.ts +3 -0
  119. package/lib/controls/file-upload/file-upload.component.d.ts +3 -0
  120. package/lib/controls/form-control/form-control.component.d.ts +3 -0
  121. package/lib/controls/form-control-base.d.ts +3 -0
  122. package/lib/controls/form-control-label/form-control-label.component.d.ts +3 -0
  123. package/lib/controls/form-group/form-group.component.d.ts +3 -0
  124. package/lib/controls/help-popover/help-popover.component.d.ts +3 -0
  125. package/lib/controls/item-picker/item-picker.component.d.ts +3 -0
  126. package/lib/controls/link-button/link-button.component.d.ts +3 -0
  127. package/lib/controls/menu/menu.component.d.ts +3 -0
  128. package/lib/controls/navigation/nav-item-active.directive.d.ts +3 -0
  129. package/lib/controls/numericbox/numericbox.component.d.ts +3 -0
  130. package/lib/controls/popover/popover.component.d.ts +3 -0
  131. package/lib/controls/radio-button/radio-button.component.d.ts +3 -0
  132. package/lib/controls/select/select.component.d.ts +3 -0
  133. package/lib/controls/tabs/tabs.component.d.ts +3 -0
  134. package/lib/controls/textbox/textbox.component.d.ts +3 -0
  135. package/lib/core/cache.service.d.ts +3 -0
  136. package/lib/core/error.service.d.ts +3 -0
  137. package/lib/core/scroll.service.d.ts +3 -0
  138. package/lib/core/telemetry-tracker.service.d.ts +3 -0
  139. package/lib/core/telemetry.service.d.ts +3 -0
  140. package/lib/core/validation-message.service.d.ts +3 -0
  141. package/lib/core/window.service.d.ts +3 -0
  142. package/lib/display/app-bar/app-bar.component.d.ts +3 -0
  143. package/lib/display/avatar/avatar.component.d.ts +3 -0
  144. package/lib/display/avatar/avatar.service.d.ts +3 -0
  145. package/lib/display/confirm/confirm.component.d.ts +3 -0
  146. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +3 -0
  147. package/lib/display/dialog/dialog.component.d.ts +3 -0
  148. package/lib/display/dialog/dialog.service.d.ts +3 -0
  149. package/lib/display/hierarchy/hierarchy-base.d.ts +3 -0
  150. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +3 -0
  151. package/lib/display/item-display/item-display.component.d.ts +3 -0
  152. package/lib/display/json-display/json-display.component.d.ts +3 -0
  153. package/lib/display/resizable/resizable-base.d.ts +3 -0
  154. package/lib/display/resizable/resizable.component.d.ts +3 -0
  155. package/lib/display/spinner/spinner.component.d.ts +3 -0
  156. package/lib/display/splash/splash.component.d.ts +3 -0
  157. package/lib/display/splash/splash.service.d.ts +3 -0
  158. package/lib/display/table/resizable-column.component.d.ts +3 -0
  159. package/lib/display/table/resizable-table.directive.d.ts +3 -0
  160. package/lib/display/table/searchable-table.component.d.ts +3 -0
  161. package/lib/display/table/table-detail-row.component.d.ts +3 -0
  162. package/lib/display/table/table-locked-column.component.d.ts +3 -0
  163. package/lib/display/table/table-master-header-row.component.d.ts +3 -0
  164. package/lib/display/table/table-master-row.component.d.ts +3 -0
  165. package/lib/display/table/table-pagination.component.d.ts +3 -0
  166. package/lib/display/table/table-selectable-row.component.d.ts +3 -0
  167. package/lib/display/table/table.component.d.ts +3 -0
  168. package/lib/display/tags/tags.component.d.ts +3 -0
  169. package/lib/display/toast/toast/toast.component.d.ts +3 -0
  170. package/lib/display/toast/toast.service.d.ts +3 -0
  171. package/lib/display/toast/toaster/toaster.component.d.ts +3 -0
  172. package/lib/display/tree/tree.component.d.ts +3 -0
  173. package/lib/display/view-overlay/view-overlay.component.d.ts +3 -0
  174. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +3 -0
  175. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +3 -0
  176. package/lib/shared/directives/popup/popup-container.directive.d.ts +3 -0
  177. package/lib/shared/display/pipes/date-display.pipe.d.ts +3 -0
  178. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +3 -0
  179. package/lib/shared/display/pipes/relative-date.pipe.d.ts +3 -0
  180. package/lib/shared/display/pipes/row-count.pipe.d.ts +3 -0
  181. package/lib/shared/display/pipes/time-display.pipe.d.ts +3 -0
  182. package/lib/shared/form-group.helper.d.ts +3 -0
  183. package/lib/shared/page/page-base/page-base.component.d.ts +3 -0
  184. package/lib/shared/page/page-title/page-title.component.d.ts +3 -0
  185. package/lib/shared/page/page-view/page-view.component.d.ts +3 -0
  186. package/lib/shared/testing/public-mocks.spec.d.ts +7 -0
  187. package/lib/shared/user-preference.service.d.ts +3 -0
  188. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +3 -0
  189. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +3 -0
  190. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +3 -0
  191. package/package.json +25 -13
  192. package/src/styles/_functions.scss +6 -4
  193. package/src/styles/_global-variables.scss +1 -0
  194. package/src/styles/mixins/_control-base.scss +2 -2
  195. package/src/styles/mixins/_form-control-base.scss +3 -1
  196. package/src/styles/mixins/_spinner-base.scss +3 -1
  197. package/bundles/energycap-components.umd.js +0 -10552
  198. package/bundles/energycap-components.umd.js.map +0 -1
  199. package/bundles/energycap-components.umd.min.js +0 -17
  200. package/bundles/energycap-components.umd.min.js.map +0 -1
  201. package/energycap-components.metadata.json +0 -1
  202. package/esm2015/energycap-components.js +0 -8
  203. package/esm2015/lib/components.module.js +0 -235
  204. package/esm2015/lib/controls/banner/banner.component.js +0 -94
  205. package/esm2015/lib/controls/button/button.component.js +0 -89
  206. package/esm2015/lib/controls/button/copy-button.directive.js +0 -63
  207. package/esm2015/lib/controls/checkbox/checkbox.component.js +0 -137
  208. package/esm2015/lib/controls/collapsible-toggle/collapsible-toggle.component.js +0 -35
  209. package/esm2015/lib/controls/combobox/combobox.component.js +0 -818
  210. package/esm2015/lib/controls/dropdown/dropdown.component.js +0 -207
  211. package/esm2015/lib/controls/file-upload/file-upload.component.js +0 -172
  212. package/esm2015/lib/controls/form-control/form-control.component.js +0 -65
  213. package/esm2015/lib/controls/form-control-base.js +0 -140
  214. package/esm2015/lib/controls/form-control-label/form-control-label.component.js +0 -139
  215. package/esm2015/lib/controls/form-group/form-group.component.js +0 -254
  216. package/esm2015/lib/controls/help-popover/help-popover.component.js +0 -22
  217. package/esm2015/lib/controls/item-picker/item-picker.component.js +0 -216
  218. package/esm2015/lib/controls/link-button/link-button.component.js +0 -12
  219. package/esm2015/lib/controls/menu/menu.component.js +0 -424
  220. package/esm2015/lib/controls/navigation/nav-item-active.directive.js +0 -86
  221. package/esm2015/lib/controls/numericbox/numericbox.component.js +0 -362
  222. package/esm2015/lib/controls/popover/popover.component.js +0 -85
  223. package/esm2015/lib/controls/radio-button/radio-button.component.js +0 -78
  224. package/esm2015/lib/controls/select/select.component.js +0 -89
  225. package/esm2015/lib/controls/tabs/tabs.component.js +0 -42
  226. package/esm2015/lib/controls/textbox/textbox.component.js +0 -149
  227. package/esm2015/lib/core/error.service.js +0 -56
  228. package/esm2015/lib/core/scroll.service.js +0 -88
  229. package/esm2015/lib/core/telemetry-tracker.service.js +0 -14
  230. package/esm2015/lib/core/telemetry.service.js +0 -40
  231. package/esm2015/lib/core/validation-message.service.js +0 -185
  232. package/esm2015/lib/core/window.service.js +0 -191
  233. package/esm2015/lib/display/app-bar/app-bar.component.js +0 -42
  234. package/esm2015/lib/display/avatar/avatar.component.js +0 -73
  235. package/esm2015/lib/display/confirm/confirm.component.js +0 -127
  236. package/esm2015/lib/display/dialog/dialog-group/dialog-group.component.js +0 -65
  237. package/esm2015/lib/display/dialog/dialog.component.js +0 -229
  238. package/esm2015/lib/display/dialog/dialog.service.js +0 -69
  239. package/esm2015/lib/display/hierarchy/hierarchy-base.js +0 -106
  240. package/esm2015/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.js +0 -58
  241. package/esm2015/lib/display/item-display/item-display.component.js +0 -57
  242. package/esm2015/lib/display/json-display/json-display.component.js +0 -44
  243. package/esm2015/lib/display/resizable/resizable-base.js +0 -119
  244. package/esm2015/lib/display/resizable/resizable.component.js +0 -57
  245. package/esm2015/lib/display/spinner/spinner.component.js +0 -12
  246. package/esm2015/lib/display/splash/splash.component.js +0 -45
  247. package/esm2015/lib/display/splash/splash.service.js +0 -34
  248. package/esm2015/lib/display/table/resizable-column.component.js +0 -23
  249. package/esm2015/lib/display/table/resizable-table.directive.js +0 -223
  250. package/esm2015/lib/display/table/searchable-table.component.js +0 -303
  251. package/esm2015/lib/display/table/table-detail-row.component.js +0 -21
  252. package/esm2015/lib/display/table/table-locked-column.component.js +0 -53
  253. package/esm2015/lib/display/table/table-master-header-row.component.js +0 -11
  254. package/esm2015/lib/display/table/table-master-row.component.js +0 -141
  255. package/esm2015/lib/display/table/table-pagination.component.js +0 -146
  256. package/esm2015/lib/display/table/table-selectable-row.component.js +0 -216
  257. package/esm2015/lib/display/table/table.component.js +0 -210
  258. package/esm2015/lib/display/tags/tag.js +0 -15
  259. package/esm2015/lib/display/tags/tags.component.js +0 -73
  260. package/esm2015/lib/display/toast/toast/toast.component.js +0 -70
  261. package/esm2015/lib/display/toast/toast.service.js +0 -34
  262. package/esm2015/lib/display/toast/toaster/toaster.component.js +0 -117
  263. package/esm2015/lib/display/tree/tree.component.js +0 -100
  264. package/esm2015/lib/display/view-overlay/view-overlay.component.js +0 -50
  265. package/esm2015/lib/shared/directives/click-area-for/click-area-for.directive.js +0 -25
  266. package/esm2015/lib/shared/directives/if-viewport-width/if-viewport-width.directive.js +0 -112
  267. package/esm2015/lib/shared/directives/popup/popup-container.directive.js +0 -160
  268. package/esm2015/lib/shared/display/pipes/date-display.pipe.js +0 -49
  269. package/esm2015/lib/shared/display/pipes/highlight-text.pipe.js +0 -26
  270. package/esm2015/lib/shared/display/pipes/relative-date.pipe.js +0 -49
  271. package/esm2015/lib/shared/display/pipes/row-count.pipe.js +0 -47
  272. package/esm2015/lib/shared/display/pipes/time-display.pipe.js +0 -40
  273. package/esm2015/lib/shared/form-group.helper.js +0 -65
  274. package/esm2015/lib/shared/page/page-base/page-base.component.js +0 -356
  275. package/esm2015/lib/shared/page/page-title/page-title.component.js +0 -19
  276. package/esm2015/lib/shared/page/page-view/page-view.component.js +0 -89
  277. package/esm2015/lib/shared/testing/page-base-component-test-helper.spec.js +0 -35
  278. package/esm2015/lib/shared/testing/public-mocks.spec.js +0 -126
  279. package/esm2015/lib/shared/user-preference.service.js +0 -15
  280. package/esm2015/lib/shared/wizard/wizard-base/wizard-base.component.js +0 -260
  281. package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +0 -54
  282. package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +0 -18
  283. package/fesm2015/energycap-components.js +0 -9549
  284. package/fesm2015/energycap-components.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../spinner/spinner.component";
4
+ import * as i2 from "../../controls/button/button.component";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@ngx-translate/core";
7
+ export class Overlay {
8
+ constructor(status, message) {
9
+ this.status = 'hasData';
10
+ this.message = '';
11
+ this.setStatus(status, message);
12
+ }
13
+ setStatus(status, message, action, noDataTemplate, overlayClassList) {
14
+ this.status = status;
15
+ this.message = message || '';
16
+ this.action = action || undefined;
17
+ this.noDataTemplate = noDataTemplate || undefined;
18
+ this.overlayClassList = overlayClassList || '';
19
+ }
20
+ }
21
+ /**
22
+ * Wraps content in order to show pending, error, and no data states with an optional message/noDataTemplate
23
+ */
24
+ export class ViewOverlayComponent {
25
+ constructor() {
26
+ this.status = 'hasData';
27
+ }
28
+ setStatus(status, message, action, noDataTemplate) {
29
+ this.status = status;
30
+ this.message = message || '';
31
+ this.action = action || undefined;
32
+ this.noDataTemplate = noDataTemplate || undefined;
33
+ }
34
+ actionClicked(event) {
35
+ if (this.action && this.action.onClick) {
36
+ this.action.onClick(event);
37
+ }
38
+ }
39
+ }
40
+ ViewOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ViewOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ ViewOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ViewOverlayComponent, selector: "[ecOverlay]", inputs: { status: "status", message: "message", action: "action", noDataTemplate: "noDataTemplate", displayAsMask: "displayAsMask", overlayClassList: "overlayClassList" }, ngImport: i0, template: "<!-- Transcluded Content -->\r\n<ng-content *ngIf=\"displayAsMask || (!displayAsMask && status === 'hasData')\"></ng-content>\r\n<!--Used by GI tests to know the overlay status whether we use ngIf or mask version. No visual impact-->\r\n<span [hidden]=\"true\"\r\n\t class=\"overlay-status-{{status}}\"></span>\r\n<!-- Overlay goes last so it is rendered on top of preceding content due to source order -->\r\n<div *ngIf=\"status !== 'hasData'\"\r\n\t class=\"overlay flex-grow {{overlayClassList}}\"\r\n\t [ngClass]=\"{'not-mask': !displayAsMask,\r\n\t\t\t\t'overlay-error': status === 'error',\r\n\t\t\t\t'overlay-nodata': status === 'noData',\r\n\t\t\t\t'overlay-pending': status === 'pending'}\">\r\n\r\n\t<!--Pending Spinner-->\r\n\t<ec-spinner [hidden]=\"status !== 'pending'\"></ec-spinner>\r\n\r\n\t<ng-template [ngIf]=\"status === 'noData' && noDataTemplate\">\r\n\t\t<ng-container *ngTemplateOutlet=\"noDataTemplate\"></ng-container>\r\n\t</ng-template>\r\n\r\n\t<ng-container *ngIf=\"(status === 'noData' && !noDataTemplate) || status !== 'noData'\">\r\n\t\t<!--Status Message-->\r\n\t\t<div id=\"statusMessage\"\r\n\t\t\t class=\"message\"\r\n\t\t\t *ngIf=\"message\"\r\n\t\t\t [ngClass]=\"{'error': status === 'error', 'mt-1': status === 'pending'}\"\r\n\t\t\t [innerHtml]=\"message | translate\">\r\n\t\t</div>\r\n\r\n\t\t<!-- Action -->\r\n\t\t<ec-button type=\"common\"\r\n\t\t\t\t class=\"mt-3\"\r\n\t\t\t\t *ngIf=\"action?.onClick\"\r\n\t\t\t\t [icon]=\"action?.icon\"\r\n\t\t\t\t (clicked)=\"actionClicked($event)\"\r\n\t\t\t\t [label]=\"action?.label\"\r\n\t\t\t\t [hidden]=\"status === 'pending'\">\r\n\t\t</ec-button>\r\n\t</ng-container>\r\n\r\n</div>", styles: [":host{position:relative}:host(.bg-body)>.overlay{background-color:var(--ec-background-color-body)}:host(.bg-body).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}:host(.bg-content)>.overlay{background-color:var(--ec-background-color)}:host(.bg-content).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}.overlay{align-items:center;background-color:var(--ec-background-color);display:flex;flex-direction:column;justify-content:center;padding:3rem 4rem;z-index:var(--ec-z-index-overlay);right:0;top:0;position:absolute;bottom:0;left:0}.overlay.not-mask{position:relative;min-height:100%}.message{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-title)}.message.error{color:var(--ec-color-danger);font-size:var(--ec-font-size-title)}\n"], components: [{ type: i1.SpinnerComponent, selector: "ec-spinner" }, { type: i2.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i4.TranslatePipe } });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ViewOverlayComponent, decorators: [{
43
+ type: Component,
44
+ args: [{ selector: '[ecOverlay]', template: "<!-- Transcluded Content -->\r\n<ng-content *ngIf=\"displayAsMask || (!displayAsMask && status === 'hasData')\"></ng-content>\r\n<!--Used by GI tests to know the overlay status whether we use ngIf or mask version. No visual impact-->\r\n<span [hidden]=\"true\"\r\n\t class=\"overlay-status-{{status}}\"></span>\r\n<!-- Overlay goes last so it is rendered on top of preceding content due to source order -->\r\n<div *ngIf=\"status !== 'hasData'\"\r\n\t class=\"overlay flex-grow {{overlayClassList}}\"\r\n\t [ngClass]=\"{'not-mask': !displayAsMask,\r\n\t\t\t\t'overlay-error': status === 'error',\r\n\t\t\t\t'overlay-nodata': status === 'noData',\r\n\t\t\t\t'overlay-pending': status === 'pending'}\">\r\n\r\n\t<!--Pending Spinner-->\r\n\t<ec-spinner [hidden]=\"status !== 'pending'\"></ec-spinner>\r\n\r\n\t<ng-template [ngIf]=\"status === 'noData' && noDataTemplate\">\r\n\t\t<ng-container *ngTemplateOutlet=\"noDataTemplate\"></ng-container>\r\n\t</ng-template>\r\n\r\n\t<ng-container *ngIf=\"(status === 'noData' && !noDataTemplate) || status !== 'noData'\">\r\n\t\t<!--Status Message-->\r\n\t\t<div id=\"statusMessage\"\r\n\t\t\t class=\"message\"\r\n\t\t\t *ngIf=\"message\"\r\n\t\t\t [ngClass]=\"{'error': status === 'error', 'mt-1': status === 'pending'}\"\r\n\t\t\t [innerHtml]=\"message | translate\">\r\n\t\t</div>\r\n\r\n\t\t<!-- Action -->\r\n\t\t<ec-button type=\"common\"\r\n\t\t\t\t class=\"mt-3\"\r\n\t\t\t\t *ngIf=\"action?.onClick\"\r\n\t\t\t\t [icon]=\"action?.icon\"\r\n\t\t\t\t (clicked)=\"actionClicked($event)\"\r\n\t\t\t\t [label]=\"action?.label\"\r\n\t\t\t\t [hidden]=\"status === 'pending'\">\r\n\t\t</ec-button>\r\n\t</ng-container>\r\n\r\n</div>", styles: [":host{position:relative}:host(.bg-body)>.overlay{background-color:var(--ec-background-color-body)}:host(.bg-body).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}:host(.bg-content)>.overlay{background-color:var(--ec-background-color)}:host(.bg-content).is-translucent>.overlay{background-color:var(--ec-background-color-overlay)}.overlay{align-items:center;background-color:var(--ec-background-color);display:flex;flex-direction:column;justify-content:center;padding:3rem 4rem;z-index:var(--ec-z-index-overlay);right:0;top:0;position:absolute;bottom:0;left:0}.overlay.not-mask{position:relative;min-height:100%}.message{color:var(--ec-color-secondary-dark);font-size:var(--ec-font-size-title)}.message.error{color:var(--ec-color-danger);font-size:var(--ec-font-size-title)}\n"] }]
45
+ }], propDecorators: { status: [{
46
+ type: Input
47
+ }], message: [{
48
+ type: Input
49
+ }], action: [{
50
+ type: Input
51
+ }], noDataTemplate: [{
52
+ type: Input
53
+ }], displayAsMask: [{
54
+ type: Input
55
+ }], overlayClassList: [{
56
+ type: Input
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1vdmVybGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9kaXNwbGF5L3ZpZXctb3ZlcmxheS92aWV3LW92ZXJsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2Rpc3BsYXkvdmlldy1vdmVybGF5L3ZpZXctb3ZlcmxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBSTlELE1BQU0sT0FBTyxPQUFPO0lBV2xCLFlBQVksTUFBa0IsRUFBRSxPQUFnQjtRQU5oRCxXQUFNLEdBQWUsU0FBUyxDQUFDO1FBQy9CLFlBQU8sR0FBWSxFQUFFLENBQUM7UUFNcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFrQixFQUFFLE9BQWdCLEVBQUUsTUFBZ0IsRUFBRSxjQUFpQyxFQUFFLGdCQUF5QjtRQUM1SCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxJQUFJLFNBQVMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQUdEOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFdBQU0sR0FBZSxTQUFTLENBQUM7S0E2QnpDO0lBWkMsU0FBUyxDQUFDLE1BQWtCLEVBQUUsT0FBZ0IsRUFBRSxNQUFnQixFQUFFLGNBQWlDO1FBQ2pHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxTQUFTLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLElBQUksU0FBUyxDQUFDO0lBQ3BELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDOztrSEE3QlUsb0JBQW9CO3NHQUFwQixvQkFBb0IsK05DcENqQyx5cERBd0NNOzRGREpPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxhQUFhOzhCQUtkLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vY29udHJvbHMvbmF2aWdhdGlvbi9uYXYtaXRlbSc7XHJcbmltcG9ydCB7IERpc3BsYXlTdGF0dXMsIFZpZXdTdGF0dXMgfSBmcm9tICcuLi8uLi9zaGFyZWQvZGlzcGxheSc7XHJcblxyXG5leHBvcnQgY2xhc3MgT3ZlcmxheSBpbXBsZW1lbnRzIERpc3BsYXlTdGF0dXMge1xyXG4gIC8qKiAgQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZCBkdWUgdG8gbm9EYXRhVGVtcGxhdGUgYmVpbmcgcHJlZmVyZWQgKi9cclxuICBhY3Rpb24/OiBOYXZJdGVtO1xyXG4gIG5vRGF0YVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICBkaXNwbGF5QXNNYXNrPzogYm9vbGVhbjtcclxuICBzdGF0dXM6IFZpZXdTdGF0dXMgPSAnaGFzRGF0YSc7XHJcbiAgbWVzc2FnZT86IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKiogQWRkaXRpb24gY3NzIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGhlIC5vdmVybGF5IGVsZW1lbnQgKi9cclxuICBvdmVybGF5Q2xhc3NMaXN0Pzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihzdGF0dXM6IFZpZXdTdGF0dXMsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0U3RhdHVzKHN0YXR1cywgbWVzc2FnZSk7XHJcbiAgfVxyXG4gIHNldFN0YXR1cyhzdGF0dXM6IFZpZXdTdGF0dXMsIG1lc3NhZ2U/OiBzdHJpbmcsIGFjdGlvbj86IE5hdkl0ZW0sIG5vRGF0YVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55Piwgb3ZlcmxheUNsYXNzTGlzdD86IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICcnO1xyXG4gICAgdGhpcy5hY3Rpb24gPSBhY3Rpb24gfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5ub0RhdGFUZW1wbGF0ZSA9IG5vRGF0YVRlbXBsYXRlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMub3ZlcmxheUNsYXNzTGlzdCA9IG92ZXJsYXlDbGFzc0xpc3QgfHwgJyc7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuLyoqXHJcbiAqIFdyYXBzIGNvbnRlbnQgaW4gb3JkZXIgdG8gc2hvdyBwZW5kaW5nLCBlcnJvciwgYW5kIG5vIGRhdGEgc3RhdGVzIHdpdGggYW4gb3B0aW9uYWwgbWVzc2FnZS9ub0RhdGFUZW1wbGF0ZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdbZWNPdmVybGF5XScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy1vdmVybGF5LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZpZXdPdmVybGF5Q29tcG9uZW50IGltcGxlbWVudHMgT3ZlcmxheSB7XHJcbiAgQElucHV0KCkgc3RhdHVzOiBWaWV3U3RhdHVzID0gJ2hhc0RhdGEnO1xyXG4gIEBJbnB1dCgpIG1lc3NhZ2U/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKiAgQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZCBkdWUgdG8gbm9EYXRhVGVtcGxhdGUgYmVpbmcgcHJlZmVyZWQgKi9cclxuICBASW5wdXQoKSBhY3Rpb24/OiBOYXZJdGVtIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIG5vRGF0YVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLyoqXHJcbiAgICogTWFzayAobm90IHJlbW92ZSkgdGhlIHRyYW5zY2x1ZGVkIGNvbnRlbnQgZnJvbSB0aGUgZG9tIHdoaWxlIG5vdCBoYXNEYXRhIHN0YXR1cy5cclxuICAgKi9cclxuICBASW5wdXQoKSBkaXNwbGF5QXNNYXNrPzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIFxyXG4gICAqIEFkZGl0aW9uYWwgY3NzIGNsYXNzZXMgdG8gYXBwbHkgdG8gdGhlIC5vdmVybGF5IGVsZW1lbnQgXHJcbiAgICovXHJcbiAgQElucHV0KCkgb3ZlcmxheUNsYXNzTGlzdD86IHN0cmluZztcclxuXHJcbiAgc2V0U3RhdHVzKHN0YXR1czogVmlld1N0YXR1cywgbWVzc2FnZT86IHN0cmluZywgYWN0aW9uPzogTmF2SXRlbSwgbm9EYXRhVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cztcclxuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgJyc7XHJcbiAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbiB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLm5vRGF0YVRlbXBsYXRlID0gbm9EYXRhVGVtcGxhdGUgfHwgdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgYWN0aW9uQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hY3Rpb24gJiYgdGhpcy5hY3Rpb24ub25DbGljaykge1xyXG4gICAgICB0aGlzLmFjdGlvbi5vbkNsaWNrKGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPCEtLSBUcmFuc2NsdWRlZCBDb250ZW50IC0tPlxyXG48bmctY29udGVudCAqbmdJZj1cImRpc3BsYXlBc01hc2sgfHwgKCFkaXNwbGF5QXNNYXNrICYmIHN0YXR1cyA9PT0gJ2hhc0RhdGEnKVwiPjwvbmctY29udGVudD5cclxuPCEtLVVzZWQgYnkgR0kgdGVzdHMgdG8ga25vdyB0aGUgb3ZlcmxheSBzdGF0dXMgd2hldGhlciB3ZSB1c2UgbmdJZiBvciBtYXNrIHZlcnNpb24uIE5vIHZpc3VhbCBpbXBhY3QtLT5cclxuPHNwYW4gW2hpZGRlbl09XCJ0cnVlXCJcclxuXHQgIGNsYXNzPVwib3ZlcmxheS1zdGF0dXMte3tzdGF0dXN9fVwiPjwvc3Bhbj5cclxuPCEtLSBPdmVybGF5IGdvZXMgbGFzdCBzbyBpdCBpcyByZW5kZXJlZCBvbiB0b3Agb2YgcHJlY2VkaW5nIGNvbnRlbnQgZHVlIHRvIHNvdXJjZSBvcmRlciAtLT5cclxuPGRpdiAqbmdJZj1cInN0YXR1cyAhPT0gJ2hhc0RhdGEnXCJcclxuXHQgY2xhc3M9XCJvdmVybGF5IGZsZXgtZ3JvdyB7e292ZXJsYXlDbGFzc0xpc3R9fVwiXHJcblx0IFtuZ0NsYXNzXT1cInsnbm90LW1hc2snOiAhZGlzcGxheUFzTWFzayxcclxuXHRcdFx0XHQnb3ZlcmxheS1lcnJvcic6IHN0YXR1cyA9PT0gJ2Vycm9yJyxcclxuXHRcdFx0XHQnb3ZlcmxheS1ub2RhdGEnOiBzdGF0dXMgPT09ICdub0RhdGEnLFxyXG5cdFx0XHRcdCdvdmVybGF5LXBlbmRpbmcnOiBzdGF0dXMgPT09ICdwZW5kaW5nJ31cIj5cclxuXHJcblx0PCEtLVBlbmRpbmcgU3Bpbm5lci0tPlxyXG5cdDxlYy1zcGlubmVyIFtoaWRkZW5dPVwic3RhdHVzICE9PSAncGVuZGluZydcIj48L2VjLXNwaW5uZXI+XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0dXMgPT09ICdub0RhdGEnICYmIG5vRGF0YVRlbXBsYXRlXCI+XHJcblx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9EYXRhVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHQ8bmctY29udGFpbmVyICpuZ0lmPVwiKHN0YXR1cyA9PT0gJ25vRGF0YScgJiYgIW5vRGF0YVRlbXBsYXRlKSB8fCBzdGF0dXMgIT09ICdub0RhdGEnXCI+XHJcblx0XHQ8IS0tU3RhdHVzIE1lc3NhZ2UtLT5cclxuXHRcdDxkaXYgaWQ9XCJzdGF0dXNNZXNzYWdlXCJcclxuXHRcdFx0IGNsYXNzPVwibWVzc2FnZVwiXHJcblx0XHRcdCAqbmdJZj1cIm1lc3NhZ2VcIlxyXG5cdFx0XHQgW25nQ2xhc3NdPVwieydlcnJvcic6IHN0YXR1cyA9PT0gJ2Vycm9yJywgJ210LTEnOiBzdGF0dXMgPT09ICdwZW5kaW5nJ31cIlxyXG5cdFx0XHQgW2lubmVySHRtbF09XCJtZXNzYWdlIHwgdHJhbnNsYXRlXCI+XHJcblx0XHQ8L2Rpdj5cclxuXHJcblx0XHQ8IS0tIEFjdGlvbiAtLT5cclxuXHRcdDxlYy1idXR0b24gdHlwZT1cImNvbW1vblwiXHJcblx0XHRcdFx0ICAgY2xhc3M9XCJtdC0zXCJcclxuXHRcdFx0XHQgICAqbmdJZj1cImFjdGlvbj8ub25DbGlja1wiXHJcblx0XHRcdFx0ICAgW2ljb25dPVwiYWN0aW9uPy5pY29uXCJcclxuXHRcdFx0XHQgICAoY2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkKCRldmVudClcIlxyXG5cdFx0XHRcdCAgIFtsYWJlbF09XCJhY3Rpb24/LmxhYmVsXCJcclxuXHRcdFx0XHQgICBbaGlkZGVuXT1cInN0YXR1cyA9PT0gJ3BlbmRpbmcnXCI+XHJcblx0XHQ8L2VjLWJ1dHRvbj5cclxuXHQ8L25nLWNvbnRhaW5lcj5cclxuXHJcbjwvZGl2PiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { Directive, Input, HostListener, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class ClickAreaForDirective {
4
+ constructor() { }
5
+ ngOnInit() {
6
+ this.isTargetClickable = typeof this.targetEl?.dispatchEvent === 'function';
7
+ }
8
+ onClick(event) {
9
+ if (this.isTargetClickable) {
10
+ event.preventDefault();
11
+ this.targetEl.dispatchEvent(new Event('click'));
12
+ }
13
+ }
14
+ }
15
+ ClickAreaForDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClickAreaForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
16
+ ClickAreaForDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: ClickAreaForDirective, selector: "[ecClickAreaFor]", inputs: { targetEl: ["ecClickAreaFor", "targetEl"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.cursor-pointer": "this.targetEl" } }, ngImport: i0 });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClickAreaForDirective, decorators: [{
18
+ type: Directive,
19
+ args: [{
20
+ selector: '[ecClickAreaFor]'
21
+ }]
22
+ }], ctorParameters: function () { return []; }, propDecorators: { targetEl: [{
23
+ type: HostBinding,
24
+ args: ['class.cursor-pointer']
25
+ }, {
26
+ type: Input,
27
+ args: ['ecClickAreaFor']
28
+ }], onClick: [{
29
+ type: HostListener,
30
+ args: ['click', ['$event']]
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stYXJlYS1mb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL2NsaWNrLWFyZWEtZm9yL2NsaWNrLWFyZWEtZm9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQVNwRixNQUFNLE9BQU8scUJBQXFCO0lBUWhDLGdCQUFlLENBQUM7SUFFaEIsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxLQUFLLFVBQVUsQ0FBQztJQUM5RSxDQUFDO0lBRWtDLE9BQU8sQ0FBQyxLQUFZO1FBQ3JELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQzs7bUhBbkJVLHFCQUFxQjt1R0FBckIscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtpQkFDN0I7MEVBS1EsUUFBUTtzQkFGZCxXQUFXO3VCQUFDLHNCQUFzQjs7c0JBQ2xDLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVdZLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgSG9zdExpc3RlbmVyLCBIb3N0QmluZGluZywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENsaWNrYWJsZUVsZW1lbnQge1xyXG4gIGRpc3BhdGNoRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZDtcclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZWNDbGlja0FyZWFGb3JdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpY2tBcmVhRm9yRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXJzb3ItcG9pbnRlcicpXHJcbiAgQElucHV0KCdlY0NsaWNrQXJlYUZvcicpIFxyXG4gIHB1YmxpYyB0YXJnZXRFbD86IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBpc1RhcmdldENsaWNrYWJsZSE6IGJvb2xlYW47XHJcbiAgXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaXNUYXJnZXRDbGlja2FibGUgPSB0eXBlb2YgdGhpcy50YXJnZXRFbD8uZGlzcGF0Y2hFdmVudCA9PT0gJ2Z1bmN0aW9uJztcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgb25DbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmlzVGFyZ2V0Q2xpY2thYmxlKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMudGFyZ2V0RWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NsaWNrJykpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,111 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { debounceTime, takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../core/window.service";
6
+ /**
7
+ * Conditionally include content in the DOM based on the width of the viewport. Use to programmatically implement reponsive layouts and prevent duplicate markup and listeners.
8
+ * In most scenarios CSS media queries is sufficient to hide/show elements responsively. However, in some cases media queries would result in duplicate markup and listeners
9
+ * that could cause undesired side effects and it is preferred to us programmatic elements to achieve the layout.
10
+ */
11
+ export class IfViewportWidthDirective {
12
+ constructor(viewContainer, templateRef, windowService) {
13
+ this.viewContainer = viewContainer;
14
+ this.templateRef = templateRef;
15
+ this.windowService = windowService;
16
+ /**
17
+ * Used to unsubscribe when the directive is removed from the DOM
18
+ */
19
+ this.destroyed = new Subject();
20
+ /**
21
+ * Internally tracks whether the directive and its content is included in the DOM
22
+ */
23
+ this.isVisible = false;
24
+ }
25
+ ngOnInit() {
26
+ // Window may not available if this code is not being run on a browser platform.
27
+ // If there is no window or innerWidth abort initialization
28
+ if (this.windowService.innerWidth === undefined) {
29
+ return;
30
+ }
31
+ // Check for required values. If none are set, log error and abort initialization
32
+ if (!this.width) {
33
+ console.error(`A min or max width was not provided. Provide a value for 'min' or 'max' by assigning a single value or object to the directive. E.g. *ecIfViewportWidth="800" (assigned to min) or *ecIfViewportWidth="{min: 800, max: 1280}"`);
34
+ return;
35
+ }
36
+ else if (typeof this.width === 'number') {
37
+ this.minWidth = this.width;
38
+ }
39
+ else if (this.width !== undefined) {
40
+ this.minWidth = this.width.min;
41
+ this.maxWidth = this.width.max;
42
+ }
43
+ if (this.windowService.resized) {
44
+ this.windowService.resized.pipe(debounceTime(100), takeUntil(this.destroyed)).subscribe(() => {
45
+ this.updateVisibility();
46
+ });
47
+ }
48
+ this.updateVisibility();
49
+ }
50
+ /**
51
+ * Get the current viewport width and determin if the directive's content should be
52
+ * included in the DOM based on the min and max width settings
53
+ */
54
+ updateVisibility() {
55
+ const viewportWidth = this.windowService.innerWidth;
56
+ if (this.minWidth !== undefined && this.maxWidth !== undefined) {
57
+ if (viewportWidth >= this.minWidth && viewportWidth <= this.maxWidth) {
58
+ this.show();
59
+ }
60
+ else {
61
+ this.hide();
62
+ }
63
+ }
64
+ else if (this.minWidth !== undefined) {
65
+ if (viewportWidth >= this.minWidth) {
66
+ this.show();
67
+ }
68
+ else {
69
+ this.hide();
70
+ }
71
+ }
72
+ else if (this.maxWidth !== undefined) {
73
+ if (viewportWidth <= this.maxWidth) {
74
+ this.show();
75
+ }
76
+ else {
77
+ this.hide();
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * Add the directive's content to the DOM
83
+ */
84
+ show() {
85
+ if (!this.isVisible) {
86
+ this.viewContainer.createEmbeddedView(this.templateRef);
87
+ this.isVisible = true;
88
+ }
89
+ }
90
+ /**
91
+ * Remove the directive's content from the DOM
92
+ */
93
+ hide() {
94
+ if (this.isVisible) {
95
+ this.viewContainer.clear();
96
+ this.isVisible = false;
97
+ }
98
+ }
99
+ }
100
+ IfViewportWidthDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: IfViewportWidthDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1.WindowService }], target: i0.ɵɵFactoryTarget.Directive });
101
+ IfViewportWidthDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: IfViewportWidthDirective, selector: "[ecIfViewportWidth]", inputs: { width: ["ecIfViewportWidth", "width"] }, ngImport: i0 });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: IfViewportWidthDirective, decorators: [{
103
+ type: Directive,
104
+ args: [{
105
+ selector: '[ecIfViewportWidth]'
106
+ }]
107
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1.WindowService }]; }, propDecorators: { width: [{
108
+ type: Input,
109
+ args: ['ecIfViewportWidth']
110
+ }] } });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtdmlld3BvcnQtd2lkdGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL2lmLXZpZXdwb3J0LXdpZHRoL2lmLXZpZXdwb3J0LXdpZHRoLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBeUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHekQ7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFrQ25DLFlBQ1UsYUFBK0IsRUFDL0IsV0FBNkIsRUFDN0IsYUFBNEI7UUFGNUIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWJ0Qzs7V0FFRztRQUNLLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUVqRDs7V0FFRztRQUNLLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFNL0IsQ0FBQztJQUVFLFFBQVE7UUFDYixpRkFBaUY7UUFDakYsMkRBQTJEO1FBQzNELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFO1lBQy9DLE9BQU87U0FDUjtRQUVELGlGQUFpRjtRQUNqRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLCtOQUErTixDQUFDLENBQUM7WUFDL08sT0FBTztTQUNSO2FBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUM1QjthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRTtZQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUUsR0FBRyxFQUFFO2dCQUM1RixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVcsQ0FBQztRQUVyRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQzlELElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO1NBQ0Y7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO1NBQ0Y7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNiO1NBQ0Y7SUFFSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxJQUFJO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxJQUFJO1FBQ1YsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDeEI7SUFDSCxDQUFDOztzSEFqSFUsd0JBQXdCOzBHQUF4Qix3QkFBd0I7NEZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzs2SkFhb0MsS0FBSztzQkFBdkMsS0FBSzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFZpZXdDb250YWluZXJSZWYsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3dpbmRvdy5zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBDb25kaXRpb25hbGx5IGluY2x1ZGUgY29udGVudCBpbiB0aGUgRE9NIGJhc2VkIG9uIHRoZSB3aWR0aCBvZiB0aGUgdmlld3BvcnQuIFVzZSB0byBwcm9ncmFtbWF0aWNhbGx5IGltcGxlbWVudCByZXBvbnNpdmUgbGF5b3V0cyBhbmQgcHJldmVudCBkdXBsaWNhdGUgbWFya3VwIGFuZCBsaXN0ZW5lcnMuXHJcbiAqIEluIG1vc3Qgc2NlbmFyaW9zIENTUyBtZWRpYSBxdWVyaWVzIGlzIHN1ZmZpY2llbnQgdG8gaGlkZS9zaG93IGVsZW1lbnRzIHJlc3BvbnNpdmVseS4gSG93ZXZlciwgaW4gc29tZSBjYXNlcyBtZWRpYSBxdWVyaWVzIHdvdWxkIHJlc3VsdCBpbiBkdXBsaWNhdGUgbWFya3VwIGFuZCBsaXN0ZW5lcnNcclxuICogdGhhdCBjb3VsZCBjYXVzZSB1bmRlc2lyZWQgc2lkZSBlZmZlY3RzIGFuZCBpdCBpcyBwcmVmZXJyZWQgdG8gdXMgcHJvZ3JhbW1hdGljIGVsZW1lbnRzIHRvIGFjaGlldmUgdGhlIGxheW91dC5cclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2VjSWZWaWV3cG9ydFdpZHRoXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIElmVmlld3BvcnRXaWR0aERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIG1pbiBhbmQsIG9wdGlvbmFsbHksIG1heCB3aWR0aCBpbiBwaXhlbHMgdGhhdCB0aGUgdmlld3BvcnQgbXVzdCBiZSBpbiBvcmRlciB0byBpbmNsdWRlIHRoZSBkaXJlY3RpdmUgYW5kIGl0cyBjb250ZW50IGluIHRoZSBET00uXHJcbiAgICogQSBzaW5nbGUgbnVtYmVyIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWluIHdpZHRoLCBidXQgYW4gb2JqZWN0IHdpdGggbWluIGFuZCBtYXggbXVzdCBiZSB1c2VkIHRvIHNldCBhIG1pbiBhbmQgbWF4IHdpZHRoIG9yIGp1c3QgYSBtYXggd2lkdGguXHJcbiAgICogXHJcbiAgICogYGBgaHRtbFxyXG4gICAqIDxkaXYgKmVjSWZWaWV3cG9ydFdpZHRoPVwiNTAwXCI+Q29udGVudCB0byByZW5kZXIgaWYgdmlld3BvcnQgd2lkdGggaXMgPj0gNTAwcHg8L2Rpdj5cclxuICAgKiA8ZGl2ICplY0lmVmlld3BvcnRXaWR0aD1cInttYXg6IDgwMH1cIj5Db250ZW50IHRvIHJlbmRlciBpZiB0aGUgdmlld3BvcnQgd2lkdGggaXMgPD0gODAwcHg8L2Rpdj5cclxuICAgKiA8ZGl2ICplY0lmVmlld3BvcnRXaWR0aD1cInttaW46IDUwMCwgbWF4OiA4MDB9XCI+Q29udGVudCB0byByZW5kZXIgaWYgdGhlIHZpZXdwb3J0IHdpZHRoIGlzIGJldHdlZW4gNTAwcHggYW5kIDgwMHB4PC9kaXY+XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgQElucHV0KCdlY0lmVmlld3BvcnRXaWR0aCcpIHB1YmxpYyB3aWR0aCE6IG51bWJlciB8IHttaW4/OiBudW1iZXI7IG1heD86IG51bWJlcn07XHJcblxyXG4gIC8qKiBcclxuICAgKiBJZiBkZWZpbmVkLCB0aGUgd2lkdGggaW4gcGl4ZWxzIHRoYXQgdGhlIHZpZXdwb3J0IG11c3QgYmUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0aXZlIGFuZCBpdHMgY29udGVudCBpbiB0aGUgRE9NXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtaW5XaWR0aD86IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgZGVmaW5lZCwgdGhlIHdpZHRoIGluIHBpeGVscyB0aGF0IHRoZSB2aWV3cG9ydCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHRvIGluY2x1ZGUgdGhlIGRpcmVjdGl2ZSBhbmQgaXRzIGNvbnRlbiBpbiB0aGUgRE9NXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBtYXhXaWR0aD86IG51bWJlcjtcclxuXHJcbiAgLyoqIFxyXG4gICAqIFVzZWQgdG8gdW5zdWJzY3JpYmUgd2hlbiB0aGUgZGlyZWN0aXZlIGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZXN0cm95ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvKipcclxuICAgKiBJbnRlcm5hbGx5IHRyYWNrcyB3aGV0aGVyIHRoZSBkaXJlY3RpdmUgYW5kIGl0cyBjb250ZW50IGlzIGluY2x1ZGVkIGluIHRoZSBET01cclxuICAgKi9cclxuICBwcml2YXRlIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgXHJcbiAgICBwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCBcclxuICAgIHByaXZhdGUgd2luZG93U2VydmljZTogV2luZG93U2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIFdpbmRvdyBtYXkgbm90IGF2YWlsYWJsZSBpZiB0aGlzIGNvZGUgaXMgbm90IGJlaW5nIHJ1biBvbiBhIGJyb3dzZXIgcGxhdGZvcm0uIFxyXG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gd2luZG93IG9yIGlubmVyV2lkdGggYWJvcnQgaW5pdGlhbGl6YXRpb25cclxuICAgIGlmICh0aGlzLndpbmRvd1NlcnZpY2UuaW5uZXJXaWR0aCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBmb3IgcmVxdWlyZWQgdmFsdWVzLiBJZiBub25lIGFyZSBzZXQsIGxvZyBlcnJvciBhbmQgYWJvcnQgaW5pdGlhbGl6YXRpb25cclxuICAgIGlmICghdGhpcy53aWR0aCkgIHtcclxuICAgICAgY29uc29sZS5lcnJvcihgQSBtaW4gb3IgbWF4IHdpZHRoIHdhcyBub3QgcHJvdmlkZWQuIFByb3ZpZGUgYSB2YWx1ZSBmb3IgJ21pbicgb3IgJ21heCcgYnkgYXNzaWduaW5nIGEgc2luZ2xlIHZhbHVlIG9yIG9iamVjdCB0byB0aGUgZGlyZWN0aXZlLiBFLmcuICplY0lmVmlld3BvcnRXaWR0aD1cIjgwMFwiIChhc3NpZ25lZCB0byBtaW4pIG9yICplY0lmVmlld3BvcnRXaWR0aD1cInttaW46IDgwMCwgbWF4OiAxMjgwfVwiYCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMud2lkdGggPT09ICdudW1iZXInKSB7XHJcbiAgICAgIHRoaXMubWluV2lkdGggPSB0aGlzLndpZHRoO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLndpZHRoICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5taW5XaWR0aCA9IHRoaXMud2lkdGgubWluO1xyXG4gICAgICB0aGlzLm1heFdpZHRoID0gdGhpcy53aWR0aC5tYXg7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMud2luZG93U2VydmljZS5yZXNpemVkKSB7XHJcbiAgICAgIHRoaXMud2luZG93U2VydmljZS5yZXNpemVkLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSggKCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlzaWJpbGl0eSgpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIGN1cnJlbnQgdmlld3BvcnQgd2lkdGggYW5kIGRldGVybWluIGlmIHRoZSBkaXJlY3RpdmUncyBjb250ZW50IHNob3VsZCBiZVxyXG4gICAqIGluY2x1ZGVkIGluIHRoZSBET00gYmFzZWQgb24gdGhlIG1pbiBhbmQgbWF4IHdpZHRoIHNldHRpbmdzXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgY29uc3Qgdmlld3BvcnRXaWR0aCA9IHRoaXMud2luZG93U2VydmljZS5pbm5lcldpZHRoITtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMubWluV2lkdGggIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1heFdpZHRoICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHZpZXdwb3J0V2lkdGggPj0gdGhpcy5taW5XaWR0aCAmJiB2aWV3cG9ydFdpZHRoIDw9IHRoaXMubWF4V2lkdGgpIHtcclxuICAgICAgICB0aGlzLnNob3coKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLm1pbldpZHRoICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKHZpZXdwb3J0V2lkdGggPj0gdGhpcy5taW5XaWR0aCkge1xyXG4gICAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubWF4V2lkdGggIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodmlld3BvcnRXaWR0aCA8PSB0aGlzLm1heFdpZHRoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93KCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICAgXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGhlIGRpcmVjdGl2ZSdzIGNvbnRlbnQgdG8gdGhlIERPTVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2hvdygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1Zpc2libGUpIHtcclxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmKTtcclxuICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBkaXJlY3RpdmUncyBjb250ZW50IGZyb20gdGhlIERPTVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaGlkZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlzVmlzaWJsZSkge1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuICAgICAgdGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,163 @@
1
+ import { Directive, Input, Inject, EventEmitter } from '@angular/core';
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { fromEvent } from "rxjs";
4
+ import Popper from 'popper.js';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Primitive directive that popups a container using PopperJS
8
+ *
9
+ * @export
10
+ */
11
+ export class PopupContainerDirective {
12
+ /**
13
+ * Creates an instance of PopupContainerDirective.
14
+ * @param templateRef Reference to the popup template
15
+ * @param viewContainer Reference to the view container
16
+ * @param document Reference to Document
17
+ * @memberof PopupContainerDirective
18
+ */
19
+ constructor(templateRef, viewContainer, document, renderer) {
20
+ this.templateRef = templateRef;
21
+ this.viewContainer = viewContainer;
22
+ this.document = document;
23
+ this.renderer = renderer;
24
+ /**
25
+ * Emit the {@link PopupStatus} when it changes
26
+ */
27
+ this.popperStatusChange = new EventEmitter();
28
+ }
29
+ /**
30
+ * Angular onInit lifecycle hook
31
+ * @see https://angular.io/guide/lifecycle-hooks
32
+ */
33
+ ngOnInit() {
34
+ this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);
35
+ }
36
+ /**
37
+ * Angular onDestroy lifecycle hook. Close and delete references. Unsubscribe observables
38
+ * @see https://angular.io/guide/lifecycle-hooks
39
+ */
40
+ ngOnDestroy() {
41
+ this.hide();
42
+ }
43
+ /**
44
+ * Displays the templateRef as a popup
45
+ *
46
+ * @memberof PopupContainerDirective
47
+ */
48
+ show() {
49
+ if (PopupContainerDirective.GlobalPopupRef) {
50
+ if (PopupContainerDirective.GlobalPopupRef != this) {
51
+ PopupContainerDirective.GlobalPopupRef.hide();
52
+ PopupContainerDirective.GlobalPopupRef = undefined;
53
+ }
54
+ }
55
+ if (!this.globalCloseSubscription) {
56
+ this.globalCloseSubscription = fromEvent(this.document.body, "click").subscribe((event) => {
57
+ this.hide();
58
+ });
59
+ }
60
+ if (!this.popperRef) {
61
+ // Add the popper template as an embedded view since PopperJS
62
+ // manipulates DOM elements.
63
+ this.popupViewRef = this.viewContainer.createEmbeddedView(this.popup);
64
+ // Since popper needs real DOM elements, grab the first non-comment
65
+ // DOM element to use as our anchor.
66
+ let anchorElement = this.popupViewRef.rootNodes.find(elem => { return elem.nodeName !== "#text"; });
67
+ // Use the parents elements as our DOM elements to Popper
68
+ this.popperRef = new Popper(this.templateViewRef.rootNodes[0], anchorElement, this.popperOptions);
69
+ PopupContainerDirective.GlobalPopupRef = this;
70
+ this.popperStatusChange.emit('visible');
71
+ }
72
+ }
73
+ /**
74
+ * Hides the templateRef
75
+ *
76
+ * @memberof PopupContainerDirective
77
+ */
78
+ hide() {
79
+ if (this.globalCloseSubscription) {
80
+ this.globalCloseSubscription.unsubscribe();
81
+ this.globalCloseSubscription = undefined;
82
+ }
83
+ if (this.popperRef && this.popupViewRef) {
84
+ this.popupViewRef.destroy();
85
+ this.popperRef.destroy();
86
+ this.popperRef = undefined;
87
+ this.popperStatusChange.emit('hidden');
88
+ }
89
+ }
90
+ /**
91
+ * Updates the popup container position
92
+ */
93
+ update() {
94
+ if (this.popperRef) {
95
+ this.popperRef.update();
96
+ }
97
+ }
98
+ fixPosition(minWidthNone, appendToBody = false) {
99
+ if (this.popperRef && this.popperRef['reference'] && this.popperRef['popper']) {
100
+ let popupEl = this.popperRef['popper'];
101
+ // Reset width style previously assigned because the content may have
102
+ // changed and the auto width would be different
103
+ this.renderer.removeStyle(popupEl, 'width');
104
+ this.renderer.setStyle(popupEl, 'position', 'fixed');
105
+ if (appendToBody) {
106
+ const bodyEl = this.document.querySelector('body');
107
+ const popupParent = this.renderer.parentNode(popupEl);
108
+ if (popupParent !== bodyEl) {
109
+ this.renderer.appendChild(bodyEl, popupEl);
110
+ }
111
+ }
112
+ let toggleEl = this.popperRef['reference'];
113
+ let width = popupEl.offsetWidth;
114
+ let boundaries = popupEl.getBoundingClientRect();
115
+ let left = boundaries.left;
116
+ let coords = toggleEl.getBoundingClientRect();
117
+ // Set the top of our menu to the bottom of the toggle element
118
+ let top = coords.bottom;
119
+ if (this.popperOptions && this.popperOptions.placement) {
120
+ if (this.popperOptions.placement === 'bottom-start' || this.popperOptions.placement === 'top-start') {
121
+ left = coords.left;
122
+ }
123
+ else {
124
+ left = coords.right - ((minWidthNone || width > coords.width) ? width : coords.width);
125
+ }
126
+ }
127
+ // if it won't fit (with 10px space before hitting the window edge), flip it
128
+ if (boundaries.height + top + 10 > window.innerHeight) {
129
+ top = coords.top - boundaries.height;
130
+ }
131
+ this.renderer.setStyle(popupEl, 'transform', 'none');
132
+ this.renderer.setStyle(popupEl, 'left', left + 'px');
133
+ this.renderer.setStyle(popupEl, 'top', top + 'px');
134
+ this.renderer.setStyle(popupEl, 'width', width + 'px');
135
+ if (!minWidthNone) {
136
+ this.renderer.setStyle(popupEl, 'min-width', coords.width + 'px');
137
+ }
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Global reference to the currently displayed popup; only
143
+ * one popup directive can be in `show` state at a given time.
144
+ *
145
+ * @memberof PopupContainerDirective
146
+ */
147
+ PopupContainerDirective.GlobalPopupRef = undefined;
148
+ PopupContainerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PopupContainerDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
149
+ PopupContainerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.11", type: PopupContainerDirective, selector: "[ecPopup]", inputs: { popup: ["ecPopup", "popup"], popperOptions: ["options", "popperOptions"] }, ngImport: i0 });
150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PopupContainerDirective, decorators: [{
151
+ type: Directive,
152
+ args: [{ selector: '[ecPopup]' }]
153
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
154
+ type: Inject,
155
+ args: [DOCUMENT]
156
+ }] }, { type: i0.Renderer2 }]; }, propDecorators: { popup: [{
157
+ type: Input,
158
+ args: ['ecPopup']
159
+ }], popperOptions: [{
160
+ type: Input,
161
+ args: ['options']
162
+ }] } });
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtY29udGFpbmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9wb3B1cC9wb3B1cC1jb250YWluZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFnRixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JKLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLE1BQU0sTUFBTSxXQUFXLENBQUE7O0FBSzlCOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sdUJBQXVCO0lBcURoQzs7Ozs7O09BTUc7SUFDSCxZQUNZLFdBQTZCLEVBQzdCLGFBQStCLEVBQ2IsUUFBYSxFQUMvQixRQUFtQjtRQUhuQixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBcUIvQjs7V0FFRztRQUNJLHVCQUFrQixHQUE4QixJQUFJLFlBQVksRUFBZSxDQUFDO0lBdkJwRixDQUFDO0lBRUo7OztPQUdHO0lBQ0gsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUdEOzs7T0FHRztJQUNILFdBQVc7UUFDUCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQVNEOzs7O09BSUc7SUFDSSxJQUFJO1FBQ1AsSUFBSSx1QkFBdUIsQ0FBQyxjQUFjLEVBQUU7WUFDeEMsSUFBSSx1QkFBdUIsQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFO2dCQUNoRCx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzlDLHVCQUF1QixDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7YUFDdEQ7U0FDSjtRQUVELElBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDdEYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQiw2REFBNkQ7WUFDN0QsNEJBQTRCO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEUsbUVBQW1FO1lBQ25FLG9DQUFvQztZQUNwQyxJQUFJLGFBQWEsR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRzlHLHlEQUF5RDtZQUN6RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDakMsYUFBYSxFQUNiLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUd4Qix1QkFBdUIsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBRTlDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDO0lBR0Q7Ozs7T0FJRztJQUNJLElBQUk7UUFDUCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztTQUM1QztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztJQUVNLFdBQVcsQ0FBQyxZQUFxQixFQUFFLFlBQVksR0FBQyxLQUFLO1FBQ3hELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDMUUsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV2QyxxRUFBcUU7WUFDckUsZ0RBQWdEO1lBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXJELElBQUksWUFBWSxFQUFFO2dCQUNkLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxXQUFXLEtBQUssTUFBTSxFQUFFO29CQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7aUJBQzlDO2FBQ0o7WUFFRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDaEMsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDakQsSUFBSSxJQUFJLEdBQVUsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUU5Qyw4REFBOEQ7WUFDOUQsSUFBSSxHQUFHLEdBQVUsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUUvQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUU7Z0JBQ3BELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEtBQUssY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRTtvQkFDakcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNILElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3pGO2FBQ0o7WUFFRCw0RUFBNEU7WUFDNUUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDbkQsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQzthQUN4QztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFFdkQsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDckU7U0FDSjtJQUNMLENBQUM7O0FBak5EOzs7OztHQUtHO0FBQ1csc0NBQWMsR0FBNkIsU0FBVSxDQUFBO3FIQVIxRCx1QkFBdUIsNkVBK0RwQixRQUFRO3lHQS9EWCx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFEbkMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7OzBCQWdFM0IsTUFBTTsyQkFBQyxRQUFRO29FQWpESyxLQUFLO3NCQUE3QixLQUFLO3VCQUFDLFNBQVM7Z0JBT1MsYUFBYTtzQkFBckMsS0FBSzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIE9uSW5pdCwgRW1iZWRkZWRWaWV3UmVmLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiwgSW5qZWN0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCBQb3BwZXIgZnJvbSAncG9wcGVyLmpzJ1xyXG5cclxuZXhwb3J0IHR5cGUgUG9wdXBQbGFjZW1lbnQgPSAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICd0b3Atc3RhcnQnIHwgJ3RvcC1lbmQnIHwgJ2JvdHRvbS1zdGFydCcgfCAnYm90dG9tLWVuZCc7XHJcbmV4cG9ydCB0eXBlIFBvcHVwU3RhdHVzID0gJ3Zpc2libGUnIHwgJ2hpZGRlbic7XHJcblxyXG4vKipcclxuICogUHJpbWl0aXZlIGRpcmVjdGl2ZSB0aGF0IHBvcHVwcyBhIGNvbnRhaW5lciB1c2luZyBQb3BwZXJKU1xyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZWNQb3B1cF0nIH0pXHJcbmV4cG9ydCBjbGFzcyBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogIEdsb2JhbCByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgcG9wdXA7IG9ubHlcclxuICAgICAqICBvbmUgcG9wdXAgZGlyZWN0aXZlIGNhbiBiZSBpbiBgc2hvd2Agc3RhdGUgYXQgYSBnaXZlbiB0aW1lLlxyXG4gICAgICpcclxuICAgICAqIEBtZW1iZXJvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIEdsb2JhbFBvcHVwUmVmPzogUG9wdXBDb250YWluZXJEaXJlY3RpdmUgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZVJlZiBvZiBjb250YWluZXIgdG8gcG9wdXBcclxuICAgICAqXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgnZWNQb3B1cCcpIHB1YmxpYyBwb3B1cCE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3BwZXIgb3B0aW9uc1xyXG4gICAgICpcclxuICAgICAqIEBtZW1iZXJvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoJ29wdGlvbnMnKSBwdWJsaWMgcG9wcGVyT3B0aW9ucz86IFBvcHBlci5Qb3BwZXJPcHRpb25zO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgVmlldyBSZWZlcmVuY2VcclxuICAgICAqXHJcbiAgICAgKiBAbWVtYmVyb2YgUG9wdXBDb250YWluZXJEaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVZpZXdSZWYhOiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBvcHVwIFZpZXcgUmVmZXJlbmNlIChjb250YWluZXIpXHJcbiAgICAgKlxyXG4gICAgICogQG1lbWJlcm9mIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcG9wdXBWaWV3UmVmPzogRW1iZWRkZWRWaWV3UmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQb3BwZXIgUmVmZXJlbmNlXHJcbiAgICAgKlxyXG4gICAgICogQG1lbWJlcm9mIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcG9wcGVyUmVmPzogUG9wcGVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xvc2UtdG8tY2xpY2sgU3Vic2NyaXB0aW9uLiBUaGlzIGFsbG93cyB1cyB0byBjbG9zZSB0aGUgbWVudSB3aGVuIHlvdSBjbGljayBvbiB0aGUgYm9keS5cclxuICAgICAqIFdlIGF0dGFjaCBpdCB3aGVuIHRoZSBtZW51IGlzIG9wZW4gYW5kIGRldGFjaCBpdCBvbiBjbG9zZSwgdG8gbGltaXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBjbGljayBoYW5kbGVyXHJcbiAgICAgKiB3aGljaCBoZWxwcyB3aXRoIHBlcmZvcm1hbmNlIG9uIGEgcGFnZSB3aXRoIG1hbnkgcG9wdXAgY29udGFpbmVyc1xyXG4gICAgICpcclxuICAgICAqIEBtZW1iZXJvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdsb2JhbENsb3NlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZS5cclxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZVJlZiBSZWZlcmVuY2UgdG8gdGhlIHBvcHVwIHRlbXBsYXRlXHJcbiAgICAgKiBAcGFyYW0gdmlld0NvbnRhaW5lciBSZWZlcmVuY2UgdG8gdGhlIHZpZXcgY29udGFpbmVyXHJcbiAgICAgKiBAcGFyYW0gZG9jdW1lbnQgUmVmZXJlbmNlIHRvIERvY3VtZW50XHJcbiAgICAgKiBAbWVtYmVyb2YgUG9wdXBDb250YWluZXJEaXJlY3RpdmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogYW55LFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxyXG4gICAgKSB7fVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW5ndWxhciBvbkluaXQgbGlmZWN5Y2xlIGhvb2tcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2xpZmVjeWNsZS1ob29rc1xyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW5ndWxhciBvbkRlc3Ryb3kgbGlmZWN5Y2xlIGhvb2suIENsb3NlIGFuZCBkZWxldGUgcmVmZXJlbmNlcy4gVW5zdWJzY3JpYmUgb2JzZXJ2YWJsZXNcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2xpZmVjeWNsZS1ob29rc1xyXG4gICAgICovXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbWl0IHRoZSB7QGxpbmsgUG9wdXBTdGF0dXN9IHdoZW4gaXQgY2hhbmdlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcG9wcGVyU3RhdHVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UG9wdXBTdGF0dXM+ID0gbmV3IEV2ZW50RW1pdHRlcjxQb3B1cFN0YXR1cz4oKTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEaXNwbGF5cyB0aGUgdGVtcGxhdGVSZWYgYXMgYSBwb3B1cFxyXG4gICAgICpcclxuICAgICAqIEBtZW1iZXJvZiBQb3B1cENvbnRhaW5lckRpcmVjdGl2ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcclxuICAgICAgICBpZiAoUG9wdXBDb250YWluZXJEaXJlY3RpdmUuR2xvYmFsUG9wdXBSZWYpIHtcclxuICAgICAgICAgICAgaWYgKFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLkdsb2JhbFBvcHVwUmVmICE9IHRoaXMpIHtcclxuICAgICAgICAgICAgICAgIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLkdsb2JhbFBvcHVwUmVmLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLkdsb2JhbFBvcHVwUmVmID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZighdGhpcy5nbG9iYWxDbG9zZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmdsb2JhbENsb3NlU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQuYm9keSwgXCJjbGlja1wiKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucG9wcGVyUmVmKSB7XHJcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgcG9wcGVyIHRlbXBsYXRlIGFzIGFuIGVtYmVkZGVkIHZpZXcgc2luY2UgUG9wcGVySlNcclxuICAgICAgICAgICAgLy8gbWFuaXB1bGF0ZXMgRE9NIGVsZW1lbnRzLlxyXG4gICAgICAgICAgICB0aGlzLnBvcHVwVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5wb3B1cCk7XHJcblxyXG4gICAgICAgICAgICAvLyBTaW5jZSBwb3BwZXIgbmVlZHMgcmVhbCBET00gZWxlbWVudHMsIGdyYWIgdGhlIGZpcnN0IG5vbi1jb21tZW50XHJcbiAgICAgICAgICAgIC8vIERPTSBlbGVtZW50IHRvIHVzZSBhcyBvdXIgYW5jaG9yLlxyXG4gICAgICAgICAgICBsZXQgYW5jaG9yRWxlbWVudCA9ICh0aGlzLnBvcHVwVmlld1JlZi5yb290Tm9kZXMgYXMgYW55W10pLmZpbmQoZWxlbSA9PiB7IHJldHVybiBlbGVtLm5vZGVOYW1lICE9PSBcIiN0ZXh0XCIgfSk7XHJcblxyXG5cclxuICAgICAgICAgICAgLy8gVXNlIHRoZSBwYXJlbnRzIGVsZW1lbnRzIGFzIG91ciBET00gZWxlbWVudHMgdG8gUG9wcGVyXHJcbiAgICAgICAgICAgIHRoaXMucG9wcGVyUmVmID0gbmV3IFBvcHBlcihcclxuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVWaWV3UmVmLnJvb3ROb2Rlc1swXSxcclxuICAgICAgICAgICAgICAgIGFuY2hvckVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvcHBlck9wdGlvbnMpO1xyXG5cclxuXHJcbiAgICAgICAgICAgIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlLkdsb2JhbFBvcHVwUmVmID0gdGhpcztcclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9wcGVyU3RhdHVzQ2hhbmdlLmVtaXQoJ3Zpc2libGUnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGlkZXMgdGhlIHRlbXBsYXRlUmVmXHJcbiAgICAgKlxyXG4gICAgICogQG1lbWJlcm9mIFBvcHVwQ29udGFpbmVyRGlyZWN0aXZlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoaWRlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmdsb2JhbENsb3NlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsQ2xvc2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5nbG9iYWxDbG9zZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnBvcHBlclJlZiAmJiB0aGlzLnBvcHVwVmlld1JlZikge1xyXG4gICAgICAgICAgICB0aGlzLnBvcHVwVmlld1JlZi5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wcGVyUmVmLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgdGhpcy5wb3BwZXJSZWYgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIHRoaXMucG9wcGVyU3RhdHVzQ2hhbmdlLmVtaXQoJ2hpZGRlbicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZXMgdGhlIHBvcHVwIGNvbnRhaW5lciBwb3NpdGlvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcHBlclJlZikge1xyXG4gICAgICAgICAgICB0aGlzLnBvcHBlclJlZi51cGRhdGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGZpeFBvc2l0aW9uKG1pbldpZHRoTm9uZT86Ym9vbGVhbiwgYXBwZW5kVG9Cb2R5PWZhbHNlICk6dm9pZCB7XHJcbiAgICAgICAgaWYodGhpcy5wb3BwZXJSZWYgJiYgdGhpcy5wb3BwZXJSZWZbJ3JlZmVyZW5jZSddICYmIHRoaXMucG9wcGVyUmVmWydwb3BwZXInXSkge1xyXG4gICAgICAgICAgICBsZXQgcG9wdXBFbCA9IHRoaXMucG9wcGVyUmVmWydwb3BwZXInXTtcclxuXHJcbiAgICAgICAgICAgIC8vIFJlc2V0IHdpZHRoIHN0eWxlIHByZXZpb3VzbHkgYXNzaWduZWQgYmVjYXVzZSB0aGUgY29udGVudCBtYXkgaGF2ZVxyXG4gICAgICAgICAgICAvLyBjaGFuZ2VkIGFuZCB0aGUgYXV0byB3aWR0aCB3b3VsZCBiZSBkaWZmZXJlbnRcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZShwb3B1cEVsLCAnd2lkdGgnKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocG9wdXBFbCwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYXBwZW5kVG9Cb2R5KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5RWwgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBvcHVwUGFyZW50ID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHBvcHVwRWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBvcHVwUGFyZW50ICE9PSBib2R5RWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGJvZHlFbCwgcG9wdXBFbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCB0b2dnbGVFbCA9IHRoaXMucG9wcGVyUmVmWydyZWZlcmVuY2UnXTtcclxuICAgICAgICAgICAgbGV0IHdpZHRoID0gcG9wdXBFbC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgbGV0IGJvdW5kYXJpZXMgPSBwb3B1cEVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBsZXQgbGVmdDpudW1iZXIgPSBib3VuZGFyaWVzLmxlZnQ7XHJcbiAgICAgICAgICAgIGxldCBjb29yZHMgPSB0b2dnbGVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNldCB0aGUgdG9wIG9mIG91ciBtZW51IHRvIHRoZSBib3R0b20gb2YgdGhlIHRvZ2dsZSBlbGVtZW50XHJcbiAgICAgICAgICAgIGxldCB0b3A6bnVtYmVyID0gY29vcmRzLmJvdHRvbTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcHBlck9wdGlvbnMgJiYgdGhpcy5wb3BwZXJPcHRpb25zLnBsYWNlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucG9wcGVyT3B0aW9ucy5wbGFjZW1lbnQgPT09ICdib3R0b20tc3RhcnQnIHx8IHRoaXMucG9wcGVyT3B0aW9ucy5wbGFjZW1lbnQgPT09ICd0b3Atc3RhcnQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGNvb3Jkcy5sZWZ0O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gY29vcmRzLnJpZ2h0IC0gKChtaW5XaWR0aE5vbmUgfHwgd2lkdGggPiBjb29yZHMud2lkdGgpID8gd2lkdGggOiBjb29yZHMud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBpZiBpdCB3b24ndCBmaXQgKHdpdGggMTBweCBzcGFjZSBiZWZvcmUgaGl0dGluZyB0aGUgd2luZG93IGVkZ2UpLCBmbGlwIGl0XHJcbiAgICAgICAgICAgIGlmIChib3VuZGFyaWVzLmhlaWdodCArIHRvcCArIDEwID4gd2luZG93LmlubmVySGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICB0b3AgPSBjb29yZHMudG9wIC0gYm91bmRhcmllcy5oZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocG9wdXBFbCwgJ3RyYW5zZm9ybScsICdub25lJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocG9wdXBFbCwgJ2xlZnQnLCBsZWZ0ICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUocG9wdXBFbCwgJ3RvcCcsIHRvcCArICdweCcpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBvcHVwRWwsICd3aWR0aCcsIHdpZHRoICsgJ3B4Jyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIW1pbldpZHRoTm9uZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShwb3B1cEVsLCAnbWluLXdpZHRoJywgY29vcmRzLndpZHRoICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,50 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { DateTimeHelper } from '../../../core/date-time-helper';
3
+ import moment from 'moment';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../user-preference.service";
6
+ /**
7
+ * Format a date to the user's preference for display
8
+ */
9
+ export class DateDisplayPipe {
10
+ constructor(userPreferenceService) {
11
+ this.userPreferenceService = userPreferenceService;
12
+ this.lastFormatString = 'MM/DD/YYYY';
13
+ }
14
+ /**
15
+ * Format a date for display, accounting for user's display preferences.
16
+ *
17
+ * If {@see date} is null or undefined, or the end of time, returns empty string
18
+ */
19
+ transform(date, showEndOfTime, showTime, showSeconds) {
20
+ let display = '';
21
+ let formatString = '';
22
+ if (date && moment(date).isValid() && (showEndOfTime || !DateTimeHelper.isEndOfTime(date))) {
23
+ // use user-preferred formats
24
+ this.userPreferenceService.getPreferences().subscribe(result => {
25
+ //if preferences exist then format date to users preference
26
+ //otherwise use the last user preference
27
+ if (result.preference) {
28
+ formatString = result.preference.dateFormat;
29
+ if (showTime) {
30
+ let timeFormat = result.preference.timeFormat;
31
+ if (!showSeconds) {
32
+ timeFormat = timeFormat.replace(':ss', '');
33
+ }
34
+ formatString += ` ${timeFormat}`;
35
+ }
36
+ this.lastFormatString = formatString;
37
+ }
38
+ });
39
+ display = moment(date).format(this.lastFormatString);
40
+ }
41
+ return display;
42
+ }
43
+ }
44
+ DateDisplayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateDisplayPipe, deps: [{ token: i1.UserPreferenceService }], target: i0.ɵɵFactoryTarget.Pipe });
45
+ DateDisplayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateDisplayPipe, name: "dateDisplay" });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: DateDisplayPipe, decorators: [{
47
+ type: Pipe,
48
+ args: [{ name: 'dateDisplay' }]
49
+ }], ctorParameters: function () { return [{ type: i1.UserPreferenceService }]; } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1kaXNwbGF5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2Rpc3BsYXkvcGlwZXMvZGF0ZS1kaXNwbGF5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWhFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBSTVCOztHQUVHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBb0IscUJBQTRDO1FBQTVDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFFeEQscUJBQWdCLEdBQVcsWUFBWSxDQUFDO0lBRm9CLENBQUM7SUFJckU7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxJQUFrQixFQUFFLGFBQXVCLEVBQUUsUUFBa0IsRUFBRSxXQUFxQjtRQUM5RixJQUFJLE9BQU8sR0FBVyxFQUFFLENBQUM7UUFDekIsSUFBSSxZQUFZLEdBQVcsRUFBRSxDQUFDO1FBRTlCLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUUxRiw2QkFBNkI7WUFDN0IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFFN0QsNERBQTREO2dCQUM1RCx3Q0FBd0M7Z0JBQ3hDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDckIsWUFBWSxHQUFHLE1BQU0sQ0FBQyxVQUFXLENBQUMsVUFBVyxDQUFDO29CQUM5QyxJQUFJLFFBQVEsRUFBRTt3QkFDWixJQUFJLFVBQVUsR0FBVyxNQUFNLENBQUMsVUFBVyxDQUFDLFVBQVcsQ0FBQzt3QkFDeEQsSUFBSSxDQUFDLFdBQVcsRUFBRTs0QkFDaEIsVUFBVSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3lCQUM1Qzt3QkFDRCxZQUFZLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztxQkFDbEM7b0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQztpQkFDdEM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7NkdBckNVLGVBQWU7MkdBQWYsZUFBZTs0RkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZVRpbWVIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2RhdGUtdGltZS1oZWxwZXInO1xyXG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZVNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLXByZWZlcmVuY2Uuc2VydmljZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuXHJcbmV4cG9ydCB0eXBlIERhdGVEaXNwbGF5ID0gRGF0ZSB8IG1vbWVudC5Nb21lbnQgfCBzdHJpbmcgfCBudWxsO1xyXG5cclxuLyoqXHJcbiAqIEZvcm1hdCBhIGRhdGUgdG8gdGhlIHVzZXIncyBwcmVmZXJlbmNlIGZvciBkaXNwbGF5XHJcbiAqL1xyXG5AUGlwZSh7bmFtZTogJ2RhdGVEaXNwbGF5J30pXHJcbmV4cG9ydCBjbGFzcyBEYXRlRGlzcGxheVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1c2VyUHJlZmVyZW5jZVNlcnZpY2U6IFVzZXJQcmVmZXJlbmNlU2VydmljZSkgeyB9XHJcblxyXG4gIHByaXZhdGUgbGFzdEZvcm1hdFN0cmluZzogc3RyaW5nID0gJ01NL0REL1lZWVknO1xyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXQgYSBkYXRlIGZvciBkaXNwbGF5LCBhY2NvdW50aW5nIGZvciB1c2VyJ3MgZGlzcGxheSBwcmVmZXJlbmNlcy5cclxuICAgKiBcclxuICAgKiBJZiB7QHNlZSBkYXRlfSBpcyBudWxsIG9yIHVuZGVmaW5lZCwgb3IgdGhlIGVuZCBvZiB0aW1lLCByZXR1cm5zIGVtcHR5IHN0cmluZ1xyXG4gICAqL1xyXG4gIHRyYW5zZm9ybShkYXRlPzogRGF0ZURpc3BsYXksIHNob3dFbmRPZlRpbWU/OiBib29sZWFuLCBzaG93VGltZT86IGJvb2xlYW4sIHNob3dTZWNvbmRzPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgZGlzcGxheTogc3RyaW5nID0gJyc7XHJcbiAgICBsZXQgZm9ybWF0U3RyaW5nOiBzdHJpbmcgPSAnJztcclxuICAgIFxyXG4gICAgaWYgKGRhdGUgJiYgbW9tZW50KGRhdGUpLmlzVmFsaWQoKSAmJiAoc2hvd0VuZE9mVGltZSB8fCAhRGF0ZVRpbWVIZWxwZXIuaXNFbmRPZlRpbWUoZGF0ZSkpKSB7XHJcblxyXG4gICAgICAvLyB1c2UgdXNlci1wcmVmZXJyZWQgZm9ybWF0c1xyXG4gICAgICB0aGlzLnVzZXJQcmVmZXJlbmNlU2VydmljZS5nZXRQcmVmZXJlbmNlcygpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG5cclxuICAgICAgICAvL2lmIHByZWZlcmVuY2VzIGV4aXN0IHRoZW4gZm9ybWF0IGRhdGUgdG8gdXNlcnMgcHJlZmVyZW5jZSBcclxuICAgICAgICAvL290aGVyd2lzZSB1c2UgdGhlIGxhc3QgdXNlciBwcmVmZXJlbmNlXHJcbiAgICAgICAgaWYgKHJlc3VsdC5wcmVmZXJlbmNlKSB7XHJcbiAgICAgICAgICBmb3JtYXRTdHJpbmcgPSByZXN1bHQucHJlZmVyZW5jZSEuZGF0ZUZvcm1hdCE7XHJcbiAgICAgICAgICBpZiAoc2hvd1RpbWUpIHtcclxuICAgICAgICAgICAgbGV0IHRpbWVGb3JtYXQ6IHN0cmluZyA9IHJlc3VsdC5wcmVmZXJlbmNlIS50aW1lRm9ybWF0ITtcclxuICAgICAgICAgICAgaWYgKCFzaG93U2Vjb25kcykge1xyXG4gICAgICAgICAgICAgIHRpbWVGb3JtYXQgPSB0aW1lRm9ybWF0LnJlcGxhY2UoJzpzcycsICcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3JtYXRTdHJpbmcgKz0gYCAke3RpbWVGb3JtYXR9YDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubGFzdEZvcm1hdFN0cmluZyA9IGZvcm1hdFN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBkaXNwbGF5ID0gbW9tZW50KGRhdGUpLmZvcm1hdCh0aGlzLmxhc3RGb3JtYXRTdHJpbmcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRpc3BsYXk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,30 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class HighlightTextPipe {
4
+ transform(value, searchText) {
5
+ let transformedValue = '';
6
+ if (value && searchText) {
7
+ const regex = new RegExp(this.escapeRegex(searchText), 'gi');
8
+ transformedValue = value.replace(regex, this.strongWrap);
9
+ }
10
+ else {
11
+ transformedValue = value;
12
+ }
13
+ return transformedValue;
14
+ }
15
+ strongWrap(match) {
16
+ return `<strong class="text-highlight">${match}</strong>`;
17
+ }
18
+ escapeRegex(value) {
19
+ return value.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
20
+ }
21
+ }
22
+ HighlightTextPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: HighlightTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
23
+ HighlightTextPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: HighlightTextPipe, name: "highlightText" });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: HighlightTextPipe, decorators: [{
25
+ type: Pipe,
26
+ args: [{
27
+ name: 'highlightText'
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LXRleHQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvZGlzcGxheS9waXBlcy9oaWdobGlnaHQtdGV4dC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsVUFBa0I7UUFDekMsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxLQUFLLElBQUksVUFBVSxFQUFFO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0QsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDTCxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7U0FDMUI7UUFFRCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYTtRQUM5QixPQUFPLGtDQUFrQyxLQUFLLFdBQVcsQ0FBQztJQUM1RCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQWE7UUFDL0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7OytHQXBCVSxpQkFBaUI7NkdBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUg3QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxlQUFlO2lCQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnaGlnaGxpZ2h0VGV4dCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpZ2hsaWdodFRleHRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBzZWFyY2hUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRyYW5zZm9ybWVkVmFsdWUgPSAnJztcclxuICAgIGlmICh2YWx1ZSAmJiBzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4KHNlYXJjaFRleHQpLCAnZ2knKTtcclxuICAgICAgdHJhbnNmb3JtZWRWYWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHRoaXMuc3Ryb25nV3JhcCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2Zvcm1lZFZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0cm9uZ1dyYXAobWF0Y2g6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIGA8c3Ryb25nIGNsYXNzPVwidGV4dC1oaWdobGlnaHRcIj4ke21hdGNofTwvc3Ryb25nPmA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVzY2FwZVJlZ2V4KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,48 @@
1
+ import { Pipe } from '@angular/core';
2
+ import moment from 'moment';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./date-display.pipe";
5
+ import * as i2 from "./time-display.pipe";
6
+ import * as i3 from "@ngx-translate/core";
7
+ export class RelativeDatePipe {
8
+ constructor(dateDisplayPipe, timeDisplayPipe, translateService) {
9
+ this.dateDisplayPipe = dateDisplayPipe;
10
+ this.timeDisplayPipe = timeDisplayPipe;
11
+ this.translateService = translateService;
12
+ }
13
+ /**
14
+ * If dateOnly is true, returns timeSelected formatted according to the user's date preference.
15
+ * If timeOnly is true, returns timeSelected formatted according to the user's time preference.
16
+ * If any of todayLabel, yesterdayLabel is supplied, use the supplied label.
17
+ * If dateOnly and timeOnly are both false, returns timeSelected formatted according to the user's date plus time preference.
18
+ */
19
+ transform(timeSelected, options) {
20
+ const selected = moment(timeSelected);
21
+ const today = moment();
22
+ const yesterday = moment().subtract(1, 'day');
23
+ const timeDisplay = options?.dateOnly ? `` : ` ${this.timeDisplayPipe.transform(timeSelected)}`;
24
+ let displayValue = null;
25
+ if (selected.isSame(today, 'day') && !options?.showTimeForToday) {
26
+ displayValue = this.translateService.instant(options?.todayLabel ? options?.todayLabel : 'today');
27
+ }
28
+ else if (selected.isSame(today, 'day') && options?.showTimeForToday && !timeDisplay) {
29
+ displayValue = this.timeDisplayPipe.transform(timeSelected);
30
+ }
31
+ else if (selected.isSame(yesterday, 'day')) {
32
+ displayValue = this.translateService.instant(options?.yesterdayLabel ? options?.yesterdayLabel : 'yesterday');
33
+ }
34
+ else {
35
+ displayValue = this.dateDisplayPipe.transform(timeSelected);
36
+ }
37
+ return `${displayValue}${timeDisplay}`;
38
+ }
39
+ }
40
+ RelativeDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RelativeDatePipe, deps: [{ token: i1.DateDisplayPipe }, { token: i2.TimeDisplayPipe }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe });
41
+ RelativeDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RelativeDatePipe, name: "relativeDate" });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: RelativeDatePipe, decorators: [{
43
+ type: Pipe,
44
+ args: [{
45
+ name: 'relativeDate'
46
+ }]
47
+ }], ctorParameters: function () { return [{ type: i1.DateDisplayPipe }, { type: i2.TimeDisplayPipe }, { type: i3.TranslateService }]; } });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmUtZGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC9kaXNwbGF5L3BpcGVzL3JlbGF0aXZlLWRhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7O0FBYzVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFDVSxlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxnQkFBa0M7UUFGbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQ3hDLENBQUM7SUFFTDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FDUCxZQUFvQixFQUNwQixPQUE2QjtRQUU3QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUNoRyxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRTtZQUMvRCxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuRzthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksT0FBTyxFQUFFLGdCQUFnQixJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JGLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM3RDthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDNUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDL0c7YUFBTTtZQUNMLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM3RDtRQUNELE9BQU8sR0FBRyxZQUFZLEdBQUcsV0FBVyxFQUFFLENBQUE7SUFDeEMsQ0FBQzs7OEdBbENVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBSDVCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGNBQWM7aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgRGF0ZURpc3BsYXlQaXBlIH0gZnJvbSAnLi9kYXRlLWRpc3BsYXkucGlwZSc7XHJcbmltcG9ydCB7IFRpbWVEaXNwbGF5UGlwZSB9IGZyb20gJy4vdGltZS1kaXNwbGF5LnBpcGUnO1xyXG5cclxuZXhwb3J0IHR5cGUgUmVsYXRpdmVEYXRlT3B0aW9ucyA9IHtcclxuICBkYXRlT25seT86IGJvb2xlYW4sIFxyXG4gIHNob3dUaW1lRm9yVG9kYXk/IDogYm9vbGVhbixcclxuICB0b2RheUxhYmVsPzogc3RyaW5nLCBcclxuICB5ZXN0ZXJkYXlMYWJlbD86IHN0cmluZywgXHJcbn1cclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAncmVsYXRpdmVEYXRlJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVsYXRpdmVEYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0ZURpc3BsYXlQaXBlOiBEYXRlRGlzcGxheVBpcGUsIFxyXG4gICAgcHJpdmF0ZSB0aW1lRGlzcGxheVBpcGU6IFRpbWVEaXNwbGF5UGlwZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIGRhdGVPbmx5IGlzIHRydWUsIHJldHVybnMgdGltZVNlbGVjdGVkIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyBkYXRlIHByZWZlcmVuY2UuXHJcbiAgICogSWYgdGltZU9ubHkgaXMgdHJ1ZSwgcmV0dXJucyB0aW1lU2VsZWN0ZWQgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgdXNlcidzIHRpbWUgcHJlZmVyZW5jZS5cclxuICAgKiBJZiBhbnkgb2YgdG9kYXlMYWJlbCwgeWVzdGVyZGF5TGFiZWwgaXMgc3VwcGxpZWQsIHVzZSB0aGUgc3VwcGxpZWQgbGFiZWwuXHJcbiAgICogSWYgZGF0ZU9ubHkgYW5kIHRpbWVPbmx5IGFyZSBib3RoIGZhbHNlLCByZXR1cm5zIHRpbWVTZWxlY3RlZCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3MgZGF0ZSBwbHVzIHRpbWUgcHJlZmVyZW5jZS5cclxuICAgKi9cclxuICB0cmFuc2Zvcm0oXHJcbiAgICB0aW1lU2VsZWN0ZWQ6IHN0cmluZywgXHJcbiAgICBvcHRpb25zPzogUmVsYXRpdmVEYXRlT3B0aW9uc1xyXG4gICk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IG1vbWVudCh0aW1lU2VsZWN0ZWQpO1xyXG4gICAgY29uc3QgdG9kYXkgPSBtb21lbnQoKTtcclxuICAgIGNvbnN0IHllc3RlcmRheSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXknKTtcclxuICAgIGNvbnN0IHRpbWVEaXNwbGF5ID0gb3B0aW9ucz8uZGF0ZU9ubHkgPyBgYCA6IGAgJHt0aGlzLnRpbWVEaXNwbGF5UGlwZS50cmFuc2Zvcm0odGltZVNlbGVjdGVkKX1gO1xyXG4gICAgbGV0IGRpc3BsYXlWYWx1ZSA9IG51bGw7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkLmlzU2FtZSh0b2RheSwgJ2RheScpICYmICFvcHRpb25zPy5zaG93VGltZUZvclRvZGF5KSB7XHJcbiAgICAgIGRpc3BsYXlWYWx1ZSA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG9wdGlvbnM/LnRvZGF5TGFiZWwgPyBvcHRpb25zPy50b2RheUxhYmVsIDogJ3RvZGF5Jyk7XHJcbiAgICB9IGVsc2UgaWYgKHNlbGVjdGVkLmlzU2FtZSh0b2RheSwgJ2RheScpICYmIG9wdGlvbnM/LnNob3dUaW1lRm9yVG9kYXkgJiYgIXRpbWVEaXNwbGF5KSB7XHJcbiAgICAgIGRpc3BsYXlWYWx1ZSA9IHRoaXMudGltZURpc3BsYXlQaXBlLnRyYW5zZm9ybSh0aW1lU2VsZWN0ZWQpO1xyXG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZC5pc1NhbWUoeWVzdGVyZGF5LCAnZGF5JykpIHtcclxuICAgICAgZGlzcGxheVZhbHVlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQob3B0aW9ucz8ueWVzdGVyZGF5TGFiZWwgPyBvcHRpb25zPy55ZXN0ZXJkYXlMYWJlbCA6ICd5ZXN0ZXJkYXknKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRpc3BsYXlWYWx1ZSA9IHRoaXMuZGF0ZURpc3BsYXlQaXBlLnRyYW5zZm9ybSh0aW1lU2VsZWN0ZWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke2Rpc3BsYXlWYWx1ZX0ke3RpbWVEaXNwbGF5fWBcclxuICB9XHJcbn1cclxuIl19