primereact 10.9.4 → 10.9.6

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 (237) hide show
  1. package/api/api.cjs.js +9 -1
  2. package/api/api.cjs.min.js +1 -1
  3. package/api/api.d.ts +5 -3
  4. package/api/api.esm.js +9 -1
  5. package/api/api.esm.min.js +1 -1
  6. package/api/api.js +9 -1
  7. package/api/api.min.js +1 -1
  8. package/autocomplete/autocomplete.cjs.js +13 -1
  9. package/autocomplete/autocomplete.cjs.min.js +1 -1
  10. package/autocomplete/autocomplete.d.ts +5 -5
  11. package/autocomplete/autocomplete.esm.js +14 -2
  12. package/autocomplete/autocomplete.esm.min.js +1 -1
  13. package/autocomplete/autocomplete.js +13 -1
  14. package/autocomplete/autocomplete.min.js +1 -1
  15. package/breadcrumb/breadcrumb.cjs.js +2 -1
  16. package/breadcrumb/breadcrumb.cjs.min.js +1 -1
  17. package/breadcrumb/breadcrumb.esm.js +2 -1
  18. package/breadcrumb/breadcrumb.esm.min.js +1 -1
  19. package/breadcrumb/breadcrumb.js +2 -1
  20. package/breadcrumb/breadcrumb.min.js +1 -1
  21. package/calendar/calendar.cjs.js +37 -7
  22. package/calendar/calendar.cjs.min.js +1 -1
  23. package/calendar/calendar.esm.js +38 -8
  24. package/calendar/calendar.esm.min.js +1 -1
  25. package/calendar/calendar.js +37 -7
  26. package/calendar/calendar.min.js +1 -1
  27. package/cascadeselect/cascadeselect.cjs.js +62 -5
  28. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  29. package/cascadeselect/cascadeselect.d.ts +22 -0
  30. package/cascadeselect/cascadeselect.esm.js +63 -6
  31. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  32. package/cascadeselect/cascadeselect.js +63 -7
  33. package/cascadeselect/cascadeselect.min.js +1 -1
  34. package/checkbox/checkbox.cjs.js +1 -1
  35. package/checkbox/checkbox.cjs.min.js +1 -1
  36. package/checkbox/checkbox.esm.js +1 -1
  37. package/checkbox/checkbox.esm.min.js +1 -1
  38. package/checkbox/checkbox.js +1 -1
  39. package/checkbox/checkbox.min.js +1 -1
  40. package/chip/chip.cjs.js +15 -2
  41. package/chip/chip.cjs.min.js +1 -1
  42. package/chip/chip.esm.js +17 -4
  43. package/chip/chip.esm.min.js +1 -1
  44. package/chip/chip.js +15 -2
  45. package/chip/chip.min.js +1 -1
  46. package/chips/chips.cjs.js +1 -1
  47. package/chips/chips.cjs.min.js +1 -1
  48. package/chips/chips.esm.js +1 -1
  49. package/chips/chips.esm.min.js +1 -1
  50. package/chips/chips.js +1 -1
  51. package/chips/chips.min.js +1 -1
  52. package/colorpicker/colorpicker.cjs.js +9 -2
  53. package/colorpicker/colorpicker.cjs.min.js +1 -1
  54. package/colorpicker/colorpicker.esm.js +9 -2
  55. package/colorpicker/colorpicker.esm.min.js +1 -1
  56. package/colorpicker/colorpicker.js +9 -2
  57. package/colorpicker/colorpicker.min.js +1 -1
  58. package/confirmpopup/confirmpopup.cjs.js +10 -2
  59. package/confirmpopup/confirmpopup.cjs.min.js +1 -1
  60. package/confirmpopup/confirmpopup.esm.js +10 -2
  61. package/confirmpopup/confirmpopup.esm.min.js +1 -1
  62. package/confirmpopup/confirmpopup.js +10 -2
  63. package/confirmpopup/confirmpopup.min.js +1 -1
  64. package/core/core.js +214 -38
  65. package/core/core.min.js +9 -9
  66. package/datatable/datatable.cjs.js +359 -291
  67. package/datatable/datatable.cjs.min.js +1 -1
  68. package/datatable/datatable.d.ts +79 -3
  69. package/datatable/datatable.esm.js +360 -292
  70. package/datatable/datatable.esm.min.js +1 -1
  71. package/datatable/datatable.js +359 -291
  72. package/datatable/datatable.min.js +1 -1
  73. package/dialog/dialog.cjs.js +3 -2
  74. package/dialog/dialog.cjs.min.js +1 -1
  75. package/dialog/dialog.d.ts +6 -1
  76. package/dialog/dialog.esm.js +3 -2
  77. package/dialog/dialog.esm.min.js +1 -1
  78. package/dialog/dialog.js +3 -2
  79. package/dialog/dialog.min.js +1 -1
  80. package/dropdown/dropdown.cjs.js +26 -5
  81. package/dropdown/dropdown.cjs.min.js +1 -1
  82. package/dropdown/dropdown.d.ts +4 -0
  83. package/dropdown/dropdown.esm.js +26 -5
  84. package/dropdown/dropdown.esm.min.js +1 -1
  85. package/dropdown/dropdown.js +26 -5
  86. package/dropdown/dropdown.min.js +1 -1
  87. package/fileupload/fileupload.cjs.js +4 -2
  88. package/fileupload/fileupload.cjs.min.js +1 -1
  89. package/fileupload/fileupload.esm.js +4 -2
  90. package/fileupload/fileupload.esm.min.js +1 -1
  91. package/fileupload/fileupload.js +4 -2
  92. package/fileupload/fileupload.min.js +1 -1
  93. package/galleria/galleria.cjs.js +1 -0
  94. package/galleria/galleria.cjs.min.js +1 -1
  95. package/galleria/galleria.esm.js +1 -0
  96. package/galleria/galleria.esm.min.js +1 -1
  97. package/galleria/galleria.js +1 -0
  98. package/galleria/galleria.min.js +1 -1
  99. package/hooks/hooks.cjs.js +16 -6
  100. package/hooks/hooks.cjs.min.js +1 -1
  101. package/hooks/hooks.esm.js +16 -6
  102. package/hooks/hooks.esm.min.js +1 -1
  103. package/hooks/hooks.js +16 -6
  104. package/hooks/hooks.min.js +1 -1
  105. package/inputmask/inputmask.cjs.js +1 -1
  106. package/inputmask/inputmask.cjs.min.js +1 -1
  107. package/inputmask/inputmask.esm.js +1 -1
  108. package/inputmask/inputmask.esm.min.js +1 -1
  109. package/inputmask/inputmask.js +1 -1
  110. package/inputmask/inputmask.min.js +1 -1
  111. package/inputnumber/inputnumber.cjs.js +11 -3
  112. package/inputnumber/inputnumber.cjs.min.js +1 -1
  113. package/inputnumber/inputnumber.esm.js +11 -3
  114. package/inputnumber/inputnumber.esm.min.js +1 -1
  115. package/inputnumber/inputnumber.js +11 -3
  116. package/inputnumber/inputnumber.min.js +1 -1
  117. package/inputotp/inputotp.cjs.js +1 -0
  118. package/inputotp/inputotp.cjs.min.js +1 -1
  119. package/inputotp/inputotp.esm.js +1 -0
  120. package/inputotp/inputotp.esm.min.js +1 -1
  121. package/inputotp/inputotp.js +1 -0
  122. package/inputotp/inputotp.min.js +1 -1
  123. package/listbox/listbox.d.ts +4 -4
  124. package/mention/mention.cjs.js +18 -9
  125. package/mention/mention.cjs.min.js +1 -1
  126. package/mention/mention.d.ts +5 -0
  127. package/mention/mention.esm.js +18 -9
  128. package/mention/mention.esm.min.js +1 -1
  129. package/mention/mention.js +18 -9
  130. package/mention/mention.min.js +1 -1
  131. package/menu/menu.cjs.js +14 -3
  132. package/menu/menu.cjs.min.js +1 -1
  133. package/menu/menu.esm.js +15 -4
  134. package/menu/menu.esm.min.js +1 -1
  135. package/menu/menu.js +14 -3
  136. package/menu/menu.min.js +1 -1
  137. package/menubar/menubar.cjs.js +6 -9
  138. package/menubar/menubar.cjs.min.js +1 -1
  139. package/menubar/menubar.esm.js +6 -9
  140. package/menubar/menubar.esm.min.js +1 -1
  141. package/menubar/menubar.js +6 -9
  142. package/menubar/menubar.min.js +1 -1
  143. package/multiselect/multiselect.cjs.js +68 -18
  144. package/multiselect/multiselect.cjs.min.js +1 -1
  145. package/multiselect/multiselect.esm.js +68 -18
  146. package/multiselect/multiselect.esm.min.js +1 -1
  147. package/multiselect/multiselect.js +68 -18
  148. package/multiselect/multiselect.min.js +1 -1
  149. package/multistatecheckbox/multistatecheckbox.cjs.js +17 -9
  150. package/multistatecheckbox/multistatecheckbox.cjs.min.js +1 -1
  151. package/multistatecheckbox/multistatecheckbox.esm.js +17 -9
  152. package/multistatecheckbox/multistatecheckbox.esm.min.js +1 -1
  153. package/multistatecheckbox/multistatecheckbox.js +17 -9
  154. package/multistatecheckbox/multistatecheckbox.min.js +1 -1
  155. package/orderlist/orderlist.cjs.js +34 -3
  156. package/orderlist/orderlist.cjs.min.js +1 -1
  157. package/orderlist/orderlist.esm.js +34 -3
  158. package/orderlist/orderlist.esm.min.js +1 -1
  159. package/orderlist/orderlist.js +34 -3
  160. package/orderlist/orderlist.min.js +1 -1
  161. package/overlaypanel/overlaypanel.cjs.js +9 -10
  162. package/overlaypanel/overlaypanel.cjs.min.js +1 -1
  163. package/overlaypanel/overlaypanel.esm.js +9 -10
  164. package/overlaypanel/overlaypanel.esm.min.js +1 -1
  165. package/overlaypanel/overlaypanel.js +9 -10
  166. package/overlaypanel/overlaypanel.min.js +1 -1
  167. package/package.json +1 -1
  168. package/paginator/paginator.cjs.js +9 -1
  169. package/paginator/paginator.cjs.min.js +1 -1
  170. package/paginator/paginator.esm.js +9 -1
  171. package/paginator/paginator.esm.min.js +1 -1
  172. package/paginator/paginator.js +9 -1
  173. package/paginator/paginator.min.js +1 -1
  174. package/password/password.cjs.js +9 -2
  175. package/password/password.cjs.min.js +1 -1
  176. package/password/password.esm.js +10 -3
  177. package/password/password.esm.min.js +1 -1
  178. package/password/password.js +9 -2
  179. package/password/password.min.js +1 -1
  180. package/picklist/picklist.cjs.js +9 -1
  181. package/picklist/picklist.cjs.min.js +1 -1
  182. package/picklist/picklist.esm.js +9 -1
  183. package/picklist/picklist.esm.min.js +1 -1
  184. package/picklist/picklist.js +9 -1
  185. package/picklist/picklist.min.js +1 -1
  186. package/primereact.all.cjs.js +931 -442
  187. package/primereact.all.cjs.min.js +1 -1
  188. package/primereact.all.esm.js +932 -443
  189. package/primereact.all.esm.min.js +1 -1
  190. package/primereact.all.js +931 -442
  191. package/primereact.all.min.js +1 -1
  192. package/radiobutton/radiobutton.cjs.js +2 -2
  193. package/radiobutton/radiobutton.cjs.min.js +1 -1
  194. package/radiobutton/radiobutton.d.ts +1 -1
  195. package/radiobutton/radiobutton.esm.js +2 -2
  196. package/radiobutton/radiobutton.esm.min.js +1 -1
  197. package/radiobutton/radiobutton.js +2 -2
  198. package/radiobutton/radiobutton.min.js +1 -1
  199. package/slidemenu/slidemenu.cjs.js +9 -2
  200. package/slidemenu/slidemenu.cjs.min.js +1 -1
  201. package/slidemenu/slidemenu.esm.js +10 -3
  202. package/slidemenu/slidemenu.esm.min.js +1 -1
  203. package/slidemenu/slidemenu.js +9 -2
  204. package/slidemenu/slidemenu.min.js +1 -1
  205. package/tree/tree.cjs.js +1 -1
  206. package/tree/tree.cjs.min.js +1 -1
  207. package/tree/tree.esm.js +1 -1
  208. package/tree/tree.esm.min.js +1 -1
  209. package/tree/tree.js +1 -1
  210. package/tree/tree.min.js +1 -1
  211. package/treeselect/treeselect.cjs.js +19 -8
  212. package/treeselect/treeselect.cjs.min.js +1 -1
  213. package/treeselect/treeselect.d.ts +33 -0
  214. package/treeselect/treeselect.esm.js +19 -8
  215. package/treeselect/treeselect.esm.min.js +1 -1
  216. package/treeselect/treeselect.js +19 -8
  217. package/treeselect/treeselect.min.js +1 -1
  218. package/treetable/treetable.cjs.js +1 -1
  219. package/treetable/treetable.cjs.min.js +1 -1
  220. package/treetable/treetable.esm.js +1 -1
  221. package/treetable/treetable.esm.min.js +1 -1
  222. package/treetable/treetable.js +1 -1
  223. package/treetable/treetable.min.js +1 -1
  224. package/tristatecheckbox/tristatecheckbox.cjs.js +7 -6
  225. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  226. package/tristatecheckbox/tristatecheckbox.esm.js +7 -6
  227. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  228. package/tristatecheckbox/tristatecheckbox.js +7 -6
  229. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  230. package/utils/utils.cjs.js +138 -18
  231. package/utils/utils.cjs.min.js +1 -1
  232. package/utils/utils.d.ts +5 -1
  233. package/utils/utils.esm.js +138 -18
  234. package/utils/utils.esm.min.js +1 -1
  235. package/utils/utils.js +138 -18
  236. package/utils/utils.min.js +1 -1
  237. package/web-types.json +105 -11
@@ -740,7 +740,7 @@ var Checkbox = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace.
740
740
  return props.checked === props.trueValue;
741
741
  };
742
742
  var _onChange = function onChange(event) {
743
- if (props.disabled || props.readonly) {
743
+ if (props.disabled || props.readOnly) {
744
744
  return;
745
745
  }
746
746
  if (props.onChange) {
@@ -999,7 +999,7 @@ var RadioButton = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespa
999
999
  onChange(event);
1000
1000
  };
1001
1001
  var onChange = function onChange(event) {
1002
- if (props.disabled || props.readonly) {
1002
+ if (props.disabled || props.readOnly) {
1003
1003
  return;
1004
1004
  }
1005
1005
  if (props.onChange) {
@@ -1102,7 +1102,7 @@ var RadioButton = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespa
1102
1102
  onBlur: onBlur,
1103
1103
  onChange: onChange,
1104
1104
  disabled: props.disabled,
1105
- readOnly: props.readonly,
1105
+ readOnly: props.readOnly,
1106
1106
  required: props.required,
1107
1107
  tabIndex: props.tabIndex,
1108
1108
  className: cx('input')
@@ -1175,7 +1175,7 @@ RowRadioButton.displayName = 'RowRadioButton';
1175
1175
 
1176
1176
  function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1177
1177
  function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1178
- var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1178
+ var Cell = function Cell(props) {
1179
1179
  var mergeProps = hooks.useMergeProps();
1180
1180
  var _React$useState = React__namespace.useState(props.editing),
1181
1181
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -1203,13 +1203,9 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1203
1203
  var getColumnProp = function getColumnProp(name) {
1204
1204
  return ColumnBase.getCProp(props.column, name);
1205
1205
  };
1206
- var getColumnProps = function getColumnProps() {
1207
- return ColumnBase.getCProps(props.column);
1208
- };
1209
1206
  var getColumnPTOptions = function getColumnPTOptions(key) {
1210
- var cProps = getColumnProps();
1211
1207
  var columnMetaData = {
1212
- props: cProps,
1208
+ props: props.cProps,
1213
1209
  parent: props.metaData,
1214
1210
  hostName: props.hostName,
1215
1211
  state: {
@@ -1225,10 +1221,8 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1225
1221
  };
1226
1222
  return mergeProps(ptm("column.".concat(key), {
1227
1223
  column: columnMetaData
1228
- }), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
1224
+ }), ptm("column.".concat(key), columnMetaData), ptmo(props.cProps, key, columnMetaData));
1229
1225
  };
1230
- var field = getColumnProp('field') || "field_".concat(props.index);
1231
- var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
1232
1226
  var isEditable = function isEditable() {
1233
1227
  return utils.ObjectUtils.isNotEmpty(props.editMode) && getColumnProp('editor');
1234
1228
  };
@@ -1253,34 +1247,22 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1253
1247
  _useEventListener2 = _slicedToArray(_useEventListener, 2),
1254
1248
  bindDocumentClickListener = _useEventListener2[0],
1255
1249
  unbindDocumentClickListener = _useEventListener2[1];
1256
- var isSelected = function isSelected() {
1257
- return props.selection ? props.selection instanceof Array ? findIndex(props.selection) > -1 : equals(props.selection) : false;
1258
- };
1259
- var equalsData = function equalsData(data) {
1260
- return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
1261
- };
1262
- var equals = function equals(selectedCell) {
1263
- return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsData(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === props.index);
1264
- };
1265
1250
  var isOutsideClicked = function isOutsideClicked(target) {
1266
1251
  return elementRef.current && !(elementRef.current.isSameNode(target) || elementRef.current.contains(target));
1267
1252
  };
1268
- var getVirtualScrollerOption = function getVirtualScrollerOption(option) {
1269
- return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
1270
- };
1271
1253
  var getStyle = function getStyle() {
1272
1254
  var bodyStyle = getColumnProp('bodyStyle');
1273
1255
  var columnStyle = getColumnProp('style');
1274
- return getColumnProp('frozen') ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1256
+ return props.frozenCol ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1275
1257
  };
1276
1258
  var getCellParams = function getCellParams() {
1277
1259
  return {
1278
- value: resolveFieldData(),
1279
- field: field,
1260
+ value: props.resolveFieldData(),
1261
+ field: props.field,
1280
1262
  rowData: props.rowData,
1281
1263
  rowIndex: props.rowIndex,
1282
1264
  cellIndex: props.index,
1283
- selected: isSelected(),
1265
+ selected: props.isCellSelected,
1284
1266
  column: props.column,
1285
1267
  props: props
1286
1268
  };
@@ -1291,20 +1273,6 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1291
1273
  originalEvent: event
1292
1274
  }, params);
1293
1275
  };
1294
- var resolveFieldData = function resolveFieldData(data) {
1295
- return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
1296
- };
1297
- var getEditingRowData = function getEditingRowData() {
1298
- return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
1299
- };
1300
- var getTabIndex = function getTabIndex(cellSelected) {
1301
- return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && props.index === 0 ? props.tabIndex : -1 : null;
1302
- };
1303
- var findIndex = function findIndex(collection) {
1304
- return (collection || []).findIndex(function (data) {
1305
- return equals(data);
1306
- });
1307
- };
1308
1276
  var closeCell = function closeCell(event) {
1309
1277
  var params = getCellCallbackParams(event);
1310
1278
  var onBeforeCellEditHide = getColumnProp('onBeforeCellEditHide');
@@ -1325,7 +1293,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1325
1293
  var switchCellToViewMode = function switchCellToViewMode(event, submit) {
1326
1294
  var callbackParams = getCellCallbackParams(event);
1327
1295
  var newRowData = _objectSpread$b({}, editingRowDataStateRef.current);
1328
- var newValue = resolveFieldData(newRowData);
1296
+ var newValue = props.resolveFieldData(newRowData);
1329
1297
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1330
1298
  newRowData: newRowData,
1331
1299
  newValue: newValue
@@ -1350,128 +1318,20 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1350
1318
  }
1351
1319
  setEditingRowDataState(newRowData);
1352
1320
  };
1353
- var _findNextSelectableCell = function findNextSelectableCell(cell) {
1354
- var nextCell = cell.nextElementSibling;
1355
- return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : _findNextSelectableCell(nextCell) : null;
1356
- };
1357
- var _findPrevSelectableCell = function findPrevSelectableCell(cell) {
1358
- var prevCell = cell.previousElementSibling;
1359
- return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : _findPrevSelectableCell(prevCell) : null;
1360
- };
1361
- var _findDownSelectableCell = function findDownSelectableCell(cell) {
1362
- var downRow = cell.parentElement.nextElementSibling;
1363
- var downCell = downRow ? downRow.children[props.index] : null;
1364
- return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : _findDownSelectableCell(downCell) : null;
1365
- };
1366
- var _findUpSelectableCell = function findUpSelectableCell(cell) {
1367
- var upRow = cell.parentElement.previousElementSibling;
1368
- var upCell = upRow ? upRow.children[props.index] : null;
1369
- return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : _findUpSelectableCell(upCell) : null;
1370
- };
1371
- var changeTabIndex = function changeTabIndex(currentCell, nextCell) {
1372
- if (currentCell && nextCell) {
1373
- currentCell.tabIndex = -1;
1374
- nextCell.tabIndex = props.tabIndex;
1375
- }
1376
- };
1377
- var focusOnElement = function focusOnElement() {
1378
- clearTimeout(focusTimeout.current);
1379
- focusTimeout.current = setTimeout(function () {
1380
- if (editingState) {
1381
- var focusableEl = props.editMode === 'cell' ? utils.DomHandler.getFirstFocusableElement(elementRef.current, ':not([data-pc-section="editorkeyhelperlabel"])') : utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-save="true"]');
1382
- focusableEl && focusableEl.focus();
1383
- }
1384
- keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
1385
- }, 1);
1386
- };
1387
- var focusOnInit = function focusOnInit() {
1388
- clearTimeout(initFocusTimeout.current);
1389
- initFocusTimeout.current = setTimeout(function () {
1390
- var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
1391
- focusableEl && focusableEl.focus();
1392
- }, 1);
1393
- };
1394
- var updateStickyPosition = function updateStickyPosition() {
1395
- if (getColumnProp('frozen')) {
1396
- var styleObject = _objectSpread$b({}, styleObjectState);
1397
- var align = getColumnProp('alignFrozen');
1398
- if (align === 'right') {
1399
- var right = 0;
1400
- var next = elementRef.current && elementRef.current.nextElementSibling;
1401
- if (next && next.classList.contains('p-frozen-column')) {
1402
- right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
1403
- }
1404
- styleObject.right = right + 'px';
1405
- } else {
1406
- var left = 0;
1407
- var prev = elementRef.current && elementRef.current.previousElementSibling;
1408
- if (prev && prev.classList.contains('p-frozen-column')) {
1409
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
1410
- }
1411
- styleObject.left = left + 'px';
1412
- }
1413
- var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
1414
- !isSameStyle && setStyleObjectState(styleObject);
1415
- }
1416
- };
1417
1321
  var editorCallback = function editorCallback(val) {
1418
1322
  var editingRowData = _objectSpread$b({}, editingRowDataState);
1419
- utils.ObjectUtils.mutateFieldData(editingRowData, field, val);
1323
+ utils.ObjectUtils.mutateFieldData(editingRowData, props.field, val);
1420
1324
  setEditingRowDataState(editingRowData);
1421
1325
 
1422
1326
  // update editing meta for complete methods on row mode
1423
- var currentData = getEditingRowData();
1327
+ var currentData = props.getEditingRowData();
1424
1328
  if (currentData) {
1425
- utils.ObjectUtils.mutateFieldData(currentData, field, val);
1329
+ utils.ObjectUtils.mutateFieldData(currentData, props.field, val);
1426
1330
  }
1427
1331
  editingRowDataStateRef.current = editingRowData;
1428
1332
  };
1429
1333
  var _onClick = function onClick(event) {
1430
- var params = getCellCallbackParams(event);
1431
- if (props.editMode !== 'row' && isEditable() && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.selected)) {
1432
- selfClick.current = true;
1433
- var onBeforeCellEditShow = getColumnProp('onBeforeCellEditShow');
1434
- var onCellEditInit = getColumnProp('onCellEditInit');
1435
- var cellEditValidatorEvent = getColumnProp('cellEditValidatorEvent');
1436
- if (onBeforeCellEditShow) {
1437
- // if user returns false do not show the editor
1438
- if (onBeforeCellEditShow(params) === false) {
1439
- return;
1440
- }
1441
-
1442
- // if user prevents default stop the editor
1443
- if (event && event.defaultPrevented) {
1444
- return;
1445
- }
1446
- }
1447
-
1448
- // If the data is sorted using sort icon, it has been added to wait for the sort operation when any cell is wanted to be opened.
1449
- setTimeout(function () {
1450
- setEditingState(true);
1451
- if (onCellEditInit) {
1452
- if (onCellEditInit(params) === false) {
1453
- return;
1454
- }
1455
-
1456
- // if user prevents default stop the editor
1457
- if (event && event.defaultPrevented) {
1458
- return;
1459
- }
1460
- }
1461
- if (cellEditValidatorEvent === 'click') {
1462
- bindDocumentClickListener();
1463
- overlayEventListener.current = function (e) {
1464
- if (!isOutsideClicked(e.target)) {
1465
- selfClick.current = true;
1466
- }
1467
- };
1468
- overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
1469
- }
1470
- }, 1);
1471
- }
1472
- if (props.allowCellSelection && props.onClick) {
1473
- props.onClick(params);
1474
- }
1334
+ props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, selfClick, props.column, bindDocumentClickListener, overlayEventListener, isOutsideClicked);
1475
1335
  };
1476
1336
  var _onMouseDown = function onMouseDown(event) {
1477
1337
  var params = getCellCallbackParams(event);
@@ -1495,7 +1355,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1495
1355
  cell = event.currentTarget;
1496
1356
  switch (event.code) {
1497
1357
  case 'ArrowLeft':
1498
- var prevCell = _findPrevSelectableCell(cell);
1358
+ var prevCell = props.findPrevSelectableCell(cell);
1499
1359
  if (prevCell) {
1500
1360
  changeTabIndex(cell, prevCell);
1501
1361
  prevCell.focus();
@@ -1503,7 +1363,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1503
1363
  event.preventDefault();
1504
1364
  break;
1505
1365
  case 'ArrowRight':
1506
- var nextCell = _findNextSelectableCell(cell);
1366
+ var nextCell = props.findNextSelectableCell(cell);
1507
1367
  if (nextCell) {
1508
1368
  changeTabIndex(cell, nextCell);
1509
1369
  nextCell.focus();
@@ -1511,7 +1371,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1511
1371
  event.preventDefault();
1512
1372
  break;
1513
1373
  case 'ArrowUp':
1514
- var upCell = _findUpSelectableCell(cell);
1374
+ var upCell = props.findUpSelectableCell(cell, index);
1515
1375
  if (upCell) {
1516
1376
  changeTabIndex(cell, upCell);
1517
1377
  upCell.focus();
@@ -1519,7 +1379,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1519
1379
  event.preventDefault();
1520
1380
  break;
1521
1381
  case 'ArrowDown':
1522
- var downCell = _findDownSelectableCell(cell);
1382
+ var downCell = props.findDownSelectableCell(cell, index);
1523
1383
  if (downCell) {
1524
1384
  changeTabIndex(cell, downCell);
1525
1385
  downCell.focus();
@@ -1558,13 +1418,6 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1558
1418
  index: props.rowIndex
1559
1419
  });
1560
1420
  };
1561
- var onCheckboxChange = function onCheckboxChange(event) {
1562
- props.onCheckboxChange({
1563
- originalEvent: event,
1564
- data: props.rowData,
1565
- index: props.rowIndex
1566
- });
1567
- };
1568
1421
  var onRowToggle = function onRowToggle(event) {
1569
1422
  props.onRowToggle({
1570
1423
  originalEvent: event,
@@ -1577,8 +1430,8 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1577
1430
  props.onRowEditInit({
1578
1431
  originalEvent: event,
1579
1432
  data: props.rowData,
1580
- newData: getEditingRowData(),
1581
- field: field,
1433
+ newData: props.getEditingRowData(),
1434
+ field: props.field,
1582
1435
  index: props.rowIndex
1583
1436
  });
1584
1437
  };
@@ -1586,32 +1439,26 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1586
1439
  props.onRowEditSave({
1587
1440
  originalEvent: event,
1588
1441
  data: props.rowData,
1589
- newData: getEditingRowData(),
1590
- field: field,
1442
+ newData: props.getEditingRowData(),
1443
+ field: props.field,
1591
1444
  index: props.rowIndex
1592
1445
  });
1593
- focusOnInit();
1446
+ props.focusOnInit(initFocusTimeout, elementRef);
1594
1447
  };
1595
1448
  var onRowEditCancel = function onRowEditCancel(event) {
1596
1449
  props.onRowEditCancel({
1597
1450
  originalEvent: event,
1598
1451
  data: props.rowData,
1599
- newData: getEditingRowData(),
1600
- field: field,
1452
+ newData: props.getEditingRowData(),
1453
+ field: props.field,
1601
1454
  index: props.rowIndex
1602
1455
  });
1603
- focusOnInit();
1456
+ props.focusOnInit(initFocusTimeout, elementRef);
1604
1457
  };
1605
1458
  React__namespace.useEffect(function () {
1606
- if (getColumnProp('frozen')) {
1607
- updateStickyPosition();
1608
- }
1609
- });
1610
- React__namespace.useEffect(function () {
1611
- if (props.editMode === 'cell' || props.editMode === 'row') {
1612
- focusOnElement();
1613
- }
1614
- }, [props.editMode, props.editing, editingState]); // eslint-disable-line react-hooks/exhaustive-deps
1459
+ if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
1460
+ if (props.editMode === 'cell' || props.editMode === 'row') props.focusOnElement(focusTimeout, editingState, elementRef, keyHelperRef);
1461
+ }, [props.editMode, props.editing, editingState, props.frozenCol, props.alignFrozenCol]); // eslint-disable-line react-hooks/exhaustive-deps
1615
1462
 
1616
1463
  React__namespace.useEffect(function () {
1617
1464
  if (props.editMode === 'row' && props.editing !== editingState) {
@@ -1620,7 +1467,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1620
1467
  }, [props.editMode, props.editing, editingState]);
1621
1468
  hooks.useUpdateEffect(function () {
1622
1469
  if (props.editMode === 'cell' || props.editMode === 'row') {
1623
- var editingRowData = getEditingRowData();
1470
+ var editingRowData = props.getEditingRowData();
1624
1471
  setEditingRowDataState(editingRowData);
1625
1472
  editingRowDataStateRef.current = editingRowData;
1626
1473
  }
@@ -1630,7 +1477,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1630
1477
  var callbackParams = getCellCallbackParams();
1631
1478
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1632
1479
  editing: editingState,
1633
- editingKey: editingKey
1480
+ editingKey: props.editingKey
1634
1481
  });
1635
1482
  props.onEditingMetaChange(params);
1636
1483
  }
@@ -1643,16 +1490,16 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1643
1490
  }
1644
1491
  });
1645
1492
  var createLoading = function createLoading() {
1646
- var options = getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1493
+ var options = props.getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1647
1494
  cellIndex: props.index,
1648
1495
  cellFirst: props.index === 0,
1649
- cellLast: props.index === getVirtualScrollerOption('columns').length - 1,
1496
+ cellLast: props.index === props.getVirtualScrollerOption('columns').length - 1,
1650
1497
  cellEven: props.index % 2 === 0,
1651
1498
  cellOdd: props.index % 2 !== 0,
1652
1499
  column: props.column,
1653
- field: field
1500
+ field: props.field
1654
1501
  });
1655
- var content = utils.ObjectUtils.getJSXElement(getVirtualScrollerOption('loadingTemplate'), options);
1502
+ var content = utils.ObjectUtils.getJSXElement(props.getVirtualScrollerOption('loadingTemplate'), options);
1656
1503
  var bodyCellProps = mergeProps(getColumnPTOptions('bodyCell'), {
1657
1504
  role: 'cell'
1658
1505
  });
@@ -1661,20 +1508,20 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1661
1508
  var createElement = function createElement() {
1662
1509
  var content;
1663
1510
  var editorKeyHelper;
1664
- var cellSelected = props.allowCellSelection && isSelected();
1511
+ var cellSelected = props.allowCellSelection && props.isCellSelected;
1665
1512
  var isRowEditor = props.editMode === 'row';
1666
- var tabIndex = getTabIndex(cellSelected);
1513
+ var tabIndex = props.getTabIndex(cellSelected, props.index);
1667
1514
  var selectionMode = getColumnProp('selectionMode');
1668
1515
  var rowReorder = getColumnProp('rowReorder');
1669
1516
  var header = getColumnProp('header');
1670
1517
  var body = getColumnProp('body');
1671
1518
  var editor = getColumnProp('editor');
1672
- var frozen = getColumnProp('frozen');
1519
+ var frozen = props.frozenCol;
1673
1520
  var align = getColumnProp('align');
1674
- var value = resolveFieldData();
1521
+ var value = props.resolveFieldData();
1675
1522
  var columnBodyOptions = {
1676
1523
  column: props.column,
1677
- field: field,
1524
+ field: props.field,
1678
1525
  rowIndex: props.rowIndex,
1679
1526
  frozenRow: props.frozenRow,
1680
1527
  props: props.tableProps
@@ -1699,12 +1546,12 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1699
1546
  if (showSelection) {
1700
1547
  var ariaLabelField = props.selectionAriaLabel || props.tableProps.dataKey;
1701
1548
  var ariaLabelText = utils.ObjectUtils.resolveFieldData(props.rowData, ariaLabelField);
1702
- label = "".concat(props.selected ? PrimeReact$1.ariaLabel('unselectRow') : PrimeReact$1.ariaLabel('selectRow'), " ").concat(ariaLabelText);
1549
+ label = "".concat(props.isRowSelected ? PrimeReact$1.ariaLabel('unselectRow') : PrimeReact$1.ariaLabel('selectRow'), " ").concat(ariaLabelText);
1703
1550
  }
1704
1551
  content = showSelection && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, selectionMode === 'single' && /*#__PURE__*/React__namespace.createElement(RowRadioButton, {
1705
1552
  hostName: props.hostName,
1706
1553
  column: props.column,
1707
- checked: props.selected,
1554
+ checked: props.isRowSelected,
1708
1555
  disabled: !props.isSelectable({
1709
1556
  data: props.rowData,
1710
1557
  index: props.rowIndex
@@ -1719,12 +1566,12 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1719
1566
  }), selectionMode === 'multiple' && /*#__PURE__*/React__namespace.createElement(RowCheckbox, {
1720
1567
  hostName: props.hostName,
1721
1568
  column: props.column,
1722
- checked: props.selected,
1569
+ checked: props.isRowSelected,
1723
1570
  disabled: !props.isSelectable({
1724
1571
  data: props.rowData,
1725
1572
  index: props.rowIndex
1726
1573
  }),
1727
- onChange: onCheckboxChange,
1574
+ onChange: props.onCheckboxChange,
1728
1575
  tabIndex: props.tabIndex,
1729
1576
  ariaLabel: label,
1730
1577
  checkIcon: props.checkIcon,
@@ -1774,7 +1621,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1774
1621
  expanderProps.element = content;
1775
1622
  content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
1776
1623
  column: props.column,
1777
- field: field,
1624
+ field: props.field,
1778
1625
  rowIndex: props.rowIndex,
1779
1626
  frozenRow: props.frozenRow,
1780
1627
  props: props.tableProps,
@@ -1848,7 +1695,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1848
1695
  rowEditorProps.element = content;
1849
1696
  content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
1850
1697
  column: props.column,
1851
- field: field,
1698
+ field: props.field,
1852
1699
  rowIndex: props.rowIndex,
1853
1700
  frozenRow: props.frozenRow,
1854
1701
  props: props.tableProps,
@@ -1858,7 +1705,7 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1858
1705
  } else if (body && (!editingState || !editor)) {
1859
1706
  content = body ? utils.ObjectUtils.getJSXElement(body, props.rowData, {
1860
1707
  column: props.column,
1861
- field: field,
1708
+ field: props.field,
1862
1709
  rowIndex: props.rowIndex,
1863
1710
  frozenRow: props.frozenRow,
1864
1711
  props: props.tableProps
@@ -1866,9 +1713,9 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1866
1713
  } else if (editor && editingState) {
1867
1714
  content = utils.ObjectUtils.getJSXElement(editor, {
1868
1715
  rowData: editingRowDataState,
1869
- value: resolveFieldData(editingRowDataState),
1716
+ value: props.resolveFieldData(editingRowDataState),
1870
1717
  column: props.column,
1871
- field: field,
1718
+ field: props.field,
1872
1719
  rowIndex: props.rowIndex,
1873
1720
  frozenRow: props.frozenRow,
1874
1721
  props: props.tableProps,
@@ -1936,7 +1783,29 @@ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1936
1783
  ref: elementRef
1937
1784
  }, bodyCellProps), editorKeyHelper, title, content);
1938
1785
  };
1939
- return getVirtualScrollerOption('loading') ? createLoading() : createElement();
1786
+ return props.getVirtualScrollerOption('loading') ? createLoading() : createElement();
1787
+ };
1788
+
1789
+ // RadioCheckCell is used for the Radio and Checkbox selection and has the isRowSelected dependency
1790
+ var RadioCheckCell = /*#__PURE__*/React__namespace.memo(function (props) {
1791
+ return /*#__PURE__*/React__namespace.createElement(Cell, props);
1792
+ }, function (prevProps, nextProps) {
1793
+ var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
1794
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1795
+ });
1796
+ RadioCheckCell.displayName = 'RadioCheckCell';
1797
+ var defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
1798
+ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1799
+ return /*#__PURE__*/React__namespace.createElement(Cell, props);
1800
+ }, function (prevProps, nextProps) {
1801
+ if (nextProps.cellMemo === false) return false;
1802
+ var memoProps = nextProps.cellMemoProps;
1803
+ var keysToCompare = Array.isArray(memoProps) && memoProps.every(function (prop) {
1804
+ return typeof prop === 'string';
1805
+ }) ? memoProps : defaultKeysToCompare;
1806
+ var memoPropsDepth = nextProps.cellMemoPropsDepth;
1807
+ var depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
1808
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
1940
1809
  });
1941
1810
  BodyCell.displayName = 'BodyCell';
1942
1811
 
@@ -1952,6 +1821,7 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
1952
1821
  var _props$ptCallbacks = props.ptCallbacks,
1953
1822
  ptm = _props$ptCallbacks.ptm,
1954
1823
  cx = _props$ptCallbacks.cx;
1824
+ var isRowSelected = !props.allowCellSelection && props.selected || props.contextMenuSelected;
1955
1825
  var getBodyRowPTOptions = function getBodyRowPTOptions(key) {
1956
1826
  return ptm(key, {
1957
1827
  parent: props.metaData,
@@ -1965,7 +1835,7 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
1965
1835
  data: props.rowData,
1966
1836
  index: props.rowIndex
1967
1837
  }),
1968
- selected: !props.allowCellSelection && props.selected || props.contextMenuSelected,
1838
+ selected: isRowSelected,
1969
1839
  stripedRows: props.metaData.props.stripedRows
1970
1840
  }
1971
1841
  });
@@ -1994,10 +1864,10 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
1994
1864
  return equals(rowData, data);
1995
1865
  });
1996
1866
  };
1997
- var changeTabIndex = function changeTabIndex(currentRow, nextRow) {
1998
- if (currentRow && nextRow) {
1999
- currentRow.tabIndex = -1;
2000
- nextRow.tabIndex = props.tabIndex;
1867
+ var changeTabIndex = function changeTabIndex(currentElement, nextElement) {
1868
+ if (currentElement && nextElement) {
1869
+ currentElement.tabIndex = -1;
1870
+ nextElement.tabIndex = props.tabIndex;
2001
1871
  }
2002
1872
  };
2003
1873
  var findFirstSelectableRow = function findFirstSelectableRow(row) {
@@ -2324,32 +2194,179 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2324
2194
  onEditChange(e, false);
2325
2195
  event.preventDefault();
2326
2196
  };
2197
+ var equalsDataCell = function equalsDataCell(data) {
2198
+ return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
2199
+ };
2200
+ var equalsCell = function equalsCell(selectedCell, field, colIndex) {
2201
+ return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsDataCell(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === colIndex);
2202
+ };
2203
+ var findIndexCell = function findIndexCell(collection, field, colIndex) {
2204
+ return (collection || []).findIndex(function (data) {
2205
+ return equalsCell(data, field, colIndex);
2206
+ });
2207
+ };
2208
+ var isCellSelected = function isCellSelected(selection, field, colIndex) {
2209
+ return selection ? selection instanceof Array ? findIndexCell(selection, field, colIndex) > -1 : equalsCell(selection, field, colIndex) : false;
2210
+ };
2211
+ var onCheckboxChange = function onCheckboxChange(event) {
2212
+ props.onCheckboxChange({
2213
+ originalEvent: event,
2214
+ data: props.rowData,
2215
+ index: props.rowIndex
2216
+ });
2217
+ };
2218
+ var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
2219
+ var getVirtualScrollerOption = React__namespace.useCallback(function (option) {
2220
+ return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
2221
+ }, [props.virtualScrollerOptions]);
2222
+ var getEditingRowData = function getEditingRowData() {
2223
+ return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
2224
+ };
2225
+ var getTabIndexCell = React__namespace.useCallback(function (cellSelected, cellIndex) {
2226
+ return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && cellIndex === 0 ? props.tabIndex : -1 : null;
2227
+ }, [props.allowCellSelection, props.rowIndex, props.tabIndex]);
2228
+ var findNextSelectableCell = React__namespace.useCallback(function (cell) {
2229
+ var nextCell = cell.nextElementSibling;
2230
+ return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : findNextSelectableCell(nextCell) : null;
2231
+ }, []);
2232
+ var findPrevSelectableCell = React__namespace.useCallback(function (cell) {
2233
+ var prevCell = cell.previousElementSibling;
2234
+ return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : findPrevSelectableCell(prevCell) : null;
2235
+ }, []);
2236
+ var findDownSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2237
+ var downRow = cell.parentElement.nextElementSibling;
2238
+ var downCell = downRow ? downRow.children[cellIndex] : null;
2239
+ return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : findDownSelectableCell(downCell) : null;
2240
+ }, []);
2241
+ var findUpSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2242
+ var upRow = cell.parentElement.previousElementSibling;
2243
+ var upCell = upRow ? upRow.children[cellIndex] : null;
2244
+ return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : findUpSelectableCell(upCell) : null;
2245
+ }, []);
2246
+ var focusOnElement = React__namespace.useCallback(function (focusTimeoutRef, editingState, elementRef, keyHelperRef) {
2247
+ clearTimeout(focusTimeoutRef.current);
2248
+ focusTimeoutRef.current = setTimeout(function () {
2249
+ if (editingState) {
2250
+ var focusableEl = props.editMode === 'cell' ? utils.DomHandler.getFirstFocusableElement(elementRef.current, ':not([data-pc-section="editorkeyhelperlabel"])') : utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-save="true"]');
2251
+ focusableEl && focusableEl.focus();
2252
+ }
2253
+ keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
2254
+ }, 1);
2255
+ }, [props.editMode]);
2256
+ var focusOnInit = React__namespace.useCallback(function (initFocusTimeoutRef, elementRef) {
2257
+ clearTimeout(initFocusTimeoutRef.current);
2258
+ initFocusTimeoutRef.current = setTimeout(function () {
2259
+ var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
2260
+ focusableEl && focusableEl.focus();
2261
+ }, 1);
2262
+ }, [props.editMode]);
2263
+ var updateStickyPosition = React__namespace.useCallback(function (elementRef, frozen, alignFrozen, styleObjectState, setStyleObjectState) {
2264
+ if (frozen) {
2265
+ var styleObject = _objectSpread$a({}, styleObjectState);
2266
+ if (alignFrozen === 'right') {
2267
+ var right = 0;
2268
+ var next = elementRef.current && elementRef.current.nextElementSibling;
2269
+ if (next && next.classList.contains('p-frozen-column')) {
2270
+ right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
2271
+ }
2272
+ styleObject.right = right + 'px';
2273
+ } else {
2274
+ var left = 0;
2275
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
2276
+ if (prev && prev.classList.contains('p-frozen-column')) {
2277
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2278
+ }
2279
+ styleObject.left = left + 'px';
2280
+ }
2281
+ var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
2282
+ !isSameStyle && setStyleObjectState(styleObject);
2283
+ }
2284
+ }, []);
2285
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener, isOutsideClicked) {
2286
+ if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2287
+ selfClick.current = true;
2288
+ var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2289
+ var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2290
+ var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
2291
+ if (onBeforeCellEditShow) {
2292
+ // if user returns false do not show the editor
2293
+ if (onBeforeCellEditShow(params) === false) {
2294
+ return;
2295
+ }
2296
+
2297
+ // if user prevents default stop the editor
2298
+ if (event && event.defaultPrevented) {
2299
+ return;
2300
+ }
2301
+ }
2302
+
2303
+ // If the data is sorted using sort icon, it has been added to wait for the sort operation when any cell is wanted to be opened.
2304
+ setTimeout(function () {
2305
+ setEditingState(true);
2306
+ if (onCellEditInit) {
2307
+ if (onCellEditInit(params) === false) {
2308
+ return;
2309
+ }
2310
+
2311
+ // if user prevents default stop the editor
2312
+ if (event && event.defaultPrevented) {
2313
+ return;
2314
+ }
2315
+ }
2316
+ if (cellEditValidatorEvent === 'click') {
2317
+ bindDocumentClickListener();
2318
+ overlayEventListener.current = function (e) {
2319
+ if (!isOutsideClicked(e.target)) {
2320
+ selfClick.current = true;
2321
+ }
2322
+ };
2323
+ overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
2324
+ }
2325
+ }, 1);
2326
+ }
2327
+ if (props.allowCellSelection && props.onCellClick) {
2328
+ props.onCellClick(params);
2329
+ }
2330
+ };
2327
2331
  var createContent = function createContent() {
2328
2332
  return props.columns.map(function (col, i) {
2329
2333
  if (shouldRenderBodyCell(props.value, col, props.index)) {
2330
2334
  var key = "".concat(props.rowIndex, "_").concat(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'), "_").concat(i);
2331
2335
  var rowSpan = props.rowGroupMode === 'rowspan' ? calculateRowGroupSize(props.value, col, props.index) : null;
2332
- return /*#__PURE__*/React__namespace.createElement(BodyCell, {
2336
+ var field = getColumnProp(col, 'field') || "field_".concat(i);
2337
+ var resolveFieldData = function resolveFieldData(data) {
2338
+ return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
2339
+ };
2340
+ var selectionMode = getColumnProp(col, 'selectionMode');
2341
+ var cellProps = mergeProps({
2333
2342
  hostName: props.hostName,
2334
- key: key,
2335
2343
  allowCellSelection: props.allowCellSelection,
2344
+ cellMemo: props.cellMemo,
2345
+ cellMemoProps: props.cellMemoProps,
2346
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
2336
2347
  cellClassName: props.cellClassName,
2337
2348
  checkIcon: props.checkIcon,
2338
2349
  collapsedRowIcon: props.collapsedRowIcon,
2350
+ field: field,
2351
+ resolveFieldData: resolveFieldData,
2339
2352
  column: col,
2340
- compareSelectionBy: props.compareSelectionBy,
2353
+ cProps: props.colsProps[i],
2341
2354
  dataKey: props.dataKey,
2342
2355
  editMode: props.editMode,
2343
2356
  editing: editing,
2344
2357
  editingMeta: props.editingMeta,
2358
+ onEditingMetaChange: props.onEditingMetaChange,
2359
+ editingKey: editingKey,
2360
+ getEditingRowData: getEditingRowData,
2345
2361
  expanded: props.expanded,
2346
2362
  expandedRowIcon: props.expandedRowIcon,
2347
2363
  frozenRow: props.frozenRow,
2364
+ frozenCol: getColumnProp(col, 'frozen'),
2365
+ alignFrozenCol: getColumnProp(col, 'alignFrozen'),
2348
2366
  index: i,
2349
2367
  isSelectable: props.isSelectable,
2350
- onCheckboxChange: props.onCheckboxChange,
2351
- onClick: props.onCellClick,
2352
- onEditingMetaChange: props.onEditingMetaChange,
2368
+ onCheckboxChange: onCheckboxChange,
2369
+ onClick: onCellClick,
2353
2370
  onMouseDown: props.onCellMouseDown,
2354
2371
  onMouseUp: props.onCellMouseUp,
2355
2372
  onRadioChange: props.onRadioChange,
@@ -2365,20 +2382,31 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2365
2382
  rowIndex: props.rowIndex,
2366
2383
  rowSpan: rowSpan,
2367
2384
  selectOnEdit: props.selectOnEdit,
2368
- selected: props.selected,
2369
- selection: props.selection,
2385
+ isRowSelected: isRowSelected,
2386
+ isCellSelected: isCellSelected(props.selection, field, i),
2370
2387
  selectionAriaLabel: props.tableProps.selectionAriaLabel,
2371
2388
  showRowReorderElement: props.showRowReorderElement,
2372
2389
  showSelectionElement: props.showSelectionElement,
2373
2390
  tabIndex: props.tabIndex,
2391
+ getTabIndex: getTabIndexCell,
2374
2392
  tableProps: props.tableProps,
2375
2393
  tableSelector: props.tableSelector,
2376
2394
  value: props.value,
2377
- virtualScrollerOptions: props.virtualScrollerOptions,
2395
+ getVirtualScrollerOption: getVirtualScrollerOption,
2378
2396
  ptCallbacks: props.ptCallbacks,
2379
2397
  metaData: props.metaData,
2380
- unstyled: props.unstyled
2398
+ unstyled: props.unstyled,
2399
+ findNextSelectableCell: findNextSelectableCell,
2400
+ findPrevSelectableCell: findPrevSelectableCell,
2401
+ findDownSelectableCell: findDownSelectableCell,
2402
+ findUpSelectableCell: findUpSelectableCell,
2403
+ focusOnElement: focusOnElement,
2404
+ focusOnInit: focusOnInit,
2405
+ updateStickyPosition: updateStickyPosition
2381
2406
  });
2407
+ return /*#__PURE__*/React__namespace.createElement(React.Fragment, {
2408
+ key: key
2409
+ }, selectionMode ? /*#__PURE__*/React__namespace.createElement(RadioCheckCell, cellProps) : /*#__PURE__*/React__namespace.createElement(BodyCell, cellProps));
2382
2410
  }
2383
2411
  return null;
2384
2412
  });
@@ -2528,8 +2556,11 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2528
2556
  var getColumnProps = function getColumnProps(column) {
2529
2557
  return ColumnBase.getCProps(column);
2530
2558
  };
2559
+ var cProps = getColumnProps(props.column);
2560
+ var colsProps = props.columns ? props.columns.map(function (col) {
2561
+ return getColumnProps(col);
2562
+ }) : [];
2531
2563
  var getColumnPTOptions = function getColumnPTOptions(key) {
2532
- var cProps = getColumnProps(props.column);
2533
2564
  var columnMetaData = {
2534
2565
  props: cProps,
2535
2566
  parent: props.metaData,
@@ -2654,8 +2685,12 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2654
2685
  var allowSelection = function allowSelection(event) {
2655
2686
  return !utils.DomHandler.isClickable(event.originalEvent.target);
2656
2687
  };
2688
+ var metaKeySelectionRef = React__namespace.useRef(props.metaKeySelection);
2689
+ React__namespace.useEffect(function () {
2690
+ metaKeySelectionRef.current = props.metaKeySelection;
2691
+ }, [props.metaKeySelection]);
2657
2692
  var allowMetaKeySelection = function allowMetaKeySelection(event) {
2658
- return !rowTouched.current && (!props.metaKeySelection || props.metaKeySelection && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2693
+ return !rowTouched.current && (!metaKeySelectionRef.current || metaKeySelectionRef.current && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2659
2694
  };
2660
2695
  var allowRangeSelection = function allowRangeSelection(event) {
2661
2696
  return isMultipleSelection() && event.originalEvent.shiftKey && anchorRowIndex.current !== null;
@@ -2676,9 +2711,6 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2676
2711
  options = options || props.virtualScrollerOptions;
2677
2712
  return options ? options[option] : null;
2678
2713
  };
2679
- var getProcessedDataIndex = function getProcessedDataIndex(rowIndex) {
2680
- return props.lazy ? rowIndex - props.first : rowIndex;
2681
- };
2682
2714
  var findIndex = function findIndex(collection, rowData) {
2683
2715
  return (collection || []).findIndex(function (data) {
2684
2716
  return equals(rowData, data);
@@ -2728,6 +2760,10 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2728
2760
  });
2729
2761
  }
2730
2762
  };
2763
+ var selectionRef = React__namespace.useRef(props.selection);
2764
+ React__namespace.useEffect(function () {
2765
+ selectionRef.current = props.selection;
2766
+ }, [props.selection]);
2731
2767
  var onSingleSelection = function onSingleSelection(_ref) {
2732
2768
  var originalEvent = _ref.originalEvent,
2733
2769
  data = _ref.data,
@@ -2741,10 +2777,11 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2741
2777
  return;
2742
2778
  }
2743
2779
  var selected = isSelected(data);
2744
- var selection = props.selection;
2780
+ var currentSelection = selectionRef.current || [];
2781
+ var newSelection = currentSelection;
2745
2782
  if (selected) {
2746
2783
  if (toggleable) {
2747
- selection = null;
2784
+ newSelection = null;
2748
2785
  onUnselect({
2749
2786
  originalEvent: originalEvent,
2750
2787
  data: data,
@@ -2752,7 +2789,7 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2752
2789
  });
2753
2790
  }
2754
2791
  } else {
2755
- selection = data;
2792
+ newSelection = data;
2756
2793
  onSelect({
2757
2794
  originalEvent: originalEvent,
2758
2795
  data: data,
@@ -2760,10 +2797,10 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2760
2797
  });
2761
2798
  }
2762
2799
  focusOnElement(originalEvent, true);
2763
- if (props.onSelectionChange && selection !== props.selection) {
2800
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2764
2801
  props.onSelectionChange({
2765
2802
  originalEvent: originalEvent,
2766
- value: selection,
2803
+ value: newSelection,
2767
2804
  type: type
2768
2805
  });
2769
2806
  }
@@ -2781,11 +2818,12 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2781
2818
  return;
2782
2819
  }
2783
2820
  var selected = isSelected(data);
2784
- var selection = props.selection || [];
2821
+ var currentSelection = selectionRef.current || [];
2822
+ var newSelection = currentSelection;
2785
2823
  if (selected) {
2786
2824
  if (toggleable) {
2787
- var selectionIndex = findIndex(selection, data);
2788
- selection = props.selection.filter(function (val, i) {
2825
+ var selectionIndex = findIndex(currentSelection, data);
2826
+ newSelection = currentSelection.filter(function (val, i) {
2789
2827
  return i !== selectionIndex;
2790
2828
  });
2791
2829
  onUnselect({
@@ -2793,15 +2831,15 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2793
2831
  data: data,
2794
2832
  type: type
2795
2833
  });
2796
- } else if (selection.length) {
2797
- props.selection.forEach(function (d) {
2834
+ } else if (currentSelection.length) {
2835
+ currentSelection.forEach(function (d) {
2798
2836
  return onUnselect({
2799
2837
  originalEvent: originalEvent,
2800
2838
  data: d,
2801
2839
  type: type
2802
2840
  });
2803
2841
  });
2804
- selection = [data];
2842
+ newSelection = [data];
2805
2843
  onSelect({
2806
2844
  originalEvent: originalEvent,
2807
2845
  data: data,
@@ -2809,18 +2847,18 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2809
2847
  });
2810
2848
  }
2811
2849
  } else {
2812
- selection = utils.ObjectUtils.isObject(selection) ? [selection] : selection;
2813
- selection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(selection), [data]) : [data];
2850
+ newSelection = utils.ObjectUtils.isObject(currentSelection) ? [currentSelection] : currentSelection;
2851
+ newSelection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(newSelection), [data]) : [data];
2814
2852
  onSelect({
2815
2853
  originalEvent: originalEvent,
2816
2854
  data: data,
2817
2855
  type: type
2818
2856
  });
2819
2857
  }
2820
- if (props.onSelectionChange && selection !== props.selection) {
2858
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2821
2859
  props.onSelectionChange({
2822
2860
  originalEvent: originalEvent,
2823
- value: selection,
2861
+ value: newSelection,
2824
2862
  type: type
2825
2863
  });
2826
2864
  }
@@ -2843,16 +2881,14 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2843
2881
  var rangeStart;
2844
2882
  var rangeEnd;
2845
2883
  var isAllowCellSelection = allowCellSelection();
2846
- var rangeRowIndexInProcessedData = getProcessedDataIndex(rangeRowIndex.current);
2847
- var anchorRowIndexInProcessedData = getProcessedDataIndex(anchorRowIndex.current);
2848
- if (rangeRowIndexInProcessedData > anchorRowIndexInProcessedData) {
2849
- rangeStart = anchorRowIndexInProcessedData;
2850
- rangeEnd = rangeRowIndexInProcessedData;
2851
- } else if (rangeRowIndexInProcessedData < anchorRowIndexInProcessedData) {
2852
- rangeStart = rangeRowIndexInProcessedData;
2853
- rangeEnd = anchorRowIndexInProcessedData;
2884
+ if (rangeRowIndex.current > anchorRowIndex.current) {
2885
+ rangeStart = anchorRowIndex.current;
2886
+ rangeEnd = rangeRowIndex.current;
2887
+ } else if (rangeRowIndex.current < anchorRowIndex.current) {
2888
+ rangeStart = rangeRowIndex.current;
2889
+ rangeEnd = anchorRowIndex.current;
2854
2890
  } else {
2855
- rangeStart = rangeEnd = rangeRowIndexInProcessedData;
2891
+ rangeStart = rangeEnd = rangeRowIndex.current;
2856
2892
  }
2857
2893
  return isAllowCellSelection ? selectRangeOnCell(event, rangeStart, rangeEnd) : selectRangeOnRow(event, rangeStart, rangeEnd);
2858
2894
  };
@@ -2893,7 +2929,7 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2893
2929
  for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
2894
2930
  var rowData = value[i];
2895
2931
  var columns = props.columns;
2896
- var rowIndex = props.lazy ? i + props.first : i;
2932
+ var rowIndex = props.paginator ? i + props.first : i;
2897
2933
  for (var j = cellRangeStart; j <= cellRangeEnd; j++) {
2898
2934
  var field = getColumnProp(columns[j], 'field');
2899
2935
  var _value = utils.ObjectUtils.resolveFieldData(rowData, field);
@@ -3092,13 +3128,17 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3092
3128
  onRangeSelection(event, 'row');
3093
3129
  }
3094
3130
  };
3131
+ var expandedRowsRef = React__namespace.useRef(props.expandedRows);
3132
+ React__namespace.useEffect(function () {
3133
+ expandedRowsRef.current = props.expandedRows;
3134
+ }, [props.expandedRows]);
3095
3135
  var onRowToggle = function onRowToggle(event) {
3096
3136
  var expandedRows;
3097
3137
  var dataKey = props.dataKey;
3098
3138
  var hasDataKey = props.groupRowsBy ? dataKey === props.groupRowsBy : !!dataKey;
3099
3139
  if (hasDataKey) {
3100
3140
  var dataKeyValue = String(utils.ObjectUtils.resolveFieldData(event.data, dataKey));
3101
- expandedRows = props.expandedRows ? _objectSpread$8({}, props.expandedRows) : {};
3141
+ expandedRows = expandedRowsRef.current ? _objectSpread$8({}, expandedRowsRef.current) : {};
3102
3142
  if (expandedRows[dataKeyValue] != null) {
3103
3143
  delete expandedRows[dataKeyValue];
3104
3144
  if (props.onRowCollapse) {
@@ -3117,8 +3157,8 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3117
3157
  }
3118
3158
  }
3119
3159
  } else {
3120
- var expandedRowIndex = findIndex(props.expandedRows, event.data);
3121
- expandedRows = props.expandedRows ? _toConsumableArray(props.expandedRows) : [];
3160
+ var expandedRowIndex = findIndex(expandedRowsRef.current, event.data);
3161
+ expandedRows = expandedRowsRef.current ? _toConsumableArray(expandedRowsRef.current) : [];
3122
3162
  if (expandedRowIndex !== -1) {
3123
3163
  expandedRows = expandedRows.filter(function (_, i) {
3124
3164
  return i !== expandedRowIndex;
@@ -3368,7 +3408,7 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3368
3408
  return null;
3369
3409
  };
3370
3410
  var createGroupHeader = function createGroupHeader(rowData, rowIndex, expanded, colSpan) {
3371
- if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, getProcessedDataIndex(rowIndex))) {
3411
+ if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, rowIndex - props.first)) {
3372
3412
  var style = rowGroupHeaderStyle();
3373
3413
  var toggler = props.expandableRowGroups && /*#__PURE__*/React__namespace.createElement(RowTogglerButton, {
3374
3414
  hostName: props.hostName,
@@ -3418,10 +3458,14 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3418
3458
  hostName: props.hostName,
3419
3459
  allowCellSelection: _allowCellSelection,
3420
3460
  allowRowSelection: _allowRowSelection,
3461
+ cellMemo: props.cellMemo,
3462
+ cellMemoProps: props.cellMemoProps,
3463
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
3421
3464
  cellClassName: props.cellClassName,
3422
3465
  checkIcon: props.checkIcon,
3423
3466
  collapsedRowIcon: props.collapsedRowIcon,
3424
3467
  columns: props.columns,
3468
+ colsProps: colsProps,
3425
3469
  compareSelectionBy: props.compareSelectionBy,
3426
3470
  contextMenuSelected: contextMenuSelected,
3427
3471
  dataKey: props.dataKey,
@@ -3809,6 +3853,7 @@ var FilterMatchMode = Object.freeze({
3809
3853
  EQUALS: 'equals',
3810
3854
  NOT_EQUALS: 'notEquals',
3811
3855
  IN: 'in',
3856
+ NOT_IN: 'notIn',
3812
3857
  LESS_THAN: 'lt',
3813
3858
  LESS_THAN_OR_EQUAL_TO: 'lte',
3814
3859
  GREATER_THAN: 'gt',
@@ -3897,6 +3942,7 @@ var locales = {
3897
3942
  emptySelectionMessage: 'No selected item',
3898
3943
  endsWith: 'Ends with',
3899
3944
  equals: 'Equals',
3945
+ fileChosenMessage: '{0} files',
3900
3946
  fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
3901
3947
  filter: 'Filter',
3902
3948
  firstDayOfWeek: 0,
@@ -3915,6 +3961,7 @@ var locales = {
3915
3961
  nextMonth: 'Next Month',
3916
3962
  nextSecond: 'Next Second',
3917
3963
  nextYear: 'Next Year',
3964
+ noFileChosenMessage: 'No file chosen',
3918
3965
  noFilter: 'No Filter',
3919
3966
  notContains: 'Not contains',
3920
3967
  notEquals: 'Not equals',
@@ -3942,8 +3989,10 @@ var locales = {
3942
3989
  aria: {
3943
3990
  cancelEdit: 'Cancel Edit',
3944
3991
  close: 'Close',
3992
+ collapseLabel: 'Collapse',
3945
3993
  collapseRow: 'Row Collapsed',
3946
3994
  editRow: 'Edit Row',
3995
+ expandLabel: 'Expand',
3947
3996
  expandRow: 'Row Expanded',
3948
3997
  falseLabel: 'False',
3949
3998
  filterConstraint: 'Filter Constraint',
@@ -3968,18 +4017,20 @@ var locales = {
3968
4017
  next: 'Next',
3969
4018
  nextPageLabel: 'Next Page',
3970
4019
  nullLabel: 'Not Selected',
3971
- pageLabel: 'Page {page}',
3972
4020
  otpLabel: 'Please enter one time password character {0}',
4021
+ pageLabel: 'Page {page}',
3973
4022
  passwordHide: 'Hide Password',
3974
4023
  passwordShow: 'Show Password',
3975
4024
  previous: 'Previous',
3976
4025
  prevPageLabel: 'Previous Page',
4026
+ removeLabel: 'Remove',
3977
4027
  rotateLeft: 'Rotate Left',
3978
4028
  rotateRight: 'Rotate Right',
3979
4029
  rowsPerPageLabel: 'Rows per page',
3980
4030
  saveEdit: 'Save Edit',
3981
4031
  scrollTop: 'Scroll Top',
3982
4032
  selectAll: 'All items selected',
4033
+ selectLabel: 'Select',
3983
4034
  selectRow: 'Row Selected',
3984
4035
  showFilterMenu: 'Show Filter Menu',
3985
4036
  slide: 'Slide',
@@ -3988,6 +4039,7 @@ var locales = {
3988
4039
  stars: '{star} stars',
3989
4040
  trueLabel: 'True',
3990
4041
  unselectAll: 'All items unselected',
4042
+ unselectLabel: 'Unselect',
3991
4043
  unselectRow: 'Row Unselected',
3992
4044
  zoomImage: 'Zoom Image',
3993
4045
  zoomIn: 'Zoom In',
@@ -4205,9 +4257,17 @@ var ColumnFilter = /*#__PURE__*/React__namespace.memo(function (props) {
4205
4257
  var type = _ref.type,
4206
4258
  valid = _ref.valid;
4207
4259
  if (valid) {
4208
- type === 'outside' ? !selfClick.current && !isTargetClicked(event.target) && hide() : hide();
4260
+ if (type === 'outside') {
4261
+ if (!selfClick.current && !isTargetClicked(event.target)) {
4262
+ hide();
4263
+ }
4264
+ selfClick.current = false;
4265
+ } else if (context.hideOverlaysOnDocumentScrolling) {
4266
+ hide();
4267
+ } else if (!utils.DomHandler.isDocument(event.target)) {
4268
+ utils.DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact__default["default"].appendTo, false);
4269
+ }
4209
4270
  }
4210
- selfClick.current = false;
4211
4271
  },
4212
4272
  when: overlayVisibleState
4213
4273
  }),
@@ -6906,58 +6966,60 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
6906
6966
  var exportCSV = function exportCSV(options) {
6907
6967
  var data;
6908
6968
  var csv = "\uFEFF";
6909
- var columns = getColumns();
6910
6969
  if (options && options.selectionOnly) {
6911
6970
  data = props.selection || [];
6912
6971
  } else {
6913
6972
  data = [].concat(_toConsumableArray(props.frozenValue || []), _toConsumableArray(processedData() || []));
6914
6973
  }
6915
6974
 
6916
- //headers
6917
- columns.forEach(function (column, i) {
6918
- var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader'), getColumnProp(column, 'exportable')],
6975
+ // First build collection of exportable columns
6976
+ var exportableColumns = getColumns().filter(function (column) {
6977
+ var exportable = getColumnProp(column, 'exportable');
6978
+ var field = getColumnProp(column, 'field');
6979
+
6980
+ // Column must be exportable (or undefined/not set) and have a field defined
6981
+ return exportable !== false && field;
6982
+ });
6983
+
6984
+ // headers
6985
+ exportableColumns.forEach(function (column, i) {
6986
+ var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader')],
6919
6987
  field = _ref5[0],
6920
6988
  header = _ref5[1],
6921
- exportHeader = _ref5[2],
6922
- exportable = _ref5[3];
6923
- if (exportable && field) {
6924
- var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6925
- csv = csv + ('"' + columnHeader + '"');
6926
- if (i < columns.length - 1) {
6927
- csv = csv + props.csvSeparator;
6928
- }
6989
+ exportHeader = _ref5[2];
6990
+ var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6991
+ csv = csv + ('"' + columnHeader + '"');
6992
+ if (i < exportableColumns.length - 1) {
6993
+ csv = csv + props.csvSeparator;
6929
6994
  }
6930
6995
  });
6931
6996
 
6932
- //body
6997
+ // body
6933
6998
  data.forEach(function (record) {
6934
6999
  csv = csv + '\n';
6935
- columns.forEach(function (column, i) {
6936
- var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField'), getColumnProp(column, 'exportable')],
7000
+ exportableColumns.forEach(function (column, i) {
7001
+ var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField')],
6937
7002
  colField = _ref6[0],
6938
- exportField = _ref6[1],
6939
- exportable = _ref6[2];
7003
+ exportField = _ref6[1];
6940
7004
  var field = exportField || colField;
6941
- if (exportable && field) {
6942
- var cellData = utils.ObjectUtils.resolveFieldData(record, field);
6943
- if (cellData != null) {
6944
- if (props.exportFunction) {
6945
- cellData = props.exportFunction({
6946
- data: cellData,
6947
- field: field,
6948
- rowData: record,
6949
- column: column
6950
- });
6951
- } else {
6952
- cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6953
- }
7005
+ var cellData = utils.ObjectUtils.resolveFieldData(record, field);
7006
+ if (cellData != null) {
7007
+ if (props.exportFunction) {
7008
+ cellData = props.exportFunction({
7009
+ data: cellData,
7010
+ field: field,
7011
+ rowData: record,
7012
+ column: column
7013
+ });
6954
7014
  } else {
6955
- cellData = '';
6956
- }
6957
- csv = csv + ('"' + cellData + '"');
6958
- if (i < columns.length - 1) {
6959
- csv = csv + props.csvSeparator;
7015
+ cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6960
7016
  }
7017
+ } else {
7018
+ cellData = '';
7019
+ }
7020
+ csv = csv + ('"' + cellData + '"');
7021
+ if (i < exportableColumns.length - 1) {
7022
+ csv = csv + props.csvSeparator;
6961
7023
  }
6962
7024
  });
6963
7025
  });
@@ -7222,6 +7284,9 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
7222
7284
  var frozenBody = utils.ObjectUtils.isNotEmpty(props.frozenValue) && /*#__PURE__*/React__namespace.createElement(TableBody, {
7223
7285
  hostName: "DataTable",
7224
7286
  ref: frozenBodyRef,
7287
+ cellMemo: props.cellMemo,
7288
+ cellMemoProps: props.cellMemoProps,
7289
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7225
7290
  cellClassName: props.cellClassName,
7226
7291
  cellSelection: props.cellSelection,
7227
7292
  checkIcon: props.checkIcon,
@@ -7306,6 +7371,9 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
7306
7371
  var body = /*#__PURE__*/React__namespace.createElement(TableBody, {
7307
7372
  hostName: "DataTable",
7308
7373
  ref: bodyRef,
7374
+ cellMemo: props.cellMemo,
7375
+ cellMemoProps: props.cellMemoProps,
7376
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7309
7377
  cellClassName: props.cellClassName,
7310
7378
  cellSelection: props.cellSelection,
7311
7379
  checkIcon: props.checkIcon,