@pepperi-addons/ngx-lib 0.4.2-storybook.1 → 0.5.0-ng15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/address/address.component.d.ts +1 -1
  2. package/attachment/attachment.component.d.ts +2 -1
  3. package/bread-crumbs/bread-crumbs.component.d.ts +1 -1
  4. package/bread-crumbs/bread-crumbs.model.d.ts +1 -1
  5. package/button/button.component.d.ts +1 -1
  6. package/carousel/carousel-item.directive.d.ts +1 -1
  7. package/carousel/carousel.component.d.ts +1 -1
  8. package/checkbox/checkbox.component.d.ts +2 -1
  9. package/chips/chips.component.d.ts +4 -5
  10. package/chips/chips.component.theme.scss +15 -5
  11. package/chips/chips.model.d.ts +2 -2
  12. package/chips/chips.service.d.ts +0 -3
  13. package/color/color-picker.component.d.ts +1 -1
  14. package/color/color-picker.component.theme.scss +2 -1
  15. package/color/color.component.d.ts +1 -1
  16. package/color/color.model.d.ts +1 -1
  17. package/core/clipboard/clipboard.directive.d.ts +1 -1
  18. package/core/common/directives/auto-width.directive.d.ts +1 -1
  19. package/core/common/directives/base-destroyer.directive.d.ts +10 -0
  20. package/core/common/directives/button-blur.directive.d.ts +1 -1
  21. package/core/common/directives/button-loader.directive.d.ts +1 -1
  22. package/core/common/directives/data-qa.directive.d.ts +1 -1
  23. package/core/common/directives/div-loader.directive.d.ts +1 -1
  24. package/core/common/directives/menu-blur.directive.d.ts +1 -1
  25. package/core/common/directives/prevent-multi-click.directive.d.ts +1 -1
  26. package/core/common/directives/print.directive.d.ts +1 -1
  27. package/core/common/directives/public-api.d.ts +1 -0
  28. package/core/common/pipes/common-pipes.d.ts +5 -2
  29. package/core/common/services/addon.service.d.ts +6 -4
  30. package/core/common/services/file.service.d.ts +1 -1
  31. package/core/common/services/utilities.service.d.ts +4 -4
  32. package/core/customization/customization.model.d.ts +15 -12
  33. package/core/customization/customization.service.d.ts +4 -0
  34. package/core/layout/layout.service.d.ts +1 -1
  35. package/core/layout/rtl.directive.d.ts +2 -2
  36. package/core/portal/attach.directive.d.ts +1 -1
  37. package/core/portal/target.directive.d.ts +1 -1
  38. package/date/date.component.d.ts +4 -2
  39. package/dialog/default-dialog.component.d.ts +1 -1
  40. package/dialog/dialog.component.d.ts +1 -1
  41. package/dialog/dialog.model.d.ts +2 -2
  42. package/draggable-items/draggable-item/draggable-item.component.d.ts +16 -2
  43. package/draggable-items/draggable-items.component.d.ts +4 -7
  44. package/draggable-items/draggable-items.model.d.ts +2 -2
  45. package/draggable-items/draggable-items.module.d.ts +4 -3
  46. package/esm2020/address/address.component.mjs +16 -16
  47. package/esm2020/address/address.module.mjs +5 -5
  48. package/esm2020/attachment/attachment.component.mjs +58 -49
  49. package/esm2020/attachment/attachment.module.mjs +5 -5
  50. package/esm2020/bread-crumbs/bread-crumbs.component.mjs +15 -15
  51. package/esm2020/bread-crumbs/bread-crumbs.module.mjs +5 -5
  52. package/esm2020/button/button.component.mjs +23 -23
  53. package/esm2020/button/button.module.mjs +5 -5
  54. package/esm2020/carousel/carousel-item.directive.mjs +9 -9
  55. package/esm2020/carousel/carousel.component.mjs +52 -52
  56. package/esm2020/carousel/carousel.module.mjs +5 -5
  57. package/esm2020/checkbox/checkbox.component.mjs +40 -31
  58. package/esm2020/checkbox/checkbox.module.mjs +5 -5
  59. package/esm2020/chips/chips.component.mjs +26 -28
  60. package/esm2020/chips/chips.module.mjs +5 -5
  61. package/esm2020/chips/chips.service.mjs +5 -14
  62. package/esm2020/color/color-picker.component.mjs +5 -5
  63. package/esm2020/color/color.component.mjs +5 -5
  64. package/esm2020/color/color.module.mjs +5 -5
  65. package/esm2020/core/clipboard/clipboard.directive.mjs +4 -4
  66. package/esm2020/core/clipboard/clipboard.service.mjs +4 -4
  67. package/esm2020/core/common/directives/auto-width.directive.mjs +4 -4
  68. package/esm2020/core/common/directives/base-destroyer.directive.mjs +22 -0
  69. package/esm2020/core/common/directives/button-blur.directive.mjs +4 -4
  70. package/esm2020/core/common/directives/button-loader.directive.mjs +10 -10
  71. package/esm2020/core/common/directives/data-qa.directive.mjs +4 -4
  72. package/esm2020/core/common/directives/div-loader.directive.mjs +4 -4
  73. package/esm2020/core/common/directives/menu-blur.directive.mjs +4 -4
  74. package/esm2020/core/common/directives/prevent-multi-click.directive.mjs +4 -4
  75. package/esm2020/core/common/directives/print.directive.mjs +4 -4
  76. package/esm2020/core/common/directives/public-api.mjs +2 -1
  77. package/esm2020/core/common/pipes/common-pipes.mjs +47 -37
  78. package/esm2020/core/common/pipes/date-ago.pipe.mjs +4 -4
  79. package/esm2020/core/common/services/addon.service.mjs +36 -12
  80. package/esm2020/core/common/services/color.service.mjs +4 -4
  81. package/esm2020/core/common/services/cookie.service.mjs +4 -4
  82. package/esm2020/core/common/services/data-convertor.service.mjs +6 -6
  83. package/esm2020/core/common/services/file.service.mjs +4 -4
  84. package/esm2020/core/common/services/jwt-helper.service.mjs +4 -4
  85. package/esm2020/core/common/services/session.service.mjs +4 -4
  86. package/esm2020/core/common/services/translate.service.mjs +4 -4
  87. package/esm2020/core/common/services/utilities.service.mjs +10 -10
  88. package/esm2020/core/common/services/validator.service.mjs +4 -4
  89. package/esm2020/core/common/services/window-scrolling.service.mjs +4 -4
  90. package/esm2020/core/customization/customization.model.mjs +40 -5
  91. package/esm2020/core/customization/customization.service.mjs +23 -4
  92. package/esm2020/core/http/interceptors/error.interceptor.mjs +4 -4
  93. package/esm2020/core/http/interceptors/loader.interceptor.mjs +4 -4
  94. package/esm2020/core/http/interceptors/profiler.interceptor.mjs +4 -4
  95. package/esm2020/core/http/services/http.service.mjs +4 -4
  96. package/esm2020/core/http/services/loader.service.mjs +10 -10
  97. package/esm2020/core/layout/layout.service.mjs +12 -12
  98. package/esm2020/core/layout/rtl.directive.mjs +7 -7
  99. package/esm2020/core/portal/attach.directive.mjs +4 -4
  100. package/esm2020/core/portal/portal.service.mjs +4 -4
  101. package/esm2020/core/portal/target.directive.mjs +4 -4
  102. package/esm2020/core/scroll-to/scroll-to.service.mjs +4 -4
  103. package/esm2020/date/date.component.mjs +81 -59
  104. package/esm2020/date/date.model.mjs +7 -7
  105. package/esm2020/date/date.module.mjs +5 -5
  106. package/esm2020/dialog/default-dialog.component.mjs +4 -4
  107. package/esm2020/dialog/dialog.component.mjs +4 -4
  108. package/esm2020/dialog/dialog.module.mjs +5 -5
  109. package/esm2020/dialog/dialog.service.mjs +4 -4
  110. package/esm2020/draggable-items/draggable-item/draggable-item.component.mjs +46 -6
  111. package/esm2020/draggable-items/draggable-items.component.mjs +21 -29
  112. package/esm2020/draggable-items/draggable-items.module.mjs +9 -5
  113. package/esm2020/field-title/field-title.component.mjs +8 -5
  114. package/esm2020/field-title/field-title.module.mjs +5 -5
  115. package/esm2020/files-uploader/files-uploader.component.mjs +12 -12
  116. package/esm2020/files-uploader/files-uploader.module.mjs +5 -5
  117. package/esm2020/form/field-generator.component.mjs +5 -5
  118. package/esm2020/form/form.component.mjs +30 -28
  119. package/esm2020/form/form.module.mjs +5 -5
  120. package/esm2020/form/indicators.component.mjs +4 -4
  121. package/esm2020/form/internal-button.component.mjs +17 -17
  122. package/esm2020/form/internal-carusel.component.mjs +24 -20
  123. package/esm2020/form/internal-carusel.service.mjs +4 -4
  124. package/esm2020/form/internal-field-generator.component.mjs +5 -5
  125. package/esm2020/form/internal-form.component.mjs +30 -28
  126. package/esm2020/form/internal-list.component.mjs +7 -7
  127. package/esm2020/form/internal-menu.component.mjs +6 -8
  128. package/esm2020/form/internal-page.component.mjs +4 -4
  129. package/esm2020/form/internal-page.service.mjs +4 -4
  130. package/esm2020/group-buttons/group-buttons.component.mjs +5 -5
  131. package/esm2020/group-buttons/group-buttons.module.mjs +5 -5
  132. package/esm2020/icon/icon-registry.service.mjs +4 -4
  133. package/esm2020/icon/icon.component.mjs +11 -11
  134. package/esm2020/icon/icon.module.mjs +5 -5
  135. package/esm2020/icon/icon.service.mjs +4 -4
  136. package/esm2020/image/image.component.mjs +52 -43
  137. package/esm2020/image/image.module.mjs +5 -5
  138. package/esm2020/image/image.service.mjs +4 -4
  139. package/esm2020/images-filmstrip/images-filmstrip.component.mjs +26 -25
  140. package/esm2020/images-filmstrip/images-filmstrip.module.mjs +5 -5
  141. package/esm2020/link/link.component.mjs +65 -50
  142. package/esm2020/link/link.module.mjs +5 -5
  143. package/esm2020/link/link.pipes.mjs +4 -4
  144. package/esm2020/list/list-actions.component.mjs +6 -6
  145. package/esm2020/list/list-carousel.component.mjs +20 -20
  146. package/esm2020/list/list-chooser.component.mjs +6 -6
  147. package/esm2020/list/list-pager.component.mjs +12 -12
  148. package/esm2020/list/list-sorting.component.mjs +6 -6
  149. package/esm2020/list/list-total.component.mjs +9 -6
  150. package/esm2020/list/list-views.component.mjs +6 -6
  151. package/esm2020/list/list.component.mjs +151 -72
  152. package/esm2020/list/list.module.mjs +5 -5
  153. package/esm2020/list/list.pipes.mjs +7 -7
  154. package/esm2020/list/virtual-scroller.mjs +58 -58
  155. package/esm2020/menu/menu-item.component.mjs +5 -5
  156. package/esm2020/menu/menu.component.mjs +15 -12
  157. package/esm2020/menu/menu.model.mjs +2 -1
  158. package/esm2020/menu/menu.module.mjs +5 -5
  159. package/esm2020/ngx-lib.module.mjs +5 -5
  160. package/esm2020/page-layout/page-layout.component.mjs +4 -4
  161. package/esm2020/page-layout/page-layout.module.mjs +5 -5
  162. package/esm2020/profile-data-views-list/profile-data-view/profile-data-view.component.mjs +4 -4
  163. package/esm2020/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.mjs +27 -11
  164. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +70 -38
  165. package/esm2020/profile-data-views-list/profile-data-views-list.model.mjs +1 -1
  166. package/esm2020/profile-data-views-list/profile-data-views-list.module.mjs +5 -5
  167. package/esm2020/quantity-selector/quantity-selector-validation.directive.mjs +4 -4
  168. package/esm2020/quantity-selector/quantity-selector.component.mjs +102 -89
  169. package/esm2020/quantity-selector/quantity-selector.module.mjs +5 -5
  170. package/esm2020/quantity-selector/quantity-selector.pipes.mjs +4 -4
  171. package/esm2020/query-builder/common/model/legacy.mjs +1 -1
  172. package/esm2020/query-builder/common/model/operator.mjs +72 -62
  173. package/esm2020/query-builder/common/services/output-query.service.mjs +8 -6
  174. package/esm2020/query-builder/common/services/query-structure.service.mjs +37 -5
  175. package/esm2020/query-builder/common/services/type-convertor.service.mjs +10 -10
  176. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +25 -23
  177. package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +5 -5
  178. package/esm2020/query-builder/query-builder.component.mjs +19 -19
  179. package/esm2020/query-builder/query-builder.module.mjs +17 -6
  180. package/esm2020/query-builder/query-builder.service.mjs +5 -5
  181. package/esm2020/remote-loader/addon-block-loader.component.mjs +45 -35
  182. package/esm2020/remote-loader/addon-block-loader.service.mjs +8 -5
  183. package/esm2020/remote-loader/remote-loader-element.component.mjs +81 -26
  184. package/esm2020/remote-loader/remote-loader.component.mjs +13 -13
  185. package/esm2020/remote-loader/remote-loader.model.mjs +1 -1
  186. package/esm2020/remote-loader/remote-loader.module.mjs +5 -5
  187. package/esm2020/remote-loader/remote-loader.service.mjs +38 -15
  188. package/esm2020/rich-html-textarea/rich-html-textarea.component.mjs +52 -36
  189. package/esm2020/rich-html-textarea/rich-html-textarea.module.mjs +5 -5
  190. package/esm2020/search/search.component.mjs +35 -35
  191. package/esm2020/search/search.module.mjs +5 -5
  192. package/esm2020/select/select.component.mjs +89 -45
  193. package/esm2020/select/select.module.mjs +5 -5
  194. package/esm2020/select-panel/select-panel.component.mjs +26 -28
  195. package/esm2020/select-panel/select-panel.module.mjs +5 -5
  196. package/esm2020/separator/separator.component.mjs +16 -16
  197. package/esm2020/separator/separator.module.mjs +5 -5
  198. package/esm2020/side-bar/side-bar.component.mjs +29 -15
  199. package/esm2020/side-bar/side-bar.module.mjs +5 -5
  200. package/esm2020/signature/signature-dialog.component.mjs +4 -4
  201. package/esm2020/signature/signature.component.mjs +41 -32
  202. package/esm2020/signature/signature.module.mjs +5 -5
  203. package/esm2020/size-detector/size-detector.component.mjs +15 -13
  204. package/esm2020/size-detector/size-detector.module.mjs +5 -5
  205. package/esm2020/skeleton-loader/public-api.mjs +2 -2
  206. package/esm2020/skeleton-loader/skeleton-loader.component.mjs +5 -5
  207. package/esm2020/skeleton-loader/skeleton-loader.module.mjs +5 -5
  208. package/esm2020/slider/slider.component.mjs +21 -21
  209. package/esm2020/slider/slider.module.mjs +5 -5
  210. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +4 -4
  211. package/esm2020/smart-filters/common/filter-actions.component.mjs +4 -4
  212. package/esm2020/smart-filters/common/model/base-filter-component.mjs +28 -34
  213. package/esm2020/smart-filters/common/model/field.mjs +7 -7
  214. package/esm2020/smart-filters/common/model/operator.mjs +15 -6
  215. package/esm2020/smart-filters/common/model/type.mjs +1 -1
  216. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +4 -4
  217. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +5 -5
  218. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +4 -4
  219. package/esm2020/smart-filters/smart-filters.component.mjs +19 -19
  220. package/esm2020/smart-filters/smart-filters.module.mjs +5 -5
  221. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +29 -9
  222. package/esm2020/snack-bar/default-snack-bar.component.mjs +4 -4
  223. package/esm2020/snack-bar/snack-bar.component.mjs +4 -4
  224. package/esm2020/snack-bar/snack-bar.module.mjs +5 -5
  225. package/esm2020/snack-bar/snack-bar.service.mjs +4 -4
  226. package/esm2020/textarea/textarea.component.mjs +40 -31
  227. package/esm2020/textarea/textarea.module.mjs +5 -5
  228. package/esm2020/textbox/textbox-validation.directive.mjs +5 -5
  229. package/esm2020/textbox/textbox.component.mjs +171 -115
  230. package/esm2020/textbox/textbox.module.mjs +5 -5
  231. package/esm2020/textbox-icon/textbox-icon.component.mjs +4 -4
  232. package/esm2020/textbox-icon/textbox-icon.module.mjs +5 -5
  233. package/esm2020/top-bar/top-bar.component.mjs +5 -5
  234. package/esm2020/top-bar/top-bar.module.mjs +5 -5
  235. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +19 -19
  236. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  237. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  238. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  239. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  240. package/fesm2015/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  241. package/fesm2015/pepperi-addons-ngx-lib-button.mjs +26 -26
  242. package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  243. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  244. package/fesm2015/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  245. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  246. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  247. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +33 -44
  248. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  249. package/fesm2015/pepperi-addons-ngx-lib-color.mjs +12 -12
  250. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  251. package/fesm2015/pepperi-addons-ngx-lib-date.mjs +91 -68
  252. package/fesm2015/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  253. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  254. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  255. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +75 -40
  256. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  257. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  258. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  259. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  260. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  261. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +132 -126
  262. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  263. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  264. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  265. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +20 -20
  266. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  267. package/fesm2015/pepperi-addons-ngx-lib-image.mjs +58 -49
  268. package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  269. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  270. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  271. package/fesm2015/pepperi-addons-ngx-lib-link.mjs +71 -56
  272. package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  273. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +276 -192
  274. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  275. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +23 -19
  276. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  277. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  278. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  279. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  280. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  281. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  282. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  283. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +191 -132
  284. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  285. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +197 -108
  286. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  287. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  288. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  289. package/fesm2015/pepperi-addons-ngx-lib-search.mjs +38 -38
  290. package/fesm2015/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  291. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  292. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  293. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +92 -48
  294. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  295. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs +19 -19
  296. package/fesm2015/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  297. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  298. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  299. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +48 -38
  300. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  301. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  302. package/fesm2015/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  303. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  304. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  305. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs +24 -24
  306. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  307. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  308. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  309. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  310. package/fesm2015/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  311. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  312. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  313. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  314. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  315. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +181 -123
  316. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  317. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  318. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  319. package/fesm2015/pepperi-addons-ngx-lib.mjs +760 -653
  320. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  321. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +19 -19
  322. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  323. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +61 -52
  324. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  325. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs +18 -18
  326. package/fesm2020/pepperi-addons-ngx-lib-bread-crumbs.mjs.map +1 -1
  327. package/fesm2020/pepperi-addons-ngx-lib-button.mjs +26 -26
  328. package/fesm2020/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  329. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs +63 -63
  330. package/fesm2020/pepperi-addons-ngx-lib-carousel.mjs.map +1 -1
  331. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs +43 -34
  332. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  333. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +33 -44
  334. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  335. package/fesm2020/pepperi-addons-ngx-lib-color.mjs +12 -12
  336. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  337. package/fesm2020/pepperi-addons-ngx-lib-date.mjs +90 -68
  338. package/fesm2020/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  339. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs +13 -13
  340. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  341. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +74 -39
  342. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  343. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs +11 -8
  344. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  345. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +15 -15
  346. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  347. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +132 -126
  348. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  349. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +8 -8
  350. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  351. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs +20 -20
  352. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  353. package/fesm2020/pepperi-addons-ngx-lib-image.mjs +58 -49
  354. package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  355. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +29 -28
  356. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  357. package/fesm2020/pepperi-addons-ngx-lib-link.mjs +71 -56
  358. package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  359. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +274 -192
  360. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  361. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +23 -19
  362. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  363. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs +7 -7
  364. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  365. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +102 -54
  366. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  367. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +110 -97
  368. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  369. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +187 -131
  370. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  371. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +184 -93
  372. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  373. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs +55 -39
  374. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  375. package/fesm2020/pepperi-addons-ngx-lib-search.mjs +38 -38
  376. package/fesm2020/pepperi-addons-ngx-lib-search.mjs.map +1 -1
  377. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +29 -31
  378. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  379. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +92 -48
  380. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  381. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs +19 -19
  382. package/fesm2020/pepperi-addons-ngx-lib-separator.mjs.map +1 -1
  383. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs +32 -18
  384. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  385. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +47 -38
  386. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  387. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs +18 -16
  388. package/fesm2020/pepperi-addons-ngx-lib-size-detector.mjs.map +1 -1
  389. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +9 -9
  390. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -1
  391. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs +24 -24
  392. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  393. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +114 -91
  394. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  395. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs +13 -13
  396. package/fesm2020/pepperi-addons-ngx-lib-snack-bar.mjs.map +1 -1
  397. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs +43 -34
  398. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  399. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs +7 -7
  400. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  401. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +179 -123
  402. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  403. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +8 -8
  404. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  405. package/fesm2020/pepperi-addons-ngx-lib.mjs +780 -674
  406. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  407. package/field-title/field-title.component.d.ts +2 -1
  408. package/files-uploader/files-uploader.component.d.ts +1 -1
  409. package/form/field-generator.component.d.ts +1 -1
  410. package/form/form.component.d.ts +1 -1
  411. package/form/indicators.component.d.ts +1 -1
  412. package/form/internal-button.component.d.ts +1 -1
  413. package/form/internal-carusel.component.d.ts +2 -1
  414. package/form/internal-field-generator.component.d.ts +1 -1
  415. package/form/internal-form.component.d.ts +1 -1
  416. package/form/internal-list.component.d.ts +2 -2
  417. package/form/internal-menu.component.d.ts +1 -2
  418. package/form/internal-page.component.d.ts +1 -1
  419. package/group-buttons/group-buttons.component.d.ts +2 -2
  420. package/icon/icon-generated.model.d.ts +2 -2
  421. package/icon/icon.component.d.ts +1 -1
  422. package/image/image.component.d.ts +2 -1
  423. package/image/image.component.theme.scss +4 -2
  424. package/images-filmstrip/images-filmstrip.component.d.ts +1 -1
  425. package/link/link.component.d.ts +4 -1
  426. package/list/list-actions.component.d.ts +1 -1
  427. package/list/list-carousel.component.d.ts +2 -2
  428. package/list/list-chooser.component.d.ts +1 -1
  429. package/list/list-pager.component.d.ts +1 -1
  430. package/list/list-sorting.component.d.ts +1 -1
  431. package/list/list-total.component.d.ts +2 -1
  432. package/list/list-views.component.d.ts +2 -2
  433. package/list/list.component.d.ts +9 -3
  434. package/list/list.model.d.ts +6 -6
  435. package/list/virtual-scroller.d.ts +2 -2
  436. package/menu/menu-item.component.d.ts +1 -1
  437. package/menu/menu.component.d.ts +2 -1
  438. package/menu/menu.model.d.ts +4 -3
  439. package/package.json +1 -1
  440. package/page-layout/page-layout.component.d.ts +1 -1
  441. package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +4 -4
  442. package/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.d.ts +5 -4
  443. package/profile-data-views-list/profile-data-views-list.component.d.ts +13 -10
  444. package/profile-data-views-list/profile-data-views-list.model.d.ts +8 -0
  445. package/quantity-selector/quantity-selector-validation.directive.d.ts +1 -1
  446. package/quantity-selector/quantity-selector.component.d.ts +8 -9
  447. package/quantity-selector/quantity-selector.component.theme.scss +12 -6
  448. package/query-builder/common/model/legacy.d.ts +2 -0
  449. package/query-builder/common/model/operator.d.ts +11 -1
  450. package/query-builder/common/services/query-structure.service.d.ts +1 -0
  451. package/query-builder/query-builder-item/query-builder-item.component.d.ts +4 -2
  452. package/query-builder/query-builder-section/query-builder-section.component.d.ts +1 -1
  453. package/query-builder/query-builder.component.d.ts +1 -1
  454. package/query-builder/query-builder.module.d.ts +7 -3
  455. package/remote-loader/addon-block-loader.component.d.ts +4 -2
  456. package/remote-loader/remote-loader-element.component.d.ts +9 -2
  457. package/remote-loader/remote-loader.component.d.ts +1 -1
  458. package/remote-loader/remote-loader.model.d.ts +3 -2
  459. package/remote-loader/remote-loader.service.d.ts +2 -0
  460. package/rich-html-textarea/rich-html-textarea.component.d.ts +4 -1
  461. package/rich-html-textarea/rich-html-textarea.component.theme.scss +8 -5
  462. package/search/search.component.d.ts +1 -1
  463. package/search/search.model.d.ts +4 -4
  464. package/select/select.component.d.ts +9 -1
  465. package/select/select.component.theme.scss +22 -11
  466. package/select-panel/select-panel.component.d.ts +1 -2
  467. package/select-panel/select-panel.component.theme.scss +0 -2
  468. package/separator/separator.component.d.ts +1 -1
  469. package/side-bar/side-bar.component.d.ts +4 -1
  470. package/side-bar/side-bar.model.d.ts +1 -1
  471. package/signature/signature-dialog.component.d.ts +2 -2
  472. package/signature/signature.component.d.ts +2 -1
  473. package/size-detector/size-detector.component.d.ts +1 -1
  474. package/skeleton-loader/skeleton-loader.component.d.ts +4 -4
  475. package/slider/slider.component.d.ts +1 -1
  476. package/slider/slider.component.theme.scss +15 -5
  477. package/smart-filters/boolean-filter/boolean-filter.component.d.ts +4 -1
  478. package/smart-filters/common/filter-actions.component.d.ts +1 -1
  479. package/smart-filters/common/model/base-filter-component.d.ts +3 -5
  480. package/smart-filters/common/model/operator.d.ts +3 -0
  481. package/smart-filters/common/model/type.d.ts +4 -4
  482. package/smart-filters/date-filter/date-filter.component.d.ts +4 -1
  483. package/smart-filters/multi-select-filter/multi-select-filter.component.d.ts +4 -1
  484. package/smart-filters/number-filter/number-filter.component.d.ts +4 -1
  485. package/smart-filters/smart-filters.component.d.ts +1 -1
  486. package/smart-filters/text-filter/text-filter.component.d.ts +5 -1
  487. package/snack-bar/default-snack-bar.component.d.ts +1 -1
  488. package/snack-bar/snack-bar.component.d.ts +1 -1
  489. package/src/assets/i18n/ar.ngx-lib.json +180 -0
  490. package/src/assets/i18n/de.ngx-lib.json +106 -4
  491. package/src/assets/i18n/en.ngx-lib.json +10 -3
  492. package/src/assets/i18n/es.ngx-lib.json +113 -11
  493. package/src/assets/i18n/fr.ngx-lib.json +105 -4
  494. package/src/assets/i18n/he.ngx-lib.json +105 -4
  495. package/src/assets/i18n/it.ngx-lib.json +114 -13
  496. package/src/assets/i18n/ja.ngx-lib.json +105 -4
  497. package/src/assets/i18n/pl.ngx-lib.json +105 -4
  498. package/src/assets/i18n/pt.ngx-lib.json +105 -4
  499. package/src/assets/i18n/sr.ngx-lib.json +180 -0
  500. package/src/assets/i18n/zh.ngx-lib.json +105 -2
  501. package/src/core/style/abstracts/mixins.scss +157 -37
  502. package/src/core/style/abstracts/variables.scss +10 -1
  503. package/src/core/style/base/Spacing.stories.mdx +22 -22
  504. package/src/core/style/base/base.scss +219 -117
  505. package/src/core/style/base/typography.scss +2 -1
  506. package/src/core/style/components/button.scss +52 -19
  507. package/src/core/style/components/checkbox.scss +132 -128
  508. package/src/core/style/components/file.scss +13 -9
  509. package/src/core/style/components/general.scss +149 -65
  510. package/src/core/style/components/radio-button.scss +50 -23
  511. package/src/core/style/components/textarea.scss +69 -30
  512. package/textarea/textarea.component.d.ts +2 -1
  513. package/textbox/textbox-validation.directive.d.ts +1 -1
  514. package/textbox/textbox.component.d.ts +4 -1
  515. package/textbox-icon/textbox-icon.component.d.ts +1 -1
  516. package/theming-offline.scss +2 -1
  517. package/theming.scss +7 -2
  518. package/top-bar/top-bar.component.d.ts +1 -1
  519. package/top-bar/top-bar.model.d.ts +1 -1
  520. package/src/assets/images/sail-away.jpg +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-list.mjs","sources":["../../../projects/ngx-lib/list/virtual-scroller.ts","../../../projects/ngx-lib/list/list.model.ts","../../../projects/ngx-lib/list/list-pager.component.ts","../../../projects/ngx-lib/list/list-pager.component.html","../../../projects/ngx-lib/list/list.component.ts","../../../projects/ngx-lib/list/list.component.html","../../../projects/ngx-lib/list/list-actions.component.ts","../../../projects/ngx-lib/list/list-actions.component.html","../../../projects/ngx-lib/list/list-carousel.component.ts","../../../projects/ngx-lib/list/list-carousel.component.html","../../../projects/ngx-lib/list/list-chooser.component.ts","../../../projects/ngx-lib/list/list-chooser.component.html","../../../projects/ngx-lib/list/list-sorting.component.ts","../../../projects/ngx-lib/list/list-sorting.component.html","../../../projects/ngx-lib/list/list-total.component.ts","../../../projects/ngx-lib/list/list-total.component.html","../../../projects/ngx-lib/list/list-views.component.ts","../../../projects/ngx-lib/list/list-views.component.html","../../../projects/ngx-lib/list/list.pipes.ts","../../../projects/ngx-lib/list/list.module.ts","../../../projects/ngx-lib/list/public-api.ts","../../../projects/ngx-lib/list/pepperi-addons-ngx-lib-list.ts"],"sourcesContent":["import {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tContentChild,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInject,\r\n\tInput,\r\n\tNgModule,\r\n\tNgZone,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOptional,\r\n\tOutput,\r\n\tRenderer2,\r\n\tViewChild,\r\n} from '@angular/core';\r\n\r\nimport { PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\n\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport * as tween from '@tweenjs/tween.js'\r\n\r\nexport interface VirtualScrollerDefaultOptions {\r\n\tcheckResizeInterval: number\r\n\tmodifyOverflowStyleOfParentScroll: boolean,\r\n\tresizeBypassRefreshThreshold: number,\r\n\tscrollAnimationTime: number;\r\n\tscrollDebounceTime: number;\r\n\tscrollThrottlingTime: number;\r\n\tscrollbarHeight?: number;\r\n\tscrollbarWidth?: number;\r\n\tstripedTable: boolean\r\n}\r\n\r\nexport function VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY(): VirtualScrollerDefaultOptions {\r\n\treturn {\r\n\t\tcheckResizeInterval: 1000,\r\n\t\tmodifyOverflowStyleOfParentScroll: true,\r\n\t\tresizeBypassRefreshThreshold: 5,\r\n\t\tscrollAnimationTime: 750,\r\n\t\tscrollDebounceTime: 0,\r\n\t\tscrollThrottlingTime: 0,\r\n\t\tstripedTable: false\r\n\t};\r\n}\r\n\r\nexport interface WrapGroupDimensions {\r\n\tmaxChildSizePerWrapGroup: WrapGroupDimension[];\r\n\tnumberOfKnownWrapGroupChildSizes: number;\r\n\tsumOfKnownWrapGroupChildHeights: number;\r\n\tsumOfKnownWrapGroupChildWidths: number;\r\n}\r\n\r\nexport interface WrapGroupDimension {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titems: any[];\r\n}\r\n\r\nexport interface IDimensions {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titemCount: number;\r\n\titemsPerPage: number;\r\n\titemsPerWrapGroup: number;\r\n\tmaxScrollPosition: number;\r\n\tpageCount_fractional: number;\r\n\tscrollLength: number;\r\n\tviewportLength: number;\r\n\twrapGroupsPerPage: number;\r\n}\r\n\r\nexport type ScrollDirectionType = 'backward' | 'forward';\r\n\r\nexport interface IPageInfo {\r\n\tendIndex: number;\r\n\tendIndexWithBuffer: number;\r\n\tmaxScrollPosition: number;\r\n\tscrollEndPosition: number;\r\n\tscrollStartPosition: number;\r\n\tscrollDirection?: ScrollDirectionType;\r\n\tstartIndex: number;\r\n\tstartIndexWithBuffer: number;\r\n}\r\n\r\nexport interface IViewport extends IPageInfo {\r\n\tpadding: number;\r\n\tscrollLength: number;\r\n}\r\n\r\n@Component({\r\n\tselector: 'virtual-scroller,[virtualScroller]',\r\n\texportAs: 'virtualScroller',\r\n\ttemplate: `\r\n <div class=\"total-padding\" #invisiblePadding></div>\r\n <div class=\"scrollable-content\" #content>\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n\thost: {\r\n\t\t'[class.horizontal]': \"horizontal\",\r\n\t\t'[class.vertical]': \"!horizontal\",\r\n\t\t'[class.selfScroll]': \"!parentScroll\",\r\n\t\t'[class.rtl]': \"RTL\"\r\n\t},\r\n\tstyles: [`\r\n :host {\r\n position: relative;\r\n\t \tdisplay: block;\r\n -webkit-overflow-scrolling: touch;\r\n }\r\n\t\t:host.horizontal.selfScroll {\r\n overflow-y: visible;\r\n overflow-x: auto;\r\n\t\t}\r\n\t\t:host.horizontal.selfScroll.rtl {\r\n\t\t\ttransform: scaleX(-1);\r\n\t\t}\r\n\t\t:host.vertical.selfScroll {\r\n overflow-y: auto;\r\n overflow-x: visible;\r\n\t\t}\r\n .scrollable-content {\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n max-width: 100vw;\r\n max-height: 100vh;\r\n position: absolute;\r\n }\r\n\t\t.scrollable-content ::ng-deep > * {\r\n\t\t\tbox-sizing: border-box;\r\n\t\t}\r\n\t\t:host.horizontal {\r\n\t\t\twhite-space: nowrap;\r\n\t\t}\r\n\t\t:host.horizontal .scrollable-content {\r\n\t\t\tdisplay: flex;\r\n\t\t}\r\n\t\t:host.horizontal .scrollable-content ::ng-deep > * {\r\n\t\t\tflex-shrink: 0;\r\n\t\t\tflex-grow: 0;\r\n\t\t\twhite-space: initial;\r\n\t\t}\r\n\t\t:host.horizontal.rtl .scrollable-content ::ng-deep > * {\r\n\t\t\ttransform:scaleX(-1);\r\n\t\t}\r\n .total-padding {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 1px;\r\n width: 1px;\r\n transform-origin: 0 0;\r\n opacity: 0;\r\n }\r\n :host.horizontal .total-padding {\r\n height: 100%;\r\n }\r\n `]\r\n})\r\nexport class VirtualScrollerComponent implements OnInit, OnChanges, OnDestroy {\r\n\tpublic viewPortItems: any[];\r\n\tpublic window = window;\r\n\r\n\tpublic get viewPortInfo(): IPageInfo {\r\n\t\tconst pageInfo: IViewport = this.previousViewPort || <any>{};\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex || 0,\r\n\t\t\tendIndex: pageInfo.endIndex || 0,\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition || 0,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition || 0,\r\n\t\t\tscrollDirection: pageInfo.scrollDirection || 'forward',\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition || 0,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer || 0,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer || 0,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected _disable = false;\r\n\t@Input()\r\n\tpublic get disable(): boolean {\r\n\t\treturn this._disable;\r\n\t}\r\n\tpublic set disable(value: boolean) {\r\n\t\tif (this._disable === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._disable = value;\r\n\t\tif (this._disable) {\r\n\t\t\tthis.removeScrollEventHandlers();\r\n\t\t} else {\r\n\t\t\tthis.addScrollEventHandlers();\r\n\t\t}\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic executeRefreshOutsideAngularZone = false;\r\n\r\n\tprotected _enableUnequalChildrenSizes = false;\r\n\t@Input()\r\n\tpublic get enableUnequalChildrenSizes(): boolean {\r\n\t\treturn this._enableUnequalChildrenSizes;\r\n\t}\r\n\tpublic set enableUnequalChildrenSizes(value: boolean) {\r\n\t\tif (this._enableUnequalChildrenSizes === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._enableUnequalChildrenSizes = value;\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic RTL = false;\r\n\r\n\t@Input()\r\n\tpublic useMarginInsteadOfTranslate = false;\r\n\r\n\t@Input()\r\n\tpublic modifyOverflowStyleOfParentScroll: boolean;\r\n\r\n\t@Input()\r\n\tpublic stripedTable: boolean;\r\n\r\n\t@Input()\r\n\tpublic scrollbarWidth: number;\r\n\r\n\t@Input()\r\n\tpublic scrollbarHeight: number;\r\n\r\n\t@Input()\r\n\tpublic childWidth: number;\r\n\r\n\t@Input()\r\n\tpublic childHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildWidth: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportWidth = 1920;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportHeight = 1080;\r\n\r\n\tprotected _bufferAmount: number;\r\n\t@Input()\r\n\tpublic get bufferAmount(): number {\r\n\t\tif (typeof (this._bufferAmount) === 'number' && this._bufferAmount > 0) {\r\n\t\t\treturn this._bufferAmount;\r\n\t\t} else {\r\n\t\t\treturn this.enableUnequalChildrenSizes ? 5 : 0;\r\n\t\t}\r\n\t}\r\n\tpublic set bufferAmount(value: number) {\r\n\t\tthis._bufferAmount = value;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic scrollAnimationTime: number;\r\n\r\n\t@Input()\r\n\tpublic resizeBypassRefreshThreshold: number;\r\n\r\n\tprotected _scrollThrottlingTime: number;\r\n\t@Input()\r\n\tpublic get scrollThrottlingTime(): number {\r\n\t\treturn this._scrollThrottlingTime;\r\n\t}\r\n\tpublic set scrollThrottlingTime(value: number) {\r\n\t\tthis._scrollThrottlingTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected _scrollDebounceTime: number;\r\n\t@Input()\r\n\tpublic get scrollDebounceTime(): number {\r\n\t\treturn this._scrollDebounceTime;\r\n\t}\r\n\tpublic set scrollDebounceTime(value: number) {\r\n\t\tthis._scrollDebounceTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected onScroll: () => void;\r\n\tprotected updateOnScrollFunction(): void {\r\n\t\tif (this.scrollDebounceTime) {\r\n\t\t\tthis.onScroll = <any>this.debounce(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollDebounceTime);\r\n\t\t}\r\n\t\telse if (this.scrollThrottlingTime) {\r\n\t\t\tthis.onScroll = <any>this.throttleTrailing(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollThrottlingTime);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.onScroll = () => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprotected checkScrollElementResizedTimer: number;\r\n\tprotected _checkResizeInterval: number;\r\n\t@Input()\r\n\tpublic get checkResizeInterval(): number {\r\n\t\treturn this._checkResizeInterval;\r\n\t}\r\n\tpublic set checkResizeInterval(value: number) {\r\n\t\tif (this._checkResizeInterval === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._checkResizeInterval = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tprotected _items: any[] = [];\r\n\t@Input()\r\n\tpublic get items(): any[] {\r\n\t\treturn this._items;\r\n\t}\r\n\tpublic set items(value: any[]) {\r\n\t\tif (value === this._items) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._items = value || [];\r\n\t\tthis.refresh_internal(true);\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic compareItems: (item1: any, item2: any) => boolean = (item1: any, item2: any) => item1 === item2;\r\n\r\n\tprotected _horizontal: boolean;\r\n\t@Input()\r\n\tpublic get horizontal(): boolean {\r\n\t\treturn this._horizontal;\r\n\t}\r\n\tpublic set horizontal(value: boolean) {\r\n\t\tthis._horizontal = value;\r\n\t\tthis.updateDirection();\r\n\t}\r\n\r\n\tprotected revertParentOverscroll(): void {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (scrollElement && this.oldParentScrollOverflow) {\r\n\t\t\tscrollElement.style['overflow-y'] = this.oldParentScrollOverflow.y;\r\n\t\t\tscrollElement.style['overflow-x'] = this.oldParentScrollOverflow.x;\r\n\t\t}\r\n\r\n\t\tthis.oldParentScrollOverflow = undefined;\r\n\t}\r\n\r\n\tprotected oldParentScrollOverflow: { x: string, y: string };\r\n\tprotected _parentScroll: Element | Window;\r\n\t@Input()\r\n\tpublic get parentScroll(): Element | Window {\r\n\t\treturn this._parentScroll;\r\n\t}\r\n\tpublic set parentScroll(value: Element | Window) {\r\n\t\tif (this._parentScroll === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.revertParentOverscroll();\r\n\t\tthis._parentScroll = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (this.modifyOverflowStyleOfParentScroll && scrollElement !== this.element.nativeElement) {\r\n\t\t\tthis.oldParentScrollOverflow = { x: scrollElement.style['overflow-x'], y: scrollElement.style['overflow-y'] };\r\n\t\t\tscrollElement.style['overflow-y'] = this.horizontal ? 'visible' : 'auto';\r\n\t\t\tscrollElement.style['overflow-x'] = this.horizontal ? 'auto' : 'visible';\r\n\t\t}\r\n\t}\r\n\r\n\t// private _lastChildRect: DOMRect = null;\r\n\r\n\t@Output()\r\n\tpublic vsChildRectChange: EventEmitter<DOMRect> = new EventEmitter<DOMRect>();\r\n\r\n\t@Output()\r\n\tpublic vsUpdate: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n\t@Output()\r\n\tpublic vsChange: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsStart: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsEnd: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@ViewChild('content', { read: ElementRef, static: true })\r\n\tpublic contentElementRef: ElementRef;\r\n\r\n\t@ViewChild('invisiblePadding', { read: ElementRef, static: true })\r\n\tprotected invisiblePaddingElementRef: ElementRef;\r\n\r\n\t@ContentChild('header', { read: ElementRef, static: false })\r\n\tprotected headerElementRef: ElementRef;\r\n\r\n\t@ContentChild('container', { read: ElementRef, static: false })\r\n\tprotected containerElementRef: ElementRef;\r\n\r\n\tpublic ngOnInit(): void {\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tpublic ngOnDestroy(): void {\r\n\t\tthis.removeScrollEventHandlers();\r\n\t\tthis.revertParentOverscroll();\r\n\t}\r\n\r\n\tpublic ngOnChanges(changes: any): void {\r\n\t\tconst indexLengthChanged = this.cachedItemsLength !== this.items.length;\r\n\t\tthis.cachedItemsLength = this.items.length;\r\n\r\n\t\tconst firstRun: boolean = !changes.items || !changes.items.previousValue || changes.items.previousValue.length === 0;\r\n\t\tthis.refresh_internal(indexLengthChanged || firstRun);\r\n\t}\r\n\r\n\tpublic ngDoCheck(): void {\r\n\t\tif (this.cachedItemsLength !== this.items.length) {\r\n\t\t\tthis.cachedItemsLength = this.items.length;\r\n\t\t\tthis.refresh_internal(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.previousViewPort && this.viewPortItems && this.viewPortItems.length > 0) {\r\n\t\t\tlet itemsArrayChanged = false;\r\n\t\t\tfor (let i = 0; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\tif (!this.compareItems(this.items[this.previousViewPort.startIndexWithBuffer + i], this.viewPortItems[i])) {\r\n\t\t\t\t\titemsArrayChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (itemsArrayChanged) {\r\n\t\t\t\tthis.refresh_internal(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic refresh(refreshCompletedCallback: () => void = undefined): void {\r\n\t\tthis.refresh_internal(true, refreshCompletedCallback);\r\n\t}\r\n\r\n\tpublic invalidateAllCachedMeasurements(): void {\r\n\t\tthis.wrapGroupDimensions = {\r\n\t\t\tmaxChildSizePerWrapGroup: [],\r\n\t\t\tnumberOfKnownWrapGroupChildSizes: 0,\r\n\t\t\tsumOfKnownWrapGroupChildWidths: 0,\r\n\t\t\tsumOfKnownWrapGroupChildHeights: 0\r\n\t\t};\r\n\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementForItem(item: any): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst index = this.items && this.items.indexOf(item);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tthis.invalidateCachedMeasurementAtIndex(index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementAtIndex(index: number): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst cachedMeasurement = this.wrapGroupDimensions.maxChildSizePerWrapGroup[index];\r\n\t\t\tif (cachedMeasurement) {\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[index] = undefined;\r\n\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= cachedMeasurement.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= cachedMeasurement.childHeight || 0;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic scrollInto(item: any, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tconst index: number = this.items.indexOf(item);\r\n\t\tif (index === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tlet maxRetries = 5;\r\n\r\n\t\tconst retryIfNeeded = () => {\r\n\t\t\t--maxRetries;\r\n\t\t\tif (maxRetries <= 0) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst dimensions = this.calculateDimensions();\r\n\t\t\tconst desiredStartIndex = Math.min(Math.max(index, 0), dimensions.itemCount - 1);\r\n\t\t\tif (this.previousViewPort.startIndex === desiredStartIndex) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, 0, retryIfNeeded);\r\n\t\t};\r\n\r\n\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, animationMilliseconds, retryIfNeeded);\r\n\t}\r\n\r\n\tprotected scrollToIndex_internal(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tlet scroll = this.calculatePadding(index, dimensions) + additionalOffset;\r\n\t\tif (!alignToBeginning) {\r\n\t\t\tscroll -= dimensions.wrapGroupsPerPage * dimensions[this._childScrollDim];\r\n\t\t}\r\n\r\n\t\tthis.scrollToPosition(scroll, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToPosition(scrollPosition: number, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tscrollPosition += this.getElementsOffset();\r\n\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tlet animationRequest: number;\r\n\r\n\t\tif (this.currentTween) {\r\n\t\t\tthis.currentTween.stop();\r\n\t\t\tthis.currentTween = undefined;\r\n\t\t}\r\n\r\n\t\tif (!animationMilliseconds) {\r\n\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, scrollPosition);\r\n\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tweenConfigObj = { scrollPosition: scrollElement[this._scrollType] };\r\n\r\n\t\tconst newTween = new tween.Tween(tweenConfigObj)\r\n\t\t\t.to({ scrollPosition }, animationMilliseconds)\r\n\t\t\t.easing(tween.Easing.Quadratic.Out)\r\n\t\t\t.onUpdate((data) => {\r\n\t\t\t\tif (isNaN(data.scrollPosition)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, data.scrollPosition);\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t})\r\n\t\t\t.onStop(() => {\r\n\t\t\t\tcancelAnimationFrame(animationRequest);\r\n\t\t\t})\r\n\t\t\t.start();\r\n\r\n\t\tconst animate = (time?: number) => {\r\n\t\t\tif (!newTween[\"isPlaying\"]()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tnewTween.update(time);\r\n\t\t\tif (tweenConfigObj.scrollPosition === scrollPosition) {\r\n\t\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\t\tanimationRequest = requestAnimationFrame(animate);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tanimate();\r\n\t\tthis.currentTween = newTween;\r\n\t}\r\n\r\n\tprotected isAngularUniversalSSR: boolean;\r\n\r\n\tconstructor(\r\n\t\tprotected readonly element: ElementRef,\r\n\t\tprotected readonly renderer: Renderer2,\r\n\t\tprotected readonly zone: NgZone,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\t@Inject(PLATFORM_ID) platformId: any,\r\n\t\t@Optional() @Inject('virtual-scroller-default-options')\r\n\t\toptions: VirtualScrollerDefaultOptions\r\n\t) {\r\n\r\n\t\tthis.isAngularUniversalSSR = isPlatformServer(platformId);\r\n\r\n\t\tconst defaultOptions = VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY();\r\n\r\n\t\tthis.checkResizeInterval = options?.checkResizeInterval || defaultOptions.checkResizeInterval;\r\n\t\tthis.modifyOverflowStyleOfParentScroll = options?.modifyOverflowStyleOfParentScroll || defaultOptions.modifyOverflowStyleOfParentScroll;\r\n\t\tthis.resizeBypassRefreshThreshold = options?.resizeBypassRefreshThreshold || defaultOptions.resizeBypassRefreshThreshold;\r\n\t\tthis.scrollAnimationTime = options?.scrollAnimationTime || defaultOptions.scrollAnimationTime;\r\n\t\tthis.scrollDebounceTime = options?.scrollDebounceTime || defaultOptions.scrollDebounceTime;\r\n\t\tthis.scrollThrottlingTime = options?.scrollThrottlingTime || defaultOptions.scrollThrottlingTime;\r\n\t\tthis.scrollbarHeight = options?.scrollbarHeight || defaultOptions.scrollbarHeight;\r\n\t\tthis.scrollbarWidth = options?.scrollbarWidth || defaultOptions.scrollbarWidth;\r\n\t\tthis.stripedTable = options?.stripedTable || defaultOptions.stripedTable;\r\n\r\n\t\tthis.horizontal = false;\r\n\t\tthis.resetWrapGroupDimensions();\r\n\t}\r\n\r\n\tpublic getElementSize(element: HTMLElement): any {\r\n\t\tconst result = element.getBoundingClientRect();\r\n\t\tconst styles = getComputedStyle(element);\r\n\t\tconst marginTop = parseInt(styles['margin-top'], 10) || 0;\r\n\t\tconst marginBottom = parseInt(styles['margin-bottom'], 10) || 0;\r\n\t\tconst marginLeft = parseInt(styles['margin-left'], 10) || 0;\r\n\t\tconst marginRight = parseInt(styles['margin-right'], 10) || 0;\r\n\r\n\t\treturn {\r\n\t\t\ttop: result.top + marginTop,\r\n\t\t\tbottom: result.bottom + marginBottom,\r\n\t\t\tleft: result.left + marginLeft,\r\n\t\t\tright: result.right + marginRight,\r\n\t\t\twidth: parseFloat((result.width + marginLeft + marginRight).toFixed(3)),\r\n\t\t\theight: parseFloat((result.height + marginTop + marginBottom).toFixed(3))\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getContent() {\r\n\t\tconst content = (this.containerElementRef && this.containerElementRef.nativeElement) || this.contentElementRef.nativeElement;\r\n\t\treturn content;\r\n\t}\r\n\r\n\tprotected previousScrollBoundingRect: DOMRect;\r\n\tprotected checkScrollElementResized(): void {\r\n\t\tconst boundingRect = this.getElementSize(this.getScrollElement());\r\n\r\n\t\tlet sizeChanged: boolean;\r\n\t\tif (!this.previousScrollBoundingRect) {\r\n\t\t\tsizeChanged = true;\r\n\t\t} else {\r\n\t\t\tconst widthChange = Math.abs(boundingRect.width - this.previousScrollBoundingRect.width);\r\n\t\t\tconst heightChange = Math.abs(boundingRect.height - this.previousScrollBoundingRect.height);\r\n\t\t\tsizeChanged = widthChange > this.resizeBypassRefreshThreshold || heightChange > this.resizeBypassRefreshThreshold;\r\n\t\t}\r\n\r\n\t\tif (sizeChanged) {\r\n\t\t\tthis.previousScrollBoundingRect = boundingRect;\r\n\t\t\tif (boundingRect.width > 0 && boundingRect.height > 0) {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _invisiblePaddingProperty;\r\n\tprotected _offsetType;\r\n\tprotected _scrollType;\r\n\tprotected _pageOffsetType;\r\n\tprotected _childScrollDim;\r\n\tprotected _translateDir;\r\n\tprotected _marginDir;\r\n\tprotected updateDirection(): void {\r\n\t\tif (this.horizontal) {\r\n\t\t\tthis._childScrollDim = 'childWidth';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleX';\r\n\t\t\tthis._marginDir = 'margin-left';\r\n\t\t\tthis._offsetType = 'offsetLeft';\r\n\t\t\tthis._pageOffsetType = 'pageXOffset';\r\n\t\t\tthis._scrollType = 'scrollLeft';\r\n\t\t\tthis._translateDir = 'translateX';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._childScrollDim = 'childHeight';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleY';\r\n\t\t\tthis._marginDir = 'margin-top';\r\n\t\t\tthis._offsetType = 'offsetTop';\r\n\t\t\tthis._pageOffsetType = 'pageYOffset';\r\n\t\t\tthis._scrollType = 'scrollTop';\r\n\t\t\tthis._translateDir = 'translateY';\r\n\t\t}\r\n\t}\r\n\r\n\tprotected debounce(func: () => void, wait: number, ...args): () => void {\r\n\t\tconst throttled = this.throttleTrailing(func, wait);\r\n\t\tconst result = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t\tthrottled.apply(this, args);\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected throttleTrailing(func: () => void, wait: number, ...args): () => void {\r\n\t\tlet timeout = undefined;\r\n\t\tlet _arguments = args;\r\n\t\tconst result = function () {\r\n\t\t\tconst _this = this;\r\n\t\t\t_arguments = args\r\n\r\n\t\t\tif (timeout) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (wait <= 0) {\r\n\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t} else {\r\n\t\t\t\ttimeout = setTimeout(function () {\r\n\t\t\t\t\ttimeout = undefined;\r\n\t\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t\t}, wait);\r\n\t\t\t}\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t\ttimeout = undefined;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatedScrollbarWidth = 0;\r\n\tprotected calculatedScrollbarHeight = 0;\r\n\r\n\tprotected padding = 0;\r\n\tprotected previousViewPort: IViewport = <any>{};\r\n\tprotected currentTween: tween.Tween;\r\n\tprotected cachedItemsLength: number;\r\n\r\n\tprotected disposeScrollHandler: () => void | undefined;\r\n\tprotected disposeResizeHandler: () => void | undefined;\r\n\r\n\tprotected refresh_internal(itemsArrayModified: boolean, refreshCompletedCallback: () => void = undefined, maxRunTimes = 2): void {\r\n\t\t//note: maxRunTimes is to force it to keep recalculating if the previous iteration caused a re-render (different sliced items in viewport or scrollPosition changed).\r\n\t\t//The default of 2x max will probably be accurate enough without causing too large a performance bottleneck\r\n\t\t//The code would typically quit out on the 2nd iteration anyways. The main time it'd think more than 2 runs would be necessary would be for vastly different sized child items or if this is the 1st time the items array was initialized.\r\n\t\t//Without maxRunTimes, If the user is actively scrolling this code would become an infinite loop until they stopped scrolling. This would be okay, except each scroll event would start an additional infinte loop. We want to short-circuit it to prevent this.\r\n\r\n\t\tif (itemsArrayModified && this.previousViewPort && this.previousViewPort.scrollStartPosition > 0) {\r\n\t\t\t//if items were prepended, scroll forward to keep same items visible\r\n\t\t\tconst oldViewPort = this.previousViewPort;\r\n\t\t\tconst oldViewPortItems = this.viewPortItems;\r\n\r\n\t\t\tconst oldRefreshCompletedCallback = refreshCompletedCallback;\r\n\t\t\trefreshCompletedCallback = () => {\r\n\t\t\t\tconst scrollLengthDelta = this.previousViewPort.scrollLength - oldViewPort.scrollLength;\r\n\t\t\t\tif (scrollLengthDelta > 0 && this.viewPortItems) {\r\n\t\t\t\t\tconst oldStartItem = oldViewPortItems[0];\r\n\t\t\t\t\tconst oldStartItemIndex = this.items.findIndex(x => this.compareItems(oldStartItem, x));\r\n\t\t\t\t\tif (oldStartItemIndex > this.previousViewPort.startIndexWithBuffer) {\r\n\t\t\t\t\t\tlet itemOrderChanged = false;\r\n\t\t\t\t\t\tfor (let i = 1; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\t\t\t\tif (!this.compareItems(this.items[oldStartItemIndex + i], oldViewPortItems[i])) {\r\n\t\t\t\t\t\t\t\titemOrderChanged = true;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!itemOrderChanged) {\r\n\t\t\t\t\t\t\tthis.scrollToPosition(this.previousViewPort.scrollStartPosition + scrollLengthDelta, 0, oldRefreshCompletedCallback);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (oldRefreshCompletedCallback) {\r\n\t\t\t\t\toldRefreshCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\trequestAnimationFrame(() => {\r\n\r\n\t\t\t\tif (itemsArrayModified) {\r\n\t\t\t\t\tthis.resetWrapGroupDimensions();\r\n\t\t\t\t}\r\n\t\t\t\tconst viewport = this.calculateViewport();\r\n\r\n\t\t\t\tconst startChanged = itemsArrayModified || viewport.startIndex !== this.previousViewPort.startIndex;\r\n\t\t\t\tconst endChanged = itemsArrayModified || viewport.endIndex !== this.previousViewPort.endIndex;\r\n\t\t\t\tconst scrollLengthChanged = viewport.scrollLength !== this.previousViewPort.scrollLength;\r\n\t\t\t\tconst paddingChanged = viewport.padding !== this.previousViewPort.padding;\r\n\t\t\t\tconst scrollPositionChanged = viewport.scrollStartPosition !== this.previousViewPort.scrollStartPosition || viewport.scrollEndPosition !== this.previousViewPort.scrollEndPosition || viewport.maxScrollPosition !== this.previousViewPort.maxScrollPosition;\r\n\r\n\t\t\t\tconst scrollDirection: ScrollDirectionType = this.previousViewPort.endIndex <= viewport.endIndex ? 'forward' : 'backward';\r\n\t\t\t\tthis.previousViewPort = viewport;\r\n\r\n\t\t\t\tif (scrollLengthChanged) {\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'transform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'webkitTransform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (paddingChanged) {\r\n\t\t\t\t\tif (this.useMarginInsteadOfTranslate) {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, this._marginDir, `${viewport.padding}px`);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'transform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.headerElementRef) {\r\n\t\t\t\t\tconst scrollPosition = this.getScrollElement()[this._scrollType];\r\n\t\t\t\t\tconst containerOffset = this.getElementsOffset();\r\n\t\t\t\t\tconst offset = Math.max(scrollPosition - viewport.padding - containerOffset + this.headerElementRef.nativeElement.clientHeight, 0);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'transform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst changeEventArg: IPageInfo = (startChanged || endChanged) ? {\r\n\t\t\t\t\tstartIndex: viewport.startIndex,\r\n\t\t\t\t\tendIndex: viewport.endIndex,\r\n\t\t\t\t\tscrollStartPosition: viewport.scrollStartPosition,\r\n\t\t\t\t\tscrollEndPosition: viewport.scrollEndPosition,\r\n\t\t\t\t\tscrollDirection: scrollDirection,\r\n\t\t\t\t\tstartIndexWithBuffer: viewport.startIndexWithBuffer,\r\n\t\t\t\t\tendIndexWithBuffer: viewport.endIndexWithBuffer,\r\n\t\t\t\t\tmaxScrollPosition: viewport.maxScrollPosition,\r\n\t\t\t\t} : undefined;\r\n\r\n\r\n\t\t\t\tif (startChanged || endChanged || scrollPositionChanged) {\r\n\t\t\t\t\tconst handleChanged = () => {\r\n\t\t\t\t\t\t// update the scroll list to trigger re-render of components in viewport\r\n\t\t\t\t\t\tthis.viewPortItems = viewport.startIndexWithBuffer >= 0 && viewport.endIndexWithBuffer >= 0 ? this.items.slice(viewport.startIndexWithBuffer, viewport.endIndexWithBuffer + 1) : [];\r\n\t\t\t\t\t\tthis.vsUpdate.emit(this.viewPortItems);\r\n\r\n\t\t\t\t\t\tif (startChanged) {\r\n\t\t\t\t\t\t\tthis.vsStart.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (endChanged) {\r\n\t\t\t\t\t\t\tthis.vsEnd.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (startChanged || endChanged) {\r\n\t\t\t\t\t\t\tthis.changeDetectorRef.markForCheck();\r\n\t\t\t\t\t\t\tthis.vsChange.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (maxRunTimes > 0) {\r\n\t\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\r\n\t\t\t\t\tif (this.executeRefreshOutsideAngularZone) {\r\n\t\t\t\t\t\thandleChanged();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.zone.run(handleChanged);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (maxRunTimes > 0 && (scrollLengthChanged || paddingChanged)) {\r\n\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprotected getScrollElement(): HTMLElement {\r\n\t\treturn this.parentScroll instanceof Window ? document.scrollingElement || document.documentElement || document.body : this.parentScroll || this.element.nativeElement;\r\n\t}\r\n\r\n\tprotected addScrollEventHandlers(): void {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tthis.removeScrollEventHandlers();\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen('window', 'scroll', this.onScroll);\r\n\t\t\t\tthis.disposeResizeHandler = this.renderer.listen('window', 'resize', this.onScroll);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen(scrollElement, 'scroll', this.onScroll);\r\n\t\t\t\tif (this._checkResizeInterval > 0) {\r\n\t\t\t\t\tthis.checkScrollElementResizedTimer = <any>setInterval(() => { this.checkScrollElementResized(); }, this._checkResizeInterval);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected removeScrollEventHandlers(): void {\r\n\t\tif (this.checkScrollElementResizedTimer) {\r\n\t\t\tclearInterval(this.checkScrollElementResizedTimer);\r\n\t\t}\r\n\r\n\t\tif (this.disposeScrollHandler) {\r\n\t\t\tthis.disposeScrollHandler();\r\n\t\t\tthis.disposeScrollHandler = undefined;\r\n\t\t}\r\n\r\n\t\tif (this.disposeResizeHandler) {\r\n\t\t\tthis.disposeResizeHandler();\r\n\t\t\tthis.disposeResizeHandler = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getElementsOffset(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet offset = 0;\r\n\r\n\t\tif (this.containerElementRef && this.containerElementRef.nativeElement) {\r\n\t\t\toffset += this.containerElementRef.nativeElement[this._offsetType];\r\n\t\t}\r\n\r\n\t\tif (this.parentScroll) {\r\n\t\t\tconst scrollElement = this.getScrollElement();\r\n\t\t\tconst elementClientRect = this.getElementSize(this.element.nativeElement);\r\n\t\t\tconst scrollClientRect = this.getElementSize(scrollElement);\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\toffset += elementClientRect.left - scrollClientRect.left;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\toffset += elementClientRect.top - scrollClientRect.top;\r\n\t\t\t}\r\n\r\n\t\t\tif (!(this.parentScroll instanceof Window)) {\r\n\t\t\t\toffset += scrollElement[this._scrollType];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn offset;\r\n\t}\r\n\r\n\tprotected countItemsPerWrapGroup(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn Math.round(this.horizontal ? this.ssrViewportHeight / this.ssrChildHeight : this.ssrViewportWidth / this.ssrChildWidth);\r\n\t\t}\r\n\r\n\t\tconst propertyName = this.horizontal ? 'offsetLeft' : 'offsetTop';\r\n\t\tconst children = this.getContent().children;\r\n\r\n\t\tconst childrenLength = children ? children.length : 0;\r\n\t\tif (childrenLength === 0) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\r\n\t\tconst firstOffset = children[0][propertyName];\r\n\t\tlet result = 1;\r\n\t\twhile (result < childrenLength && firstOffset === children[result][propertyName]) {\r\n\t\t\t++result;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected getScrollStartPosition(): number {\r\n\t\tlet windowScrollValue = undefined;\r\n\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\twindowScrollValue = window[this._pageOffsetType];\r\n\t\t}\r\n\r\n\t\treturn windowScrollValue || this.getScrollElement()[this._scrollType] || 0;\r\n\t}\r\n\r\n\tprotected minMeasuredChildWidth: number;\r\n\tprotected minMeasuredChildHeight: number;\r\n\r\n\tprotected wrapGroupDimensions: WrapGroupDimensions;\r\n\r\n\tprotected resetWrapGroupDimensions(): void {\r\n\t\tconst oldWrapGroupDimensions = this.wrapGroupDimensions;\r\n\t\tthis.invalidateAllCachedMeasurements();\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes || !oldWrapGroupDimensions || oldWrapGroupDimensions.numberOfKnownWrapGroupChildSizes === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst itemsPerWrapGroup: number = this.countItemsPerWrapGroup();\r\n\t\tfor (let wrapGroupIndex = 0; wrapGroupIndex < oldWrapGroupDimensions.maxChildSizePerWrapGroup.length; ++wrapGroupIndex) {\r\n\t\t\tconst oldWrapGroupDimension: WrapGroupDimension = oldWrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\tif (!oldWrapGroupDimension || !oldWrapGroupDimension.items || !oldWrapGroupDimension.items.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (oldWrapGroupDimension.items.length !== itemsPerWrapGroup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet itemsChanged = false;\r\n\t\t\tconst arrayStartIndex = itemsPerWrapGroup * wrapGroupIndex;\r\n\t\t\tfor (let i = 0; i < itemsPerWrapGroup; ++i) {\r\n\t\t\t\tif (!this.compareItems(oldWrapGroupDimension.items[i], this.items[arrayStartIndex + i])) {\r\n\t\t\t\t\titemsChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!itemsChanged) {\r\n\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += oldWrapGroupDimension.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += oldWrapGroupDimension.childHeight || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = oldWrapGroupDimension;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected calculateDimensions(): IDimensions {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tconst maxCalculatedScrollBarSize = 25; // Note: Formula to auto-calculate doesn't work for ParentScroll, so we default to this if not set by consuming application\r\n\t\tthis.calculatedScrollbarHeight = Math.max(Math.min(scrollElement.offsetHeight - scrollElement.clientHeight, maxCalculatedScrollBarSize), this.calculatedScrollbarHeight);\r\n\t\tthis.calculatedScrollbarWidth = Math.max(Math.min(scrollElement.offsetWidth - scrollElement.clientWidth, maxCalculatedScrollBarSize), this.calculatedScrollbarWidth);\r\n\r\n\t\tlet viewportWidth = scrollElement.offsetWidth - (this.scrollbarWidth || this.calculatedScrollbarWidth || (this.horizontal ? 0 : maxCalculatedScrollBarSize));\r\n\t\tlet viewportHeight = scrollElement.offsetHeight - (this.scrollbarHeight || this.calculatedScrollbarHeight || (this.horizontal ? maxCalculatedScrollBarSize : 0));\r\n\r\n\t\tconst content = this.getContent();\r\n\r\n\t\tconst itemsPerWrapGroup = this.countItemsPerWrapGroup();\r\n\t\tlet wrapGroupsPerPage;\r\n\r\n\t\tlet defaultChildWidth;\r\n\t\tlet defaultChildHeight;\r\n\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\tviewportWidth = this.ssrViewportWidth;\r\n\t\t\tviewportHeight = this.ssrViewportHeight;\r\n\t\t\tdefaultChildWidth = this.ssrChildWidth;\r\n\t\t\tdefaultChildHeight = this.ssrChildHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t}\r\n\t\telse if (!this.enableUnequalChildrenSizes) {\r\n\t\t\tif (content.children.length > 0) {\r\n\t\t\t\tif (!this.childWidth || !this.childHeight) {\r\n\t\t\t\t\tif (!this.minMeasuredChildWidth && viewportWidth > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildWidth = viewportWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!this.minMeasuredChildHeight && viewportHeight > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildHeight = viewportHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst child = content.children[0];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\t\t\t\tthis.minMeasuredChildWidth = Math.min(this.minMeasuredChildWidth, clientRect.width);\r\n\t\t\t\tthis.minMeasuredChildHeight = Math.min(this.minMeasuredChildHeight, clientRect.height);\r\n\r\n\t\t\t\t// Added for getting the child height (for card view, return all the clientRect object).\r\n\t\t\t\t// if (this._lastChildRect === null ||\r\n\t\t\t\t// \t(clientRect?.height !== 0 && (\r\n\t\t\t\t// \t\tMath.round(this._lastChildRect?.height) !== Math.round(clientRect?.height) || \r\n\t\t\t\t// \t\tMath.round(this._lastChildRect?.width) !== Math.round(clientRect?.width))\r\n\t\t\t\t// \t)) {\r\n\t\t\t\t// \tthis._lastChildRect = clientRect;\r\n\t\t\t\t// \tthis.vsChildRectChange.emit(clientRect);\r\n\t\t\t\t// }\r\n\t\t\t}\r\n\r\n\t\t\tdefaultChildWidth = this.childWidth || this.minMeasuredChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || this.minMeasuredChildHeight || viewportHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t} else {\r\n\t\t\tlet scrollOffset = scrollElement[this._scrollType] - (this.previousViewPort ? this.previousViewPort.padding : 0);\r\n\r\n\t\t\tlet arrayStartIndex = this.previousViewPort.startIndexWithBuffer || 0;\r\n\t\t\tlet wrapGroupIndex = Math.ceil(arrayStartIndex / itemsPerWrapGroup);\r\n\r\n\t\t\tlet maxWidthForWrapGroup = 0;\r\n\t\t\tlet maxHeightForWrapGroup = 0;\r\n\t\t\tlet sumOfVisibleMaxWidths = 0;\r\n\t\t\tlet sumOfVisibleMaxHeights = 0;\r\n\t\t\twrapGroupsPerPage = 0;\r\n\r\n\t\t\tfor (let i = 0; i < content.children.length; ++i) {\r\n\t\t\t\t++arrayStartIndex;\r\n\t\t\t\tconst child = content.children[i];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\r\n\t\t\t\tmaxWidthForWrapGroup = Math.max(maxWidthForWrapGroup, clientRect.width);\r\n\t\t\t\tmaxHeightForWrapGroup = Math.max(maxHeightForWrapGroup, clientRect.height);\r\n\r\n\t\t\t\tif (arrayStartIndex % itemsPerWrapGroup === 0) {\r\n\t\t\t\t\tconst oldValue = this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\t\t\tif (oldValue) {\r\n\t\t\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= oldValue.childWidth || 0;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= oldValue.childHeight || 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\tconst items = this.items.slice(arrayStartIndex - itemsPerWrapGroup, arrayStartIndex);\r\n\t\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = {\r\n\t\t\t\t\t\tchildWidth: maxWidthForWrapGroup,\r\n\t\t\t\t\t\tchildHeight: maxHeightForWrapGroup,\r\n\t\t\t\t\t\titems: items\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += maxWidthForWrapGroup;\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += maxHeightForWrapGroup;\r\n\r\n\t\t\t\t\tif (this.horizontal) {\r\n\t\t\t\t\t\tlet maxVisibleWidthForWrapGroup = Math.min(maxWidthForWrapGroup, Math.max(viewportWidth - sumOfVisibleMaxWidths, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleWidthForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleWidthForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxWidths += maxVisibleWidthForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleWidthForWrapGroup > 0 && viewportWidth >= sumOfVisibleMaxWidths) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet maxVisibleHeightForWrapGroup = Math.min(maxHeightForWrapGroup, Math.max(viewportHeight - sumOfVisibleMaxHeights, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleHeightForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleHeightForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxHeights += maxVisibleHeightForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleHeightForWrapGroup > 0 && viewportHeight >= sumOfVisibleMaxHeights) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++wrapGroupIndex;\r\n\r\n\t\t\t\t\tmaxWidthForWrapGroup = 0;\r\n\t\t\t\t\tmaxHeightForWrapGroup = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst averageChildWidth = this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tconst averageChildHeight = this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tdefaultChildWidth = this.childWidth || averageChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || averageChildHeight || viewportHeight;\r\n\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\tif (viewportWidth > sumOfVisibleMaxWidths) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportWidth - sumOfVisibleMaxWidths) / defaultChildWidth);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (viewportHeight > sumOfVisibleMaxHeights) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportHeight - sumOfVisibleMaxHeights) / defaultChildHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst itemCount = this.items.length;\r\n\t\tconst itemsPerPage = itemsPerWrapGroup * wrapGroupsPerPage;\r\n\t\tconst pageCount_fractional = itemCount / itemsPerPage;\r\n\t\tconst numberOfWrapGroups = Math.ceil(itemCount / itemsPerWrapGroup);\r\n\r\n\t\tlet scrollLength = 0;\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = this.horizontal ? defaultChildWidth : defaultChildHeight;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tlet numUnknownChildSizes = 0;\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\tscrollLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tscrollLength += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\t\t} else {\r\n\t\t\tscrollLength = numberOfWrapGroups * defaultScrollLengthPerWrapGroup;\r\n\t\t}\r\n\r\n\t\tif (this.headerElementRef) {\r\n\t\t\tscrollLength += this.headerElementRef.nativeElement.clientHeight;\r\n\t\t}\r\n\r\n\t\tconst viewportLength = this.horizontal ? viewportWidth : viewportHeight;\r\n\t\tconst maxScrollPosition = Math.max(scrollLength - viewportLength, 0);\r\n\r\n\t\treturn {\r\n\t\t\tchildHeight: defaultChildHeight,\r\n\t\t\tchildWidth: defaultChildWidth,\r\n\t\t\titemCount: itemCount,\r\n\t\t\titemsPerPage: itemsPerPage,\r\n\t\t\titemsPerWrapGroup: itemsPerWrapGroup,\r\n\t\t\tmaxScrollPosition: maxScrollPosition,\r\n\t\t\tpageCount_fractional: pageCount_fractional,\r\n\t\t\tscrollLength: scrollLength,\r\n\t\t\tviewportLength: viewportLength,\r\n\t\t\twrapGroupsPerPage: wrapGroupsPerPage,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected cachedPageSize = 0;\r\n\tprotected previousScrollNumberElements = 0;\r\n\r\n\tprotected calculatePadding(arrayStartIndexWithBuffer: number, dimensions: IDimensions): number {\r\n\t\tif (dimensions.itemCount === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\tconst startingWrapGroupIndex = Math.floor(arrayStartIndexWithBuffer / dimensions.itemsPerWrapGroup) || 0;\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes) {\r\n\t\t\treturn defaultScrollLengthPerWrapGroup * startingWrapGroupIndex;\r\n\t\t}\r\n\r\n\t\tlet numUnknownChildSizes = 0;\r\n\t\tlet result = 0;\r\n\t\tfor (let i = 0; i < startingWrapGroupIndex; ++i) {\r\n\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\tif (childSize) {\r\n\t\t\t\tresult += childSize;\r\n\t\t\t} else {\r\n\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t}\r\n\t\t}\r\n\t\tresult += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatePageInfo(scrollPosition: number, dimensions: IDimensions): IPageInfo {\r\n\t\tlet scrollPercentage = 0;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst numberOfWrapGroups = Math.ceil(dimensions.itemCount / dimensions.itemsPerWrapGroup);\r\n\t\t\tlet totalScrolledLength = 0;\r\n\t\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\ttotalScrolledLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttotalScrolledLength += defaultScrollLengthPerWrapGroup;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scrollPosition < totalScrolledLength) {\r\n\t\t\t\t\tscrollPercentage = i / numberOfWrapGroups;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tscrollPercentage = scrollPosition / dimensions.scrollLength;\r\n\t\t}\r\n\r\n\t\tconst startingArrayIndex_fractional = Math.min(Math.max(scrollPercentage * dimensions.pageCount_fractional, 0), dimensions.pageCount_fractional) * dimensions.itemsPerPage;\r\n\r\n\t\tconst maxStart = dimensions.itemCount - dimensions.itemsPerPage - 1;\r\n\t\tlet arrayStartIndex = Math.min(Math.floor(startingArrayIndex_fractional), maxStart);\r\n\t\tarrayStartIndex -= arrayStartIndex % dimensions.itemsPerWrapGroup; // round down to start of wrapGroup\r\n\r\n\t\tif (this.stripedTable) {\r\n\t\t\tconst bufferBoundary = 2 * dimensions.itemsPerWrapGroup;\r\n\t\t\tif (arrayStartIndex % bufferBoundary !== 0) {\r\n\t\t\t\tarrayStartIndex = Math.max(arrayStartIndex - arrayStartIndex % bufferBoundary, 0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet arrayEndIndex = Math.ceil(startingArrayIndex_fractional) + dimensions.itemsPerPage - 1;\r\n\t\tconst endIndexWithinWrapGroup = (arrayEndIndex + 1) % dimensions.itemsPerWrapGroup;\r\n\t\tif (endIndexWithinWrapGroup > 0) {\r\n\t\t\tarrayEndIndex += dimensions.itemsPerWrapGroup - endIndexWithinWrapGroup; // round up to end of wrapGroup\r\n\t\t}\r\n\r\n\t\tif (isNaN(arrayStartIndex)) {\r\n\t\t\tarrayStartIndex = 0;\r\n\t\t}\r\n\t\tif (isNaN(arrayEndIndex)) {\r\n\t\t\tarrayEndIndex = 0;\r\n\t\t}\r\n\r\n\t\tarrayStartIndex = Math.min(Math.max(arrayStartIndex, 0), dimensions.itemCount - 1);\r\n\t\tarrayEndIndex = Math.min(Math.max(arrayEndIndex, 0), dimensions.itemCount - 1);\r\n\r\n\t\tconst bufferSize = this.bufferAmount * dimensions.itemsPerWrapGroup;\r\n\t\tconst startIndexWithBuffer = Math.min(Math.max(arrayStartIndex - bufferSize, 0), dimensions.itemCount - 1);\r\n\t\tconst endIndexWithBuffer = Math.min(Math.max(arrayEndIndex + bufferSize, 0), dimensions.itemCount - 1);\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: arrayStartIndex,\r\n\t\t\tendIndex: arrayEndIndex,\r\n\t\t\tstartIndexWithBuffer: startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: endIndexWithBuffer,\r\n\t\t\tscrollStartPosition: scrollPosition,\r\n\t\t\tscrollEndPosition: scrollPosition + dimensions.viewportLength,\r\n\t\t\tmaxScrollPosition: dimensions.maxScrollPosition\r\n\t\t};\r\n\t}\r\n\r\n\tprotected calculateViewport(): IViewport {\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tconst offset = this.getElementsOffset();\r\n\r\n\t\tlet scrollStartPosition = this.getScrollStartPosition();\r\n\t\tif (scrollStartPosition > (dimensions.scrollLength + offset) && !(this.parentScroll instanceof Window)) {\r\n\t\t\tscrollStartPosition = dimensions.scrollLength;\r\n\t\t} else {\r\n\t\t\tscrollStartPosition -= offset;\r\n\t\t}\r\n\t\tscrollStartPosition = Math.max(0, scrollStartPosition);\r\n\r\n\t\tconst pageInfo = this.calculatePageInfo(scrollStartPosition, dimensions);\r\n\t\tconst newPadding = this.calculatePadding(pageInfo.startIndexWithBuffer, dimensions);\r\n\t\tconst newScrollLength = dimensions.scrollLength;\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex,\r\n\t\t\tendIndex: pageInfo.endIndex,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer,\r\n\t\t\tpadding: Math.round(newPadding),\r\n\t\t\tscrollLength: Math.round(newScrollLength),\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition,\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition\r\n\t\t};\r\n\t}\r\n}\r\n\r\n@NgModule({\r\n\texports: [VirtualScrollerComponent],\r\n\tdeclarations: [VirtualScrollerComponent],\r\n\timports: [CommonModule],\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: 'virtual-scroller-default-options',\r\n\t\t\tuseFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY\r\n\t\t}\r\n\t]\r\n})\r\nexport class VirtualScrollerModule { }","import { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\n\nexport type PepListSelectionType =\n | 'none'\n | 'single'\n | 'multi';\n\nexport type PepListPagerType = 'pages' | 'scroll';\n\nexport type PepListViewType = '' | 'cards' | 'lines' | 'table'; // | 'map';\n\nexport type PepListCardSizeType = 'sm' | 'md';\n\nexport type PepListTableViewType = 'compact' | 'regular';\n\nexport interface IPepListItemClickEvent {\n source: ObjectsDataRow;\n viewType: PepListViewType;\n}\n\nexport class PepSelectionData {\n selectionType: number;\n rows: Array<any>;\n rowTypes: Array<any>;\n}\n\nexport interface IPepListLoadItemsEvent {\n fromIndex: number;\n toIndex: number;\n // updateItemsFunc: () => void; //() => any; \n}\n\nexport interface IPepListLoadPageEvent {\n pageIndex: number;\n pageSize: number;\n // updatePageFunc: () => void; //() => any; \n}\n\nexport interface IPepListStartIndexChangeEvent {\n startIndex: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\nexport interface IPepListSortingData {\n sortBy: string;\n isAsc: boolean;\n}\n\nexport type IPepListSortingChangeEvent = IPepListSortingData\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injectable,\n Input,\n Output,\n} from '@angular/core';\nimport { PepLayoutService, } from '@pepperi-addons/ngx-lib';\nimport { DEFAULT_PAGE_SIZE } from './list.model';\n\nexport class IPepListPagerChangeEvent {\n pageIndex: number;\n previousPageIndex: number;\n pageSize: number;\n length: number;\n}\n\n@Component({\n selector: 'pep-list-pager',\n templateUrl: './list-pager.component.html',\n styleUrls: ['./list-pager.component.scss'],\n})\n@Injectable()\nexport class PepListPagerComponent {\n @Input() disabled = false;\n private _pageIndex = 0;\n @Input()\n set pageIndex(value: number) {\n this.setPageIndex(value);\n }\n get pageIndex(): number {\n return this._pageIndex;\n }\n\n @Input() length = 0;\n @Input() pageSize = DEFAULT_PAGE_SIZE;\n\n @Output()\n pagerChange: EventEmitter<IPepListPagerChangeEvent> = new EventEmitter<IPepListPagerChangeEvent>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public layoutService: PepLayoutService) { }\n\n nextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex + 1);\n }\n\n previousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex - 1);\n }\n\n firstPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(0);\n }\n\n lastPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.getNumberOfPages() - 1);\n }\n\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n onValueChange(value: string) {\n const pageNumber = coerceNumberProperty(value);\n this.setPageIndex(pageNumber - 1); // - 1 to convert number into index.\n }\n\n private setPageIndex(newIndex: number) {\n const previousPageIndex = this.pageIndex;\n\n if (newIndex >= 0 && newIndex < this.getNumberOfPages()) {\n this._pageIndex = newIndex;\n } else {\n this._pageIndex = 0;\n }\n\n if (this.pageIndex !== previousPageIndex) {\n this._emitChangeEvent(previousPageIndex);\n }\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitChangeEvent(previousPageIndex: number) {\n this.pagerChange.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n}\n","<div class=\"pager-container body-sm\">\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_PAGE' | translate }}</span>\n <pep-textbox pepAutoWidth class=\"page-index pep-spacing-element\" [key]=\"'pageIndex'\" [type]=\"'int'\"\n [disabled]=\"disabled\" [xAlignment]=\"'center'\" [renderTitle]=\"false\" [renderError]=\"false\" [renderSymbol]=\"false\"\n [value]=\"pageIndex + 1\" [minValue]=\"1\" [maxValue]=\"this.getNumberOfPages()\"\n [maxFieldCharacters]=\"6\" [mandatory]=\"true\" (valueChange)=\"onValueChange($event)\">\n </pep-textbox>\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_OUT_OF' | translate }}</span>\n <span class=\"pep-spacing-element\">{{ getNumberOfPages() }}</span>\n <button mat-button [disabled]=\"disabled || _previousButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _previousButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"previousPage()\"\n [title]=\"('LIST.PAGER_PREVIOUS' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_right' : 'arrow_left'\"></pep-icon>\n </mat-icon>\n </button>\n <button mat-button [disabled]=\"disabled || _nextButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _nextButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"nextPage()\"\n [title]=\"('LIST.PAGER_NEXT' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_left' : 'arrow_right'\"></pep-icon>\n </mat-icon>\n </button>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n NgZone,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n PepScreenSizeType,\n PepSessionService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldValueChangeEvent,\n IPepFormFieldClickEvent,\n} from '@pepperi-addons/ngx-lib/form';\n\nimport { VirtualScrollerComponent, IPageInfo } from './virtual-scroller';\n\nimport {\n IPepListLoadItemsEvent,\n IPepListSortingChangeEvent,\n IPepListItemClickEvent,\n PepListSelectionType,\n PepListViewType,\n PepSelectionData,\n PepListPagerType,\n IPepListLoadPageEvent,\n DEFAULT_PAGE_SIZE,\n IPepListStartIndexChangeEvent,\n PepListCardSizeType,\n PepListTableViewType,\n IPepListSortingData,\n} from './list.model';\nimport {\n IPepListPagerChangeEvent,\n PepListPagerComponent,\n} from './list-pager.component';\n\nimport * as tween from '@tweenjs/tween.js';\n\n@Component({\n selector: 'pep-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n host: {\n '(window:resize)': 'onWinResize($event)',\n },\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PepListComponent implements OnInit, OnChanges, OnDestroy {\n static TOP_ITEMS_DEFAULT = 100;\n static TOP_ITEMS_TABLE = 100;\n static TOP_ITEMS_THUMBNAILS = 100;\n static TOP_ITEMS_ARRAY = 2500;\n\n static SELECTED_ITEMS_STATE_KEY = 'SelectedItems';\n static UN_SELECTED_ITEMS_STATE_KEY = 'UnSelectedItems';\n static ALL_SELECTED_STATE_KEY = 'AllSelected';\n static SORT_BY_STATE_KEY = 'SortBy';\n static ASCENDING_STATE_KEY = 'IsAscending';\n\n static MINIMUM_COLUMN_WIDTH = 72;\n\n @Input() \n set sorting(value: IPepListSortingData) {\n this.sortBy = value?.sortBy || '';\n this.isAsc = value?.sortBy.length > 0 ? value.isAsc : true;\n }\n get sorting(): IPepListSortingData {\n return {\n sortBy: this.sortBy,\n isAsc: this.isAsc\n };\n }\n \n @Input() cacheSize = -1;\n @Input() noDataFoundMsg: string = null;\n @Input() selectionTypeForActions: PepListSelectionType = 'multi';\n @Input() showCardSelection = false;\n @Input() hideAllSelectionInMulti = false;\n\n @Input() cardSize: PepListCardSizeType = 'md';\n @Input() tableViewType: PepListTableViewType = 'regular';\n \n private _viewType: PepListViewType = '';\n @Input()\n set viewType(value: PepListViewType) {\n this._viewType = value;\n this.isTable = value === 'table';\n }\n get viewType(): PepListViewType {\n return this._viewType;\n }\n\n @Input() firstFieldAsLink = false;\n @Input() supportSorting = true;\n @Input() supportResizing = true;\n\n private _parentScroll: Element | Window = null;\n @Input()\n set parentScroll(value: Element | Window) {\n this._parentScroll = value;\n }\n get parentScroll(): Element | Window {\n return this._parentScroll;\n }\n\n @Input() disabled = false;\n\n private _lockEvents = false;\n @Input()\n set lockEvents(value: boolean) {\n this._lockEvents = value;\n\n if (this._lockEvents) {\n this.renderer.addClass(this.hostElement.nativeElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'lock-events');\n }\n }\n get lockEvents(): boolean {\n return this._lockEvents;\n }\n\n @Input() lockItemInnerEvents = false;\n @Input() printMode = false;\n @Input() isReport = false;\n @Input() zebraStripes = false;\n @Input() totalsRow = [];\n @Input() pagerType: PepListPagerType = 'scroll';\n @Input() pageSize: number = DEFAULT_PAGE_SIZE;\n @Input() pageIndex = 0;\n // @Input() startIndex = 0;\n\n @Input() bufferAmount = 0;\n @Input() scrollAnimationTime = 500;\n @Input() scrollDebounceTime = 0;\n @Input() scrollThrottlingTime = 0;\n\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n this._useAsWebComponent = value;\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n sortingChange: EventEmitter<IPepListSortingChangeEvent> = new EventEmitter<IPepListSortingChangeEvent>();\n\n @Output()\n selectedItemsChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n selectedItemChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n selectAllClick: EventEmitter<any> = new EventEmitter<any>();\n\n // @Output()\n // singleActionClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n loadItems: EventEmitter<IPepListLoadItemsEvent> = new EventEmitter<IPepListLoadItemsEvent>();\n\n @Output()\n loadPage: EventEmitter<IPepListLoadPageEvent> = new EventEmitter<IPepListLoadPageEvent>();\n\n @Output()\n startIndexChange: EventEmitter<IPepListStartIndexChangeEvent> = new EventEmitter<IPepListStartIndexChangeEvent>();\n\n @ViewChild(VirtualScrollerComponent) private virtualScroller: VirtualScrollerComponent;\n @ViewChild('selectAllCB') selectAllCB: any;\n\n private _layout: UIControl = null;\n get layout(): UIControl {\n return this._layout;\n }\n\n totalRows = -1;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n private itemsCounter = 0;\n\n currentPageItems: Array<ObjectsDataRow>;\n\n SEPARATOR = ',';\n isAllSelected = false;\n selectedItems = new Map<string, string>();\n unSelectedItems = new Map<string, string>();\n\n private currentTween: any;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private containerWidth = 0;\n private tableScrollWidth = 0;\n\n private _loadingItemsFromApi = false;\n get loadingItemsFromApi() {\n return this._loadingItemsFromApi;\n }\n\n screenSize: PepScreenSizeType;\n deviceHasMouse = false;\n\n // For resize\n pressedColumn = '';\n pressedColumnIndex = -1;\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n \n private lastColumnsWidth: Array<{ columnAPIName: string, calcColumnWidth: number, calcTitleColumnWidthString: string, calcColumnWidthString: string }> = [];\n\n // For sorting\n isAsc = true;\n sortBy = '';\n isUserSelected = false;\n checkForChanges: any = null;\n calculatedObjectHeight = 'auto';\n\n constructor(\n private hostElement: ElementRef,\n private layoutService: PepLayoutService,\n private sessionService: PepSessionService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2,\n private zone: NgZone\n ) {\n // this.nativeWindow = window;\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n\n // if (this.loadItems) {\n // this.loadItems.unsubscribe();\n // }\n\n // if (this.loadPage) {\n // this.loadPage.unsubscribe();\n // }\n\n // if (this.sortingChange) {\n // this.sortingChange.unsubscribe();\n // }\n\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n\n // if (this.listLoad) {\n // this.listLoad.unsubscribe();\n // }\n\n this.saveSortingToSession();\n }\n\n getCachedItemsNumber() {\n return this.cacheSize >= 0 ? this.cacheSize : PepListComponent.TOP_ITEMS_ARRAY;\n }\n\n private getScrollingElement() {\n return this.parentScroll ? this.parentScroll : this.virtualScroller?.contentElementRef.nativeElement.parentElement;\n }\n\n private scrollToTop(animate = true) {\n const scrollingElement = this.getScrollingElement();\n if (scrollingElement) {\n const scrollTop = 0;\n\n // totally disable animate\n if (!animate || this.scrollAnimationTime === 0) {\n if (scrollingElement instanceof Window) {\n window.scrollTo(0, scrollTop);\n } else {\n scrollingElement.scrollTop = scrollTop;\n }\n } else {\n let animationRequest;\n const isWindow = scrollingElement instanceof Window;\n const currentScrollTop =\n scrollingElement instanceof Window\n ? window.pageYOffset\n : scrollingElement.scrollTop;\n\n if (this.currentTween !== undefined) {\n this.currentTween.stop();\n }\n this.currentTween = new tween.Tween({ scrollTop: currentScrollTop })\n .to({ scrollTop }, this.scrollAnimationTime)\n .easing(tween.Easing.Quadratic.Out)\n .onUpdate((data) => {\n if (isNaN(data.scrollTop)) {\n return;\n }\n\n if (isWindow) {\n window.scrollTo(0, data.scrollTop);\n } else {\n this.renderer.setProperty(\n scrollingElement,\n 'scrollTop',\n data.scrollTop\n );\n }\n })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\n .start();\n\n const animate = (time?) => {\n this.currentTween.update(time);\n if (this.currentTween._object.scrollTop !== scrollTop) {\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n }\n };\n\n animate();\n }\n }\n }\n\n private getSelectionCheckBoxWidth(): number {\n return this.selectionTypeForActions === 'multi' ? 44 : (this.selectionTypeForActions === 'single' ? 44 : 0);\n }\n\n private setContainerWidth(): void {\n if (!this.hostElement.nativeElement.parentElement) {\n return;\n }\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = getComputedStyle(\n this.hostElement.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.hostElement.nativeElement.parentElement.parentElement > 0\n ? this.hostElement.nativeElement.parentElement.parentElement\n : this.hostElement.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n this.tableScrollWidth = parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? this.layoutService.getScrollbarWidth()\n : 0;\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + this.tableScrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + this.getSelectionCheckBoxWidth() + this.tableScrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n private saveSortingToSession(): void {\n this.sessionService.setObject(\n PepListComponent.SORT_BY_STATE_KEY,\n this.sortBy\n );\n this.sessionService.setObject(\n PepListComponent.ASCENDING_STATE_KEY,\n this.isAsc\n );\n }\n\n private getTopItems(): number {\n return this.isTable\n ? PepListComponent.TOP_ITEMS_TABLE\n : PepListComponent.TOP_ITEMS_THUMBNAILS;\n }\n\n private disableScroll(disable: boolean) {\n if (disable) {\n this.renderer.addClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n }\n }\n\n private toggleLoadingItemsFropApi(loadingItemsFromApi: boolean): void {\n this._loadingItemsFromApi = loadingItemsFromApi;\n\n // this.disableScroll(loadingItemsFromApi);\n }\n\n private updateCurrentPageItems(startIndex: number, endIndex: number): void {\n this.currentPageItems = this.items.slice(startIndex, endIndex);\n }\n\n private setSelectionItems(\n itemId: string,\n uniqItemId: string,\n isChecked: boolean\n ): void {\n // Set selected item checkbox\n if (this.isAllSelected) {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n } else {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n }\n }\n\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n private setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this._layout ||\n !this._layout.ControlFields ||\n this._layout.ControlFields.length === 0\n ) {\n return;\n }\n\n this._layout.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the container width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n const isLastColumnsWidthSet = this.setLastColumnsWidth();\n \n // Set the layout only if the last columns width couldn't set.\n if (!isLastColumnsWidthSet) {\n this.calcColumnsWidth();\n }\n \n this.checkForChanges = new Date().getTime();\n }\n\n private setLastColumnsWidth(): boolean {\n let res = false;\n\n let totalCalcColsWidth = 0;\n let widthToSet = 'inherit';\n\n if (this.lastColumnsWidth.length > 0) {\n // Check if this is the same UI control for table.\n if (this.lastColumnsWidth.length === this._layout.ControlFields.length) {\n let uiControlsAreTheSame = true;\n\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n if (uiControlField.ApiName !== this.lastColumnsWidth[index].columnAPIName) {\n uiControlsAreTheSame = false;\n break;\n }\n }\n \n if (uiControlsAreTheSame) {\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n uiControlField.calcColumnWidth = this.lastColumnsWidth[index].calcColumnWidth;\n uiControlField.calcTitleColumnWidthString = this.lastColumnsWidth[index].calcTitleColumnWidthString;\n uiControlField.calcColumnWidthString = this.lastColumnsWidth[index].calcColumnWidthString;\n totalCalcColsWidth += this.lastColumnsWidth[index].calcColumnWidth;\n }\n \n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n console.log(`setLastColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n\n res = true;\n }\n }\n }\n return res;\n }\n\n private setVirtualScrollWidth(widthToSet: string) {\n if (this.virtualScroller) {\n this.renderer.setStyle(\n this.virtualScroller.contentElementRef.nativeElement,\n 'width',\n widthToSet === 'inherit' ? '100%' : widthToSet\n );\n }\n }\n\n private setColumnsWidth(widthToSet: string) {\n this.renderer.setStyle(\n this.hostElement.nativeElement,\n 'width',\n widthToSet\n );\n\n if (this.isTable) {\n this.setVirtualScrollWidth(widthToSet);\n } else {\n // Do this only after UI is change cause the property isTable is Input and can refresh after this thread.\n setTimeout(() => {\n this.setVirtualScrollWidth(widthToSet);\n }, 0);\n }\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this._layout.ControlFields.length;\n \n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this._layout && this._layout.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this._layout.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n let widthToSet = 'inherit';\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n const calcColumnWidthPercentage = (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor((this.containerWidth * calcColumnWidthPercentage) / 100);\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n }\n\n console.log(`calcColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n }\n\n private calcObjectHeight() {\n setTimeout(() => {\n if (this.virtualScroller) {\n const content = this.virtualScroller.getContent();\n console.log(`content.children.length: ${content.children.length}`);\n\n if (content.children.length > 0) {\n const rect = this.virtualScroller.getElementSize(content.children[0]);\n this.calculatedObjectHeight = rect.height + 'px';\n console.log(`this.calculatedObjectHeight: ${this.calculatedObjectHeight}`);\n }\n }\n this.disableScroll(false);\n }, 1000);\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n this.pressedColumnIndex = -1;\n }\n\n private getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n private cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.currentPageItems = [];\n this.calculatedObjectHeight = 'auto';\n }\n\n private initVariablesFromSession(items: ObjectsDataRow[]): void {\n const selectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.SELECTED_ITEMS_STATE_KEY);\n const selectedItemsFromMap: Map<string, string> =\n selectedItemsObject && selectedItemsObject.length > 0\n ? new Map(selectedItemsObject)\n : null;\n if (\n selectedItemsFromMap != null &&\n typeof selectedItemsFromMap.size !== 'undefined' &&\n selectedItemsFromMap.size > 0\n ) {\n this.selectedItems = selectedItemsFromMap;\n this.sessionService.removeObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.selectedItems.clear();\n }\n\n const unSelectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.UN_SELECTED_ITEMS_STATE_KEY);\n const unSelectedItemsMap: Map<string, string> =\n unSelectedItemsObject && unSelectedItemsObject.length > 0\n ? new Map(unSelectedItemsObject)\n : null;\n if (\n unSelectedItemsMap != null &&\n typeof unSelectedItemsMap.size !== 'undefined' &&\n unSelectedItemsMap.size > 0\n ) {\n this.unSelectedItems = unSelectedItemsMap;\n this.sessionService.removeObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.unSelectedItems.clear();\n }\n\n const isAllSelected = this.sessionService.getObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n if (isAllSelected != null) {\n // Comment this in version 0.4.2-beta.103, I don't know why we need this (&& this.getIsAllSelected(items))\n // this.isAllSelected = isAllSelected && this.getIsAllSelected(items);\n this.isAllSelected = isAllSelected;\n this.sessionService.removeObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n } else {\n this.isAllSelected = false;\n }\n\n const sortBy = this.sessionService.getObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n if (sortBy && sortBy !== '') {\n this.sortBy = sortBy;\n this.sessionService.removeObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n } else {\n this.sortBy = '';\n }\n\n const isAsc = this.sessionService.getObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n if (isAsc != null) {\n this.isAsc = isAsc;\n this.sessionService.removeObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n } else {\n this.isAsc = true;\n }\n }\n\n private getIsAllSelected(items: Array<ObjectsDataRow>): boolean {\n let result = true;\n\n if (this.selectedItems?.size > 0 && items?.length > 0) {\n for (const item of items) {\n if (!(item && this.selectedItems.has(item?.UID.toString()))) {\n result = false;\n break;\n }\n }\n } else {\n result = false;\n }\n\n return result;\n }\n\n private getNumberOfStartItems(): number {\n let numberOfStartItems = 20;\n\n if (\n this.screenSize === PepScreenSizeType.XL ||\n this.screenSize === PepScreenSizeType.LG\n ) {\n numberOfStartItems = this.isTable ? 50 : 40;\n } else if (this.screenSize === PepScreenSizeType.MD) {\n numberOfStartItems = this.isTable ? 30 : 20;\n } else if (this.screenSize === PepScreenSizeType.SM) {\n numberOfStartItems = this.isTable ? 20 : 10;\n } else if (this.screenSize === PepScreenSizeType.XS) {\n numberOfStartItems = this.isTable ? 15 : 5;\n }\n\n return numberOfStartItems;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n\n if (this.selectionTypeForActions === 'single') {\n this.selectedItemsChange.emit(\n this.selectedItemId.length === 0 ? 0 : 1\n );\n } else if (this.selectionTypeForActions === 'multi') {\n if (isSelectableForActions) {\n this.setSelectionItems(itemId, uniqItemId, isChecked);\n\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n }\n }\n\n // Raise selected item change event\n if (this.selectionTypeForActions !== 'none') {\n this.selectedItemChange.emit({\n id: itemId,\n selected: isChecked,\n });\n }\n }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clear = this.clear.bind(this);\n this.hostElement.nativeElement.initListData = this.initListData.bind(\n this\n );\n this.hostElement.nativeElement.updateItems = this.updateItems.bind(\n this\n );\n this.hostElement.nativeElement.updatePage = this.updatePage.bind(this);\n this.hostElement.nativeElement.updateItem = this.updateItem.bind(this);\n }\n\n // For refresh the UI when change the is selectable for action on item.\n getisItemDisabled(item: ObjectsDataRow): boolean {\n return this.printMode || this.lockItemInnerEvents || (item && !item.IsSelectableForActions)\n }\n\n getIsAllSelectedForActions(): boolean {\n let res = false;\n\n if (this.isAllSelected) {\n if (this.unSelectedItems.size === 0) {\n res = true;\n }\n } else {\n if (this.virtualScroller?.viewPortItems) {\n if (this.selectedItems.size === this.totalRows) {\n res = this.getIsAllSelected(this.virtualScroller.viewPortItems);\n } else if (this.selectedItems.size < this.totalRows) {\n for (const item of this.virtualScroller.viewPortItems) {\n res =\n item && this.selectedItems.has(item?.UID.toString());\n\n if (!res) {\n break;\n }\n }\n }\n }\n }\n\n return res;\n }\n\n setIsAllSelected(isChecked: boolean): void {\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllCB.checked = isChecked;\n this.isAllSelected = isChecked;\n }\n }\n\n selectAllItemsForActions(e: any): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n\n // Indeterminate mode\n let isIndeterminate = false;\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n if (currentList.size > 0) {\n isIndeterminate = true;\n this.isAllSelected = false;\n this.selectedItemsChange.emit(0);\n e.source.checked = false;\n }\n\n this.selectedItems.clear();\n this.unSelectedItems.clear();\n\n if (!isIndeterminate) {\n this.isAllSelected = isChecked;\n this.selectAllClick.emit(isChecked);\n\n if (this.selectionTypeForActions === 'multi') {\n if (!isChecked) {\n this.selectedItemsChange.emit(0);\n this.selectedItemId = '';\n } else {\n const filteredItems = this.items.filter(\n (item) => item && item.IsSelectableForActions\n );\n this.selectedItemsChange.emit(filteredItems.length);\n }\n }\n } else {\n // Remove all\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllClick.emit(false);\n }\n }\n }\n\n raiseStartIndexChange(startIndex = 0) {\n // this.startIndex = startIndex;\n this.startIndexChange.emit({ startIndex });\n }\n\n getIsItemSelected(item: ObjectsDataRow): boolean {\n let isSelected = false;\n\n if (item) {\n if (this.selectionTypeForActions === 'single') {\n isSelected = this.selectedItemId === this.getUniqItemId(item.UID, item.Type.toString());\n } else if (this.selectionTypeForActions === 'multi') {\n if (item.IsSelectableForActions) {\n isSelected = (this.isAllSelected && !this.unSelectedItems.has(item.UID)) || this.selectedItems.has(item.UID);\n }\n }\n }\n\n return isSelected;\n }\n\n selectItemForActions(\n e: any,\n itemId: string,\n isSelectableForActions: boolean,\n itemType = ''\n ): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n this.setItemClicked(\n itemId,\n isSelectableForActions,\n itemType,\n isChecked\n );\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item?.UID.toString();\n const itemType = item?.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n\n if (this.isTable) {\n if (this.selectionTypeForActions === 'single') {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n isChecked\n );\n } else if (this.selectionTypeForActions === 'none') {\n // Just mark the row as highlighted\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n }\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // trackByFunc(index: number, item: ObjectsDataRow): any {\n // return item && item?.UID ? item?.UID : index;\n // // let res: string = \"\";\n\n // // if (item && item?.UID) {\n // // res = item?.UID + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n // // else {\n // // res = index + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n\n // // return res;\n // }\n\n clear(): void {\n this.cleanItems();\n this._layout = null;\n }\n\n setSelectedIds(selectedIds: string[], items = null): void {\n this.selectedItems.clear();\n this.isAllSelected = false;\n\n if (selectedIds) {\n // for (let i = 0; i < selected.length; i++) {\n for (const selectedId of selectedIds) {\n const tmp = selectedId.split(this.SEPARATOR);\n\n if (tmp && tmp.length > 0) {\n const itemId = tmp[0];\n const itemType = tmp.length > 1 ? tmp[1] : '';\n\n this.selectedItems.set(\n itemId,\n this.getUniqItemId(itemId, itemType)\n );\n }\n }\n\n this.isAllSelected = this.getIsAllSelected(items ? items : this.virtualScroller?.viewPortItems);\n this.setSelectionDataInSession();\n }\n\n this.refresh();\n }\n\n setSelectionDataInSession(): void {\n if (this.selectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.selectedItems])\n );\n }\n\n if (this.unSelectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.unSelectedItems])\n );\n }\n\n this.sessionService.setObject(\n PepListComponent.ALL_SELECTED_STATE_KEY,\n this.isAllSelected\n );\n }\n\n initListData(\n layout: UIControl,\n totalRows: number,\n items: ObjectsDataRow[]\n ): void {\n this.initVariablesFromSession(items);\n const selectedItemsList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - selectedItemsList.size\n : selectedItemsList.size;\n this.selectedItemsChange.emit(currentListCount);\n\n this._layout = layout;\n this.selectedItemId = ''; \n this.totalRows = totalRows;\n\n // If is all selected is false && the size of the selected items is 1 && selectionTypeForActions is 'single' then set it as the selected item id.\n // We need this in setTimeout cause the selectionTypeForActions is input that can set after this function.\n setTimeout(() => {\n if (!this.isAllSelected && this.selectedItems.size === 1 && this.selectionTypeForActions === 'single') {\n this.selectedItemId = this.selectedItems.values()[0];\n }\n }, 0);\n\n this.scrollToTop(false);\n this.cleanItems();\n this.disableScroll(true);\n\n if (items) {\n if (this.pagerType === 'pages') {\n // If page index out of bounds - init to 0.\n const numberOfPages = Math.ceil(totalRows / this.pageSize);\n\n if (this.pageIndex >= numberOfPages) {\n this.pageIndex = 0;\n }\n\n this.updatePage(items, {\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n });\n\n this.disableScroll(false);\n } else {\n const numberOfStartItems = this.getNumberOfStartItems();\n const event = {\n fromIndex: 0,\n toIndex: numberOfStartItems,\n };\n this.updateItems(items, event);\n \n if (this.virtualScroller) {\n this.refresh(() => {\n this.calcObjectHeight();\n });\n } else {\n this.calcObjectHeight();\n }\n }\n }\n\n if (!this.isTable) {\n this.lastColumnsWidth = [];\n }\n\n this.setLayout();\n\n // setTimeout(() => {\n this.onListLoad();\n // }, 0);\n }\n\n updateItems(\n items: ObjectsDataRow[],\n event: IPepListLoadItemsEvent = null\n ): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n const startIndex = event.fromIndex ?? 0;\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.toggleLoadingItemsFropApi(false);\n }\n\n updatePage(items: ObjectsDataRow[], event: IPepListLoadPageEvent): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n // const loadInChunks = this.itemsCounter === 0;\n const startIndex = Math.min(event.pageIndex * event.pageSize, this.totalRows);\n const endIndex = Math.min(startIndex + event.pageSize, this.totalRows);\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.updateCurrentPageItems(startIndex, endIndex);\n this.toggleLoadingItemsFropApi(false);\n }\n\n updateItem(data: ObjectsDataRow): void {\n const index = this.items.findIndex((i) => i && i?.UID === data?.UID);\n if (index >= 0 && index < this.items.length) {\n this.updateItemProperties(this.items[index], data);\n }\n }\n\n scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined) {\n this.virtualScroller?.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\n }\n\n updateItemProperties(itemToUpdate: ObjectsDataRow, data: ObjectsDataRow) {\n Object.assign(itemToUpdate, data);\n }\n\n getSelectedItemsData(isForEdit = false): PepSelectionData {\n const res = new PepSelectionData();\n\n let selectionType = 1;\n const items = [];\n const itemTypes = [];\n\n if (this.selectionTypeForActions === 'single') {\n if (this.selectedItemId.length > 0) {\n const tmp = this.selectedItemId.split(this.SEPARATOR);\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n } else if (this.selectionTypeForActions === 'multi') {\n let currentList = [];\n\n // For edit - only the selected items.\n if (isForEdit) {\n if (!this.isAllSelected) {\n currentList = Array.from(this.selectedItems.values());\n } else {\n // Get the id's of the items that not founded in unSelectedItems.\n this.items.forEach((item) => {\n if (\n item &&\n !this.unSelectedItems.has(item?.UID.toString())\n ) {\n currentList.push(\n this.getUniqItemId(\n item?.UID.toString(),\n item?.Type.toString()\n )\n );\n }\n });\n }\n } else {\n // For delete - can be the unselected with select_all functionality.\n currentList = Array.from(\n this.isAllSelected\n ? this.unSelectedItems.values()\n : this.selectedItems.values()\n );\n selectionType = this.isAllSelected ? 0 : 1;\n }\n\n currentList.forEach((item) => {\n const tmp = item.split(this.SEPARATOR);\n\n if (tmp.length === 2) {\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n });\n\n }\n\n res.selectionType = selectionType;\n res.rows = items;\n res.rowTypes = itemTypes;\n\n return res;\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x?.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item?.UID.toString() === uid);\n }\n\n refresh(refreshCompletedCallback: () => void = undefined) {\n this.virtualScroller?.refresh(refreshCompletedCallback);\n }\n\n // ---------------------------------------------------------------\n // Events handlers.\n // ---------------------------------------------------------------\n\n onWinResize(e): void {\n this.refresh();\n\n this.containerWidth = 0;\n this.lastColumnsWidth = [];\n this.setLayout();\n }\n\n onListResizeStart(event, columnKey: string, columnIndex: number): void {\n this.pressedColumn = columnKey;\n this.pressedColumnIndex = columnIndex;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n this.tableStartWidth = this.hostElement.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n console.log(`tableStartWidth - ${this.tableStartWidth}`);\n }\n\n onListResize(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n let widthToAdd = this.layoutService.isRtl() ? this.startX - event.x : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= PepListComponent.MINIMUM_COLUMN_WIDTH || widthToAdd > 0) {\n const length = this._layout.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n const scrollWidth = this.layoutService.getScrollbarWidth();\n widthToAdd += scrollWidth;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + (totalCalcColsWidth + scrollWidth) + 'px)'; // For 100%\n } else {\n // if (uiControlField.ApiName === this.pressedColumn) {\n if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n }\n // } else if (uiControlField.ApiName === this.pressedColumn) {\n } else if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n const widthToSet = (this.tableStartWidth + widthToAdd) + 'px';\n console.log(`onListResize -> widthToSet: ${widthToSet} *** widthToAdd: ${widthToAdd}`);\n this.setColumnsWidth(widthToSet);\n this.checkForChanges = new Date().getTime();\n }\n\n }\n }\n\n onListResizeEnd(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n // Set timeout 0 for onListSortingChange will have the pressedColumn.\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n\n this.lastColumnsWidth = [];\n \n // Set the last columns width\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n this.lastColumnsWidth.push({ \n columnAPIName: uiControlField.ApiName, \n calcColumnWidth: uiControlField.calcColumnWidth,\n calcTitleColumnWidthString: uiControlField.calcTitleColumnWidthString,\n calcColumnWidthString: uiControlField.calcColumnWidthString\n })\n }\n \n event.stopPropagation();\n }\n }\n\n onListSortingChange(sortBy: string, isAsc: boolean, event = null): void {\n if (\n // this.pressedColumn.length > 0 ||\n this.pressedColumnIndex >= 0 ||\n (event && this.getParent(event.srcElement, 'resize-box').length > 0)\n ) {\n return;\n }\n\n if (this.sortBy !== sortBy || this.isAsc !== isAsc) {\n this.sortBy = sortBy;\n this.isAsc = isAsc;\n this.saveSortingToSession();\n\n this.sortingChange.emit({ sortBy, isAsc });\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onPagerChange(event: IPepListPagerChangeEvent): void {\n this.pageIndex = event.pageIndex;\n\n // Scroll to top.\n this.scrollToTop();\n\n const startIndex = event.pageIndex * event.pageSize;\n const endIndex = Math.min(\n startIndex + event.pageSize,\n this.totalRows\n );\n\n let shouldGetItemsFromApi = false;\n let index: number = startIndex;\n\n while (!shouldGetItemsFromApi && index < endIndex) {\n if (!this.items[index]) {\n shouldGetItemsFromApi = true;\n }\n index++;\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n this.loadPage.emit({\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n });\n }\n } else {\n setTimeout(() => {\n this.updateCurrentPageItems(startIndex, endIndex);\n }, this.scrollAnimationTime);\n }\n }\n\n onVirtualScrollerChange(event: IPageInfo): void {\n this.raiseStartIndexChange(event.startIndex);\n\n if (this.pagerType === 'scroll') {\n // For other events do nothing.\n if (typeof event.startIndex === 'undefined' || event.startIndex < 0 ||\n typeof event.endIndex === 'undefined' || event.endIndex < 0) {\n return;\n }\n\n const addAtStart = event.scrollDirection === 'backward';\n let shouldGetItemsFromApi = false;\n let indexOfMissingItem: number;\n\n if (addAtStart) {\n indexOfMissingItem = event.endIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem >= event.startIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem--;\n }\n }\n } else {\n indexOfMissingItem = event.startIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem <= event.endIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem++;\n }\n }\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n const top = this.getTopItems() - 1;\n const fromIndex = addAtStart ? Math.max(indexOfMissingItem - top, 0) : indexOfMissingItem;\n const toIndex = addAtStart ? indexOfMissingItem : Math.min(indexOfMissingItem + top, this.totalRows);\n\n this.loadItems.emit({\n fromIndex,\n toIndex,\n });\n }\n }\n }\n }\n\n onListLoad(): void {\n setTimeout(() => {\n this.listLoad.emit();\n }, 0);\n }\n\n // onChildRectChange(event: any) {\n // // Set the calculatedObjectHeight only if he's not set (this case is only for the initialize when virtual scroll is undefined).\n // // the other cases is handled in calcObjectHeight function.\n // if (this.calculatedObjectHeight === 'auto') {\n // this.calculatedObjectHeight = event?.height + 'px';\n // }\n // }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n}\n","<ng-container *ngIf=\"totalRows == 0\">\n <ng-container *ngIf=\"noDataFoundMsg; then noDataMsgInputBlock; else noDataMsgDefaultBlock\"></ng-container>\n <ng-template #noDataMsgInputBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ noDataFoundMsg }}\n </p>\n </div>\n </ng-template>\n <ng-template #noDataMsgDefaultBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ 'LIST.NO_DATA_FOUND' | translate}}\n </p>\n </div>\n <div class=\"no-data-suggestions\">\n <p class=\"suggestions-title title-lg\">\n {{ 'LIST.NO_DATA_FOUND_SUGGESTIONS_TITLE' | translate}}\n </p>\n <ul class=\"suggestions-list body-lg\" [innerHtml]=\"'LIST.NO_DATA_FOUND_SUGGESTIONS_LIST' | translate\"></ul>\n </div>\n </ng-template>\n</ng-container>\n<ng-container *ngIf=\"totalRows > 0\">\n <ng-container *ngTemplateOutlet=\"tableHeader\"></ng-container>\n\n <!-- (vsChildRectChange)=\"onChildRectChange($event)\" -->\n <virtual-scroller #scroller [items]=\"pagerType === 'pages' ? currentPageItems : items\"\n [scrollDebounceTime]=\"scrollDebounceTime\" [scrollThrottlingTime]=\"scrollThrottlingTime\"\n [bufferAmount]=\"printMode ? totalRows : bufferAmount\" [parentScroll]=\"parentScroll\" [disable]=\"loadingItemsFromApi\"\n class=\"virtual-scroller\" [ngClass]=\"{ 'table-body': isTable, 'cards-body': !isTable }\"\n (vsChange)=\"onVirtualScrollerChange($event)\" >\n <ng-container *ngFor=\"let item of scroller.viewPortItems; let index = index; let isFirst = first;\">\n <ng-container *ngTemplateOutlet=\"listData; context: {item: item, index:index}\"></ng-container>\n </ng-container>\n </virtual-scroller>\n\n <pep-list-pager *ngIf=\"pagerType === 'pages'\" class=\" list-pager\" [disabled]=\"loadingItemsFromApi\"\n [length]=\"totalRows\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" (pagerChange)=\"onPagerChange($event)\">\n </pep-list-pager>\n\n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n</ng-container>\n\n<ng-template #listData let-item=\"item\" let-index=\"index\">\n <ng-container *ngIf=\"isTable\">\n <!-- getIsItemSelected(item) -> item | isItemSelected: selectionTypeForActions : selectedItemId : isAllSelected : selectedItems : unSelectedItems -->\n <div class=\"table-row\" (mouseenter)=\"onTableRowMouseEnter($event, item?.UID, item?.Type)\" \n (mouseleave)=\"onTableRowMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n even: zebraStripes && index % 2 !== 0,\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId}\" [ngStyle]=\"{ visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <fieldset class=\"table-row-fieldset\" [ngStyle]=\"{ 'background-color': item?.BackgroundColor }\">\n <mat-checkbox *ngIf=\"selectionTypeForActions == 'multi'\" type=\"checkbox\"\n class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"getisItemDisabled(item)\" [ngStyle]=\"{\n visibility: !deviceHasMouse ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId || isAllSelected || selectedItems.size > 0 ? 'visible' : 'hidden'\n }\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <mat-radio-button *ngIf=\"selectionTypeForActions == 'single'\" name=\"selection\"\n class=\"pull-left flip row-selection pep-radio-button\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"getisItemDisabled(item)\"\n [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-radio-button>\n <pep-form [layoutType]=\"'table'\" [checkForChanges]=\"checkForChanges\" [layout]=\"layout\"\n [firstFieldAsLink]=\"firstFieldAsLink\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isReport]=\"isReport\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </fieldset>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isTable\">\n <div (mouseenter)=\"onCardMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onCardMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId,\n 'line-view': viewType === 'lines',\n 'card-view': viewType === 'cards',\n 'small-card': cardSize === 'sm'\n }\" class=\"pull-left flip\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <mat-checkbox *ngIf=\"showCardSelection\" class=\"pull-left flip card-selection\"\n [disabled]=\"getisItemDisabled(item)\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <pep-form [layoutType]=\"'card'\" [firstFieldAsLink]=\"firstFieldAsLink\" [checkForChanges]=\"checkForChanges\"\n [layout]=\"layout\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableHeader>\n <div *ngIf=\"isTable\" class=\"table-header\" (mouseup)=\"onListResizeEnd($event)\"\n (mouseenter)=\"onListHeaderMouseEnter($event)\" (mouseleave)=\"onListHeaderMouseLeave($event)\"\n (mousemove)=\"onListResize($event)\">\n\n <div class=\"table-header-padding-top\"></div>\n <fieldset class=\"table-header-fieldset\">\n <mat-checkbox *ngIf=\"selectionTypeForActions !== 'none'\" #selectAllCB class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n type=\"checkbox\" [ngStyle]=\"{\n visibility:\n selectionTypeForActions == 'single' || \n (selectionTypeForActions == 'multi' && hideAllSelectionInMulti) ? 'hidden' : 'visible'\n }\"\n [indeterminate]=\"isAllSelected ? unSelectedItems.size > 0 && unSelectedItems.size < totalRows : (selectedItems.size > 0 && !getIsAllSelectedForActions())\"\n [disabled]=\"disabled || selectionTypeForActions === 'single'\" [checked]=\"getIsAllSelectedForActions()\"\n (change)=\"selectAllItemsForActions($event)\"></mat-checkbox>\n <fieldset>\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"header-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n 'support-sorting': supportSorting,\n 'has-sorting': field.ApiName === sortBy,\n 'is-resizing': field.ApiName === pressedColumn,\n 'is-first': j === 0 && selectionTypeForActions !== 'multi',\n 'is-last': j === layout?.ControlFields?.length - 1\n }\"\n (click)=\"supportSorting ? (onListSortingChange(field.ApiName, sortBy !== null && sortBy != field.ApiName ? true : !isAsc, $event)) : false\">\n\n <label id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip text-align-{{ field.Layout.XAlignment }}\"\n title=\"{{ field.Title }}\">\n <span *ngIf=\"field.Mandatory\" class=\"mandatory\">\n <pep-icon name=\"system_must\"></pep-icon>\n </span>\n {{ field.Title != '' ? field.Title : ' '}}\n </label>\n\n <div *ngIf=\"supportResizing\" class=\"resize-box pull-right flip\"\n (mousedown)=\"onListResizeStart($event, field.ApiName, j)\">\n <div class=\"splitter\"></div>\n </div>\n\n <div *ngIf=\"supportSorting\" class=\"sorting-box pull-left flip\"\n [ngClass]=\"{ 'has-sorting': field.ApiName === sortBy }\">\n <mat-icon *ngIf=\"field.ApiName !== sortBy\">\n <pep-icon name=\"arrow_either\" class=\"asc\"></pep-icon>\n </mat-icon>\n <ng-container *ngIf=\"field.ApiName === sortBy\">\n <mat-icon *ngIf=\"!isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && isAsc }\"\n title=\"{{ 'LIST.SORT_ASC' | translate }}\">\n <pep-icon name=\"arrow_up\" class=\"asc\"></pep-icon>\n </mat-icon>\n <mat-icon *ngIf=\"isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && !isAsc }\"\n title=\"{{ 'LIST.SORT_DESC' | translate }}\">\n <pep-icon name=\"arrow_down\" class=\"desc\"></pep-icon>\n </mat-icon>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </fieldset>\n </div>\n</ng-template>\n\n<ng-template #tableTotal>\n <div *ngIf=\"isTable && totalsRow?.length > 0 && totalsRow.length <= layout?.ControlFields.length\"\n class=\"table-total\">\n <fieldset class=\"table-header-fieldset\">\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"total-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\">\n <label class=\"total-label body-sm text-align-{{ field.Layout.XAlignment }}\">\n {{ totalsRow[j] }}\n </label>\n </div>\n </fieldset>\n </div>\n</ng-template>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuStateChangeEvent,\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\n@Component({\n selector: 'pep-list-actions',\n templateUrl: './list-actions.component.html',\n styleUrls: ['./list-actions.component.scss'],\n})\n@Injectable()\nexport class PepListActionsComponent {\n @Input() actions: Array<PepMenuItem> = null;\n @Input() sizeType: PepSizeType = 'md';\n @Input() xPosition: 'before' | 'after' = 'before';\n @Input() hidden = false;\n\n @Output()\n actionClick: EventEmitter<IPepMenuItemClickEvent> = new EventEmitter<IPepMenuItemClickEvent>();\n @Output()\n stateChange: EventEmitter<IPepMenuStateChangeEvent> = new EventEmitter<IPepMenuStateChangeEvent>();\n @Output()\n menuClick: EventEmitter<void> = new EventEmitter<void>();\n\n onActionClicked(action): void {\n this.actionClick.emit(action);\n }\n\n onStateChanged(menuStateChangeEvent: IPepMenuStateChangeEvent): void {\n this.stateChange.emit(menuStateChangeEvent);\n }\n}\n","<pep-menu [xPosition]=\"xPosition\" [styleType]=\"'strong'\" [sizeType]=\"sizeType\" [items]=\"!hidden ? actions : null\"\n [hideOnEmptyItems]=\"true\" [iconName]=\"'system_edit'\" (menuItemClick)=\"onActionClicked($event)\"\n (stateChange)=\"onStateChanged($event)\" (menuClick)=\"menuClick.emit();\">\n</pep-menu>\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport {\n ObjectsDataRow,\n UIControl,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\nexport type PepListCarouselSizeType = 'xs' | 'sm' | 'md';\n\nexport interface IPepListCarouselItemClickEvent {\n source: ObjectsDataRow;\n}\n\n@Component({\n selector: 'pep-list-carousel',\n templateUrl: './list-carousel.component.html',\n styleUrls: ['./list-carousel.component.scss'],\n})\n@Injectable()\nexport class PepListCarouselComponent implements AfterViewInit, OnDestroy {\n @Input() duration = 1000;\n @Input() layout: UIControl = null;\n @Input() itemsToMove = 3;\n @Input() lockItemInnerEvents = true;\n @Input() hideArrowsInSmallScreen = true;\n\n private _items: Array<ObjectsDataRow> = null;\n @Input()\n set items(value: Array<ObjectsDataRow>) {\n this._items = value;\n this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n private _itemSize: PepListCarouselSizeType = 'xs';\n @Input()\n set itemSize(value: PepListCarouselSizeType) {\n this._itemSize = value;\n this.moveTo(0);\n }\n get itemSize() {\n return this._itemSize;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListCarouselItemClickEvent> = new EventEmitter<IPepListCarouselItemClickEvent>();\n\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n prevDisabled = false;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n // deviceHasMouse = false;\n\n constructor(public layoutService: PepLayoutService) {\n // this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n // this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n // this.deviceHasMouse = deviceHasMouse;\n // });\n }\n\n ngOnDestroy(): void {\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n }\n\n itemClicked(item: ObjectsDataRow): void {\n this.itemClick.emit({ source: item });\n }\n\n moveLeft() {\n // this.carousel.moveLeft();\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n // this.carousel.moveRight();\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n}\n","<div class=\"carousel-container\">\n <ng-container *ngIf=\"items?.length > 0; then carouselBlock; else emptyBlock\"></ng-container>\n <ng-template #emptyBlock>\n <!-- No items -->\n </ng-template>\n <ng-template #carouselBlock>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_left_alt'\" [styleType]=\"'regular'\" [disabled]=\"prevDisabled\" (click)=\"moveLeft()\"\n class=\"carousel-arrow start-arrow\">\n </pep-button>\n <pep-carousel #carousel [xWheelEnabled]=\"false\" [snapDuration]=\"duration\"\n (reachesLeftBound)=\"onReachesLeftBound($event)\" (reachesRightBound)=\"onReachesRightBound($event)\">\n <ng-container *ngFor=\"let item of items\">\n <pep-form pepCarouselItem [layout]=\"layout\" [data]=\"item\" [layoutType]=\"'card'\"\n (click)=\"itemClicked(item)\" class=\"card-view \" [lockEvents]=\"lockItemInnerEvents\"\n [ngClass]=\"{ 'x-small-card': itemSize === 'xs', 'small-card': itemSize === 'sm'}\">\n </pep-form>\n </ng-container>\n </pep-carousel>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_right_alt'\" [styleType]=\"'regular'\" [disabled]=\"nextDisabled\" (click)=\"moveRight()\"\n class=\"carousel-arrow end-arrow\">\n </pep-button>\n </ng-template>\n</div>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { PepBreadCrumbItem } from '@pepperi-addons/ngx-lib/bread-crumbs';\n\nexport class IPepListChooserOption {\n key: string;\n text: string;\n}\n\nexport interface IPepListChooserOptionChangeEvent {\n source: IPepListChooserOption;\n}\n\n@Component({\n selector: 'pep-list-chooser',\n templateUrl: './list-chooser.component.html',\n styleUrls: ['./list-chooser.component.scss'],\n})\n@Injectable()\nexport class PepListChooserComponent {\n private _options: Array<IPepListChooserOption> = null;\n @Input()\n set options(value: Array<IPepListChooserOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.text };\n });\n\n if (this.menuItems?.length === 1) {\n this.breadCrumbsItems = [];\n this.breadCrumbsItems.push(\n new PepBreadCrumbItem({\n key: this.menuItems[0].key,\n text: this.menuItems[0].text,\n })\n );\n }\n }\n get options(): Array<IPepListChooserOption> {\n return this._options;\n }\n\n private _currentList: IPepListChooserOption = null;\n @Input()\n set currentList(value: IPepListChooserOption) {\n this._currentList = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.key);\n }\n get currentList(): IPepListChooserOption {\n return this._currentList;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n\n @Output()\n change: EventEmitter<IPepListChooserOptionChangeEvent> = new EventEmitter<IPepListChooserOptionChangeEvent>();\n\n breadCrumbsItems: Array<PepBreadCrumbItem> = null;\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentList = this.options.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentList });\n }\n}\n","<ng-container *ngIf=\"menuItems?.length > 1\">\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-container>\n<ng-container *ngIf=\"menuItems?.length == 1\">\n <pep-bread-crumbs [items]=\"breadCrumbsItems\" [addSpacing]=\"true\"></pep-bread-crumbs>\n</ng-container>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuItemClickEvent,\n PepMenuItem,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepListSortingChangeEvent } from './list.model';\n\nexport class IPepListSortingOption {\n sortBy: string;\n title: string;\n iconName?: string;\n isAsc?: boolean;\n}\n\nexport interface IPepListSortingOptionChangeEvent {\n source: IPepListSortingOption;\n}\n\n@Component({\n selector: 'pep-list-sorting',\n templateUrl: './list-sorting.component.html',\n styleUrls: ['./list-sorting.component.scss'],\n})\n@Injectable()\nexport class PepListSortingComponent implements OnInit {\n private _options: Array<IPepListSortingOption> = null;\n @Input()\n set options(value: Array<IPepListSortingOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.sortBy, text: opt.title, iconName: opt.iconName };\n });\n }\n get options(): Array<IPepListSortingOption> {\n return this._options;\n }\n\n private _currentSorting: IPepListSortingOption = null;\n @Input()\n set currentSorting(value: IPepListSortingOption) {\n this._currentSorting = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.sortBy);\n }\n get currentSorting(): IPepListSortingOption {\n return this._currentSorting;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n @Output()\n change: EventEmitter<IPepListSortingOptionChangeEvent> = new EventEmitter<IPepListSortingOptionChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (\n this.currentSorting === null &&\n this.options &&\n this.options.length > 0\n ) {\n this.currentSorting = this.options[0];\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentSorting = this.options.find(\n (sorting) => sorting.sortBy === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentSorting });\n }\n}\n","<div class=\"sorting-container\">\n <div class=\"body-xs sort-by\">\n <span>{{ 'LIST.SORT_BY' | translate }}</span>\n </div>\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</div>","import { Component, Injectable, Input } from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-list-total',\n templateUrl: './list-total.component.html',\n styleUrls: ['./list-total.component.scss', './list-total.component.theme.scss'],\n})\n@Injectable()\nexport class PepListTotalComponent {\n @Input() totalRows = -1;\n @Input() totalAmount = -1;\n @Input() isMapView = false;\n @Input() sizeType: PepSizeType = 'md';\n}\n","<div class=\"total-items-container\">\n <ng-container *ngIf=\"isMapView; then mapTemplate; else notMapTemplate\"></ng-container>\n\n <ng-template #notMapTemplate>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT' : 'LIST.TOTAL_RESULTS') | translate: { totalRows: totalRows }\">\n </div>\n </ng-container>\n <ng-container *ngIf=\"totalAmount > 0\"> {{ 'LIST.TOTAL_OF' | translate }} {{ totalAmount }} </ng-container>\n </ng-template>\n\n <ng-template #mapTemplate>\n <ng-container *ngIf=\"totalAmount >= 0\">\n </ng-container>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT_OUT_OF_RESULT' : 'LIST.TOTAL_RESULTS_OUT_OF') | translate: { xRows: totalAmount, totalRows: totalRows }\">\n </div>\n </ng-container>\n </ng-template>\n</div>","import {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n} from '@angular/core';\nimport { PepSizeType, PepStyleType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\nexport type PepListViewDisplayType = 'menu' | 'buttons';\n\nexport class IPepListView {\n key: string;\n iconName: string;\n title?: string;\n}\n\nexport interface IListViewChangeEvent {\n source: IPepListView;\n}\n\n@Component({\n selector: 'pep-list-views',\n templateUrl: './list-views.component.html',\n styleUrls: ['./list-views.component.scss'],\n})\n@Injectable()\nexport class PepListViewsComponent implements OnInit {\n private _views: Array<IPepListView> = null;\n @Input()\n set views(value: Array<IPepListView>) {\n this._views = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.title, iconName: opt.iconName };\n });\n }\n get views(): Array<IPepListView> {\n return this._views;\n }\n\n private _currentView: IPepListView = null;\n @Input()\n set currentView(value: IPepListView) {\n this._currentView = value;\n\n if (this.displayType === 'menu') {\n this.currentItem = this.menuItems.find(\n (mi) => mi.key === value.key\n );\n }\n }\n get currentView(): IPepListView {\n return this._currentView;\n }\n\n @Input() displayType: PepListViewDisplayType = 'menu';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() classNames = '';\n\n @Output()\n change: EventEmitter<IListViewChangeEvent> = new EventEmitter<IListViewChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (this.displayType === 'buttons') {\n if (\n this.currentView === null &&\n this.views &&\n this.views.length > 0\n ) {\n this.currentView = this.views[0];\n }\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentView = this.views.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.raiseChangeEvent();\n }\n\n onViewChanged(view: IPepListView): void {\n this.currentView = view;\n this.raiseChangeEvent();\n }\n\n private raiseChangeEvent(): void {\n this.change.emit({ source: this.currentView });\n }\n}\n","<ng-container *ngIf=\"displayType === 'menu' then menuTemplate else buttonsTemplate\">\n</ng-container>\n<ng-template #menuTemplate>\n <pep-menu [type]=\"'select'\" [styleType]=\"styleType\" [sizeType]=\"sizeType\" [classNames]=\"classNames\"\n [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"currentItem?.iconName ? currentItem?.iconName : 'arrow_down'\"\n (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-template>\n<ng-template #buttonsTemplate>\n <div class=\"buttons-wrapper pep-spacing-element-negative\">\n <button *ngFor=\"let view of views\" mat-button [title]=\"view.title\" [disabled]=\"view.key === currentView?.key\"\n class=\"pep-button icon-button pep-spacing-element {{ sizeType }} {{ styleType }} {{ classNames }}\"\n pepRtlDirection pepMenuBlur (click)=\"onViewChanged(view)\">\n <mat-icon>\n <pep-icon name=\"{{ view?.iconName }}\"></pep-icon>\n </mat-icon>\n </button>\n </div>\n</ng-template>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\r\nimport { PepListSelectionType } from './list.model';\r\n\r\n@Pipe({\r\n name: 'isItemSelected'\r\n})\r\nexport class IsItemSelectedPipe implements PipeTransform {\r\n SEPARATOR = ',';\r\n\r\n private getUniqItemId(itemId: string, itemType = ''): string {\r\n return itemId + this.SEPARATOR + itemType;\r\n }\r\n\r\n transform(item: ObjectsDataRow, selectionTypeForActions: PepListSelectionType, selectedItemId: string, isAllSelected: boolean,\r\n selectedItems: Map<string, string>, unSelectedItems: Map<string, string>): any {\r\n let isSelected = false;\r\n\r\n if (selectionTypeForActions === 'single') {\r\n isSelected = selectedItemId === this.getUniqItemId(item?.UID, item?.Type.toString());\r\n }\r\n // else if (selectionTypeForActions === 'single-action') {\r\n // isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n // }\r\n else if (selectionTypeForActions === 'multi') {\r\n if (item?.IsSelectableForActions) {\r\n isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n }\r\n }\r\n\r\n return isSelected;\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'isItemDisabled'\r\n})\r\nexport class IsItemDisabledPipe implements PipeTransform {\r\n transform(item: ObjectsDataRow, lockItemInnerEvents: boolean, printMode: boolean): any {\r\n return (\r\n printMode || lockItemInnerEvents || (item && !item.IsSelectableForActions)\r\n );\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\n// import { PepListOldComponent } from './list_old.component';\nimport { PepListComponent } from './list.component';\nimport { PepListActionsComponent } from './list-actions.component';\nimport { PepListCarouselComponent } from './list-carousel.component';\nimport { PepListChooserComponent } from './list-chooser.component';\nimport { PepListPagerComponent } from './list-pager.component';\nimport { PepListSortingComponent } from './list-sorting.component';\nimport { PepListTotalComponent } from './list-total.component';\nimport { PepListViewsComponent } from './list-views.component';\n\nconst listComponents = [\n // PepListOldComponent,\n PepListComponent,\n PepListActionsComponent,\n PepListCarouselComponent,\n PepListChooserComponent,\n PepListPagerComponent,\n PepListSortingComponent,\n PepListTotalComponent,\n PepListViewsComponent,\n];\n\nimport { IsItemDisabledPipe, IsItemSelectedPipe } from './list.pipes';\n\nconst listPipes = [\n IsItemSelectedPipe,\n IsItemDisabledPipe\n];\n\nimport { VirtualScrollerModule } from './virtual-scroller';\n// import { PepVirtualScrollComponent } from './virtual-scroll.component';\n@NgModule({\n imports: [\n CommonModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatRadioModule,\n MatIconModule,\n MatMenuModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepBreadCrumbsModule,\n PepButtonModule,\n PepCarouselModule,\n PepIconModule,\n PepFormModule,\n PepMenuModule,\n PepTextboxModule,\n VirtualScrollerModule\n ],\n exports: [listComponents],\n declarations: [listComponents, listPipes],\n})\nexport class PepListModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/list\n */\nexport * from './list.module';\nexport * from './list.model';\n// export * from './list_old.component';\nexport * from './list.component';\nexport * from './list-actions.component';\nexport * from './list-carousel.component';\nexport * from './list-chooser.component';\nexport * from './list-pager.component';\nexport * from './list-sorting.component';\nexport * from './list-total.component';\nexport * from './list-views.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i3","i4","i5","i6","i8.VirtualScrollerComponent","i9.PepListPagerComponent","i10","i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-list.mjs","sources":["../../../projects/ngx-lib/list/virtual-scroller.ts","../../../projects/ngx-lib/list/list.model.ts","../../../projects/ngx-lib/list/list-pager.component.ts","../../../projects/ngx-lib/list/list-pager.component.html","../../../projects/ngx-lib/list/list.component.ts","../../../projects/ngx-lib/list/list.component.html","../../../projects/ngx-lib/list/list-actions.component.ts","../../../projects/ngx-lib/list/list-actions.component.html","../../../projects/ngx-lib/list/list-carousel.component.ts","../../../projects/ngx-lib/list/list-carousel.component.html","../../../projects/ngx-lib/list/list-chooser.component.ts","../../../projects/ngx-lib/list/list-chooser.component.html","../../../projects/ngx-lib/list/list-sorting.component.ts","../../../projects/ngx-lib/list/list-sorting.component.html","../../../projects/ngx-lib/list/list-total.component.ts","../../../projects/ngx-lib/list/list-total.component.html","../../../projects/ngx-lib/list/list-views.component.ts","../../../projects/ngx-lib/list/list-views.component.html","../../../projects/ngx-lib/list/list.pipes.ts","../../../projects/ngx-lib/list/list.module.ts","../../../projects/ngx-lib/list/public-api.ts","../../../projects/ngx-lib/list/pepperi-addons-ngx-lib-list.ts"],"sourcesContent":["import {\r\n\tChangeDetectorRef,\r\n\tComponent,\r\n\tContentChild,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tInject,\r\n\tInput,\r\n\tNgModule,\r\n\tNgZone,\r\n\tOnChanges,\r\n\tOnDestroy,\r\n\tOnInit,\r\n\tOptional,\r\n\tOutput,\r\n\tRenderer2,\r\n\tViewChild,\r\n} from '@angular/core';\r\n\r\nimport { PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\n\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport * as tween from '@tweenjs/tween.js'\r\n\r\nexport interface VirtualScrollerDefaultOptions {\r\n\tcheckResizeInterval: number\r\n\tmodifyOverflowStyleOfParentScroll: boolean,\r\n\tresizeBypassRefreshThreshold: number,\r\n\tscrollAnimationTime: number;\r\n\tscrollDebounceTime: number;\r\n\tscrollThrottlingTime: number;\r\n\tscrollbarHeight?: number;\r\n\tscrollbarWidth?: number;\r\n\tstripedTable: boolean\r\n}\r\n\r\nexport function VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY(): VirtualScrollerDefaultOptions {\r\n\treturn {\r\n\t\tcheckResizeInterval: 1000,\r\n\t\tmodifyOverflowStyleOfParentScroll: true,\r\n\t\tresizeBypassRefreshThreshold: 5,\r\n\t\tscrollAnimationTime: 750,\r\n\t\tscrollDebounceTime: 0,\r\n\t\tscrollThrottlingTime: 0,\r\n\t\tstripedTable: false\r\n\t};\r\n}\r\n\r\nexport interface WrapGroupDimensions {\r\n\tmaxChildSizePerWrapGroup: WrapGroupDimension[];\r\n\tnumberOfKnownWrapGroupChildSizes: number;\r\n\tsumOfKnownWrapGroupChildHeights: number;\r\n\tsumOfKnownWrapGroupChildWidths: number;\r\n}\r\n\r\nexport interface WrapGroupDimension {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titems: any[];\r\n}\r\n\r\nexport interface IDimensions {\r\n\tchildHeight: number;\r\n\tchildWidth: number;\r\n\titemCount: number;\r\n\titemsPerPage: number;\r\n\titemsPerWrapGroup: number;\r\n\tmaxScrollPosition: number;\r\n\tpageCount_fractional: number;\r\n\tscrollLength: number;\r\n\tviewportLength: number;\r\n\twrapGroupsPerPage: number;\r\n}\r\n\r\nexport type ScrollDirectionType = 'backward' | 'forward';\r\n\r\nexport interface IPageInfo {\r\n\tendIndex: number;\r\n\tendIndexWithBuffer: number;\r\n\tmaxScrollPosition: number;\r\n\tscrollEndPosition: number;\r\n\tscrollStartPosition: number;\r\n\tscrollDirection?: ScrollDirectionType;\r\n\tstartIndex: number;\r\n\tstartIndexWithBuffer: number;\r\n}\r\n\r\nexport interface IViewport extends IPageInfo {\r\n\tpadding: number;\r\n\tscrollLength: number;\r\n}\r\n\r\n@Component({\r\n\tselector: 'virtual-scroller,[virtualScroller]',\r\n\texportAs: 'virtualScroller',\r\n\ttemplate: `\n <div class=\"total-padding\" #invisiblePadding></div>\n <div class=\"scrollable-content\" #content>\n <ng-content></ng-content>\n </div>\n `,\r\n\thost: {\r\n\t\t'[class.horizontal]': \"horizontal\",\r\n\t\t'[class.vertical]': \"!horizontal\",\r\n\t\t'[class.selfScroll]': \"!parentScroll\",\r\n\t\t'[class.rtl]': \"RTL\"\r\n\t},\r\n\tstyles: [`\n :host {\n position: relative;\n\t \tdisplay: block;\n -webkit-overflow-scrolling: touch;\n }\n\t\t:host.horizontal.selfScroll {\n overflow-y: visible;\n overflow-x: auto;\n\t\t}\n\t\t:host.horizontal.selfScroll.rtl {\n\t\t\ttransform: scaleX(-1);\n\t\t}\n\t\t:host.vertical.selfScroll {\n overflow-y: auto;\n overflow-x: visible;\n\t\t}\n .scrollable-content {\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n max-width: 100vw;\n max-height: 100vh;\n position: absolute;\n }\n\t\t.scrollable-content ::ng-deep > * {\n\t\t\tbox-sizing: border-box;\n\t\t}\n\t\t:host.horizontal {\n\t\t\twhite-space: nowrap;\n\t\t}\n\t\t:host.horizontal .scrollable-content {\n\t\t\tdisplay: flex;\n\t\t}\n\t\t:host.horizontal .scrollable-content ::ng-deep > * {\n\t\t\tflex-shrink: 0;\n\t\t\tflex-grow: 0;\n\t\t\twhite-space: initial;\n\t\t}\n\t\t:host.horizontal.rtl .scrollable-content ::ng-deep > * {\n\t\t\ttransform:scaleX(-1);\n\t\t}\n .total-padding {\n position: absolute;\n top: 0;\n left: 0;\n height: 1px;\n width: 1px;\n transform-origin: 0 0;\n opacity: 0;\n }\n :host.horizontal .total-padding {\n height: 100%;\n }\n `]\r\n})\r\nexport class VirtualScrollerComponent implements OnInit, OnChanges, OnDestroy {\r\n\tpublic viewPortItems: any[];\r\n\tpublic window = window;\r\n\r\n\tpublic get viewPortInfo(): IPageInfo {\r\n\t\tconst pageInfo: IViewport = this.previousViewPort || <any>{};\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex || 0,\r\n\t\t\tendIndex: pageInfo.endIndex || 0,\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition || 0,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition || 0,\r\n\t\t\tscrollDirection: pageInfo.scrollDirection || 'forward',\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition || 0,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer || 0,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer || 0,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected _disable = false;\r\n\t@Input()\r\n\tpublic get disable(): boolean {\r\n\t\treturn this._disable;\r\n\t}\r\n\tpublic set disable(value: boolean) {\r\n\t\tif (this._disable === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._disable = value;\r\n\t\tif (this._disable) {\r\n\t\t\tthis.removeScrollEventHandlers();\r\n\t\t} else {\r\n\t\t\tthis.addScrollEventHandlers();\r\n\t\t}\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic executeRefreshOutsideAngularZone = false;\r\n\r\n\tprotected _enableUnequalChildrenSizes = false;\r\n\t@Input()\r\n\tpublic get enableUnequalChildrenSizes(): boolean {\r\n\t\treturn this._enableUnequalChildrenSizes;\r\n\t}\r\n\tpublic set enableUnequalChildrenSizes(value: boolean) {\r\n\t\tif (this._enableUnequalChildrenSizes === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._enableUnequalChildrenSizes = value;\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic RTL = false;\r\n\r\n\t@Input()\r\n\tpublic useMarginInsteadOfTranslate = false;\r\n\r\n\t@Input()\r\n\tpublic modifyOverflowStyleOfParentScroll: boolean;\r\n\r\n\t@Input()\r\n\tpublic stripedTable: boolean;\r\n\r\n\t@Input()\r\n\tpublic scrollbarWidth: number;\r\n\r\n\t@Input()\r\n\tpublic scrollbarHeight: number;\r\n\r\n\t@Input()\r\n\tpublic childWidth: number;\r\n\r\n\t@Input()\r\n\tpublic childHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildWidth: number;\r\n\r\n\t@Input()\r\n\tpublic ssrChildHeight: number;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportWidth = 1920;\r\n\r\n\t@Input()\r\n\tpublic ssrViewportHeight = 1080;\r\n\r\n\tprotected _bufferAmount: number;\r\n\t@Input()\r\n\tpublic get bufferAmount(): number {\r\n\t\tif (typeof (this._bufferAmount) === 'number' && this._bufferAmount > 0) {\r\n\t\t\treturn this._bufferAmount;\r\n\t\t} else {\r\n\t\t\treturn this.enableUnequalChildrenSizes ? 5 : 0;\r\n\t\t}\r\n\t}\r\n\tpublic set bufferAmount(value: number) {\r\n\t\tthis._bufferAmount = value;\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic scrollAnimationTime: number;\r\n\r\n\t@Input()\r\n\tpublic resizeBypassRefreshThreshold: number;\r\n\r\n\tprotected _scrollThrottlingTime: number;\r\n\t@Input()\r\n\tpublic get scrollThrottlingTime(): number {\r\n\t\treturn this._scrollThrottlingTime;\r\n\t}\r\n\tpublic set scrollThrottlingTime(value: number) {\r\n\t\tthis._scrollThrottlingTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected _scrollDebounceTime: number;\r\n\t@Input()\r\n\tpublic get scrollDebounceTime(): number {\r\n\t\treturn this._scrollDebounceTime;\r\n\t}\r\n\tpublic set scrollDebounceTime(value: number) {\r\n\t\tthis._scrollDebounceTime = value;\r\n\t\tthis.updateOnScrollFunction();\r\n\t}\r\n\r\n\tprotected onScroll: () => void;\r\n\tprotected updateOnScrollFunction(): void {\r\n\t\tif (this.scrollDebounceTime) {\r\n\t\t\tthis.onScroll = <any>this.debounce(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollDebounceTime);\r\n\t\t}\r\n\t\telse if (this.scrollThrottlingTime) {\r\n\t\t\tthis.onScroll = <any>this.throttleTrailing(() => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}, this.scrollThrottlingTime);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.onScroll = () => {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprotected checkScrollElementResizedTimer: number;\r\n\tprotected _checkResizeInterval: number;\r\n\t@Input()\r\n\tpublic get checkResizeInterval(): number {\r\n\t\treturn this._checkResizeInterval;\r\n\t}\r\n\tpublic set checkResizeInterval(value: number) {\r\n\t\tif (this._checkResizeInterval === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._checkResizeInterval = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tprotected _items: any[] = [];\r\n\t@Input()\r\n\tpublic get items(): any[] {\r\n\t\treturn this._items;\r\n\t}\r\n\tpublic set items(value: any[]) {\r\n\t\tif (value === this._items) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._items = value || [];\r\n\t\tthis.refresh_internal(true);\r\n\t}\r\n\r\n\t@Input()\r\n\tpublic compareItems: (item1: any, item2: any) => boolean = (item1: any, item2: any) => item1 === item2;\r\n\r\n\tprotected _horizontal: boolean;\r\n\t@Input()\r\n\tpublic get horizontal(): boolean {\r\n\t\treturn this._horizontal;\r\n\t}\r\n\tpublic set horizontal(value: boolean) {\r\n\t\tthis._horizontal = value;\r\n\t\tthis.updateDirection();\r\n\t}\r\n\r\n\tprotected revertParentOverscroll(): void {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (scrollElement && this.oldParentScrollOverflow) {\r\n\t\t\tscrollElement.style['overflow-y'] = this.oldParentScrollOverflow.y;\r\n\t\t\tscrollElement.style['overflow-x'] = this.oldParentScrollOverflow.x;\r\n\t\t}\r\n\r\n\t\tthis.oldParentScrollOverflow = undefined;\r\n\t}\r\n\r\n\tprotected oldParentScrollOverflow: { x: string, y: string };\r\n\tprotected _parentScroll: Element | Window;\r\n\t@Input()\r\n\tpublic get parentScroll(): Element | Window {\r\n\t\treturn this._parentScroll;\r\n\t}\r\n\tpublic set parentScroll(value: Element | Window) {\r\n\t\tif (this._parentScroll === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.revertParentOverscroll();\r\n\t\tthis._parentScroll = value;\r\n\t\tthis.addScrollEventHandlers();\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\t\tif (this.modifyOverflowStyleOfParentScroll && scrollElement !== this.element.nativeElement) {\r\n\t\t\tthis.oldParentScrollOverflow = { x: scrollElement.style['overflow-x'], y: scrollElement.style['overflow-y'] };\r\n\t\t\tscrollElement.style['overflow-y'] = this.horizontal ? 'visible' : 'auto';\r\n\t\t\tscrollElement.style['overflow-x'] = this.horizontal ? 'auto' : 'visible';\r\n\t\t}\r\n\t}\r\n\r\n\t// private _lastChildRect: DOMRect = null;\r\n\r\n\t@Output()\r\n\tpublic vsChildRectChange: EventEmitter<DOMRect> = new EventEmitter<DOMRect>();\r\n\r\n\t@Output()\r\n\tpublic vsUpdate: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n\t@Output()\r\n\tpublic vsChange: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsStart: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@Output()\r\n\tpublic vsEnd: EventEmitter<IPageInfo> = new EventEmitter<IPageInfo>();\r\n\r\n\t@ViewChild('content', { read: ElementRef, static: true })\r\n\tpublic contentElementRef: ElementRef;\r\n\r\n\t@ViewChild('invisiblePadding', { read: ElementRef, static: true })\r\n\tprotected invisiblePaddingElementRef: ElementRef;\r\n\r\n\t@ContentChild('header', { read: ElementRef, static: false })\r\n\tprotected headerElementRef: ElementRef;\r\n\r\n\t@ContentChild('container', { read: ElementRef, static: false })\r\n\tprotected containerElementRef: ElementRef;\r\n\r\n\tpublic ngOnInit(): void {\r\n\t\tthis.addScrollEventHandlers();\r\n\t}\r\n\r\n\tpublic ngOnDestroy(): void {\r\n\t\tthis.removeScrollEventHandlers();\r\n\t\tthis.revertParentOverscroll();\r\n\t}\r\n\r\n\tpublic ngOnChanges(changes: any): void {\r\n\t\tconst indexLengthChanged = this.cachedItemsLength !== this.items.length;\r\n\t\tthis.cachedItemsLength = this.items.length;\r\n\r\n\t\tconst firstRun: boolean = !changes.items || !changes.items.previousValue || changes.items.previousValue.length === 0;\r\n\t\tthis.refresh_internal(indexLengthChanged || firstRun);\r\n\t}\r\n\r\n\tpublic ngDoCheck(): void {\r\n\t\tif (this.cachedItemsLength !== this.items.length) {\r\n\t\t\tthis.cachedItemsLength = this.items.length;\r\n\t\t\tthis.refresh_internal(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.previousViewPort && this.viewPortItems && this.viewPortItems.length > 0) {\r\n\t\t\tlet itemsArrayChanged = false;\r\n\t\t\tfor (let i = 0; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\tif (!this.compareItems(this.items[this.previousViewPort.startIndexWithBuffer + i], this.viewPortItems[i])) {\r\n\t\t\t\t\titemsArrayChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (itemsArrayChanged) {\r\n\t\t\t\tthis.refresh_internal(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic refresh(refreshCompletedCallback: () => void = undefined): void {\r\n\t\tthis.refresh_internal(true, refreshCompletedCallback);\r\n\t}\r\n\r\n\tpublic invalidateAllCachedMeasurements(): void {\r\n\t\tthis.wrapGroupDimensions = {\r\n\t\t\tmaxChildSizePerWrapGroup: [],\r\n\t\t\tnumberOfKnownWrapGroupChildSizes: 0,\r\n\t\t\tsumOfKnownWrapGroupChildWidths: 0,\r\n\t\t\tsumOfKnownWrapGroupChildHeights: 0\r\n\t\t};\r\n\r\n\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\tthis.minMeasuredChildHeight = undefined;\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementForItem(item: any): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst index = this.items && this.items.indexOf(item);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tthis.invalidateCachedMeasurementAtIndex(index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic invalidateCachedMeasurementAtIndex(index: number): void {\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst cachedMeasurement = this.wrapGroupDimensions.maxChildSizePerWrapGroup[index];\r\n\t\t\tif (cachedMeasurement) {\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[index] = undefined;\r\n\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= cachedMeasurement.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= cachedMeasurement.childHeight || 0;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.minMeasuredChildWidth = undefined;\r\n\t\t\tthis.minMeasuredChildHeight = undefined;\r\n\t\t}\r\n\r\n\t\tthis.refresh_internal(false);\r\n\t}\r\n\r\n\tpublic scrollInto(item: any, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tconst index: number = this.items.indexOf(item);\r\n\t\tif (index === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tlet maxRetries = 5;\r\n\r\n\t\tconst retryIfNeeded = () => {\r\n\t\t\t--maxRetries;\r\n\t\t\tif (maxRetries <= 0) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst dimensions = this.calculateDimensions();\r\n\t\t\tconst desiredStartIndex = Math.min(Math.max(index, 0), dimensions.itemCount - 1);\r\n\t\t\tif (this.previousViewPort.startIndex === desiredStartIndex) {\r\n\t\t\t\tif (animationCompletedCallback) {\r\n\t\t\t\t\tanimationCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, 0, retryIfNeeded);\r\n\t\t};\r\n\r\n\t\tthis.scrollToIndex_internal(index, alignToBeginning, additionalOffset, animationMilliseconds, retryIfNeeded);\r\n\t}\r\n\r\n\tprotected scrollToIndex_internal(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tlet scroll = this.calculatePadding(index, dimensions) + additionalOffset;\r\n\t\tif (!alignToBeginning) {\r\n\t\t\tscroll -= dimensions.wrapGroupsPerPage * dimensions[this._childScrollDim];\r\n\t\t}\r\n\r\n\t\tthis.scrollToPosition(scroll, animationMilliseconds, animationCompletedCallback);\r\n\t}\r\n\r\n\tpublic scrollToPosition(scrollPosition: number, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined): void {\r\n\t\tscrollPosition += this.getElementsOffset();\r\n\r\n\t\tanimationMilliseconds = animationMilliseconds === undefined ? this.scrollAnimationTime : animationMilliseconds;\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tlet animationRequest: number;\r\n\r\n\t\tif (this.currentTween) {\r\n\t\t\tthis.currentTween.stop();\r\n\t\t\tthis.currentTween = undefined;\r\n\t\t}\r\n\r\n\t\tif (!animationMilliseconds) {\r\n\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, scrollPosition);\r\n\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tweenConfigObj = { scrollPosition: scrollElement[this._scrollType] };\r\n\r\n\t\tconst newTween = new tween.Tween(tweenConfigObj)\r\n\t\t\t.to({ scrollPosition }, animationMilliseconds)\r\n\t\t\t.easing(tween.Easing.Quadratic.Out)\r\n\t\t\t.onUpdate((data) => {\r\n\t\t\t\tif (isNaN(data.scrollPosition)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.renderer.setProperty(scrollElement, this._scrollType, data.scrollPosition);\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t})\r\n\t\t\t.onStop(() => {\r\n\t\t\t\tcancelAnimationFrame(animationRequest);\r\n\t\t\t})\r\n\t\t\t.start();\r\n\r\n\t\tconst animate = (time?: number) => {\r\n\t\t\tif (!newTween[\"isPlaying\"]()) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tnewTween.update(time);\r\n\t\t\tif (tweenConfigObj.scrollPosition === scrollPosition) {\r\n\t\t\t\tthis.refresh_internal(false, animationCompletedCallback);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\t\tanimationRequest = requestAnimationFrame(animate);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tanimate();\r\n\t\tthis.currentTween = newTween;\r\n\t}\r\n\r\n\tprotected isAngularUniversalSSR: boolean;\r\n\r\n\tconstructor(\r\n\t\tprotected readonly element: ElementRef,\r\n\t\tprotected readonly renderer: Renderer2,\r\n\t\tprotected readonly zone: NgZone,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\t@Inject(PLATFORM_ID) platformId: any,\r\n\t\t@Optional() @Inject('virtual-scroller-default-options')\r\n\t\toptions: VirtualScrollerDefaultOptions\r\n\t) {\r\n\r\n\t\tthis.isAngularUniversalSSR = isPlatformServer(platformId);\r\n\r\n\t\tconst defaultOptions = VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY();\r\n\r\n\t\tthis.checkResizeInterval = options?.checkResizeInterval || defaultOptions.checkResizeInterval;\r\n\t\tthis.modifyOverflowStyleOfParentScroll = options?.modifyOverflowStyleOfParentScroll || defaultOptions.modifyOverflowStyleOfParentScroll;\r\n\t\tthis.resizeBypassRefreshThreshold = options?.resizeBypassRefreshThreshold || defaultOptions.resizeBypassRefreshThreshold;\r\n\t\tthis.scrollAnimationTime = options?.scrollAnimationTime || defaultOptions.scrollAnimationTime;\r\n\t\tthis.scrollDebounceTime = options?.scrollDebounceTime || defaultOptions.scrollDebounceTime;\r\n\t\tthis.scrollThrottlingTime = options?.scrollThrottlingTime || defaultOptions.scrollThrottlingTime;\r\n\t\tthis.scrollbarHeight = options?.scrollbarHeight || defaultOptions.scrollbarHeight;\r\n\t\tthis.scrollbarWidth = options?.scrollbarWidth || defaultOptions.scrollbarWidth;\r\n\t\tthis.stripedTable = options?.stripedTable || defaultOptions.stripedTable;\r\n\r\n\t\tthis.horizontal = false;\r\n\t\tthis.resetWrapGroupDimensions();\r\n\t}\r\n\r\n\tpublic getElementSize(element: HTMLElement): any {\r\n\t\tconst result = element.getBoundingClientRect();\r\n\t\tconst styles = getComputedStyle(element);\r\n\t\tconst marginTop = parseInt(styles['margin-top'], 10) || 0;\r\n\t\tconst marginBottom = parseInt(styles['margin-bottom'], 10) || 0;\r\n\t\tconst marginLeft = parseInt(styles['margin-left'], 10) || 0;\r\n\t\tconst marginRight = parseInt(styles['margin-right'], 10) || 0;\r\n\r\n\t\treturn {\r\n\t\t\ttop: result.top + marginTop,\r\n\t\t\tbottom: result.bottom + marginBottom,\r\n\t\t\tleft: result.left + marginLeft,\r\n\t\t\tright: result.right + marginRight,\r\n\t\t\twidth: parseFloat((result.width + marginLeft + marginRight).toFixed(3)),\r\n\t\t\theight: parseFloat((result.height + marginTop + marginBottom).toFixed(3))\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getContent() {\r\n\t\tconst content = (this.containerElementRef && this.containerElementRef.nativeElement) || this.contentElementRef.nativeElement;\r\n\t\treturn content;\r\n\t}\r\n\r\n\tprotected previousScrollBoundingRect: DOMRect;\r\n\tprotected checkScrollElementResized(): void {\r\n\t\tconst boundingRect = this.getElementSize(this.getScrollElement());\r\n\r\n\t\tlet sizeChanged: boolean;\r\n\t\tif (!this.previousScrollBoundingRect) {\r\n\t\t\tsizeChanged = true;\r\n\t\t} else {\r\n\t\t\tconst widthChange = Math.abs(boundingRect.width - this.previousScrollBoundingRect.width);\r\n\t\t\tconst heightChange = Math.abs(boundingRect.height - this.previousScrollBoundingRect.height);\r\n\t\t\tsizeChanged = widthChange > this.resizeBypassRefreshThreshold || heightChange > this.resizeBypassRefreshThreshold;\r\n\t\t}\r\n\r\n\t\tif (sizeChanged) {\r\n\t\t\tthis.previousScrollBoundingRect = boundingRect;\r\n\t\t\tif (boundingRect.width > 0 && boundingRect.height > 0) {\r\n\t\t\t\tthis.refresh_internal(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _invisiblePaddingProperty;\r\n\tprotected _offsetType;\r\n\tprotected _scrollType;\r\n\tprotected _pageOffsetType;\r\n\tprotected _childScrollDim;\r\n\tprotected _translateDir;\r\n\tprotected _marginDir;\r\n\tprotected updateDirection(): void {\r\n\t\tif (this.horizontal) {\r\n\t\t\tthis._childScrollDim = 'childWidth';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleX';\r\n\t\t\tthis._marginDir = 'margin-left';\r\n\t\t\tthis._offsetType = 'offsetLeft';\r\n\t\t\tthis._pageOffsetType = 'pageXOffset';\r\n\t\t\tthis._scrollType = 'scrollLeft';\r\n\t\t\tthis._translateDir = 'translateX';\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._childScrollDim = 'childHeight';\r\n\t\t\tthis._invisiblePaddingProperty = 'scaleY';\r\n\t\t\tthis._marginDir = 'margin-top';\r\n\t\t\tthis._offsetType = 'offsetTop';\r\n\t\t\tthis._pageOffsetType = 'pageYOffset';\r\n\t\t\tthis._scrollType = 'scrollTop';\r\n\t\t\tthis._translateDir = 'translateY';\r\n\t\t}\r\n\t}\r\n\r\n\tprotected debounce(func: () => void, wait: number, ...args): () => void {\r\n\t\tconst throttled = this.throttleTrailing(func, wait);\r\n\t\tconst result = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t\tthrottled.apply(this, args);\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tthrottled['cancel']();\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected throttleTrailing(func: () => void, wait: number, ...args): () => void {\r\n\t\tlet timeout = undefined;\r\n\t\tlet _arguments = args;\r\n\t\tconst result = function () {\r\n\t\t\tconst _this = this;\r\n\t\t\t_arguments = args\r\n\r\n\t\t\tif (timeout) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (wait <= 0) {\r\n\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t} else {\r\n\t\t\t\ttimeout = setTimeout(function () {\r\n\t\t\t\t\ttimeout = undefined;\r\n\t\t\t\t\tfunc.apply(_this, _arguments);\r\n\t\t\t\t}, wait);\r\n\t\t\t}\r\n\t\t};\r\n\t\tresult['cancel'] = function () {\r\n\t\t\tif (timeout) {\r\n\t\t\t\tclearTimeout(timeout);\r\n\t\t\t\ttimeout = undefined;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatedScrollbarWidth = 0;\r\n\tprotected calculatedScrollbarHeight = 0;\r\n\r\n\tprotected padding = 0;\r\n\tprotected previousViewPort: IViewport = <any>{};\r\n\tprotected currentTween: tween.Tween;\r\n\tprotected cachedItemsLength: number;\r\n\r\n\tprotected disposeScrollHandler: () => void | undefined;\r\n\tprotected disposeResizeHandler: () => void | undefined;\r\n\r\n\tprotected refresh_internal(itemsArrayModified: boolean, refreshCompletedCallback: () => void = undefined, maxRunTimes = 2): void {\r\n\t\t//note: maxRunTimes is to force it to keep recalculating if the previous iteration caused a re-render (different sliced items in viewport or scrollPosition changed).\r\n\t\t//The default of 2x max will probably be accurate enough without causing too large a performance bottleneck\r\n\t\t//The code would typically quit out on the 2nd iteration anyways. The main time it'd think more than 2 runs would be necessary would be for vastly different sized child items or if this is the 1st time the items array was initialized.\r\n\t\t//Without maxRunTimes, If the user is actively scrolling this code would become an infinite loop until they stopped scrolling. This would be okay, except each scroll event would start an additional infinte loop. We want to short-circuit it to prevent this.\r\n\r\n\t\tif (itemsArrayModified && this.previousViewPort && this.previousViewPort.scrollStartPosition > 0) {\r\n\t\t\t//if items were prepended, scroll forward to keep same items visible\r\n\t\t\tconst oldViewPort = this.previousViewPort;\r\n\t\t\tconst oldViewPortItems = this.viewPortItems;\r\n\r\n\t\t\tconst oldRefreshCompletedCallback = refreshCompletedCallback;\r\n\t\t\trefreshCompletedCallback = () => {\r\n\t\t\t\tconst scrollLengthDelta = this.previousViewPort.scrollLength - oldViewPort.scrollLength;\r\n\t\t\t\tif (scrollLengthDelta > 0 && this.viewPortItems) {\r\n\t\t\t\t\tconst oldStartItem = oldViewPortItems[0];\r\n\t\t\t\t\tconst oldStartItemIndex = this.items.findIndex(x => this.compareItems(oldStartItem, x));\r\n\t\t\t\t\tif (oldStartItemIndex > this.previousViewPort.startIndexWithBuffer) {\r\n\t\t\t\t\t\tlet itemOrderChanged = false;\r\n\t\t\t\t\t\tfor (let i = 1; i < this.viewPortItems.length; ++i) {\r\n\t\t\t\t\t\t\tif (!this.compareItems(this.items[oldStartItemIndex + i], oldViewPortItems[i])) {\r\n\t\t\t\t\t\t\t\titemOrderChanged = true;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!itemOrderChanged) {\r\n\t\t\t\t\t\t\tthis.scrollToPosition(this.previousViewPort.scrollStartPosition + scrollLengthDelta, 0, oldRefreshCompletedCallback);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (oldRefreshCompletedCallback) {\r\n\t\t\t\t\toldRefreshCompletedCallback();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\trequestAnimationFrame(() => {\r\n\r\n\t\t\t\tif (itemsArrayModified) {\r\n\t\t\t\t\tthis.resetWrapGroupDimensions();\r\n\t\t\t\t}\r\n\t\t\t\tconst viewport = this.calculateViewport();\r\n\r\n\t\t\t\tconst startChanged = itemsArrayModified || viewport.startIndex !== this.previousViewPort.startIndex;\r\n\t\t\t\tconst endChanged = itemsArrayModified || viewport.endIndex !== this.previousViewPort.endIndex;\r\n\t\t\t\tconst scrollLengthChanged = viewport.scrollLength !== this.previousViewPort.scrollLength;\r\n\t\t\t\tconst paddingChanged = viewport.padding !== this.previousViewPort.padding;\r\n\t\t\t\tconst scrollPositionChanged = viewport.scrollStartPosition !== this.previousViewPort.scrollStartPosition || viewport.scrollEndPosition !== this.previousViewPort.scrollEndPosition || viewport.maxScrollPosition !== this.previousViewPort.maxScrollPosition;\r\n\r\n\t\t\t\tconst scrollDirection: ScrollDirectionType = this.previousViewPort.endIndex <= viewport.endIndex ? 'forward' : 'backward';\r\n\t\t\t\tthis.previousViewPort = viewport;\r\n\r\n\t\t\t\tif (scrollLengthChanged) {\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'transform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.invisiblePaddingElementRef.nativeElement, 'webkitTransform', `${this._invisiblePaddingProperty}(${viewport.scrollLength})`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (paddingChanged) {\r\n\t\t\t\t\tif (this.useMarginInsteadOfTranslate) {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, this._marginDir, `${viewport.padding}px`);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'transform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t\tthis.renderer.setStyle(this.contentElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${viewport.padding}px)`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.headerElementRef) {\r\n\t\t\t\t\tconst scrollPosition = this.getScrollElement()[this._scrollType];\r\n\t\t\t\t\tconst containerOffset = this.getElementsOffset();\r\n\t\t\t\t\tconst offset = Math.max(scrollPosition - viewport.padding - containerOffset + this.headerElementRef.nativeElement.clientHeight, 0);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'transform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t\tthis.renderer.setStyle(this.headerElementRef.nativeElement, 'webkitTransform', `${this._translateDir}(${offset}px)`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst changeEventArg: IPageInfo = (startChanged || endChanged) ? {\r\n\t\t\t\t\tstartIndex: viewport.startIndex,\r\n\t\t\t\t\tendIndex: viewport.endIndex,\r\n\t\t\t\t\tscrollStartPosition: viewport.scrollStartPosition,\r\n\t\t\t\t\tscrollEndPosition: viewport.scrollEndPosition,\r\n\t\t\t\t\tscrollDirection: scrollDirection,\r\n\t\t\t\t\tstartIndexWithBuffer: viewport.startIndexWithBuffer,\r\n\t\t\t\t\tendIndexWithBuffer: viewport.endIndexWithBuffer,\r\n\t\t\t\t\tmaxScrollPosition: viewport.maxScrollPosition,\r\n\t\t\t\t} : undefined;\r\n\r\n\r\n\t\t\t\tif (startChanged || endChanged || scrollPositionChanged) {\r\n\t\t\t\t\tconst handleChanged = () => {\r\n\t\t\t\t\t\t// update the scroll list to trigger re-render of components in viewport\r\n\t\t\t\t\t\tthis.viewPortItems = viewport.startIndexWithBuffer >= 0 && viewport.endIndexWithBuffer >= 0 ? this.items.slice(viewport.startIndexWithBuffer, viewport.endIndexWithBuffer + 1) : [];\r\n\t\t\t\t\t\tthis.vsUpdate.emit(this.viewPortItems);\r\n\r\n\t\t\t\t\t\tif (startChanged) {\r\n\t\t\t\t\t\t\tthis.vsStart.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (endChanged) {\r\n\t\t\t\t\t\t\tthis.vsEnd.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (startChanged || endChanged) {\r\n\t\t\t\t\t\t\tthis.changeDetectorRef.markForCheck();\r\n\t\t\t\t\t\t\tthis.vsChange.emit(changeEventArg);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (maxRunTimes > 0) {\r\n\t\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\r\n\t\t\t\t\tif (this.executeRefreshOutsideAngularZone) {\r\n\t\t\t\t\t\thandleChanged();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis.zone.run(handleChanged);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (maxRunTimes > 0 && (scrollLengthChanged || paddingChanged)) {\r\n\t\t\t\t\t\tthis.refresh_internal(false, refreshCompletedCallback, maxRunTimes - 1);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (refreshCompletedCallback) {\r\n\t\t\t\t\t\trefreshCompletedCallback();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprotected getScrollElement(): HTMLElement {\r\n\t\treturn this.parentScroll instanceof Window ? document.scrollingElement || document.documentElement || document.body : this.parentScroll || this.element.nativeElement;\r\n\t}\r\n\r\n\tprotected addScrollEventHandlers(): void {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tthis.removeScrollEventHandlers();\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen('window', 'scroll', this.onScroll);\r\n\t\t\t\tthis.disposeResizeHandler = this.renderer.listen('window', 'resize', this.onScroll);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.disposeScrollHandler = this.renderer.listen(scrollElement, 'scroll', this.onScroll);\r\n\t\t\t\tif (this._checkResizeInterval > 0) {\r\n\t\t\t\t\tthis.checkScrollElementResizedTimer = <any>setInterval(() => { this.checkScrollElementResized(); }, this._checkResizeInterval);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected removeScrollEventHandlers(): void {\r\n\t\tif (this.checkScrollElementResizedTimer) {\r\n\t\t\tclearInterval(this.checkScrollElementResizedTimer);\r\n\t\t}\r\n\r\n\t\tif (this.disposeScrollHandler) {\r\n\t\t\tthis.disposeScrollHandler();\r\n\t\t\tthis.disposeScrollHandler = undefined;\r\n\t\t}\r\n\r\n\t\tif (this.disposeResizeHandler) {\r\n\t\t\tthis.disposeResizeHandler();\r\n\t\t\tthis.disposeResizeHandler = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getElementsOffset(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet offset = 0;\r\n\r\n\t\tif (this.containerElementRef && this.containerElementRef.nativeElement) {\r\n\t\t\toffset += this.containerElementRef.nativeElement[this._offsetType];\r\n\t\t}\r\n\r\n\t\tif (this.parentScroll) {\r\n\t\t\tconst scrollElement = this.getScrollElement();\r\n\t\t\tconst elementClientRect = this.getElementSize(this.element.nativeElement);\r\n\t\t\tconst scrollClientRect = this.getElementSize(scrollElement);\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\toffset += elementClientRect.left - scrollClientRect.left;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\toffset += elementClientRect.top - scrollClientRect.top;\r\n\t\t\t}\r\n\r\n\t\t\tif (!(this.parentScroll instanceof Window)) {\r\n\t\t\t\toffset += scrollElement[this._scrollType];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn offset;\r\n\t}\r\n\r\n\tprotected countItemsPerWrapGroup(): number {\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\treturn Math.round(this.horizontal ? this.ssrViewportHeight / this.ssrChildHeight : this.ssrViewportWidth / this.ssrChildWidth);\r\n\t\t}\r\n\r\n\t\tconst propertyName = this.horizontal ? 'offsetLeft' : 'offsetTop';\r\n\t\tconst children = this.getContent().children;\r\n\r\n\t\tconst childrenLength = children ? children.length : 0;\r\n\t\tif (childrenLength === 0) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\r\n\t\tconst firstOffset = children[0][propertyName];\r\n\t\tlet result = 1;\r\n\t\twhile (result < childrenLength && firstOffset === children[result][propertyName]) {\r\n\t\t\t++result;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected getScrollStartPosition(): number {\r\n\t\tlet windowScrollValue = undefined;\r\n\t\tif (this.parentScroll instanceof Window) {\r\n\t\t\twindowScrollValue = window[this._pageOffsetType];\r\n\t\t}\r\n\r\n\t\treturn windowScrollValue || this.getScrollElement()[this._scrollType] || 0;\r\n\t}\r\n\r\n\tprotected minMeasuredChildWidth: number;\r\n\tprotected minMeasuredChildHeight: number;\r\n\r\n\tprotected wrapGroupDimensions: WrapGroupDimensions;\r\n\r\n\tprotected resetWrapGroupDimensions(): void {\r\n\t\tconst oldWrapGroupDimensions = this.wrapGroupDimensions;\r\n\t\tthis.invalidateAllCachedMeasurements();\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes || !oldWrapGroupDimensions || oldWrapGroupDimensions.numberOfKnownWrapGroupChildSizes === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst itemsPerWrapGroup: number = this.countItemsPerWrapGroup();\r\n\t\tfor (let wrapGroupIndex = 0; wrapGroupIndex < oldWrapGroupDimensions.maxChildSizePerWrapGroup.length; ++wrapGroupIndex) {\r\n\t\t\tconst oldWrapGroupDimension: WrapGroupDimension = oldWrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\tif (!oldWrapGroupDimension || !oldWrapGroupDimension.items || !oldWrapGroupDimension.items.length) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (oldWrapGroupDimension.items.length !== itemsPerWrapGroup) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet itemsChanged = false;\r\n\t\t\tconst arrayStartIndex = itemsPerWrapGroup * wrapGroupIndex;\r\n\t\t\tfor (let i = 0; i < itemsPerWrapGroup; ++i) {\r\n\t\t\t\tif (!this.compareItems(oldWrapGroupDimension.items[i], this.items[arrayStartIndex + i])) {\r\n\t\t\t\t\titemsChanged = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!itemsChanged) {\r\n\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += oldWrapGroupDimension.childWidth || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += oldWrapGroupDimension.childHeight || 0;\r\n\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = oldWrapGroupDimension;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected calculateDimensions(): IDimensions {\r\n\t\tconst scrollElement = this.getScrollElement();\r\n\r\n\t\tconst maxCalculatedScrollBarSize = 25; // Note: Formula to auto-calculate doesn't work for ParentScroll, so we default to this if not set by consuming application\r\n\t\tthis.calculatedScrollbarHeight = Math.max(Math.min(scrollElement.offsetHeight - scrollElement.clientHeight, maxCalculatedScrollBarSize), this.calculatedScrollbarHeight);\r\n\t\tthis.calculatedScrollbarWidth = Math.max(Math.min(scrollElement.offsetWidth - scrollElement.clientWidth, maxCalculatedScrollBarSize), this.calculatedScrollbarWidth);\r\n\r\n\t\tlet viewportWidth = scrollElement.offsetWidth - (this.scrollbarWidth || this.calculatedScrollbarWidth || (this.horizontal ? 0 : maxCalculatedScrollBarSize));\r\n\t\tlet viewportHeight = scrollElement.offsetHeight - (this.scrollbarHeight || this.calculatedScrollbarHeight || (this.horizontal ? maxCalculatedScrollBarSize : 0));\r\n\r\n\t\tconst content = this.getContent();\r\n\r\n\t\tconst itemsPerWrapGroup = this.countItemsPerWrapGroup();\r\n\t\tlet wrapGroupsPerPage;\r\n\r\n\t\tlet defaultChildWidth;\r\n\t\tlet defaultChildHeight;\r\n\r\n\t\tif (this.isAngularUniversalSSR) {\r\n\t\t\tviewportWidth = this.ssrViewportWidth;\r\n\t\t\tviewportHeight = this.ssrViewportHeight;\r\n\t\t\tdefaultChildWidth = this.ssrChildWidth;\r\n\t\t\tdefaultChildHeight = this.ssrChildHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t}\r\n\t\telse if (!this.enableUnequalChildrenSizes) {\r\n\t\t\tif (content.children.length > 0) {\r\n\t\t\t\tif (!this.childWidth || !this.childHeight) {\r\n\t\t\t\t\tif (!this.minMeasuredChildWidth && viewportWidth > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildWidth = viewportWidth;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!this.minMeasuredChildHeight && viewportHeight > 0) {\r\n\t\t\t\t\t\tthis.minMeasuredChildHeight = viewportHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst child = content.children[0];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\t\t\t\tthis.minMeasuredChildWidth = Math.min(this.minMeasuredChildWidth, clientRect.width);\r\n\t\t\t\tthis.minMeasuredChildHeight = Math.min(this.minMeasuredChildHeight, clientRect.height);\r\n\r\n\t\t\t\t// Added for getting the child height (for card view, return all the clientRect object).\r\n\t\t\t\t// if (this._lastChildRect === null ||\r\n\t\t\t\t// \t(clientRect?.height !== 0 && (\r\n\t\t\t\t// \t\tMath.round(this._lastChildRect?.height) !== Math.round(clientRect?.height) || \r\n\t\t\t\t// \t\tMath.round(this._lastChildRect?.width) !== Math.round(clientRect?.width))\r\n\t\t\t\t// \t)) {\r\n\t\t\t\t// \tthis._lastChildRect = clientRect;\r\n\t\t\t\t// \tthis.vsChildRectChange.emit(clientRect);\r\n\t\t\t\t// }\r\n\t\t\t}\r\n\r\n\t\t\tdefaultChildWidth = this.childWidth || this.minMeasuredChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || this.minMeasuredChildHeight || viewportHeight;\r\n\t\t\tconst itemsPerRow = Math.max(Math.ceil(viewportWidth / defaultChildWidth), 1);\r\n\t\t\tconst itemsPerCol = Math.max(Math.ceil(viewportHeight / defaultChildHeight), 1);\r\n\t\t\twrapGroupsPerPage = this.horizontal ? itemsPerRow : itemsPerCol;\r\n\t\t} else {\r\n\t\t\tlet scrollOffset = scrollElement[this._scrollType] - (this.previousViewPort ? this.previousViewPort.padding : 0);\r\n\r\n\t\t\tlet arrayStartIndex = this.previousViewPort.startIndexWithBuffer || 0;\r\n\t\t\tlet wrapGroupIndex = Math.ceil(arrayStartIndex / itemsPerWrapGroup);\r\n\r\n\t\t\tlet maxWidthForWrapGroup = 0;\r\n\t\t\tlet maxHeightForWrapGroup = 0;\r\n\t\t\tlet sumOfVisibleMaxWidths = 0;\r\n\t\t\tlet sumOfVisibleMaxHeights = 0;\r\n\t\t\twrapGroupsPerPage = 0;\r\n\r\n\t\t\tfor (let i = 0; i < content.children.length; ++i) {\r\n\t\t\t\t++arrayStartIndex;\r\n\t\t\t\tconst child = content.children[i];\r\n\t\t\t\tconst clientRect = this.getElementSize(child);\r\n\r\n\t\t\t\tmaxWidthForWrapGroup = Math.max(maxWidthForWrapGroup, clientRect.width);\r\n\t\t\t\tmaxHeightForWrapGroup = Math.max(maxHeightForWrapGroup, clientRect.height);\r\n\r\n\t\t\t\tif (arrayStartIndex % itemsPerWrapGroup === 0) {\r\n\t\t\t\t\tconst oldValue = this.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex];\r\n\t\t\t\t\tif (oldValue) {\r\n\t\t\t\t\t\t--this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths -= oldValue.childWidth || 0;\r\n\t\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights -= oldValue.childHeight || 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\t\t\tconst items = this.items.slice(arrayStartIndex - itemsPerWrapGroup, arrayStartIndex);\r\n\t\t\t\t\tthis.wrapGroupDimensions.maxChildSizePerWrapGroup[wrapGroupIndex] = {\r\n\t\t\t\t\t\tchildWidth: maxWidthForWrapGroup,\r\n\t\t\t\t\t\tchildHeight: maxHeightForWrapGroup,\r\n\t\t\t\t\t\titems: items\r\n\t\t\t\t\t};\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths += maxWidthForWrapGroup;\r\n\t\t\t\t\tthis.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights += maxHeightForWrapGroup;\r\n\r\n\t\t\t\t\tif (this.horizontal) {\r\n\t\t\t\t\t\tlet maxVisibleWidthForWrapGroup = Math.min(maxWidthForWrapGroup, Math.max(viewportWidth - sumOfVisibleMaxWidths, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleWidthForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleWidthForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxWidths += maxVisibleWidthForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleWidthForWrapGroup > 0 && viewportWidth >= sumOfVisibleMaxWidths) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tlet maxVisibleHeightForWrapGroup = Math.min(maxHeightForWrapGroup, Math.max(viewportHeight - sumOfVisibleMaxHeights, 0));\r\n\t\t\t\t\t\tif (scrollOffset > 0) {\r\n\t\t\t\t\t\t\tconst scrollOffsetToRemove = Math.min(scrollOffset, maxVisibleHeightForWrapGroup);\r\n\t\t\t\t\t\t\tmaxVisibleHeightForWrapGroup -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t\tscrollOffset -= scrollOffsetToRemove;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsumOfVisibleMaxHeights += maxVisibleHeightForWrapGroup;\r\n\t\t\t\t\t\tif (maxVisibleHeightForWrapGroup > 0 && viewportHeight >= sumOfVisibleMaxHeights) {\r\n\t\t\t\t\t\t\t++wrapGroupsPerPage;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t++wrapGroupIndex;\r\n\r\n\t\t\t\t\tmaxWidthForWrapGroup = 0;\r\n\t\t\t\t\tmaxHeightForWrapGroup = 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst averageChildWidth = this.wrapGroupDimensions.sumOfKnownWrapGroupChildWidths / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tconst averageChildHeight = this.wrapGroupDimensions.sumOfKnownWrapGroupChildHeights / this.wrapGroupDimensions.numberOfKnownWrapGroupChildSizes;\r\n\t\t\tdefaultChildWidth = this.childWidth || averageChildWidth || viewportWidth;\r\n\t\t\tdefaultChildHeight = this.childHeight || averageChildHeight || viewportHeight;\r\n\r\n\t\t\tif (this.horizontal) {\r\n\t\t\t\tif (viewportWidth > sumOfVisibleMaxWidths) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportWidth - sumOfVisibleMaxWidths) / defaultChildWidth);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (viewportHeight > sumOfVisibleMaxHeights) {\r\n\t\t\t\t\twrapGroupsPerPage += Math.ceil((viewportHeight - sumOfVisibleMaxHeights) / defaultChildHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst itemCount = this.items.length;\r\n\t\tconst itemsPerPage = itemsPerWrapGroup * wrapGroupsPerPage;\r\n\t\tconst pageCount_fractional = itemCount / itemsPerPage;\r\n\t\tconst numberOfWrapGroups = Math.ceil(itemCount / itemsPerWrapGroup);\r\n\r\n\t\tlet scrollLength = 0;\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = this.horizontal ? defaultChildWidth : defaultChildHeight;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tlet numUnknownChildSizes = 0;\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\tscrollLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tscrollLength += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\t\t} else {\r\n\t\t\tscrollLength = numberOfWrapGroups * defaultScrollLengthPerWrapGroup;\r\n\t\t}\r\n\r\n\t\tif (this.headerElementRef) {\r\n\t\t\tscrollLength += this.headerElementRef.nativeElement.clientHeight;\r\n\t\t}\r\n\r\n\t\tconst viewportLength = this.horizontal ? viewportWidth : viewportHeight;\r\n\t\tconst maxScrollPosition = Math.max(scrollLength - viewportLength, 0);\r\n\r\n\t\treturn {\r\n\t\t\tchildHeight: defaultChildHeight,\r\n\t\t\tchildWidth: defaultChildWidth,\r\n\t\t\titemCount: itemCount,\r\n\t\t\titemsPerPage: itemsPerPage,\r\n\t\t\titemsPerWrapGroup: itemsPerWrapGroup,\r\n\t\t\tmaxScrollPosition: maxScrollPosition,\r\n\t\t\tpageCount_fractional: pageCount_fractional,\r\n\t\t\tscrollLength: scrollLength,\r\n\t\t\tviewportLength: viewportLength,\r\n\t\t\twrapGroupsPerPage: wrapGroupsPerPage,\r\n\t\t};\r\n\t}\r\n\r\n\tprotected cachedPageSize = 0;\r\n\tprotected previousScrollNumberElements = 0;\r\n\r\n\tprotected calculatePadding(arrayStartIndexWithBuffer: number, dimensions: IDimensions): number {\r\n\t\tif (dimensions.itemCount === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\tconst startingWrapGroupIndex = Math.floor(arrayStartIndexWithBuffer / dimensions.itemsPerWrapGroup) || 0;\r\n\r\n\t\tif (!this.enableUnequalChildrenSizes) {\r\n\t\t\treturn defaultScrollLengthPerWrapGroup * startingWrapGroupIndex;\r\n\t\t}\r\n\r\n\t\tlet numUnknownChildSizes = 0;\r\n\t\tlet result = 0;\r\n\t\tfor (let i = 0; i < startingWrapGroupIndex; ++i) {\r\n\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\tif (childSize) {\r\n\t\t\t\tresult += childSize;\r\n\t\t\t} else {\r\n\t\t\t\t++numUnknownChildSizes;\r\n\t\t\t}\r\n\t\t}\r\n\t\tresult += Math.round(numUnknownChildSizes * defaultScrollLengthPerWrapGroup);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected calculatePageInfo(scrollPosition: number, dimensions: IDimensions): IPageInfo {\r\n\t\tlet scrollPercentage = 0;\r\n\t\tif (this.enableUnequalChildrenSizes) {\r\n\t\t\tconst numberOfWrapGroups = Math.ceil(dimensions.itemCount / dimensions.itemsPerWrapGroup);\r\n\t\t\tlet totalScrolledLength = 0;\r\n\t\t\tconst defaultScrollLengthPerWrapGroup = dimensions[this._childScrollDim];\r\n\t\t\tfor (let i = 0; i < numberOfWrapGroups; ++i) {\r\n\t\t\t\tconst childSize = this.wrapGroupDimensions.maxChildSizePerWrapGroup[i] && this.wrapGroupDimensions.maxChildSizePerWrapGroup[i][this._childScrollDim];\r\n\t\t\t\tif (childSize) {\r\n\t\t\t\t\ttotalScrolledLength += childSize;\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttotalScrolledLength += defaultScrollLengthPerWrapGroup;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scrollPosition < totalScrolledLength) {\r\n\t\t\t\t\tscrollPercentage = i / numberOfWrapGroups;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tscrollPercentage = scrollPosition / dimensions.scrollLength;\r\n\t\t}\r\n\r\n\t\tconst startingArrayIndex_fractional = Math.min(Math.max(scrollPercentage * dimensions.pageCount_fractional, 0), dimensions.pageCount_fractional) * dimensions.itemsPerPage;\r\n\r\n\t\tconst maxStart = dimensions.itemCount - dimensions.itemsPerPage - 1;\r\n\t\tlet arrayStartIndex = Math.min(Math.floor(startingArrayIndex_fractional), maxStart);\r\n\t\tarrayStartIndex -= arrayStartIndex % dimensions.itemsPerWrapGroup; // round down to start of wrapGroup\r\n\r\n\t\tif (this.stripedTable) {\r\n\t\t\tconst bufferBoundary = 2 * dimensions.itemsPerWrapGroup;\r\n\t\t\tif (arrayStartIndex % bufferBoundary !== 0) {\r\n\t\t\t\tarrayStartIndex = Math.max(arrayStartIndex - arrayStartIndex % bufferBoundary, 0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet arrayEndIndex = Math.ceil(startingArrayIndex_fractional) + dimensions.itemsPerPage - 1;\r\n\t\tconst endIndexWithinWrapGroup = (arrayEndIndex + 1) % dimensions.itemsPerWrapGroup;\r\n\t\tif (endIndexWithinWrapGroup > 0) {\r\n\t\t\tarrayEndIndex += dimensions.itemsPerWrapGroup - endIndexWithinWrapGroup; // round up to end of wrapGroup\r\n\t\t}\r\n\r\n\t\tif (isNaN(arrayStartIndex)) {\r\n\t\t\tarrayStartIndex = 0;\r\n\t\t}\r\n\t\tif (isNaN(arrayEndIndex)) {\r\n\t\t\tarrayEndIndex = 0;\r\n\t\t}\r\n\r\n\t\tarrayStartIndex = Math.min(Math.max(arrayStartIndex, 0), dimensions.itemCount - 1);\r\n\t\tarrayEndIndex = Math.min(Math.max(arrayEndIndex, 0), dimensions.itemCount - 1);\r\n\r\n\t\tconst bufferSize = this.bufferAmount * dimensions.itemsPerWrapGroup;\r\n\t\tconst startIndexWithBuffer = Math.min(Math.max(arrayStartIndex - bufferSize, 0), dimensions.itemCount - 1);\r\n\t\tconst endIndexWithBuffer = Math.min(Math.max(arrayEndIndex + bufferSize, 0), dimensions.itemCount - 1);\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: arrayStartIndex,\r\n\t\t\tendIndex: arrayEndIndex,\r\n\t\t\tstartIndexWithBuffer: startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: endIndexWithBuffer,\r\n\t\t\tscrollStartPosition: scrollPosition,\r\n\t\t\tscrollEndPosition: scrollPosition + dimensions.viewportLength,\r\n\t\t\tmaxScrollPosition: dimensions.maxScrollPosition\r\n\t\t};\r\n\t}\r\n\r\n\tprotected calculateViewport(): IViewport {\r\n\t\tconst dimensions = this.calculateDimensions();\r\n\t\tconst offset = this.getElementsOffset();\r\n\r\n\t\tlet scrollStartPosition = this.getScrollStartPosition();\r\n\t\tif (scrollStartPosition > (dimensions.scrollLength + offset) && !(this.parentScroll instanceof Window)) {\r\n\t\t\tscrollStartPosition = dimensions.scrollLength;\r\n\t\t} else {\r\n\t\t\tscrollStartPosition -= offset;\r\n\t\t}\r\n\t\tscrollStartPosition = Math.max(0, scrollStartPosition);\r\n\r\n\t\tconst pageInfo = this.calculatePageInfo(scrollStartPosition, dimensions);\r\n\t\tconst newPadding = this.calculatePadding(pageInfo.startIndexWithBuffer, dimensions);\r\n\t\tconst newScrollLength = dimensions.scrollLength;\r\n\r\n\t\treturn {\r\n\t\t\tstartIndex: pageInfo.startIndex,\r\n\t\t\tendIndex: pageInfo.endIndex,\r\n\t\t\tstartIndexWithBuffer: pageInfo.startIndexWithBuffer,\r\n\t\t\tendIndexWithBuffer: pageInfo.endIndexWithBuffer,\r\n\t\t\tpadding: Math.round(newPadding),\r\n\t\t\tscrollLength: Math.round(newScrollLength),\r\n\t\t\tscrollStartPosition: pageInfo.scrollStartPosition,\r\n\t\t\tscrollEndPosition: pageInfo.scrollEndPosition,\r\n\t\t\tmaxScrollPosition: pageInfo.maxScrollPosition\r\n\t\t};\r\n\t}\r\n}\r\n\r\n@NgModule({\r\n\texports: [VirtualScrollerComponent],\r\n\tdeclarations: [VirtualScrollerComponent],\r\n\timports: [CommonModule],\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: 'virtual-scroller-default-options',\r\n\t\t\tuseFactory: VIRTUAL_SCROLLER_DEFAULT_OPTIONS_FACTORY\r\n\t\t}\r\n\t]\r\n})\r\nexport class VirtualScrollerModule { }","import { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\n\nexport type PepListSelectionType =\n | 'none'\n | 'single'\n | 'multi';\n\nexport type PepListPagerType = 'pages' | 'scroll';\n\nexport type PepListViewType = '' | 'cards' | 'lines' | 'table'; // | 'map';\n\nexport type PepListCardSizeType = 'sm' | 'md';\n\nexport type PepListTableViewType = 'compact' | 'regular';\n\nexport interface IPepListItemClickEvent {\n source: ObjectsDataRow;\n viewType: PepListViewType;\n}\n\nexport class PepSelectionData {\n selectionType: number;\n rows: Array<any>;\n rowTypes: Array<any>;\n}\n\nexport interface IPepListLoadItemsEvent {\n fromIndex: number;\n toIndex: number;\n // updateItemsFunc: () => void; //() => any; \n}\n\nexport interface IPepListLoadPageEvent {\n pageIndex: number;\n pageSize: number;\n // updatePageFunc: () => void; //() => any; \n}\n\nexport interface IPepListStartIndexChangeEvent {\n startIndex: number;\n}\n\nexport const DEFAULT_PAGE_SIZE = 50;\n\nexport interface IPepListSortingData {\n sortBy: string;\n isAsc: boolean;\n}\n\nexport type IPepListSortingChangeEvent = IPepListSortingData\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injectable,\n Input,\n Output,\n} from '@angular/core';\nimport { PepLayoutService, } from '@pepperi-addons/ngx-lib';\nimport { DEFAULT_PAGE_SIZE } from './list.model';\n\nexport class IPepListPagerChangeEvent {\n pageIndex: number;\n previousPageIndex: number;\n pageSize: number;\n length: number;\n}\n\n@Component({\n selector: 'pep-list-pager',\n templateUrl: './list-pager.component.html',\n styleUrls: ['./list-pager.component.scss'],\n})\n@Injectable()\nexport class PepListPagerComponent {\n @Input() disabled = false;\n private _pageIndex = 0;\n @Input()\n set pageIndex(value: number) {\n this.setPageIndex(value);\n }\n get pageIndex(): number {\n return this._pageIndex;\n }\n\n @Input() length = 0;\n @Input() pageSize = DEFAULT_PAGE_SIZE;\n\n @Output()\n pagerChange: EventEmitter<IPepListPagerChangeEvent> = new EventEmitter<IPepListPagerChangeEvent>();\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n public layoutService: PepLayoutService) { }\n\n nextPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex + 1);\n }\n\n previousPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(this.pageIndex - 1);\n }\n\n firstPage(): void {\n if (!this.hasPreviousPage()) {\n return;\n }\n\n this.setPageIndex(0);\n }\n\n lastPage(): void {\n if (!this.hasNextPage()) {\n return;\n }\n\n this.setPageIndex(this.getNumberOfPages() - 1);\n }\n\n hasPreviousPage(): boolean {\n return this.pageIndex >= 1 && this.pageSize != 0;\n }\n\n hasNextPage(): boolean {\n const maxPageIndex = this.getNumberOfPages() - 1;\n return this.pageIndex < maxPageIndex && this.pageSize != 0;\n }\n\n getNumberOfPages(): number {\n if (!this.pageSize) {\n return 0;\n }\n\n return Math.ceil(this.length / this.pageSize);\n }\n\n /** Checks whether the buttons for going forwards should be disabled. */\n _nextButtonsDisabled() {\n return this.disabled || !this.hasNextPage();\n }\n\n /** Checks whether the buttons for going backwards should be disabled. */\n _previousButtonsDisabled() {\n return this.disabled || !this.hasPreviousPage();\n }\n\n onValueChange(value: string) {\n const pageNumber = coerceNumberProperty(value);\n this.setPageIndex(pageNumber - 1); // - 1 to convert number into index.\n }\n\n private setPageIndex(newIndex: number) {\n const previousPageIndex = this.pageIndex;\n\n if (newIndex >= 0 && newIndex < this.getNumberOfPages()) {\n this._pageIndex = newIndex;\n } else {\n this._pageIndex = 0;\n }\n\n if (this.pageIndex !== previousPageIndex) {\n this._emitChangeEvent(previousPageIndex);\n }\n }\n\n /** Emits an event notifying that a change of the paginator's properties has been triggered. */\n private _emitChangeEvent(previousPageIndex: number) {\n this.pagerChange.emit({\n previousPageIndex,\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n length: this.length,\n });\n }\n}\n","<div class=\"pager-container body-sm\">\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_PAGE' | translate }}</span>\n <pep-textbox pepAutoWidth class=\"page-index pep-spacing-element\" [key]=\"'pageIndex'\" [type]=\"'int'\"\n [disabled]=\"disabled\" [xAlignment]=\"'center'\" [renderTitle]=\"false\" [renderError]=\"false\" [renderSymbol]=\"false\"\n [value]=\"pageIndex + 1\" [minValue]=\"1\" [maxValue]=\"this.getNumberOfPages()\"\n [maxFieldCharacters]=\"6\" [mandatory]=\"true\" (valueChange)=\"onValueChange($event)\">\n </pep-textbox>\n <span class=\"pep-spacing-element\">{{ 'LIST.PAGER_OUT_OF' | translate }}</span>\n <span class=\"pep-spacing-element\">{{ getNumberOfPages() }}</span>\n <button mat-button [disabled]=\"disabled || _previousButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _previousButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"previousPage()\"\n [title]=\"('LIST.PAGER_PREVIOUS' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_right' : 'arrow_left'\"></pep-icon>\n </mat-icon>\n </button>\n <button mat-button [disabled]=\"disabled || _nextButtonsDisabled()\"\n [ngClass]=\"{ disabled: disabled || _nextButtonsDisabled() }\"\n class=\"pep-button icon-button pep-spacing-element sm weak\" pepRtlDirection pepMenuBlur (click)=\"nextPage()\"\n [title]=\"('LIST.PAGER_NEXT' | translate)\">\n <mat-icon>\n <pep-icon [name]=\"layoutService.isRtl() ? 'arrow_left' : 'arrow_right'\"></pep-icon>\n </mat-icon>\n </button>\n</div>","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n Renderer2,\n ViewChild,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n OnChanges,\n NgZone,\n} from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport {\n PepLayoutService,\n PepScreenSizeType,\n PepSessionService,\n UIControl,\n UIControlField,\n FIELD_TYPE,\n ObjectsDataRow,\n} from '@pepperi-addons/ngx-lib';\nimport {\n IPepFormFieldValueChangeEvent,\n IPepFormFieldClickEvent,\n} from '@pepperi-addons/ngx-lib/form';\n\nimport { VirtualScrollerComponent, IPageInfo } from './virtual-scroller';\n\nimport {\n IPepListLoadItemsEvent,\n IPepListSortingChangeEvent,\n IPepListItemClickEvent,\n PepListSelectionType,\n PepListViewType,\n PepSelectionData,\n PepListPagerType,\n IPepListLoadPageEvent,\n DEFAULT_PAGE_SIZE,\n IPepListStartIndexChangeEvent,\n PepListCardSizeType,\n PepListTableViewType,\n IPepListSortingData,\n} from './list.model';\nimport {\n IPepListPagerChangeEvent,\n PepListPagerComponent,\n} from './list-pager.component';\n\nimport * as tween from '@tweenjs/tween.js';\n\n@Component({\n selector: 'pep-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n host: {\n '(window:resize)': 'onWinResize($event)',\n },\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PepListComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('listContainerResizable', { read: ElementRef }) private listContainerResizableElementRef: ElementRef;\n\n static TOP_ITEMS_DEFAULT = 100;\n static TOP_ITEMS_TABLE = 100;\n static TOP_ITEMS_THUMBNAILS = 100;\n static TOP_ITEMS_ARRAY = 2500;\n\n static SELECTED_ITEMS_STATE_KEY = 'SelectedItems';\n static UN_SELECTED_ITEMS_STATE_KEY = 'UnSelectedItems';\n static ALL_SELECTED_STATE_KEY = 'AllSelected';\n static SORT_BY_STATE_KEY = 'SortBy';\n static ASCENDING_STATE_KEY = 'IsAscending';\n\n static MINIMUM_COLUMN_WIDTH = 72;\n\n @Input() \n set sorting(value: IPepListSortingData) {\n this.sortBy = value?.sortBy || '';\n this.isAsc = value?.sortBy.length > 0 ? value.isAsc : this.isAsc;\n }\n get sorting(): IPepListSortingData {\n return {\n sortBy: this.sortBy,\n isAsc: this.isAsc\n };\n }\n \n @Input() cacheSize = -1;\n @Input() noDataFoundMsg: string = null;\n @Input() selectionTypeForActions: PepListSelectionType = 'multi';\n @Input() showCardSelection = false;\n @Input() hideAllSelectionInMulti = false;\n\n @Input() cardSize: PepListCardSizeType = 'md';\n @Input() tableViewType: PepListTableViewType = 'regular';\n \n private _viewType: PepListViewType = '';\n @Input()\n set viewType(value: PepListViewType) {\n this._viewType = value;\n this.isTable = value === 'table';\n }\n get viewType(): PepListViewType {\n return this._viewType;\n }\n\n @Input() firstFieldAsLink = false;\n @Input() supportSorting = true;\n @Input() supportSortingFields: string[] = undefined;\n @Input() supportResizing = true;\n\n private _parentScroll: Element | Window = null;\n @Input()\n set parentScroll(value: Element | Window) {\n this._parentScroll = value;\n }\n get parentScroll(): Element | Window {\n return this._parentScroll;\n }\n\n @Input() disabled = false;\n\n private _lockEvents = false;\n @Input()\n set lockEvents(value: boolean) {\n this._lockEvents = value;\n\n if (this._lockEvents) {\n this.renderer.addClass(this.hostElement.nativeElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement, 'lock-events');\n }\n }\n get lockEvents(): boolean {\n return this._lockEvents;\n }\n\n @Input() lockItemInnerEvents = false;\n @Input() printMode = false;\n @Input() isReport = false;\n @Input() zebraStripes = false;\n @Input() totalsRow = [];\n @Input() pagerType: PepListPagerType = 'scroll';\n @Input() pageSize: number = DEFAULT_PAGE_SIZE;\n @Input() pageIndex = 0;\n // @Input() startIndex = 0;\n\n @Input() bufferAmount = 0;\n @Input() scrollAnimationTime = 500;\n @Input() scrollDebounceTime = 0;\n @Input() scrollThrottlingTime = 0;\n @Input() SEPARATOR = ',';\n private _useAsWebComponent = false;\n @Input()\n set useAsWebComponent(value: boolean) {\n this._useAsWebComponent = value;\n if (value) {\n this.exportFunctionsOnHostElement();\n }\n }\n get useAsWebComponent(): boolean {\n return this._useAsWebComponent;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListItemClickEvent> = new EventEmitter<IPepListItemClickEvent>();\n\n @Output()\n fieldClick: EventEmitter<IPepFormFieldClickEvent> = new EventEmitter<IPepFormFieldClickEvent>();\n\n @Output()\n valueChange: EventEmitter<IPepFormFieldValueChangeEvent> = new EventEmitter<IPepFormFieldValueChangeEvent>();\n\n @Output()\n sortingChange: EventEmitter<IPepListSortingChangeEvent> = new EventEmitter<IPepListSortingChangeEvent>();\n\n @Output()\n selectedItemsChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output()\n selectedItemChange: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n selectAllClick: EventEmitter<any> = new EventEmitter<any>();\n\n // @Output()\n // singleActionClick: EventEmitter<any> = new EventEmitter<any>();\n\n @Output()\n listLoad: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n loadItems: EventEmitter<IPepListLoadItemsEvent> = new EventEmitter<IPepListLoadItemsEvent>();\n\n @Output()\n loadPage: EventEmitter<IPepListLoadPageEvent> = new EventEmitter<IPepListLoadPageEvent>();\n\n @Output()\n startIndexChange: EventEmitter<IPepListStartIndexChangeEvent> = new EventEmitter<IPepListStartIndexChangeEvent>();\n\n @ViewChild(VirtualScrollerComponent) private virtualScroller: VirtualScrollerComponent;\n @ViewChild('selectAllCB') selectAllCB: any;\n\n private _layout: UIControl = null;\n get layout(): UIControl {\n return this._layout;\n }\n\n totalRows = -1;\n isTable = false;\n private hasColumnWidthOfTypePercentage = true;\n\n private _items: Array<ObjectsDataRow> = null;\n get items(): Array<ObjectsDataRow> {\n return this._items;\n }\n\n private itemsCounter = 0;\n\n currentPageItems: Array<ObjectsDataRow>;\n\n\n isAllSelected = false;\n selectedItems = new Map<string, string>();\n unSelectedItems = new Map<string, string>();\n\n private currentTween: any;\n\n selectedItemId = '';\n hoveredItemId = '';\n\n private containerWidth = 0;\n private tableScrollWidth = 0;\n\n private _loadingItemsFromApi = false;\n get loadingItemsFromApi() {\n return this._loadingItemsFromApi;\n }\n\n screenSize: PepScreenSizeType;\n deviceHasMouse = false;\n\n // For resize\n pressedColumn = '';\n pressedColumnIndex = -1;\n startX = 0;\n startWidth = 0;\n tableStartWidth = 0;\n \n private lastColumnsWidth: Array<{ columnAPIName: string, calcColumnWidth: number, calcTitleColumnWidthString: string, calcColumnWidthString: string }> = [];\n\n // For sorting\n isAsc = false;\n sortBy = '';\n isUserSelected = false;\n checkForChanges: any = null;\n calculatedObjectHeight = 'auto';\n\n constructor(\n private hostElement: ElementRef,\n private layoutService: PepLayoutService,\n private sessionService: PepSessionService,\n private cd: ChangeDetectorRef,\n private renderer: Renderer2,\n private zone: NgZone\n ) {\n // this.nativeWindow = window;\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n this.deviceHasMouse = deviceHasMouse;\n });\n }\n\n ngOnInit(): void {\n this.containerWidth = 0;\n this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngOnChanges(changes): void {\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n }\n\n ngOnDestroy(): void {\n // if (this.valueChange) {\n // this.valueChange.unsubscribe();\n // }\n\n // if (this.loadItems) {\n // this.loadItems.unsubscribe();\n // }\n\n // if (this.loadPage) {\n // this.loadPage.unsubscribe();\n // }\n\n // if (this.sortingChange) {\n // this.sortingChange.unsubscribe();\n // }\n\n // if (this.fieldClick) {\n // this.fieldClick.unsubscribe();\n // }\n\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n\n // if (this.listLoad) {\n // this.listLoad.unsubscribe();\n // }\n\n this.saveSortingToSession();\n }\n\n getCachedItemsNumber() {\n return this.cacheSize >= 0 ? this.cacheSize : PepListComponent.TOP_ITEMS_ARRAY;\n }\n\n private getScrollingElement() {\n return this.parentScroll ? this.parentScroll : this.virtualScroller?.contentElementRef.nativeElement.parentElement;\n }\n\n private scrollToTop(animate = true) {\n const scrollingElement = this.getScrollingElement();\n if (scrollingElement) {\n const scrollTop = 0;\n\n // totally disable animate\n if (!animate || this.scrollAnimationTime === 0) {\n if (scrollingElement instanceof Window) {\n window.scrollTo(0, scrollTop);\n } else {\n scrollingElement.scrollTop = scrollTop;\n }\n } else {\n let animationRequest;\n const isWindow = scrollingElement instanceof Window;\n const currentScrollTop =\n scrollingElement instanceof Window\n ? window.pageYOffset\n : scrollingElement.scrollTop;\n\n if (this.currentTween !== undefined) {\n this.currentTween.stop();\n }\n this.currentTween = new tween.Tween({ scrollTop: currentScrollTop })\n .to({ scrollTop }, this.scrollAnimationTime)\n .easing(tween.Easing.Quadratic.Out)\n .onUpdate((data) => {\n if (isNaN(data.scrollTop)) {\n return;\n }\n\n if (isWindow) {\n window.scrollTo(0, data.scrollTop);\n } else {\n this.renderer.setProperty(\n scrollingElement,\n 'scrollTop',\n data.scrollTop\n );\n }\n })\n .onStop(() => {\n cancelAnimationFrame(animationRequest);\n })\n .start();\n\n const animate = (time?) => {\n this.currentTween.update(time);\n if (this.currentTween._object.scrollTop !== scrollTop) {\n this.zone.runOutsideAngular(() => {\n animationRequest = requestAnimationFrame(animate);\n });\n }\n };\n\n animate();\n }\n }\n }\n\n private getSelectionCheckBoxWidth(): number {\n return this.selectionTypeForActions === 'multi' ? 44 : (this.selectionTypeForActions === 'single' ? 44 : 0);\n }\n\n private setContainerWidth(): void {\n if (!this.hostElement.nativeElement.parentElement) {\n return;\n }\n\n const rowHeight = 40; // the table row height (2.5rem * 16font-size).\n const style = getComputedStyle(\n this.hostElement.nativeElement.parentElement\n );\n // The container-fluid class padding left + right + border\n const containerFluidSpacing =\n parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n\n const parentContainer =\n this.hostElement.nativeElement.parentElement.parentElement > 0\n ? this.hostElement.nativeElement.parentElement.parentElement\n : this.hostElement.nativeElement.parentElement;\n\n // Calculate if vertical scroll should appear, if so set the scroll width. (this.totalRows + 1) + 1 is for the header row.\n this.tableScrollWidth = parentContainer.clientHeight < rowHeight * (this.totalRows + 1)\n ? this.layoutService.getScrollbarWidth()\n : 0;\n\n // The selectionCheckBoxWidth width + containerFluidSpacing + this.tableScrollWidth.\n const rowHeaderWidthToSub =\n containerFluidSpacing + this.getSelectionCheckBoxWidth() + this.tableScrollWidth;\n this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;\n }\n\n private saveSortingToSession(): void {\n this.sessionService.setObject(\n PepListComponent.SORT_BY_STATE_KEY,\n this.sortBy\n );\n this.sessionService.setObject(\n PepListComponent.ASCENDING_STATE_KEY,\n this.isAsc\n );\n }\n\n private getTopItems(): number {\n return this.isTable\n ? PepListComponent.TOP_ITEMS_TABLE\n : PepListComponent.TOP_ITEMS_THUMBNAILS;\n }\n\n private disableScroll(disable: boolean) {\n if (disable) {\n this.renderer.addClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n } else {\n this.renderer.removeClass(this.hostElement.nativeElement.parentElement, 'lock-events');\n }\n }\n\n private toggleLoadingItemsFropApi(loadingItemsFromApi: boolean): void {\n this._loadingItemsFromApi = loadingItemsFromApi;\n\n // this.disableScroll(loadingItemsFromApi);\n }\n\n private updateCurrentPageItems(startIndex: number, endIndex: number): void {\n this.currentPageItems = this.items.slice(startIndex, endIndex);\n }\n\n private setSelectionItems(\n itemId: string,\n uniqItemId: string,\n isChecked: boolean\n ): void {\n // Set selected item checkbox\n if (this.isAllSelected) {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n } else {\n if (isChecked) {\n this.unSelectedItems.delete(itemId);\n this.selectedItems.set(itemId, uniqItemId);\n } else {\n this.selectedItems.delete(itemId);\n this.unSelectedItems.set(itemId, uniqItemId);\n }\n }\n }\n\n private getUniqItemId(itemId: string, itemType = ''): string {\n return itemId + this.SEPARATOR + itemType;\n }\n\n private setLayout(): void {\n if (\n this.totalRows === 0 ||\n !this._layout ||\n !this._layout.ControlFields ||\n this._layout.ControlFields.length === 0\n ) {\n return;\n }\n\n this._layout.ControlFields.forEach((cf) => {\n if (cf.ColumnWidth === 0) {\n cf.ColumnWidth = 10;\n }\n\n if (\n this.isTable &&\n (cf.FieldType === FIELD_TYPE.Image ||\n // cf.FieldType === FIELD_TYPE.Indicators || ???\n cf.FieldType === FIELD_TYPE.Signature ||\n cf.FieldType === FIELD_TYPE.NumberIntegerQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberRealQuantitySelector ||\n cf.FieldType === FIELD_TYPE.NumberIntegerForMatrix ||\n cf.FieldType === FIELD_TYPE.NumberRealForMatrix ||\n cf.FieldType === FIELD_TYPE.Package ||\n cf.ApiName === 'UnitsQuantity' ||\n cf.ApiName === 'QuantitySelector')\n ) {\n cf.Layout.XAlignment = 3;\n }\n });\n\n if (!this.cd['destroyed']) {\n this.cd.detectChanges();\n }\n\n // Set the container width.\n if (this.containerWidth <= 0) {\n this.setContainerWidth();\n }\n\n const isLastColumnsWidthSet = this.setLastColumnsWidth();\n \n // Set the layout only if the last columns width couldn't set.\n if (!isLastColumnsWidthSet) {\n this.calcColumnsWidth();\n }\n \n this.checkForChanges = new Date().getTime();\n }\n\n private setLastColumnsWidth(): boolean {\n let res = false;\n\n let totalCalcColsWidth = 0;\n let widthToSet = 'inherit';\n\n if (this.lastColumnsWidth.length > 0) {\n // Check if this is the same UI control for table.\n if (this.lastColumnsWidth.length === this._layout.ControlFields.length) {\n let uiControlsAreTheSame = true;\n\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n if (uiControlField.ApiName !== this.lastColumnsWidth[index].columnAPIName) {\n uiControlsAreTheSame = false;\n break;\n }\n }\n \n if (uiControlsAreTheSame) {\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n uiControlField.calcColumnWidth = this.lastColumnsWidth[index].calcColumnWidth;\n uiControlField.calcTitleColumnWidthString = this.lastColumnsWidth[index].calcTitleColumnWidthString;\n uiControlField.calcColumnWidthString = this.lastColumnsWidth[index].calcColumnWidthString;\n totalCalcColsWidth += this.lastColumnsWidth[index].calcColumnWidth;\n }\n \n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n console.log(`setLastColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n\n res = true;\n }\n }\n }\n return res;\n }\n\n private setVirtualScrollWidth(widthToSet: string) {\n if (this.virtualScroller) {\n this.renderer.setStyle(\n this.virtualScroller.contentElementRef.nativeElement,\n 'width',\n widthToSet === 'inherit' ? '100%' : widthToSet\n );\n }\n }\n\n private setColumnsWidth(widthToSet: string) {\n // this.renderer.setStyle(\n // this.hostElement.nativeElement,\n // 'width',\n // widthToSet\n // );\n this.renderer.setStyle(\n this.listContainerResizableElementRef.nativeElement,\n 'width',\n widthToSet\n );\n\n if (this.isTable) {\n this.setVirtualScrollWidth(widthToSet);\n } else {\n // Do this only after UI is change cause the property isTable is Input and can refresh after this thread.\n setTimeout(() => {\n this.setVirtualScrollWidth(widthToSet);\n }, 0);\n }\n }\n\n private calcColumnsWidth(): void {\n const fixedMultiple = 3.78; // for converting em to pixel.\n const length = this._layout.ControlFields.length;\n \n // Is table AND there is at least one column of width type of percentage.\n if (this.isTable) {\n if (this._layout && this._layout.ControlFields) {\n this.hasColumnWidthOfTypePercentage =\n this._layout.ControlFields.filter(\n (cf) => cf.ColumnWidthType === 1\n ).length === 0;\n }\n }\n\n // If the columns size is fixed and the total is small then the container change it to percentage.\n if (!this.hasColumnWidthOfTypePercentage) {\n const totalFixedColsWidth = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth * fixedMultiple\n ).reduce((sum, current) => sum + current);\n\n if (window.innerWidth > totalFixedColsWidth) {\n this.hasColumnWidthOfTypePercentage = true;\n }\n }\n\n let totalCalcColsWidth = 0;\n\n let widthToSet = 'inherit';\n\n // Calc by percentage\n if (this.hasColumnWidthOfTypePercentage) {\n const totalColsWidth: number = this._layout.ControlFields.map(\n (cf) => cf.ColumnWidth\n ).reduce((sum, current) => sum + current);\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n const calcColumnWidthPercentage = (100 / totalColsWidth) * uiControlField.ColumnWidth;\n\n uiControlField.calcColumnWidth = Math.floor((this.containerWidth * calcColumnWidthPercentage) / 100);\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + totalCalcColsWidth + 'px)'; // For 100%\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n }\n } else {\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n const currentFixedWidth = Math.floor(\n uiControlField.ColumnWidth * fixedMultiple\n );\n\n if (index === length - 1) {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n } else {\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';\n }\n\n totalCalcColsWidth += currentFixedWidth;\n }\n\n widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px'\n }\n\n console.log(`calcColumnsWidth -> widthToSet: ${widthToSet} *** totalCalcColsWidth: ${totalCalcColsWidth}`);\n this.setColumnsWidth(widthToSet);\n }\n\n private calcObjectHeight() {\n setTimeout(() => {\n if (this.virtualScroller) {\n const content = this.virtualScroller.getContent();\n console.log(`content.children.length: ${content.children.length}`);\n\n if (content.children.length > 0) {\n const rect = this.virtualScroller.getElementSize(content.children[0]);\n this.calculatedObjectHeight = rect.height + 'px';\n console.log(`this.calculatedObjectHeight: ${this.calculatedObjectHeight}`);\n }\n }\n this.disableScroll(false);\n }, 1000);\n }\n\n private initResizeData(): void {\n this.startX = 0;\n this.startWidth = 0;\n this.tableStartWidth = 0;\n this.pressedColumn = '';\n this.pressedColumnIndex = -1;\n }\n\n private getParent(el, parentSelector): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n const parent = [];\n let p = el.parentNode;\n\n while (\n p &&\n p.className !== '' &&\n p.className.indexOf(parentSelector) === -1 &&\n parentSelector !== document\n ) {\n const o = p;\n p = o.parentNode;\n }\n if (p.className.indexOf(parentSelector) > -1) {\n parent.push(p); // Push that parentSelector you wanted to stop at\n }\n return parent;\n }\n\n private cleanItems(): void {\n this.itemsCounter = 0;\n this._items =\n this.totalRows > 0 ? Array<ObjectsDataRow>(this.totalRows) : [];\n this.currentPageItems = [];\n this.calculatedObjectHeight = 'auto';\n }\n\n private initVariablesFromSession(items: ObjectsDataRow[]): void {\n const selectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.SELECTED_ITEMS_STATE_KEY);\n const selectedItemsFromMap: Map<string, string> =\n selectedItemsObject && selectedItemsObject.length > 0\n ? new Map(selectedItemsObject)\n : null;\n if (\n selectedItemsFromMap != null &&\n typeof selectedItemsFromMap.size !== 'undefined' &&\n selectedItemsFromMap.size > 0\n ) {\n this.selectedItems = selectedItemsFromMap;\n this.sessionService.removeObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.selectedItems.clear();\n }\n\n const unSelectedItemsObject: Array<any> = this.sessionService.getObject<\n Array<any>\n >(PepListComponent.UN_SELECTED_ITEMS_STATE_KEY);\n const unSelectedItemsMap: Map<string, string> =\n unSelectedItemsObject && unSelectedItemsObject.length > 0\n ? new Map(unSelectedItemsObject)\n : null;\n if (\n unSelectedItemsMap != null &&\n typeof unSelectedItemsMap.size !== 'undefined' &&\n unSelectedItemsMap.size > 0\n ) {\n this.unSelectedItems = unSelectedItemsMap;\n this.sessionService.removeObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY\n );\n } else {\n this.unSelectedItems.clear();\n }\n\n const isAllSelected = this.sessionService.getObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n if (isAllSelected != null) {\n // Comment this in version 0.4.2-beta.103, I don't know why we need this (&& this.getIsAllSelected(items))\n // this.isAllSelected = isAllSelected && this.getIsAllSelected(items);\n this.isAllSelected = isAllSelected;\n this.sessionService.removeObject(\n PepListComponent.ALL_SELECTED_STATE_KEY\n );\n } else {\n this.isAllSelected = false;\n }\n\n const sortBy = this.sessionService.getObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n if (sortBy && sortBy !== '') {\n this.sortBy = sortBy;\n this.sessionService.removeObject(\n PepListComponent.SORT_BY_STATE_KEY\n );\n } else {\n this.sortBy = '';\n }\n\n const isAsc = this.sessionService.getObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n if (isAsc != null) {\n this.isAsc = isAsc;\n this.sessionService.removeObject(\n PepListComponent.ASCENDING_STATE_KEY\n );\n } else {\n this.isAsc = true;\n }\n }\n\n private getIsAllSelected(items: Array<ObjectsDataRow>): boolean {\n let result = true;\n\n if (this.selectedItems?.size > 0 && items?.length > 0) {\n for (const item of items) {\n if (!(item && this.selectedItems.has(item?.UID.toString()))) {\n result = false;\n break;\n }\n }\n } else {\n result = false;\n }\n\n return result;\n }\n\n private getNumberOfStartItems(): number {\n let numberOfStartItems = 20;\n\n if (\n this.screenSize === PepScreenSizeType.XL ||\n this.screenSize === PepScreenSizeType.LG\n ) {\n numberOfStartItems = this.isTable ? 50 : 40;\n } else if (this.screenSize === PepScreenSizeType.MD) {\n numberOfStartItems = this.isTable ? 30 : 20;\n } else if (this.screenSize === PepScreenSizeType.SM) {\n numberOfStartItems = this.isTable ? 20 : 10;\n } else if (this.screenSize === PepScreenSizeType.XS) {\n numberOfStartItems = this.isTable ? 15 : 5;\n }\n\n return numberOfStartItems;\n }\n\n private setItemClicked(\n itemId,\n isSelectableForActions: boolean,\n itemType: string,\n isChecked: boolean\n ): void {\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n\n // select the selected item.\n if (isChecked) {\n // Set seleted item\n this.selectedItemId = uniqItemId;\n } else {\n if (this.selectedItemId === uniqItemId) {\n this.selectedItemId = '';\n }\n }\n\n if (this.selectionTypeForActions === 'single') {\n this.selectedItemsChange.emit(\n this.selectedItemId.length === 0 ? 0 : 1\n );\n } else if (this.selectionTypeForActions === 'multi') {\n if (isSelectableForActions) {\n this.setSelectionItems(itemId, uniqItemId, isChecked);\n\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - currentList.size\n : currentList.size;\n this.selectedItemsChange.emit(currentListCount);\n }\n }\n\n // Raise selected item change event\n if (this.selectionTypeForActions !== 'none') {\n this.selectedItemChange.emit({\n id: itemId,\n selected: isChecked,\n });\n }\n }\n\n private exportFunctionsOnHostElement() {\n // This is for web component usage for use those functions.\n this.hostElement.nativeElement.clear = this.clear.bind(this);\n this.hostElement.nativeElement.initListData = this.initListData.bind(\n this\n );\n this.hostElement.nativeElement.updateItems = this.updateItems.bind(\n this\n );\n this.hostElement.nativeElement.updatePage = this.updatePage.bind(this);\n this.hostElement.nativeElement.updateItem = this.updateItem.bind(this);\n }\n\n // For refresh the UI when change the is selectable for action on item.\n getisItemDisabled(item: ObjectsDataRow): boolean {\n return this.printMode || this.lockItemInnerEvents || (item && !item.IsSelectableForActions)\n }\n\n getIsAllSelectedForActions(): boolean {\n let res = false;\n\n if (this.isAllSelected) {\n if (this.unSelectedItems.size === 0) {\n res = true;\n }\n } else {\n if (this.virtualScroller?.viewPortItems) {\n if (this.selectedItems.size === this.totalRows) {\n res = this.getIsAllSelected(this.virtualScroller.viewPortItems);\n } else if (this.selectedItems.size < this.totalRows) {\n for (const item of this.virtualScroller.viewPortItems) {\n res =\n item && this.selectedItems.has(item?.UID.toString());\n\n if (!res) {\n break;\n }\n }\n }\n }\n }\n\n return res;\n }\n\n setIsAllSelected(isChecked: boolean): void {\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllCB.checked = isChecked;\n this.isAllSelected = isChecked;\n }\n }\n\n selectAllItemsForActions(e: any): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n\n // Indeterminate mode\n let isIndeterminate = false;\n const currentList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n if (currentList.size > 0) {\n isIndeterminate = true;\n this.isAllSelected = false;\n this.selectedItemsChange.emit(0);\n e.source.checked = false;\n }\n\n this.selectedItems.clear();\n this.unSelectedItems.clear();\n\n if (!isIndeterminate) {\n this.isAllSelected = isChecked;\n this.selectAllClick.emit(isChecked);\n\n if (this.selectionTypeForActions === 'multi') {\n if (!isChecked) {\n this.selectedItemsChange.emit(0);\n this.selectedItemId = '';\n } else {\n const filteredItems = this.items.filter(\n (item) => item && item.IsSelectableForActions\n );\n this.selectedItemsChange.emit(filteredItems.length);\n }\n }\n } else {\n // Remove all\n if (this.selectionTypeForActions === 'multi') {\n this.selectAllClick.emit(false);\n }\n }\n }\n\n raiseStartIndexChange(startIndex = 0) {\n // this.startIndex = startIndex;\n this.startIndexChange.emit({ startIndex });\n }\n\n getIsItemSelected(item: ObjectsDataRow): boolean {\n let isSelected = false;\n\n if (item) {\n if (this.selectionTypeForActions === 'single') {\n isSelected = this.selectedItemId === this.getUniqItemId(item.UID, item.Type.toString());\n } else if (this.selectionTypeForActions === 'multi') {\n if (item.IsSelectableForActions) {\n isSelected = (this.isAllSelected && !this.unSelectedItems.has(item.UID)) || this.selectedItems.has(item.UID);\n }\n }\n }\n\n return isSelected;\n }\n\n selectItemForActions(\n e: any,\n itemId: string,\n isSelectableForActions: boolean,\n itemType = ''\n ): void {\n // For material checkbox || radio.\n const isChecked = e.source.checked;\n this.setItemClicked(\n itemId,\n isSelectableForActions,\n itemType,\n isChecked\n );\n }\n\n itemClicked(e: any, item: ObjectsDataRow): void {\n // Set seleted item\n const itemId = item?.UID.toString();\n const itemType = item?.Type.toString();\n let isChecked = false;\n\n if (item && item.IsSelectableForActions) {\n this.selectedItemId = this.getUniqItemId(itemId, itemType);\n isChecked = true;\n }\n // TODO - need to check what we want to do line view\n if (this.isTable || this.viewType === 'cards') {\n if (this.selectionTypeForActions === 'single') {\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n isChecked\n );\n } else if (this.selectionTypeForActions === 'none') {\n // Just mark the row as highlighted\n this.setItemClicked(\n itemId,\n item.IsSelectableForActions,\n itemType,\n true\n );\n }\n } else {\n if (this.disabled) {\n return;\n }\n }\n\n this.itemClick.emit({ source: item, viewType: this.viewType });\n }\n\n onTableRowMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onTableRowMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n onTabKeydown(event: any, itemId: string, itemType: string): void {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key === 'Tab') {\n\n const jumpToNextRow = !keyboardEvent.shiftKey;\n\n const eventTarget = event.target || event.srcElement;\n const isLastColumn = this.isLastColunm(eventTarget, 'table-cell', jumpToNextRow);\n\n // If the last column then go to the next row.\n if(isLastColumn) {\n const currentRowEL = this.getParentByClass(eventTarget, 'table-row');\n const nextRow = jumpToNextRow ? currentRowEL?.nextElementSibling : currentRowEL?.previousElementSibling;\n if (nextRow !== null) {\n // Remove the highlight from the current row.\n this.renderer.removeClass(nextRow, 'highlighted');\n // Highlight the next row.\n this.renderer.addClass(nextRow, 'highlighted');\n // Click on the first cell of the next row.\n const indexOfFocusCell = jumpToNextRow ? 0 : nextRow.querySelectorAll('.table-cell').length - 1;\n nextRow.querySelectorAll('.table-cell')[indexOfFocusCell].click(); \n setTimeout(() => {\n nextRow.querySelectorAll('.table-cell')[indexOfFocusCell].focus();\n }, 100);\n \n \n }\n }\n }\n }\n\n isLastColunm(el, parentSelector, isNext = true): boolean {\n const parent = this.getParentByClass(el, parentSelector);\n // check if last column or if shifr pressed and it's the first column\n return isNext ? (parent?.nextElementSibling) === null : (parent?.previousElementSibling === null);\n }\n\n getParentByClass(el, parentSelector /* optional */): any {\n // If no parentSelector defined will bubble up all the way to *document*\n if (parentSelector === undefined) {\n parentSelector = document;\n }\n\n let p = el.parentNode;\n\n while (\n p &&\n !p?.classList?.contains(parentSelector) &&\n parentSelector !== document\n ) {\n const o = p;\n p = o?.parentNode || null;\n }\n\n return p?.className.indexOf(parentSelector) > -1 ? p : null;\n }\n onCardMouseEnter(event: any, itemId: string, itemType: string): void {\n if (!this.deviceHasMouse) {\n return;\n }\n\n const uniqItemId = this.getUniqItemId(itemId, itemType);\n this.hoveredItemId = uniqItemId;\n }\n\n onCardMouseLeave(event: any, itemId: string, itemType: string): void {\n this.hoveredItemId = '';\n }\n\n // trackByFunc(index: number, item: ObjectsDataRow): any {\n // return item && item?.UID ? item?.UID : index;\n // // let res: string = \"\";\n\n // // if (item && item?.UID) {\n // // res = item?.UID + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n // // else {\n // // res = index + \"_\" + this.listType + \"_\" + (this.isTable ? \"Table\" : \"Thumbnails\");\n // // }\n\n // // return res;\n // }\n\n clear(): void {\n this.cleanItems();\n this._layout = null;\n }\n\n setSelectedIds(selectedIds: string[], items = null): void {\n this.selectedItems.clear();\n this.isAllSelected = false;\n\n if (selectedIds) {\n // for (let i = 0; i < selected.length; i++) {\n for (const selectedId of selectedIds) {\n const tmp = selectedId.split(this.SEPARATOR);\n\n if (tmp && tmp.length > 0) {\n const itemId = tmp[0];\n const itemType = tmp.length > 1 ? tmp[1] : '';\n\n this.selectedItems.set(\n itemId,\n this.getUniqItemId(itemId, itemType)\n );\n }\n }\n\n this.isAllSelected = this.getIsAllSelected(items ? items : this.virtualScroller?.viewPortItems);\n this.setSelectionDataInSession();\n }\n\n this.refresh();\n }\n\n setSelectionDataInSession(): void {\n if (this.selectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.selectedItems])\n );\n }\n\n if (this.unSelectedItems.size > 0) {\n this.sessionService.setObject(\n PepListComponent.UN_SELECTED_ITEMS_STATE_KEY,\n JSON.stringify([...this.unSelectedItems])\n );\n }\n\n this.sessionService.setObject(\n PepListComponent.ALL_SELECTED_STATE_KEY,\n this.isAllSelected\n );\n }\n\n initListData(\n layout: UIControl,\n totalRows: number,\n items: ObjectsDataRow[],\n selectionTypeForActions: PepListSelectionType | undefined = undefined\n ): void {\n this.initVariablesFromSession(items);\n const selectedItemsList = this.isAllSelected\n ? this.unSelectedItems\n : this.selectedItems;\n const currentListCount = this.isAllSelected\n ? this.totalRows - selectedItemsList.size\n : selectedItemsList.size;\n this.selectedItemsChange.emit(currentListCount);\n\n this._layout = layout;\n this.selectedItemId = ''; \n this.totalRows = totalRows;\n\n // Added to handle if the selectionTypeForActions is set in the html then the input this.selectedItemId will no set cause this function happens before.\n if (selectionTypeForActions) {\n this.selectionTypeForActions = selectionTypeForActions;\n }\n\n // If is all selected is false && the size of the selected items is 1 && selectionTypeForActions is 'single' then set it as the selected item id.\n // We need this in setTimeout cause the selectionTypeForActions is input that can set after this function.\n if (!this.isAllSelected && this.selectedItems.size === 1 && this.selectionTypeForActions === 'single') {\n const [firstValue] = this.selectedItems.values();\n this.selectedItemId = firstValue;\n }\n \n this.scrollToTop(false);\n this.cleanItems();\n this.disableScroll(true);\n\n if (items) {\n if (this.pagerType === 'pages') {\n // If page index out of bounds - init to 0.\n const numberOfPages = Math.ceil(totalRows / this.pageSize);\n\n if (this.pageIndex >= numberOfPages) {\n this.pageIndex = 0;\n }\n\n this.updatePage(items, {\n pageIndex: this.pageIndex,\n pageSize: this.pageSize,\n });\n\n this.disableScroll(false);\n } else {\n const numberOfStartItems = this.getNumberOfStartItems();\n const event = {\n fromIndex: 0,\n toIndex: numberOfStartItems,\n };\n this.updateItems(items, event);\n \n if (this.virtualScroller) {\n this.refresh(() => {\n this.calcObjectHeight();\n });\n } else {\n this.calcObjectHeight();\n }\n }\n }\n\n if (!this.isTable) {\n this.lastColumnsWidth = [];\n }\n\n this.setLayout();\n\n // setTimeout(() => {\n this.onListLoad();\n // }, 0);\n }\n\n updateItems(\n items: ObjectsDataRow[],\n event: IPepListLoadItemsEvent = null\n ): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n const startIndex = event.fromIndex ?? 0;\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.toggleLoadingItemsFropApi(false);\n }\n\n updatePage(items: ObjectsDataRow[], event: IPepListLoadPageEvent): void {\n if (!event) {\n return; // Event isn't supplied.\n }\n\n // Clean array\n if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {\n this.cleanItems();\n }\n\n // const loadInChunks = this.itemsCounter === 0;\n const startIndex = Math.min(event.pageIndex * event.pageSize, this.totalRows);\n const endIndex = Math.min(startIndex + event.pageSize, this.totalRows);\n\n for (let i = 0; i < items.length; i++) {\n if (!this.items[i + startIndex]) {\n this.items[i + startIndex] = items[i];\n this.itemsCounter += 1;\n }\n }\n\n this.updateCurrentPageItems(startIndex, endIndex);\n this.toggleLoadingItemsFropApi(false);\n }\n\n updateItem(data: ObjectsDataRow): void {\n const index = this.items.findIndex((i) => i && i?.UID === data?.UID);\n if (index >= 0 && index < this.items.length) {\n this.updateItemProperties(this.items[index], data);\n }\n }\n\n scrollToIndex(index: number, alignToBeginning = true, additionalOffset = 0, animationMilliseconds: number = undefined, animationCompletedCallback: () => void = undefined) {\n this.virtualScroller?.scrollToIndex(index, alignToBeginning, additionalOffset, animationMilliseconds, animationCompletedCallback);\n }\n\n updateItemProperties(itemToUpdate: ObjectsDataRow, data: ObjectsDataRow) {\n Object.assign(itemToUpdate, data);\n }\n\n getSelectedItemsData(isForEdit = false): PepSelectionData {\n const res = new PepSelectionData();\n\n let selectionType = 1;\n const items = [];\n const itemTypes = [];\n\n if (this.selectionTypeForActions === 'single') {\n if (this.selectedItemId.length > 0) {\n const tmp = this.selectedItemId.split(this.SEPARATOR);\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n } else if (this.selectionTypeForActions === 'multi') {\n let currentList = [];\n\n // For edit - only the selected items.\n if (isForEdit) {\n if (!this.isAllSelected) {\n currentList = Array.from(this.selectedItems.values());\n } else {\n // Get the id's of the items that not founded in unSelectedItems.\n this.items.forEach((item) => {\n if (\n item &&\n !this.unSelectedItems.has(item?.UID.toString())\n ) {\n currentList.push(\n this.getUniqItemId(\n item?.UID.toString(),\n item?.Type.toString()\n )\n );\n }\n });\n }\n } else {\n // For delete - can be the unselected with select_all functionality.\n currentList = Array.from(\n this.isAllSelected\n ? this.unSelectedItems.values()\n : this.selectedItems.values()\n );\n selectionType = this.isAllSelected ? 0 : 1;\n }\n\n currentList.forEach((item) => {\n const tmp = item.split(this.SEPARATOR);\n\n if (tmp.length === 2) {\n items.push(tmp[0]);\n itemTypes.push(tmp[1]);\n }\n });\n\n }\n\n res.selectionType = selectionType;\n res.rows = items;\n res.rowTypes = itemTypes;\n\n return res;\n }\n\n getIsItemEditable(uid: string): boolean {\n const item = this.items.filter((x) => x?.UID.toString() === uid);\n if (item.length > 0) {\n return item[0].IsEditable;\n } else {\n return false;\n }\n }\n\n getItemDataByID(uid: string): ObjectsDataRow {\n return this.items.find((item) => item?.UID.toString() === uid);\n }\n\n refresh(refreshCompletedCallback: () => void = undefined) {\n this.virtualScroller?.refresh(refreshCompletedCallback);\n }\n\n // ---------------------------------------------------------------\n // Events handlers.\n // ---------------------------------------------------------------\n\n onWinResize(e): void {\n this.refresh();\n\n this.containerWidth = 0;\n this.lastColumnsWidth = [];\n this.setLayout();\n }\n\n onListResizeStart(event, columnKey: string, columnIndex: number): void {\n this.pressedColumn = columnKey;\n this.pressedColumnIndex = columnIndex;\n this.startX = event.x;\n this.startWidth = event.target.closest('.header-column').offsetWidth;\n // this.tableStartWidth = this.hostElement.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n this.tableStartWidth = this.listContainerResizableElementRef.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;\n console.log(`tableStartWidth - ${this.tableStartWidth}`);\n }\n\n onListResize(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n let widthToAdd = this.layoutService.isRtl() ? this.startX - event.x : event.x - this.startX;\n\n // Set the width of the column and the container of the whole columns.\n if (this.startWidth + widthToAdd >= PepListComponent.MINIMUM_COLUMN_WIDTH || widthToAdd > 0) {\n const length = this._layout.ControlFields.length;\n let totalCalcColsWidth = 0;\n\n for (let index = 0; index < length; index++) {\n const uiControlField: UIControlField = this._layout\n .ControlFields[index];\n\n if (index === length - 1) {\n // Calc the last column only in percentage type.\n if (this.hasColumnWidthOfTypePercentage) {\n const scrollWidth = this.layoutService.getScrollbarWidth();\n widthToAdd += scrollWidth;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = 'calc(100% - ' + (totalCalcColsWidth + scrollWidth) + 'px)'; // For 100%\n } else {\n // if (uiControlField.ApiName === this.pressedColumn) {\n if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidth + 'px';\n uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n }\n // } else if (uiControlField.ApiName === this.pressedColumn) {\n } else if (index === this.pressedColumnIndex) {\n uiControlField.calcColumnWidth = this.startWidth + widthToAdd;\n uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = uiControlField.calcColumnWidth + 'px';\n }\n\n totalCalcColsWidth += uiControlField.calcColumnWidth;\n }\n\n const widthToSet = (this.tableStartWidth + widthToAdd) + 'px';\n console.log(`onListResize -> widthToSet: ${widthToSet} *** widthToAdd: ${widthToAdd}`);\n this.setColumnsWidth(widthToSet);\n this.checkForChanges = new Date().getTime();\n }\n\n }\n }\n\n onListResizeEnd(event): void {\n // if (this.pressedColumn.length > 0) {\n if (this.pressedColumnIndex >= 0) {\n if (\n event &&\n this.getParent(event.srcElement, 'resize-box').length > 0\n ) {\n this.initResizeData();\n } else {\n // Set timeout 0 for onListSortingChange will have the pressedColumn.\n setTimeout(() => {\n this.initResizeData();\n }, 0);\n }\n\n this.lastColumnsWidth = [];\n \n // Set the last columns width\n for (let index = 0; index < this._layout.ControlFields.length; index++) {\n const uiControlField: UIControlField = this._layout.ControlFields[index];\n \n this.lastColumnsWidth.push({ \n columnAPIName: uiControlField.ApiName, \n calcColumnWidth: uiControlField.calcColumnWidth,\n calcTitleColumnWidthString: uiControlField.calcTitleColumnWidthString,\n calcColumnWidthString: uiControlField.calcColumnWidthString\n })\n }\n \n event.stopPropagation();\n }\n }\n\n onListSortingChange(sortBy: string, isAsc: boolean, event = null): void {\n if (\n // this.pressedColumn.length > 0 ||\n this.pressedColumnIndex >= 0 ||\n (event && this.getParent(event.srcElement, 'resize-box').length > 0)\n ) {\n return;\n }\n\n if (this.sortBy !== sortBy || this.isAsc !== isAsc) {\n this.sortBy = sortBy;\n this.isAsc = isAsc;\n this.saveSortingToSession();\n\n this.sortingChange.emit({ sortBy, isAsc });\n }\n }\n\n onListHeaderMouseEnter(event): void {\n // this.headerIsInFocus = true;\n }\n\n onListHeaderMouseLeave(event): void {\n // this.headerIsInFocus = false;\n this.onListResizeEnd(event);\n this.initResizeData();\n }\n\n onPagerChange(event: IPepListPagerChangeEvent): void {\n this.pageIndex = event.pageIndex;\n\n // Scroll to top.\n //this.scrollToTop();\n\n const startIndex = event.pageIndex * event.pageSize;\n const endIndex = Math.min(\n startIndex + event.pageSize,\n this.totalRows\n );\n\n let shouldGetItemsFromApi = false;\n let index: number = startIndex;\n\n while (!shouldGetItemsFromApi && index < endIndex) {\n if (!this.items[index]) {\n shouldGetItemsFromApi = true;\n }\n index++;\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n this.loadPage.emit({\n pageIndex: event.pageIndex,\n pageSize: event.pageSize,\n }); \n \n this.scrollToTop();\n }\n } else {\n setTimeout(() => {\n this.updateCurrentPageItems(startIndex, endIndex);\n this.scrollToTop();\n }, this.scrollAnimationTime);\n }\n }\n\n onVirtualScrollerChange(event: IPageInfo): void {\n this.raiseStartIndexChange(event.startIndex);\n\n if (this.pagerType === 'scroll') {\n // For other events do nothing.\n if (typeof event.startIndex === 'undefined' || event.startIndex < 0 ||\n typeof event.endIndex === 'undefined' || event.endIndex < 0) {\n return;\n }\n\n const addAtStart = event.scrollDirection === 'backward';\n let shouldGetItemsFromApi = false;\n let indexOfMissingItem: number;\n\n if (addAtStart) {\n indexOfMissingItem = event.endIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem >= event.startIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem--;\n }\n }\n } else {\n indexOfMissingItem = event.startIndex;\n while (!shouldGetItemsFromApi && indexOfMissingItem <= event.endIndex) {\n if (!this.items[indexOfMissingItem]) {\n shouldGetItemsFromApi = true;\n }\n\n if (!shouldGetItemsFromApi) {\n indexOfMissingItem++;\n }\n }\n }\n\n // Get bulk from api.\n if (shouldGetItemsFromApi) {\n if (!this.loadingItemsFromApi) {\n this.toggleLoadingItemsFropApi(true);\n\n const top = this.getTopItems() - 1;\n const fromIndex = addAtStart ? Math.max(indexOfMissingItem - top, 0) : indexOfMissingItem;\n const toIndex = addAtStart ? indexOfMissingItem : Math.min(indexOfMissingItem + top, this.totalRows);\n\n this.loadItems.emit({\n fromIndex,\n toIndex,\n });\n }\n }\n }\n }\n\n onListLoad(): void {\n setTimeout(() => {\n this.listLoad.emit();\n }, 0);\n }\n\n // onChildRectChange(event: any) {\n // // Set the calculatedObjectHeight only if he's not set (this case is only for the initialize when virtual scroll is undefined).\n // // the other cases is handled in calcObjectHeight function.\n // if (this.calculatedObjectHeight === 'auto') {\n // this.calculatedObjectHeight = event?.height + 'px';\n // }\n // }\n\n onValueChanged(valueChange: IPepFormFieldValueChangeEvent): void {\n if (this.disabled) {\n return;\n }\n\n this.valueChange.emit(valueChange);\n }\n\n onCustomizeFieldClick(\n customizeFieldClickedData: IPepFormFieldClickEvent\n ): void {\n if (this.disabled) {\n return;\n }\n\n this.fieldClick.emit(customizeFieldClickedData);\n }\n //added to handle sorting by specific columns----\n isSortableColumn(apiName: string) {\n //case 1 - supportSorting = true and array exists\n if(this.supportSorting) {\n if(this.supportSortingFields?.length) {\n return this.supportSortingFields.includes(apiName);\n //case 2 - supportSorting = true and array does not exist\n } else if (this.supportSortingFields === undefined) {\n return true\n } // case 3 supportSorting = false\n } else return false;\n \n }\n}\n","<ng-container *ngIf=\"totalRows == 0\">\n <ng-container *ngIf=\"noDataFoundMsg; then noDataMsgInputBlock; else noDataMsgDefaultBlock\"></ng-container>\n <ng-template #noDataMsgInputBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ noDataFoundMsg }}\n </p>\n </div>\n </ng-template>\n <ng-template #noDataMsgDefaultBlock>\n <div class=\"pep-border-bottom\">\n <p class=\"title-xl no-data\">\n {{ 'LIST.NO_DATA_FOUND' | translate}}\n </p>\n </div>\n <div class=\"no-data-suggestions\">\n <p class=\"suggestions-title title-lg\">\n {{ 'LIST.NO_DATA_FOUND_SUGGESTIONS_TITLE' | translate}}\n </p>\n <ul class=\"suggestions-list body-lg\" [innerHtml]=\"'LIST.NO_DATA_FOUND_SUGGESTIONS_LIST' | translate\"></ul>\n </div>\n </ng-template>\n</ng-container>\n<ng-container *ngIf=\"totalRows > 0\">\n <div class=\"list-container\">\n <div #listContainerResizable class=\"list-container-resizable\">\n <ng-container *ngTemplateOutlet=\"tableHeader\"></ng-container>\n\n <!-- (vsChildRectChange)=\"onChildRectChange($event)\" -->\n <virtual-scroller #scroller [items]=\"pagerType === 'pages' ? currentPageItems : items\"\n [scrollDebounceTime]=\"scrollDebounceTime\" [scrollThrottlingTime]=\"scrollThrottlingTime\"\n [bufferAmount]=\"printMode ? totalRows : bufferAmount\" [parentScroll]=\"parentScroll\" [disable]=\"loadingItemsFromApi\"\n class=\"virtual-scroller\" [ngClass]=\"{ 'table-body': isTable, 'cards-body': !isTable }\"\n (vsChange)=\"onVirtualScrollerChange($event)\" >\n <ng-container *ngFor=\"let item of scroller.viewPortItems; let index = index; let isFirst = first;\">\n <ng-container *ngTemplateOutlet=\"listData; context: {item: item, index:index}\"></ng-container>\n </ng-container>\n </virtual-scroller>\n \n <ng-container *ngTemplateOutlet=\"tableTotal\"></ng-container>\n </div>\n </div>\n <pep-list-pager *ngIf=\"pagerType === 'pages'\" class=\" list-pager\" [disabled]=\"loadingItemsFromApi\"\n [length]=\"totalRows\" [pageSize]=\"pageSize\" [pageIndex]=\"pageIndex\" (pagerChange)=\"onPagerChange($event)\">\n </pep-list-pager>\n</ng-container>\n\n<ng-template #listData let-item=\"item\" let-index=\"index\">\n <ng-container *ngIf=\"isTable\">\n <!-- getIsItemSelected(item) -> item | isItemSelected: selectionTypeForActions : selectedItemId : isAllSelected : selectedItems : unSelectedItems -->\n <div class=\"table-row\" (mouseenter)=\"onTableRowMouseEnter($event, item?.UID, item?.Type)\" (keydown)=\"onTabKeydown($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onTableRowMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n even: zebraStripes && index % 2 !== 0,\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId}\" [ngStyle]=\"{ visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <fieldset class=\"table-row-fieldset\" [ngStyle]=\"{ 'background-color': item?.BackgroundColor }\">\n <mat-checkbox *ngIf=\"selectionTypeForActions == 'multi'\" type=\"checkbox\"\n class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"false && getisItemDisabled(item)\" [ngStyle]=\"{\n visibility: !deviceHasMouse ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId || isAllSelected || selectedItems.size > 0 ? 'visible' : 'hidden'\n }\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <mat-radio-button *ngIf=\"selectionTypeForActions == 'single'\" name=\"selection\"\n class=\"pull-left flip row-selection pep-radio-button\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n [disabled]=\"getisItemDisabled(item)\"\n [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-radio-button>\n <pep-form [layoutType]=\"'table'\" [checkForChanges]=\"checkForChanges\" [layout]=\"layout\"\n [firstFieldAsLink]=\"firstFieldAsLink\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isReport]=\"isReport\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </fieldset>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!isTable\">\n <div (mouseenter)=\"onCardMouseEnter($event, item?.UID, item?.Type)\"\n (mouseleave)=\"onCardMouseLeave($event, item?.UID, item?.Type)\" [ngClass]=\"{\n selected: getIsItemSelected(item),\n highlighted: item?.UID + SEPARATOR + item?.Type === selectedItemId,\n 'line-view': viewType === 'lines',\n 'card-view': viewType === 'cards',\n 'small-card': cardSize === 'sm'\n }\" class=\"pull-left flip\"\n [ngStyle]=\"{ height: calculatedObjectHeight, visibility: !loadingItemsFromApi || item ? 'visible' : 'hidden' }\">\n <mat-checkbox *ngIf=\"showCardSelection\" class=\"pull-left flip card-selection\"\n [disabled]=\"getisItemDisabled(item)\" [checked]=\"getIsItemSelected(item)\"\n (change)=\"selectItemForActions($event, item?.UID, item?.IsSelectableForActions, item?.Type)\">\n </mat-checkbox>\n <pep-form [layoutType]=\"'card'\" [firstFieldAsLink]=\"firstFieldAsLink\" [checkForChanges]=\"checkForChanges\"\n [layout]=\"layout\" [data]=\"item\" [canEditObject]=\"!disabled\"\n [lockEvents]=\"lockItemInnerEvents || printMode\" [isActive]=\"\n (item?.UID + SEPARATOR + item?.Type === selectedItemId ||\n item?.UID + SEPARATOR + item?.Type === hoveredItemId) && deviceHasMouse\n \" (valueChange)=\"onValueChanged($event)\" (fieldClick)=\"onCustomizeFieldClick($event)\"\n (click)=\"itemClicked($event, item)\">\n </pep-form>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tableHeader>\n <div *ngIf=\"isTable\" class=\"table-header\" (mouseup)=\"onListResizeEnd($event)\"\n (mouseenter)=\"onListHeaderMouseEnter($event)\" (mouseleave)=\"onListHeaderMouseLeave($event)\"\n (mousemove)=\"onListResize($event)\">\n\n <div class=\"table-header-padding-top\"></div>\n <fieldset class=\"table-header-fieldset\">\n <mat-checkbox *ngIf=\"selectionTypeForActions !== 'none'\" #selectAllCB class=\"pull-left flip row-selection\" [ngClass]=\"{ 'md': tableViewType === 'compact' }\"\n type=\"checkbox\" [ngStyle]=\"{\n visibility:\n selectionTypeForActions == 'single' || \n (selectionTypeForActions == 'multi' && hideAllSelectionInMulti) ? 'hidden' : 'visible'\n }\"\n [indeterminate]=\"isAllSelected ? unSelectedItems.size > 0 && unSelectedItems.size < totalRows : (selectedItems.size > 0 && !getIsAllSelectedForActions())\"\n [disabled]=\"disabled || selectionTypeForActions === 'single'\" [checked]=\"getIsAllSelectedForActions()\"\n (change)=\"selectAllItemsForActions($event)\"></mat-checkbox>\n <fieldset>\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"header-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\" [ngClass]=\"{\n 'compact-view': tableViewType === 'compact',\n 'support-sorting': isSortableColumn(field.ApiName),\n 'has-sorting': field.ApiName === sortBy,\n 'is-resizing': field.ApiName === pressedColumn,\n 'is-first': j === 0 && selectionTypeForActions !== 'multi',\n 'is-last': j === layout?.ControlFields?.length - 1\n }\"\n (click)=\"isSortableColumn(field.ApiName) ? (onListSortingChange(field.ApiName, sortBy !== null && sortBy != field.ApiName ? true : !isAsc, $event)) : false\">\n\n <label id=\"{{ field.ApiName }}\"\n class=\"header-label body-sm pull-left flip text-align-{{ field.Layout.XAlignment }}\"\n title=\"{{ field.Title }}\">\n <span *ngIf=\"field.Mandatory\" class=\"mandatory\">\n <pep-icon name=\"system_must\"></pep-icon>\n </span>\n {{ field.Title != '' ? field.Title : ' '}}\n </label>\n\n <div *ngIf=\"supportResizing\" class=\"resize-box pull-right flip\"\n (mousedown)=\"onListResizeStart($event, field.ApiName, j)\">\n <div class=\"splitter\"></div>\n </div>\n\n <div *ngIf=\"isSortableColumn(field.ApiName)\" class=\"sorting-box pull-left flip\"\n [ngClass]=\"{ 'has-sorting': field.ApiName === sortBy }\">\n <mat-icon *ngIf=\"field.ApiName !== sortBy\">\n <pep-icon name=\"arrow_either\" class=\"asc\"></pep-icon>\n </mat-icon>\n <ng-container *ngIf=\"field.ApiName === sortBy\">\n <mat-icon *ngIf=\"!isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && isAsc }\"\n title=\"{{ 'LIST.SORT_ASC' | translate }}\">\n <pep-icon name=\"arrow_up\" class=\"asc\"></pep-icon>\n </mat-icon>\n <mat-icon *ngIf=\"isAsc\" [ngClass]=\"{ 'sort-by': field.ApiName === sortBy && !isAsc }\"\n title=\"{{ 'LIST.SORT_DESC' | translate }}\">\n <pep-icon name=\"arrow_down\" class=\"desc\"></pep-icon>\n </mat-icon>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </fieldset>\n </div>\n</ng-template>\n\n<ng-template #tableTotal>\n <div *ngIf=\"isTable && totalsRow?.length > 0 && totalsRow.length <= layout?.ControlFields.length\"\n class=\"table-total\">\n <fieldset class=\"table-header-fieldset\">\n <div *ngFor=\"let field of layout?.ControlFields; let j = index\" class=\"total-column pull-left flip\"\n [ngStyle]=\"{ width: field.calcTitleColumnWidthString }\">\n <label class=\"total-label body-sm text-align-{{ field.Layout.XAlignment }}\">\n {{ totalsRow[j] }}\n </label>\n </div>\n </fieldset>\n </div>\n</ng-template>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuStateChangeEvent,\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\n@Component({\n selector: 'pep-list-actions',\n templateUrl: './list-actions.component.html',\n styleUrls: ['./list-actions.component.scss'],\n})\n@Injectable()\nexport class PepListActionsComponent {\n @Input() actions: Array<PepMenuItem> = null;\n @Input() sizeType: PepSizeType = 'md';\n @Input() xPosition: 'before' | 'after' = 'before';\n @Input() hidden = false;\n\n @Output()\n actionClick: EventEmitter<IPepMenuItemClickEvent> = new EventEmitter<IPepMenuItemClickEvent>();\n @Output()\n stateChange: EventEmitter<IPepMenuStateChangeEvent> = new EventEmitter<IPepMenuStateChangeEvent>();\n @Output()\n menuClick: EventEmitter<void> = new EventEmitter<void>();\n\n onActionClicked(action): void {\n this.actionClick.emit(action);\n }\n\n onStateChanged(menuStateChangeEvent: IPepMenuStateChangeEvent): void {\n this.stateChange.emit(menuStateChangeEvent);\n }\n}\n","<pep-menu [xPosition]=\"xPosition\" [styleType]=\"'strong'\" [sizeType]=\"sizeType\" [items]=\"!hidden ? actions : null\"\n [hideOnEmptyItems]=\"true\" [iconName]=\"'system_edit'\" (menuItemClick)=\"onActionClicked($event)\"\n (stateChange)=\"onStateChanged($event)\" (menuClick)=\"menuClick.emit();\">\n</pep-menu>\n","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n Renderer2,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n} from '@angular/core';\nimport {\n ObjectsDataRow,\n UIControl,\n PepLayoutService,\n PepScreenSizeType,\n} from '@pepperi-addons/ngx-lib';\nimport { PepCarouselComponent } from '@pepperi-addons/ngx-lib/carousel';\n\nexport type PepListCarouselSizeType = 'xs' | 'sm' | 'md';\n\nexport interface IPepListCarouselItemClickEvent {\n source: ObjectsDataRow;\n}\n\n@Component({\n selector: 'pep-list-carousel',\n templateUrl: './list-carousel.component.html',\n styleUrls: ['./list-carousel.component.scss'],\n})\n@Injectable()\nexport class PepListCarouselComponent implements AfterViewInit, OnDestroy {\n @Input() duration = 1000;\n @Input() layout: UIControl = null;\n @Input() itemsToMove = 3;\n @Input() lockItemInnerEvents = true;\n @Input() hideArrowsInSmallScreen = true;\n\n private _items: Array<ObjectsDataRow> = null;\n @Input()\n set items(value: Array<ObjectsDataRow>) {\n this._items = value;\n this.moveTo(0);\n }\n get items() {\n return this._items;\n }\n\n private _itemSize: PepListCarouselSizeType = 'xs';\n @Input()\n set itemSize(value: PepListCarouselSizeType) {\n this._itemSize = value;\n this.moveTo(0);\n }\n get itemSize() {\n return this._itemSize;\n }\n\n @Output()\n itemClick: EventEmitter<IPepListCarouselItemClickEvent> = new EventEmitter<IPepListCarouselItemClickEvent>();\n\n @ViewChild('carousel', { read: PepCarouselComponent })\n carousel: PepCarouselComponent;\n\n prevDisabled = false;\n nextDisabled = false;\n screenSize: PepScreenSizeType;\n PepScreenSizeType = PepScreenSizeType;\n // deviceHasMouse = false;\n\n constructor(public layoutService: PepLayoutService) {\n // this.deviceHasMouse = this.layoutService.getDeviceHasMouse();\n }\n\n ngAfterViewInit(): void {\n this.layoutService.onResize$.subscribe((size: PepScreenSizeType) => {\n this.screenSize = size;\n });\n\n // this.layoutService.onMouseOver$.subscribe((deviceHasMouse: boolean) => {\n // this.deviceHasMouse = deviceHasMouse;\n // });\n }\n\n ngOnDestroy(): void {\n // if (this.itemClick) {\n // this.itemClick.unsubscribe();\n // }\n }\n\n itemClicked(item: ObjectsDataRow): void {\n this.itemClick.emit({ source: item });\n }\n\n moveLeft() {\n // this.carousel.moveLeft();\n const indexToMove = Math.max(\n this.carousel.currIndex - this.itemsToMove,\n 0\n );\n this.moveTo(indexToMove);\n }\n\n moveRight() {\n // this.carousel.moveRight();\n const indexToMove = Math.min(\n this.carousel.currIndex + this.itemsToMove,\n this.items.length\n );\n this.moveTo(indexToMove);\n }\n\n moveTo(index: number) {\n if (this.carousel) {\n this.carousel.moveTo(index);\n }\n }\n\n onReachesLeftBound(event: boolean) {\n this.prevDisabled = event;\n }\n\n onReachesRightBound(event: boolean) {\n this.nextDisabled = event;\n }\n}\n","<div class=\"carousel-container\">\n <ng-container *ngIf=\"items?.length > 0; then carouselBlock; else emptyBlock\"></ng-container>\n <ng-template #emptyBlock>\n <!-- No items -->\n </ng-template>\n <ng-template #carouselBlock>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_left_alt'\" [styleType]=\"'regular'\" [disabled]=\"prevDisabled\" (click)=\"moveLeft()\"\n class=\"carousel-arrow start-arrow\">\n </pep-button>\n <pep-carousel #carousel [xWheelEnabled]=\"false\" [snapDuration]=\"duration\"\n (reachesLeftBound)=\"onReachesLeftBound($event)\" (reachesRightBound)=\"onReachesRightBound($event)\">\n <ng-container *ngFor=\"let item of items\">\n <pep-form pepCarouselItem [layout]=\"layout\" [data]=\"item\" [layoutType]=\"'card'\"\n (click)=\"itemClicked(item)\" class=\"card-view \" [lockEvents]=\"lockItemInnerEvents\"\n [ngClass]=\"{ 'x-small-card': itemSize === 'xs', 'small-card': itemSize === 'sm'}\">\n </pep-form>\n </ng-container>\n </pep-carousel>\n <pep-button *ngIf=\"!(hideArrowsInSmallScreen && screenSize > PepScreenSizeType.SM)\"\n [iconName]=\"'arrow_right_alt'\" [styleType]=\"'regular'\" [disabled]=\"nextDisabled\" (click)=\"moveRight()\"\n class=\"carousel-arrow end-arrow\">\n </pep-button>\n </ng-template>\n</div>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { PepBreadCrumbItem } from '@pepperi-addons/ngx-lib/bread-crumbs';\n\nexport class IPepListChooserOption {\n key: string;\n text: string;\n}\n\nexport interface IPepListChooserOptionChangeEvent {\n source: IPepListChooserOption;\n}\n\n@Component({\n selector: 'pep-list-chooser',\n templateUrl: './list-chooser.component.html',\n styleUrls: ['./list-chooser.component.scss'],\n})\n@Injectable()\nexport class PepListChooserComponent {\n private _options: Array<IPepListChooserOption> = null;\n @Input()\n set options(value: Array<IPepListChooserOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.text };\n });\n\n if (this.menuItems?.length === 1) {\n this.breadCrumbsItems = [];\n this.breadCrumbsItems.push(\n new PepBreadCrumbItem({\n key: this.menuItems[0].key,\n text: this.menuItems[0].text,\n })\n );\n }\n }\n get options(): Array<IPepListChooserOption> {\n return this._options;\n }\n\n private _currentList: IPepListChooserOption = null;\n @Input()\n set currentList(value: IPepListChooserOption) {\n this._currentList = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.key);\n }\n get currentList(): IPepListChooserOption {\n return this._currentList;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n\n @Output()\n change: EventEmitter<IPepListChooserOptionChangeEvent> = new EventEmitter<IPepListChooserOptionChangeEvent>();\n\n breadCrumbsItems: Array<PepBreadCrumbItem> = null;\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentList = this.options.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentList });\n }\n}\n","<ng-container *ngIf=\"menuItems?.length > 1\">\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-container>\n<ng-container *ngIf=\"menuItems?.length == 1\">\n <pep-bread-crumbs [items]=\"breadCrumbsItems\" [addSpacing]=\"true\"></pep-bread-crumbs>\n</ng-container>","import {\n Component,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n OnInit,\n} from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n IPepMenuItemClickEvent,\n PepMenuItem,\n} from '@pepperi-addons/ngx-lib/menu';\nimport { IPepListSortingChangeEvent } from './list.model';\n\nexport class IPepListSortingOption {\n sortBy: string;\n title: string;\n iconName?: string;\n isAsc?: boolean;\n}\n\nexport interface IPepListSortingOptionChangeEvent {\n source: IPepListSortingOption;\n}\n\n@Component({\n selector: 'pep-list-sorting',\n templateUrl: './list-sorting.component.html',\n styleUrls: ['./list-sorting.component.scss'],\n})\n@Injectable()\nexport class PepListSortingComponent implements OnInit {\n private _options: Array<IPepListSortingOption> = null;\n @Input()\n set options(value: Array<IPepListSortingOption>) {\n this._options = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.sortBy, text: opt.title, iconName: opt.iconName };\n });\n }\n get options(): Array<IPepListSortingOption> {\n return this._options;\n }\n\n private _currentSorting: IPepListSortingOption = null;\n @Input()\n set currentSorting(value: IPepListSortingOption) {\n this._currentSorting = value;\n this.currentItem = this.menuItems.find((mi) => mi.key === value.sortBy);\n }\n get currentSorting(): IPepListSortingOption {\n return this._currentSorting;\n }\n\n @Input() sizeType: PepSizeType = 'md';\n @Output()\n change: EventEmitter<IPepListSortingOptionChangeEvent> = new EventEmitter<IPepListSortingOptionChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (\n this.currentSorting === null &&\n this.options &&\n this.options.length > 0\n ) {\n this.currentSorting = this.options[0];\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentSorting = this.options.find(\n (sorting) => sorting.sortBy === menuItemClickEvent.source.key\n );\n this.change.emit({ source: this.currentSorting });\n }\n}\n","<div class=\"sorting-container\">\n <div class=\"body-xs sort-by\">\n <span>{{ 'LIST.SORT_BY' | translate }}</span>\n </div>\n <pep-menu [type]=\"'select'\" [sizeType]=\"sizeType\" [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"'arrow_down'\" (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</div>","import { Component, Injectable, Input } from '@angular/core';\nimport { PepSizeType } from '@pepperi-addons/ngx-lib';\n\n@Component({\n selector: 'pep-list-total',\n templateUrl: './list-total.component.html',\n styleUrls: ['./list-total.component.scss', './list-total.component.theme.scss'],\n})\n@Injectable()\nexport class PepListTotalComponent {\n @Input() totalRows = -1;\n @Input() totalAmount = -1;\n @Input() isMapView = false;\n @Input() sizeType: PepSizeType = 'md';\n @Input() unknownCount = false;\n}\n","<div class=\"total-items-container\">\n <ng-container *ngIf=\"isMapView; then mapTemplate; else notMapTemplate\"></ng-container>\n\n <ng-template #notMapTemplate>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT' : 'LIST.TOTAL_RESULTS') | translate: { totalRows: totalRows ,unknownCount: unknownCount === true ? '+' : ''}\">\n </div>\n </ng-container>\n <ng-container *ngIf=\"totalAmount > 0\"> {{ 'LIST.TOTAL_OF' | translate }} {{ totalAmount }} </ng-container>\n </ng-template>\n\n <ng-template #mapTemplate>\n <ng-container *ngIf=\"totalAmount >= 0\">\n </ng-container>\n <ng-container *ngIf=\"totalRows >= 0\">\n <div class=\"body-{{sizeType}} total-items color-dimmed\"\n [innerHtml]=\"(totalRows === 1 ? 'LIST.TOTAL_RESULT_OUT_OF_RESULT' : 'LIST.TOTAL_RESULTS_OUT_OF') | translate: { xRows: totalAmount, totalRows: totalRows }\">\n </div>\n </ng-container>\n </ng-template>\n</div>","import {\n Component,\n OnInit,\n Injectable,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n} from '@angular/core';\nimport { PepSizeType, PepStyleType } from '@pepperi-addons/ngx-lib';\nimport {\n PepMenuItem,\n IPepMenuItemClickEvent,\n} from '@pepperi-addons/ngx-lib/menu';\n\nexport type PepListViewDisplayType = 'menu' | 'buttons';\n\nexport class IPepListView {\n key: string;\n iconName: string;\n title?: string;\n}\n\nexport interface IListViewChangeEvent {\n source: IPepListView;\n}\n\n@Component({\n selector: 'pep-list-views',\n templateUrl: './list-views.component.html',\n styleUrls: ['./list-views.component.scss'],\n})\n@Injectable()\nexport class PepListViewsComponent implements OnInit {\n private _views: Array<IPepListView> = null;\n @Input()\n set views(value: Array<IPepListView>) {\n this._views = value;\n\n this.menuItems = value.map((opt) => {\n return { key: opt.key, text: opt.title, iconName: opt.iconName };\n });\n }\n get views(): Array<IPepListView> {\n return this._views;\n }\n\n private _currentView: IPepListView = null;\n @Input()\n set currentView(value: IPepListView) {\n this._currentView = value;\n\n if (this.displayType === 'menu') {\n this.currentItem = this.menuItems.find(\n (mi) => mi.key === value.key\n );\n }\n }\n get currentView(): IPepListView {\n return this._currentView;\n }\n\n @Input() displayType: PepListViewDisplayType = 'menu';\n @Input() styleType: PepStyleType = 'weak';\n @Input() sizeType: PepSizeType = 'md';\n @Input() classNames = '';\n\n @Output()\n change: EventEmitter<IListViewChangeEvent> = new EventEmitter<IListViewChangeEvent>();\n\n menuItems: Array<PepMenuItem> = null;\n currentItem: PepMenuItem = null;\n\n ngOnInit(): void {\n if (this.displayType === 'buttons') {\n if (\n this.currentView === null &&\n this.views &&\n this.views.length > 0\n ) {\n this.currentView = this.views[0];\n }\n }\n }\n\n onMenuItemClicked(menuItemClickEvent: IPepMenuItemClickEvent): void {\n this.currentView = this.views.find(\n (list) => list.key === menuItemClickEvent.source.key\n );\n this.raiseChangeEvent();\n }\n\n onViewChanged(view: IPepListView): void {\n this.currentView = view;\n this.raiseChangeEvent();\n }\n\n private raiseChangeEvent(): void {\n this.change.emit({ source: this.currentView });\n }\n}\n","<ng-container *ngIf=\"displayType === 'menu' then menuTemplate else buttonsTemplate\">\n</ng-container>\n<ng-template #menuTemplate>\n <pep-menu [type]=\"'select'\" [styleType]=\"styleType\" [sizeType]=\"sizeType\" [classNames]=\"classNames\"\n [items]=\"menuItems\" [selectedItem]=\"currentItem\"\n [iconName]=\"currentItem?.iconName ? currentItem?.iconName : 'arrow_down'\"\n (menuItemClick)=\"onMenuItemClicked($event)\"></pep-menu>\n</ng-template>\n<ng-template #buttonsTemplate>\n <div class=\"buttons-wrapper pep-spacing-element-negative\">\n <button *ngFor=\"let view of views\" mat-button [title]=\"view.title\" [disabled]=\"view.key === currentView?.key\"\n class=\"pep-button icon-button pep-spacing-element {{ sizeType }} {{ styleType }} {{ classNames }}\"\n pepRtlDirection pepMenuBlur (click)=\"onViewChanged(view)\">\n <mat-icon>\n <pep-icon name=\"{{ view?.iconName }}\"></pep-icon>\n </mat-icon>\n </button>\n </div>\n</ng-template>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ObjectsDataRow } from '@pepperi-addons/ngx-lib';\r\nimport { PepListSelectionType } from './list.model';\r\n\r\n@Pipe({\r\n name: 'isItemSelected'\r\n})\r\nexport class IsItemSelectedPipe implements PipeTransform {\r\n SEPARATOR = ',';\r\n\r\n private getUniqItemId(itemId: string, itemType = ''): string {\r\n return itemId + this.SEPARATOR + itemType;\r\n }\r\n\r\n transform(item: ObjectsDataRow, selectionTypeForActions: PepListSelectionType, selectedItemId: string, isAllSelected: boolean,\r\n selectedItems: Map<string, string>, unSelectedItems: Map<string, string>): any {\r\n let isSelected = false;\r\n\r\n if (selectionTypeForActions === 'single') {\r\n isSelected = selectedItemId === this.getUniqItemId(item?.UID, item?.Type.toString());\r\n }\r\n // else if (selectionTypeForActions === 'single-action') {\r\n // isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n // }\r\n else if (selectionTypeForActions === 'multi') {\r\n if (item?.IsSelectableForActions) {\r\n isSelected = (isAllSelected && !unSelectedItems.has(item?.UID)) || selectedItems.has(item?.UID);\r\n }\r\n }\r\n\r\n return isSelected;\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'isItemDisabled'\r\n})\r\nexport class IsItemDisabledPipe implements PipeTransform {\r\n transform(item: ObjectsDataRow, lockItemInnerEvents: boolean, printMode: boolean): any {\r\n return (\r\n printMode || lockItemInnerEvents || (item && !item.IsSelectableForActions)\r\n );\r\n }\r\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepBreadCrumbsModule } from '@pepperi-addons/ngx-lib/bread-crumbs';\nimport { PepButtonModule } from '@pepperi-addons/ngx-lib/button';\nimport { PepCarouselModule } from '@pepperi-addons/ngx-lib/carousel';\nimport {\n PepIconModule,\n PepIconRegistry,\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n} from '@pepperi-addons/ngx-lib/icon';\nimport { PepFormModule } from '@pepperi-addons/ngx-lib/form';\nimport { PepMenuModule } from '@pepperi-addons/ngx-lib/menu';\nimport { PepTextboxModule } from '@pepperi-addons/ngx-lib/textbox';\n\n// import { PepListOldComponent } from './list_old.component';\nimport { PepListComponent } from './list.component';\nimport { PepListActionsComponent } from './list-actions.component';\nimport { PepListCarouselComponent } from './list-carousel.component';\nimport { PepListChooserComponent } from './list-chooser.component';\nimport { PepListPagerComponent } from './list-pager.component';\nimport { PepListSortingComponent } from './list-sorting.component';\nimport { PepListTotalComponent } from './list-total.component';\nimport { PepListViewsComponent } from './list-views.component';\n\nconst listComponents = [\n // PepListOldComponent,\n PepListComponent,\n PepListActionsComponent,\n PepListCarouselComponent,\n PepListChooserComponent,\n PepListPagerComponent,\n PepListSortingComponent,\n PepListTotalComponent,\n PepListViewsComponent,\n];\n\nimport { IsItemDisabledPipe, IsItemSelectedPipe } from './list.pipes';\n\nconst listPipes = [\n IsItemSelectedPipe,\n IsItemDisabledPipe\n];\n\nimport { VirtualScrollerModule } from './virtual-scroller';\n// import { PepVirtualScrollComponent } from './virtual-scroll.component';\n@NgModule({\n imports: [\n CommonModule,\n // Material modules,\n MatCommonModule,\n MatButtonModule,\n MatCheckboxModule,\n MatRadioModule,\n MatIconModule,\n MatMenuModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepBreadCrumbsModule,\n PepButtonModule,\n PepCarouselModule,\n PepIconModule,\n PepFormModule,\n PepMenuModule,\n PepTextboxModule,\n VirtualScrollerModule\n ],\n exports: [listComponents],\n declarations: [listComponents, listPipes],\n})\nexport class PepListModule {\n constructor(private pepIconRegistry: PepIconRegistry) {\n this.pepIconRegistry.registerIcons([\n pepIconArrowDown,\n pepIconArrowEither,\n pepIconArrowUp,\n pepIconSystemMust,\n pepIconArrowRight,\n pepIconArrowRightAlt,\n pepIconArrowLeft,\n pepIconArrowLeftAlt,\n ]);\n }\n}\n","/*\n * Public API Surface of ngx-lib/list\n */\nexport * from './list.module';\nexport * from './list.model';\n// export * from './list_old.component';\nexport * from './list.component';\nexport * from './list-actions.component';\nexport * from './list-carousel.component';\nexport * from './list-chooser.component';\nexport * from './list-pager.component';\nexport * from './list-sorting.component';\nexport * from './list-total.component';\nexport * from './list-views.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i3","i4","i5","i6","i8.VirtualScrollerComponent","i9.PepListPagerComponent","i10","i1","i2"],"mappings":"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"}