@pepperi-addons/ngx-lib 0.4.2-beta.8 → 0.4.2-beta.80

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 (193) hide show
  1. package/attachment/attachment.component.d.ts +11 -2
  2. package/button/button.component.d.ts +8 -8
  3. package/core/common/services/color.service.d.ts +1 -0
  4. package/core/common/services/file.service.d.ts +7 -2
  5. package/dialog/dialog.service.d.ts +1 -0
  6. package/draggable-items/draggable-items.component.d.ts +3 -3
  7. package/draggable-items/draggable-items.module.d.ts +1 -1
  8. package/esm2020/address/address.component.mjs +1 -1
  9. package/esm2020/attachment/attachment.component.mjs +38 -18
  10. package/esm2020/button/button.component.mjs +7 -7
  11. package/esm2020/chips/chips.component.mjs +2 -2
  12. package/esm2020/color/color-picker.component.mjs +1 -1
  13. package/esm2020/core/common/services/color.service.mjs +27 -1
  14. package/esm2020/core/common/services/file.service.mjs +57 -20
  15. package/esm2020/core/common/services/session.service.mjs +2 -1
  16. package/esm2020/core/customization/customization.model.mjs +7 -6
  17. package/esm2020/core/customization/customization.service.mjs +13 -4
  18. package/esm2020/core/http/services/http.service.mjs +1 -1
  19. package/esm2020/dialog/dialog.component.mjs +3 -3
  20. package/esm2020/dialog/dialog.service.mjs +22 -1
  21. package/esm2020/draggable-items/draggable-items.component.mjs +7 -7
  22. package/esm2020/draggable-items/draggable-items.module.mjs +6 -6
  23. package/esm2020/files-uploader/files-uploader.component.mjs +50 -45
  24. package/esm2020/form/field-generator.component.mjs +3 -3
  25. package/esm2020/form/form.component.mjs +4 -3
  26. package/esm2020/form/internal-field-generator.component.mjs +1 -1
  27. package/esm2020/form/internal-form.component.mjs +1 -1
  28. package/esm2020/form/internal-list.component.mjs +2 -2
  29. package/esm2020/image/image.component.mjs +32 -16
  30. package/esm2020/image/image.service.mjs +2 -4
  31. package/esm2020/images-filmstrip/images-filmstrip.component.mjs +2 -2
  32. package/esm2020/link/link.component.mjs +33 -58
  33. package/esm2020/list/list.component.mjs +85 -17
  34. package/esm2020/menu/menu.component.mjs +3 -3
  35. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +1 -1
  36. package/esm2020/quantity-selector/quantity-selector.component.mjs +20 -25
  37. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +1 -1
  38. package/esm2020/select/select.component.mjs +39 -18
  39. package/esm2020/select-panel/select-panel.component.mjs +2 -2
  40. package/esm2020/signature/public-api.mjs +2 -1
  41. package/esm2020/signature/signature-dialog.component.mjs +78 -0
  42. package/esm2020/signature/signature.component.mjs +117 -89
  43. package/esm2020/signature/signature.module.mjs +6 -5
  44. package/esm2020/skeleton-loader/pepperi-addons-ngx-lib-skeleton-loader.mjs +5 -0
  45. package/esm2020/skeleton-loader/public-api.mjs +6 -0
  46. package/esm2020/skeleton-loader/skeleton-loader.component.mjs +44 -0
  47. package/esm2020/skeleton-loader/skeleton-loader.module.mjs +24 -0
  48. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +3 -3
  49. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +1 -1
  50. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +1 -1
  51. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +3 -3
  52. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +1 -1
  53. package/esm2020/textbox/textbox.component.mjs +9 -3
  54. package/esm2020/top-bar/top-bar.component.mjs +2 -2
  55. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +1 -1
  56. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  57. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +37 -17
  58. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  59. package/fesm2015/pepperi-addons-ngx-lib-button.mjs +6 -6
  60. package/fesm2015/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  61. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +2 -2
  62. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  63. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  64. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs +23 -2
  65. package/fesm2015/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  66. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs +11 -11
  67. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  68. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs +49 -44
  69. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  70. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +8 -7
  71. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  72. package/fesm2015/pepperi-addons-ngx-lib-image.mjs +32 -18
  73. package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  74. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +1 -1
  75. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  76. package/fesm2015/pepperi-addons-ngx-lib-link.mjs +32 -57
  77. package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  78. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +84 -17
  79. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  80. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +2 -2
  81. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  82. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  83. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  84. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +19 -24
  85. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  86. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +1 -1
  87. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  88. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs +2 -2
  89. package/fesm2015/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  90. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +37 -16
  91. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  92. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +205 -102
  93. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  94. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs +78 -0
  95. package/fesm2015/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -0
  96. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +7 -7
  97. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  98. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +8 -2
  99. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  100. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs +2 -2
  101. package/fesm2015/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  102. package/fesm2015/pepperi-addons-ngx-lib.mjs +101 -27
  103. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  104. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +1 -1
  105. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  106. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +37 -17
  107. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  108. package/fesm2020/pepperi-addons-ngx-lib-button.mjs +6 -6
  109. package/fesm2020/pepperi-addons-ngx-lib-button.mjs.map +1 -1
  110. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +2 -2
  111. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -1
  112. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  113. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs +23 -2
  114. package/fesm2020/pepperi-addons-ngx-lib-dialog.mjs.map +1 -1
  115. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs +11 -11
  116. package/fesm2020/pepperi-addons-ngx-lib-draggable-items.mjs.map +1 -1
  117. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs +49 -44
  118. package/fesm2020/pepperi-addons-ngx-lib-files-uploader.mjs.map +1 -1
  119. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +8 -7
  120. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  121. package/fesm2020/pepperi-addons-ngx-lib-image.mjs +32 -18
  122. package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  123. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +1 -1
  124. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  125. package/fesm2020/pepperi-addons-ngx-lib-link.mjs +32 -57
  126. package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  127. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +84 -16
  128. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  129. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +2 -2
  130. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  131. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  132. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  133. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +19 -24
  134. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  135. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +1 -1
  136. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  137. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs +2 -2
  138. package/fesm2020/pepperi-addons-ngx-lib-select-panel.mjs.map +1 -1
  139. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +37 -16
  140. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  141. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +201 -102
  142. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  143. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs +76 -0
  144. package/fesm2020/pepperi-addons-ngx-lib-skeleton-loader.mjs.map +1 -0
  145. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +7 -7
  146. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  147. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +8 -2
  148. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  149. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs +2 -2
  150. package/fesm2020/pepperi-addons-ngx-lib-top-bar.mjs.map +1 -1
  151. package/fesm2020/pepperi-addons-ngx-lib.mjs +101 -27
  152. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  153. package/files-uploader/files-uploader.component.d.ts +7 -4
  154. package/image/image.component.d.ts +11 -3
  155. package/link/link.component.d.ts +23 -27
  156. package/list/list.component.d.ts +7 -1
  157. package/menu/menu.component.d.ts +1 -1
  158. package/package.json +10 -2
  159. package/quantity-selector/quantity-selector.component.d.ts +0 -2
  160. package/select/select.component.d.ts +9 -2
  161. package/signature/public-api.d.ts +1 -0
  162. package/signature/signature-dialog.component.d.ts +29 -0
  163. package/signature/signature.component.d.ts +7 -16
  164. package/signature/signature.module.d.ts +16 -15
  165. package/skeleton-loader/index.d.ts +5 -0
  166. package/skeleton-loader/public-api.d.ts +2 -0
  167. package/skeleton-loader/skeleton-loader.component.d.ts +20 -0
  168. package/skeleton-loader/skeleton-loader.component.theme.scss +15 -0
  169. package/skeleton-loader/skeleton-loader.module.d.ts +9 -0
  170. package/src/core/style/abstracts/AbstractsIntro.stories.mdx +7 -0
  171. package/src/core/style/abstracts/functions.scss +11 -11
  172. package/src/core/style/abstracts/mixins.scss +9 -6
  173. package/src/core/style/abstracts/variables.scss +38 -18
  174. package/src/core/style/base/BorderRadius.stories.mdx +59 -0
  175. package/src/core/style/base/Breakpoints.stories.mdx +36 -0
  176. package/src/core/style/base/Colors.stories.mdx +128 -0
  177. package/src/core/style/base/Shadows.stories.mdx +69 -0
  178. package/src/core/style/base/Spacing.stories.mdx +75 -0
  179. package/src/core/style/base/States.stories.mdx +62 -0
  180. package/src/core/style/base/Typography.stories.mdx +89 -0
  181. package/src/core/style/base/ZIndex.stories.mdx +47 -0
  182. package/src/core/style/base/base.scss +8 -10
  183. package/src/core/style/base/borderRadius.component.ts +27 -0
  184. package/src/core/style/base/breakpoints.component.ts +14 -0
  185. package/src/core/style/base/colors.component.ts +174 -0
  186. package/src/core/style/base/shadows.component.ts +90 -0
  187. package/src/core/style/base/spacing.component.ts +71 -0
  188. package/src/core/style/base/states.component.ts +84 -0
  189. package/src/core/style/base/typography.component.ts +94 -0
  190. package/src/core/style/base/typography.scss +54 -48
  191. package/src/core/style/base/zIndex.component.ts +25 -0
  192. package/src/core/style/components/file.scss +4 -4
  193. package/src/core/style/components/general.scss +5 -1
@@ -1227,6 +1227,7 @@ class PepListComponent {
1227
1227
  this.cd = cd;
1228
1228
  this.renderer = renderer;
1229
1229
  this.zone = zone;
1230
+ this.cachedItemsNumber = -1;
1230
1231
  this.noDataFoundMsg = null;
1231
1232
  this.selectionTypeForActions = 'multi';
1232
1233
  this.showCardSelection = false;
@@ -1288,6 +1289,7 @@ class PepListComponent {
1288
1289
  this.startX = 0;
1289
1290
  this.startWidth = 0;
1290
1291
  this.tableStartWidth = 0;
1292
+ this.lastColumnsWidth = [];
1291
1293
  // For sorting
1292
1294
  this.isAsc = true;
1293
1295
  this.sortBy = '';
@@ -1378,6 +1380,9 @@ class PepListComponent {
1378
1380
  // }
1379
1381
  this.saveSortingToSession();
1380
1382
  }
1383
+ getCachedItemsNumber() {
1384
+ return this.cachedItemsNumber >= 0 ? this.cachedItemsNumber : PepListComponent.TOP_ITEMS_ARRAY;
1385
+ }
1381
1386
  getScrollingElement() {
1382
1387
  return this.parentScroll ? this.parentScroll : this.virtualScroller?.contentElementRef.nativeElement.parentElement;
1383
1388
  }
@@ -1433,11 +1438,13 @@ class PepListComponent {
1433
1438
  }
1434
1439
  }
1435
1440
  }
1441
+ getSelectionCheckBoxWidth() {
1442
+ return this.selectionTypeForActions === 'multi' ? 44 : 0;
1443
+ }
1436
1444
  setContainerWidth() {
1437
1445
  if (!this.hostElement.nativeElement.parentElement) {
1438
1446
  return;
1439
1447
  }
1440
- const selectionCheckBoxWidth = this.selectionTypeForActions === 'multi' ? 44 : 0;
1441
1448
  const rowHeight = 40; // the table row height (2.5rem * 16font-size).
1442
1449
  const style = getComputedStyle(this.hostElement.nativeElement.parentElement);
1443
1450
  // The container-fluid class padding left + right + border
@@ -1450,7 +1457,7 @@ class PepListComponent {
1450
1457
  ? this.layoutService.getScrollbarWidth()
1451
1458
  : 0;
1452
1459
  // The selectionCheckBoxWidth width + containerFluidSpacing + this.tableScrollWidth.
1453
- const rowHeaderWidthToSub = containerFluidSpacing + selectionCheckBoxWidth + this.tableScrollWidth;
1460
+ const rowHeaderWidthToSub = containerFluidSpacing + this.getSelectionCheckBoxWidth() + this.tableScrollWidth;
1454
1461
  this.containerWidth = parentContainer.offsetWidth - rowHeaderWidthToSub;
1455
1462
  }
1456
1463
  saveSortingToSession() {
@@ -1535,13 +1542,56 @@ class PepListComponent {
1535
1542
  if (this.containerWidth <= 0) {
1536
1543
  this.setContainerWidth();
1537
1544
  }
1538
- this.calcColumnsWidth();
1545
+ const isLastColumnsWidthSet = this.setLastColumnsWidth();
1546
+ // Set the layout only if the last columns width couldn't set.
1547
+ if (!isLastColumnsWidthSet) {
1548
+ this.calcColumnsWidth();
1549
+ }
1539
1550
  this.checkForChanges = new Date().getTime();
1540
1551
  }
1552
+ setLastColumnsWidth() {
1553
+ let res = false;
1554
+ let totalCalcColsWidth = 0;
1555
+ let widthToSet = 'inherit';
1556
+ if (this.lastColumnsWidth.length > 0) {
1557
+ // Check if this is the same UI control for table.
1558
+ if (this.lastColumnsWidth.length === this._layout.ControlFields.length) {
1559
+ let uiControlsAreTheSame = true;
1560
+ for (let index = 0; index < this._layout.ControlFields.length; index++) {
1561
+ const uiControlField = this._layout.ControlFields[index];
1562
+ if (uiControlField.ApiName !== this.lastColumnsWidth[index].columnAPIName) {
1563
+ uiControlsAreTheSame = false;
1564
+ break;
1565
+ }
1566
+ }
1567
+ if (uiControlsAreTheSame) {
1568
+ for (let index = 0; index < this._layout.ControlFields.length; index++) {
1569
+ const uiControlField = this._layout.ControlFields[index];
1570
+ uiControlField.calcColumnWidth = this.lastColumnsWidth[index].calcColumnWidth;
1571
+ uiControlField.calcTitleColumnWidthString = this.lastColumnsWidth[index].calcTitleColumnWidthString;
1572
+ uiControlField.calcColumnWidthString = this.lastColumnsWidth[index].calcColumnWidthString;
1573
+ totalCalcColsWidth += this.lastColumnsWidth[index].calcColumnWidth;
1574
+ }
1575
+ widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px';
1576
+ this.setColumnsWidth(widthToSet);
1577
+ res = true;
1578
+ }
1579
+ }
1580
+ }
1581
+ return res;
1582
+ }
1583
+ setColumnsWidth(widthToSet) {
1584
+ this.renderer.setStyle(this.hostElement.nativeElement, 'width', widthToSet);
1585
+ setTimeout(() => {
1586
+ // Do this only after UI is change cause the property isTable is Input and can refresh after this thread.
1587
+ if (this.virtualScroller) {
1588
+ this.renderer.setStyle(this.virtualScroller.contentElementRef.nativeElement, 'width', widthToSet === 'inherit' ? '100%' : widthToSet);
1589
+ }
1590
+ }, 0);
1591
+ }
1541
1592
  calcColumnsWidth() {
1542
1593
  const fixedMultiple = 3.78; // for converting em to pixel.
1543
1594
  const length = this._layout.ControlFields.length;
1544
- const selectionCheckBoxWidth = this.selectionTypeForActions === 'multi' ? 44 : 0;
1545
1595
  // Is table AND there is at least one column of width type of percentage.
1546
1596
  if (this.isTable) {
1547
1597
  if (this._layout && this._layout.ControlFields) {
@@ -1557,6 +1607,7 @@ class PepListComponent {
1557
1607
  }
1558
1608
  }
1559
1609
  let totalCalcColsWidth = 0;
1610
+ let widthToSet = 'inherit';
1560
1611
  // Calc by percentage
1561
1612
  if (this.hasColumnWidthOfTypePercentage) {
1562
1613
  const totalColsWidth = this._layout.ControlFields.map((cf) => cf.ColumnWidth).reduce((sum, current) => sum + current);
@@ -1572,7 +1623,6 @@ class PepListComponent {
1572
1623
  totalCalcColsWidth += uiControlField.calcColumnWidth;
1573
1624
  }
1574
1625
  }
1575
- this.renderer.setStyle(this.hostElement.nativeElement, 'width', 'inherit');
1576
1626
  }
1577
1627
  else {
1578
1628
  for (let index = 0; index < length; index++) {
@@ -1580,16 +1630,16 @@ class PepListComponent {
1580
1630
  .ControlFields[index];
1581
1631
  const currentFixedWidth = Math.floor(uiControlField.ColumnWidth * fixedMultiple);
1582
1632
  if (index === length - 1) {
1583
- uiControlField.calcTitleColumnWidthString = currentFixedWidth + 'px';
1584
- uiControlField.calcColumnWidthString = currentFixedWidth + 'px';
1633
+ uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';
1585
1634
  }
1586
1635
  else {
1587
1636
  uiControlField.calcTitleColumnWidthString = uiControlField.calcColumnWidthString = currentFixedWidth + 'px';
1588
1637
  }
1589
1638
  totalCalcColsWidth += currentFixedWidth;
1590
1639
  }
1591
- this.renderer.setStyle(this.hostElement.nativeElement, 'width', totalCalcColsWidth + selectionCheckBoxWidth + 'px');
1640
+ widthToSet = (totalCalcColsWidth + this.getSelectionCheckBoxWidth()) + 'px';
1592
1641
  }
1642
+ this.setColumnsWidth(widthToSet);
1593
1643
  }
1594
1644
  calcObjectHeight() {
1595
1645
  setTimeout(() => {
@@ -1991,6 +2041,9 @@ class PepListComponent {
1991
2041
  }
1992
2042
  }
1993
2043
  }
2044
+ if (!this.isTable) {
2045
+ this.lastColumnsWidth = [];
2046
+ }
1994
2047
  this.setLayout();
1995
2048
  // setTimeout(() => {
1996
2049
  this.onListLoad();
@@ -2001,7 +2054,7 @@ class PepListComponent {
2001
2054
  return; // Event isn't supplied.
2002
2055
  }
2003
2056
  // Clean array
2004
- if (this.itemsCounter + items.length > PepListComponent.TOP_ITEMS_ARRAY) {
2057
+ if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {
2005
2058
  this.cleanItems();
2006
2059
  }
2007
2060
  const startIndex = event.fromIndex ?? 0;
@@ -2018,7 +2071,7 @@ class PepListComponent {
2018
2071
  return; // Event isn't supplied.
2019
2072
  }
2020
2073
  // Clean array
2021
- if (this.itemsCounter + items.length > PepListComponent.TOP_ITEMS_ARRAY) {
2074
+ if (this.itemsCounter + items.length > this.getCachedItemsNumber()) {
2022
2075
  this.cleanItems();
2023
2076
  }
2024
2077
  // const loadInChunks = this.itemsCounter === 0;
@@ -2115,13 +2168,14 @@ class PepListComponent {
2115
2168
  onWinResize(e) {
2116
2169
  this.refresh();
2117
2170
  this.containerWidth = 0;
2171
+ this.lastColumnsWidth = [];
2118
2172
  this.setLayout();
2119
2173
  }
2120
2174
  onListResizeStart(event, columnKey) {
2121
2175
  this.pressedColumn = columnKey;
2122
2176
  this.startX = event.x;
2123
2177
  this.startWidth = event.target.closest('.header-column').offsetWidth;
2124
- this.tableStartWidth = this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;
2178
+ this.tableStartWidth = this.hostElement.nativeElement.offsetWidth; // this.virtualScroller?.contentElementRef.nativeElement.offsetWidth;
2125
2179
  }
2126
2180
  onListResize(event) {
2127
2181
  if (this.pressedColumn.length > 0) {
@@ -2154,9 +2208,10 @@ class PepListComponent {
2154
2208
  }
2155
2209
  totalCalcColsWidth += uiControlField.calcColumnWidth;
2156
2210
  }
2157
- this.renderer.setStyle(this.hostElement.nativeElement, 'width', this.tableStartWidth + widthToAdd + 'px');
2211
+ const widthToSet = (this.tableStartWidth + widthToAdd) + 'px';
2212
+ this.setColumnsWidth(widthToSet);
2213
+ this.checkForChanges = new Date().getTime();
2158
2214
  }
2159
- this.checkForChanges = new Date().getTime();
2160
2215
  }
2161
2216
  }
2162
2217
  onListResizeEnd(event) {
@@ -2171,6 +2226,17 @@ class PepListComponent {
2171
2226
  this.initResizeData();
2172
2227
  }, 0);
2173
2228
  }
2229
+ this.lastColumnsWidth = [];
2230
+ // Set the last columns width
2231
+ for (let index = 0; index < this._layout.ControlFields.length; index++) {
2232
+ const uiControlField = this._layout.ControlFields[index];
2233
+ this.lastColumnsWidth.push({
2234
+ columnAPIName: uiControlField.ApiName,
2235
+ calcColumnWidth: uiControlField.calcColumnWidth,
2236
+ calcTitleColumnWidthString: uiControlField.calcTitleColumnWidthString,
2237
+ calcColumnWidthString: uiControlField.calcColumnWidthString
2238
+ });
2239
+ }
2174
2240
  event.stopPropagation();
2175
2241
  }
2176
2242
  }
@@ -2306,15 +2372,17 @@ PepListComponent.UN_SELECTED_ITEMS_STATE_KEY = 'UnSelectedItems';
2306
2372
  PepListComponent.ALL_SELECTED_STATE_KEY = 'AllSelected';
2307
2373
  PepListComponent.SORT_BY_STATE_KEY = 'SortBy';
2308
2374
  PepListComponent.ASCENDING_STATE_KEY = 'IsAscending';
2309
- PepListComponent.MINIMUM_COLUMN_WIDTH = 48;
2375
+ PepListComponent.MINIMUM_COLUMN_WIDTH = 72;
2310
2376
  PepListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepListComponent, deps: [{ token: i0.ElementRef }, { token: i1.PepLayoutService }, { token: i1.PepSessionService }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
2311
- PepListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepListComponent, selector: "pep-list", inputs: { noDataFoundMsg: "noDataFoundMsg", selectionTypeForActions: "selectionTypeForActions", showCardSelection: "showCardSelection", hideAllSelectionInMulti: "hideAllSelectionInMulti", cardSize: "cardSize", tableViewType: "tableViewType", viewType: "viewType", firstFieldAsLink: "firstFieldAsLink", supportSorting: "supportSorting", supportResizing: "supportResizing", parentScroll: "parentScroll", disabled: "disabled", lockEvents: "lockEvents", lockItemInnerEvents: "lockItemInnerEvents", printMode: "printMode", isReport: "isReport", zebraStripes: "zebraStripes", totalsRow: "totalsRow", pagerType: "pagerType", pageSize: "pageSize", pageIndex: "pageIndex", bufferAmount: "bufferAmount", scrollAnimationTime: "scrollAnimationTime", scrollDebounceTime: "scrollDebounceTime", scrollThrottlingTime: "scrollThrottlingTime", useAsWebComponent: "useAsWebComponent" }, outputs: { itemClick: "itemClick", fieldClick: "fieldClick", valueChange: "valueChange", sortingChange: "sortingChange", selectedItemsChange: "selectedItemsChange", selectedItemChange: "selectedItemChange", selectAllClick: "selectAllClick", listLoad: "listLoad", loadItems: "loadItems", loadPage: "loadPage", startIndexChange: "startIndexChange" }, host: { listeners: { "window:resize": "onWinResize($event)" } }, viewQueries: [{ propertyName: "virtualScroller", first: true, predicate: VirtualScrollerComponent, descendants: true }, { propertyName: "selectAllCB", first: true, predicate: ["selectAllCB"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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)\">\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>", styles: [":host{height:inherit;display:flex;flex-direction:column}.no-data{margin:var(--pep-spacing-2xl, 2rem) 0}.no-data-suggestions .suggestions-title{margin:var(--pep-spacing-lg, 1rem) 0 var(--pep-spacing-sm, .5rem)}.no-data-suggestions .suggestions-list{margin:0;padding:0;padding-inline-start:var(--pep-spacing-2xl, 2rem)}.virtual-scroller{min-height:5rem;height:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i7.PepFormComponent, selector: "pep-form", inputs: ["isInternal", "isReport", "layout", "lockEvents", "canEditObject", "data", "lockFields", "isActive", "layoutType", "objectId", "parentId", "searchCode", "showTitle", "firstFieldAsLink", "checkForChanges"], outputs: ["valueChange", "formValidationChange", "fieldClick", "internalFormFieldClick", "internalFormFieldChange"] }, { kind: "component", type: VirtualScrollerComponent, selector: "virtual-scroller,[virtualScroller]", inputs: ["disable", "executeRefreshOutsideAngularZone", "enableUnequalChildrenSizes", "RTL", "useMarginInsteadOfTranslate", "modifyOverflowStyleOfParentScroll", "stripedTable", "scrollbarWidth", "scrollbarHeight", "childWidth", "childHeight", "ssrChildWidth", "ssrChildHeight", "ssrViewportWidth", "ssrViewportHeight", "bufferAmount", "scrollAnimationTime", "resizeBypassRefreshThreshold", "scrollThrottlingTime", "scrollDebounceTime", "checkResizeInterval", "items", "compareItems", "horizontal", "parentScroll"], outputs: ["vsChildRectChange", "vsUpdate", "vsChange", "vsStart", "vsEnd"], exportAs: ["virtualScroller"] }, { kind: "component", type: PepListPagerComponent, selector: "pep-list-pager", inputs: ["disabled", "pageIndex", "length", "pageSize"], outputs: ["pagerChange"] }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] });
2377
+ PepListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepListComponent, selector: "pep-list", inputs: { cachedItemsNumber: "cachedItemsNumber", noDataFoundMsg: "noDataFoundMsg", selectionTypeForActions: "selectionTypeForActions", showCardSelection: "showCardSelection", hideAllSelectionInMulti: "hideAllSelectionInMulti", cardSize: "cardSize", tableViewType: "tableViewType", viewType: "viewType", firstFieldAsLink: "firstFieldAsLink", supportSorting: "supportSorting", supportResizing: "supportResizing", parentScroll: "parentScroll", disabled: "disabled", lockEvents: "lockEvents", lockItemInnerEvents: "lockItemInnerEvents", printMode: "printMode", isReport: "isReport", zebraStripes: "zebraStripes", totalsRow: "totalsRow", pagerType: "pagerType", pageSize: "pageSize", pageIndex: "pageIndex", bufferAmount: "bufferAmount", scrollAnimationTime: "scrollAnimationTime", scrollDebounceTime: "scrollDebounceTime", scrollThrottlingTime: "scrollThrottlingTime", useAsWebComponent: "useAsWebComponent" }, outputs: { itemClick: "itemClick", fieldClick: "fieldClick", valueChange: "valueChange", sortingChange: "sortingChange", selectedItemsChange: "selectedItemsChange", selectedItemChange: "selectedItemChange", selectAllClick: "selectAllClick", listLoad: "listLoad", loadItems: "loadItems", loadPage: "loadPage", startIndexChange: "startIndexChange" }, host: { listeners: { "window:resize": "onWinResize($event)" } }, viewQueries: [{ propertyName: "virtualScroller", first: true, predicate: VirtualScrollerComponent, descendants: true }, { propertyName: "selectAllCB", first: true, predicate: ["selectAllCB"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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)\">\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>", styles: [":host{height:inherit;display:flex;flex-direction:column}.no-data{margin:var(--pep-spacing-2xl, 2rem) 0}.no-data-suggestions .suggestions-title{margin:var(--pep-spacing-lg, 1rem) 0 var(--pep-spacing-sm, .5rem)}.no-data-suggestions .suggestions-list{margin:0;padding:0;padding-inline-start:var(--pep-spacing-2xl, 2rem)}.virtual-scroller{min-height:5rem;height:inherit}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i7.PepFormComponent, selector: "pep-form", inputs: ["isInternal", "isReport", "layout", "lockEvents", "canEditObject", "data", "lockFields", "isActive", "layoutType", "objectId", "parentId", "searchCode", "showTitle", "firstFieldAsLink", "checkForChanges"], outputs: ["valueChange", "formValidationChange", "fieldClick", "internalFormFieldClick", "internalFormFieldChange"] }, { kind: "component", type: VirtualScrollerComponent, selector: "virtual-scroller,[virtualScroller]", inputs: ["disable", "executeRefreshOutsideAngularZone", "enableUnequalChildrenSizes", "RTL", "useMarginInsteadOfTranslate", "modifyOverflowStyleOfParentScroll", "stripedTable", "scrollbarWidth", "scrollbarHeight", "childWidth", "childHeight", "ssrChildWidth", "ssrChildHeight", "ssrViewportWidth", "ssrViewportHeight", "bufferAmount", "scrollAnimationTime", "resizeBypassRefreshThreshold", "scrollThrottlingTime", "scrollDebounceTime", "checkResizeInterval", "items", "compareItems", "horizontal", "parentScroll"], outputs: ["vsChildRectChange", "vsUpdate", "vsChange", "vsStart", "vsEnd"], exportAs: ["virtualScroller"] }, { kind: "component", type: PepListPagerComponent, selector: "pep-list-pager", inputs: ["disabled", "pageIndex", "length", "pageSize"], outputs: ["pagerChange"] }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] });
2312
2378
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepListComponent, decorators: [{
2313
2379
  type: Component,
2314
2380
  args: [{ selector: 'pep-list', host: {
2315
2381
  '(window:resize)': 'onWinResize($event)',
2316
2382
  }, template: "<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)\">\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>", styles: [":host{height:inherit;display:flex;flex-direction:column}.no-data{margin:var(--pep-spacing-2xl, 2rem) 0}.no-data-suggestions .suggestions-title{margin:var(--pep-spacing-lg, 1rem) 0 var(--pep-spacing-sm, .5rem)}.no-data-suggestions .suggestions-list{margin:0;padding:0;padding-inline-start:var(--pep-spacing-2xl, 2rem)}.virtual-scroller{min-height:5rem;height:inherit}\n"] }]
2317
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PepLayoutService }, { type: i1.PepSessionService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { noDataFoundMsg: [{
2383
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.PepLayoutService }, { type: i1.PepSessionService }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { cachedItemsNumber: [{
2384
+ type: Input
2385
+ }], noDataFoundMsg: [{
2318
2386
  type: Input
2319
2387
  }], selectionTypeForActions: [{
2320
2388
  type: Input