@pega/lists-core 9.0.0-build.9.8 → 9.0.0

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 (277) hide show
  1. package/lib/index.d.ts +3 -2
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +3 -2
  4. package/lib/index.js.map +1 -1
  5. package/lib/src/core/RsCore.d.ts +1 -1
  6. package/lib/src/core/RsCore.js +1 -1
  7. package/lib/src/core/RsCore.js.map +1 -1
  8. package/lib/src/core/RsInternal.d.ts +23 -0
  9. package/lib/src/core/RsInternal.d.ts.map +1 -1
  10. package/lib/src/core/RsInternal.js +18 -2
  11. package/lib/src/core/RsInternal.js.map +1 -1
  12. package/lib/src/core/RsProps.d.ts +0 -7
  13. package/lib/src/core/RsProps.d.ts.map +1 -1
  14. package/lib/src/core/RsProps.js +0 -7
  15. package/lib/src/core/RsProps.js.map +1 -1
  16. package/lib/src/core/RsStore.d.ts +5 -1
  17. package/lib/src/core/RsStore.d.ts.map +1 -1
  18. package/lib/src/core/RsStore.js +12 -0
  19. package/lib/src/core/RsStore.js.map +1 -1
  20. package/lib/src/core/StateResolver.d.ts +0 -1
  21. package/lib/src/core/StateResolver.d.ts.map +1 -1
  22. package/lib/src/core/StateResolver.js +19 -9
  23. package/lib/src/core/StateResolver.js.map +1 -1
  24. package/lib/src/core/a11y/BaseA11y.d.ts +25 -6
  25. package/lib/src/core/a11y/BaseA11y.d.ts.map +1 -1
  26. package/lib/src/core/a11y/BaseA11y.js +39 -8
  27. package/lib/src/core/a11y/BaseA11y.js.map +1 -1
  28. package/lib/src/core/actions/actionConstants.d.ts +7 -4
  29. package/lib/src/core/actions/actionConstants.d.ts.map +1 -1
  30. package/lib/src/core/actions/actionConstants.js +8 -5
  31. package/lib/src/core/actions/actionConstants.js.map +1 -1
  32. package/lib/src/core/actions/actions.d.ts +35 -34
  33. package/lib/src/core/actions/actions.d.ts.map +1 -1
  34. package/lib/src/core/actions/actions.js +47 -40
  35. package/lib/src/core/actions/actions.js.map +1 -1
  36. package/lib/src/core/actions/actions.types.d.ts +34 -27
  37. package/lib/src/core/actions/actions.types.d.ts.map +1 -1
  38. package/lib/src/core/actions/actions.types.js.map +1 -1
  39. package/lib/src/core/config/config.d.ts +1 -1
  40. package/lib/src/core/config/config.d.ts.map +1 -1
  41. package/lib/src/core/config/config.js +5 -2
  42. package/lib/src/core/config/config.js.map +1 -1
  43. package/lib/src/core/constants.d.ts +4 -0
  44. package/lib/src/core/constants.d.ts.map +1 -1
  45. package/lib/src/core/constants.js +22 -5
  46. package/lib/src/core/constants.js.map +1 -1
  47. package/lib/src/core/defaultTranslations.d.ts +6 -1
  48. package/lib/src/core/defaultTranslations.d.ts.map +1 -1
  49. package/lib/src/core/defaultTranslations.js +6 -1
  50. package/lib/src/core/defaultTranslations.js.map +1 -1
  51. package/lib/src/core/features/featureFactory.d.ts +6 -2
  52. package/lib/src/core/features/featureFactory.d.ts.map +1 -1
  53. package/lib/src/core/features/featureFactory.js +9 -8
  54. package/lib/src/core/features/featureFactory.js.map +1 -1
  55. package/lib/src/core/features/uIFeatures/afterRender/animation.d.ts.map +1 -1
  56. package/lib/src/core/features/uIFeatures/afterRender/animation.js +11 -2
  57. package/lib/src/core/features/uIFeatures/afterRender/animation.js.map +1 -1
  58. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts +2 -16
  59. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.d.ts.map +1 -1
  60. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js +48 -89
  61. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/autoSize.js.map +1 -1
  62. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts +3 -4
  63. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.d.ts.map +1 -1
  64. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js +83 -45
  65. package/lib/src/core/features/uIFeatures/afterRender/columnSizing/index.js.map +1 -1
  66. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.d.ts.map +1 -1
  67. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js +2 -2
  68. package/lib/src/core/features/uIFeatures/afterRender/customizeParentContainer/index.js.map +1 -1
  69. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts +4 -1
  70. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.d.ts.map +1 -1
  71. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js +15 -14
  72. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeight.js.map +1 -1
  73. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.d.ts.map +1 -1
  74. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js +10 -2
  75. package/lib/src/core/features/uIFeatures/beforeRender/adjustHeightToFitRecords.js.map +1 -1
  76. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.d.ts +1 -1
  77. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js +2 -2
  78. package/lib/src/core/features/uIFeatures/beforeRender/aggregation.js.map +1 -1
  79. package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts +1 -1
  80. package/lib/src/core/features/uIFeatures/beforeRender/animation.d.ts.map +1 -1
  81. package/lib/src/core/features/uIFeatures/beforeRender/animation.js +5 -4
  82. package/lib/src/core/features/uIFeatures/beforeRender/animation.js.map +1 -1
  83. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.d.ts +1 -1
  84. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js +2 -2
  85. package/lib/src/core/features/uIFeatures/beforeRender/busyIndicator.js.map +1 -1
  86. package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js +1 -1
  87. package/lib/src/core/features/uIFeatures/beforeRender/changePersonalisation.js.map +1 -1
  88. package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.d.ts +13 -0
  89. package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.d.ts.map +1 -0
  90. package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.js +40 -0
  91. package/lib/src/core/features/uIFeatures/beforeRender/changeTemplate.js.map +1 -0
  92. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts +2 -0
  93. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.d.ts.map +1 -1
  94. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js +14 -1
  95. package/lib/src/core/features/uIFeatures/beforeRender/columnAlias.js.map +1 -1
  96. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.d.ts.map +1 -1
  97. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js +7 -5
  98. package/lib/src/core/features/uIFeatures/beforeRender/columnFormatter.js.map +1 -1
  99. package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.d.ts.map +1 -1
  100. package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js +13 -5
  101. package/lib/src/core/features/uIFeatures/beforeRender/columnOrder.js.map +1 -1
  102. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts +1 -1
  103. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.d.ts.map +1 -1
  104. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js +20 -17
  105. package/lib/src/core/features/uIFeatures/beforeRender/columnReOrder.js.map +1 -1
  106. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts +2 -4
  107. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.d.ts.map +1 -1
  108. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js +61 -40
  109. package/lib/src/core/features/uIFeatures/beforeRender/columnSizing/resize.js.map +1 -1
  110. package/lib/src/core/features/uIFeatures/beforeRender/columnSort.d.ts.map +1 -1
  111. package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js +1 -1
  112. package/lib/src/core/features/uIFeatures/beforeRender/columnSort.js.map +1 -1
  113. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts +2 -2
  114. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.d.ts.map +1 -1
  115. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js +10 -5
  116. package/lib/src/core/features/uIFeatures/beforeRender/columnToggle.js.map +1 -1
  117. package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.d.ts +1 -1
  118. package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js +4 -4
  119. package/lib/src/core/features/uIFeatures/beforeRender/columnVisualOrder.js.map +1 -1
  120. package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.d.ts.map +1 -1
  121. package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js +9 -8
  122. package/lib/src/core/features/uIFeatures/beforeRender/conditionalStyleFormat.js.map +1 -1
  123. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts +1 -1
  124. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.d.ts.map +1 -1
  125. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js +22 -8
  126. package/lib/src/core/features/uIFeatures/beforeRender/customColumn.js.map +1 -1
  127. package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.d.ts.map +1 -1
  128. package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js +9 -6
  129. package/lib/src/core/features/uIFeatures/beforeRender/errorColumn.js.map +1 -1
  130. package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts +1 -0
  131. package/lib/src/core/features/uIFeatures/beforeRender/filter.d.ts.map +1 -1
  132. package/lib/src/core/features/uIFeatures/beforeRender/filter.js +13 -3
  133. package/lib/src/core/features/uIFeatures/beforeRender/filter.js.map +1 -1
  134. package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts +2 -2
  135. package/lib/src/core/features/uIFeatures/beforeRender/freeze.d.ts.map +1 -1
  136. package/lib/src/core/features/uIFeatures/beforeRender/freeze.js +14 -9
  137. package/lib/src/core/features/uIFeatures/beforeRender/freeze.js.map +1 -1
  138. package/lib/src/core/features/uIFeatures/beforeRender/grouping.d.ts.map +1 -1
  139. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js +23 -24
  140. package/lib/src/core/features/uIFeatures/beforeRender/grouping.js.map +1 -1
  141. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts +32 -1
  142. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.d.ts.map +1 -1
  143. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js +128 -32
  144. package/lib/src/core/features/uIFeatures/beforeRender/prepareColumns.js.map +1 -1
  145. package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.d.ts.map +1 -1
  146. package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js +4 -4
  147. package/lib/src/core/features/uIFeatures/beforeRender/prepareRows.js.map +1 -1
  148. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.d.ts.map +1 -1
  149. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js +14 -10
  150. package/lib/src/core/features/uIFeatures/beforeRender/rowDragDrop.js.map +1 -1
  151. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts +16 -4
  152. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.d.ts.map +1 -1
  153. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js +124 -72
  154. package/lib/src/core/features/uIFeatures/beforeRender/stateHydration.js.map +1 -1
  155. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts +2 -2
  156. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.d.ts.map +1 -1
  157. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js +116 -37
  158. package/lib/src/core/features/uIFeatures/beforeRender/stateSanitization.js.map +1 -1
  159. package/lib/src/core/features/uIFeatures/index.d.ts +2 -3
  160. package/lib/src/core/features/uIFeatures/index.d.ts.map +1 -1
  161. package/lib/src/core/features/uIFeatures/index.js +2 -4
  162. package/lib/src/core/features/uIFeatures/index.js.map +1 -1
  163. package/lib/src/core/generators/ColumnGenerator.d.ts +15 -21
  164. package/lib/src/core/generators/ColumnGenerator.d.ts.map +1 -1
  165. package/lib/src/core/generators/ColumnGenerator.js +32 -95
  166. package/lib/src/core/generators/ColumnGenerator.js.map +1 -1
  167. package/lib/src/core/generators/ColumnGenerator.types.d.ts +16 -13
  168. package/lib/src/core/generators/ColumnGenerator.types.d.ts.map +1 -1
  169. package/lib/src/core/generators/ColumnGenerator.types.js.map +1 -1
  170. package/lib/src/core/generators/GroupGenerator.d.ts +5 -1
  171. package/lib/src/core/generators/GroupGenerator.d.ts.map +1 -1
  172. package/lib/src/core/generators/GroupGenerator.js +20 -0
  173. package/lib/src/core/generators/GroupGenerator.js.map +1 -1
  174. package/lib/src/core/generators/RowGenerator.d.ts +2 -2
  175. package/lib/src/core/generators/RowGenerator.d.ts.map +1 -1
  176. package/lib/src/core/generators/RowGenerator.js +3 -4
  177. package/lib/src/core/generators/RowGenerator.js.map +1 -1
  178. package/lib/src/core/generators/RowGenerator.types.d.ts +2 -1
  179. package/lib/src/core/generators/RowGenerator.types.d.ts.map +1 -1
  180. package/lib/src/core/generators/RowGenerator.types.js.map +1 -1
  181. package/lib/src/core/generators/ViewGenerator.d.ts +42 -28
  182. package/lib/src/core/generators/ViewGenerator.d.ts.map +1 -1
  183. package/lib/src/core/generators/ViewGenerator.js +101 -61
  184. package/lib/src/core/generators/ViewGenerator.js.map +1 -1
  185. package/lib/src/core/generators/ViewGenerator.types.d.ts +13 -1
  186. package/lib/src/core/generators/ViewGenerator.types.d.ts.map +1 -1
  187. package/lib/src/core/generators/ViewGenerator.types.js.map +1 -1
  188. package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts +3 -0
  189. package/lib/src/core/generators/__tests__/viewUtilityMockSetup.d.ts.map +1 -1
  190. package/lib/src/core/generators/viewUtilityMethods.d.ts +23 -10
  191. package/lib/src/core/generators/viewUtilityMethods.d.ts.map +1 -1
  192. package/lib/src/core/generators/viewUtilityMethods.js +50 -11
  193. package/lib/src/core/generators/viewUtilityMethods.js.map +1 -1
  194. package/lib/src/core/index.d.ts.map +1 -1
  195. package/lib/src/core/index.js +1 -2
  196. package/lib/src/core/index.js.map +1 -1
  197. package/lib/src/core/reducers/changeTemplate.d.ts +5 -0
  198. package/lib/src/core/reducers/changeTemplate.d.ts.map +1 -0
  199. package/lib/src/core/reducers/changeTemplate.js +14 -0
  200. package/lib/src/core/reducers/changeTemplate.js.map +1 -0
  201. package/lib/src/core/reducers/dragDrop.d.ts.map +1 -1
  202. package/lib/src/core/reducers/dragDrop.js +5 -4
  203. package/lib/src/core/reducers/dragDrop.js.map +1 -1
  204. package/lib/src/core/reducers/error.d.ts +8 -4
  205. package/lib/src/core/reducers/error.d.ts.map +1 -1
  206. package/lib/src/core/reducers/{edit.d.ts → galleryView.d.ts} +1 -1
  207. package/lib/src/core/reducers/galleryView.d.ts.map +1 -0
  208. package/lib/src/core/reducers/galleryView.js +11 -0
  209. package/lib/src/core/reducers/galleryView.js.map +1 -0
  210. package/lib/src/core/reducers/grouping.d.ts.map +1 -1
  211. package/lib/src/core/reducers/grouping.js +7 -0
  212. package/lib/src/core/reducers/grouping.js.map +1 -1
  213. package/lib/src/core/reducers/index.d.ts +8 -4
  214. package/lib/src/core/reducers/index.d.ts.map +1 -1
  215. package/lib/src/core/reducers/index.js +5 -3
  216. package/lib/src/core/reducers/index.js.map +1 -1
  217. package/lib/src/core/reducers/personalizationDirtyReducer.d.ts.map +1 -1
  218. package/lib/src/core/reducers/personalizationDirtyReducer.js +8 -4
  219. package/lib/src/core/reducers/personalizationDirtyReducer.js.map +1 -1
  220. package/lib/src/core/reducers/personalizationReducer.d.ts +3 -2
  221. package/lib/src/core/reducers/personalizationReducer.d.ts.map +1 -1
  222. package/lib/src/core/reducers/personalizationReducer.js +12 -4
  223. package/lib/src/core/reducers/personalizationReducer.js.map +1 -1
  224. package/lib/src/core/reducers/renderFormatter.d.ts.map +1 -1
  225. package/lib/src/core/reducers/renderFormatter.js +13 -3
  226. package/lib/src/core/reducers/renderFormatter.js.map +1 -1
  227. package/lib/src/core/reducers/rowSelect.d.ts.map +1 -1
  228. package/lib/src/core/reducers/rowSelect.js +0 -8
  229. package/lib/src/core/reducers/rowSelect.js.map +1 -1
  230. package/lib/src/core/reducers/versioning/index.d.ts +1 -1
  231. package/lib/src/core/reducers/versioning/index.d.ts.map +1 -1
  232. package/lib/src/core/reducers/versioning/index.js +1 -1
  233. package/lib/src/core/reducers/versioning/index.js.map +1 -1
  234. package/lib/src/core/reducers/visibility.d.ts +2 -1
  235. package/lib/src/core/reducers/visibility.d.ts.map +1 -1
  236. package/lib/src/core/reducers/visibility.js +69 -19
  237. package/lib/src/core/reducers/visibility.js.map +1 -1
  238. package/lib/src/core/test/junitMocks.d.ts +1322 -0
  239. package/lib/src/core/test/junitMocks.d.ts.map +1 -1
  240. package/lib/src/core/test/junitMocks.js +32 -51
  241. package/lib/src/core/test/junitMocks.js.map +1 -1
  242. package/lib/src/core/utils/condition-utils.d.ts +1 -1
  243. package/lib/src/core/utils/condition-utils.d.ts.map +1 -1
  244. package/lib/src/core/utils/condition-utils.js +5 -3
  245. package/lib/src/core/utils/condition-utils.js.map +1 -1
  246. package/lib/src/core/utils/util.d.ts +58 -9
  247. package/lib/src/core/utils/util.d.ts.map +1 -1
  248. package/lib/src/core/utils/util.js +151 -18
  249. package/lib/src/core/utils/util.js.map +1 -1
  250. package/lib/types/ApiContext.types.d.ts +69 -7
  251. package/lib/types/ApiContext.types.d.ts.map +1 -1
  252. package/lib/types/ApiContext.types.js.map +1 -1
  253. package/lib/types/Meta.types.d.ts +153 -11
  254. package/lib/types/Meta.types.d.ts.map +1 -1
  255. package/lib/types/Meta.types.js +7 -1
  256. package/lib/types/Meta.types.js.map +1 -1
  257. package/lib/types/RsCoreBootArgs.types.d.ts +11 -13
  258. package/lib/types/RsCoreBootArgs.types.d.ts.map +1 -1
  259. package/lib/types/RsCoreBootArgs.types.js.map +1 -1
  260. package/lib/types/State.types.d.ts +32 -30
  261. package/lib/types/State.types.d.ts.map +1 -1
  262. package/lib/types/State.types.js.map +1 -1
  263. package/lib/types.d.ts +10 -2
  264. package/lib/types.d.ts.map +1 -1
  265. package/lib/types.js.map +1 -1
  266. package/package.json +6 -8
  267. package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts +0 -12
  268. package/lib/src/core/features/uIFeatures/beforeRender/edit.d.ts.map +0 -1
  269. package/lib/src/core/features/uIFeatures/beforeRender/edit.js +0 -94
  270. package/lib/src/core/features/uIFeatures/beforeRender/edit.js.map +0 -1
  271. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts +0 -12
  272. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.d.ts.map +0 -1
  273. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js +0 -51
  274. package/lib/src/core/features/uIFeatures/beforeRender/toggleSelectAllCheckbox.js.map +0 -1
  275. package/lib/src/core/reducers/edit.d.ts.map +0 -1
  276. package/lib/src/core/reducers/edit.js +0 -65
  277. package/lib/src/core/reducers/edit.js.map +0 -1
@@ -1,6 +1,9 @@
1
- import { actionColumnDragDrop, actionColumnToggle, actionUpdateColumnOrder } from '../../../actions/actions';
1
+ import { actionColumnDragDrop, actionColumnToggle, actionUpdateColumnOrder, addColumnIntoVisibility } from '../../../actions/actions';
2
2
  import { withMemoization } from '../../../utils/util';
3
3
  /* eslint-enable @typescript-eslint/no-unused-vars */
4
+ function isMergeColumnsPayload(payload) {
5
+ return typeof payload === 'object' && payload !== null && 'uniqueID' in payload;
6
+ }
4
7
  const deleteStaleColumns = (getView, customFields) => {
5
8
  // deleted custom column from state should also be removed from meta if any.
6
9
  getView()
@@ -11,8 +14,8 @@ const deleteStaleColumns = (getView, customFields) => {
11
14
  getView().removeColumn(id);
12
15
  });
13
16
  };
14
- const addColumn = (getView, customField) => {
15
- const primaryFieldDef = getView().meta.fieldDefs.find(f => customField.primaryColumnId === `${f.id}`);
17
+ const addColumn = (getView, getRsStore, customField) => {
18
+ const primaryFieldDef = getRsStore().getFieldDefById(customField.primaryColumnId);
16
19
  const column = {
17
20
  isCustomColumn: true,
18
21
  formatterAllowed: false,
@@ -33,10 +36,16 @@ const addColumn = (getView, customField) => {
33
36
  category: [],
34
37
  type: 'custom'
35
38
  };
39
+ /*
40
+ Updating the fieldDef within the meta mutatively.
41
+ This will ensure that the fieldDef is added in all places where the meta is referenced(view.meta, rsStore.meta).
42
+ */
43
+ getView().meta.fieldDefs.push(field);
36
44
  const customColumn = getView().addColumn(field, column);
45
+ getRsStore().fieldDefsMap.set(customField.id, field);
37
46
  return [customColumn, primaryFieldDef];
38
47
  };
39
- const updateCustomColumns = ([{ getView, getState, queuedActions: actions, dispatch }]) => {
48
+ const updateCustomColumns = ([{ getView, getRsStore, getState, queuedActions: actions, dispatch }]) => {
40
49
  const state = getState();
41
50
  const customFields = state?.customFields || [];
42
51
  deleteStaleColumns(getView, customFields);
@@ -44,19 +53,24 @@ const updateCustomColumns = ([{ getView, getState, queuedActions: actions, dispa
44
53
  // if column already exist in meta, skip it otherwise add a new
45
54
  const column = getView().columns?.find(c => c.isCustomColumn && customField.id === c.field.id);
46
55
  if (!column) {
47
- const [customColumn, primaryFieldDef] = addColumn(getView, customField);
56
+ const [customColumn, primaryFieldDef] = addColumn(getView, getRsStore, customField);
48
57
  if (!state?.colOrder?.includes(customColumn.field.id)) {
49
58
  dispatch(actionUpdateColumnOrder([customColumn.field.id]));
50
59
  dispatch(actionColumnDragDrop(customColumn.field.id, primaryFieldDef.id));
51
60
  }
52
61
  }
53
62
  });
54
- if ('payload' in actions[0] && actions[0].payload.hideColumns) {
55
- dispatch(actionColumnToggle(actions[0].payload.hideColumns));
63
+ // Add newly created customColumn into visibleColumns
64
+ const action = actions[0];
65
+ if ('payload' in action && isMergeColumnsPayload(action.payload)) {
66
+ dispatch(addColumnIntoVisibility(action.payload.uniqueID));
67
+ }
68
+ if ('payload' in action && isMergeColumnsPayload(action.payload) && action.payload.hideColumns) {
69
+ dispatch(actionColumnToggle(action.payload.hideColumns));
56
70
  }
57
71
  };
58
72
  /**
59
- * Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.hiddenColumns} with {@link State.customFields customFields} information when following properties are changed:
73
+ * Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.visibleColumns} with {@link State.customFields customFields} information when following properties are changed:
60
74
  * - {@link State.customFields}
61
75
  * - `active` in {@link State.personalization}
62
76
  */
@@ -1 +1 @@
1
- {"version":3,"file":"customColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldDef } from '../../../../../types/Meta.types';\nimport {\n actionColumnDragDrop,\n actionColumnToggle,\n actionUpdateColumnOrder\n} from '../../../actions/actions';\nimport type { MergeColumnsPayload } from '../../../actions/actions.types';\nimport type Column from '../../../generators/ColumnGenerator';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { CustomField, State } from '../../../../../types/State.types';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nconst deleteStaleColumns = (\n getView: BeforeRenderFeatureProps['getView'],\n customFields: CustomField[]\n): void => {\n // deleted custom column from state should also be removed from meta if any.\n getView()\n .columns?.filter(c => c.isCustomColumn)\n .forEach(({ field: { id } }) => {\n const isStaleColumn = customFields.every(customField => customField.id !== id);\n if (isStaleColumn) getView().removeColumn(id);\n });\n};\n\nconst addColumn = (\n getView: BeforeRenderFeatureProps['getView'],\n customField: CustomField\n): [Column, FieldDef] => {\n const primaryFieldDef = getView().meta.fieldDefs.find(\n f => customField.primaryColumnId === `${f.id}`\n );\n const column = {\n isCustomColumn: true,\n formatterAllowed: false,\n label: customField.label,\n cellRenderer: getView().meta.customFieldRenderer || 'customCellRenderer',\n headerCellRenderer: getView().meta.customHeaderRenderer || 'headerCellRenderer'\n };\n const { idHash, width, ...restOfFieldDef } =\n primaryFieldDef!; /* BUG-680257: Do not copy idHash from primaryFieldDef. It is generated in view.addColumn */\n const field: FieldDef = {\n ...restOfFieldDef,\n grouping: false,\n filter: false,\n resize: true,\n sort: false,\n aggregation: false,\n id: customField.id,\n label: customField.label,\n category: [],\n type: 'custom'\n };\n\n const customColumn = getView().addColumn(field, column);\n return [customColumn, primaryFieldDef!];\n};\n\nconst updateCustomColumns = ([{ getView, getState, queuedActions: actions, dispatch }]: [\n featureProps: BeforeRenderFeatureProps\n]): void => {\n const state = getState();\n const customFields = state?.customFields || [];\n deleteStaleColumns(getView, customFields);\n\n customFields.forEach(customField => {\n // if column already exist in meta, skip it otherwise add a new\n const column = getView().columns?.find(c => c.isCustomColumn && customField.id === c.field.id);\n if (!column) {\n const [customColumn, primaryFieldDef] = addColumn(getView, customField);\n if (!state?.colOrder?.includes(customColumn.field.id)) {\n dispatch(actionUpdateColumnOrder([customColumn.field.id]));\n dispatch(actionColumnDragDrop(customColumn.field.id, primaryFieldDef.id));\n }\n }\n });\n if ('payload' in actions[0] && (actions[0].payload as MergeColumnsPayload).hideColumns) {\n dispatch(actionColumnToggle((actions[0].payload as MergeColumnsPayload).hideColumns!));\n }\n};\n\n/**\n * Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.hiddenColumns} with {@link State.customFields customFields} information when following properties are changed:\n * - {@link State.customFields}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedUpdateCustomColumns = withMemoization(updateCustomColumns);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedUpdateCustomColumns(\n [featureProps],\n [state.customFields, state?.personalization?.active]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"customColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/customColumn.ts"],"names":[],"mappings":"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","sourcesContent":["import type { FieldDef } from '../../../../../types/Meta.types';\nimport {\n actionColumnDragDrop,\n actionColumnToggle,\n actionUpdateColumnOrder,\n addColumnIntoVisibility\n} from '../../../actions/actions';\nimport type { MergeColumnsPayload } from '../../../actions/actions.types';\nimport type Column from '../../../generators/ColumnGenerator';\nimport { withMemoization } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { CustomField, State } from '../../../../../types/State.types';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nfunction isMergeColumnsPayload(payload: unknown): payload is MergeColumnsPayload {\n return typeof payload === 'object' && payload !== null && 'uniqueID' in payload;\n}\n\nconst deleteStaleColumns = (\n getView: BeforeRenderFeatureProps['getView'],\n customFields: CustomField[]\n): void => {\n // deleted custom column from state should also be removed from meta if any.\n getView()\n .columns?.filter(c => c.isCustomColumn)\n .forEach(({ field: { id } }) => {\n const isStaleColumn = customFields.every(customField => customField.id !== id);\n if (isStaleColumn) getView().removeColumn(id);\n });\n};\n\nconst addColumn = (\n getView: BeforeRenderFeatureProps['getView'],\n getRsStore: BeforeRenderFeatureProps['getRsStore'],\n customField: CustomField\n): [Column, FieldDef] => {\n const primaryFieldDef = getRsStore().getFieldDefById(customField.primaryColumnId);\n const column = {\n isCustomColumn: true,\n formatterAllowed: false,\n label: customField.label,\n cellRenderer: getView().meta.customFieldRenderer || 'customCellRenderer',\n headerCellRenderer: getView().meta.customHeaderRenderer || 'headerCellRenderer'\n };\n const { idHash, width, ...restOfFieldDef } =\n primaryFieldDef!; /* BUG-680257: Do not copy idHash from primaryFieldDef. It is generated in view.addColumn */\n const field: FieldDef = {\n ...restOfFieldDef,\n grouping: false,\n filter: false,\n resize: true,\n sort: false,\n aggregation: false,\n id: customField.id,\n label: customField.label,\n category: [],\n type: 'custom'\n };\n\n /*\n Updating the fieldDef within the meta mutatively.\n This will ensure that the fieldDef is added in all places where the meta is referenced(view.meta, rsStore.meta).\n */\n getView().meta.fieldDefs.push(field);\n const customColumn = getView().addColumn(field, column);\n\n getRsStore().fieldDefsMap.set(customField.id, field);\n return [customColumn, primaryFieldDef!];\n};\n\nconst updateCustomColumns = ([\n { getView, getRsStore, getState, queuedActions: actions, dispatch }\n]: [featureProps: BeforeRenderFeatureProps]): void => {\n const state = getState();\n const customFields = state?.customFields || [];\n deleteStaleColumns(getView, customFields);\n\n customFields.forEach(customField => {\n // if column already exist in meta, skip it otherwise add a new\n const column = getView().columns?.find(c => c.isCustomColumn && customField.id === c.field.id);\n if (!column) {\n const [customColumn, primaryFieldDef] = addColumn(getView, getRsStore, customField);\n if (!state?.colOrder?.includes(customColumn.field.id)) {\n dispatch(actionUpdateColumnOrder([customColumn.field.id]));\n dispatch(actionColumnDragDrop(customColumn.field.id, primaryFieldDef.id));\n }\n }\n });\n\n // Add newly created customColumn into visibleColumns\n const action = actions[0];\n if ('payload' in action && isMergeColumnsPayload(action.payload)) {\n dispatch(addColumnIntoVisibility(action.payload.uniqueID));\n }\n\n if ('payload' in action && isMergeColumnsPayload(action.payload) && action.payload.hideColumns) {\n dispatch(actionColumnToggle(action.payload.hideColumns));\n }\n};\n\n/**\n * Adds the custom column in current set of{@link View.columns columns} and updates the {@link State.colOrder}, {@link State.visibleColumns} with {@link State.customFields customFields} information when following properties are changed:\n * - {@link State.customFields}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedUpdateCustomColumns = withMemoization(updateCustomColumns);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedUpdateCustomColumns(\n [featureProps],\n [state.customFields, state?.personalization?.active]\n );\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errorColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAmBrE;;;;GAIG;+BAGuB,cAAc,wBAAwB;AAFhE,wBAOE"}
1
+ {"version":3,"file":"errorColumn.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAsBrE;;;;GAIG;+BAGuB,cAAc,wBAAwB;AAFhE,wBAOE"}
@@ -1,13 +1,16 @@
1
1
  import { withMemoization } from '../../../utils/util';
2
2
  import { rowErrorColumnMeta } from '../../../constants';
3
3
  function toggleErrorColumnVisibility([{ getView, getState }]) {
4
- const { hiddenColumns, errors } = getState();
5
- const errorCol = getView().columns?.find(c => c.field.name === rowErrorColumnMeta.field.name);
4
+ const { visibleColumns, errors } = getState();
6
5
  const hasDataErrors = errors?.dataErrors && !!Object.keys(errors.dataErrors).length;
7
- const isErrorColumnHidden = hiddenColumns?.includes(rowErrorColumnMeta.field.id);
8
- // hiddenColumns can be undefined if not hydrated, so do exact check of false.
9
- if ((isErrorColumnHidden && hasDataErrors) || (isErrorColumnHidden === false && !hasDataErrors)) {
10
- errorCol?.applyToggleVisibility();
6
+ const isErrorColumnVisible = visibleColumns?.includes(rowErrorColumnMeta.field.id);
7
+ if (!isErrorColumnVisible && hasDataErrors) {
8
+ // Show error column: errors exist but column is not visible.
9
+ getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: true });
10
+ }
11
+ else if (isErrorColumnVisible && !hasDataErrors) {
12
+ // Hide error column: no errors but column is still visible.
13
+ getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: false });
11
14
  }
12
15
  }
13
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errorColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxD,SAAS,2BAA2B,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAE1D;IACC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9F,MAAM,aAAa,GAAG,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,mBAAmB,GAAG,aAAa,EAAE,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjF,8EAA8E;IAC9E,IAAI,CAAC,mBAAmB,IAAI,aAAa,CAAC,IAAI,CAAC,mBAAmB,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAChG,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,mCAAmC,GAAG,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACzF,OAAO,SAAS,OAAO,CAAC,YAAsC;QAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QAC9C,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;QACzE,mCAAmC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization } from '../../../utils/util';\nimport { rowErrorColumnMeta } from '../../../constants';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { State } from '../../../../../types/State.types';\nimport type { Meta } from '../../../../../types/Meta.types';\n\nfunction toggleErrorColumnVisibility([{ getView, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const { hiddenColumns, errors } = getState();\n const errorCol = getView().columns?.find(c => c.field.name === rowErrorColumnMeta.field.name);\n const hasDataErrors = errors?.dataErrors && !!Object.keys(errors.dataErrors).length;\n const isErrorColumnHidden = hiddenColumns?.includes(rowErrorColumnMeta.field.id);\n // hiddenColumns can be undefined if not hydrated, so do exact check of false.\n if ((isErrorColumnHidden && hasDataErrors) || (isErrorColumnHidden === false && !hasDataErrors)) {\n errorCol?.applyToggleVisibility();\n }\n}\n\n/**\n *\n * Adds `error column` in the view {@link View.columns columns} when {@link Meta.showErrorField showErrorField} is set in `Meta`.\n * It also toggles error column visibility when {@link State.errors} is changed.\n */\nexport default () => {\n const memoizedToggleErrorColumnVisibility = withMemoization(toggleErrorColumnVisibility);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const errors = featureProps.getState().errors;\n const haDataErrors = !!(errors && Object.keys(errors.dataErrors).length);\n memoizedToggleErrorColumnVisibility([featureProps], [haDataErrors]);\n };\n};\n"]}
1
+ {"version":3,"file":"errorColumn.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/errorColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOxD,SAAS,2BAA2B,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAE1D;IACC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,EAAE,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,oBAAoB,GAAG,cAAc,EAAE,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEnF,IAAI,CAAC,oBAAoB,IAAI,aAAa,EAAE,CAAC;QAC3C,6DAA6D;QAC7D,OAAO,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC;QAClD,4DAA4D;QAC5D,OAAO,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,mCAAmC,GAAG,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACzF,OAAO,SAAS,OAAO,CAAC,YAAsC;QAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QAC9C,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;QACzE,mCAAmC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization } from '../../../utils/util';\nimport { rowErrorColumnMeta } from '../../../constants';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { State } from '../../../../../types/State.types';\nimport type { Meta } from '../../../../../types/Meta.types';\n\nfunction toggleErrorColumnVisibility([{ getView, getState }]: [\n featureProps: BeforeRenderFeatureProps\n]) {\n const { visibleColumns, errors } = getState();\n const hasDataErrors = errors?.dataErrors && !!Object.keys(errors.dataErrors).length;\n const isErrorColumnVisible = visibleColumns?.includes(rowErrorColumnMeta.field.id);\n\n if (!isErrorColumnVisible && hasDataErrors) {\n // Show error column: errors exist but column is not visible.\n getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: true });\n } else if (isErrorColumnVisible && !hasDataErrors) {\n // Hide error column: no errors but column is still visible.\n getView().type.updateColumnsVisibility({ [rowErrorColumnMeta.field.id]: false });\n }\n}\n\n/**\n *\n * Adds `error column` in the view {@link View.columns columns} when {@link Meta.showErrorField showErrorField} is set in `Meta`.\n * It also toggles error column visibility when {@link State.errors} is changed.\n */\nexport default () => {\n const memoizedToggleErrorColumnVisibility = withMemoization(toggleErrorColumnVisibility);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const errors = featureProps.getState().errors;\n const haDataErrors = !!(errors && Object.keys(errors.dataErrors).length);\n memoizedToggleErrorColumnVisibility([featureProps], [haDataErrors]);\n };\n};\n"]}
@@ -2,6 +2,7 @@ import type { BeforeRenderFeatureProps } from '../../featureFactory';
2
2
  /**
3
3
  * Sets {@link View.isFilterApplied isFilterApplied} property in the view and {@link Column.filtered filtered}, {@link Column.refresh refresh} properties in the column when any of the following state properties are changed:
4
4
  * - {@link State.filterExpression}
5
+ * - {@link state.visibleColumns}
5
6
  * - `query` in {@link State.search}
6
7
  * - `active` in {@link State.personalization}
7
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAkCrE;;;;;GAKG;+BAIuB,cAAc,wBAAwB;AAHhE,wBAUE"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAuCrE;;;;;;GAMG;+BAIuB,cAAc,wBAAwB;AAHhE,wBAeE"}
@@ -5,13 +5,17 @@ const onFilter = ([{ getView, getState }]) => {
5
5
  const filteredFields = filterExpression ? getFilters({ filterExpression }) : [];
6
6
  const isFilterApplied = !!((filteredFields && filteredFields.length) ||
7
7
  (search?.query && search.query.trim().length));
8
+ // Compare new search query with previous searchText to detect search change
9
+ const prevSearchText = getView().state.searchText;
10
+ const newSearchQuery = search?.query ?? '';
11
+ const isSearchChanged = newSearchQuery !== prevSearchText;
8
12
  getView().columns?.forEach(column => {
9
13
  const filtered = !!(filterExpression && getFilters({ filterExpression }).includes(column.field.name));
10
14
  column = column.setProp({
11
15
  filtered
12
16
  });
13
- // For search to reflect in cells using highlighter, new columns should be generated for all the search based fields(i.e. 'text' type columns)
14
- if (search?.fields?.includes(column.field.name)) {
17
+ // For search to reflect in cells using highlighter, refresh searchable columns when search query changes
18
+ if (isSearchChanged && column.field.searchable) {
15
19
  column = column.setProp({
16
20
  refresh: Date.now()
17
21
  });
@@ -23,6 +27,7 @@ const onFilter = ([{ getView, getState }]) => {
23
27
  /**
24
28
  * Sets {@link View.isFilterApplied isFilterApplied} property in the view and {@link Column.filtered filtered}, {@link Column.refresh refresh} properties in the column when any of the following state properties are changed:
25
29
  * - {@link State.filterExpression}
30
+ * - {@link state.visibleColumns}
26
31
  * - `query` in {@link State.search}
27
32
  * - `active` in {@link State.personalization}
28
33
  */
@@ -30,7 +35,12 @@ export default () => {
30
35
  const memoizedOnFilter = withMemoization(onFilter);
31
36
  return function execute(featureProps) {
32
37
  const state = featureProps.getState();
33
- memoizedOnFilter([featureProps], [state.filterExpression, state.search?.query, state?.personalization?.active]);
38
+ memoizedOnFilter([featureProps], [
39
+ state.filterExpression,
40
+ state.search?.query,
41
+ state?.personalization?.active,
42
+ state.visibleColumns
43
+ ]);
34
44
  };
35
45
  };
36
46
  //# sourceMappingURL=filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMlE,qDAAqD;AAErD,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAA2C,EAAE,EAAE;IACrF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,eAAe,GAAG,CAAC,CAAC,CACxB,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC;QACzC,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAC9C,CAAC;IAEF,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,CACjB,gBAAgB,IAAI,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACjF,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YACtB,QAAQ;SACT,CAAC,CAAC;QACH,8IAA8I;QAC9I,IAAI,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAEnD,OAAO,SAAS,OAAO,CAAC,YAAsC;QAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,gBAAgB,CACd,CAAC,YAAY,CAAC,EACd,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,CAC9E,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization, getFilters } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { State } from '../../../../../types/State.types';\nimport type Column from '../../../generators/ColumnGenerator';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nconst onFilter = ([{ getView, getState }]: [featureProps: BeforeRenderFeatureProps]) => {\n const { filterExpression, search } = getState();\n const filteredFields = filterExpression ? getFilters({ filterExpression }) : [];\n const isFilterApplied = !!(\n (filteredFields && filteredFields.length) ||\n (search?.query && search.query.trim().length)\n );\n\n getView().columns?.forEach(column => {\n const filtered = !!(\n filterExpression && getFilters({ filterExpression }).includes(column.field.name)\n );\n column = column.setProp({\n filtered\n });\n // For search to reflect in cells using highlighter, new columns should be generated for all the search based fields(i.e. 'text' type columns)\n if (search?.fields?.includes(column.field.name)) {\n column = column.setProp({\n refresh: Date.now()\n });\n }\n });\n\n // global level filter applied\n getView().setProp('isFilterApplied', isFilterApplied);\n};\n\n/**\n * Sets {@link View.isFilterApplied isFilterApplied} property in the view and {@link Column.filtered filtered}, {@link Column.refresh refresh} properties in the column when any of the following state properties are changed:\n * - {@link State.filterExpression}\n * - `query` in {@link State.search}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedOnFilter = withMemoization(onFilter);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedOnFilter(\n [featureProps],\n [state.filterExpression, state.search?.query, state?.personalization?.active]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMlE,qDAAqD;AAErD,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAA2C,EAAE,EAAE;IACrF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,eAAe,GAAG,CAAC,CAAC,CACxB,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,CAAC;QACzC,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAC9C,CAAC;IAEF,4EAA4E;IAC5E,MAAM,cAAc,GAAG,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;IAClD,MAAM,cAAc,GAAG,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,cAAc,KAAK,cAAc,CAAC;IAE1D,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,CACjB,gBAAgB,IAAI,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CACjF,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;YACtB,QAAQ;SACT,CAAC,CAAC;QACH,yGAAyG;QACzG,IAAI,eAAe,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YAC/C,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,OAAO,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,eAAe,GAAG,EAAE;IAClB,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAEnD,OAAO,SAAS,OAAO,CAAC,YAAsC;QAC5D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,gBAAgB,CACd,CAAC,YAAY,CAAC,EACd;YACE,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,MAAM,EAAE,KAAK;YACnB,KAAK,EAAE,eAAe,EAAE,MAAM;YAC9B,KAAK,CAAC,cAAc;SACrB,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { withMemoization, getFilters } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type View from '../../../generators/ViewGenerator';\nimport type { State } from '../../../../../types/State.types';\nimport type Column from '../../../generators/ColumnGenerator';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\nconst onFilter = ([{ getView, getState }]: [featureProps: BeforeRenderFeatureProps]) => {\n const { filterExpression, search } = getState();\n const filteredFields = filterExpression ? getFilters({ filterExpression }) : [];\n const isFilterApplied = !!(\n (filteredFields && filteredFields.length) ||\n (search?.query && search.query.trim().length)\n );\n\n // Compare new search query with previous searchText to detect search change\n const prevSearchText = getView().state.searchText;\n const newSearchQuery = search?.query ?? '';\n const isSearchChanged = newSearchQuery !== prevSearchText;\n\n getView().columns?.forEach(column => {\n const filtered = !!(\n filterExpression && getFilters({ filterExpression }).includes(column.field.name)\n );\n column = column.setProp({\n filtered\n });\n // For search to reflect in cells using highlighter, refresh searchable columns when search query changes\n if (isSearchChanged && column.field.searchable) {\n column = column.setProp({\n refresh: Date.now()\n });\n }\n });\n\n // global level filter applied\n getView().setProp('isFilterApplied', isFilterApplied);\n};\n\n/**\n * Sets {@link View.isFilterApplied isFilterApplied} property in the view and {@link Column.filtered filtered}, {@link Column.refresh refresh} properties in the column when any of the following state properties are changed:\n * - {@link State.filterExpression}\n * - {@link state.visibleColumns}\n * - `query` in {@link State.search}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedOnFilter = withMemoization(onFilter);\n\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedOnFilter(\n [featureProps],\n [\n state.filterExpression,\n state.search?.query,\n state?.personalization?.active,\n state.visibleColumns\n ]\n );\n };\n};\n"]}
@@ -1,11 +1,11 @@
1
1
  import type { State } from '../../../../../types/State.types';
2
2
  import type View from '../../../generators/ViewGenerator';
3
3
  import type { BeforeRenderFeatureProps } from '../../featureFactory';
4
- export declare const calculateFieldLeft: (colId: string, columns: View["columns"], freezeColumns?: State["freezeColumns"], hiddenColumns?: State["hiddenColumns"], columnWidths?: State["columnWidths"]) => number;
4
+ export declare const calculateFieldLeft: (colId: string, columns: View["columns"], freezeColumns?: State["freezeColumns"], visibleColumns?: State["visibleColumns"], columnWidths?: State["columnWidths"]) => number;
5
5
  /**
6
6
  * Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:
7
7
  * - {@link State.freezeColumns}
8
- * - {@link State.hiddenColumns}
8
+ * - {@link State.visibleColumns}
9
9
  * - {@link State.columnWidths}
10
10
  * - `active` in {@link State.personalization}
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,mCAAmC,CAAC;AAE1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIrE,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,SAAS,IAAI,CAAC,SAAS,CAAC,EACxB,gBAAe,KAAK,CAAC,eAAe,CAAM,EAC1C,gBAAe,KAAK,CAAC,eAAe,CAAM,EAC1C,eAAc,KAAK,CAAC,cAAc,CAAM,WAiBzC,CAAC;AA8CF;;;;;;GAMG;+BAGuB,cAAc,wBAAwB;AAFhE,wBASE"}
1
+ {"version":3,"file":"freeze.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,mCAAmC,CAAC;AAE1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAIrE,eAAO,MAAM,kBAAkB,GAC7B,OAAO,MAAM,EACb,SAAS,IAAI,CAAC,SAAS,CAAC,EACxB,gBAAe,KAAK,CAAC,eAAe,CAAM,EAC1C,iBAAgB,KAAK,CAAC,gBAAgB,CAAM,EAC5C,eAAc,KAAK,CAAC,cAAc,CAAM,WAiBzC,CAAC;AA8CF;;;;;;GAMG;+BAGuB,cAAc,wBAAwB;AAFhE,wBAcE"}
@@ -1,5 +1,5 @@
1
1
  import { withMemoization, isFreezingEnabled } from '../../../utils/util';
2
- export const calculateFieldLeft = (colId, columns, freezeColumns = [], hiddenColumns = [], columnWidths = {}) => {
2
+ export const calculateFieldLeft = (colId, columns, freezeColumns = [], visibleColumns = [], columnWidths = {}) => {
3
3
  let left = 0;
4
4
  // iterate through the frozen columns and add its width to left if it appears before current column
5
5
  for (let j = 0; j < freezeColumns.length; j += 1) {
@@ -8,7 +8,7 @@ export const calculateFieldLeft = (colId, columns, freezeColumns = [], hiddenCol
8
8
  break;
9
9
  }
10
10
  // If the column is frozen but if it is hidden then don't consider
11
- if (!hiddenColumns.includes(id)) {
11
+ if (visibleColumns.includes(id)) {
12
12
  const previousCol = columns?.find(c => `${c.field.id}` === id);
13
13
  const width = columnWidths[previousCol.field.id] || previousCol.field.width;
14
14
  left += width;
@@ -16,11 +16,11 @@ export const calculateFieldLeft = (colId, columns, freezeColumns = [], hiddenCol
16
16
  }
17
17
  return left;
18
18
  };
19
- const getLastFrozenField = (freezeColumns = [], hiddenColumns = []) => {
19
+ const getLastFrozenField = (freezeColumns = [], visibleColumns = []) => {
20
20
  let lastFrozenColumnId = '';
21
21
  for (let i = freezeColumns.length - 1; i > -1; i -= 1) {
22
22
  const id = freezeColumns[i];
23
- if (!hiddenColumns.includes(id)) {
23
+ if (visibleColumns.includes(id)) {
24
24
  lastFrozenColumnId = id;
25
25
  break;
26
26
  }
@@ -32,8 +32,8 @@ const setPositions = ([{ getView, getState }]) => {
32
32
  if (!isFreezingEnabled(getView().meta)) {
33
33
  return;
34
34
  }
35
- const { freezeColumns = [], hiddenColumns = [], columnWidths } = getState();
36
- const lastFrozenColumnId = getLastFrozenField(freezeColumns, hiddenColumns);
35
+ const { freezeColumns = [], visibleColumns = [], columnWidths } = getState();
36
+ const lastFrozenColumnId = getLastFrozenField(freezeColumns, visibleColumns);
37
37
  getView().columns?.forEach(column => {
38
38
  const { id } = column.field;
39
39
  const style = { ...column.style };
@@ -42,7 +42,7 @@ const setPositions = ([{ getView, getState }]) => {
42
42
  let lastFrozen = false;
43
43
  if (freezeColumns.includes(`${id}`)) {
44
44
  frozen = true;
45
- left = calculateFieldLeft(id, getView().columns, freezeColumns, hiddenColumns, columnWidths);
45
+ left = calculateFieldLeft(id, getView().columns, freezeColumns, visibleColumns, columnWidths);
46
46
  if (`${id}` === lastFrozenColumnId) {
47
47
  lastFrozen = true;
48
48
  }
@@ -58,7 +58,7 @@ const setPositions = ([{ getView, getState }]) => {
58
58
  /**
59
59
  * Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:
60
60
  * - {@link State.freezeColumns}
61
- * - {@link State.hiddenColumns}
61
+ * - {@link State.visibleColumns}
62
62
  * - {@link State.columnWidths}
63
63
  * - `active` in {@link State.personalization}
64
64
  */
@@ -66,7 +66,12 @@ export default () => {
66
66
  const memoizedSetPositions = withMemoization(setPositions);
67
67
  return function execute(featureProps) {
68
68
  const state = featureProps.getState();
69
- memoizedSetPositions([featureProps], [state.freezeColumns, state.hiddenColumns, state.columnWidths, state?.personalization?.active]);
69
+ memoizedSetPositions([featureProps], [
70
+ state.freezeColumns,
71
+ state.visibleColumns,
72
+ state.columnWidths,
73
+ state?.personalization?.active
74
+ ]);
70
75
  };
71
76
  };
72
77
  //# sourceMappingURL=freeze.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from '../../../../../types/State.types';\nimport type View from '../../../generators/ViewGenerator';\nimport { withMemoization, isFreezingEnabled } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Column from '../../../generators/ColumnGenerator';\n\nexport const calculateFieldLeft = (\n colId: string,\n columns: View['columns'],\n freezeColumns: State['freezeColumns'] = [],\n hiddenColumns: State['hiddenColumns'] = [],\n columnWidths: State['columnWidths'] = {}\n) => {\n let left = 0;\n // iterate through the frozen columns and add its width to left if it appears before current column\n for (let j = 0; j < freezeColumns.length; j += 1) {\n const id = freezeColumns[j];\n if (id === `${colId}`) {\n break;\n }\n // If the column is frozen but if it is hidden then don't consider\n if (!hiddenColumns.includes(id)) {\n const previousCol = columns?.find(c => `${c.field.id}` === id);\n const width = columnWidths[previousCol!.field.id] || previousCol!.field.width;\n left += width!;\n }\n }\n return left;\n};\n\nconst getLastFrozenField = (\n freezeColumns: State['freezeColumns'] = [],\n hiddenColumns: State['hiddenColumns'] = []\n) => {\n let lastFrozenColumnId = '';\n for (let i = freezeColumns.length - 1; i > -1; i -= 1) {\n const id = freezeColumns[i];\n if (!hiddenColumns.includes(id)) {\n lastFrozenColumnId = id;\n break;\n }\n }\n return lastFrozenColumnId;\n};\n\nconst setPositions = ([{ getView, getState }]: [featureProps: BeforeRenderFeatureProps]): void => {\n // TODO: Remove this early exit optimization once we start preparing the column objects only for visible fields.\n if (!isFreezingEnabled(getView().meta)) {\n return;\n }\n const { freezeColumns = [], hiddenColumns = [], columnWidths } = getState();\n const lastFrozenColumnId = getLastFrozenField(freezeColumns, hiddenColumns);\n getView().columns?.forEach(column => {\n const { id } = column.field;\n const style = { ...column.style };\n let left = 0;\n let frozen = false;\n let lastFrozen = false;\n if (freezeColumns.includes(`${id}`)) {\n frozen = true;\n left = calculateFieldLeft(id, getView().columns, freezeColumns, hiddenColumns, columnWidths);\n if (`${id}` === lastFrozenColumnId) {\n lastFrozen = true;\n }\n }\n style.left = `${left}px`;\n column = column.setProp({\n style,\n frozen,\n lastFrozen\n });\n });\n};\n\n/**\n * Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:\n * - {@link State.freezeColumns}\n * - {@link State.hiddenColumns}\n * - {@link State.columnWidths}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedSetPositions = withMemoization(setPositions);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedSetPositions(\n [featureProps],\n [state.freezeColumns, state.hiddenColumns, state.columnWidths, state?.personalization?.active]\n );\n };\n};\n"]}
1
+ {"version":3,"file":"freeze.js","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/freeze.ts"],"names":[],"mappings":"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","sourcesContent":["import type { State } from '../../../../../types/State.types';\nimport type View from '../../../generators/ViewGenerator';\nimport { withMemoization, isFreezingEnabled } from '../../../utils/util';\nimport type { BeforeRenderFeatureProps } from '../../featureFactory';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type Column from '../../../generators/ColumnGenerator';\n\nexport const calculateFieldLeft = (\n colId: string,\n columns: View['columns'],\n freezeColumns: State['freezeColumns'] = [],\n visibleColumns: State['visibleColumns'] = [],\n columnWidths: State['columnWidths'] = {}\n) => {\n let left = 0;\n // iterate through the frozen columns and add its width to left if it appears before current column\n for (let j = 0; j < freezeColumns.length; j += 1) {\n const id = freezeColumns[j];\n if (id === `${colId}`) {\n break;\n }\n // If the column is frozen but if it is hidden then don't consider\n if (visibleColumns.includes(id)) {\n const previousCol = columns?.find(c => `${c.field.id}` === id);\n const width = columnWidths[previousCol!.field.id] || previousCol!.field.width;\n left += width!;\n }\n }\n return left;\n};\n\nconst getLastFrozenField = (\n freezeColumns: State['freezeColumns'] = [],\n visibleColumns: State['visibleColumns'] = []\n) => {\n let lastFrozenColumnId = '';\n for (let i = freezeColumns.length - 1; i > -1; i -= 1) {\n const id = freezeColumns[i];\n if (visibleColumns.includes(id)) {\n lastFrozenColumnId = id;\n break;\n }\n }\n return lastFrozenColumnId;\n};\n\nconst setPositions = ([{ getView, getState }]: [featureProps: BeforeRenderFeatureProps]): void => {\n // TODO: Remove this early exit optimization once we start preparing the column objects only for visible fields.\n if (!isFreezingEnabled(getView().meta)) {\n return;\n }\n const { freezeColumns = [], visibleColumns = [], columnWidths } = getState();\n const lastFrozenColumnId = getLastFrozenField(freezeColumns, visibleColumns);\n getView().columns?.forEach(column => {\n const { id } = column.field;\n const style = { ...column.style };\n let left = 0;\n let frozen = false;\n let lastFrozen = false;\n if (freezeColumns.includes(`${id}`)) {\n frozen = true;\n left = calculateFieldLeft(id, getView().columns, freezeColumns, visibleColumns, columnWidths);\n if (`${id}` === lastFrozenColumnId) {\n lastFrozen = true;\n }\n }\n style.left = `${left}px`;\n column = column.setProp({\n style,\n frozen,\n lastFrozen\n });\n });\n};\n\n/**\n * Calculates `left` position, {@link Column.frozen frozen}, {@link Column.lastFrozen lastFrozen} properties of each column and `left` position of {@link View.freezeLine} when any of the following properties are changed:\n * - {@link State.freezeColumns}\n * - {@link State.visibleColumns}\n * - {@link State.columnWidths}\n * - `active` in {@link State.personalization}\n */\nexport default () => {\n const memoizedSetPositions = withMemoization(setPositions);\n return function execute(featureProps: BeforeRenderFeatureProps) {\n const state = featureProps.getState();\n memoizedSetPositions(\n [featureProps],\n [\n state.freezeColumns,\n state.visibleColumns,\n state.columnWidths,\n state?.personalization?.active\n ]\n );\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAa1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;AA+hBJ;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAYC,wBAAwB;AAZ/D,wBAoEE"}
1
+ {"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../../../../../../src/core/features/uIFeatures/beforeRender/grouping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAa1D,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAOrE,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EAGxB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAChD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,GAC5D,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,CAAC;AAEJ,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,uBAAuB,EAAE,UAAU,CAAC,GACpF,kBAAkB,GAAG;IACnB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CAChD,CAAC;AA8hBJ;;;;;;;;GAQG;yBACa,YAAY,UAAU,qBAYC,wBAAwB;AAZ/D,wBAqEE"}
@@ -3,7 +3,7 @@ import { actionGroupingExpandCollapseAll } from '../../../actions/actions';
3
3
  import { AFTER_FETCH } from '../../../pubSub/events';
4
4
  import GroupGenerator from '../../../generators/GroupGenerator';
5
5
  function isNodeExpanded(groupToggle, node, defaultState) {
6
- /** Groups with 0 count should not be expandable. */
6
+ /** Groups with count 0 should not be expandable. */
7
7
  if (node.count === 0) {
8
8
  return false;
9
9
  }
@@ -15,13 +15,12 @@ const getLabel = (view, groupBy, getState) => {
15
15
  const { columnId, dateFunction } = getGroupFromKey(groupBy, getState().groups);
16
16
  let { label } = view.columns.find(column => column.field.id.toString() === columnId.toString());
17
17
  if (dateFunction) {
18
- // @ts-expect-error dateFunction cannot be used to index dateFunctionLabels. Check this.
19
18
  label += ` (${dateFunctionLabels[dateFunction]})`;
20
19
  }
21
20
  return label;
22
21
  };
23
- // This function checks if hierarchy exist or not.
24
- // which will decide whether start and end Index would be there on leaf node or on hierarchical node.
22
+ // This function checks if hierarchy exists or not.
23
+ // which will decide whether start and end Index would be there on the leaf node or on the hierarchical node.
25
24
  const doesExistInViewInfo = (viewInfo, hierarchy = [], isHierarchical = false) => {
26
25
  return viewInfo.some(v => {
27
26
  const filters = Object.values(v.filters);
@@ -40,13 +39,13 @@ const doesExistInViewInfo = (viewInfo, hierarchy = [], isHierarchical = false) =
40
39
  };
41
40
  const prepareGroupHeaders = (props) => {
42
41
  const [groupingInfo = [], viewInfo = [], rsInternal, groupToggle = {}, allGroupsExpanded] = props;
43
- // If group and viewInfo are empty, prerape group header for top level leaf node.
42
+ // If group and viewInfo are empty, prepare group header for top level leaf node.
44
43
  // This is for easing on UI , one contract whether grouping is in place/not.
45
44
  // TODO: support for enabling feature on view.
46
45
  const view = rsInternal.getView();
47
46
  const { getState } = rsInternal.getRsStateResolver();
48
47
  if (groupingInfo.length === 0) {
49
- // construct view header object.
48
+ // construct a view header object.
50
49
  const viewHeader = new GroupGenerator({
51
50
  isVisible: false,
52
51
  isLeafNode: true,
@@ -75,7 +74,7 @@ const prepareGroupHeaders = (props) => {
75
74
  const isExpanded = isNodeExpanded(groupToggle, child, allGroupsExpanded);
76
75
  const isSubGroupPresent = child.children && child.children.length;
77
76
  const label = child.isHierarchical ? '' : getLabel(view, child.groupBy, getState);
78
- // construct view header object.
77
+ // construct a view header object.
79
78
  const viewHeader = new GroupGenerator({
80
79
  isVisible: !!child.visibleRow,
81
80
  isLeafNode: !isSubGroupPresent,
@@ -93,7 +92,7 @@ const prepareGroupHeaders = (props) => {
93
92
  data: 'data' in child ? child.data : undefined,
94
93
  additionalFieldsData: 'additionalFieldsData' in child ? child.additionalFieldsData : undefined
95
94
  }, rsInternal);
96
- // If header node is a leaf node then , add start index and endIndex to resolve data.
95
+ // If the header node is a leaf node, then, add start index and endIndex to resolve data.
97
96
  if ((viewHeader.isLeafNode || viewHeader.isHierarchical) &&
98
97
  viewHeader.isExpanded &&
99
98
  doesExistInViewInfo(viewInfo, viewHeader.hierarchy, viewHeader.isHierarchical)) {
@@ -136,7 +135,7 @@ function getRecordsCount(group, count, includedRowCount, parentGroup, from, to,
136
135
  parentGroups[currentGroup.groupBy] = currentGroup.name;
137
136
  }
138
137
  count += 1;
139
- // group has subgroups and group is expanded
138
+ // the group has subgroups and a group is expanded
140
139
  const isExpanded = isNodeExpanded(groupToggle, group[i], allGroupsExpanded);
141
140
  let includeThisGroup = false;
142
141
  if (count > from && count - 1 <= to) {
@@ -144,8 +143,8 @@ function getRecordsCount(group, count, includedRowCount, parentGroup, from, to,
144
143
  includedRowCount += 1;
145
144
  }
146
145
  group[i].visibleRow = includeThisGroup;
147
- // Footer should be shown only if node expands.
148
- // groupToggle will effect footer visibility so reset footer flag.
146
+ // Footer should be shown only if the node expands.
147
+ // groupToggle will affect footer visibility so reset a footer flag.
149
148
  group[i].showHierarchicalFooter = false;
150
149
  if (group[i].children && isExpanded) {
151
150
  [count, includedRowCount] = getRecordsCount(group[i].children, count, includedRowCount, parentGroups, from, to, groupFilters, groupToggle, allGroupsExpanded, state, getView);
@@ -154,7 +153,7 @@ function getRecordsCount(group, count, includedRowCount, parentGroup, from, to,
154
153
  !!group[i].children.find(g => g.visibleRow && (g.isHierarchical || !g.children));
155
154
  }
156
155
  else if (!group[i].children && isExpanded) {
157
- // group doesn't have subgroups and group is expanded
156
+ // the group doesn't have subgroups and the group is expanded
158
157
  const innerCount = count + group[i].count;
159
158
  if (count <= to) {
160
159
  let groupFrom = 0;
@@ -199,8 +198,8 @@ const constructGroupingPagination = (groupingInfo, groupToggle, paginationOption
199
198
  getRecordsCount(groupingInfo, 0, 0, {}, paginationOptions.startIndex, paginationOptions.endIndex, groupFilters, groupToggle, allGroupsExpanded, state, getView);
200
199
  return groupFilters;
201
200
  };
202
- // This is basically used to update count on non leaf node.
203
- // which is sum of count of leaf node children in their hierarchy.
201
+ // This is basically used to update count on non-leaf node.
202
+ // which is the sum of count of leaf node children in their hierarchy.
204
203
  function updateCountOnNonLeafNode(groupingInfo) {
205
204
  const updateCount = (child) => {
206
205
  if (child.count !== undefined)
@@ -339,8 +338,8 @@ const getTotalItemCount = (getView, state, groupingInfo) => {
339
338
  const { groupToggle, allGroupsExpanded } = state;
340
339
  while (stack.length) {
341
340
  const child = stack.shift();
342
- // We are considering header count whether if it is of hierarchical node or
343
- // a normal group node and it has data associated with it in its hierarchy.
341
+ // We are considering header count whether if it is of a hierarchical node or
342
+ // a normal group node, and it has data associated with it in its hierarchy.
344
343
  if (child) {
345
344
  totalItemCount += 1;
346
345
  const isSubGroupPresent = child.children && child.children.length;
@@ -374,15 +373,15 @@ function postFetch(rsInternal, memoizedPrepareGroupHeaders) {
374
373
  const rsStore = getRsStore();
375
374
  const { getState } = getRsStateResolver();
376
375
  if (!rsStore.groupingInfo || !rsStore.groupingInfo.length) {
377
- // As we are giving ways to always use header though grouping is not in place
376
+ // As we are giving ways to always use header, though grouping is not in place
378
377
  // update total item count given by API.
379
378
  getView().setProp('totalItemCount', getView().resultsCount);
380
379
  memoizedPrepareGroupHeaders([[], [], rsInternal], [getView().rows.length]);
381
380
  }
382
381
  else {
383
- // As our group headers are representing data in UI , so
382
+ // As our group headers are representing data in UI, so
384
383
  // like data after every fetch group headers should also change so that
385
- // UI get to know about latest group.
384
+ // UI get to know about the latest group.
386
385
  getView().setProp('totalItemCount', getTotalItemCount(getView, getState(), rsStore.groupingInfo));
387
386
  memoizedPrepareGroupHeaders([
388
387
  rsStore.groupingInfo,
@@ -408,8 +407,8 @@ export default (rsInternal) => {
408
407
  const memorizeOnHierarchicalGroupChange = withMemoization(onHierarchicalGroupChange);
409
408
  const memoizedUpdateGroupFilters = withMemoization(updateGroupFilters);
410
409
  const memoizedAutoExpandGroups = withMemoization(autoExpandGroups);
411
- // Prepare group header even though groups are not present to have one flow.
412
- // depend on after fetch event as , it depends on data when no grouping is there.
410
+ // Prepare a group header even though groups are not present to have one flow.
411
+ // depend on after fetch event as it depends on data when no grouping is there.
413
412
  rsInternal
414
413
  .getPubSubUtils()
415
414
  .subscribe(AFTER_FETCH, () => postFetch(rsInternal, withMemoization(prepareGroupHeaders)));
@@ -424,7 +423,7 @@ export default (rsInternal) => {
424
423
  state.personalization?.active,
425
424
  state.refresh,
426
425
  state.aggregationInfo,
427
- state.hiddenColumns
426
+ state.visibleColumns
428
427
  ]);
429
428
  memoizedAutoExpandGroups([featureProps], [state.personalization?.active]);
430
429
  await memorizeOnHierarchicalGroupChange([featureProps], [
@@ -434,10 +433,10 @@ export default (rsInternal) => {
434
433
  state.aggregationInfo,
435
434
  state.personalization?.active
436
435
  ]);
437
- // In new grouping, update group info in state.
436
+ // In the new grouping, update group info in state.
438
437
  // Action dispatched for group info will prepare group headers.
439
438
  if (state.paginationOptions) {
440
- // TODO: use this comarator for optimization but isVisible calculated prop on grouping info needs to be handled.ISSUE-80012
439
+ // TODO: use this comparator for optimization but isVisible calculated prop on grouping info needs to be handled.ISSUE-80012
441
440
  // const comparator =(prev, next) => {
442
441
  // if (prev[1] !== next[1] || prev[3] !== next[3]) return false;
443
442
  // return compareArray(prev[2], next[2], ['children', 'count', 'name']);