@pega/lists-core 9.0.0-build.2.9 → 9.0.0-build.20.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 (169) hide show
  1. package/lib/index.d.ts +2 -2
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +2 -2
  4. package/lib/index.js.map +1 -1
  5. package/lib/src/core/StateResolver.d.ts.map +1 -1
  6. package/lib/src/core/StateResolver.js +6 -2
  7. package/lib/src/core/StateResolver.js.map +1 -1
  8. package/lib/src/core/a11y/BaseA11y.d.ts +11 -0
  9. package/lib/src/core/a11y/BaseA11y.d.ts.map +1 -1
  10. package/lib/src/core/a11y/BaseA11y.js +17 -0
  11. package/lib/src/core/a11y/BaseA11y.js.map +1 -1
  12. package/lib/src/core/actions/actionConstants.d.ts +1 -3
  13. package/lib/src/core/actions/actionConstants.d.ts.map +1 -1
  14. package/lib/src/core/actions/actionConstants.js +1 -3
  15. package/lib/src/core/actions/actionConstants.js.map +1 -1
  16. package/lib/src/core/actions/actions.d.ts +6 -18
  17. package/lib/src/core/actions/actions.d.ts.map +1 -1
  18. package/lib/src/core/actions/actions.js +7 -25
  19. package/lib/src/core/actions/actions.js.map +1 -1
  20. package/lib/src/core/actions/actions.types.d.ts +8 -17
  21. package/lib/src/core/actions/actions.types.d.ts.map +1 -1
  22. package/lib/src/core/actions/actions.types.js.map +1 -1
  23. package/lib/src/core/config/config.d.ts.map +1 -1
  24. package/lib/src/core/config/config.js +2 -1
  25. package/lib/src/core/config/config.js.map +1 -1
  26. package/lib/src/core/constants.d.ts +11 -101
  27. package/lib/src/core/constants.d.ts.map +1 -1
  28. package/lib/src/core/constants.js +8 -8
  29. package/lib/src/core/constants.js.map +1 -1
  30. package/lib/src/core/defaultTranslations.d.ts +6 -1
  31. package/lib/src/core/defaultTranslations.d.ts.map +1 -1
  32. package/lib/src/core/defaultTranslations.js +6 -1
  33. package/lib/src/core/defaultTranslations.js.map +1 -1
  34. package/lib/src/core/features/featureFactory.d.ts +1 -1
  35. package/lib/src/core/features/featureFactory.d.ts.map +1 -1
  36. package/lib/src/core/features/featureFactory.js +0 -2
  37. package/lib/src/core/features/featureFactory.js.map +1 -1
  38. package/lib/src/core/features/uIFeatures/afterRender/animation.d.ts.map +1 -1
  39. package/lib/src/core/features/uIFeatures/afterRender/animation.js +6 -0
  40. package/lib/src/core/features/uIFeatures/afterRender/animation.js.map +1 -1
  41. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts +2 -16
  42. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts.map +1 -1
  43. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js +45 -81
  44. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js.map +1 -1
  45. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts.map +1 -1
  46. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js +13 -1
  47. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js.map +1 -1
  48. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.d.ts +1 -0
  49. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.d.ts.map +1 -1
  50. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js +3 -1
  51. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js.map +1 -1
  52. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.d.ts +1 -0
  53. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.d.ts.map +1 -1
  54. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js +3 -1
  55. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js.map +1 -1
  56. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.d.ts.map +1 -1
  57. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js +5 -4
  58. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js.map +1 -1
  59. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts.map +1 -1
  60. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js +2 -3
  61. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js.map +1 -1
  62. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts +2 -4
  63. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts.map +1 -1
  64. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js +47 -29
  65. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js.map +1 -1
  66. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts +1 -1
  67. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts.map +1 -1
  68. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js +6 -1
  69. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js.map +1 -1
  70. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -1
  71. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +28 -30
  72. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -1
  73. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts +2 -0
  74. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts.map +1 -1
  75. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js +32 -5
  76. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js.map +1 -1
  77. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.d.ts.map +1 -1
  78. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js +11 -3
  79. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js.map +1 -1
  80. package/lib/src/core/features/uIFeatures/beforeRender/rowHeight.d.ts.map +1 -1
  81. package/lib/src/core/features/uIFeatures/beforeRender/rowHeight.js +4 -0
  82. package/lib/src/core/features/uIFeatures/beforeRender/rowHeight.js.map +1 -1
  83. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts.map +1 -1
  84. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +2 -1
  85. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -1
  86. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts.map +1 -1
  87. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js +53 -14
  88. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js.map +1 -1
  89. package/lib/src/core/features/uIFeatures/index.d.ts +0 -3
  90. package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
  91. package/lib/src/core/features/uIFeatures/index.js +0 -4
  92. package/lib/src/core/features/uIFeatures/index.js.map +1 -1
  93. package/lib/src/core/generators/ColumnGenerator.d.ts +14 -19
  94. package/lib/src/core/generators/ColumnGenerator.d.ts.map +1 -1
  95. package/lib/src/core/generators/ColumnGenerator.js +28 -88
  96. package/lib/src/core/generators/ColumnGenerator.js.map +1 -1
  97. package/lib/src/core/generators/ColumnGenerator.types.d.ts +17 -14
  98. package/lib/src/core/generators/ColumnGenerator.types.d.ts.map +1 -1
  99. package/lib/src/core/generators/ColumnGenerator.types.js.map +1 -1
  100. package/lib/src/core/generators/GroupGenerator.d.ts +8 -1
  101. package/lib/src/core/generators/GroupGenerator.d.ts.map +1 -1
  102. package/lib/src/core/generators/GroupGenerator.js +24 -1
  103. package/lib/src/core/generators/GroupGenerator.js.map +1 -1
  104. package/lib/src/core/generators/RowGenerator.d.ts +1 -1
  105. package/lib/src/core/generators/RowGenerator.d.ts.map +1 -1
  106. package/lib/src/core/generators/RowGenerator.js +1 -1
  107. package/lib/src/core/generators/RowGenerator.js.map +1 -1
  108. package/lib/src/core/generators/RowGenerator.types.d.ts +2 -1
  109. package/lib/src/core/generators/RowGenerator.types.d.ts.map +1 -1
  110. package/lib/src/core/generators/RowGenerator.types.js.map +1 -1
  111. package/lib/src/core/generators/ViewGenerator.d.ts +6 -1
  112. package/lib/src/core/generators/ViewGenerator.d.ts.map +1 -1
  113. package/lib/src/core/generators/ViewGenerator.js +33 -8
  114. package/lib/src/core/generators/ViewGenerator.js.map +1 -1
  115. package/lib/src/core/generators/ViewGenerator.types.d.ts +3 -1
  116. package/lib/src/core/generators/ViewGenerator.types.d.ts.map +1 -1
  117. package/lib/src/core/generators/ViewGenerator.types.js.map +1 -1
  118. package/lib/src/core/generators/viewUtilityMethods.d.ts.map +1 -1
  119. package/lib/src/core/generators/viewUtilityMethods.js +6 -3
  120. package/lib/src/core/generators/viewUtilityMethods.js.map +1 -1
  121. package/lib/src/core/reducers/error.d.ts +4 -3
  122. package/lib/src/core/reducers/error.d.ts.map +1 -1
  123. package/lib/src/core/reducers/index.d.ts +4 -3
  124. package/lib/src/core/reducers/index.d.ts.map +1 -1
  125. package/lib/src/core/reducers/index.js +0 -2
  126. package/lib/src/core/reducers/index.js.map +1 -1
  127. package/lib/src/core/reducers/personalizationReducer.d.ts +1 -1
  128. package/lib/src/core/reducers/renderFormatter.d.ts.map +1 -1
  129. package/lib/src/core/reducers/renderFormatter.js +13 -3
  130. package/lib/src/core/reducers/renderFormatter.js.map +1 -1
  131. package/lib/src/core/test/junitMocks.d.ts +12 -0
  132. package/lib/src/core/test/junitMocks.d.ts.map +1 -1
  133. package/lib/src/core/test/junitMocks.js +15 -40
  134. package/lib/src/core/test/junitMocks.js.map +1 -1
  135. package/lib/src/core/utils/condition-utils.js +1 -1
  136. package/lib/src/core/utils/condition-utils.js.map +1 -1
  137. package/lib/src/core/utils/util.d.ts +3 -7
  138. package/lib/src/core/utils/util.d.ts.map +1 -1
  139. package/lib/src/core/utils/util.js +36 -15
  140. package/lib/src/core/utils/util.js.map +1 -1
  141. package/lib/types/ApiContext.types.d.ts +82 -6
  142. package/lib/types/ApiContext.types.d.ts.map +1 -1
  143. package/lib/types/ApiContext.types.js.map +1 -1
  144. package/lib/types/Meta.types.d.ts +101 -12
  145. package/lib/types/Meta.types.d.ts.map +1 -1
  146. package/lib/types/Meta.types.js +5 -1
  147. package/lib/types/Meta.types.js.map +1 -1
  148. package/lib/types/RsCoreBootArgs.types.d.ts +11 -0
  149. package/lib/types/RsCoreBootArgs.types.d.ts.map +1 -1
  150. package/lib/types/RsCoreBootArgs.types.js.map +1 -1
  151. package/lib/types/State.types.d.ts +27 -25
  152. package/lib/types/State.types.d.ts.map +1 -1
  153. package/lib/types/State.types.js.map +1 -1
  154. package/lib/types.d.ts +9 -2
  155. package/lib/types.d.ts.map +1 -1
  156. package/lib/types.js.map +1 -1
  157. package/package.json +6 -7
  158. package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts +0 -12
  159. package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts.map +0 -1
  160. package/lib/src/core/features/uIFeatures/beforeRender/edit.js +0 -94
  161. package/lib/src/core/features/uIFeatures/beforeRender/edit.js.map +0 -1
  162. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.d.ts +0 -7
  163. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.d.ts.map +0 -1
  164. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.js +0 -24
  165. package/lib/src/core/features/uIFeatures/beforeRender/resizeGroupedDragDropColumn.js.map +0 -1
  166. package/lib/src/core/reducers/edit.d.ts +0 -5
  167. package/lib/src/core/reducers/edit.d.ts.map +0 -1
  168. package/lib/src/core/reducers/edit.js +0 -65
  169. package/lib/src/core/reducers/edit.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { State } from 'packages/lists-rs-core/types/State.types';
1
+ import type { State } from 'pega-repeating-structures-core/lib/types/State.types';
2
2
  import type View from '../generators/ViewGenerator';
3
3
  import type RsInternal from '../RsInternal';
4
4
  import type RsProps from '../RsProps';
@@ -1 +1 @@
1
- {"version":3,"file":"featureFactory.d.ts","sourceRoot":"","sources":["../../../../src/core/features/featureFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0CAA0C,CAAC;AAEtE,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAC;AAKpD,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD,MAAM,MAAM,YAAY,CAAC,iBAAiB,SAAS,OAAO,GAAG,KAAK,IAAI;IACpE,gDAAgD;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,0FAA0F;IAC1F,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACrC,GAAG,CAAC,iBAAiB,SAAS,IAAI,GAC/B;IACE,sDAAsD;IACtD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,GAGD,EAAE,CAAC,CAAC;AAER,MAAM,MAAM,wBAAwB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG;IACnC,sCAAsC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,0FAA0F;IAC1F,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,sDAAsD;IACtD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,qOAAqO;AACrO,MAAM,MAAM,OAAO,CAAC,iBAAiB,SAAS,OAAO,GAAG,KAAK,IAAI,CAC/D,UAAU,EAAE,UAAU,KACnB,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;AAEtE,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,iBAAS,aAAa;kBAEJ,OAAO,CAAC,IAAI,CAAC,EAAE;iBAChB,OAAO,EAAE;EA4DzB;AAuDD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,UAAU,EAAE,UAAU,GACrB,CAAC,CAAC,YAAY,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAE9E"}
1
+ {"version":3,"file":"featureFactory.d.ts","sourceRoot":"","sources":["../../../../src/core/features/featureFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sDAAsD,CAAC;AAElF,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAC;AAKpD,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD,MAAM,MAAM,YAAY,CAAC,iBAAiB,SAAS,OAAO,GAAG,KAAK,IAAI;IACpE,gDAAgD;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,0FAA0F;IAC1F,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CACrC,GAAG,CAAC,iBAAiB,SAAS,IAAI,GAC/B;IACE,sDAAsD;IACtD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,GAGD,EAAE,CAAC,CAAC;AAER,MAAM,MAAM,wBAAwB,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;AAE1D,MAAM,MAAM,sBAAsB,GAAG;IACnC,sCAAsC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB,0FAA0F;IAC1F,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,2CAA2C;IAC3C,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,sDAAsD;IACtD,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF,qOAAqO;AACrO,MAAM,MAAM,OAAO,CAAC,iBAAiB,SAAS,OAAO,GAAG,KAAK,IAAI,CAC/D,UAAU,EAAE,UAAU,KACnB,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;AAEtE,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,iBAAS,aAAa;kBAEJ,OAAO,CAAC,IAAI,CAAC,EAAE;iBAChB,OAAO,EAAE;EA0DzB;AAuDD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CACxC,UAAU,EAAE,UAAU,GACrB,CAAC,CAAC,YAAY,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAE9E"}
@@ -39,7 +39,6 @@ function getUIFeatures() {
39
39
  // We have to inject this feature always as we are generating instance
40
40
  // level data with same to avoid condition block in UI.
41
41
  features.beforeRender.push(uiFeatures.beforeRender.grouping);
42
- features.beforeRender.push(uiFeatures.beforeRender.resizeGroupedDragDropColumn);
43
42
  features.beforeRender.push(uiFeatures.beforeRender.filter);
44
43
  features.beforeRender.push(uiFeatures.beforeRender.columnSort);
45
44
  features.beforeRender.push(uiFeatures.beforeRender.columnResize);
@@ -48,7 +47,6 @@ function getUIFeatures() {
48
47
  features.beforeRender.push(uiFeatures.beforeRender.rowSelect);
49
48
  features.beforeRender.push(uiFeatures.beforeRender.toggleSelectAllCheckbox);
50
49
  features.beforeRender.push(uiFeatures.beforeRender.aggregation);
51
- features.beforeRender.push(uiFeatures.beforeRender.edit);
52
50
  features.beforeRender.push(uiFeatures.beforeRender.moveRecords);
53
51
  features.beforeRender.push(uiFeatures.beforeRender.toggleHeaderIcons);
54
52
  features.afterRender.push(uiFeatures.afterRender.animation);
@@ -1 +1 @@
1
- {"version":3,"file":"featureFactory.js","sourceRoot":"","sources":["../../../../src/core/features/featureFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from 'packages/lists-rs-core/types/State.types';\n\nimport type View from '../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Column from '../generators/ColumnGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Row from '../generators/RowGenerator';\nimport type RsInternal from '../RsInternal';\nimport type RsProps from '../RsProps';\nimport type StateResolver from '../StateResolver';\nimport type RsStore from '../RsStore';\nimport type { Action } from '../actions/actions.types';\n\nimport uiFeatures from './uIFeatures';\n\nexport type FeatureProps<WithQueuedActions extends boolean = false> = {\n /** Returns reference to current {@link View} */\n getView: () => View;\n /** Returns reference to {@link RsStore} */\n getRsStore: () => RsStore;\n /** Returns reference to {@link RsProps} */\n getRsProps: () => RsProps;\n /** Returns reference to latest/current {@link State} */\n getState: () => State;\n /** Returns the stable {@link State} before the actions in the queue started executing. */\n getOriginalState: StateResolver['getOriginalState'];\n /** A dispatcher to dispatch RS actions. */\n dispatch: StateResolver['dispatch'];\n} & (WithQueuedActions extends true\n ? {\n /** A queue of current actions that are dispatched. */\n queuedActions: Action[];\n }\n : // For better readability keeping {} rather than Record<string, never>.\n // eslint-disable-next-line @typescript-eslint/ban-types\n {});\n\nexport type BeforeRenderFeatureProps = FeatureProps<true>;\n\nexport type MiddleWareFeatureProps = {\n /** Reference to RsInternal object. */\n rsInternal: RsInternal;\n /** Returns reference to latest/current {@link State}. */\n getState: () => State;\n /** Returns the stable {@link State} before the actions in the queue started executing. */\n getOriginalState: StateResolver['getOriginalState'];\n /** A dispatcher to dispatch RS actions. */\n dispatch: StateResolver['dispatch'];\n /** A queue of current actions that are dispatched. */\n queuedActions: Action[];\n};\n\n/** A feature is a function that runs based on a particular state slice change and produces immutable generator({@link View}, {@link Row}, {@link Column}) objects. It may also {@link StateResolver.dispatch dispatch} an action. */\nexport type Feature<WithQueuedActions extends boolean = false> = (\n rsInternal: RsInternal\n) => ((featureProps: FeatureProps<WithQueuedActions>) => void) | void;\n\nexport type UIFeatures = ReturnType<typeof getUIFeatures>;\nfunction getUIFeatures() {\n const features: {\n beforeRender: Feature<true>[];\n afterRender: Feature[];\n } = {\n beforeRender: [],\n afterRender: []\n };\n features.beforeRender.push(uiFeatures.beforeRender.scrollToTop);\n features.beforeRender.push(uiFeatures.beforeRender.busyIndicator);\n features.beforeRender.push(uiFeatures.beforeRender.personalization);\n // Reset dataApi context so that new count and data could be fetched on change of personalization\n features.beforeRender.push(uiFeatures.beforeRender.resetFetch);\n features.beforeRender.push(uiFeatures.beforeRender.changePersonalisation);\n features.beforeRender.push(uiFeatures.beforeRender.prepareColumns);\n features.beforeRender.push(uiFeatures.beforeRender.columnFormatter);\n features.beforeRender.push(uiFeatures.beforeRender.ColumnDisplayMode);\n /* customColumn feature injects field definitions for custom fields, so stateSanitization feature should run after customColumn */\n features.beforeRender.push(uiFeatures.beforeRender.customColumn);\n features.beforeRender.push(uiFeatures.beforeRender.columnAlias);\n features.beforeRender.push(uiFeatures.beforeRender.stateSanitization);\n features.beforeRender.push(uiFeatures.beforeRender.stateHydration);\n features.beforeRender.push(uiFeatures.beforeRender.conditionalStyleFormat);\n features.beforeRender.push(uiFeatures.beforeRender.columnToggle);\n // ORDER: if any feature is going to generate some markup, then it should come before columnSizing feature\n // If reordering or moving records is enabled then rowDragDrop handler size has to be calculated and picked by column sizing\n features.beforeRender.push(uiFeatures.beforeRender.errorColumn);\n features.beforeRender.push(uiFeatures.beforeRender.rowDragDrop);\n features.beforeRender.push(uiFeatures.beforeRender.columnSizing);\n features.beforeRender.push(uiFeatures.beforeRender.adjustHeight);\n features.beforeRender.push(uiFeatures.beforeRender.freeze);\n // columnOrder is required for both columnVisualOrder and columnReorder feature\n features.beforeRender.push(uiFeatures.beforeRender.columnOrder);\n features.beforeRender.push(uiFeatures.beforeRender.columnVisualOrder);\n // Columns header should be rendered as soon as it is available. Features making calculation on columns should be before this.\n features.beforeRender.push(uiFeatures.beforeRender.renderHeader);\n features.beforeRender.push(uiFeatures.beforeRender.refresh);\n features.beforeRender.push(uiFeatures.beforeRender.rowHeight);\n features.beforeRender.push(uiFeatures.beforeRender.animation);\n features.beforeRender.push(uiFeatures.beforeRender.prepareRows);\n // We have to inject this feature always as we are generating instance\n // level data with same to avoid condition block in UI.\n\n features.beforeRender.push(uiFeatures.beforeRender.grouping);\n features.beforeRender.push(uiFeatures.beforeRender.resizeGroupedDragDropColumn);\n features.beforeRender.push(uiFeatures.beforeRender.filter);\n features.beforeRender.push(uiFeatures.beforeRender.columnSort);\n features.beforeRender.push(uiFeatures.beforeRender.columnResize);\n features.beforeRender.push(uiFeatures.beforeRender.adjustHeightToFitRecords);\n\n features.beforeRender.push(uiFeatures.beforeRender.columnReOrder);\n features.beforeRender.push(uiFeatures.beforeRender.rowSelect);\n features.beforeRender.push(uiFeatures.beforeRender.toggleSelectAllCheckbox);\n features.beforeRender.push(uiFeatures.beforeRender.aggregation);\n features.beforeRender.push(uiFeatures.beforeRender.edit);\n features.beforeRender.push(uiFeatures.beforeRender.moveRecords);\n features.beforeRender.push(uiFeatures.beforeRender.toggleHeaderIcons);\n\n features.afterRender.push(uiFeatures.afterRender.animation);\n features.afterRender.push(uiFeatures.afterRender.columnAutoSizing);\n features.afterRender.push(uiFeatures.afterRender.customizeParentContainer);\n\n return features;\n}\n\n/**\n * Initializes and returns before render features which run when any action is dispatched in the queue.\n * @param rsInternal - RsInternal reference.\n * @returns\n */\nfunction initializeBeforeRenderFeatures(rsInternal: RsInternal) {\n const features = getUIFeatures();\n const beforeRenderUIFeatures = features.beforeRender.map(t => t(rsInternal)).filter(Boolean);\n return (featureProps: MiddleWareFeatureProps) => {\n return (beforeRenderUIFeatures as ((featureProps: BeforeRenderFeatureProps) => void)[]).reduce<\n Promise<void | null>\n >(async (p, feature) => {\n return p.then(() => {\n if (!featureProps.rsInternal.getRsStore().isMounted) return null;\n return feature({\n getView: featureProps.rsInternal.getView,\n getRsStore: featureProps.rsInternal.getRsStore,\n getRsProps: featureProps.rsInternal.getRsProps,\n getState: featureProps.getState,\n getOriginalState: featureProps.getOriginalState,\n dispatch: featureProps.dispatch,\n queuedActions: featureProps.queuedActions\n });\n });\n }, Promise.resolve());\n };\n}\n\n/**\n * Initializes and returns after render features which run after the render is completed.\n * @param rsInternal RsInternal reference.\n * @returns\n */\nfunction initializeAfterRenderFeatures(rsInternal: RsInternal) {\n const features = getUIFeatures();\n const afterRenderUIFeatures = features.afterRender.map(t => t(rsInternal)).filter(Boolean);\n\n return () => {\n (afterRenderUIFeatures as ((featureProps: FeatureProps) => void)[]).forEach(feature => {\n if (rsInternal.getRsStore().isMounted) {\n feature({\n getView: rsInternal.getView,\n getRsStore: rsInternal.getRsStore,\n getRsProps: rsInternal.getRsProps,\n getState: rsInternal.getRsStateResolver()!.getState,\n getOriginalState: rsInternal.getRsStateResolver()!.getOriginalState,\n dispatch: rsInternal.getRsStateResolver()!.dispatch\n });\n }\n });\n };\n}\n\n/**\n * Initializes and return before and after render features.\n * @param rsInternal\n * @returns\n */\nexport default function initializeFeatures(\n rsInternal: RsInternal\n): [(featureProps: MiddleWareFeatureProps) => Promise<void | null>, () => void] {\n return [initializeBeforeRenderFeatures(rsInternal), initializeAfterRenderFeatures(rsInternal)];\n}\n"]}
1
+ {"version":3,"file":"featureFactory.js","sourceRoot":"","sources":["../../../../src/core/features/featureFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from 'pega-repeating-structures-core/lib/types/State.types';\n\nimport type View from '../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Column from '../generators/ColumnGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Row from '../generators/RowGenerator';\nimport type RsInternal from '../RsInternal';\nimport type RsProps from '../RsProps';\nimport type StateResolver from '../StateResolver';\nimport type RsStore from '../RsStore';\nimport type { Action } from '../actions/actions.types';\n\nimport uiFeatures from './uIFeatures';\n\nexport type FeatureProps<WithQueuedActions extends boolean = false> = {\n /** Returns reference to current {@link View} */\n getView: () => View;\n /** Returns reference to {@link RsStore} */\n getRsStore: () => RsStore;\n /** Returns reference to {@link RsProps} */\n getRsProps: () => RsProps;\n /** Returns reference to latest/current {@link State} */\n getState: () => State;\n /** Returns the stable {@link State} before the actions in the queue started executing. */\n getOriginalState: StateResolver['getOriginalState'];\n /** A dispatcher to dispatch RS actions. */\n dispatch: StateResolver['dispatch'];\n} & (WithQueuedActions extends true\n ? {\n /** A queue of current actions that are dispatched. */\n queuedActions: Action[];\n }\n : // For better readability keeping {} rather than Record<string, never>.\n // eslint-disable-next-line @typescript-eslint/ban-types\n {});\n\nexport type BeforeRenderFeatureProps = FeatureProps<true>;\n\nexport type MiddleWareFeatureProps = {\n /** Reference to RsInternal object. */\n rsInternal: RsInternal;\n /** Returns reference to latest/current {@link State}. */\n getState: () => State;\n /** Returns the stable {@link State} before the actions in the queue started executing. */\n getOriginalState: StateResolver['getOriginalState'];\n /** A dispatcher to dispatch RS actions. */\n dispatch: StateResolver['dispatch'];\n /** A queue of current actions that are dispatched. */\n queuedActions: Action[];\n};\n\n/** A feature is a function that runs based on a particular state slice change and produces immutable generator({@link View}, {@link Row}, {@link Column}) objects. It may also {@link StateResolver.dispatch dispatch} an action. */\nexport type Feature<WithQueuedActions extends boolean = false> = (\n rsInternal: RsInternal\n) => ((featureProps: FeatureProps<WithQueuedActions>) => void) | void;\n\nexport type UIFeatures = ReturnType<typeof getUIFeatures>;\nfunction getUIFeatures() {\n const features: {\n beforeRender: Feature<true>[];\n afterRender: Feature[];\n } = {\n beforeRender: [],\n afterRender: []\n };\n features.beforeRender.push(uiFeatures.beforeRender.scrollToTop);\n features.beforeRender.push(uiFeatures.beforeRender.busyIndicator);\n features.beforeRender.push(uiFeatures.beforeRender.personalization);\n // Reset dataApi context so that new count and data could be fetched on change of personalization\n features.beforeRender.push(uiFeatures.beforeRender.resetFetch);\n features.beforeRender.push(uiFeatures.beforeRender.changePersonalisation);\n features.beforeRender.push(uiFeatures.beforeRender.prepareColumns);\n features.beforeRender.push(uiFeatures.beforeRender.columnFormatter);\n features.beforeRender.push(uiFeatures.beforeRender.ColumnDisplayMode);\n /* customColumn feature injects field definitions for custom fields, so stateSanitization feature should run after customColumn */\n features.beforeRender.push(uiFeatures.beforeRender.customColumn);\n features.beforeRender.push(uiFeatures.beforeRender.columnAlias);\n features.beforeRender.push(uiFeatures.beforeRender.stateSanitization);\n features.beforeRender.push(uiFeatures.beforeRender.stateHydration);\n features.beforeRender.push(uiFeatures.beforeRender.conditionalStyleFormat);\n features.beforeRender.push(uiFeatures.beforeRender.columnToggle);\n // ORDER: if any feature is going to generate some markup, then it should come before columnSizing feature\n // If reordering or moving records is enabled then rowDragDrop handler size has to be calculated and picked by column sizing\n features.beforeRender.push(uiFeatures.beforeRender.errorColumn);\n features.beforeRender.push(uiFeatures.beforeRender.rowDragDrop);\n features.beforeRender.push(uiFeatures.beforeRender.columnSizing);\n features.beforeRender.push(uiFeatures.beforeRender.adjustHeight);\n features.beforeRender.push(uiFeatures.beforeRender.freeze);\n // columnOrder is required for both columnVisualOrder and columnReorder feature\n features.beforeRender.push(uiFeatures.beforeRender.columnOrder);\n features.beforeRender.push(uiFeatures.beforeRender.columnVisualOrder);\n // Columns header should be rendered as soon as it is available. Features making calculation on columns should be before this.\n features.beforeRender.push(uiFeatures.beforeRender.renderHeader);\n features.beforeRender.push(uiFeatures.beforeRender.refresh);\n features.beforeRender.push(uiFeatures.beforeRender.rowHeight);\n features.beforeRender.push(uiFeatures.beforeRender.animation);\n features.beforeRender.push(uiFeatures.beforeRender.prepareRows);\n // We have to inject this feature always as we are generating instance\n // level data with same to avoid condition block in UI.\n\n features.beforeRender.push(uiFeatures.beforeRender.grouping);\n features.beforeRender.push(uiFeatures.beforeRender.filter);\n features.beforeRender.push(uiFeatures.beforeRender.columnSort);\n features.beforeRender.push(uiFeatures.beforeRender.columnResize);\n features.beforeRender.push(uiFeatures.beforeRender.adjustHeightToFitRecords);\n\n features.beforeRender.push(uiFeatures.beforeRender.columnReOrder);\n features.beforeRender.push(uiFeatures.beforeRender.rowSelect);\n features.beforeRender.push(uiFeatures.beforeRender.toggleSelectAllCheckbox);\n features.beforeRender.push(uiFeatures.beforeRender.aggregation);\n features.beforeRender.push(uiFeatures.beforeRender.moveRecords);\n features.beforeRender.push(uiFeatures.beforeRender.toggleHeaderIcons);\n\n features.afterRender.push(uiFeatures.afterRender.animation);\n features.afterRender.push(uiFeatures.afterRender.columnAutoSizing);\n features.afterRender.push(uiFeatures.afterRender.customizeParentContainer);\n\n return features;\n}\n\n/**\n * Initializes and returns before render features which run when any action is dispatched in the queue.\n * @param rsInternal - RsInternal reference.\n * @returns\n */\nfunction initializeBeforeRenderFeatures(rsInternal: RsInternal) {\n const features = getUIFeatures();\n const beforeRenderUIFeatures = features.beforeRender.map(t => t(rsInternal)).filter(Boolean);\n return (featureProps: MiddleWareFeatureProps) => {\n return (beforeRenderUIFeatures as ((featureProps: BeforeRenderFeatureProps) => void)[]).reduce<\n Promise<void | null>\n >(async (p, feature) => {\n return p.then(() => {\n if (!featureProps.rsInternal.getRsStore().isMounted) return null;\n return feature({\n getView: featureProps.rsInternal.getView,\n getRsStore: featureProps.rsInternal.getRsStore,\n getRsProps: featureProps.rsInternal.getRsProps,\n getState: featureProps.getState,\n getOriginalState: featureProps.getOriginalState,\n dispatch: featureProps.dispatch,\n queuedActions: featureProps.queuedActions\n });\n });\n }, Promise.resolve());\n };\n}\n\n/**\n * Initializes and returns after render features which run after the render is completed.\n * @param rsInternal RsInternal reference.\n * @returns\n */\nfunction initializeAfterRenderFeatures(rsInternal: RsInternal) {\n const features = getUIFeatures();\n const afterRenderUIFeatures = features.afterRender.map(t => t(rsInternal)).filter(Boolean);\n\n return () => {\n (afterRenderUIFeatures as ((featureProps: FeatureProps) => void)[]).forEach(feature => {\n if (rsInternal.getRsStore().isMounted) {\n feature({\n getView: rsInternal.getView,\n getRsStore: rsInternal.getRsStore,\n getRsProps: rsInternal.getRsProps,\n getState: rsInternal.getRsStateResolver()!.getState,\n getOriginalState: rsInternal.getRsStateResolver()!.getOriginalState,\n dispatch: rsInternal.getRsStateResolver()!.dispatch\n });\n }\n });\n };\n}\n\n/**\n * Initializes and return before and after render features.\n * @param rsInternal\n * @returns\n */\nexport default function initializeFeatures(\n rsInternal: RsInternal\n): [(featureProps: MiddleWareFeatureProps) => Promise<void | null>, () => void] {\n return [initializeBeforeRenderFeatures(rsInternal), initializeAfterRenderFeatures(rsInternal)];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/afterRender/animation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA6HzD;;;;;;;;;;;;;;;;;;;GAmBG;+BAKuB,cAAc,YAAY;AAJpD,wBA8BE"}
1
+ {"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/afterRender/animation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAmIzD;;;;;;;;;;;;;;;;;;;GAmBG;+BAKuB,cAAc,YAAY;AAJpD,wBA8BE"}
@@ -96,11 +96,17 @@ const columnAnimation = ([{ getState, getView, getRsStore }]) => {
96
96
  }
97
97
  });
98
98
  }
99
+ const visibleColumns = getView().getVisibleColumns();
99
100
  rsStore.oldColumnBoundingBox.forEach((value, key) => {
100
101
  if (newColBoundingBox.has(key)) {
101
102
  const deltaX = value.left - newColBoundingBox.get(key).left;
102
103
  const domNodes = pNode?.querySelectorAll(`[data-col-id='${key}']`);
103
104
  if (deltaX) {
105
+ // FIXME: skipping animation on the last column because in case a record is added like in embedded tables, a vertical scrollbar appears momentarily which shifts the last column to left and this triggers unnecessary animation on last column.
106
+ const currentColumn = visibleColumns.find(col => col.field.id === key);
107
+ if (currentColumn?.isLastColumn) {
108
+ return;
109
+ }
104
110
  domNodes?.forEach(domNode => {
105
111
  animate(domNode, deltaX, 0);
106
112
  });
@@ -1 +1 @@
1
- {"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/afterRender/animation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from '../../../../../types/State.types';\nimport { withMemoization } from '../../../utils/util';\nimport type { FeatureProps } from '../../featureFactory';\n// Used in JsDoc.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../RsStore';\n\n/**\n * Triggers animation on a {@link domNode} in X and Y direction by {@link deltaX} and {@link deltaY} respectively.\n * @param domNode - Dom node on which animation should be triggered.\n * @param deltaX - Range of movement on X axis.\n * @param deltaY - Range of movement on Y axis\n * @returns void\n */\nfunction animate(domNode: HTMLElement, deltaX = 150, deltaY = 150) {\n if (!domNode) return;\n if (deltaY || deltaX) {\n requestAnimationFrame(() => {\n // Ensure that it inverts immediately\n domNode.style.transition = 'transform 0s';\n // Before the DOM paints, Invert it to its old\n domNode.style.transform = `translate3d(${deltaX}px, ${deltaY}px, 0)`;\n\n requestAnimationFrame(() => {\n domNode.style.removeProperty('transform');\n domNode.style.removeProperty('transition');\n });\n });\n }\n}\n\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst rowAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n let avoidRowAnimation = false;\n if (featuresToAvoid?.includes('rowAnimation')) {\n avoidRowAnimation = true;\n }\n // Row animation\n if (!avoidRowAnimation && rsStore.oldBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n const rowContainer = pNode?.querySelector('.row-container'); // row container should wrap all the rows.\n\n // Calculate the bounding box\n const newBoundingBox = new Map();\n rowContainer?.childNodes.forEach(n => {\n if (n.nodeType === Node.ELEMENT_NODE && n instanceof Element && n.hasAttribute?.('data-key'))\n newBoundingBox.set(n.getAttribute('data-key'), n.getBoundingClientRect());\n });\n\n for (const [key, value] of newBoundingBox) {\n const rowNode = rowContainer?.querySelector<HTMLElement>(`[data-key='${CSS.escape(key)}']`);\n if (rsStore.oldBoundingBox.has(key)) {\n // Those elements that were in the dom earlier as well\n const deltaY = rsStore.oldBoundingBox.get(key)!.top - value.top;\n const deltaX = rsStore.oldBoundingBox.get(key)!.left - value.left;\n animate(rowNode!, deltaX, deltaY);\n } else {\n // Those elements that came in now\n animate(rowNode!, 0);\n }\n }\n rsStore.oldBoundingBox = null;\n }\n};\n\n/**\n * Evaluates if column animation needs to be skipped based on {@link State.featuresToAvoid}\n * @param featuresToAvoid\n * @returns boolean - true if columnAnimation should be skipped otherwise false.\n */\nfunction avoidColumnAnimation(featuresToAvoid: State['featuresToAvoid']) {\n return featuresToAvoid?.includes('columnAnimation');\n}\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst columnAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n\n if (rsStore.skipColumnAnimationOnNextRun) {\n rsStore.skipColumnAnimationOnNextRun = false;\n return;\n }\n\n // Column animation\n if (!avoidColumnAnimation(featuresToAvoid) && rsStore.oldColumnBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n\n // Calculate the bounding box\n const newColBoundingBox = new Map<string, DOMRect>();\n if (getView().getItemElement()) {\n getView()\n .getItemElement()!\n .childNodes.forEach(cell => {\n if (\n cell.nodeType === Node.ELEMENT_NODE &&\n cell instanceof Element &&\n cell.hasAttribute?.('data-col-id')\n ) {\n newColBoundingBox.set(cell.getAttribute('data-col-id')!, cell.getBoundingClientRect());\n }\n });\n }\n rsStore.oldColumnBoundingBox.forEach((value, key) => {\n if (newColBoundingBox.has(key)) {\n const deltaX = value.left - newColBoundingBox.get(key)!.left;\n const domNodes = pNode?.querySelectorAll<HTMLElement>(`[data-col-id='${key}']`);\n if (deltaX) {\n domNodes?.forEach(domNode => {\n animate(domNode, deltaX, 0);\n });\n }\n }\n });\n rsStore.oldColumnBoundingBox = null;\n }\n};\n\n/**\n * Handles animations for rows and columns\n * The animations are triggered based on changes to specific state properties:\n *\n * ### Row Animation Triggers\n * - {@link State.filterExpression}\n * - search text\n * - {@link State.sortingOrder}\n * - {@link State.groups}\n * - {@link State.refresh}\n * - {@link State.selectedHeightOption}\n *\n * ### Column Animation Triggers\n * - {@link State.freezeColumns}\n * - {@link State.colOrder}\n * - {@link State.hiddenColumns}\n * - {@link State.columnWidths}\n * - {@link State.refresh}\n * - {@link RsStore.skipColumnAnimationOnNextRun}\n */\nexport default () => {\n const memoizedRowAnimation = withMemoization(rowAnimation);\n const memoizedColumnAnimation = withMemoization(columnAnimation);\n\n return function execute(featureProps: FeatureProps) {\n const state = featureProps.getState();\n memoizedRowAnimation(\n [featureProps],\n [\n state.filterExpression,\n // @ts-expect-error Property 'searchText' does not exist on type 'State' but exists on view.state\n state.searchText,\n state.sortingOrder,\n state.groups,\n state.refresh,\n state.selectedHeightOption\n ]\n );\n memoizedColumnAnimation(\n [featureProps],\n [\n state.freezeColumns,\n state.colOrder,\n state.hiddenColumns,\n state.columnWidths,\n state.refresh,\n featureProps.getRsStore().skipColumnAnimationOnNextRun\n ]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/afterRender/animation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from '../../../../../types/State.types';\nimport { withMemoization } from '../../../utils/util';\nimport type { FeatureProps } from '../../featureFactory';\n// Used in JsDoc.\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../RsStore';\n\n/**\n * Triggers animation on a {@link domNode} in X and Y direction by {@link deltaX} and {@link deltaY} respectively.\n * @param domNode - Dom node on which animation should be triggered.\n * @param deltaX - Range of movement on X axis.\n * @param deltaY - Range of movement on Y axis\n * @returns void\n */\nfunction animate(domNode: HTMLElement, deltaX = 150, deltaY = 150) {\n if (!domNode) return;\n if (deltaY || deltaX) {\n requestAnimationFrame(() => {\n // Ensure that it inverts immediately\n domNode.style.transition = 'transform 0s';\n // Before the DOM paints, Invert it to its old\n domNode.style.transform = `translate3d(${deltaX}px, ${deltaY}px, 0)`;\n\n requestAnimationFrame(() => {\n domNode.style.removeProperty('transform');\n domNode.style.removeProperty('transition');\n });\n });\n }\n}\n\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst rowAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n let avoidRowAnimation = false;\n if (featuresToAvoid?.includes('rowAnimation')) {\n avoidRowAnimation = true;\n }\n // Row animation\n if (!avoidRowAnimation && rsStore.oldBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n const rowContainer = pNode?.querySelector('.row-container'); // row container should wrap all the rows.\n\n // Calculate the bounding box\n const newBoundingBox = new Map();\n rowContainer?.childNodes.forEach(n => {\n if (n.nodeType === Node.ELEMENT_NODE && n instanceof Element && n.hasAttribute?.('data-key'))\n newBoundingBox.set(n.getAttribute('data-key'), n.getBoundingClientRect());\n });\n\n for (const [key, value] of newBoundingBox) {\n const rowNode = rowContainer?.querySelector<HTMLElement>(`[data-key='${CSS.escape(key)}']`);\n if (rsStore.oldBoundingBox.has(key)) {\n // Those elements that were in the dom earlier as well\n const deltaY = rsStore.oldBoundingBox.get(key)!.top - value.top;\n const deltaX = rsStore.oldBoundingBox.get(key)!.left - value.left;\n animate(rowNode!, deltaX, deltaY);\n } else {\n // Those elements that came in now\n animate(rowNode!, 0);\n }\n }\n rsStore.oldBoundingBox = null;\n }\n};\n\n/**\n * Evaluates if column animation needs to be skipped based on {@link State.featuresToAvoid}\n * @param featuresToAvoid\n * @returns boolean - true if columnAnimation should be skipped otherwise false.\n */\nfunction avoidColumnAnimation(featuresToAvoid: State['featuresToAvoid']) {\n return featuresToAvoid?.includes('columnAnimation');\n}\n/**\n * Triggers column animation.\n * @param featureProps - A tuple containing an object of feature props.\n * @returns void\n */\nconst columnAnimation = ([{ getState, getView, getRsStore }]: [featureProps: FeatureProps]) => {\n const { featuresToAvoid } = getState();\n const rsStore = getRsStore();\n\n if (rsStore.skipColumnAnimationOnNextRun) {\n rsStore.skipColumnAnimationOnNextRun = false;\n return;\n }\n\n // Column animation\n if (!avoidColumnAnimation(featuresToAvoid) && rsStore.oldColumnBoundingBox?.size) {\n const pNode = getView().getDomContainer();\n\n // Calculate the bounding box\n const newColBoundingBox = new Map<string, DOMRect>();\n if (getView().getItemElement()) {\n getView()\n .getItemElement()!\n .childNodes.forEach(cell => {\n if (\n cell.nodeType === Node.ELEMENT_NODE &&\n cell instanceof Element &&\n cell.hasAttribute?.('data-col-id')\n ) {\n newColBoundingBox.set(cell.getAttribute('data-col-id')!, cell.getBoundingClientRect());\n }\n });\n }\n const visibleColumns = getView().getVisibleColumns();\n rsStore.oldColumnBoundingBox.forEach((value, key) => {\n if (newColBoundingBox.has(key)) {\n const deltaX = value.left - newColBoundingBox.get(key)!.left;\n const domNodes = pNode?.querySelectorAll<HTMLElement>(`[data-col-id='${key}']`);\n if (deltaX) {\n // FIXME: skipping animation on the last column because in case a record is added like in embedded tables, a vertical scrollbar appears momentarily which shifts the last column to left and this triggers unnecessary animation on last column.\n const currentColumn = visibleColumns.find(col => col.field.id === key);\n if (currentColumn?.isLastColumn) {\n return;\n }\n domNodes?.forEach(domNode => {\n animate(domNode, deltaX, 0);\n });\n }\n }\n });\n rsStore.oldColumnBoundingBox = null;\n }\n};\n\n/**\n * Handles animations for rows and columns\n * The animations are triggered based on changes to specific state properties:\n *\n * ### Row Animation Triggers\n * - {@link State.filterExpression}\n * - search text\n * - {@link State.sortingOrder}\n * - {@link State.groups}\n * - {@link State.refresh}\n * - {@link State.selectedHeightOption}\n *\n * ### Column Animation Triggers\n * - {@link State.freezeColumns}\n * - {@link State.colOrder}\n * - {@link State.hiddenColumns}\n * - {@link State.columnWidths}\n * - {@link State.refresh}\n * - {@link RsStore.skipColumnAnimationOnNextRun}\n */\nexport default () => {\n const memoizedRowAnimation = withMemoization(rowAnimation);\n const memoizedColumnAnimation = withMemoization(columnAnimation);\n\n return function execute(featureProps: FeatureProps) {\n const state = featureProps.getState();\n memoizedRowAnimation(\n [featureProps],\n [\n state.filterExpression,\n // @ts-expect-error Property 'searchText' does not exist on type 'State' but exists on view.state\n state.searchText,\n state.sortingOrder,\n state.groups,\n state.refresh,\n state.selectedHeightOption\n ]\n );\n memoizedColumnAnimation(\n [featureProps],\n [\n state.freezeColumns,\n state.colOrder,\n state.hiddenColumns,\n state.columnWidths,\n state.refresh,\n featureProps.getRsStore().skipColumnAnimationOnNextRun\n ]\n );\n };\n};\n"]}
@@ -1,22 +1,8 @@
1
1
  import type Column from '../../../../generators/ColumnGenerator';
2
2
  import type View from '../../../../generators/ViewGenerator';
3
+ export declare function autoSizeOfColumn(col: Column, domContainer: NonNullable<View['domContainer']>, forceAutoSize?: boolean): number;
3
4
  /**
4
- * Calculates the width of column based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width.
5
- *
6
- * @param column - A column object representing column in the view.
7
- * @param domContainer - The HTML element that acts as the container for RS.
8
- * @param forceAutoSize - A boolean flag that indicates whether to force a recalculation of column widths.
9
- * @returns column width in pixels.
10
- */
11
- export declare function autoSizeOfColumn(column: Column, domContainer: NonNullable<View['domContainer']>, forceAutoSize?: boolean): number;
12
- /**
13
- * Calculates the maximum width available in the dom container
14
- * @param domContainer The HTML element that acts as the container for RS.
15
- * @returns Maximum available width.
16
- */
17
- export declare function getMaxAvailableWidth(domContainer: NonNullable<View['domContainer']>): number;
18
- /**
19
- * Calculates the width of columns based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width..
5
+ * Calculates the width of columns based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width.
20
6
  *
21
7
  * @param columns - An array of `Column` objects representing the columns in the view.
22
8
  * @param domContainer - The HTML element that acts as the container for RS.
@@ -1 +1 @@
1
- {"version":3,"file":"autoSize.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/autoSize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AACjE,OAAO,KAAK,IAAI,MAAM,sCAAsC,CAAC;AAO7D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC/C,aAAa,UAAQ,UA0CtB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAmBnF;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC/C,KAAK,CAAC,EAAE,OAAO;;EA8BhB"}
1
+ {"version":3,"file":"autoSize.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/autoSize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,wCAAwC,CAAC;AACjE,OAAO,KAAK,IAAI,MAAM,sCAAsC,CAAC;AAmD7D,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC/C,aAAa,UAAQ,GACpB,MAAM,CASR;AACD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAC/C,KAAK,CAAC,EAAE,OAAO;;EAmChB"}
@@ -1,6 +1,4 @@
1
1
  import { rowSelectColumnMeta } from '../../../../constants';
2
- import { getScrollbarWidth } from '../../../../utils/util';
3
- const GROUP_ICON_WIDTH = 24;
4
2
  /**
5
3
  * Calculates the width of column based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width.
6
4
  *
@@ -9,73 +7,42 @@ const GROUP_ICON_WIDTH = 24;
9
7
  * @param forceAutoSize - A boolean flag that indicates whether to force a recalculation of column widths.
10
8
  * @returns column width in pixels.
11
9
  */
12
- export function autoSizeOfColumn(column, domContainer, forceAutoSize = false) {
10
+ const MAX_CONTENT = 'max-content';
11
+ const ROUNDING_BUFFER = 1;
12
+ function calculateColumnWidth(column, domContainer, forceAutoSize = false) {
13
13
  if (!forceAutoSize) {
14
14
  // This will be executed in case of reset width
15
15
  const personalizedWidth = column.getPersonalizedWidth();
16
- if (personalizedWidth)
16
+ if (personalizedWidth) {
17
17
  return personalizedWidth;
18
- if (column.field.width)
18
+ }
19
+ if (column.field.width) {
19
20
  return column.field.width;
21
+ }
20
22
  }
21
- // Condition for double click event triggered to autosize the column
22
- /* Autosize calculations begin */
23
- const cells = domContainer.querySelectorAll(`[data-col-id="${column.field.id}"]`);
24
- const holder = document.createElement('div');
25
- holder.style.width = '100000px'; // some very high number
26
- const span = document.createElement('span');
27
- holder.appendChild(span);
28
- domContainer.appendChild(holder);
29
- cells.forEach(cell => {
30
- const row = document.createElement('div');
31
- row.style.display = 'table-row';
32
- cell.childNodes.forEach(child => row.appendChild(child.cloneNode(true)));
33
- span.appendChild(row);
23
+ const cellsList = Array.from(domContainer.querySelectorAll(`[data-col-id="${column.field.id}"]`));
24
+ let maxContentWidth = 0;
25
+ cellsList.forEach(cell => {
26
+ const cellWidth = cell.offsetWidth;
27
+ if (cellWidth > maxContentWidth) {
28
+ maxContentWidth = cellWidth;
29
+ }
34
30
  });
35
- let autoSize = Math.ceil(span.getBoundingClientRect().width);
36
- const iconsPlaceholder = domContainer.querySelector(`.header .cell[data-col-id="${column.field.id}"] .icons-ph`);
37
- const groupIconPlaceholder = domContainer.querySelector(`.show-expand-collapse-all .row .cell[data-col-id="${column.field.id}"]`);
38
- if (iconsPlaceholder) {
39
- autoSize += iconsPlaceholder.offsetWidth;
40
- }
41
- if (groupIconPlaceholder) {
42
- autoSize += GROUP_ICON_WIDTH;
43
- }
44
- domContainer.removeChild(holder);
45
- // Increased spacing style width by 1px to account for offsetWidth rounding off, this was causing truncation.
46
- autoSize += 17; // 17px for Spacing styles applied (Fetching applied styles is costly, so keeping some visible space)
47
- // Allow columns to autosize till a restricted max width
48
- return column.field.maxWidth && autoSize > column.field.maxWidth
31
+ /* buffer to prevent content clipping due to offsetWidth rounding */
32
+ const maxColumnWidth = maxContentWidth + ROUNDING_BUFFER;
33
+ return column.field.maxWidth && maxColumnWidth > column.field.maxWidth
49
34
  ? column.field.maxWidth
50
- : autoSize;
35
+ : maxColumnWidth;
51
36
  }
52
- /**
53
- * Calculates the maximum width available in the dom container
54
- * @param domContainer The HTML element that acts as the container for RS.
55
- * @returns Maximum available width.
56
- */
57
- export function getMaxAvailableWidth(domContainer) {
58
- let width = domContainer.clientWidth - getScrollbarWidth();
59
- const firstCell = domContainer.querySelector('.cell');
60
- if (!firstCell) {
61
- return width;
62
- }
63
- let element = firstCell.parentElement;
64
- let style = null;
65
- let margin = 0;
66
- let padding = 0;
67
- while (element !== domContainer.parentElement) {
68
- // @ts-expect-error Property 'currentStyle' does not exist on type 'HTMLElement' This was used for IE browser initially. Check if it can be removed.
69
- style = element.currentStyle || window.getComputedStyle(element);
70
- margin = parseFloat(style.marginLeft) + parseFloat(style.marginRight);
71
- padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);
72
- width -= padding + margin + element.offsetWidth - element.clientWidth;
73
- element = element.parentElement;
74
- }
75
- return width;
37
+ export function autoSizeOfColumn(col, domContainer, forceAutoSize = false) {
38
+ // Set to max-content to measure actual content width
39
+ domContainer.style.setProperty(`--col-width-${col.field.idHash}`, MAX_CONTENT);
40
+ const columnWidth = calculateColumnWidth(col, domContainer, forceAutoSize);
41
+ domContainer.style.setProperty(`--col-width-${col.field.idHash}`, `${col.currentWidth}px`);
42
+ return columnWidth;
76
43
  }
77
44
  /**
78
- * Calculates the width of columns based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width..
45
+ * Calculates the width of columns based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width.
79
46
  *
80
47
  * @param columns - An array of `Column` objects representing the columns in the view.
81
48
  * @param domContainer - The HTML element that acts as the container for RS.
@@ -83,32 +50,29 @@ export function getMaxAvailableWidth(domContainer) {
83
50
  * @returns An object containing width for each column.
84
51
  */
85
52
  export function autoSizeOfColumns(columns, domContainer, reset) {
86
- let totalCalculatedWidth = 0;
87
53
  const columnAutoSizes = {};
88
- const remainingAvailableWidth = getMaxAvailableWidth(domContainer);
89
- columns.forEach(column => {
90
- if (!column.hidden) {
91
- if (!(column.currentWidth && reset === undefined)) {
92
- // always calculate the content based width for row selection column because it's width will change depending on if grouping is applied or not.
93
- const forceAutosize = column.field.id === rowSelectColumnMeta.field.id || !reset;
94
- const autoSize = autoSizeOfColumn(column, domContainer, forceAutosize);
95
- columnAutoSizes[column.field.id] = autoSize;
96
- totalCalculatedWidth += autoSize;
97
- }
98
- else {
99
- totalCalculatedWidth += column.currentWidth;
100
- }
54
+ const visibleColumns = columns[0].parent.getVisibleColumns(true);
55
+ // Set CSS variables for all columns that need auto-sizing first (single batch write)
56
+ visibleColumns.forEach(column => {
57
+ domContainer.style.setProperty(`--col-width-${column.field.idHash}`, MAX_CONTENT);
58
+ });
59
+ domContainer.setAttribute('data-content-size-measuring', 'true');
60
+ // Now calculate widths for all columns (each does its own DOM reading in batch context)
61
+ visibleColumns.forEach(column => {
62
+ if (!(column.currentWidth && reset === undefined)) {
63
+ // always calculate the content based width for row selection column because it's width will change depending on if grouping is applied or not.
64
+ const forceAutosize = column.field.id === rowSelectColumnMeta.field.id || !reset;
65
+ const columnWidth = calculateColumnWidth(column, domContainer, forceAutosize);
66
+ columnAutoSizes[column.field.id] = columnWidth;
67
+ }
68
+ });
69
+ domContainer.removeAttribute('data-content-size-measuring');
70
+ // Reset CSS variables back to original widths for columns that had max-content set
71
+ visibleColumns.forEach(column => {
72
+ if (column.currentWidth) {
73
+ domContainer.style.setProperty(`--col-width-${column.field.idHash}`, `${column.currentWidth}px`);
101
74
  }
102
75
  });
103
- const extraSpace = remainingAvailableWidth - totalCalculatedWidth;
104
- if (extraSpace <= 0 || Number.isNaN(extraSpace))
105
- return columnAutoSizes;
106
- const columnToFillRemainingSpace = columns.find(c => c.field.fillAvailableSpace);
107
- if (columnToFillRemainingSpace && !columnToFillRemainingSpace.hidden) {
108
- columnAutoSizes[columnToFillRemainingSpace.field.id] =
109
- (columnAutoSizes[columnToFillRemainingSpace.field.id] ??
110
- columnToFillRemainingSpace.currentWidth) + extraSpace;
111
- }
112
76
  return columnAutoSizes;
113
77
  }
114
78
  //# sourceMappingURL=autoSize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autoSize.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/autoSize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColumnResizePayload } from '../../../../actions/actions.types';\nimport { rowSelectColumnMeta } from '../../../../constants';\nimport type Column from '../../../../generators/ColumnGenerator';\nimport type View from '../../../../generators/ViewGenerator';\nimport { getScrollbarWidth } from '../../../../utils/util';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { FieldDef } from '../../../../../../types/Meta.types';\n\nconst GROUP_ICON_WIDTH = 24;\n\n/**\n * Calculates the width of column based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width.\n *\n * @param column - A column object representing column in the view.\n * @param domContainer - The HTML element that acts as the container for RS.\n * @param forceAutoSize - A boolean flag that indicates whether to force a recalculation of column widths.\n * @returns column width in pixels.\n */\nexport function autoSizeOfColumn(\n column: Column,\n domContainer: NonNullable<View['domContainer']>,\n forceAutoSize = false\n) {\n if (!forceAutoSize) {\n // This will be executed in case of reset width\n const personalizedWidth = column.getPersonalizedWidth();\n if (personalizedWidth) return personalizedWidth;\n if (column.field.width) return column.field.width;\n }\n // Condition for double click event triggered to autosize the column\n /* Autosize calculations begin */\n const cells = domContainer.querySelectorAll(`[data-col-id=\"${column.field.id}\"]`);\n const holder = document.createElement('div');\n holder.style.width = '100000px'; // some very high number\n const span = document.createElement('span');\n holder.appendChild(span);\n domContainer.appendChild(holder);\n cells.forEach(cell => {\n const row = document.createElement('div');\n row.style.display = 'table-row';\n cell.childNodes.forEach(child => row.appendChild(child.cloneNode(true)));\n span.appendChild(row);\n });\n let autoSize = Math.ceil(span.getBoundingClientRect().width);\n const iconsPlaceholder = domContainer.querySelector<HTMLElement>(\n `.header .cell[data-col-id=\"${column.field.id}\"] .icons-ph`\n );\n const groupIconPlaceholder = domContainer.querySelector<HTMLElement>(\n `.show-expand-collapse-all .row .cell[data-col-id=\"${column.field.id}\"]`\n );\n if (iconsPlaceholder) {\n autoSize += iconsPlaceholder.offsetWidth;\n }\n if (groupIconPlaceholder) {\n autoSize += GROUP_ICON_WIDTH;\n }\n domContainer.removeChild(holder);\n // Increased spacing style width by 1px to account for offsetWidth rounding off, this was causing truncation.\n autoSize += 17; // 17px for Spacing styles applied (Fetching applied styles is costly, so keeping some visible space)\n // Allow columns to autosize till a restricted max width\n return column.field.maxWidth && autoSize > column.field.maxWidth\n ? column.field.maxWidth\n : autoSize;\n}\n\n/**\n * Calculates the maximum width available in the dom container\n * @param domContainer The HTML element that acts as the container for RS.\n * @returns Maximum available width.\n */\nexport function getMaxAvailableWidth(domContainer: NonNullable<View['domContainer']>) {\n let width = domContainer.clientWidth - getScrollbarWidth();\n const firstCell = domContainer.querySelector('.cell');\n if (!firstCell) {\n return width;\n }\n let element = firstCell.parentElement!;\n let style = null;\n let margin = 0;\n let padding = 0;\n while (element !== domContainer.parentElement) {\n // @ts-expect-error Property 'currentStyle' does not exist on type 'HTMLElement' This was used for IE browser initially. Check if it can be removed.\n style = element.currentStyle || window.getComputedStyle(element);\n margin = parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n padding = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n width -= padding + margin + element.offsetWidth - element.clientWidth;\n element = element.parentElement!;\n }\n return width;\n}\n\n/**\n * Calculates the width of columns based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width..\n *\n * @param columns - An array of `Column` objects representing the columns in the view.\n * @param domContainer - The HTML element that acts as the container for RS.\n * @param reset - A boolean flag that indicates whether to force a recalculation of column widths.\n * @returns An object containing width for each column.\n */\nexport function autoSizeOfColumns(\n columns: Column[],\n domContainer: NonNullable<View['domContainer']>,\n reset?: boolean\n) {\n let totalCalculatedWidth = 0;\n const columnAutoSizes: ColumnResizePayload['data'] = {};\n\n const remainingAvailableWidth = getMaxAvailableWidth(domContainer);\n\n columns.forEach(column => {\n if (!column.hidden) {\n if (!(column.currentWidth && reset === undefined)) {\n // always calculate the content based width for row selection column because it's width will change depending on if grouping is applied or not.\n const forceAutosize = column.field.id === rowSelectColumnMeta.field.id || !reset;\n const autoSize = autoSizeOfColumn(column, domContainer, forceAutosize);\n columnAutoSizes[column.field.id] = autoSize;\n totalCalculatedWidth += autoSize;\n } else {\n totalCalculatedWidth += column.currentWidth;\n }\n }\n });\n const extraSpace = remainingAvailableWidth - totalCalculatedWidth;\n if (extraSpace <= 0 || Number.isNaN(extraSpace)) return columnAutoSizes;\n const columnToFillRemainingSpace = columns.find(c => c.field.fillAvailableSpace);\n\n if (columnToFillRemainingSpace && !columnToFillRemainingSpace.hidden) {\n columnAutoSizes[columnToFillRemainingSpace.field.id] =\n (columnAutoSizes[columnToFillRemainingSpace.field.id] ??\n columnToFillRemainingSpace.currentWidth) + extraSpace;\n }\n return columnAutoSizes;\n}\n"]}
1
+ {"version":3,"file":"autoSize.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/autoSize.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ColumnResizePayload } from '../../../../actions/actions.types';\nimport { rowSelectColumnMeta } from '../../../../constants';\nimport type Column from '../../../../generators/ColumnGenerator';\nimport type View from '../../../../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { FieldDef } from '../../../../../../types/Meta.types';\n\n/**\n * Calculates the width of column based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width.\n *\n * @param column - A column object representing column in the view.\n * @param domContainer - The HTML element that acts as the container for RS.\n * @param forceAutoSize - A boolean flag that indicates whether to force a recalculation of column widths.\n * @returns column width in pixels.\n */\n\nconst MAX_CONTENT = 'max-content';\nconst ROUNDING_BUFFER = 1;\nfunction calculateColumnWidth(\n column: Column,\n domContainer: NonNullable<View['domContainer']>,\n forceAutoSize = false\n) {\n if (!forceAutoSize) {\n // This will be executed in case of reset width\n const personalizedWidth = column.getPersonalizedWidth();\n if (personalizedWidth) {\n return personalizedWidth;\n }\n if (column.field.width) {\n return column.field.width;\n }\n }\n\n const cellsList = Array.from(\n domContainer.querySelectorAll<HTMLElement>(`[data-col-id=\"${column.field.id}\"]`)\n );\n\n let maxContentWidth = 0;\n cellsList.forEach(cell => {\n const cellWidth = cell.offsetWidth;\n if (cellWidth > maxContentWidth) {\n maxContentWidth = cellWidth;\n }\n });\n\n /* buffer to prevent content clipping due to offsetWidth rounding */\n const maxColumnWidth = maxContentWidth + ROUNDING_BUFFER;\n\n return column.field.maxWidth && maxColumnWidth > column.field.maxWidth\n ? column.field.maxWidth\n : maxColumnWidth;\n}\n\nexport function autoSizeOfColumn(\n col: Column,\n domContainer: NonNullable<View['domContainer']>,\n forceAutoSize = false\n): number {\n // Set to max-content to measure actual content width\n domContainer.style.setProperty(`--col-width-${col.field.idHash}`, MAX_CONTENT);\n\n const columnWidth = calculateColumnWidth(col, domContainer, forceAutoSize);\n\n domContainer.style.setProperty(`--col-width-${col.field.idHash}`, `${col.currentWidth}px`);\n\n return columnWidth;\n}\n/**\n * Calculates the width of columns based on their content size. If a column already has a width specified in {@link FieldDef.width} or through {@link column.getPersonalizedWidth personalization}, then that width will be honored over content size width.\n *\n * @param columns - An array of `Column` objects representing the columns in the view.\n * @param domContainer - The HTML element that acts as the container for RS.\n * @param reset - A boolean flag that indicates whether to force a recalculation of column widths.\n * @returns An object containing width for each column.\n */\nexport function autoSizeOfColumns(\n columns: Column[],\n domContainer: NonNullable<View['domContainer']>,\n reset?: boolean\n) {\n const columnAutoSizes: ColumnResizePayload['data'] = {};\n\n const visibleColumns = columns[0].parent.getVisibleColumns(true);\n\n // Set CSS variables for all columns that need auto-sizing first (single batch write)\n visibleColumns.forEach(column => {\n domContainer.style.setProperty(`--col-width-${column.field.idHash}`, MAX_CONTENT);\n });\n domContainer.setAttribute('data-content-size-measuring', 'true');\n\n // Now calculate widths for all columns (each does its own DOM reading in batch context)\n visibleColumns.forEach(column => {\n if (!(column.currentWidth && reset === undefined)) {\n // always calculate the content based width for row selection column because it's width will change depending on if grouping is applied or not.\n const forceAutosize = column.field.id === rowSelectColumnMeta.field.id || !reset;\n const columnWidth = calculateColumnWidth(column, domContainer, forceAutosize);\n\n columnAutoSizes[column.field.id] = columnWidth;\n }\n });\n\n domContainer.removeAttribute('data-content-size-measuring');\n // Reset CSS variables back to original widths for columns that had max-content set\n visibleColumns.forEach(column => {\n if (column.currentWidth) {\n domContainer.style.setProperty(\n `--col-width-${column.field.idHash}`,\n `${column.currentWidth}px`\n );\n }\n });\n\n return columnAutoSizes;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAU1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAwD5D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC7E,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,kBAAkB,GAAG,YAAY,CAAC;CAC1E,QA2DA;AAWD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;+BAKuB,cAAc,YAAY;AAJpD,wBAwBE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAU1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAmE5D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;IAC7E,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,kBAAkB,GAAG,YAAY,CAAC;CAC1E,QA2DA;AAWD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;+BAMuB,cAAc,YAAY;AALpD,wBA0BE"}
@@ -1,6 +1,6 @@
1
1
  import { actionColumnResize, actionColumnsAutoSize, actionColumnAutoSize, actionForceUpdate } from '../../../../actions/actions';
2
2
  import { TEMPLATES, SELECTION_MODES, rowSelectColumnMeta } from '../../../../constants';
3
- import { withMemoization } from '../../../../utils/util';
3
+ import { OOTB_COLUMNS, withMemoization } from '../../../../utils/util';
4
4
  import { autoSizeOfColumns } from './autoSize';
5
5
  /*
6
6
  * If columnWidths are undefined, there is no active personalization invloved in the current view
@@ -44,6 +44,16 @@ function autosizeRowSelectionColumn([{ getView, dispatch }]) {
44
44
  dispatch(actionColumnAutoSize(col, getDomContainer(), true));
45
45
  }
46
46
  }
47
+ /**
48
+ * Runs autosizing on out-of-the-box (OOTB) action columns in the view.
49
+ */
50
+ const autosizeOotbActionColumns = ([{ getView, dispatch }]) => {
51
+ const { columns = [] } = getView();
52
+ const ootbColumns = columns?.filter(col => OOTB_COLUMNS.includes(col.field.id));
53
+ if (ootbColumns.length) {
54
+ dispatch(actionColumnsAutoSize(ootbColumns, getView().getDomContainer(), true));
55
+ }
56
+ };
47
57
  /**
48
58
  * Executes the autosizing feature on all the columns. It dispatches an action that updates {@link State.columnWidths} slice with the calculated widths for all the columns.
49
59
  * @param param featureProps
@@ -139,6 +149,7 @@ export default () => {
139
149
  const memoizedRunColumnSizing = withMemoization(runColumnSizing);
140
150
  const memoizedResetAutosizeStatus = withMemoization(resetAutosizeStatus);
141
151
  const memoizedAutosizeRowSelectionColumn = withMemoization(autosizeRowSelectionColumn);
152
+ const memoizedAutosizeOotbActionColumns = withMemoization(autosizeOotbActionColumns);
142
153
  return function execute(featureProps) {
143
154
  const state = featureProps.getState();
144
155
  // AutoSize by default
@@ -152,6 +163,7 @@ export default () => {
152
163
  state.forceUpdateFeatures?.forceCalculateAutoWidth
153
164
  ]);
154
165
  memoizedAutosizeRowSelectionColumn([featureProps], [state.groups, state.responsive?.sm]);
166
+ memoizedAutosizeOotbActionColumns([featureProps], [state.selectedHeightOption]);
155
167
  };
156
168
  };
157
169
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n actionColumnResize,\n actionColumnsAutoSize,\n actionColumnAutoSize,\n actionForceUpdate\n} from '../../../../actions/actions';\nimport { TEMPLATES, SELECTION_MODES, rowSelectColumnMeta } from '../../../../constants';\nimport { withMemoization } from '../../../../utils/util';\nimport type { FeatureProps } from '../../../featureFactory';\nimport type View from '../../../../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../../types/State.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../../RsStore';\n\nimport { autoSizeOfColumns } from './autoSize';\n\n/*\n * If columnWidths are undefined, there is no active personalization invloved in the current view\n * So triggering auto column sizing, which depends on column content.\n * in case of nested groupings, skipping group headers from being counted as a row\n */\n/**\n * Checks if {@link View.domContainer dom container} has any rows with visible cells.\n * @param columns\n * @param domContainer\n * @returns true if dom container has any rows available, otherwise false.\n */\nconst checkDomContainerHasAnyRows = (\n columns: NonNullable<View['columns']>,\n domContainer: View['domContainer']\n) => {\n for (const column of columns) {\n if (!column.hidden) {\n const cells = domContainer\n ? domContainer.querySelectorAll(`[data-col-id=\"${column.field.id}\"]`)\n : [];\n if (cells.length > 1) {\n return true;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if any data rows are available in dom container. It does not includes grouped rows.\n * @returns true if data rows are available, otherwise false.\n */\nconst checkDomContainerHasDataRows = (domContainer: View['domContainer']) => {\n return !!(domContainer && domContainer.querySelectorAll('.row[aria-rowindex]').length);\n};\n\n/**\n * Executes the autosizing feature on row selection column.\n */\nfunction autosizeRowSelectionColumn([{ getView, dispatch }]: [featureProps: FeatureProps]) {\n const { columns = [], getDomContainer, meta } = getView();\n if (meta.selectionMode && Object.values(SELECTION_MODES).includes(meta.selectionMode)) {\n const col = columns.find(c => c.field.id === rowSelectColumnMeta.field.id);\n if (col) dispatch(actionColumnAutoSize(col, getDomContainer()!, true));\n }\n}\n\n/**\n * Executes the autosizing feature on all the columns. It dispatches an action that updates {@link State.columnWidths} slice with the calculated widths for all the columns.\n * @param param featureProps\n * @returns\n */\nexport function runColumnSizing([{ getState, getView, getRsStore, dispatch }]: [\n featureProps: OmitStrict<FeatureProps, 'getOriginalState' | 'getRsProps'>\n]) {\n const { columns = [], getDomContainer, meta } = getView();\n\n if (meta.template !== TEMPLATES.TABLE) return;\n\n const rsStore = getRsStore();\n const domContainer = getDomContainer();\n const runColumnSizingOnRowsAvailable =\n !rsStore.columnSizingTriggerdOnRowsAvailable && checkDomContainerHasDataRows(domContainer);\n\n // if there is no group/data row to size in DOM, don't run column sizing\n if (\n !checkDomContainerHasAnyRows(columns, domContainer) ||\n (rsStore.autosizeTriggered && !runColumnSizingOnRowsAvailable)\n ) {\n // if in current render cycle the rows were not painted, check for autosizing in next cycle\n if (!rsStore.autosizeTriggered) {\n dispatch(actionForceUpdate(false, { forceCalculateAutoWidth: true }));\n }\n return;\n }\n\n /**\n * If one of the table's ancestors is in a hidden state, the autosize calculations will not function correctly\n * since the domContainer's offsetWidth will be 0. To address this scenario, a resize observer is attached for this use case.\n * It triggers autosize whenever the offsetWidth of the domContainer increases from 0 once the ancestors are\n * made visible. */\n if (domContainer?.offsetWidth === 0) {\n const observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.contentRect.width > 0) {\n runColumnSizing([\n {\n getState,\n getView,\n getRsStore,\n dispatch\n }\n ]);\n observer.unobserve(entry.target);\n }\n }\n });\n observer.observe(domContainer);\n return;\n }\n\n rsStore.autosizeTriggered = true;\n // skipping column animation on next run if column size changed after personalization change or delete\n rsStore.skipColumnAnimationOnNextRun = true;\n\n if (runColumnSizingOnRowsAvailable) {\n // Fresh column sizing will run only once for a view when the rows are loaded for the first time in DOM\n rsStore.columnSizingTriggerdOnRowsAvailable = true;\n dispatch(actionColumnsAutoSize(columns, domContainer!, true));\n } else {\n // Incremental column sizing on show/hide of columns or table refresh or on view change with grouping applied\n dispatch(actionColumnResize(autoSizeOfColumns(columns, domContainer!)));\n }\n}\n\n/**\n * It resets the {@link RsStore.autosizeTriggered autosize status} on RsStore.\n * @param param featureProps\n */\nfunction resetAutosizeStatus([{ getRsStore }]: [featureProps: FeatureProps]) {\n // This parent flag checks if any type of sizing is triggered on the table including table header/groups/rows.\n getRsStore().autosizeTriggered = false;\n}\n\n/**\n * Manages the autosizing feature of columns in the view. This includes the following actions:\n * 1. **Executing Autosize for All Columns**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link View.rows}\n * - {@link RsStore.autosizeTriggered}\n * - {@link State.refresh}\n * - {@link State.hiddenColumns}\n * - {@link State.forceUpdateFeatures.forceCalculateAutoWidth}\n * 2. **Resetting Autosize Status**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link State.refresh}\n * - {@link State.hiddenColumns}\n * - {@link State.customFields}\n *\n * 3. **Executing Autosize on Row Selection Column**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.groups}\n * - {@link State.responsive.sm}\n */\nexport default () => {\n const memoizedRunColumnSizing = withMemoization(runColumnSizing);\n const memoizedResetAutosizeStatus = withMemoization(resetAutosizeStatus);\n const memoizedAutosizeRowSelectionColumn = withMemoization(autosizeRowSelectionColumn);\n return function execute(featureProps: FeatureProps) {\n const state = featureProps.getState();\n // AutoSize by default\n memoizedResetAutosizeStatus(\n [featureProps],\n [state.personalization?.active, state.refresh, state.hiddenColumns, state.customFields]\n );\n memoizedRunColumnSizing(\n [featureProps],\n [\n state.personalization?.active,\n featureProps.getView().rows,\n featureProps.getRsStore().autosizeTriggered,\n state.refresh,\n state.hiddenColumns,\n state.forceUpdateFeatures?.forceCalculateAutoWidth\n ]\n );\n memoizedAutosizeRowSelectionColumn([featureProps], [state.groups, state.responsive?.sm]);\n };\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/core/features/uIFeatures/afterRender/columnSizing/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;GAIG;AACH;;;;;GAKG;AACH,MAAM,2BAA2B,GAAG,CAClC,OAAqC,EACrC,YAAkC,EAClC,EAAE;IACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,YAAY;gBACxB,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;gBACrE,CAAC,CAAC,EAAE,CAAC;YACP,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,4BAA4B,GAAG,CAAC,YAAkC,EAAE,EAAE;IAC1E,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF;;GAEG;AACH,SAAS,0BAA0B,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAA+B;IACvF,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAC1D,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACtF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,GAAG;YAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,yBAAyB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAA+B,EAAE,EAAE;IAC1F,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;IACnC,MAAM,WAAW,GAAG,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,eAAe,EAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAE3E;IACC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAE1D,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK;QAAE,OAAO;IAE9C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,8BAA8B,GAClC,CAAC,OAAO,CAAC,mCAAmC,IAAI,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAE7F,wEAAwE;IACxE,IACE,CAAC,2BAA2B,CAAC,OAAO,EAAE,YAAY,CAAC;QACnD,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,8BAA8B,CAAC,EAC9D,CAAC;QACD,2FAA2F;QAC3F,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC/B,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO;IACT,CAAC;IAED;;;;uBAImB;IACnB,IAAI,YAAY,EAAE,WAAW,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;YAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBAChC,eAAe,CAAC;wBACd;4BACE,QAAQ;4BACR,OAAO;4BACP,UAAU;4BACV,QAAQ;yBACT;qBACF,CAAC,CAAC;oBACH,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACjC,sGAAsG;IACtG,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC;IAE5C,IAAI,8BAA8B,EAAE,CAAC;QACnC,uGAAuG;QACvG,OAAO,CAAC,mCAAmC,GAAG,IAAI,CAAC;QACnD,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,6GAA6G;QAC7G,QAAQ,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAa,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,CAA+B;IACzE,8GAA8G;IAC9G,UAAU,EAAE,CAAC,iBAAiB,GAAG,KAAK,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,uBAAuB,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,2BAA2B,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACzE,MAAM,kCAAkC,GAAG,eAAe,CAAC,0BAA0B,CAAC,CAAC;IACvF,MAAM,iCAAiC,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACrF,OAAO,SAAS,OAAO,CAAC,YAA0B;QAChD,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,sBAAsB;QACtB,2BAA2B,CACzB,CAAC,YAAY,CAAC,EACd,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CACxF,CAAC;QACF,uBAAuB,CACrB,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,eAAe,EAAE,MAAM;YAC7B,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI;YAC3B,YAAY,CAAC,UAAU,EAAE,CAAC,iBAAiB;YAC3C,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,aAAa;YACnB,KAAK,CAAC,mBAAmB,EAAE,uBAAuB;SACnD,CACF,CAAC;QACF,kCAAkC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QACzF,iCAAiC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { OmitStrict } from '@pega/cosmos-react-core';\n\nimport {\n actionColumnResize,\n actionColumnsAutoSize,\n actionColumnAutoSize,\n actionForceUpdate\n} from '../../../../actions/actions';\nimport { TEMPLATES, SELECTION_MODES, rowSelectColumnMeta } from '../../../../constants';\nimport { OOTB_COLUMNS, withMemoization } from '../../../../utils/util';\nimport type { FeatureProps } from '../../../featureFactory';\nimport type View from '../../../../generators/ViewGenerator';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State } from '../../../../../../types/State.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type RsStore from '../../../../RsStore';\n\nimport { autoSizeOfColumns } from './autoSize';\n\n/*\n * If columnWidths are undefined, there is no active personalization invloved in the current view\n * So triggering auto column sizing, which depends on column content.\n * in case of nested groupings, skipping group headers from being counted as a row\n */\n/**\n * Checks if {@link View.domContainer dom container} has any rows with visible cells.\n * @param columns\n * @param domContainer\n * @returns true if dom container has any rows available, otherwise false.\n */\nconst checkDomContainerHasAnyRows = (\n columns: NonNullable<View['columns']>,\n domContainer: View['domContainer']\n) => {\n for (const column of columns) {\n if (!column.hidden) {\n const cells = domContainer\n ? domContainer.querySelectorAll(`[data-col-id=\"${column.field.id}\"]`)\n : [];\n if (cells.length > 1) {\n return true;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if any data rows are available in dom container. It does not includes grouped rows.\n * @returns true if data rows are available, otherwise false.\n */\nconst checkDomContainerHasDataRows = (domContainer: View['domContainer']) => {\n return !!(domContainer && domContainer.querySelectorAll('.row[aria-rowindex]').length);\n};\n\n/**\n * Executes the autosizing feature on row selection column.\n */\nfunction autosizeRowSelectionColumn([{ getView, dispatch }]: [featureProps: FeatureProps]) {\n const { columns = [], getDomContainer, meta } = getView();\n if (meta.selectionMode && Object.values(SELECTION_MODES).includes(meta.selectionMode)) {\n const col = columns.find(c => c.field.id === rowSelectColumnMeta.field.id);\n if (col) dispatch(actionColumnAutoSize(col, getDomContainer()!, true));\n }\n}\n\n/**\n * Runs autosizing on out-of-the-box (OOTB) action columns in the view.\n */\nconst autosizeOotbActionColumns = ([{ getView, dispatch }]: [featureProps: FeatureProps]) => {\n const { columns = [] } = getView();\n const ootbColumns = columns?.filter(col => OOTB_COLUMNS.includes(col.field.id));\n if (ootbColumns.length) {\n dispatch(actionColumnsAutoSize(ootbColumns, getView().getDomContainer()!, true));\n }\n};\n\n/**\n * Executes the autosizing feature on all the columns. It dispatches an action that updates {@link State.columnWidths} slice with the calculated widths for all the columns.\n * @param param featureProps\n * @returns\n */\nexport function runColumnSizing([{ getState, getView, getRsStore, dispatch }]: [\n featureProps: OmitStrict<FeatureProps, 'getOriginalState' | 'getRsProps'>\n]) {\n const { columns = [], getDomContainer, meta } = getView();\n\n if (meta.template !== TEMPLATES.TABLE) return;\n\n const rsStore = getRsStore();\n const domContainer = getDomContainer();\n const runColumnSizingOnRowsAvailable =\n !rsStore.columnSizingTriggerdOnRowsAvailable && checkDomContainerHasDataRows(domContainer);\n\n // if there is no group/data row to size in DOM, don't run column sizing\n if (\n !checkDomContainerHasAnyRows(columns, domContainer) ||\n (rsStore.autosizeTriggered && !runColumnSizingOnRowsAvailable)\n ) {\n // if in current render cycle the rows were not painted, check for autosizing in next cycle\n if (!rsStore.autosizeTriggered) {\n dispatch(actionForceUpdate(false, { forceCalculateAutoWidth: true }));\n }\n return;\n }\n\n /**\n * If one of the table's ancestors is in a hidden state, the autosize calculations will not function correctly\n * since the domContainer's offsetWidth will be 0. To address this scenario, a resize observer is attached for this use case.\n * It triggers autosize whenever the offsetWidth of the domContainer increases from 0 once the ancestors are\n * made visible. */\n if (domContainer?.offsetWidth === 0) {\n const observer = new ResizeObserver(entries => {\n for (const entry of entries) {\n if (entry.contentRect.width > 0) {\n runColumnSizing([\n {\n getState,\n getView,\n getRsStore,\n dispatch\n }\n ]);\n observer.unobserve(entry.target);\n }\n }\n });\n observer.observe(domContainer);\n return;\n }\n\n rsStore.autosizeTriggered = true;\n // skipping column animation on next run if column size changed after personalization change or delete\n rsStore.skipColumnAnimationOnNextRun = true;\n\n if (runColumnSizingOnRowsAvailable) {\n // Fresh column sizing will run only once for a view when the rows are loaded for the first time in DOM\n rsStore.columnSizingTriggerdOnRowsAvailable = true;\n dispatch(actionColumnsAutoSize(columns, domContainer!, true));\n } else {\n // Incremental column sizing on show/hide of columns or table refresh or on view change with grouping applied\n dispatch(actionColumnResize(autoSizeOfColumns(columns, domContainer!)));\n }\n}\n\n/**\n * It resets the {@link RsStore.autosizeTriggered autosize status} on RsStore.\n * @param param featureProps\n */\nfunction resetAutosizeStatus([{ getRsStore }]: [featureProps: FeatureProps]) {\n // This parent flag checks if any type of sizing is triggered on the table including table header/groups/rows.\n getRsStore().autosizeTriggered = false;\n}\n\n/**\n * Manages the autosizing feature of columns in the view. This includes the following actions:\n * 1. **Executing Autosize for All Columns**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link View.rows}\n * - {@link RsStore.autosizeTriggered}\n * - {@link State.refresh}\n * - {@link State.hiddenColumns}\n * - {@link State.forceUpdateFeatures.forceCalculateAutoWidth}\n * 2. **Resetting Autosize Status**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.personalization.active}\n * - {@link State.refresh}\n * - {@link State.hiddenColumns}\n * - {@link State.customFields}\n *\n * 3. **Executing Autosize on Row Selection Column**:\n *\n * This action is triggered when any of the following properties change:\n * - {@link State.groups}\n * - {@link State.responsive.sm}\n */\nexport default () => {\n const memoizedRunColumnSizing = withMemoization(runColumnSizing);\n const memoizedResetAutosizeStatus = withMemoization(resetAutosizeStatus);\n const memoizedAutosizeRowSelectionColumn = withMemoization(autosizeRowSelectionColumn);\n const memoizedAutosizeOotbActionColumns = withMemoization(autosizeOotbActionColumns);\n return function execute(featureProps: FeatureProps) {\n const state = featureProps.getState();\n // AutoSize by default\n memoizedResetAutosizeStatus(\n [featureProps],\n [state.personalization?.active, state.refresh, state.hiddenColumns, state.customFields]\n );\n memoizedRunColumnSizing(\n [featureProps],\n [\n state.personalization?.active,\n featureProps.getView().rows,\n featureProps.getRsStore().autosizeTriggered,\n state.refresh,\n state.hiddenColumns,\n state.forceUpdateFeatures?.forceCalculateAutoWidth\n ]\n );\n memoizedAutosizeRowSelectionColumn([featureProps], [state.groups, state.responsive?.sm]);\n memoizedAutosizeOotbActionColumns([featureProps], [state.selectedHeightOption]);\n };\n};\n"]}
@@ -5,6 +5,7 @@ import type { BeforeRenderFeatureProps } from '../../featureFactory';
5
5
  * - {@link State.filterExpression}
6
6
  * - `query` in {@link State.search}
7
7
  * - `active` in {@link State.personalization}
8
+ * - {@link state.hiddenColumns}
8
9
  */
9
10
  declare const _default: () => (featureProps: BeforeRenderFeatureProps) => Promise<void>;
10
11
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"aggregation.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/aggregation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAwCrE;;;;;;GAMG;+BAI6B,cAAc,wBAAwB;AAHtE,wBAgBE"}
1
+ {"version":3,"file":"aggregation.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/aggregation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAwCrE;;;;;;;GAOG;+BAI6B,cAAc,wBAAwB;AAHtE,wBAiBE"}
@@ -36,6 +36,7 @@ const getAggregatedValues = async ([{ getView, getRsProps, getState, getRsStore
36
36
  * - {@link State.filterExpression}
37
37
  * - `query` in {@link State.search}
38
38
  * - `active` in {@link State.personalization}
39
+ * - {@link state.hiddenColumns}
39
40
  */
40
41
  export default () => {
41
42
  const memoizedGetAggregatedValues = withMemoization(getAggregatedValues);
@@ -46,7 +47,8 @@ export default () => {
46
47
  state.filterExpression,
47
48
  state.search?.query,
48
49
  state?.personalization?.active,
49
- state.refresh
50
+ state.refresh,
51
+ state.hiddenColumns
50
52
  ]);
51
53
  };
52
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"aggregation.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/aggregation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKhE,qDAAqD;AAErD;;;GAGG;AACH,MAAM,mBAAmB,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAEhF,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,gBAAgB,GACpB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YACtE,CAAC,CAAC,MAAM,UAAU,CAAC,qBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE;gBACvE,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,IAAI;oBACpC,eAAe,EAAE,IAAI;oBACrB,oBAAoB,EAAE,UAAU,EAAE,CAAC,YAAY;iBAChD,CAAC;aACH,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;YAClC,MAAM,WAAW,GACf,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3F,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBACtB,UAAU,EAAE,CAAC,CAAC,WAAW;gBACzB,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,eAAe,EAAE,WAAW,EAAE,IAAI;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,2BAA2B,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAEzE,OAAO,KAAK,UAAU,OAAO,CAAC,YAAsC;QAClE,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,2BAA2B,CAC/B,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,eAAe;YACrB,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,MAAM,EAAE,KAAK;YACnB,KAAK,EAAE,eAAe,EAAE,MAAM;YAC9B,KAAK,CAAC,OAAO;SACd,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { deepCopy, withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { State } from '../../../../../types/State.types';\nimport type { ApiContext } from '../../../../../types/ApiContext.types';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\n/**\n * Calculates the aggregate values for columns by calling {@link ApiContext.fetchAggregatedValues fetchAggregatedValues} api if {@link State.aggregationInfo aggregationInfo} is present.\n * @param param0 - {@link BeforeRenderFeatureProps}\n */\nconst getAggregatedValues = async ([{ getView, getRsProps, getState, getRsStore }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const { apiContext } = getRsProps();\n const state = getState();\n try {\n const aggregatedValues =\n Array.isArray(state.aggregationInfo) && state.aggregationInfo.length > 0\n ? await apiContext.fetchAggregatedValues!(deepCopy(state), getView().meta, {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n })\n : {};\n getView().columns?.forEach(column => {\n const aggregation =\n state.aggregationInfo && state.aggregationInfo.find(t => t.columnId === column.field.id);\n column = column.setProp({\n aggregated: !!aggregation,\n aggregateValue: aggregatedValues[column.field.id],\n aggregationType: aggregation?.type\n });\n });\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n};\n\n/**\n * Calculates the aggregate values for columns when any of the following state properties are changed:\n * - {@link State.aggregationInfo}\n * - {@link State.filterExpression}\n * - `query` in {@link State.search}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedGetAggregatedValues = withMemoization(getAggregatedValues);\n\n return async function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n await memoizedGetAggregatedValues(\n [featureProps],\n [\n state.aggregationInfo,\n state.filterExpression,\n state.search?.query,\n state?.personalization?.active,\n state.refresh\n ]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"aggregation.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/aggregation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKhE,qDAAqD;AAErD;;;GAGG;AACH,MAAM,mBAAmB,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAEhF,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,gBAAgB,GACpB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;YACtE,CAAC,CAAC,MAAM,UAAU,CAAC,qBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE;gBACvE,GAAG,CAAC,UAAU,EAAE,CAAC,iBAAiB,IAAI;oBACpC,eAAe,EAAE,IAAI;oBACrB,oBAAoB,EAAE,UAAU,EAAE,CAAC,YAAY;iBAChD,CAAC;aACH,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;YAClC,MAAM,WAAW,GACf,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3F,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBACtB,UAAU,EAAE,CAAC,CAAC,WAAW;gBACzB,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,eAAe,EAAE,WAAW,EAAE,IAAI;aACnC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,2BAA2B,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;IAEzE,OAAO,KAAK,UAAU,OAAO,CAAC,YAAsC;QAClE,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,2BAA2B,CAC/B,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,eAAe;YACrB,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,MAAM,EAAE,KAAK;YACnB,KAAK,EAAE,eAAe,EAAE,MAAM;YAC9B,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,aAAa;SACpB,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { deepCopy, withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { State } from '../../../../../types/State.types';\nimport type { ApiContext } from '../../../../../types/ApiContext.types';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\n/**\n * Calculates the aggregate values for columns by calling {@link ApiContext.fetchAggregatedValues fetchAggregatedValues} api if {@link State.aggregationInfo aggregationInfo} is present.\n * @param param0 - {@link BeforeRenderFeatureProps}\n */\nconst getAggregatedValues = async ([{ getView, getRsProps, getState, getRsStore }]: [\n featureProps: BeforeRenderFeatureProps\n]) => {\n const { apiContext } = getRsProps();\n const state = getState();\n try {\n const aggregatedValues =\n Array.isArray(state.aggregationInfo) && state.aggregationInfo.length > 0\n ? await apiContext.fetchAggregatedValues!(deepCopy(state), getView().meta, {\n ...(getRsStore().refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: getRsStore().refreshToken\n })\n })\n : {};\n getView().columns?.forEach(column => {\n const aggregation =\n state.aggregationInfo && state.aggregationInfo.find(t => t.columnId === column.field.id);\n column = column.setProp({\n aggregated: !!aggregation,\n aggregateValue: aggregatedValues[column.field.id],\n aggregationType: aggregation?.type\n });\n });\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('API call failed', err);\n }\n};\n\n/**\n * Calculates the aggregate values for columns when any of the following state properties are changed:\n * - {@link State.aggregationInfo}\n * - {@link State.filterExpression}\n * - `query` in {@link State.search}\n * - `active` in {@link State.personalization}\n * - {@link state.hiddenColumns}\n */\nexport default () => {\n const memoizedGetAggregatedValues = withMemoization(getAggregatedValues);\n\n return async function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n await memoizedGetAggregatedValues(\n [featureProps],\n [\n state.aggregationInfo,\n state.filterExpression,\n state.search?.query,\n state?.personalization?.active,\n state.refresh,\n state.hiddenColumns\n ]\n );\n };\n};\n"]}
@@ -10,6 +10,7 @@ import type { BeforeRenderFeatureProps } from '../../featureFactory';
10
10
  * - {@link State.groups}
11
11
  * - {@link State.aggregationInfo}
12
12
  * - {@link State.refresh}
13
+ * - {@link State.hiddenColumns}
13
14
  *
14
15
  * `isLoading` is reset on publish of `AFTER_FETCH` event.
15
16
  */