@pega/lists-core 9.0.0-build.9.9 → 9.0.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 (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,8 +1,7 @@
1
- import get from 'lodash.get';
1
+ import get from 'lodash-es/get';
2
2
  import { compareObjects, evaluateStyleFormatForCell } from '../utils/util';
3
3
  import * as actions from '../actions/actions';
4
4
  import { RICH_TEXT } from '../constants';
5
- import { DATA_KEY } from './ColumnGenerator.types';
6
5
  export default class Column {
7
6
  /** Reference to repeating structure props. */
8
7
  #rsProps;
@@ -55,8 +54,8 @@ export default class Column {
55
54
  */
56
55
  formatterAllowed = true;
57
56
  /** Indicates the current formatter applied to the column. */
58
- formatterName;
59
- /** The formatter function corresponding toe the {@link formatterName}. */
57
+ formatterConfig;
58
+ /** The formatter function corresponding to the {@link formatterConfig}. */
60
59
  formatter;
61
60
  /** The name of the renderer for this cell. */
62
61
  cellRenderer;
@@ -81,8 +80,6 @@ export default class Column {
81
80
  /** Indicates if the column is a custom column derived from Customize column feature.
82
81
  * E.g. column generated by joining 2 columns. */
83
82
  isCustomColumn = false;
84
- /** Indicates if the column is in edit mode. */
85
- editMode = false;
86
83
  /** Visual order of the column with respect to other columns */
87
84
  order;
88
85
  /** CSS classes for the column.
@@ -129,7 +126,7 @@ export default class Column {
129
126
  * @param rsInternal A reference to rsInternal object.
130
127
  */
131
128
  constructor(config, rsInternal) {
132
- const { aggregateValue, aggregationType, currentWidth, field, formatterName, formatter, cellRenderer, label, alias, categorizedHeaderLabel, sortSequence, sortOrder, order, displayMode, disableSelection, filtered = false, formatterAllowed = true, hidden = false, style = {}, grouped = false, frozen = false, lastFrozen = false, aggregated = false, sorted = false, isFirstVisualColumn = false, isFirstDataColumn = false, isLastColumn = false, isCustomColumn = false, editMode = false, classList = [], showHeaderIcons = false, showTooltip = !!(field.showTooltip === undefined ? true : field.showTooltip), isWidthChanged = false, refresh, conditionalStyleFormats } = config;
129
+ const { aggregateValue, aggregationType, currentWidth, field, formatterConfig, formatter, cellRenderer, label, alias, categorizedHeaderLabel, sortSequence, sortOrder, order, displayMode, disableSelection, filtered = false, formatterAllowed = true, hidden = false, style = {}, grouped = false, frozen = false, lastFrozen = false, aggregated = false, sorted = false, isFirstVisualColumn = false, isFirstDataColumn = false, isLastColumn = false, isCustomColumn = false, classList = [], showHeaderIcons = false, showTooltip = !!(field.showTooltip === undefined ? true : field.showTooltip), isWidthChanged = false, refresh, conditionalStyleFormats } = config;
133
130
  const { getRsStore, getRsProps, getRsStateResolver } = rsInternal;
134
131
  const rsStore = getRsStore();
135
132
  const rsProps = getRsProps();
@@ -155,7 +152,7 @@ export default class Column {
155
152
  this.currentWidth = currentWidth;
156
153
  this.field = field;
157
154
  this.formatterAllowed = formatterAllowed;
158
- this.formatterName = formatterName;
155
+ this.formatterConfig = formatterConfig;
159
156
  this.formatter = formatter;
160
157
  this.cellRenderer = cellRenderer;
161
158
  this.hidden = hidden;
@@ -167,7 +164,6 @@ export default class Column {
167
164
  this.isFirstDataColumn = isFirstDataColumn;
168
165
  this.isLastColumn = isLastColumn;
169
166
  this.isCustomColumn = isCustomColumn;
170
- this.editMode = editMode;
171
167
  this.order = order;
172
168
  this.classList = classList;
173
169
  this.showHeaderIcons = showHeaderIcons;
@@ -197,8 +193,6 @@ export default class Column {
197
193
  this.getExecutionContext = this.getExecutionContext.bind(this);
198
194
  this.getContext = this.getContext.bind(this);
199
195
  this.getExpression = this.getExpression.bind(this);
200
- this.setEditContext = this.setEditContext.bind(this);
201
- this.isCellInEditMode = this.isCellInEditMode.bind(this);
202
196
  // All action APIs supported on instance
203
197
  this.applyGrouping = this.applyGrouping.bind(this);
204
198
  this.applySorting = this.applySorting.bind(this);
@@ -208,6 +202,7 @@ export default class Column {
208
202
  this.applyAggregation = this.applyAggregation.bind(this);
209
203
  this.applyLabel = this.applyLabel.bind(this);
210
204
  this.applyFormatter = this.applyFormatter.bind(this);
205
+ this.removeFormatter = this.removeFormatter.bind(this);
211
206
  this.applyMerge = this.applyMerge.bind(this);
212
207
  this.deleteCustomColumn = this.deleteCustomColumn.bind(this);
213
208
  this.applyColumnAutoSize = this.applyColumnAutoSize.bind(this);
@@ -232,7 +227,6 @@ export default class Column {
232
227
  /**
233
228
  * Returns the current column config, which can be used to create a new instance of the column.
234
229
  * This is typically used with {@link setProp}
235
- * @returns {ColumnConfig}
236
230
  */
237
231
  #get() {
238
232
  return {
@@ -246,7 +240,7 @@ export default class Column {
246
240
  frozen: this.frozen,
247
241
  lastFrozen: this.lastFrozen,
248
242
  formatterAllowed: this.formatterAllowed,
249
- formatterName: this.formatterName,
243
+ formatterConfig: this.formatterConfig,
250
244
  formatter: this.formatter,
251
245
  hidden: this.hidden,
252
246
  label: this.label,
@@ -260,7 +254,6 @@ export default class Column {
260
254
  isFirstVisualColumn: this.isFirstVisualColumn,
261
255
  isFirstDataColumn: this.isFirstDataColumn,
262
256
  isLastColumn: this.isLastColumn,
263
- editMode: this.editMode,
264
257
  order: this.order,
265
258
  classList: this.classList,
266
259
  showHeaderIcons: this.showHeaderIcons,
@@ -275,7 +268,7 @@ export default class Column {
275
268
  * Indicates if tooltip needs to be shown or not for the current column cells.
276
269
  */
277
270
  get showTooltip() {
278
- return this.#showToolTip && this.cellRenderer !== RICH_TEXT && !this.isCellInEditMode();
271
+ return this.#showToolTip && this.cellRenderer !== RICH_TEXT;
279
272
  }
280
273
  /**
281
274
  * Sets the showTooltip flag for the current column.
@@ -321,27 +314,11 @@ export default class Column {
321
314
  * Retrieves the UI properties for the column, which can be applied to value cells within this column.
322
315
  */
323
316
  getUIProps() {
324
- const editHandler = (e) => {
325
- if (!this.isCellInEditMode() &&
326
- (e.type === 'dblclick' || (e.type === 'keydown' && e.keyCode === 13))) {
327
- this.setProp('editMode', true);
328
- const row = e.target.closest('[role="row"]');
329
- if (row)
330
- this.#dispatch(actions.actionEditCell({
331
- rowId: row.dataset.key,
332
- colId: this.field.id
333
- }));
334
- }
335
- };
336
317
  // FIXME: aria-colIndex is NaN sometimes
337
318
  return {
338
319
  style: { ...this.style },
339
320
  'data-col-id': this.field.id,
340
- onDoubleClick: this.field.editable ? editHandler : null,
341
- onKeyDown: this.field.editable ? editHandler : null,
342
- classList: this.isCellInEditMode()
343
- ? [...this.classList, 'editable-cell']
344
- : [...this.classList],
321
+ classList: [...this.classList],
345
322
  'aria-colindex': this.order + 1,
346
323
  role: this.field.isRowHeader ? 'rowheader' : 'gridcell'
347
324
  };
@@ -383,7 +360,7 @@ export default class Column {
383
360
  */
384
361
  setExecutionContext(row) {
385
362
  this.#pRow = row;
386
- this.#executionContext = row?.getContext();
363
+ this.#executionContext = row ? row.getContext() : null;
387
364
  }
388
365
  /**
389
366
  * Retrieves the current execution context, i.e., {@link RowContext}, when rendering a cell for this column.
@@ -392,36 +369,13 @@ export default class Column {
392
369
  getExecutionContext() {
393
370
  return this.#executionContext;
394
371
  }
395
- /**
396
- * Sets the {@link Column.executionContext execution context} to the row of the cell being edited.
397
- * It relies on the editInfo state to identify the cell being edited.
398
- */
399
- setEditContext() {
400
- const editedRow = this.parent.rows?.find(r => r[DATA_KEY] === this.parent?.state?.editInfo?.rowId);
401
- if (editedRow) {
402
- this.setExecutionContext(editedRow);
403
- }
404
- }
405
- /**
406
- * Checks whether any value cell in this column is currently in edit mode.
407
- */
408
- isCellInEditMode() {
409
- return (this.editMode &&
410
- this.field.id === this.parent?.state?.editInfo?.colId &&
411
- this.#pRow && // Checking if context is set properly to avoid undefined === undefined
412
- this.#pRow[DATA_KEY] === this.parent?.state?.editInfo?.rowId);
413
- }
414
372
  /**
415
373
  * Returns the current column {@link ColumnContext context}.
416
374
  * @param overriddenExecutionContext - optional param to override the execution context with custom {@link RowContext}.
417
- * @returns
418
375
  *
419
376
  * @public
420
377
  */
421
378
  getContext(overriddenExecutionContext) {
422
- const applyEdit = (payload) => {
423
- this.#dispatch(actions.actionEditCell({ ...payload, colId: this.field.id }));
424
- };
425
379
  return {
426
380
  name: 'column',
427
381
  getField: () => this.field,
@@ -431,7 +385,7 @@ export default class Column {
431
385
  getFormatter: () => this.formatter,
432
386
  formatterAllowed: () => this.formatterAllowed,
433
387
  getCellRenderer: () => this.cellRenderer,
434
- getFormatterName: () => this.formatterName,
388
+ getFormatterValue: () => this.formatterConfig,
435
389
  getFormattedValue: () => this.formattedValue,
436
390
  getSearchKeyword: () => this.parent?.state?.searchText,
437
391
  showTooltip: () => this.showTooltip,
@@ -442,6 +396,8 @@ export default class Column {
442
396
  }
443
397
  return (overriddenExecutionContext || this.#executionContext)?.getValue?.()?.[tooltip];
444
398
  },
399
+ /** Returns the header label */
400
+ getLabel: () => this.categorizedHeaderLabel,
445
401
  setProp: (prop, value) => this.setPropMutatively(prop, value),
446
402
  getSortProperties: this.getSortProperties,
447
403
  getExpression: this.getExpression,
@@ -456,39 +412,11 @@ export default class Column {
456
412
  applyAggregation: this.applyAggregation,
457
413
  applyLabel: this.applyLabel,
458
414
  applyFormatter: this.applyFormatter,
415
+ removeFormatter: this.removeFormatter,
459
416
  applyMerge: this.applyMerge,
460
417
  deleteCustomColumn: this.deleteCustomColumn,
461
- setEditContext: this.setEditContext,
462
418
  getRendererType: () => {
463
- // TODO: Need to revisit this . Why to have different renderer type. Doing this to keep contract same with nebula render factory.
464
- if (this.isCellInEditMode())
465
- return 'cellEditRenderer';
466
- if (this.isCustomColumn)
467
- return 'customCellRenderer';
468
- return 'cellRenderer';
469
- },
470
- onSubmit: (editContext = {}) => {
471
- const { oldValue, newValue } = editContext;
472
- if (oldValue !== newValue) {
473
- // dispatch actions (Cell_editing, submit) with data
474
- this.setEditContext(); /* Set the correct context from state before applying any actions */
475
- if (this.#pRow) {
476
- const payload = {
477
- newValue,
478
- name: this.field.name,
479
- key: this.#pRow.key,
480
- oldValue: this.getContext().getValue()
481
- };
482
- this.#dispatch(actions.actionUpdateChangeSet({ ...payload, status: 'pending' }));
483
- this.#dispatch(actions.actionSubmitChangeSet({ ...payload, status: 'inProgress' }));
484
- }
485
- }
486
- this.setProp('editMode', false);
487
- applyEdit({});
488
- },
489
- onCancel: () => {
490
- this.setProp('editMode', false);
491
- applyEdit({});
419
+ return this.isCustomColumn ? 'customCellRenderer' : 'cellRenderer';
492
420
  },
493
421
  selectAllRows: this.parent.type.selectAllRows,
494
422
  getDisableSelection: () => this.disableSelection
@@ -497,7 +425,7 @@ export default class Column {
497
425
  /**
498
426
  * Updates property of the column with value. The updated value will be reflected on next re-render.
499
427
  * @param prop Either partial of {@link Column} or individual properties of {@link Column}.
500
- * @param [value] An optional parameter to provide value for {@link prop} in case prop is not of type {@link ColumnConfig}
428
+ * @param value An optional parameter to provide value for {@link prop} in case prop is not of type {@link ColumnConfig}
501
429
  * @returns void
502
430
  */
503
431
  setPropMutatively(prop, value) {
@@ -518,16 +446,13 @@ export default class Column {
518
446
  * Always use `setProp` to update properties of {@link Column} to ensure immutability.
519
447
  *
520
448
  * @param prop Either a partial {@link ColumnConfig} or individual properties of {@link ColumnConfig}.
521
- * @param [value] Optional value to set for `prop` if `prop` is not of type {@link ColumnConfig}.
449
+ * @param value Optional value to set for `prop` if `prop` is not of type {@link ColumnConfig}.
522
450
  * @returns void
523
451
  */
524
452
  setProp(prop, value) {
525
453
  const { getView } = this.#rsInternal;
526
454
  const index = getView().columns.findIndex(c => c === this);
527
- let pObject = prop;
528
- if (typeof prop !== 'object') {
529
- pObject = { [prop]: value };
530
- }
455
+ const pObject = typeof prop !== 'object' ? { [prop]: value } : prop;
531
456
  // Change object if any value changes actually.
532
457
  // @ts-expect-error utils should be converted to TS in order to resolve this.
533
458
  if (!compareObjects(this, pObject, Object.keys(pObject)) && index >= 0) {
@@ -535,6 +460,9 @@ export default class Column {
535
460
  ...this.#get(),
536
461
  ...pObject
537
462
  }, this.#rsInternal);
463
+ if ('field' in pObject && pObject.field !== undefined) {
464
+ this.#rsStore.fieldDefsMap.set(newColumn.field.id, newColumn.field);
465
+ }
538
466
  const cloned = [...getView().columns];
539
467
  cloned.splice(index, 1, newColumn);
540
468
  getView().columns = cloned;
@@ -621,10 +549,19 @@ export default class Column {
621
549
  * Dispatches an action that updates {@link State.renderFormatter renderFormatter} in the state.
622
550
  * @param name - Formatter name.
623
551
  */
624
- applyFormatter(name) {
552
+ applyFormatter(config) {
625
553
  this.#dispatch(actions.actionUpdateRenderFormatter({
626
554
  columnId: this.field.id,
627
- name
555
+ formatter: config
556
+ }));
557
+ }
558
+ /** Removes formatter of the current column.
559
+ *
560
+ * Dispatches an action that updates {@link State.renderFormatter renderFormatter} in the state.
561
+ */
562
+ removeFormatter() {
563
+ this.#dispatch(actions.actionRemoveRenderFormatter({
564
+ columnId: this.field.id
628
565
  }));
629
566
  }
630
567
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnGenerator.js","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash.get';\n\nimport type { ExcludeStrict, OmitStrict } from '@pega/cosmos-react-core';\nimport type { Condition } from '@pega/cosmos-react-condition-builder';\n\nimport type {\n ConditionalStyleFormat,\n FieldDef,\n Meta,\n StyleFormat\n} from '../../../types/Meta.types';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { State, Group, Sort, AggregationType, EditInfo } from '../../../types/State.types';\nimport { compareObjects, evaluateStyleFormatForCell } from '../utils/util';\nimport * as actions from '../actions/actions';\nimport { RICH_TEXT } from '../constants';\nimport type RsProps from '../RsProps';\nimport type RsInternal from '../RsInternal';\nimport type RsStore from '../RsStore';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { ApiContext } from '../../../types/ApiContext.types';\nimport type StateResolver from '../StateResolver';\n\nimport type Row from './RowGenerator';\nimport {\n DATA_KEY,\n type ColumnConfig,\n type ColumnResizerProps,\n type ColumnStyle,\n type SortProperties,\n type ColumnContext,\n type ColumnRenderingEngineProps\n} from './ColumnGenerator.types';\nimport type { RowContext, RowData } from './RowGenerator.types';\nimport type { FormatterFunction } from './ViewGenerator.types';\n\nexport default class Column {\n /** Reference to repeating structure props. */\n #rsProps: RsProps;\n /** Reference to repeating structure store. */\n #rsStore: RsStore;\n /** Reference to rs internal object. */\n #rsInternal: RsInternal;\n /** */\n #dispatch: StateResolver['dispatch'];\n /** The common CSS styles for a column like width, order etc. */\n style = {} as ColumnStyle;\n /** Indicates if the column is grouped.\n * @default false\n */\n grouped = false;\n /** Indicates if the column is frozen.\n * @default false\n */\n frozen = false;\n /** Indicates if any filter is appplied to the column.\n * @default false\n */\n filtered = false;\n /** Indicates if any sorting is applied to the column.\n * @default false\n */\n sorted = false;\n /** Indicates the sorting sequence of the column if it is {@link sorted}. */\n sortSequence?: SortProperties['sortSequence'];\n /** Indicates the sorting order of the column if it is {@link sorted}. */\n sortOrder?: SortProperties['sortOrder'];\n /** Indicates if the column is lastFrozen column if it is {@link frozen}.\n * @default false\n */\n lastFrozen = false;\n /** Indicates if aggregation is applied on the column.\n * @default false\n */\n aggregated = false;\n /** Aggregated value for the column for an {@link aggregationType} if {@link aggregated aggregation} is applied. */\n aggregateValue?: number;\n /** Current aggregation type applied on the column. */\n aggregationType?: AggregationType;\n /** Indicates the current width of the column. */\n currentWidth?: number;\n /** Field meta for this column from {@link Meta.fieldDefs meta fieldDefs}. */\n field: FieldDef;\n /** Indicates if the formatting is allowed on this column.\n * @default true\n */\n formatterAllowed = true;\n /** Indicates the current formatter applied to the column. */\n formatterName?: string;\n /** The formatter function corresponding toe the {@link formatterName}. */\n formatter?: FormatterFunction;\n /** The name of the renderer for this cell. */\n cellRenderer?: string;\n /** Indicates if the column is hidden.\n * @default false\n */\n hidden = false;\n /** Label for the column that can be displayed to end user. */\n label?: string;\n /** Categorized label for the column if the column has categories derived from {@link FieldDef.category}. */\n categorizedHeaderLabel?: string;\n /** Indicates if the column is first visual column for the end user.\n * @default false\n */\n isFirstVisualColumn = false;\n /** Indicates if the column is first data column, excluding any action column like checkbox, row action, drag drop column.\n * @default false\n */\n isFirstDataColumn = false;\n /** Indicates if the column is last column. */\n isLastColumn = false;\n /** Indicates if the column is a custom column derived from Customize column feature.\n * E.g. column generated by joining 2 columns. */\n isCustomColumn = false;\n /** Indicates if the column is in edit mode. */\n editMode = false;\n /** Visual order of the column with respect to other columns */\n order?: number;\n /** CSS classes for the column.\n * @default empty array.\n */\n classList = [] as string[];\n /** Indicates if the icons should be shown for the column on the header based on {@link FieldDef.type type}. */\n showHeaderIcons = false;\n /** Indicates if the width of the column is changed. */\n isWidthChanged = false;\n /** Indicates if tooltip should be shown for the column in cells. */\n #showToolTip!: boolean;\n /** Indicates the current display mode for hierarchical columns. */\n displayMode?: string | null;\n /** Indicates if the selection column is disabled for selection. */\n disableSelection?: boolean;\n // TODO: Update executionContext type. 'RowContext' | 'ViewContext' | null\n /** The current running execution context i.e. row context for the column in which the column is being rendered. */\n #executionContext: RowContext | null;\n /** The {@link Row row} in which column is being rendered. */\n #pRow: Row | null;\n /** The formatted value for the column. */\n formattedValue: string | null;\n /** Returns the resize events that can be attached to column DOM node. */\n getResizerProps: () => ColumnResizerProps | undefined;\n /** Alias of the column */\n alias?: string;\n /** Indicates a re-render is triggered for the column. */\n refresh?: number;\n /** A factory function provided to RsCore that returns component or component definition for specified type\n * @param type It is equal to value of {@link FieldDef.cellRenderer cellRenderer}(if added in fieldDefs of that column).\n * @returns It should return a component definition (or an object that contains component definition).\n * This component definition will be used by RepeatingStructures to render a cell with the component provided by renderFactory.\n * If component definition is not provided from render factory or renderFactory is not provided to Repeating structures then cell will be rendered directly with value derived for the cell or the formatted value(if {@link RsProps.formatters formatters} are provided for that column)\n */\n renderFactory?: RsProps['renderFactory'];\n /** Reference to {@link Column} class construtcor. */\n type?: typeof Column;\n /** Array of conditional style formats applied to this column. */\n conditionalStyleFormats?: OmitStrict<ConditionalStyleFormat, 'fieldName'>[];\n\n /**\n * Creates a new instance of a column within a repeating structure template.\n * @param config It represents few config properties which is used to create column instance.\n * @param rsInternal A reference to rsInternal object.\n */\n constructor(config: ColumnConfig, rsInternal: RsInternal) {\n const {\n aggregateValue,\n aggregationType,\n currentWidth,\n field,\n formatterName,\n formatter,\n cellRenderer,\n label,\n alias,\n categorizedHeaderLabel,\n sortSequence,\n sortOrder,\n order,\n displayMode,\n disableSelection,\n filtered = false,\n formatterAllowed = true,\n hidden = false,\n style = {} as ColumnStyle,\n grouped = false,\n frozen = false,\n lastFrozen = false,\n aggregated = false,\n sorted = false,\n isFirstVisualColumn = false,\n isFirstDataColumn = false,\n isLastColumn = false,\n isCustomColumn = false,\n editMode = false,\n classList = [],\n showHeaderIcons = false,\n showTooltip = !!(field.showTooltip === undefined ? true : field.showTooltip),\n isWidthChanged = false,\n refresh,\n conditionalStyleFormats\n } = config;\n const { getRsStore, getRsProps, getRsStateResolver } = rsInternal;\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const { dispatch } = getRsStateResolver();\n this.#rsInternal = rsInternal;\n this.#rsProps = rsProps;\n this.#rsStore = rsStore;\n this.#dispatch = dispatch;\n this.renderFactory = rsProps.renderFactory;\n this.type = this.constructor as typeof Column;\n // Persisted props at column level.\n this.style = style;\n this.grouped = grouped;\n this.frozen = frozen;\n this.filtered = filtered;\n this.sorted = sorted;\n this.sortSequence = sortSequence;\n this.sortOrder = sortOrder;\n this.lastFrozen = lastFrozen;\n this.aggregated = aggregated;\n this.aggregateValue = aggregateValue;\n this.aggregationType = aggregationType;\n this.currentWidth = currentWidth;\n this.field = field;\n this.formatterAllowed = formatterAllowed;\n this.formatterName = formatterName;\n this.formatter = formatter;\n this.cellRenderer = cellRenderer;\n this.hidden = hidden;\n this.label = label;\n this.alias = alias;\n this.refresh = refresh;\n this.categorizedHeaderLabel = categorizedHeaderLabel;\n this.isFirstVisualColumn = isFirstVisualColumn;\n this.isFirstDataColumn = isFirstDataColumn;\n this.isLastColumn = isLastColumn;\n this.isCustomColumn = isCustomColumn;\n this.editMode = editMode;\n this.order = order;\n this.classList = classList;\n this.showHeaderIcons = showHeaderIcons;\n this.showTooltip = showTooltip;\n this.isWidthChanged = isWidthChanged;\n this.displayMode = displayMode;\n this.disableSelection = disableSelection;\n this.conditionalStyleFormats = conditionalStyleFormats;\n\n // this props are only used at time of rendering. values are not persisted across rows / cells\n this.#executionContext = null;\n this.#pRow = null;\n this.formattedValue = null;\n\n /** IMP: For generator methods use traditional function syntax\n * rather than arrow function for memory efficiency\n * and bind 'this' to the methods which requires 'this' context. */\n this.getUniqueValues = this.getUniqueValues.bind(this);\n this.getRenderFormatters = this.getRenderFormatters.bind(this);\n this.getSortProperties = this.getSortProperties.bind(this);\n this.getFilterProperties = this.getFilterProperties.bind(this);\n this.getUIProps = this.getUIProps.bind(this);\n this.getHeaderUIProps = this.getHeaderUIProps.bind(this);\n this.getResizerProps = () => getRsStore().getColumnResizerProps?.();\n this.setProp = this.setProp.bind(this);\n this.getRenderingEngineProps = this.getRenderingEngineProps.bind(this);\n this.renderDisplayMode = this.renderDisplayMode.bind(this);\n\n this.setExecutionContext = this.setExecutionContext.bind(this);\n this.getExecutionContext = this.getExecutionContext.bind(this);\n this.getContext = this.getContext.bind(this);\n this.getExpression = this.getExpression.bind(this);\n this.setEditContext = this.setEditContext.bind(this);\n this.isCellInEditMode = this.isCellInEditMode.bind(this);\n\n // All action APIs supported on instance\n this.applyGrouping = this.applyGrouping.bind(this);\n this.applySorting = this.applySorting.bind(this);\n this.applyToggleVisibility = this.applyToggleVisibility.bind(this);\n this.applyFreeze = this.applyFreeze.bind(this);\n this.applyFreezeAtIndex = this.applyFreezeAtIndex.bind(this);\n this.applyAggregation = this.applyAggregation.bind(this);\n this.applyLabel = this.applyLabel.bind(this);\n this.applyFormatter = this.applyFormatter.bind(this);\n this.applyMerge = this.applyMerge.bind(this);\n this.deleteCustomColumn = this.deleteCustomColumn.bind(this);\n this.applyColumnAutoSize = this.applyColumnAutoSize.bind(this);\n this.applyDisplay = this.applyDisplay.bind(this);\n this.getCellStyleFormat = this.getCellStyleFormat.bind(this);\n }\n\n /** Reference to current view object. */\n get parent() {\n return this.#rsInternal.getView();\n }\n\n /** The data for all the cells for the column. */\n get data(): RowData[keyof RowData][] {\n return this.parent.data?.map(d => get(d, this.field.name)) || [];\n }\n\n /**\n * It returns the expression for the column if it is a {@link isCustomColumn custom} column.\n */\n getExpression() {\n return this.parent.state?.customFields?.find(c => c.id === this.field.id)?.expression;\n }\n\n // Used by setProp for mutation\n /**\n * Returns the current column config, which can be used to create a new instance of the column.\n * This is typically used with {@link setProp}\n * @returns {ColumnConfig}\n */\n #get(): ColumnConfig {\n return {\n aggregated: this.aggregated,\n grouped: this.grouped,\n aggregateValue: this.aggregateValue,\n aggregationType: this.aggregationType,\n currentWidth: this.currentWidth,\n field: this.field,\n style: this.style,\n frozen: this.frozen,\n lastFrozen: this.lastFrozen,\n formatterAllowed: this.formatterAllowed,\n formatterName: this.formatterName,\n formatter: this.formatter,\n hidden: this.hidden,\n label: this.label,\n categorizedHeaderLabel: this.categorizedHeaderLabel,\n cellRenderer: this.cellRenderer,\n filtered: this.filtered,\n sorted: this.sorted,\n sortSequence: this.sortSequence,\n sortOrder: this.sortOrder,\n isCustomColumn: this.isCustomColumn,\n isFirstVisualColumn: this.isFirstVisualColumn,\n isFirstDataColumn: this.isFirstDataColumn,\n isLastColumn: this.isLastColumn,\n editMode: this.editMode,\n order: this.order,\n classList: this.classList,\n showHeaderIcons: this.showHeaderIcons,\n isWidthChanged: this.isWidthChanged,\n displayMode: this.displayMode,\n disableSelection: this.disableSelection,\n alias: this.alias,\n conditionalStyleFormats: this.conditionalStyleFormats\n };\n }\n\n /**\n * Indicates if tooltip needs to be shown or not for the current column cells.\n */\n get showTooltip() {\n return this.#showToolTip && this.cellRenderer !== RICH_TEXT && !this.isCellInEditMode();\n }\n\n /**\n * Sets the showTooltip flag for the current column.\n */\n set showTooltip(showTooltip) {\n this.#showToolTip = showTooltip;\n }\n\n /**\n * Retrieves the distinct values for this column using {@link ApiContext.fetchUniqueColValues fetchUniqueColValues}.\n */\n async getUniqueValues() {\n return (\n this.#rsProps.apiContext.fetchUniqueColValues?.(\n this.parent.state,\n this.parent.meta,\n this.field.id,\n {\n ...(this.#rsStore.refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: this.#rsStore.refreshToken\n })\n }\n ) || Promise.resolve([])\n );\n }\n\n /**\n * Returns the formatters available for the current column from\n * {@link RsProps.renderFormatterTypeMap renderFormatterTypeMap} based on its {@link FieldDef.type type}\n */\n getRenderFormatters() {\n const formattersForType = this.parent.renderFormatterTypeMap?.[this.field.type] || [];\n return this.field.formatters ?? formattersForType;\n }\n\n /** Returns the sorting information for the current column. */\n getSortProperties() {\n return {\n sorted: this.sorted,\n sortSequence: this.sortSequence,\n sortOrder: this.sortOrder\n };\n }\n\n /** Returns the filter information for the current column. */\n getFilterProperties(): { filtered: boolean; filterExpression: Condition | undefined } {\n return {\n filtered: this.filtered,\n filterExpression: this.parent.state.filterExpression\n };\n }\n\n /**\n * Retrieves the UI properties for the column, which can be applied to value cells within this column.\n */\n getUIProps() {\n const editHandler = (e: KeyboardEvent | MouseEvent) => {\n if (\n !this.isCellInEditMode() &&\n (e.type === 'dblclick' || (e.type === 'keydown' && (e as KeyboardEvent).keyCode === 13))\n ) {\n this.setProp('editMode', true);\n const row = (e.target as HTMLElement).closest('[role=\"row\"]') as HTMLElement;\n if (row)\n this.#dispatch(\n actions.actionEditCell({\n rowId: row.dataset.key!,\n colId: this.field.id\n })\n );\n }\n };\n\n // FIXME: aria-colIndex is NaN sometimes\n return {\n style: { ...this.style },\n 'data-col-id': this.field.id,\n onDoubleClick: this.field.editable ? editHandler : null,\n onKeyDown: this.field.editable ? editHandler : null,\n classList: this.isCellInEditMode()\n ? [...this.classList, 'editable-cell']\n : [...this.classList],\n 'aria-colindex': this.order! + 1,\n role: this.field.isRowHeader ? 'rowheader' : 'gridcell'\n };\n }\n\n /**\n * Retrieves the {@link StyleFormat style format} style format applicable to the cell\n * @returns The style format if applicable, otherwise `undefined`.\n *\n */\n getCellStyleFormat(): StyleFormat | undefined {\n return evaluateStyleFormatForCell(this, this.#rsInternal);\n }\n\n /**\n * Retrieves the UI properties for the column, which can be applied to the header cells of this column.\n */\n getHeaderUIProps() {\n return {\n 'data-col-id': this.field.id,\n draggable: this.field.reorderFields,\n role: 'columnheader',\n ...(this.field.reorderFields && this.parent.type.getFieldReorderProps?.())\n };\n }\n\n // TODO: why return search query in column rendering engine props.\n /**\n * Provides essential information for cell rendering, including the column and row.\n * Additionally, it supplies the current search query.\n */\n getRenderingEngineProps(): ColumnRenderingEngineProps {\n return {\n column: this as Column,\n row: this.#pRow,\n searchKeyword: this.parent?.state?.search?.query\n };\n }\n\n /**\n * Sets the current execution context, {@link RowContext}, when rendering a cell for this column.\n * This dynamic context is updated for each cell in the column as it is rendered.\n */\n setExecutionContext(row: Row) {\n this.#pRow = row;\n this.#executionContext = row?.getContext();\n }\n\n /**\n * Retrieves the current execution context, i.e., {@link RowContext}, when rendering a cell for this column.\n * This context dynamically updates as each cell in the column is rendered.\n */\n getExecutionContext() {\n return this.#executionContext;\n }\n\n /**\n * Sets the {@link Column.executionContext execution context} to the row of the cell being edited.\n * It relies on the editInfo state to identify the cell being edited.\n */\n\n setEditContext() {\n const editedRow = this.parent.rows?.find(\n r => r[DATA_KEY] === this.parent?.state?.editInfo?.rowId\n );\n if (editedRow) {\n this.setExecutionContext(editedRow);\n }\n }\n\n /**\n * Checks whether any value cell in this column is currently in edit mode.\n */\n\n isCellInEditMode() {\n return (\n this.editMode &&\n this.field.id === this.parent?.state?.editInfo?.colId &&\n this.#pRow && // Checking if context is set properly to avoid undefined === undefined\n this.#pRow[DATA_KEY] === this.parent?.state?.editInfo?.rowId\n );\n }\n\n /**\n * Returns the current column {@link ColumnContext context}.\n * @param overriddenExecutionContext - optional param to override the execution context with custom {@link RowContext}.\n * @returns\n *\n * @public\n */\n getContext(overriddenExecutionContext?: RowContext | null): ColumnContext {\n const applyEdit = (payload: EditInfo) => {\n this.#dispatch(actions.actionEditCell({ ...payload, colId: this.field.id }));\n };\n\n return {\n name: 'column',\n getField: () => this.field,\n getValue: () =>\n get((overriddenExecutionContext || this.#executionContext)?.getValue?.(), this.field?.name),\n getExecutionContext: () => overriddenExecutionContext || this.#executionContext,\n getParentContext: () => this.parent.getContext(),\n getFormatter: () => this.formatter,\n formatterAllowed: () => this.formatterAllowed,\n getCellRenderer: () => this.cellRenderer,\n getFormatterName: () => this.formatterName,\n getFormattedValue: () => this.formattedValue,\n getSearchKeyword: () => this.parent?.state?.searchText,\n showTooltip: () => this.showTooltip,\n getToolTipValue: () => {\n const tooltip = this.field?.tooltip;\n if (!tooltip) {\n return this.formattedValue;\n }\n return (overriddenExecutionContext || this.#executionContext)?.getValue?.()?.[tooltip];\n },\n setProp: (\n prop:\n | Partial<OmitStrict<Column, 'data' | 'isAutoSizable' | 'parent'>>\n | ExcludeStrict<keyof Column, 'data' | 'isAutoSizable' | 'parent'>,\n value?: Column[keyof Column]\n ) => this.setPropMutatively(prop, value),\n getSortProperties: this.getSortProperties,\n getExpression: this.getExpression,\n getFilterProperties: this.getFilterProperties,\n searchKeyword: this.parent?.state?.searchText,\n getTableMeta: () => this.parent.meta,\n getRsMeta: () => this.parent.meta,\n applyGrouping: this.applyGrouping,\n applySorting: this.applySorting,\n applyToggleVisibility: this.applyToggleVisibility,\n applyFreeze: this.applyFreeze,\n applyAggregation: this.applyAggregation,\n applyLabel: this.applyLabel,\n applyFormatter: this.applyFormatter,\n applyMerge: this.applyMerge,\n deleteCustomColumn: this.deleteCustomColumn,\n setEditContext: this.setEditContext,\n getRendererType: () => {\n // TODO: Need to revisit this . Why to have different renderer type. Doing this to keep contract same with nebula render factory.\n if (this.isCellInEditMode()) return 'cellEditRenderer';\n if (this.isCustomColumn) return 'customCellRenderer';\n return 'cellRenderer';\n },\n onSubmit: (\n editContext = {} as {\n oldValue: string | number | boolean | Date;\n newValue: string | number | boolean | Date;\n }\n ) => {\n const { oldValue, newValue } = editContext;\n if (oldValue !== newValue) {\n // dispatch actions (Cell_editing, submit) with data\n this.setEditContext(); /* Set the correct context from state before applying any actions */\n if (this.#pRow) {\n const payload = {\n newValue,\n name: this.field.name,\n key: this.#pRow.key,\n oldValue: this.getContext().getValue() as string | number | boolean | Date\n };\n this.#dispatch(actions.actionUpdateChangeSet({ ...payload, status: 'pending' }));\n this.#dispatch(actions.actionSubmitChangeSet({ ...payload, status: 'inProgress' }));\n }\n }\n this.setProp('editMode', false);\n applyEdit({});\n },\n onCancel: () => {\n this.setProp('editMode', false);\n applyEdit({});\n },\n selectAllRows: this.parent.type.selectAllRows,\n getDisableSelection: () => this.disableSelection\n };\n }\n\n /**\n * Updates property of the column with value. The updated value will be reflected on next re-render.\n * @param prop Either partial of {@link Column} or individual properties of {@link Column}.\n * @param [value] An optional parameter to provide value for {@link prop} in case prop is not of type {@link ColumnConfig}\n * @returns void\n */\n setPropMutatively(\n prop:\n | Partial<OmitStrict<Column, 'data' | 'isAutoSizable' | 'parent'>>\n | ExcludeStrict<keyof Column, 'data' | 'isAutoSizable' | 'parent'>,\n value?: Column[keyof Column]\n ) {\n if (typeof prop !== 'object' && value) {\n // @ts-expect-error check the index based type error.\n this[prop] = value;\n } else {\n Object.entries(prop).forEach(([k, v]) => {\n // @ts-expect-error Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Column'.\n this[k] = v;\n });\n }\n }\n\n // setProp is used to make columns immutables.\n /**\n * Sets a {@link prop property} and its {@link value} in the {@link Column} instance, creating an immutable instance.\n * Always use `setProp` to update properties of {@link Column} to ensure immutability.\n *\n * @param prop Either a partial {@link ColumnConfig} or individual properties of {@link ColumnConfig}.\n * @param [value] Optional value to set for `prop` if `prop` is not of type {@link ColumnConfig}.\n * @returns void\n */\n\n setProp(\n prop: Partial<ColumnConfig> | keyof ColumnConfig,\n value?: ColumnConfig[keyof ColumnConfig]\n ) {\n const { getView } = this.#rsInternal;\n const index = getView().columns!.findIndex(c => c === this);\n let pObject = prop;\n if (typeof prop !== 'object') {\n pObject = { [prop]: value };\n }\n\n // Change object if any value changes actually.\n // @ts-expect-error utils should be converted to TS in order to resolve this.\n if (!compareObjects(this, pObject, Object.keys(pObject)) && index >= 0) {\n const newColumn = new Column(\n {\n ...this.#get(),\n ...(pObject as Partial<ColumnConfig>)\n },\n this.#rsInternal\n );\n const cloned = [...getView().columns!];\n cloned.splice(index, 1, newColumn);\n getView().columns = cloned;\n return newColumn;\n }\n return this;\n }\n\n /**\n * Applies grouping to this column.\n *\n * Dispatches an action that modifies the {@link State.groups groups} in the state.\n */\n applyGrouping() {\n this.#dispatch(actions.actionToggleGrouping(this.field));\n }\n\n /**\n * Applies sorting to this column.\n *\n * Dispatches an action that updates the {@link State.sortingOrder sortingOrder} in the state.\n *\n * @param flushState If true, it will reset the existing {@link State.sortingOrder sortingOrder} state for this column.\n * @param sortOrderId The sort order, either 'asc' or 'desc'.\n */\n // eslint-disable-next-line @typescript-eslint/default-param-last\n applySorting(flushState = false, sortOrderId: Sort['order']) {\n this.#dispatch(\n actions.actionColumnSort({\n id: this.field.id,\n flushState,\n sortOrderId\n })\n );\n }\n\n /**\n * Toggles the visibility of a column, allowing it to be shown or hidden.\n *\n * Dispatches an action that updates {@link State.hiddenColumns hiddenColumns} in the state.\n *\n * @param column The column to be toggled.\n */\n\n applyToggleVisibility() {\n this.#dispatch(actions.actionColumnToggle([this.field.id]));\n }\n\n /**\n * Toggles the \"freeze\" effect on a column, locking it to the left while the rest of the content scrolls.\n * This helps keep key columns visible in large datasets.\n *\n * Dispatches an action that updates {@link State.freezeColumns freezeColumns} in the state.\n */\n applyFreeze() {\n this.#dispatch(actions.actionColumnPin([this.field.id]));\n }\n\n /**\n * Toggles the \"freeze\" effect on a column, locking it at given index while the rest of the columns\n * continues to scroll. This can be used to keep key columns visible in large datasets.\n * The freeze order of the given column is defined by {@link index} passed.\n *\n * Dispatches an action that modifies {@link State.freezeColumns freezeColumns} in the state.\n * @param index\n */\n applyFreezeAtIndex(index: number) {\n this.#dispatch(actions.actionColumnPinAtIndex(this.field.id, index));\n }\n\n /** Applies aggregation to the column, summarizing the data based on a specified {@link type aggregationType}.\n *\n * Dispatches an action that modifies {@link State.aggregationInfo aggregation} in the state.\n */\n applyAggregation(type: AggregationType) {\n this.#dispatch(\n actions.actionUpdateAggregation({\n columnId: this.field.id,\n type\n })\n );\n }\n\n /** Applies label to the current column.\n *\n * Dispatches an action that updates {@link State.columnAlias columnAlias} in the state.\n */\n applyLabel(label: NonNullable<Column['label']>) {\n this.#dispatch(\n actions.actionChangeLabel({\n columnId: this.field.id,\n label\n })\n );\n }\n\n /** Applies formatter to the current column.\n *\n * Dispatches an action that updates {@link State.renderFormatter renderFormatter} in the state.\n * @param name - Formatter name.\n */\n applyFormatter(name: NonNullable<Column['formatterName']>) {\n this.#dispatch(\n actions.actionUpdateRenderFormatter({\n columnId: this.field.id,\n name\n })\n );\n }\n\n /**\n * Applies {@link mode displayMode} to hierarchical column.\n *\n * Dispatches an action that modifies {@link State.hierarchicalGroup hierarchicalGroups},\n * {@link State.groupToggle groupToggle}, {@link State.groups groups} in the state.\n * @param mode\n */\n applyDisplay(mode: string) {\n const { hierarchicalInfo } = this.field;\n this.#rsStore.groupingInfo = [] as NonNullable<RsStore['groupingInfo']>;\n this.#dispatch(\n actions.actionUpdateDisplayMode({\n parentId: hierarchicalInfo!.parentId,\n materializedPathId: hierarchicalInfo!.materializedPathId,\n targetId: hierarchicalInfo!.targetId,\n columnId: this.field.id,\n sortById: hierarchicalInfo!.sortById || hierarchicalInfo!.targetId,\n mode\n })\n );\n }\n\n /**\n * Applies merge operation(combine columns) to 2 columns based on selected template.\n *\n * Dispatches an action that modifies {@link State.customFields customFields} in the state.\n * @param mergeWith On which column the merge operation to be performed(left/right)\n * @param title label for the new custom column.\n * @param templateName The template which should be used to merge the columns\n * @param bHideColumns Hide the existing columns.\n */\n applyMerge(\n mergeWith: 'left' | 'right',\n title: string,\n templateName: NonNullable<Meta['dynamicFieldTemplates']>[number]['value'],\n bHideColumns: boolean\n ) {\n const step = mergeWith === 'left' ? -1 : 1;\n const targetId = this.parent.columns!.find(c => c.order === this.order! + step)!.field.id;\n this.#dispatch(\n actions.actionMergeColumns({\n sourceId: this.field.id,\n targetId,\n title,\n templateName,\n bHideColumns,\n uniqueID: String(+new Date())\n })\n );\n }\n\n /**\n * Deletes the custom column.\n *\n * Dispatches an action that modifies {@link State.customFields customFields} in the state by removing this column from it.\n */\n deleteCustomColumn() {\n this.#dispatch(\n actions.actionDeleteCustomColumn({\n columnId: this.field.id\n })\n );\n }\n\n /**\n * Updates column's width based on the autosize logic.\n *\n * Dispatches an action that modifies the {@link State.columnWidths columnWidths} in the state.\n */\n\n applyColumnAutoSize() {\n this.#dispatch(actions.actionColumnAutoSize(this, this.parent.getDomContainer()!));\n }\n\n /**\n * Determines if autosize is enabled for this column.\n */\n get isAutoSizable() {\n return this.field.autosize && !this.hidden && this.cellRenderer !== RICH_TEXT;\n }\n\n /**\n * Determines whether hierarchical mode should be enabled for this column.\n */\n renderDisplayMode() {\n const { meta } = this.parent;\n const { hierarchicalInfo } = this.field;\n\n return hierarchicalInfo?.materializedPathId && meta.grouping && !meta.editing;\n }\n\n /**\n * Retrieves the personalized width of the column, sourced from either\n * {@link RsProps.persistedInfo persistedInfo} or the current\n * {@link State.personalization personalized state}.\n *\n * @returns The personalized width of the column.\n */\n\n getPersonalizedWidth() {\n let columnWidths: State['columnWidths'] = {};\n if (this.#rsProps.persistedInfo) {\n columnWidths = this.#rsProps.persistedInfo.columnWidths;\n } else {\n const { active, allPersonalizations } = this.parent.state?.personalization ?? {};\n columnWidths = allPersonalizations?.[active!]?.personalizationState?.columnWidths;\n }\n return columnWidths?.[this.field.id];\n }\n}\n"]}
1
+ {"version":3,"file":"ColumnGenerator.js","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.ts"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash-es/get';\n\nimport type { ExcludeStrict, OmitStrict } from '@pega/cosmos-react-core';\nimport type { Condition } from '@pega/cosmos-react-condition-builder';\n\nimport type {\n ConditionalStyleFormat,\n FieldDef,\n Meta,\n StyleFormat\n} from '../../../types/Meta.types';\nimport type { State, Sort, AggregationType } from '../../../types/State.types';\nimport { compareObjects, evaluateStyleFormatForCell } from '../utils/util';\nimport * as actions from '../actions/actions';\nimport { RICH_TEXT } from '../constants';\nimport type RsProps from '../RsProps';\nimport type RsInternal from '../RsInternal';\nimport type RsStore from '../RsStore';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { ApiContext } from '../../../types/ApiContext.types';\nimport type StateResolver from '../StateResolver';\n\nimport type Row from './RowGenerator';\nimport type {\n ColumnConfig,\n ColumnResizerProps,\n ColumnStyle,\n SortProperties,\n ColumnContext,\n ColumnRenderingEngineProps\n} from './ColumnGenerator.types';\nimport type { RowContext, RowData } from './RowGenerator.types';\nimport type { FormatterFunction } from './ViewGenerator.types';\n\nexport default class Column {\n /** Reference to repeating structure props. */\n #rsProps: RsProps;\n /** Reference to repeating structure store. */\n #rsStore: RsStore;\n /** Reference to rs internal object. */\n #rsInternal: RsInternal;\n /** */\n #dispatch: StateResolver['dispatch'];\n /** The common CSS styles for a column like width, order etc. */\n style = {} as ColumnStyle;\n /** Indicates if the column is grouped.\n * @default false\n */\n grouped = false;\n /** Indicates if the column is frozen.\n * @default false\n */\n frozen = false;\n /** Indicates if any filter is appplied to the column.\n * @default false\n */\n filtered = false;\n /** Indicates if any sorting is applied to the column.\n * @default false\n */\n sorted = false;\n /** Indicates the sorting sequence of the column if it is {@link sorted}. */\n sortSequence?: SortProperties['sortSequence'];\n /** Indicates the sorting order of the column if it is {@link sorted}. */\n sortOrder?: SortProperties['sortOrder'];\n /** Indicates if the column is lastFrozen column if it is {@link frozen}.\n * @default false\n */\n lastFrozen = false;\n /** Indicates if aggregation is applied on the column.\n * @default false\n */\n aggregated = false;\n /** Aggregated value for the column for an {@link aggregationType} if {@link aggregated aggregation} is applied. */\n aggregateValue?: number;\n /** Current aggregation type applied on the column. */\n aggregationType?: AggregationType;\n /** Indicates the current width of the column. */\n currentWidth?: number;\n /** Field meta for this column from {@link Meta.fieldDefs meta fieldDefs}. */\n field: FieldDef;\n /** Indicates if the formatting is allowed on this column.\n * @default true\n */\n formatterAllowed = true;\n /** Indicates the current formatter applied to the column. */\n formatterConfig?:\n | string\n | {\n type: string;\n config: unknown;\n };\n\n /** The formatter function corresponding to the {@link formatterConfig}. */\n formatter?: FormatterFunction;\n /** The name of the renderer for this cell. */\n cellRenderer?: string;\n /** Indicates if the column is hidden.\n * @default false\n */\n hidden = false;\n /** Label for the column that can be displayed to end user. */\n label?: string;\n /** Categorized label for the column if the column has categories derived from {@link FieldDef.category}. */\n categorizedHeaderLabel?: string;\n /** Indicates if the column is first visual column for the end user.\n * @default false\n */\n isFirstVisualColumn = false;\n /** Indicates if the column is first data column, excluding any action column like checkbox, row action, drag drop column.\n * @default false\n */\n isFirstDataColumn = false;\n /** Indicates if the column is last column. */\n isLastColumn = false;\n /** Indicates if the column is a custom column derived from Customize column feature.\n * E.g. column generated by joining 2 columns. */\n isCustomColumn = false;\n /** Visual order of the column with respect to other columns */\n order?: number;\n /** CSS classes for the column.\n * @default empty array.\n */\n classList = [] as string[];\n /** Indicates if the icons should be shown for the column on the header based on {@link FieldDef.type type}. */\n showHeaderIcons = false;\n /** Indicates if the width of the column is changed. */\n isWidthChanged = false;\n /** Indicates if tooltip should be shown for the column in cells. */\n #showToolTip!: boolean;\n /** Indicates the current display mode for hierarchical columns. */\n displayMode?: string | null;\n /** Indicates if the selection column is disabled for selection. */\n disableSelection?: boolean;\n // TODO: Update executionContext type. 'RowContext' | 'ViewContext' | null\n /** The current running execution context i.e. row context for the column in which the column is being rendered. */\n #executionContext: RowContext | null;\n /** The {@link Row row} in which column is being rendered. */\n #pRow: Row | null;\n /** The formatted value for the column. */\n formattedValue: string | null;\n /** Returns the resize events that can be attached to column DOM node. */\n getResizerProps: () => ColumnResizerProps | undefined;\n /** Alias of the column */\n alias?: string;\n /** Indicates a re-render is triggered for the column. */\n refresh?: number;\n /** A factory function provided to RsCore that returns component or component definition for specified type\n * @param type It is equal to value of {@link FieldDef.cellRenderer cellRenderer}(if added in fieldDefs of that column).\n * @returns It should return a component definition (or an object that contains component definition).\n * This component definition will be used by RepeatingStructures to render a cell with the component provided by renderFactory.\n * If component definition is not provided from render factory or renderFactory is not provided to Repeating structures then cell will be rendered directly with value derived for the cell or the formatted value(if {@link RsProps.formatters formatters} are provided for that column)\n */\n renderFactory?: RsProps['renderFactory'];\n /** Reference to {@link Column} class construtcor. */\n type?: typeof Column;\n /** Array of conditional style formats applied to this column. */\n conditionalStyleFormats?: OmitStrict<ConditionalStyleFormat, 'fieldName'>[];\n\n /**\n * Creates a new instance of a column within a repeating structure template.\n * @param config It represents few config properties which is used to create column instance.\n * @param rsInternal A reference to rsInternal object.\n */\n constructor(config: ColumnConfig, rsInternal: RsInternal) {\n const {\n aggregateValue,\n aggregationType,\n currentWidth,\n field,\n formatterConfig,\n formatter,\n cellRenderer,\n label,\n alias,\n categorizedHeaderLabel,\n sortSequence,\n sortOrder,\n order,\n displayMode,\n disableSelection,\n filtered = false,\n formatterAllowed = true,\n hidden = false,\n style = {} as ColumnStyle,\n grouped = false,\n frozen = false,\n lastFrozen = false,\n aggregated = false,\n sorted = false,\n isFirstVisualColumn = false,\n isFirstDataColumn = false,\n isLastColumn = false,\n isCustomColumn = false,\n classList = [],\n showHeaderIcons = false,\n showTooltip = !!(field.showTooltip === undefined ? true : field.showTooltip),\n isWidthChanged = false,\n refresh,\n conditionalStyleFormats\n } = config;\n const { getRsStore, getRsProps, getRsStateResolver } = rsInternal;\n const rsStore = getRsStore();\n const rsProps = getRsProps();\n const { dispatch } = getRsStateResolver();\n this.#rsInternal = rsInternal;\n this.#rsProps = rsProps;\n this.#rsStore = rsStore;\n this.#dispatch = dispatch;\n this.renderFactory = rsProps.renderFactory;\n this.type = this.constructor as typeof Column;\n // Persisted props at column level.\n this.style = style;\n this.grouped = grouped;\n this.frozen = frozen;\n this.filtered = filtered;\n this.sorted = sorted;\n this.sortSequence = sortSequence;\n this.sortOrder = sortOrder;\n this.lastFrozen = lastFrozen;\n this.aggregated = aggregated;\n this.aggregateValue = aggregateValue;\n this.aggregationType = aggregationType;\n this.currentWidth = currentWidth;\n this.field = field;\n this.formatterAllowed = formatterAllowed;\n this.formatterConfig = formatterConfig;\n this.formatter = formatter;\n this.cellRenderer = cellRenderer;\n this.hidden = hidden;\n this.label = label;\n this.alias = alias;\n this.refresh = refresh;\n this.categorizedHeaderLabel = categorizedHeaderLabel;\n this.isFirstVisualColumn = isFirstVisualColumn;\n this.isFirstDataColumn = isFirstDataColumn;\n this.isLastColumn = isLastColumn;\n this.isCustomColumn = isCustomColumn;\n this.order = order;\n this.classList = classList;\n this.showHeaderIcons = showHeaderIcons;\n this.showTooltip = showTooltip;\n this.isWidthChanged = isWidthChanged;\n this.displayMode = displayMode;\n this.disableSelection = disableSelection;\n this.conditionalStyleFormats = conditionalStyleFormats;\n\n // this props are only used at time of rendering. values are not persisted across rows / cells\n this.#executionContext = null;\n this.#pRow = null;\n this.formattedValue = null;\n\n /** IMP: For generator methods use traditional function syntax\n * rather than arrow function for memory efficiency\n * and bind 'this' to the methods which requires 'this' context. */\n this.getUniqueValues = this.getUniqueValues.bind(this);\n this.getRenderFormatters = this.getRenderFormatters.bind(this);\n this.getSortProperties = this.getSortProperties.bind(this);\n this.getFilterProperties = this.getFilterProperties.bind(this);\n this.getUIProps = this.getUIProps.bind(this);\n this.getHeaderUIProps = this.getHeaderUIProps.bind(this);\n this.getResizerProps = () => getRsStore().getColumnResizerProps?.();\n this.setProp = this.setProp.bind(this);\n this.getRenderingEngineProps = this.getRenderingEngineProps.bind(this);\n this.renderDisplayMode = this.renderDisplayMode.bind(this);\n\n this.setExecutionContext = this.setExecutionContext.bind(this);\n this.getExecutionContext = this.getExecutionContext.bind(this);\n this.getContext = this.getContext.bind(this);\n this.getExpression = this.getExpression.bind(this);\n // All action APIs supported on instance\n this.applyGrouping = this.applyGrouping.bind(this);\n this.applySorting = this.applySorting.bind(this);\n this.applyToggleVisibility = this.applyToggleVisibility.bind(this);\n this.applyFreeze = this.applyFreeze.bind(this);\n this.applyFreezeAtIndex = this.applyFreezeAtIndex.bind(this);\n this.applyAggregation = this.applyAggregation.bind(this);\n this.applyLabel = this.applyLabel.bind(this);\n this.applyFormatter = this.applyFormatter.bind(this);\n this.removeFormatter = this.removeFormatter.bind(this);\n this.applyMerge = this.applyMerge.bind(this);\n this.deleteCustomColumn = this.deleteCustomColumn.bind(this);\n this.applyColumnAutoSize = this.applyColumnAutoSize.bind(this);\n this.applyDisplay = this.applyDisplay.bind(this);\n this.getCellStyleFormat = this.getCellStyleFormat.bind(this);\n }\n\n /** Reference to current view object. */\n get parent() {\n return this.#rsInternal.getView();\n }\n\n /** The data for all the cells for the column. */\n get data(): RowData[keyof RowData][] {\n return this.parent.data?.map(d => get(d, this.field.name)) || [];\n }\n\n /**\n * It returns the expression for the column if it is a {@link isCustomColumn custom} column.\n */\n getExpression() {\n return this.parent.state?.customFields?.find(c => c.id === this.field.id)?.expression;\n }\n\n // Used by setProp for mutation\n /**\n * Returns the current column config, which can be used to create a new instance of the column.\n * This is typically used with {@link setProp}\n */\n #get(): ColumnConfig {\n return {\n aggregated: this.aggregated,\n grouped: this.grouped,\n aggregateValue: this.aggregateValue,\n aggregationType: this.aggregationType,\n currentWidth: this.currentWidth,\n field: this.field,\n style: this.style,\n frozen: this.frozen,\n lastFrozen: this.lastFrozen,\n formatterAllowed: this.formatterAllowed,\n formatterConfig: this.formatterConfig,\n formatter: this.formatter,\n hidden: this.hidden,\n label: this.label,\n categorizedHeaderLabel: this.categorizedHeaderLabel,\n cellRenderer: this.cellRenderer,\n filtered: this.filtered,\n sorted: this.sorted,\n sortSequence: this.sortSequence,\n sortOrder: this.sortOrder,\n isCustomColumn: this.isCustomColumn,\n isFirstVisualColumn: this.isFirstVisualColumn,\n isFirstDataColumn: this.isFirstDataColumn,\n isLastColumn: this.isLastColumn,\n order: this.order,\n classList: this.classList,\n showHeaderIcons: this.showHeaderIcons,\n isWidthChanged: this.isWidthChanged,\n displayMode: this.displayMode,\n disableSelection: this.disableSelection,\n alias: this.alias,\n conditionalStyleFormats: this.conditionalStyleFormats\n };\n }\n\n /**\n * Indicates if tooltip needs to be shown or not for the current column cells.\n */\n get showTooltip() {\n return this.#showToolTip && this.cellRenderer !== RICH_TEXT;\n }\n\n /**\n * Sets the showTooltip flag for the current column.\n */\n set showTooltip(showTooltip) {\n this.#showToolTip = showTooltip;\n }\n\n /**\n * Retrieves the distinct values for this column using {@link ApiContext.fetchUniqueColValues fetchUniqueColValues}.\n */\n async getUniqueValues() {\n return (\n this.#rsProps.apiContext.fetchUniqueColValues?.(\n this.parent.state,\n this.parent.meta,\n this.field.id,\n {\n ...(this.#rsStore.refreshInProgress && {\n invalidateCache: true,\n invalidateCacheToken: this.#rsStore.refreshToken\n })\n }\n ) || Promise.resolve([])\n );\n }\n\n /**\n * Returns the formatters available for the current column from\n * {@link RsProps.renderFormatterTypeMap renderFormatterTypeMap} based on its {@link FieldDef.type type}\n */\n getRenderFormatters() {\n const formattersForType = this.parent.renderFormatterTypeMap?.[this.field.type] || [];\n return this.field.formatters ?? formattersForType;\n }\n\n /** Returns the sorting information for the current column. */\n getSortProperties() {\n return {\n sorted: this.sorted,\n sortSequence: this.sortSequence,\n sortOrder: this.sortOrder\n };\n }\n\n /** Returns the filter information for the current column. */\n getFilterProperties(): { filtered: boolean; filterExpression: Condition | undefined } {\n return {\n filtered: this.filtered,\n filterExpression: this.parent.state.filterExpression\n };\n }\n\n /**\n * Retrieves the UI properties for the column, which can be applied to value cells within this column.\n */\n getUIProps() {\n // FIXME: aria-colIndex is NaN sometimes\n return {\n style: { ...this.style },\n 'data-col-id': this.field.id,\n classList: [...this.classList],\n 'aria-colindex': this.order! + 1,\n role: this.field.isRowHeader ? 'rowheader' : 'gridcell'\n };\n }\n\n /**\n * Retrieves the {@link StyleFormat style format} style format applicable to the cell\n * @returns The style format if applicable, otherwise `undefined`.\n *\n */\n getCellStyleFormat(): StyleFormat | undefined {\n return evaluateStyleFormatForCell(this, this.#rsInternal);\n }\n\n /**\n * Retrieves the UI properties for the column, which can be applied to the header cells of this column.\n */\n getHeaderUIProps() {\n return {\n 'data-col-id': this.field.id,\n draggable: this.field.reorderFields,\n role: 'columnheader',\n ...(this.field.reorderFields && this.parent.type.getFieldReorderProps?.())\n };\n }\n\n // TODO: why return search query in column rendering engine props.\n /**\n * Provides essential information for cell rendering, including the column and row.\n * Additionally, it supplies the current search query.\n */\n getRenderingEngineProps(): ColumnRenderingEngineProps {\n return {\n column: this as Column,\n row: this.#pRow,\n searchKeyword: this.parent?.state?.search?.query\n };\n }\n\n /**\n * Sets the current execution context, {@link RowContext}, when rendering a cell for this column.\n * This dynamic context is updated for each cell in the column as it is rendered.\n */\n setExecutionContext(row: Row | null) {\n this.#pRow = row;\n this.#executionContext = row ? row.getContext() : null;\n }\n\n /**\n * Retrieves the current execution context, i.e., {@link RowContext}, when rendering a cell for this column.\n * This context dynamically updates as each cell in the column is rendered.\n */\n getExecutionContext() {\n return this.#executionContext;\n }\n\n /**\n * Returns the current column {@link ColumnContext context}.\n * @param overriddenExecutionContext - optional param to override the execution context with custom {@link RowContext}.\n *\n * @public\n */\n getContext(overriddenExecutionContext?: RowContext | null): ColumnContext {\n return {\n name: 'column',\n getField: () => this.field,\n getValue: () =>\n get((overriddenExecutionContext || this.#executionContext)?.getValue?.(), this.field?.name),\n getExecutionContext: () => overriddenExecutionContext || this.#executionContext,\n getParentContext: () => this.parent.getContext(),\n getFormatter: () => this.formatter,\n formatterAllowed: () => this.formatterAllowed,\n getCellRenderer: () => this.cellRenderer,\n getFormatterValue: () => this.formatterConfig,\n getFormattedValue: () => this.formattedValue,\n getSearchKeyword: () => this.parent?.state?.searchText,\n showTooltip: () => this.showTooltip,\n getToolTipValue: () => {\n const tooltip = this.field?.tooltip;\n if (!tooltip) {\n return this.formattedValue;\n }\n return (overriddenExecutionContext || this.#executionContext)?.getValue?.()?.[tooltip];\n },\n /** Returns the header label */\n getLabel: () => this.categorizedHeaderLabel,\n setProp: (\n prop:\n | Partial<OmitStrict<Column, 'data' | 'isAutoSizable' | 'parent'>>\n | ExcludeStrict<keyof Column, 'data' | 'isAutoSizable' | 'parent'>,\n value?: Column[keyof Column]\n ) => this.setPropMutatively(prop, value),\n getSortProperties: this.getSortProperties,\n getExpression: this.getExpression,\n getFilterProperties: this.getFilterProperties,\n searchKeyword: this.parent?.state?.searchText,\n getTableMeta: () => this.parent.meta,\n getRsMeta: () => this.parent.meta,\n applyGrouping: this.applyGrouping,\n applySorting: this.applySorting,\n applyToggleVisibility: this.applyToggleVisibility,\n applyFreeze: this.applyFreeze,\n applyAggregation: this.applyAggregation,\n applyLabel: this.applyLabel,\n applyFormatter: this.applyFormatter,\n removeFormatter: this.removeFormatter,\n applyMerge: this.applyMerge,\n deleteCustomColumn: this.deleteCustomColumn,\n getRendererType: () => {\n return this.isCustomColumn ? 'customCellRenderer' : 'cellRenderer';\n },\n selectAllRows: this.parent.type.selectAllRows,\n getDisableSelection: () => this.disableSelection\n };\n }\n\n /**\n * Updates property of the column with value. The updated value will be reflected on next re-render.\n * @param prop Either partial of {@link Column} or individual properties of {@link Column}.\n * @param value An optional parameter to provide value for {@link prop} in case prop is not of type {@link ColumnConfig}\n * @returns void\n */\n setPropMutatively(\n prop:\n | Partial<OmitStrict<Column, 'data' | 'isAutoSizable' | 'parent'>>\n | ExcludeStrict<keyof Column, 'data' | 'isAutoSizable' | 'parent'>,\n value?: Column[keyof Column]\n ) {\n if (typeof prop !== 'object' && value) {\n // @ts-expect-error check the index based type error.\n this[prop] = value;\n } else {\n Object.entries(prop).forEach(([k, v]) => {\n // @ts-expect-error Element implicitly has an 'any' type because expression of type 'string' can't be used to index type 'Column'.\n this[k] = v;\n });\n }\n }\n\n // setProp is used to make columns immutables.\n /**\n * Sets a {@link prop property} and its {@link value} in the {@link Column} instance, creating an immutable instance.\n * Always use `setProp` to update properties of {@link Column} to ensure immutability.\n *\n * @param prop Either a partial {@link ColumnConfig} or individual properties of {@link ColumnConfig}.\n * @param value Optional value to set for `prop` if `prop` is not of type {@link ColumnConfig}.\n * @returns void\n */\n\n setProp(\n prop: Partial<ColumnConfig> | keyof ColumnConfig,\n value?: ColumnConfig[keyof ColumnConfig]\n ) {\n const { getView } = this.#rsInternal;\n const index = getView().columns!.findIndex(c => c === this);\n const pObject: Partial<ColumnConfig> = typeof prop !== 'object' ? { [prop]: value } : prop;\n\n // Change object if any value changes actually.\n // @ts-expect-error utils should be converted to TS in order to resolve this.\n if (!compareObjects(this, pObject, Object.keys(pObject)) && index >= 0) {\n const newColumn = new Column(\n {\n ...this.#get(),\n ...(pObject as Partial<ColumnConfig>)\n },\n this.#rsInternal\n );\n\n if ('field' in pObject && pObject.field !== undefined) {\n this.#rsStore.fieldDefsMap.set(newColumn.field.id, newColumn.field);\n }\n\n const cloned = [...getView().columns!];\n cloned.splice(index, 1, newColumn);\n getView().columns = cloned;\n return newColumn;\n }\n return this;\n }\n\n /**\n * Applies grouping to this column.\n *\n * Dispatches an action that modifies the {@link State.groups groups} in the state.\n */\n applyGrouping() {\n this.#dispatch(actions.actionToggleGrouping(this.field));\n }\n\n /**\n * Applies sorting to this column.\n *\n * Dispatches an action that updates the {@link State.sortingOrder sortingOrder} in the state.\n *\n * @param flushState If true, it will reset the existing {@link State.sortingOrder sortingOrder} state for this column.\n * @param sortOrderId The sort order, either 'asc' or 'desc'.\n */\n // eslint-disable-next-line @typescript-eslint/default-param-last\n applySorting(flushState = false, sortOrderId: Sort['order']) {\n this.#dispatch(\n actions.actionColumnSort({\n id: this.field.id,\n flushState,\n sortOrderId\n })\n );\n }\n\n /**\n * Toggles the visibility of a column, allowing it to be shown or hidden.\n *\n * Dispatches an action that updates {@link State.hiddenColumns hiddenColumns} in the state.\n *\n * @param column The column to be toggled.\n */\n\n applyToggleVisibility() {\n this.#dispatch(actions.actionColumnToggle([this.field.id]));\n }\n\n /**\n * Toggles the \"freeze\" effect on a column, locking it to the left while the rest of the content scrolls.\n * This helps keep key columns visible in large datasets.\n *\n * Dispatches an action that updates {@link State.freezeColumns freezeColumns} in the state.\n */\n applyFreeze() {\n this.#dispatch(actions.actionColumnPin([this.field.id]));\n }\n\n /**\n * Toggles the \"freeze\" effect on a column, locking it at given index while the rest of the columns\n * continues to scroll. This can be used to keep key columns visible in large datasets.\n * The freeze order of the given column is defined by {@link index} passed.\n *\n * Dispatches an action that modifies {@link State.freezeColumns freezeColumns} in the state.\n * @param index\n */\n applyFreezeAtIndex(index: number) {\n this.#dispatch(actions.actionColumnPinAtIndex(this.field.id, index));\n }\n\n /** Applies aggregation to the column, summarizing the data based on a specified {@link type aggregationType}.\n *\n * Dispatches an action that modifies {@link State.aggregationInfo aggregation} in the state.\n */\n applyAggregation(type: AggregationType) {\n this.#dispatch(\n actions.actionUpdateAggregation({\n columnId: this.field.id,\n type\n })\n );\n }\n\n /** Applies label to the current column.\n *\n * Dispatches an action that updates {@link State.columnAlias columnAlias} in the state.\n */\n applyLabel(label: NonNullable<Column['label']>) {\n this.#dispatch(\n actions.actionChangeLabel({\n columnId: this.field.id,\n label\n })\n );\n }\n\n /** Applies formatter to the current column.\n *\n * Dispatches an action that updates {@link State.renderFormatter renderFormatter} in the state.\n * @param name - Formatter name.\n */\n applyFormatter(config: NonNullable<Column['formatterConfig']>) {\n this.#dispatch(\n actions.actionUpdateRenderFormatter({\n columnId: this.field.id,\n formatter: config\n })\n );\n }\n\n /** Removes formatter of the current column.\n *\n * Dispatches an action that updates {@link State.renderFormatter renderFormatter} in the state.\n */\n removeFormatter() {\n this.#dispatch(\n actions.actionRemoveRenderFormatter({\n columnId: this.field.id\n })\n );\n }\n\n /**\n * Applies {@link mode displayMode} to hierarchical column.\n *\n * Dispatches an action that modifies {@link State.hierarchicalGroup hierarchicalGroups},\n * {@link State.groupToggle groupToggle}, {@link State.groups groups} in the state.\n * @param mode\n */\n applyDisplay(mode: string) {\n const { hierarchicalInfo } = this.field;\n this.#rsStore.groupingInfo = [] as NonNullable<RsStore['groupingInfo']>;\n this.#dispatch(\n actions.actionUpdateDisplayMode({\n parentId: hierarchicalInfo!.parentId,\n materializedPathId: hierarchicalInfo!.materializedPathId,\n targetId: hierarchicalInfo!.targetId,\n columnId: this.field.id,\n sortById: hierarchicalInfo!.sortById || hierarchicalInfo!.targetId,\n mode\n })\n );\n }\n\n /**\n * Applies merge operation(combine columns) to 2 columns based on selected template.\n *\n * Dispatches an action that modifies {@link State.customFields customFields} in the state.\n * @param mergeWith On which column the merge operation to be performed(left/right)\n * @param title label for the new custom column.\n * @param templateName The template which should be used to merge the columns\n * @param bHideColumns Hide the existing columns.\n */\n applyMerge(\n mergeWith: 'left' | 'right',\n title: string,\n templateName: NonNullable<Meta['dynamicFieldTemplates']>[number]['value'],\n bHideColumns: boolean\n ) {\n const step = mergeWith === 'left' ? -1 : 1;\n const targetId = this.parent.columns!.find(c => c.order === this.order! + step)!.field.id;\n this.#dispatch(\n actions.actionMergeColumns({\n sourceId: this.field.id,\n targetId,\n title,\n templateName,\n bHideColumns,\n uniqueID: String(+new Date())\n })\n );\n }\n\n /**\n * Deletes the custom column.\n *\n * Dispatches an action that modifies {@link State.customFields customFields} in the state by removing this column from it.\n */\n deleteCustomColumn() {\n this.#dispatch(\n actions.actionDeleteCustomColumn({\n columnId: this.field.id\n })\n );\n }\n\n /**\n * Updates column's width based on the autosize logic.\n *\n * Dispatches an action that modifies the {@link State.columnWidths columnWidths} in the state.\n */\n\n applyColumnAutoSize() {\n this.#dispatch(actions.actionColumnAutoSize(this, this.parent.getDomContainer()!));\n }\n\n /**\n * Determines if autosize is enabled for this column.\n */\n get isAutoSizable() {\n return this.field.autosize && !this.hidden && this.cellRenderer !== RICH_TEXT;\n }\n\n /**\n * Determines whether hierarchical mode should be enabled for this column.\n */\n renderDisplayMode() {\n const { meta } = this.parent;\n const { hierarchicalInfo } = this.field;\n\n return hierarchicalInfo?.materializedPathId && meta.grouping && !meta.editing;\n }\n\n /**\n * Retrieves the personalized width of the column, sourced from either\n * {@link RsProps.persistedInfo persistedInfo} or the current\n * {@link State.personalization personalized state}.\n *\n * @returns The personalized width of the column.\n */\n\n getPersonalizedWidth() {\n let columnWidths: State['columnWidths'] = {};\n if (this.#rsProps.persistedInfo) {\n columnWidths = this.#rsProps.persistedInfo.columnWidths;\n } else {\n const { active, allPersonalizations } = this.parent.state?.personalization ?? {};\n columnWidths = allPersonalizations?.[active!]?.personalizationState?.columnWidths;\n }\n return columnWidths?.[this.field.id];\n }\n}\n"]}
@@ -7,7 +7,7 @@ import type { RowContext, RowData } from './RowGenerator.types';
7
7
  import type { FormatterFunction, ViewContext } from './ViewGenerator.types';
8
8
  import type Row from './RowGenerator';
9
9
  export declare const DATA_KEY = "data-key";
10
- export type ColumnConfig = Partial<Pick<Column, 'style' | 'grouped' | 'frozen' | 'lastFrozen' | 'aggregated' | 'aggregateValue' | 'aggregationType' | 'currentWidth' | 'formatterAllowed' | 'formatterName' | 'formatter' | 'cellRenderer' | 'hidden' | 'label' | 'categorizedHeaderLabel' | 'filtered' | 'sorted' | 'sortSequence' | 'sortOrder' | 'isFirstVisualColumn' | 'isFirstDataColumn' | 'isLastColumn' | 'isCustomColumn' | 'editMode' | 'order' | 'classList' | 'showHeaderIcons' | 'isWidthChanged' | 'displayMode' | 'disableSelection' | 'alias' | 'refresh' | 'conditionalStyleFormats'>> & {
10
+ export type ColumnConfig = Partial<Pick<Column, 'style' | 'grouped' | 'frozen' | 'lastFrozen' | 'aggregated' | 'aggregateValue' | 'aggregationType' | 'currentWidth' | 'formatterAllowed' | 'formatterConfig' | 'formatter' | 'cellRenderer' | 'hidden' | 'label' | 'categorizedHeaderLabel' | 'filtered' | 'sorted' | 'sortSequence' | 'sortOrder' | 'isFirstVisualColumn' | 'isFirstDataColumn' | 'isLastColumn' | 'isCustomColumn' | 'order' | 'classList' | 'showHeaderIcons' | 'isWidthChanged' | 'displayMode' | 'disableSelection' | 'alias' | 'refresh' | 'conditionalStyleFormats' | 'field'>> & {
11
11
  field: FieldDef;
12
12
  showTooltip?: boolean;
13
13
  };
@@ -57,9 +57,14 @@ export interface ColumnContext {
57
57
  /** Returns the cell renderer name. */
58
58
  getCellRenderer: () => string | undefined;
59
59
  /** Returns the formatter name. */
60
- getFormatterName: () => string | undefined;
60
+ getFormatterValue: () => string | {
61
+ type: string;
62
+ config: unknown;
63
+ } | undefined;
61
64
  /** Returns the formatted value. */
62
65
  getFormattedValue: () => string | null;
66
+ /** Returns the header label */
67
+ getLabel: () => string | undefined;
63
68
  /** Returns the search text. */
64
69
  getSearchKeyword: () => string | undefined;
65
70
  searchKeyword: string | undefined;
@@ -115,24 +120,22 @@ export interface ColumnContext {
115
120
  /** Applies formatter to the current column.
116
121
  * Check {@link applyFormatter} for more details.
117
122
  */
118
- applyFormatter: (name: string) => void;
123
+ applyFormatter: (config: string | {
124
+ type: string;
125
+ config: unknown;
126
+ }) => void;
127
+ /** Removes formatter of the current column.
128
+ * Check {@link removeFormatter} for more details.
129
+ */
130
+ removeFormatter: () => void;
119
131
  /** Applies merge operation to 2 columns based on selected expression.
120
132
  * Check {@link applyMerge} for more details.
121
133
  */
122
134
  applyMerge: (mergeWith: 'left' | 'right', title: string, templateName: string, bHideColumns: boolean) => void;
123
135
  /** Deletes the {@link isCustomColumnustom column}. Check {@link deleteCustomColumn} for more details. */
124
136
  deleteCustomColumn: () => void;
125
- /** Sets the edit context for the column. Refer {@link setEditContext} for more details. */
126
- setEditContext: () => void;
127
137
  /** Returns the current renderer type. */
128
- getRendererType: () => 'cellRenderer' | 'cellEditRenderer' | 'customCellRenderer';
129
- /** Submits the edited cell value. */
130
- onSubmit: (editContext?: {
131
- oldValue: string | number | boolean | Date;
132
- newValue: string | number | boolean | Date;
133
- }) => void;
134
- /** Cancels the edit mode of the cell. */
135
- onCancel: () => void;
138
+ getRendererType: () => 'cellRenderer' | 'customCellRenderer';
136
139
  /** Select all rows of the repeating structures. */
137
140
  selectAllRows: (isSelected: boolean) => Promise<void>;
138
141
  /** Indicates if the selection is disabled for this column. Refer {@link disableSelection} for more details. */
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnGenerator.types.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ColumnGenerator.types.d.ts","sourceRoot":"","sources":["../../../../src/core/generators/ColumnGenerator.types.ts"],"names":[],"mappings":"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"}