@sunbird-cb/consumption 0.0.68 → 0.0.69

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 (344) hide show
  1. package/README.md +24 -24
  2. package/bundles/sunbird-cb-consumption.umd.js +17488 -17488
  3. package/bundles/sunbird-cb-consumption.umd.js.map +1 -1
  4. package/bundles/sunbird-cb-consumption.umd.min.js +1 -1
  5. package/bundles/sunbird-cb-consumption.umd.min.js.map +1 -1
  6. package/esm2015/lib/_common/announcements/announcements.component.js +150 -150
  7. package/esm2015/lib/_common/announcements/announcements.module.js +23 -23
  8. package/esm2015/lib/_common/avatar-photo-lib/avatar-photo-lib.component.js +158 -158
  9. package/esm2015/lib/_common/avatar-photo-lib/avatar-photo-lib.module.js +29 -29
  10. package/esm2015/lib/_common/calender/calender-day/calender-day.component.js +90 -90
  11. package/esm2015/lib/_common/calender/calender.component.js +299 -299
  12. package/esm2015/lib/_common/calender/calender.module.js +31 -31
  13. package/esm2015/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +170 -170
  14. package/esm2015/lib/_common/cards/card-karma-programs/card-karma-programs.component.js +178 -178
  15. package/esm2015/lib/_common/cards/card-karma-programs-v2/card-karma-programs-v2.component.js +166 -166
  16. package/esm2015/lib/_common/cards/card-landscape/card-landscape.component.js +202 -202
  17. package/esm2015/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.js +154 -154
  18. package/esm2015/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.js +154 -154
  19. package/esm2015/lib/_common/cards/card-portrait/card-portrait.component.js +167 -167
  20. package/esm2015/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.js +170 -170
  21. package/esm2015/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +261 -261
  22. package/esm2015/lib/_common/cards/card-resource/card-resource.component.js +34 -34
  23. package/esm2015/lib/_common/cards/card-user/card-user.component.js +141 -141
  24. package/esm2015/lib/_common/cards/card-wide/card-wide.component.js +166 -166
  25. package/esm2015/lib/_common/cards/card-wide-v2/card-wide-v2.component.js +171 -171
  26. package/esm2015/lib/_common/cards/cards.component.js +167 -167
  27. package/esm2015/lib/_common/cards/cards.module.js +100 -100
  28. package/esm2015/lib/_common/cards/provider-card/provider-card.component.js +81 -81
  29. package/esm2015/lib/_common/cbp-plan/cbp-plan.component.js +166 -166
  30. package/esm2015/lib/_common/cbp-plan/cbp-plan.module.js +27 -27
  31. package/esm2015/lib/_common/common-strip/common-strip.component.js +646 -646
  32. package/esm2015/lib/_common/common-strip/common-strip.model.js +216 -216
  33. package/esm2015/lib/_common/common-strip/common-strip.module.js +62 -62
  34. package/esm2015/lib/_common/competency-passbook/competency-passbook.component.js +384 -384
  35. package/esm2015/lib/_common/competency-passbook/competency-passbook.module.js +27 -27
  36. package/esm2015/lib/_common/competency-passbook/competency-passbook.service.js +52 -52
  37. package/esm2015/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.js +332 -332
  38. package/esm2015/lib/_common/competency-passbook-mdo/competency-passbook-mdo.module.js +27 -27
  39. package/esm2015/lib/_common/competency-passbook-mdo/competency-passbook-mdo.service.js +52 -52
  40. package/esm2015/lib/_common/content-progress/content-progress.component.js +89 -89
  41. package/esm2015/lib/_common/content-progress/content-progress.module.js +22 -22
  42. package/esm2015/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +2559 -2559
  43. package/esm2015/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model.js +218 -218
  44. package/esm2015/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module.js +69 -69
  45. package/esm2015/lib/_common/data-points/data-points.component.js +150 -150
  46. package/esm2015/lib/_common/data-points/data-points.module.js +23 -23
  47. package/esm2015/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.js +225 -225
  48. package/esm2015/lib/_common/dialog-components/dialog-components.module.js +43 -43
  49. package/esm2015/lib/_common/display-content-type-lib/display-content-type-lib.component.js +60 -60
  50. package/esm2015/lib/_common/display-content-type-lib/display-content-type-lib.module.js +18 -18
  51. package/esm2015/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.js +362 -362
  52. package/esm2015/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.module.js +23 -23
  53. package/esm2015/lib/_common/microsites/mdo-channels/mdo-channel-v1/mdo-channel-v1.component.js +23 -23
  54. package/esm2015/lib/_common/microsites/mdo-channels/mdo-channel-v2/mdo-channel-v2.component.js +255 -255
  55. package/esm2015/lib/_common/microsites/mdo-channels/mdo-channel.module.js +52 -52
  56. package/esm2015/lib/_common/microsites/providers/providers-v2/providers-v2.component.js +269 -269
  57. package/esm2015/lib/_common/microsites/providers/providers.module.js +51 -51
  58. package/esm2015/lib/_common/pills/pills.component.js +61 -61
  59. package/esm2015/lib/_common/pills/pills.module.js +24 -24
  60. package/esm2015/lib/_common/skeleton-loader-lib/skeleton-loader-lib.component.js +40 -40
  61. package/esm2015/lib/_common/skeleton-loader-lib/skeleton-loader-lib.module.js +28 -28
  62. package/esm2015/lib/_common/sliders/sliders.component.js +187 -187
  63. package/esm2015/lib/_common/sliders/sliders.model.js +67 -67
  64. package/esm2015/lib/_common/sliders/sliders.module.js +50 -50
  65. package/esm2015/lib/_common/sliders-ng-content/sliders-ng-content.component.js +206 -206
  66. package/esm2015/lib/_common/sliders-ng-content/sliders-ng-content.model.js +61 -61
  67. package/esm2015/lib/_common/sliders-ng-content/sliders-ng-content.module.js +50 -50
  68. package/esm2015/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.js +1613 -1613
  69. package/esm2015/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.model.js +218 -218
  70. package/esm2015/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.module.js +69 -69
  71. package/esm2015/lib/_common/top-learners/top-learners.component.js +155 -155
  72. package/esm2015/lib/_common/top-learners/top-learners.module.js +23 -23
  73. package/esm2015/lib/_common/user-content-rating/user-content-rating-lib.component.js +145 -145
  74. package/esm2015/lib/_common/user-content-rating/user-content-rating-lib.module.js +38 -38
  75. package/esm2015/lib/_common/user-content-rating/user-content-rating-lib.service.js +45 -45
  76. package/esm2015/lib/_constants/misc.constants.js +4 -4
  77. package/esm2015/lib/_directives/default-thumbnail/default-thumbnail.directive.js +51 -51
  78. package/esm2015/lib/_directives/default-thumbnail/default-thumbnail.module.js +18 -18
  79. package/esm2015/lib/_directives/image-responsive/image-responsive.directive.js +126 -126
  80. package/esm2015/lib/_directives/image-responsive/image-responsive.module.js +18 -18
  81. package/esm2015/lib/_directives/navigation/navigation.directive.js +53 -53
  82. package/esm2015/lib/_directives/navigation/navigation.module.js +18 -18
  83. package/esm2015/lib/_directives/scrollable-item/scrollable-item.directive.js +42 -42
  84. package/esm2015/lib/_directives/scrollable-item/scrollable-item.module.js +19 -19
  85. package/esm2015/lib/_models/card-content-v2.model.js +78 -78
  86. package/esm2015/lib/_models/card-content.model.js +69 -69
  87. package/esm2015/lib/_models/card-users.model.js +103 -103
  88. package/esm2015/lib/_models/content-strip-multiple.model.js +195 -195
  89. package/esm2015/lib/_models/event.js +45 -45
  90. package/esm2015/lib/_models/profile-v3.models.js +196 -196
  91. package/esm2015/lib/_models/rating.model.js +44 -44
  92. package/esm2015/lib/_models/widget-content.model.js +876 -876
  93. package/esm2015/lib/_models/widget-search.model.js +471 -471
  94. package/esm2015/lib/_models/widget-user.model.js +17 -17
  95. package/esm2015/lib/_pipes/object-to-array/object-to-array.pipe.js +28 -28
  96. package/esm2015/lib/_pipes/object-to-array/object-to-array.pipe.module.js +19 -19
  97. package/esm2015/lib/_pipes/pipe-duration-transform/pipe-duration-transform.module.js +18 -18
  98. package/esm2015/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +119 -119
  99. package/esm2015/lib/_pipes/pipe-public-URL/pipe-public-URL.module.js +19 -19
  100. package/esm2015/lib/_pipes/pipe-public-URL/pipe-public-URL.pipe.js +38 -38
  101. package/esm2015/lib/_services/certificate.service.js +63 -63
  102. package/esm2015/lib/_services/common-methods.service.js +84 -84
  103. package/esm2015/lib/_services/configurations.service.js +243 -243
  104. package/esm2015/lib/_services/insite-data.service.js +69 -69
  105. package/esm2015/lib/_services/multilingual-translations.service.js +231 -231
  106. package/esm2015/lib/_services/rating.service.js +171 -171
  107. package/esm2015/lib/_services/viewer-route-util.js +125 -125
  108. package/esm2015/lib/_services/widget-content.service.js +852 -852
  109. package/esm2015/lib/_services/widget-user.service.js +475 -475
  110. package/esm2015/lib/consumption.component.js +26 -26
  111. package/esm2015/lib/consumption.config.js +12 -12
  112. package/esm2015/lib/consumption.module.js +36 -36
  113. package/esm2015/lib/consumption.service.js +18 -18
  114. package/esm2015/lib/registration-lib.config.js +21 -21
  115. package/esm2015/public-api.js +31 -31
  116. package/esm2015/sunbird-cb-consumption.js +77 -77
  117. package/esm5/lib/_common/announcements/announcements.component.js +166 -166
  118. package/esm5/lib/_common/announcements/announcements.module.js +27 -27
  119. package/esm5/lib/_common/avatar-photo-lib/avatar-photo-lib.component.js +175 -175
  120. package/esm5/lib/_common/avatar-photo-lib/avatar-photo-lib.module.js +33 -33
  121. package/esm5/lib/_common/calender/calender-day/calender-day.component.js +101 -101
  122. package/esm5/lib/_common/calender/calender.component.js +334 -334
  123. package/esm5/lib/_common/calender/calender.module.js +35 -35
  124. package/esm5/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.js +186 -186
  125. package/esm5/lib/_common/cards/card-karma-programs/card-karma-programs.component.js +187 -187
  126. package/esm5/lib/_common/cards/card-karma-programs-v2/card-karma-programs-v2.component.js +176 -176
  127. package/esm5/lib/_common/cards/card-landscape/card-landscape.component.js +216 -216
  128. package/esm5/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.js +164 -164
  129. package/esm5/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.js +164 -164
  130. package/esm5/lib/_common/cards/card-portrait/card-portrait.component.js +173 -173
  131. package/esm5/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.js +176 -176
  132. package/esm5/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.js +278 -278
  133. package/esm5/lib/_common/cards/card-resource/card-resource.component.js +41 -41
  134. package/esm5/lib/_common/cards/card-user/card-user.component.js +147 -147
  135. package/esm5/lib/_common/cards/card-wide/card-wide.component.js +172 -172
  136. package/esm5/lib/_common/cards/card-wide-v2/card-wide-v2.component.js +181 -181
  137. package/esm5/lib/_common/cards/cards.component.js +199 -199
  138. package/esm5/lib/_common/cards/cards.module.js +104 -104
  139. package/esm5/lib/_common/cards/provider-card/provider-card.component.js +90 -90
  140. package/esm5/lib/_common/cbp-plan/cbp-plan.component.js +185 -185
  141. package/esm5/lib/_common/cbp-plan/cbp-plan.module.js +31 -31
  142. package/esm5/lib/_common/common-strip/common-strip.component.js +760 -760
  143. package/esm5/lib/_common/common-strip/common-strip.model.js +216 -216
  144. package/esm5/lib/_common/common-strip/common-strip.module.js +66 -66
  145. package/esm5/lib/_common/competency-passbook/competency-passbook.component.js +454 -454
  146. package/esm5/lib/_common/competency-passbook/competency-passbook.module.js +31 -31
  147. package/esm5/lib/_common/competency-passbook/competency-passbook.service.js +59 -59
  148. package/esm5/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.js +383 -383
  149. package/esm5/lib/_common/competency-passbook-mdo/competency-passbook-mdo.module.js +31 -31
  150. package/esm5/lib/_common/competency-passbook-mdo/competency-passbook-mdo.service.js +59 -59
  151. package/esm5/lib/_common/content-progress/content-progress.component.js +94 -94
  152. package/esm5/lib/_common/content-progress/content-progress.module.js +26 -26
  153. package/esm5/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.js +2970 -2970
  154. package/esm5/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model.js +218 -218
  155. package/esm5/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module.js +73 -73
  156. package/esm5/lib/_common/data-points/data-points.component.js +165 -165
  157. package/esm5/lib/_common/data-points/data-points.module.js +27 -27
  158. package/esm5/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.js +248 -248
  159. package/esm5/lib/_common/dialog-components/dialog-components.module.js +47 -47
  160. package/esm5/lib/_common/display-content-type-lib/display-content-type-lib.component.js +67 -67
  161. package/esm5/lib/_common/display-content-type-lib/display-content-type-lib.module.js +22 -22
  162. package/esm5/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.js +391 -391
  163. package/esm5/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.module.js +27 -27
  164. package/esm5/lib/_common/microsites/mdo-channels/mdo-channel-v1/mdo-channel-v1.component.js +29 -29
  165. package/esm5/lib/_common/microsites/mdo-channels/mdo-channel-v2/mdo-channel-v2.component.js +292 -292
  166. package/esm5/lib/_common/microsites/mdo-channels/mdo-channel.module.js +56 -56
  167. package/esm5/lib/_common/microsites/providers/providers-v2/providers-v2.component.js +312 -312
  168. package/esm5/lib/_common/microsites/providers/providers.module.js +55 -55
  169. package/esm5/lib/_common/pills/pills.component.js +70 -70
  170. package/esm5/lib/_common/pills/pills.module.js +28 -28
  171. package/esm5/lib/_common/skeleton-loader-lib/skeleton-loader-lib.component.js +45 -45
  172. package/esm5/lib/_common/skeleton-loader-lib/skeleton-loader-lib.module.js +32 -32
  173. package/esm5/lib/_common/sliders/sliders.component.js +214 -214
  174. package/esm5/lib/_common/sliders/sliders.model.js +67 -67
  175. package/esm5/lib/_common/sliders/sliders.module.js +67 -67
  176. package/esm5/lib/_common/sliders-ng-content/sliders-ng-content.component.js +233 -233
  177. package/esm5/lib/_common/sliders-ng-content/sliders-ng-content.model.js +61 -61
  178. package/esm5/lib/_common/sliders-ng-content/sliders-ng-content.module.js +67 -67
  179. package/esm5/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.js +1892 -1892
  180. package/esm5/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.model.js +218 -218
  181. package/esm5/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.module.js +73 -73
  182. package/esm5/lib/_common/top-learners/top-learners.component.js +172 -172
  183. package/esm5/lib/_common/top-learners/top-learners.module.js +27 -27
  184. package/esm5/lib/_common/user-content-rating/user-content-rating-lib.component.js +168 -168
  185. package/esm5/lib/_common/user-content-rating/user-content-rating-lib.module.js +42 -42
  186. package/esm5/lib/_common/user-content-rating/user-content-rating-lib.service.js +48 -48
  187. package/esm5/lib/_constants/misc.constants.js +4 -4
  188. package/esm5/lib/_directives/default-thumbnail/default-thumbnail.directive.js +59 -59
  189. package/esm5/lib/_directives/default-thumbnail/default-thumbnail.module.js +22 -22
  190. package/esm5/lib/_directives/image-responsive/image-responsive.directive.js +136 -136
  191. package/esm5/lib/_directives/image-responsive/image-responsive.module.js +22 -22
  192. package/esm5/lib/_directives/navigation/navigation.directive.js +62 -62
  193. package/esm5/lib/_directives/navigation/navigation.module.js +22 -22
  194. package/esm5/lib/_directives/scrollable-item/scrollable-item.directive.js +45 -45
  195. package/esm5/lib/_directives/scrollable-item/scrollable-item.module.js +23 -23
  196. package/esm5/lib/_models/card-content-v2.model.js +78 -78
  197. package/esm5/lib/_models/card-content.model.js +69 -69
  198. package/esm5/lib/_models/card-users.model.js +103 -103
  199. package/esm5/lib/_models/content-strip-multiple.model.js +195 -195
  200. package/esm5/lib/_models/event.js +45 -45
  201. package/esm5/lib/_models/profile-v3.models.js +196 -196
  202. package/esm5/lib/_models/rating.model.js +44 -44
  203. package/esm5/lib/_models/widget-content.model.js +876 -876
  204. package/esm5/lib/_models/widget-search.model.js +471 -471
  205. package/esm5/lib/_models/widget-user.model.js +17 -17
  206. package/esm5/lib/_pipes/object-to-array/object-to-array.pipe.js +57 -57
  207. package/esm5/lib/_pipes/object-to-array/object-to-array.pipe.module.js +23 -23
  208. package/esm5/lib/_pipes/pipe-duration-transform/pipe-duration-transform.module.js +22 -22
  209. package/esm5/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.js +142 -142
  210. package/esm5/lib/_pipes/pipe-public-URL/pipe-public-URL.module.js +23 -23
  211. package/esm5/lib/_pipes/pipe-public-URL/pipe-public-URL.pipe.js +41 -41
  212. package/esm5/lib/_services/certificate.service.js +70 -70
  213. package/esm5/lib/_services/common-methods.service.js +102 -102
  214. package/esm5/lib/_services/configurations.service.js +257 -257
  215. package/esm5/lib/_services/insite-data.service.js +84 -84
  216. package/esm5/lib/_services/multilingual-translations.service.js +259 -259
  217. package/esm5/lib/_services/rating.service.js +214 -214
  218. package/esm5/lib/_services/viewer-route-util.js +127 -127
  219. package/esm5/lib/_services/widget-content.service.js +1109 -1109
  220. package/esm5/lib/_services/widget-user.service.js +542 -542
  221. package/esm5/lib/consumption.component.js +28 -28
  222. package/esm5/lib/consumption.config.js +12 -12
  223. package/esm5/lib/consumption.module.js +40 -40
  224. package/esm5/lib/consumption.service.js +21 -21
  225. package/esm5/lib/registration-lib.config.js +21 -21
  226. package/esm5/public-api.js +31 -31
  227. package/esm5/sunbird-cb-consumption.js +77 -77
  228. package/fesm2015/sunbird-cb-consumption.js +15410 -15410
  229. package/fesm2015/sunbird-cb-consumption.js.map +1 -1
  230. package/fesm5/sunbird-cb-consumption.js +17480 -17480
  231. package/fesm5/sunbird-cb-consumption.js.map +1 -1
  232. package/lib/_common/announcements/announcements.component.d.ts +21 -21
  233. package/lib/_common/announcements/announcements.module.d.ts +2 -2
  234. package/lib/_common/avatar-photo-lib/avatar-photo-lib.component.d.ts +20 -20
  235. package/lib/_common/avatar-photo-lib/avatar-photo-lib.module.d.ts +2 -2
  236. package/lib/_common/calender/calender-day/calender-day.component.d.ts +18 -18
  237. package/lib/_common/calender/calender.component.d.ts +34 -34
  238. package/lib/_common/calender/calender.module.d.ts +2 -2
  239. package/lib/_common/cards/card-assessment/card-assessment/card-assessment.component.d.ts +31 -31
  240. package/lib/_common/cards/card-karma-programs/card-karma-programs.component.d.ts +28 -28
  241. package/lib/_common/cards/card-karma-programs-v2/card-karma-programs-v2.component.d.ts +26 -26
  242. package/lib/_common/cards/card-landscape/card-landscape.component.d.ts +36 -36
  243. package/lib/_common/cards/card-mdo-channel/card-mdo-channel.component.d.ts +27 -27
  244. package/lib/_common/cards/card-mdo-channel-v1/card-mdo-channel-v1.component.d.ts +27 -27
  245. package/lib/_common/cards/card-portrait/card-portrait.component.d.ts +33 -33
  246. package/lib/_common/cards/card-portrait-ext/card-portrait-ext.component.d.ts +33 -33
  247. package/lib/_common/cards/card-progress-portrait-lib/card-progress-portrait-lib.component.d.ts +41 -41
  248. package/lib/_common/cards/card-resource/card-resource.component.d.ts +8 -8
  249. package/lib/_common/cards/card-user/card-user.component.d.ts +24 -24
  250. package/lib/_common/cards/card-wide/card-wide.component.d.ts +30 -30
  251. package/lib/_common/cards/card-wide-v2/card-wide-v2.component.d.ts +34 -34
  252. package/lib/_common/cards/cards.component.d.ts +26 -26
  253. package/lib/_common/cards/cards.module.d.ts +2 -2
  254. package/lib/_common/cards/provider-card/provider-card.component.d.ts +14 -14
  255. package/lib/_common/cbp-plan/cbp-plan.component.d.ts +25 -25
  256. package/lib/_common/cbp-plan/cbp-plan.module.d.ts +2 -2
  257. package/lib/_common/common-strip/common-strip.component.d.ts +104 -104
  258. package/lib/_common/common-strip/common-strip.model.d.ts +141 -141
  259. package/lib/_common/common-strip/common-strip.module.d.ts +2 -2
  260. package/lib/_common/competency-passbook/competency-passbook.component.d.ts +42 -42
  261. package/lib/_common/competency-passbook/competency-passbook.module.d.ts +2 -2
  262. package/lib/_common/competency-passbook/competency-passbook.service.d.ts +8 -8
  263. package/lib/_common/competency-passbook-mdo/competency-passbook-mdo.component.d.ts +43 -43
  264. package/lib/_common/competency-passbook-mdo/competency-passbook-mdo.module.d.ts +2 -2
  265. package/lib/_common/competency-passbook-mdo/competency-passbook-mdo.service.d.ts +8 -8
  266. package/lib/_common/content-progress/content-progress.component.d.ts +13 -13
  267. package/lib/_common/content-progress/content-progress.module.d.ts +2 -2
  268. package/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.component.d.ts +203 -203
  269. package/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.model.d.ts +149 -149
  270. package/lib/_common/content-strip-with-tabs-lib/content-strip-with-tabs-lib.module.d.ts +5 -5
  271. package/lib/_common/data-points/data-points.component.d.ts +17 -17
  272. package/lib/_common/data-points/data-points.module.d.ts +2 -2
  273. package/lib/_common/dialog-components/certificate-dialog/certificate-dialog.component.d.ts +22 -22
  274. package/lib/_common/dialog-components/dialog-components.module.d.ts +2 -2
  275. package/lib/_common/display-content-type-lib/display-content-type-lib.component.d.ts +12 -12
  276. package/lib/_common/display-content-type-lib/display-content-type-lib.module.d.ts +2 -2
  277. package/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.component.d.ts +33 -33
  278. package/lib/_common/horizontal-scroller-v2/horizontal-scroller-v2.module.d.ts +2 -2
  279. package/lib/_common/microsites/mdo-channels/mdo-channel-v1/mdo-channel-v1.component.d.ts +5 -5
  280. package/lib/_common/microsites/mdo-channels/mdo-channel-v2/mdo-channel-v2.component.d.ts +39 -39
  281. package/lib/_common/microsites/mdo-channels/mdo-channel.module.d.ts +2 -2
  282. package/lib/_common/microsites/providers/providers-v2/providers-v2.component.d.ts +36 -36
  283. package/lib/_common/microsites/providers/providers.module.d.ts +2 -2
  284. package/lib/_common/pills/pills.component.d.ts +13 -13
  285. package/lib/_common/pills/pills.module.d.ts +2 -2
  286. package/lib/_common/skeleton-loader-lib/skeleton-loader-lib.component.d.ts +8 -8
  287. package/lib/_common/skeleton-loader-lib/skeleton-loader-lib.module.d.ts +2 -2
  288. package/lib/_common/sliders/sliders.component.d.ts +27 -27
  289. package/lib/_common/sliders/sliders.model.d.ts +40 -40
  290. package/lib/_common/sliders/sliders.module.d.ts +6 -6
  291. package/lib/_common/sliders-ng-content/sliders-ng-content.component.d.ts +29 -29
  292. package/lib/_common/sliders-ng-content/sliders-ng-content.model.d.ts +34 -34
  293. package/lib/_common/sliders-ng-content/sliders-ng-content.module.d.ts +6 -6
  294. package/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.component.d.ts +161 -161
  295. package/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.model.d.ts +149 -149
  296. package/lib/_common/strips/content-strip-with-tabs-pills/content-strip-with-tabs-pills.module.d.ts +5 -5
  297. package/lib/_common/top-learners/top-learners.component.d.ts +18 -18
  298. package/lib/_common/top-learners/top-learners.module.d.ts +2 -2
  299. package/lib/_common/user-content-rating/user-content-rating-lib.component.d.ts +22 -22
  300. package/lib/_common/user-content-rating/user-content-rating-lib.module.d.ts +2 -2
  301. package/lib/_common/user-content-rating/user-content-rating-lib.service.d.ts +7 -7
  302. package/lib/_constants/misc.constants.d.ts +2 -2
  303. package/lib/_directives/default-thumbnail/default-thumbnail.directive.d.ts +9 -9
  304. package/lib/_directives/default-thumbnail/default-thumbnail.module.d.ts +2 -2
  305. package/lib/_directives/image-responsive/image-responsive.directive.d.ts +17 -17
  306. package/lib/_directives/image-responsive/image-responsive.module.d.ts +2 -2
  307. package/lib/_directives/navigation/navigation.directive.d.ts +9 -9
  308. package/lib/_directives/navigation/navigation.module.d.ts +2 -2
  309. package/lib/_directives/scrollable-item/scrollable-item.directive.d.ts +7 -7
  310. package/lib/_directives/scrollable-item/scrollable-item.module.d.ts +2 -2
  311. package/lib/_models/card-content-v2.model.d.ts +44 -44
  312. package/lib/_models/card-content.model.d.ts +41 -41
  313. package/lib/_models/card-users.model.d.ts +50 -50
  314. package/lib/_models/content-strip-multiple.model.d.ts +128 -128
  315. package/lib/_models/event.d.ts +18 -18
  316. package/lib/_models/profile-v3.models.d.ts +91 -91
  317. package/lib/_models/rating.model.d.ts +17 -17
  318. package/lib/_models/widget-content.model.d.ts +497 -497
  319. package/lib/_models/widget-search.model.d.ts +252 -252
  320. package/lib/_models/widget-user.model.d.ts +5 -5
  321. package/lib/_pipes/object-to-array/object-to-array.pipe.d.ts +4 -4
  322. package/lib/_pipes/object-to-array/object-to-array.pipe.module.d.ts +2 -2
  323. package/lib/_pipes/pipe-duration-transform/pipe-duration-transform.module.d.ts +2 -2
  324. package/lib/_pipes/pipe-duration-transform/pipe-duration-transform.pipe.d.ts +6 -6
  325. package/lib/_pipes/pipe-public-URL/pipe-public-URL.module.d.ts +2 -2
  326. package/lib/_pipes/pipe-public-URL/pipe-public-URL.pipe.d.ts +6 -6
  327. package/lib/_services/certificate.service.d.ts +8 -8
  328. package/lib/_services/common-methods.service.d.ts +39 -39
  329. package/lib/_services/configurations.service.d.ts +71 -71
  330. package/lib/_services/insite-data.service.d.ts +10 -10
  331. package/lib/_services/multilingual-translations.service.d.ts +20 -20
  332. package/lib/_services/rating.service.d.ts +15 -15
  333. package/lib/_services/viewer-route-util.d.ts +8 -8
  334. package/lib/_services/widget-content.service.d.ts +87 -87
  335. package/lib/_services/widget-user.service.d.ts +33 -33
  336. package/lib/consumption.component.d.ts +5 -5
  337. package/lib/consumption.config.d.ts +6 -6
  338. package/lib/consumption.module.d.ts +2 -2
  339. package/lib/consumption.service.d.ts +3 -3
  340. package/lib/registration-lib.config.d.ts +4 -4
  341. package/package.json +1 -1
  342. package/public-api.d.ts +23 -23
  343. package/sunbird-cb-consumption.d.ts +73 -73
  344. package/sunbird-cb-consumption.metadata.json +1 -1
@@ -1,299 +1,299 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { DatePipe } from '@angular/common';
6
- import { Component, Input, } from '@angular/core';
7
- import { InsiteDataService } from '../../_services/insite-data.service';
8
- export class CalenderComponent {
9
- /**
10
- * @param {?} datePipe
11
- * @param {?} insightSvc
12
- */
13
- constructor(datePipe, insightSvc) {
14
- this.datePipe = datePipe;
15
- this.insightSvc = insightSvc;
16
- this.fetchDataFromApi = false;
17
- this.showHeader = false;
18
- this.defaultDays = 3;
19
- this.fullCalendor = false;
20
- this.days = [];
21
- this.trainings = {};
22
- this.isDataLoading = false;
23
- this.currentDate = new Date();
24
- this.allMonths = ["January", "February", "March",
25
- "April", "May", "June", "July",
26
- "August", "September", "October",
27
- "November", "December"
28
- ];
29
- this.monthsDropdown = [];
30
- }
31
- /**
32
- * @return {?}
33
- */
34
- ngOnInit() {
35
- this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y');
36
- this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy');
37
- if (this.fullCalendor) {
38
- this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth());
39
- this.getMonthsDropdownData();
40
- }
41
- if (!this.fullCalendor) {
42
- this.days = this.getDays(this.currentDate, +this.defaultDays);
43
- }
44
- this.startDate = this.days[0];
45
- this.endDate = this.days[this.days.length - 1];
46
- if (this.fetchDataFromApi) {
47
- this.isDataLoading = true;
48
- this.getInsiteData();
49
- }
50
- }
51
- /**
52
- * @return {?}
53
- */
54
- getInsiteData() {
55
- /** @type {?} */
56
- let request = {
57
- "locale": [
58
- "en"
59
- ],
60
- "query": "",
61
- "request": {
62
- "query": "",
63
- "filters": {
64
- "category": [
65
- "Calendar"
66
- ],
67
- "status": [
68
- "Live",
69
- "Retired"
70
- ],
71
- "contentType": "Event",
72
- "startDate": {
73
- ">=": this.startDate,
74
- "<=": this.endDate
75
- // ">=": "2024-01-15",
76
- // "<": "2024-05-31"
77
- },
78
- "channel": [this.providerId]
79
- },
80
- "sort_by": {
81
- "lastUpdatedOn": "desc"
82
- }
83
- }
84
- };
85
- this.insightSvc.fetchTrainingDetails(request).subscribe((/**
86
- * @param {?} res
87
- * @return {?}
88
- */
89
- (res) => {
90
- if (res && res.result && res.result.Event) {
91
- res.result.Event.forEach((/**
92
- * @param {?} resp
93
- * @return {?}
94
- */
95
- (resp) => {
96
- if (this.trainings[resp.startDate]) {
97
- /** @type {?} */
98
- let prevData = this.trainings[resp.startDate];
99
- /** @type {?} */
100
- let location = resp.eventType;
101
- if (resp.location && location !== "Online") {
102
- /** @type {?} */
103
- const jsonResp = JSON.parse(resp.location);
104
- location = jsonResp['address'];
105
- }
106
- /** @type {?} */
107
- const formatObject = {
108
- location: location,
109
- startTime: this.convertTo12HourFormat(resp.startTime),
110
- endTime: this.convertTo12HourFormat(resp.endTime),
111
- title: resp.name,
112
- startDate: this.formatDate(resp.startDate),
113
- endDate: this.formatDate(resp.endDate),
114
- registrationLink: resp.registrationLink,
115
- };
116
- prevData.push(formatObject);
117
- this.trainings[resp.startDate] = prevData;
118
- }
119
- }));
120
- }
121
- this.isDataLoading = false;
122
- }));
123
- }
124
- /**
125
- * @param {?} obj
126
- * @return {?}
127
- */
128
- getKeys(obj) {
129
- return Object.keys(obj);
130
- }
131
- /**
132
- * @param {?} date
133
- * @return {?}
134
- */
135
- formatDate(date) {
136
- /** @type {?} */
137
- let formatDate = new Date(date);
138
- return this.datePipe.transform(formatDate, 'E, dd LLL');
139
- }
140
- /**
141
- * @param {?} timeString
142
- * @return {?}
143
- */
144
- convertTo12HourFormat(timeString) {
145
- /** @type {?} */
146
- const time = timeString.split(":");
147
- /** @type {?} */
148
- let hours = +time[0];
149
- /** @type {?} */
150
- const minutes = +time[1];
151
- /** @type {?} */
152
- const ampm = hours >= 12 ? 'PM' : 'AM';
153
- hours = hours % 12;
154
- hours = hours ? hours : 12;
155
- /** @type {?} */
156
- const strHours = hours < 10 ? '0' + hours : hours.toString();
157
- /** @type {?} */
158
- const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString();
159
- return `${strHours}:${strMinutes} ${ampm}`;
160
- }
161
- /**
162
- * @param {?} cDate
163
- * @param {?} counter
164
- * @return {?}
165
- */
166
- getDays(cDate, counter) {
167
- /** @type {?} */
168
- const days = [];
169
- /** @type {?} */
170
- let initDate = new Date(cDate);
171
- initDate = this.datePipe.transform(initDate, 'y-MM-dd');
172
- days.push(initDate);
173
- this.trainings[initDate] = [];
174
- while (counter > 0) {
175
- /** @type {?} */
176
- let myDate = new Date(cDate);
177
- myDate = myDate.setDate(myDate.getDate() + 1);
178
- cDate = myDate;
179
- myDate = this.datePipe.transform(myDate, 'y-MM-dd');
180
- days.push(myDate);
181
- this.trainings[myDate] = [];
182
- counter = counter - 1;
183
- }
184
- return days;
185
- }
186
- /**
187
- * @param {?} year
188
- * @param {?} month
189
- * @return {?}
190
- */
191
- getDaysInMonth(year, month) {
192
- /** @type {?} */
193
- const date = new Date(year, month, 1);
194
- /** @type {?} */
195
- const days = [];
196
- this.trainings = {};
197
- while (date.getMonth() === month) {
198
- /** @type {?} */
199
- let myDate = new Date(date);
200
- myDate = this.datePipe.transform(myDate, 'y-MM-dd');
201
- days.push(myDate);
202
- this.trainings[myDate] = [];
203
- date.setDate(date.getDate() + 1);
204
- }
205
- return days;
206
- }
207
- /**
208
- * @return {?}
209
- */
210
- getMonthsDropdownData() {
211
- this.allMonths.forEach((/**
212
- * @param {?} month
213
- * @return {?}
214
- */
215
- (month) => {
216
- this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`);
217
- }));
218
- }
219
- /**
220
- * @param {?} event
221
- * @return {?}
222
- */
223
- selectMonth(event) {
224
- /** @type {?} */
225
- const selectedMonth = new Date(event);
226
- this.currentDate = selectedMonth;
227
- this.days = [];
228
- this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth());
229
- this.startDate = this.days[0];
230
- this.endDate = this.days[this.days.length - 1];
231
- this.isDataLoading = true;
232
- this.getInsiteData();
233
- }
234
- }
235
- CalenderComponent.decorators = [
236
- { type: Component, args: [{
237
- selector: 'sb-uic-calender',
238
- template: "<div class=\"calendar-header flex flex-row c-padding center gap-2\" *ngIf=\"showHeader\">\r\n <div class=\"pt-3\">{{ objectData?.title }}:</div>\r\n <div class=\"choose-month\">\r\n <mat-form-field class=\"custom-month\">\r\n <mat-select matNativeControl panelClass=\"custom-select\" [ngModel]=\"selectedMonth\" (ngModelChange)=\"selectMonth($event)\" class=\"month-select\">\r\n <span *ngFor=\"let month of monthsDropdown\">\r\n <mat-option [value]=\"month\">{{month}}</mat-option>\r\n </span>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n</div>\r\n<div *ngIf=\"layoutType==='grid'\">\r\n <div *ngFor=\"let obj of getKeys(trainings); let i = index\">\r\n <sb-uic-calender-day [day]=\"trainings[obj]\"\r\n [layoutType]=\"layoutType\"\r\n [objectData]=\"objectData\"\r\n [dataLoading]=\"isDataLoading\"\r\n [eventDate]=\"obj\"\r\n [rowId]=\"i\">\r\n </sb-uic-calender-day>\r\n </div> \r\n</div>\r\n<div *ngIf=\"layoutType==='row'\">\r\n <div *ngFor=\"let obj of getKeys(trainings); let j = index\">\r\n <sb-uic-calender-day [day]=\"trainings[obj]\"\r\n [layoutType]=\"layoutType\"\r\n [objectData]=\"objectData\"\r\n [dataLoading]=\"isDataLoading\"\r\n [eventDate]=\"obj\"\r\n [rowId]=\"j\">\r\n </sb-uic-calender-day>\r\n </div>\r\n</div>",
239
- styles: [".calendar-header{font-family:Montserrat;font-size:16px;font-weight:600;line-height:19.5px;text-align:left}.c-padding{padding:0}.center{align-items:center}::ng-deep .custom-month .mat-form-field-wrapper{padding-bottom:0!important;width:145px}::ng-deep .custom-month .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#000!important}::ng-deep .custom-month .mat-select-value{width:89%}::ng-deep .mat-select-arrow{color:#000!important}::ng-deep .custom-month .mat-select-value-text{font-weight:600}@media screen and (max-width:768px){.c-padding{padding:0 1.25rem 1rem}.calendar-header{font-size:15px}}"]
240
- }] }
241
- ];
242
- /** @nocollapse */
243
- CalenderComponent.ctorParameters = () => [
244
- { type: DatePipe },
245
- { type: InsiteDataService }
246
- ];
247
- CalenderComponent.propDecorators = {
248
- objectData: [{ type: Input }],
249
- layoutType: [{ type: Input }],
250
- fetchDataFromApi: [{ type: Input }],
251
- showHeader: [{ type: Input }],
252
- defaultDays: [{ type: Input }],
253
- providerId: [{ type: Input }],
254
- fullCalendor: [{ type: Input }]
255
- };
256
- if (false) {
257
- /** @type {?} */
258
- CalenderComponent.prototype.objectData;
259
- /** @type {?} */
260
- CalenderComponent.prototype.layoutType;
261
- /** @type {?} */
262
- CalenderComponent.prototype.fetchDataFromApi;
263
- /** @type {?} */
264
- CalenderComponent.prototype.showHeader;
265
- /** @type {?} */
266
- CalenderComponent.prototype.defaultDays;
267
- /** @type {?} */
268
- CalenderComponent.prototype.providerId;
269
- /** @type {?} */
270
- CalenderComponent.prototype.fullCalendor;
271
- /** @type {?} */
272
- CalenderComponent.prototype.days;
273
- /** @type {?} */
274
- CalenderComponent.prototype.trainings;
275
- /** @type {?} */
276
- CalenderComponent.prototype.currentMonthAndYear;
277
- /** @type {?} */
278
- CalenderComponent.prototype.isDataLoading;
279
- /** @type {?} */
280
- CalenderComponent.prototype.currentDate;
281
- /** @type {?} */
282
- CalenderComponent.prototype.endDate;
283
- /** @type {?} */
284
- CalenderComponent.prototype.startDate;
285
- /** @type {?} */
286
- CalenderComponent.prototype.allMonths;
287
- /** @type {?} */
288
- CalenderComponent.prototype.monthsDropdown;
289
- /** @type {?} */
290
- CalenderComponent.prototype.selectedMonth;
291
- /**
292
- * @type {?}
293
- * @private
294
- */
295
- CalenderComponent.prototype.datePipe;
296
- /** @type {?} */
297
- CalenderComponent.prototype.insightSvc;
298
- }
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvY29uc3VtcHRpb24vIiwic291cmNlcyI6WyJsaWIvX2NvbW1vbi9jYWxlbmRlci9jYWxlbmRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU94RSxNQUFNLE9BQU8saUJBQWlCOzs7OztJQXVCNUIsWUFBb0IsUUFBa0IsRUFBUyxVQUE2QjtRQUF4RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFuQm5FLHFCQUFnQixHQUFZLEtBQUssQ0FBQTtRQUNqQyxlQUFVLEdBQVksS0FBSyxDQUFBO1FBQzNCLGdCQUFXLEdBQVcsQ0FBQyxDQUFBO1FBRXZCLGlCQUFZLEdBQVksS0FBSyxDQUFBO1FBQ3RDLFNBQUksR0FBRyxFQUFFLENBQUE7UUFDVCxjQUFTLEdBQVEsRUFBRSxDQUFBO1FBRW5CLGtCQUFhLEdBQVksS0FBSyxDQUFBO1FBQzlCLGdCQUFXLEdBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUc3QixjQUFTLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU87WUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTTtZQUM5QixRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVM7WUFDaEMsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQTtRQUNELG1CQUFjLEdBQVEsRUFBRSxDQUFBO0lBRXdELENBQUM7Ozs7SUFFakYsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FB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bSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbnNpdGVEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9pbnNpdGUtZGF0YS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ItdWljLWNhbGVuZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgb2JqZWN0RGF0YTogYW55XHJcbiAgQElucHV0KCkgbGF5b3V0VHlwZTogYW55XHJcbiAgQElucHV0KCkgZmV0Y2hEYXRhRnJvbUFwaTogYm9vbGVhbiA9IGZhbHNlXHJcbiAgQElucHV0KCkgc2hvd0hlYWRlcjogYm9vbGVhbiA9IGZhbHNlXHJcbiAgQElucHV0KCkgZGVmYXVsdERheXM6IG51bWJlciA9IDNcclxuICBASW5wdXQoKSBwcm92aWRlcklkOiBhbnlcclxuICBASW5wdXQoKSBmdWxsQ2FsZW5kb3I6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIGRheXMgPSBbXVxyXG4gIHRyYWluaW5nczogYW55ID0ge31cclxuICBjdXJyZW50TW9udGhBbmRZZWFyOiBhbnlcclxuICBpc0RhdGFMb2FkaW5nOiBib29sZWFuID0gZmFsc2VcclxuICBjdXJyZW50RGF0ZTogYW55ID0gbmV3IERhdGUoKVxyXG4gIGVuZERhdGU6IGFueVxyXG4gIHN0YXJ0RGF0ZTogYW55XHJcbiAgYWxsTW9udGhzID0gW1wiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIixcclxuICAgIFwiQXByaWxcIiwgXCJNYXlcIiwgXCJKdW5lXCIsIFwiSnVseVwiLFxyXG4gICAgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsXHJcbiAgICBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxyXG4gIF1cclxuICBtb250aHNEcm9wZG93bjogYW55ID0gW11cclxuICBzZWxlY3RlZE1vbnRoOiBhbnlcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHVibGljIGluc2lnaHRTdmM6IEluc2l0ZURhdGFTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRNb250aEFuZFllYXIgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmN1cnJlbnREYXRlLCAnTU1NTSB5JylcclxuICAgIHRoaXMuc2VsZWN0ZWRNb250aCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuY3VycmVudERhdGUsICdMTExMIHl5eXknKVxyXG4gICAgaWYgKHRoaXMuZnVsbENhbGVuZG9yKSB7XHJcbiAgICAgIHRoaXMuZGF5cyA9IHRoaXMuZ2V0RGF5c0luTW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkpXHJcbiAgICAgIHRoaXMuZ2V0TW9udGhzRHJvcGRvd25EYXRhKClcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5mdWxsQ2FsZW5kb3IpIHtcclxuICAgICAgdGhpcy5kYXlzID0gdGhpcy5nZXREYXlzKHRoaXMuY3VycmVudERhdGUsICt0aGlzLmRlZmF1bHREYXlzKVxyXG4gICAgfVxyXG4gICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLmRheXNbMF1cclxuICAgIHRoaXMuZW5kRGF0ZSA9IHRoaXMuZGF5c1t0aGlzLmRheXMubGVuZ3RoIC0gMV1cclxuICAgIGlmKHRoaXMuZmV0Y2hEYXRhRnJvbUFwaSkge1xyXG4gICAgICB0aGlzLmlzRGF0YUxvYWRpbmcgPSB0cnVlXHJcbiAgICAgIHRoaXMuZ2V0SW5zaXRlRGF0YSgpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEluc2l0ZURhdGEoKSB7XHJcbiAgICBsZXQgcmVxdWVzdCA9IHtcclxuICAgICAgXCJsb2NhbGVcIjogW1xyXG4gICAgICAgICAgXCJlblwiXHJcbiAgICAgIF0sXHJcbiAgICAgIFwicXVlcnlcIjogXCJcIixcclxuICAgICAgXCJyZXF1ZXN0XCI6IHtcclxuICAgICAgICAgIFwicXVlcnlcIjogXCJcIixcclxuICAgICAgICAgIFwiZmlsdGVyc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJjYXRlZ29yeVwiOiBbXHJcbiAgICAgICAgICAgICAgICAgIFwiQ2FsZW5kYXJcIlxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgXCJzdGF0dXNcIjogW1xyXG4gICAgICAgICAgICAgICAgICBcIkxpdmVcIixcclxuICAgICAgICAgICAgICAgICAgXCJSZXRpcmVkXCJcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIFwiY29udGVudFR5cGVcIjogXCJFdmVudFwiLFxyXG4gICAgICAgICAgICAgIFwic3RhcnREYXRlXCI6IHtcclxuICAgICAgICAgICAgICAgIFwiPj1cIjogdGhpcy5zdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBcIjw9XCI6IHRoaXMuZW5kRGF0ZVxyXG4gICAgICAgICAgICAgICAgLy8gXCI+PVwiOiBcIjIwMjQtMDEtMTVcIixcclxuICAgICAgICAgICAgICAgIC8vIFwiPFwiOiBcIjIwMjQtMDUtMzFcIlxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXCJjaGFubmVsXCI6IFt0aGlzLnByb3ZpZGVySWRdXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgXCJzb3J0X2J5XCI6IHtcclxuICAgICAgICAgICAgICBcImxhc3RVcGRhdGVkT25cIjogXCJkZXNjXCJcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5pbnNpZ2h0U3ZjLmZldGNoVHJhaW5pbmdEZXRhaWxzKHJlcXVlc3QpLnN1YnNjcmliZSgocmVzOiBhbnkpPT4ge1xyXG4gICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5FdmVudCkge1xyXG4gICAgICAgIHJlcy5yZXN1bHQuRXZlbnQuZm9yRWFjaCgocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy50cmFpbmluZ3NbcmVzcC5zdGFydERhdGVdKSB7XHJcbiAgICAgICAgICAgIGxldCBwcmV2RGF0YSA9IHRoaXMudHJhaW5pbmdzW3Jlc3Auc3RhcnREYXRlXVxyXG4gICAgICAgICAgICBsZXQgbG9jYXRpb24gPSByZXNwLmV2ZW50VHlwZVxyXG4gICAgICAgICAgICBpZiAocmVzcC5sb2NhdGlvbiAmJiBsb2NhdGlvbiAhPT0gXCJPbmxpbmVcIikge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGpzb25SZXNwID0gSlNPTi5wYXJzZShyZXNwLmxvY2F0aW9uKVxyXG4gICAgICAgICAgICAgIGxvY2F0aW9uID0ganNvblJlc3BbJ2FkZHJlc3MnXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdE9iamVjdCA9IHtcclxuICAgICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXHJcbiAgICAgICAgICAgICAgc3RhcnRUaW1lOiB0aGlzLmNvbnZlcnRUbzEySG91ckZvcm1hdChyZXNwLnN0YXJ0VGltZSksXHJcbiAgICAgICAgICAgICAgZW5kVGltZTogdGhpcy5jb252ZXJ0VG8xMkhvdXJGb3JtYXQocmVzcC5lbmRUaW1lKSxcclxuICAgICAgICAgICAgICB0aXRsZTogcmVzcC5uYW1lLFxyXG4gICAgICAgICAgICAgIHN0YXJ0RGF0ZTogdGhpcy5mb3JtYXREYXRlKHJlc3Auc3RhcnREYXRlKSxcclxuICAgICAgICAgICAgICBlbmREYXRlOiB0aGlzLmZvcm1hdERhdGUocmVzcC5lbmREYXRlKSxcclxuICAgICAgICAgICAgICByZWdpc3RyYXRpb25MaW5rOiByZXNwLnJlZ2lzdHJhdGlvbkxpbmssXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcHJldkRhdGEucHVzaChmb3JtYXRPYmplY3QpXHJcbiAgICAgICAgICAgIHRoaXMudHJhaW5pbmdzW3Jlc3Auc3RhcnREYXRlXSA9IHByZXZEYXRhXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzRGF0YUxvYWRpbmcgPSBmYWxzZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdldEtleXMob2JqOiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdERhdGUoZGF0ZTogYW55KSB7XHJcbiAgICBsZXQgZm9ybWF0RGF0ZSA9IG5ldyBEYXRlKGRhdGUpXHJcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZm9ybWF0RGF0ZSwgJ0UsIGRkIExMTCcpXHJcbiAgfVxyXG5cclxuICBjb252ZXJ0VG8xMkhvdXJGb3JtYXQodGltZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHRpbWUgPSB0aW1lU3RyaW5nLnNwbGl0KFwiOlwiKVxyXG4gICAgbGV0IGhvdXJzID0gK3RpbWVbMF1cclxuICAgIGNvbnN0IG1pbnV0ZXMgPSArdGltZVsxXVxyXG4gICAgY29uc3QgYW1wbSA9IGhvdXJzID49IDEyID8gJ1BNJyA6ICdBTSdcclxuICAgIGhvdXJzID0gaG91cnMgJSAxMlxyXG4gICAgaG91cnMgPSBob3VycyA/IGhvdXJzIDogMTJcclxuICAgIGNvbnN0IHN0ckhvdXJzID0gaG91cnMgPCAxMCA/ICcwJyArIGhvdXJzIDogaG91cnMudG9TdHJpbmcoKVxyXG4gICAgY29uc3Qgc3RyTWludXRlcyA9IG1pbnV0ZXMgPCAxMCA/ICcwJyArIG1pbnV0ZXMgOiBtaW51dGVzLnRvU3RyaW5nKClcclxuICAgIHJldHVybiBgJHtzdHJIb3Vyc306JHtzdHJNaW51dGVzfSAke2FtcG19YFxyXG4gIH1cclxuXHJcbiAgZ2V0RGF5cyhjRGF0ZTogYW55LCBjb3VudGVyOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGRheXM6IGFueSA9IFtdXHJcbiAgICBsZXQgaW5pdERhdGU6IGFueSA9IG5ldyBEYXRlKGNEYXRlKVxyXG4gICAgaW5pdERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShpbml0RGF0ZSwgJ3ktTU0tZGQnKVxyXG4gICAgZGF5cy5wdXNoKGluaXREYXRlKVxyXG4gICAgdGhpcy50cmFpbmluZ3NbaW5pdERhdGVdID0gW11cclxuICAgIHdoaWxlIChjb3VudGVyID4gMCkge1xyXG4gICAgICBsZXQgbXlEYXRlOiBhbnkgPSBuZXcgRGF0ZShjRGF0ZSlcclxuICAgICAgbXlEYXRlID0gbXlEYXRlLnNldERhdGUobXlEYXRlLmdldERhdGUoKSArIDEpXHJcbiAgICAgIGNEYXRlID0gbXlEYXRlXHJcbiAgICAgIG15RGF0ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG15RGF0ZSwgJ3ktTU0tZGQnKVxyXG4gICAgICBkYXlzLnB1c2gobXlEYXRlKVxyXG4gICAgICB0aGlzLnRyYWluaW5nc1tteURhdGVdID0gW11cclxuICAgICAgY291bnRlciA9IGNvdW50ZXIgLSAxXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF5c1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF5c0luTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogRGF0ZVtdIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSlcclxuICAgIGNvbnN0IGRheXM6IGFueSA9IFtdXHJcbiAgICB0aGlzLnRyYWluaW5ncyA9IHt9XHJcbiAgICB3aGlsZSAoZGF0ZS5nZXRNb250aCgpID09PSBtb250aCkge1xyXG4gICAgICBsZXQgbXlEYXRlOiBhbnkgPSBuZXcgRGF0ZShkYXRlKVxyXG4gICAgICBteURhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShteURhdGUsICd5LU1NLWRkJylcclxuICAgICAgZGF5cy5wdXNoKG15RGF0ZSlcclxuICAgICAgdGhpcy50cmFpbmluZ3NbbXlEYXRlXSA9IFtdXHJcbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF5c1xyXG4gIH1cclxuXHJcbiAgZ2V0TW9udGhzRHJvcGRvd25EYXRhKCkge1xyXG4gICAgdGhpcy5hbGxNb250aHMuZm9yRWFjaCgobW9udGg6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm1vbnRoc0Ryb3Bkb3duLnB1c2goYCR7bW9udGh9ICR7dGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpfWApXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0TW9udGgoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRNb250aDogYW55ID0gbmV3IERhdGUoZXZlbnQpXHJcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gc2VsZWN0ZWRNb250aFxyXG4gICAgdGhpcy5kYXlzID0gW11cclxuICAgIHRoaXMuZGF5cyA9IHRoaXMuZ2V0RGF5c0luTW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkpXHJcbiAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuZGF5c1swXVxyXG4gICAgdGhpcy5lbmREYXRlID0gdGhpcy5kYXlzW3RoaXMuZGF5cy5sZW5ndGggLSAxXVxyXG4gICAgdGhpcy5pc0RhdGFMb2FkaW5nID0gdHJ1ZVxyXG4gICAgdGhpcy5nZXRJbnNpdGVEYXRhKClcclxuICB9XHJcbn1cclxuIl19
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import { DatePipe } from '@angular/common';
6
+ import { Component, Input, } from '@angular/core';
7
+ import { InsiteDataService } from '../../_services/insite-data.service';
8
+ export class CalenderComponent {
9
+ /**
10
+ * @param {?} datePipe
11
+ * @param {?} insightSvc
12
+ */
13
+ constructor(datePipe, insightSvc) {
14
+ this.datePipe = datePipe;
15
+ this.insightSvc = insightSvc;
16
+ this.fetchDataFromApi = false;
17
+ this.showHeader = false;
18
+ this.defaultDays = 3;
19
+ this.fullCalendor = false;
20
+ this.days = [];
21
+ this.trainings = {};
22
+ this.isDataLoading = false;
23
+ this.currentDate = new Date();
24
+ this.allMonths = ["January", "February", "March",
25
+ "April", "May", "June", "July",
26
+ "August", "September", "October",
27
+ "November", "December"
28
+ ];
29
+ this.monthsDropdown = [];
30
+ }
31
+ /**
32
+ * @return {?}
33
+ */
34
+ ngOnInit() {
35
+ this.currentMonthAndYear = this.datePipe.transform(this.currentDate, 'MMMM y');
36
+ this.selectedMonth = this.datePipe.transform(this.currentDate, 'LLLL yyyy');
37
+ if (this.fullCalendor) {
38
+ this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth());
39
+ this.getMonthsDropdownData();
40
+ }
41
+ if (!this.fullCalendor) {
42
+ this.days = this.getDays(this.currentDate, +this.defaultDays);
43
+ }
44
+ this.startDate = this.days[0];
45
+ this.endDate = this.days[this.days.length - 1];
46
+ if (this.fetchDataFromApi) {
47
+ this.isDataLoading = true;
48
+ this.getInsiteData();
49
+ }
50
+ }
51
+ /**
52
+ * @return {?}
53
+ */
54
+ getInsiteData() {
55
+ /** @type {?} */
56
+ let request = {
57
+ "locale": [
58
+ "en"
59
+ ],
60
+ "query": "",
61
+ "request": {
62
+ "query": "",
63
+ "filters": {
64
+ "category": [
65
+ "Calendar"
66
+ ],
67
+ "status": [
68
+ "Live",
69
+ "Retired"
70
+ ],
71
+ "contentType": "Event",
72
+ "startDate": {
73
+ ">=": this.startDate,
74
+ "<=": this.endDate
75
+ // ">=": "2024-01-15",
76
+ // "<": "2024-05-31"
77
+ },
78
+ "channel": [this.providerId]
79
+ },
80
+ "sort_by": {
81
+ "lastUpdatedOn": "desc"
82
+ }
83
+ }
84
+ };
85
+ this.insightSvc.fetchTrainingDetails(request).subscribe((/**
86
+ * @param {?} res
87
+ * @return {?}
88
+ */
89
+ (res) => {
90
+ if (res && res.result && res.result.Event) {
91
+ res.result.Event.forEach((/**
92
+ * @param {?} resp
93
+ * @return {?}
94
+ */
95
+ (resp) => {
96
+ if (this.trainings[resp.startDate]) {
97
+ /** @type {?} */
98
+ let prevData = this.trainings[resp.startDate];
99
+ /** @type {?} */
100
+ let location = resp.eventType;
101
+ if (resp.location && location !== "Online") {
102
+ /** @type {?} */
103
+ const jsonResp = JSON.parse(resp.location);
104
+ location = jsonResp['address'];
105
+ }
106
+ /** @type {?} */
107
+ const formatObject = {
108
+ location: location,
109
+ startTime: this.convertTo12HourFormat(resp.startTime),
110
+ endTime: this.convertTo12HourFormat(resp.endTime),
111
+ title: resp.name,
112
+ startDate: this.formatDate(resp.startDate),
113
+ endDate: this.formatDate(resp.endDate),
114
+ registrationLink: resp.registrationLink,
115
+ };
116
+ prevData.push(formatObject);
117
+ this.trainings[resp.startDate] = prevData;
118
+ }
119
+ }));
120
+ }
121
+ this.isDataLoading = false;
122
+ }));
123
+ }
124
+ /**
125
+ * @param {?} obj
126
+ * @return {?}
127
+ */
128
+ getKeys(obj) {
129
+ return Object.keys(obj);
130
+ }
131
+ /**
132
+ * @param {?} date
133
+ * @return {?}
134
+ */
135
+ formatDate(date) {
136
+ /** @type {?} */
137
+ let formatDate = new Date(date);
138
+ return this.datePipe.transform(formatDate, 'E, dd LLL');
139
+ }
140
+ /**
141
+ * @param {?} timeString
142
+ * @return {?}
143
+ */
144
+ convertTo12HourFormat(timeString) {
145
+ /** @type {?} */
146
+ const time = timeString.split(":");
147
+ /** @type {?} */
148
+ let hours = +time[0];
149
+ /** @type {?} */
150
+ const minutes = +time[1];
151
+ /** @type {?} */
152
+ const ampm = hours >= 12 ? 'PM' : 'AM';
153
+ hours = hours % 12;
154
+ hours = hours ? hours : 12;
155
+ /** @type {?} */
156
+ const strHours = hours < 10 ? '0' + hours : hours.toString();
157
+ /** @type {?} */
158
+ const strMinutes = minutes < 10 ? '0' + minutes : minutes.toString();
159
+ return `${strHours}:${strMinutes} ${ampm}`;
160
+ }
161
+ /**
162
+ * @param {?} cDate
163
+ * @param {?} counter
164
+ * @return {?}
165
+ */
166
+ getDays(cDate, counter) {
167
+ /** @type {?} */
168
+ const days = [];
169
+ /** @type {?} */
170
+ let initDate = new Date(cDate);
171
+ initDate = this.datePipe.transform(initDate, 'y-MM-dd');
172
+ days.push(initDate);
173
+ this.trainings[initDate] = [];
174
+ while (counter > 0) {
175
+ /** @type {?} */
176
+ let myDate = new Date(cDate);
177
+ myDate = myDate.setDate(myDate.getDate() + 1);
178
+ cDate = myDate;
179
+ myDate = this.datePipe.transform(myDate, 'y-MM-dd');
180
+ days.push(myDate);
181
+ this.trainings[myDate] = [];
182
+ counter = counter - 1;
183
+ }
184
+ return days;
185
+ }
186
+ /**
187
+ * @param {?} year
188
+ * @param {?} month
189
+ * @return {?}
190
+ */
191
+ getDaysInMonth(year, month) {
192
+ /** @type {?} */
193
+ const date = new Date(year, month, 1);
194
+ /** @type {?} */
195
+ const days = [];
196
+ this.trainings = {};
197
+ while (date.getMonth() === month) {
198
+ /** @type {?} */
199
+ let myDate = new Date(date);
200
+ myDate = this.datePipe.transform(myDate, 'y-MM-dd');
201
+ days.push(myDate);
202
+ this.trainings[myDate] = [];
203
+ date.setDate(date.getDate() + 1);
204
+ }
205
+ return days;
206
+ }
207
+ /**
208
+ * @return {?}
209
+ */
210
+ getMonthsDropdownData() {
211
+ this.allMonths.forEach((/**
212
+ * @param {?} month
213
+ * @return {?}
214
+ */
215
+ (month) => {
216
+ this.monthsDropdown.push(`${month} ${this.currentDate.getFullYear()}`);
217
+ }));
218
+ }
219
+ /**
220
+ * @param {?} event
221
+ * @return {?}
222
+ */
223
+ selectMonth(event) {
224
+ /** @type {?} */
225
+ const selectedMonth = new Date(event);
226
+ this.currentDate = selectedMonth;
227
+ this.days = [];
228
+ this.days = this.getDaysInMonth(this.currentDate.getFullYear(), this.currentDate.getMonth());
229
+ this.startDate = this.days[0];
230
+ this.endDate = this.days[this.days.length - 1];
231
+ this.isDataLoading = true;
232
+ this.getInsiteData();
233
+ }
234
+ }
235
+ CalenderComponent.decorators = [
236
+ { type: Component, args: [{
237
+ selector: 'sb-uic-calender',
238
+ template: "<div class=\"calendar-header flex flex-row c-padding center gap-2\" *ngIf=\"showHeader\">\n <div class=\"pt-3\">{{ objectData?.title }}:</div>\n <div class=\"choose-month\">\n <mat-form-field class=\"custom-month\">\n <mat-select matNativeControl panelClass=\"custom-select\" [ngModel]=\"selectedMonth\" (ngModelChange)=\"selectMonth($event)\" class=\"month-select\">\n <span *ngFor=\"let month of monthsDropdown\">\n <mat-option [value]=\"month\">{{month}}</mat-option>\n </span>\n </mat-select>\n </mat-form-field>\n </div>\n</div>\n<div *ngIf=\"layoutType==='grid'\">\n <div *ngFor=\"let obj of getKeys(trainings); let i = index\">\n <sb-uic-calender-day [day]=\"trainings[obj]\"\n [layoutType]=\"layoutType\"\n [objectData]=\"objectData\"\n [dataLoading]=\"isDataLoading\"\n [eventDate]=\"obj\"\n [rowId]=\"i\">\n </sb-uic-calender-day>\n </div> \n</div>\n<div *ngIf=\"layoutType==='row'\">\n <div *ngFor=\"let obj of getKeys(trainings); let j = index\">\n <sb-uic-calender-day [day]=\"trainings[obj]\"\n [layoutType]=\"layoutType\"\n [objectData]=\"objectData\"\n [dataLoading]=\"isDataLoading\"\n [eventDate]=\"obj\"\n [rowId]=\"j\">\n </sb-uic-calender-day>\n </div>\n</div>",
239
+ styles: [".calendar-header{font-family:Montserrat;font-size:16px;font-weight:600;line-height:19.5px;text-align:left}.c-padding{padding:0}.center{align-items:center}::ng-deep .custom-month .mat-form-field-wrapper{padding-bottom:0!important;width:145px}::ng-deep .custom-month .mat-form-field.mat-focused.mat-primary .mat-select-arrow{color:#000!important}::ng-deep .custom-month .mat-select-value{width:89%}::ng-deep .mat-select-arrow{color:#000!important}::ng-deep .custom-month .mat-select-value-text{font-weight:600}@media screen and (max-width:768px){.c-padding{padding:0 1.25rem 1rem}.calendar-header{font-size:15px}}"]
240
+ }] }
241
+ ];
242
+ /** @nocollapse */
243
+ CalenderComponent.ctorParameters = () => [
244
+ { type: DatePipe },
245
+ { type: InsiteDataService }
246
+ ];
247
+ CalenderComponent.propDecorators = {
248
+ objectData: [{ type: Input }],
249
+ layoutType: [{ type: Input }],
250
+ fetchDataFromApi: [{ type: Input }],
251
+ showHeader: [{ type: Input }],
252
+ defaultDays: [{ type: Input }],
253
+ providerId: [{ type: Input }],
254
+ fullCalendor: [{ type: Input }]
255
+ };
256
+ if (false) {
257
+ /** @type {?} */
258
+ CalenderComponent.prototype.objectData;
259
+ /** @type {?} */
260
+ CalenderComponent.prototype.layoutType;
261
+ /** @type {?} */
262
+ CalenderComponent.prototype.fetchDataFromApi;
263
+ /** @type {?} */
264
+ CalenderComponent.prototype.showHeader;
265
+ /** @type {?} */
266
+ CalenderComponent.prototype.defaultDays;
267
+ /** @type {?} */
268
+ CalenderComponent.prototype.providerId;
269
+ /** @type {?} */
270
+ CalenderComponent.prototype.fullCalendor;
271
+ /** @type {?} */
272
+ CalenderComponent.prototype.days;
273
+ /** @type {?} */
274
+ CalenderComponent.prototype.trainings;
275
+ /** @type {?} */
276
+ CalenderComponent.prototype.currentMonthAndYear;
277
+ /** @type {?} */
278
+ CalenderComponent.prototype.isDataLoading;
279
+ /** @type {?} */
280
+ CalenderComponent.prototype.currentDate;
281
+ /** @type {?} */
282
+ CalenderComponent.prototype.endDate;
283
+ /** @type {?} */
284
+ CalenderComponent.prototype.startDate;
285
+ /** @type {?} */
286
+ CalenderComponent.prototype.allMonths;
287
+ /** @type {?} */
288
+ CalenderComponent.prototype.monthsDropdown;
289
+ /** @type {?} */
290
+ CalenderComponent.prototype.selectedMonth;
291
+ /**
292
+ * @type {?}
293
+ * @private
294
+ */
295
+ CalenderComponent.prototype.datePipe;
296
+ /** @type {?} */
297
+ CalenderComponent.prototype.insightSvc;
298
+ }
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHN1bmJpcmQtY2IvY29uc3VtcHRpb24vIiwic291cmNlcyI6WyJsaWIvX2NvbW1vbi9jYWxlbmRlci9jYWxlbmRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU94RSxNQUFNLE9BQU8saUJBQWlCOzs7OztJQXVCNUIsWUFBb0IsUUFBa0IsRUFBUyxVQUE2QjtRQUF4RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFuQm5FLHFCQUFnQixHQUFZLEtBQUssQ0FBQTtRQUNqQyxlQUFVLEdBQVksS0FBSyxDQUFBO1FBQzNCLGdCQUFXLEdBQVcsQ0FBQyxDQUFBO1FBRXZCLGlCQUFZLEdBQVksS0FBSyxDQUFBO1FBQ3RDLFNBQUksR0FBRyxFQUFFLENBQUE7UUFDVCxjQUFTLEdBQVEsRUFBRSxDQUFBO1FBRW5CLGtCQUFhLEdBQVksS0FBSyxDQUFBO1FBQzlCLGdCQUFXLEdBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUc3QixjQUFTLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU87WUFDekMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTTtZQUM5QixRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVM7WUFDaEMsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQTtRQUNELG1CQUFjLEdBQVEsRUFBRSxDQUFBO0lBRXdELENBQUM7Ozs7SUFFakYsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FB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bSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5zaXRlRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvaW5zaXRlLWRhdGEuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NiLXVpYy1jYWxlbmRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGVyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIG9iamVjdERhdGE6IGFueVxuICBASW5wdXQoKSBsYXlvdXRUeXBlOiBhbnlcbiAgQElucHV0KCkgZmV0Y2hEYXRhRnJvbUFwaTogYm9vbGVhbiA9IGZhbHNlXG4gIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZVxuICBASW5wdXQoKSBkZWZhdWx0RGF5czogbnVtYmVyID0gM1xuICBASW5wdXQoKSBwcm92aWRlcklkOiBhbnlcbiAgQElucHV0KCkgZnVsbENhbGVuZG9yOiBib29sZWFuID0gZmFsc2VcbiAgZGF5cyA9IFtdXG4gIHRyYWluaW5nczogYW55ID0ge31cbiAgY3VycmVudE1vbnRoQW5kWWVhcjogYW55XG4gIGlzRGF0YUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZVxuICBjdXJyZW50RGF0ZTogYW55ID0gbmV3IERhdGUoKVxuICBlbmREYXRlOiBhbnlcbiAgc3RhcnREYXRlOiBhbnlcbiAgYWxsTW9udGhzID0gW1wiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIixcbiAgICBcIkFwcmlsXCIsIFwiTWF5XCIsIFwiSnVuZVwiLCBcIkp1bHlcIixcbiAgICBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIixcbiAgICBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxuICBdXG4gIG1vbnRoc0Ryb3Bkb3duOiBhbnkgPSBbXVxuICBzZWxlY3RlZE1vbnRoOiBhbnlcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsIHB1YmxpYyBpbnNpZ2h0U3ZjOiBJbnNpdGVEYXRhU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jdXJyZW50TW9udGhBbmRZZWFyID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jdXJyZW50RGF0ZSwgJ01NTU0geScpXG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5jdXJyZW50RGF0ZSwgJ0xMTEwgeXl5eScpXG4gICAgaWYgKHRoaXMuZnVsbENhbGVuZG9yKSB7XG4gICAgICB0aGlzLmRheXMgPSB0aGlzLmdldERheXNJbk1vbnRoKHRoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSwgdGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpKVxuICAgICAgdGhpcy5nZXRNb250aHNEcm9wZG93bkRhdGEoKVxuICAgIH1cbiAgICBpZiAoIXRoaXMuZnVsbENhbGVuZG9yKSB7XG4gICAgICB0aGlzLmRheXMgPSB0aGlzLmdldERheXModGhpcy5jdXJyZW50RGF0ZSwgK3RoaXMuZGVmYXVsdERheXMpXG4gICAgfVxuICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5kYXlzWzBdXG4gICAgdGhpcy5lbmREYXRlID0gdGhpcy5kYXlzW3RoaXMuZGF5cy5sZW5ndGggLSAxXVxuICAgIGlmKHRoaXMuZmV0Y2hEYXRhRnJvbUFwaSkge1xuICAgICAgdGhpcy5pc0RhdGFMb2FkaW5nID0gdHJ1ZVxuICAgICAgdGhpcy5nZXRJbnNpdGVEYXRhKClcbiAgICB9XG4gIH1cbiAgZ2V0SW5zaXRlRGF0YSgpIHtcbiAgICBsZXQgcmVxdWVzdCA9IHtcbiAgICAgIFwibG9jYWxlXCI6IFtcbiAgICAgICAgICBcImVuXCJcbiAgICAgIF0sXG4gICAgICBcInF1ZXJ5XCI6IFwiXCIsXG4gICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICAgIFwicXVlcnlcIjogXCJcIixcbiAgICAgICAgICBcImZpbHRlcnNcIjoge1xuICAgICAgICAgICAgICBcImNhdGVnb3J5XCI6IFtcbiAgICAgICAgICAgICAgICAgIFwiQ2FsZW5kYXJcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBcInN0YXR1c1wiOiBbXG4gICAgICAgICAgICAgICAgICBcIkxpdmVcIixcbiAgICAgICAgICAgICAgICAgIFwiUmV0aXJlZFwiXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIFwiY29udGVudFR5cGVcIjogXCJFdmVudFwiLFxuICAgICAgICAgICAgICBcInN0YXJ0RGF0ZVwiOiB7XG4gICAgICAgICAgICAgICAgXCI+PVwiOiB0aGlzLnN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICAgICBcIjw9XCI6IHRoaXMuZW5kRGF0ZVxuICAgICAgICAgICAgICAgIC8vIFwiPj1cIjogXCIyMDI0LTAxLTE1XCIsXG4gICAgICAgICAgICAgICAgLy8gXCI8XCI6IFwiMjAyNC0wNS0zMVwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFwiY2hhbm5lbFwiOiBbdGhpcy5wcm92aWRlcklkXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzb3J0X2J5XCI6IHtcbiAgICAgICAgICAgICAgXCJsYXN0VXBkYXRlZE9uXCI6IFwiZGVzY1wiXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmluc2lnaHRTdmMuZmV0Y2hUcmFpbmluZ0RldGFpbHMocmVxdWVzdCkuc3Vic2NyaWJlKChyZXM6IGFueSk9PiB7XG4gICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5FdmVudCkge1xuICAgICAgICByZXMucmVzdWx0LkV2ZW50LmZvckVhY2goKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnRyYWluaW5nc1tyZXNwLnN0YXJ0RGF0ZV0pIHtcbiAgICAgICAgICAgIGxldCBwcmV2RGF0YSA9IHRoaXMudHJhaW5pbmdzW3Jlc3Auc3RhcnREYXRlXVxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gcmVzcC5ldmVudFR5cGVcbiAgICAgICAgICAgIGlmIChyZXNwLmxvY2F0aW9uICYmIGxvY2F0aW9uICE9PSBcIk9ubGluZVwiKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGpzb25SZXNwID0gSlNPTi5wYXJzZShyZXNwLmxvY2F0aW9uKVxuICAgICAgICAgICAgICBsb2NhdGlvbiA9IGpzb25SZXNwWydhZGRyZXNzJ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdE9iamVjdCA9IHtcbiAgICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uLFxuICAgICAgICAgICAgICBzdGFydFRpbWU6IHRoaXMuY29udmVydFRvMTJIb3VyRm9ybWF0KHJlc3Auc3RhcnRUaW1lKSxcbiAgICAgICAgICAgICAgZW5kVGltZTogdGhpcy5jb252ZXJ0VG8xMkhvdXJGb3JtYXQocmVzcC5lbmRUaW1lKSxcbiAgICAgICAgICAgICAgdGl0bGU6IHJlc3AubmFtZSxcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiB0aGlzLmZvcm1hdERhdGUocmVzcC5zdGFydERhdGUpLFxuICAgICAgICAgICAgICBlbmREYXRlOiB0aGlzLmZvcm1hdERhdGUocmVzcC5lbmREYXRlKSxcbiAgICAgICAgICAgICAgcmVnaXN0cmF0aW9uTGluazogcmVzcC5yZWdpc3RyYXRpb25MaW5rLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldkRhdGEucHVzaChmb3JtYXRPYmplY3QpXG4gICAgICAgICAgICB0aGlzLnRyYWluaW5nc1tyZXNwLnN0YXJ0RGF0ZV0gPSBwcmV2RGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNEYXRhTG9hZGluZyA9IGZhbHNlXG4gICAgfSlcbiAgfVxuXG4gIGdldEtleXMob2JqOiBhbnkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaik7XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IGFueSkge1xuICAgIGxldCBmb3JtYXREYXRlID0gbmV3IERhdGUoZGF0ZSlcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZm9ybWF0RGF0ZSwgJ0UsIGRkIExMTCcpXG4gIH1cblxuICBjb252ZXJ0VG8xMkhvdXJGb3JtYXQodGltZVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lID0gdGltZVN0cmluZy5zcGxpdChcIjpcIilcbiAgICBsZXQgaG91cnMgPSArdGltZVswXVxuICAgIGNvbnN0IG1pbnV0ZXMgPSArdGltZVsxXVxuICAgIGNvbnN0IGFtcG0gPSBob3VycyA+PSAxMiA/ICdQTScgOiAnQU0nXG4gICAgaG91cnMgPSBob3VycyAlIDEyXG4gICAgaG91cnMgPSBob3VycyA/IGhvdXJzIDogMTJcbiAgICBjb25zdCBzdHJIb3VycyA9IGhvdXJzIDwgMTAgPyAnMCcgKyBob3VycyA6IGhvdXJzLnRvU3RyaW5nKClcbiAgICBjb25zdCBzdHJNaW51dGVzID0gbWludXRlcyA8IDEwID8gJzAnICsgbWludXRlcyA6IG1pbnV0ZXMudG9TdHJpbmcoKVxuICAgIHJldHVybiBgJHtzdHJIb3Vyc306JHtzdHJNaW51dGVzfSAke2FtcG19YFxuICB9XG5cbiAgZ2V0RGF5cyhjRGF0ZTogYW55LCBjb3VudGVyOiBudW1iZXIpIHtcbiAgICBjb25zdCBkYXlzOiBhbnkgPSBbXVxuICAgIGxldCBpbml0RGF0ZTogYW55ID0gbmV3IERhdGUoY0RhdGUpXG4gICAgaW5pdERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShpbml0RGF0ZSwgJ3ktTU0tZGQnKVxuICAgIGRheXMucHVzaChpbml0RGF0ZSlcbiAgICB0aGlzLnRyYWluaW5nc1tpbml0RGF0ZV0gPSBbXVxuICAgIHdoaWxlIChjb3VudGVyID4gMCkge1xuICAgICAgbGV0IG15RGF0ZTogYW55ID0gbmV3IERhdGUoY0RhdGUpXG4gICAgICBteURhdGUgPSBteURhdGUuc2V0RGF0ZShteURhdGUuZ2V0RGF0ZSgpICsgMSlcbiAgICAgIGNEYXRlID0gbXlEYXRlXG4gICAgICBteURhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShteURhdGUsICd5LU1NLWRkJylcbiAgICAgIGRheXMucHVzaChteURhdGUpXG4gICAgICB0aGlzLnRyYWluaW5nc1tteURhdGVdID0gW11cbiAgICAgIGNvdW50ZXIgPSBjb3VudGVyIC0gMVxuICAgIH1cbiAgICByZXR1cm4gZGF5c1xuICB9XG5cbiAgZ2V0RGF5c0luTW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogRGF0ZVtdIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpXG4gICAgY29uc3QgZGF5czogYW55ID0gW11cbiAgICB0aGlzLnRyYWluaW5ncyA9IHt9XG4gICAgd2hpbGUgKGRhdGUuZ2V0TW9udGgoKSA9PT0gbW9udGgpIHtcbiAgICAgIGxldCBteURhdGU6IGFueSA9IG5ldyBEYXRlKGRhdGUpXG4gICAgICBteURhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShteURhdGUsICd5LU1NLWRkJylcbiAgICAgIGRheXMucHVzaChteURhdGUpXG4gICAgICB0aGlzLnRyYWluaW5nc1tteURhdGVdID0gW11cbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpXG4gICAgfVxuICAgIHJldHVybiBkYXlzXG4gIH1cblxuICBnZXRNb250aHNEcm9wZG93bkRhdGEoKSB7XG4gICAgdGhpcy5hbGxNb250aHMuZm9yRWFjaCgobW9udGg6IGFueSkgPT4ge1xuICAgICAgdGhpcy5tb250aHNEcm9wZG93bi5wdXNoKGAke21vbnRofSAke3RoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKX1gKVxuICAgIH0pXG4gIH1cblxuICBzZWxlY3RNb250aChldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRNb250aDogYW55ID0gbmV3IERhdGUoZXZlbnQpXG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IHNlbGVjdGVkTW9udGhcbiAgICB0aGlzLmRheXMgPSBbXVxuICAgIHRoaXMuZGF5cyA9IHRoaXMuZ2V0RGF5c0luTW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkpXG4gICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLmRheXNbMF1cbiAgICB0aGlzLmVuZERhdGUgPSB0aGlzLmRheXNbdGhpcy5kYXlzLmxlbmd0aCAtIDFdXG4gICAgdGhpcy5pc0RhdGFMb2FkaW5nID0gdHJ1ZVxuICAgIHRoaXMuZ2V0SW5zaXRlRGF0YSgpXG4gIH1cbn1cbiJdfQ==