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
@@ -707,7 +707,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
707
707
  return props.checked === props.trueValue;
708
708
  };
709
709
  var _onChange = function onChange(event) {
710
- if (props.disabled || props.readonly) {
710
+ if (props.disabled || props.readOnly) {
711
711
  return;
712
712
  }
713
713
  if (props.onChange) {
@@ -966,7 +966,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
966
966
  onChange(event);
967
967
  };
968
968
  var onChange = function onChange(event) {
969
- if (props.disabled || props.readonly) {
969
+ if (props.disabled || props.readOnly) {
970
970
  return;
971
971
  }
972
972
  if (props.onChange) {
@@ -1069,7 +1069,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1069
1069
  onBlur: onBlur,
1070
1070
  onChange: onChange,
1071
1071
  disabled: props.disabled,
1072
- readOnly: props.readonly,
1072
+ readOnly: props.readOnly,
1073
1073
  required: props.required,
1074
1074
  tabIndex: props.tabIndex,
1075
1075
  className: cx('input')
@@ -1142,7 +1142,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1142
1142
 
1143
1143
  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; }
1144
1144
  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; }
1145
- var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1145
+ var Cell = function Cell(props) {
1146
1146
  var mergeProps = hooks.useMergeProps();
1147
1147
  var _React$useState = React__namespace.useState(props.editing),
1148
1148
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -1170,13 +1170,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1170
1170
  var getColumnProp = function getColumnProp(name) {
1171
1171
  return ColumnBase.getCProp(props.column, name);
1172
1172
  };
1173
- var getColumnProps = function getColumnProps() {
1174
- return ColumnBase.getCProps(props.column);
1175
- };
1176
1173
  var getColumnPTOptions = function getColumnPTOptions(key) {
1177
- var cProps = getColumnProps();
1178
1174
  var columnMetaData = {
1179
- props: cProps,
1175
+ props: props.cProps,
1180
1176
  parent: props.metaData,
1181
1177
  hostName: props.hostName,
1182
1178
  state: {
@@ -1192,10 +1188,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1192
1188
  };
1193
1189
  return mergeProps(ptm("column.".concat(key), {
1194
1190
  column: columnMetaData
1195
- }), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
1191
+ }), ptm("column.".concat(key), columnMetaData), ptmo(props.cProps, key, columnMetaData));
1196
1192
  };
1197
- var field = getColumnProp('field') || "field_".concat(props.index);
1198
- var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
1199
1193
  var isEditable = function isEditable() {
1200
1194
  return utils.ObjectUtils.isNotEmpty(props.editMode) && getColumnProp('editor');
1201
1195
  };
@@ -1220,34 +1214,22 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1220
1214
  _useEventListener2 = _slicedToArray(_useEventListener, 2),
1221
1215
  bindDocumentClickListener = _useEventListener2[0],
1222
1216
  unbindDocumentClickListener = _useEventListener2[1];
1223
- var isSelected = function isSelected() {
1224
- return props.selection ? props.selection instanceof Array ? findIndex(props.selection) > -1 : equals(props.selection) : false;
1225
- };
1226
- var equalsData = function equalsData(data) {
1227
- return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
1228
- };
1229
- var equals = function equals(selectedCell) {
1230
- return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsData(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === props.index);
1231
- };
1232
1217
  var isOutsideClicked = function isOutsideClicked(target) {
1233
1218
  return elementRef.current && !(elementRef.current.isSameNode(target) || elementRef.current.contains(target));
1234
1219
  };
1235
- var getVirtualScrollerOption = function getVirtualScrollerOption(option) {
1236
- return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
1237
- };
1238
1220
  var getStyle = function getStyle() {
1239
1221
  var bodyStyle = getColumnProp('bodyStyle');
1240
1222
  var columnStyle = getColumnProp('style');
1241
- return getColumnProp('frozen') ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1223
+ return props.frozenCol ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1242
1224
  };
1243
1225
  var getCellParams = function getCellParams() {
1244
1226
  return {
1245
- value: resolveFieldData(),
1246
- field: field,
1227
+ value: props.resolveFieldData(),
1228
+ field: props.field,
1247
1229
  rowData: props.rowData,
1248
1230
  rowIndex: props.rowIndex,
1249
1231
  cellIndex: props.index,
1250
- selected: isSelected(),
1232
+ selected: props.isCellSelected,
1251
1233
  column: props.column,
1252
1234
  props: props
1253
1235
  };
@@ -1258,20 +1240,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1258
1240
  originalEvent: event
1259
1241
  }, params);
1260
1242
  };
1261
- var resolveFieldData = function resolveFieldData(data) {
1262
- return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
1263
- };
1264
- var getEditingRowData = function getEditingRowData() {
1265
- return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
1266
- };
1267
- var getTabIndex = function getTabIndex(cellSelected) {
1268
- return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && props.index === 0 ? props.tabIndex : -1 : null;
1269
- };
1270
- var findIndex = function findIndex(collection) {
1271
- return (collection || []).findIndex(function (data) {
1272
- return equals(data);
1273
- });
1274
- };
1275
1243
  var closeCell = function closeCell(event) {
1276
1244
  var params = getCellCallbackParams(event);
1277
1245
  var onBeforeCellEditHide = getColumnProp('onBeforeCellEditHide');
@@ -1292,7 +1260,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1292
1260
  var switchCellToViewMode = function switchCellToViewMode(event, submit) {
1293
1261
  var callbackParams = getCellCallbackParams(event);
1294
1262
  var newRowData = _objectSpread$b({}, editingRowDataStateRef.current);
1295
- var newValue = resolveFieldData(newRowData);
1263
+ var newValue = props.resolveFieldData(newRowData);
1296
1264
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1297
1265
  newRowData: newRowData,
1298
1266
  newValue: newValue
@@ -1317,128 +1285,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1317
1285
  }
1318
1286
  setEditingRowDataState(newRowData);
1319
1287
  };
1320
- var _findNextSelectableCell = function findNextSelectableCell(cell) {
1321
- var nextCell = cell.nextElementSibling;
1322
- return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : _findNextSelectableCell(nextCell) : null;
1323
- };
1324
- var _findPrevSelectableCell = function findPrevSelectableCell(cell) {
1325
- var prevCell = cell.previousElementSibling;
1326
- return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : _findPrevSelectableCell(prevCell) : null;
1327
- };
1328
- var _findDownSelectableCell = function findDownSelectableCell(cell) {
1329
- var downRow = cell.parentElement.nextElementSibling;
1330
- var downCell = downRow ? downRow.children[props.index] : null;
1331
- return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : _findDownSelectableCell(downCell) : null;
1332
- };
1333
- var _findUpSelectableCell = function findUpSelectableCell(cell) {
1334
- var upRow = cell.parentElement.previousElementSibling;
1335
- var upCell = upRow ? upRow.children[props.index] : null;
1336
- return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : _findUpSelectableCell(upCell) : null;
1337
- };
1338
- var changeTabIndex = function changeTabIndex(currentCell, nextCell) {
1339
- if (currentCell && nextCell) {
1340
- currentCell.tabIndex = -1;
1341
- nextCell.tabIndex = props.tabIndex;
1342
- }
1343
- };
1344
- var focusOnElement = function focusOnElement() {
1345
- clearTimeout(focusTimeout.current);
1346
- focusTimeout.current = setTimeout(function () {
1347
- if (editingState) {
1348
- 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"]');
1349
- focusableEl && focusableEl.focus();
1350
- }
1351
- keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
1352
- }, 1);
1353
- };
1354
- var focusOnInit = function focusOnInit() {
1355
- clearTimeout(initFocusTimeout.current);
1356
- initFocusTimeout.current = setTimeout(function () {
1357
- var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
1358
- focusableEl && focusableEl.focus();
1359
- }, 1);
1360
- };
1361
- var updateStickyPosition = function updateStickyPosition() {
1362
- if (getColumnProp('frozen')) {
1363
- var styleObject = _objectSpread$b({}, styleObjectState);
1364
- var align = getColumnProp('alignFrozen');
1365
- if (align === 'right') {
1366
- var right = 0;
1367
- var next = elementRef.current && elementRef.current.nextElementSibling;
1368
- if (next && next.classList.contains('p-frozen-column')) {
1369
- right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
1370
- }
1371
- styleObject.right = right + 'px';
1372
- } else {
1373
- var left = 0;
1374
- var prev = elementRef.current && elementRef.current.previousElementSibling;
1375
- if (prev && prev.classList.contains('p-frozen-column')) {
1376
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
1377
- }
1378
- styleObject.left = left + 'px';
1379
- }
1380
- var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
1381
- !isSameStyle && setStyleObjectState(styleObject);
1382
- }
1383
- };
1384
1288
  var editorCallback = function editorCallback(val) {
1385
1289
  var editingRowData = _objectSpread$b({}, editingRowDataState);
1386
- utils.ObjectUtils.mutateFieldData(editingRowData, field, val);
1290
+ utils.ObjectUtils.mutateFieldData(editingRowData, props.field, val);
1387
1291
  setEditingRowDataState(editingRowData);
1388
1292
 
1389
1293
  // update editing meta for complete methods on row mode
1390
- var currentData = getEditingRowData();
1294
+ var currentData = props.getEditingRowData();
1391
1295
  if (currentData) {
1392
- utils.ObjectUtils.mutateFieldData(currentData, field, val);
1296
+ utils.ObjectUtils.mutateFieldData(currentData, props.field, val);
1393
1297
  }
1394
1298
  editingRowDataStateRef.current = editingRowData;
1395
1299
  };
1396
1300
  var _onClick = function onClick(event) {
1397
- var params = getCellCallbackParams(event);
1398
- if (props.editMode !== 'row' && isEditable() && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.selected)) {
1399
- selfClick.current = true;
1400
- var onBeforeCellEditShow = getColumnProp('onBeforeCellEditShow');
1401
- var onCellEditInit = getColumnProp('onCellEditInit');
1402
- var cellEditValidatorEvent = getColumnProp('cellEditValidatorEvent');
1403
- if (onBeforeCellEditShow) {
1404
- // if user returns false do not show the editor
1405
- if (onBeforeCellEditShow(params) === false) {
1406
- return;
1407
- }
1408
-
1409
- // if user prevents default stop the editor
1410
- if (event && event.defaultPrevented) {
1411
- return;
1412
- }
1413
- }
1414
-
1415
- // 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.
1416
- setTimeout(function () {
1417
- setEditingState(true);
1418
- if (onCellEditInit) {
1419
- if (onCellEditInit(params) === false) {
1420
- return;
1421
- }
1422
-
1423
- // if user prevents default stop the editor
1424
- if (event && event.defaultPrevented) {
1425
- return;
1426
- }
1427
- }
1428
- if (cellEditValidatorEvent === 'click') {
1429
- bindDocumentClickListener();
1430
- overlayEventListener.current = function (e) {
1431
- if (!isOutsideClicked(e.target)) {
1432
- selfClick.current = true;
1433
- }
1434
- };
1435
- overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
1436
- }
1437
- }, 1);
1438
- }
1439
- if (props.allowCellSelection && props.onClick) {
1440
- props.onClick(params);
1441
- }
1301
+ props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, selfClick, props.column, bindDocumentClickListener, overlayEventListener, isOutsideClicked);
1442
1302
  };
1443
1303
  var _onMouseDown = function onMouseDown(event) {
1444
1304
  var params = getCellCallbackParams(event);
@@ -1462,7 +1322,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1462
1322
  cell = event.currentTarget;
1463
1323
  switch (event.code) {
1464
1324
  case 'ArrowLeft':
1465
- var prevCell = _findPrevSelectableCell(cell);
1325
+ var prevCell = props.findPrevSelectableCell(cell);
1466
1326
  if (prevCell) {
1467
1327
  changeTabIndex(cell, prevCell);
1468
1328
  prevCell.focus();
@@ -1470,7 +1330,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1470
1330
  event.preventDefault();
1471
1331
  break;
1472
1332
  case 'ArrowRight':
1473
- var nextCell = _findNextSelectableCell(cell);
1333
+ var nextCell = props.findNextSelectableCell(cell);
1474
1334
  if (nextCell) {
1475
1335
  changeTabIndex(cell, nextCell);
1476
1336
  nextCell.focus();
@@ -1478,7 +1338,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1478
1338
  event.preventDefault();
1479
1339
  break;
1480
1340
  case 'ArrowUp':
1481
- var upCell = _findUpSelectableCell(cell);
1341
+ var upCell = props.findUpSelectableCell(cell, index);
1482
1342
  if (upCell) {
1483
1343
  changeTabIndex(cell, upCell);
1484
1344
  upCell.focus();
@@ -1486,7 +1346,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1486
1346
  event.preventDefault();
1487
1347
  break;
1488
1348
  case 'ArrowDown':
1489
- var downCell = _findDownSelectableCell(cell);
1349
+ var downCell = props.findDownSelectableCell(cell, index);
1490
1350
  if (downCell) {
1491
1351
  changeTabIndex(cell, downCell);
1492
1352
  downCell.focus();
@@ -1525,13 +1385,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1525
1385
  index: props.rowIndex
1526
1386
  });
1527
1387
  };
1528
- var onCheckboxChange = function onCheckboxChange(event) {
1529
- props.onCheckboxChange({
1530
- originalEvent: event,
1531
- data: props.rowData,
1532
- index: props.rowIndex
1533
- });
1534
- };
1535
1388
  var onRowToggle = function onRowToggle(event) {
1536
1389
  props.onRowToggle({
1537
1390
  originalEvent: event,
@@ -1544,8 +1397,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1544
1397
  props.onRowEditInit({
1545
1398
  originalEvent: event,
1546
1399
  data: props.rowData,
1547
- newData: getEditingRowData(),
1548
- field: field,
1400
+ newData: props.getEditingRowData(),
1401
+ field: props.field,
1549
1402
  index: props.rowIndex
1550
1403
  });
1551
1404
  };
@@ -1553,32 +1406,26 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1553
1406
  props.onRowEditSave({
1554
1407
  originalEvent: event,
1555
1408
  data: props.rowData,
1556
- newData: getEditingRowData(),
1557
- field: field,
1409
+ newData: props.getEditingRowData(),
1410
+ field: props.field,
1558
1411
  index: props.rowIndex
1559
1412
  });
1560
- focusOnInit();
1413
+ props.focusOnInit(initFocusTimeout, elementRef);
1561
1414
  };
1562
1415
  var onRowEditCancel = function onRowEditCancel(event) {
1563
1416
  props.onRowEditCancel({
1564
1417
  originalEvent: event,
1565
1418
  data: props.rowData,
1566
- newData: getEditingRowData(),
1567
- field: field,
1419
+ newData: props.getEditingRowData(),
1420
+ field: props.field,
1568
1421
  index: props.rowIndex
1569
1422
  });
1570
- focusOnInit();
1423
+ props.focusOnInit(initFocusTimeout, elementRef);
1571
1424
  };
1572
1425
  React__namespace.useEffect(function () {
1573
- if (getColumnProp('frozen')) {
1574
- updateStickyPosition();
1575
- }
1576
- });
1577
- React__namespace.useEffect(function () {
1578
- if (props.editMode === 'cell' || props.editMode === 'row') {
1579
- focusOnElement();
1580
- }
1581
- }, [props.editMode, props.editing, editingState]); // eslint-disable-line react-hooks/exhaustive-deps
1426
+ if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
1427
+ if (props.editMode === 'cell' || props.editMode === 'row') props.focusOnElement(focusTimeout, editingState, elementRef, keyHelperRef);
1428
+ }, [props.editMode, props.editing, editingState, props.frozenCol, props.alignFrozenCol]); // eslint-disable-line react-hooks/exhaustive-deps
1582
1429
 
1583
1430
  React__namespace.useEffect(function () {
1584
1431
  if (props.editMode === 'row' && props.editing !== editingState) {
@@ -1587,7 +1434,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1587
1434
  }, [props.editMode, props.editing, editingState]);
1588
1435
  hooks.useUpdateEffect(function () {
1589
1436
  if (props.editMode === 'cell' || props.editMode === 'row') {
1590
- var editingRowData = getEditingRowData();
1437
+ var editingRowData = props.getEditingRowData();
1591
1438
  setEditingRowDataState(editingRowData);
1592
1439
  editingRowDataStateRef.current = editingRowData;
1593
1440
  }
@@ -1597,7 +1444,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1597
1444
  var callbackParams = getCellCallbackParams();
1598
1445
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1599
1446
  editing: editingState,
1600
- editingKey: editingKey
1447
+ editingKey: props.editingKey
1601
1448
  });
1602
1449
  props.onEditingMetaChange(params);
1603
1450
  }
@@ -1610,16 +1457,16 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1610
1457
  }
1611
1458
  });
1612
1459
  var createLoading = function createLoading() {
1613
- var options = getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1460
+ var options = props.getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1614
1461
  cellIndex: props.index,
1615
1462
  cellFirst: props.index === 0,
1616
- cellLast: props.index === getVirtualScrollerOption('columns').length - 1,
1463
+ cellLast: props.index === props.getVirtualScrollerOption('columns').length - 1,
1617
1464
  cellEven: props.index % 2 === 0,
1618
1465
  cellOdd: props.index % 2 !== 0,
1619
1466
  column: props.column,
1620
- field: field
1467
+ field: props.field
1621
1468
  });
1622
- var content = utils.ObjectUtils.getJSXElement(getVirtualScrollerOption('loadingTemplate'), options);
1469
+ var content = utils.ObjectUtils.getJSXElement(props.getVirtualScrollerOption('loadingTemplate'), options);
1623
1470
  var bodyCellProps = mergeProps(getColumnPTOptions('bodyCell'), {
1624
1471
  role: 'cell'
1625
1472
  });
@@ -1628,20 +1475,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1628
1475
  var createElement = function createElement() {
1629
1476
  var content;
1630
1477
  var editorKeyHelper;
1631
- var cellSelected = props.allowCellSelection && isSelected();
1478
+ var cellSelected = props.allowCellSelection && props.isCellSelected;
1632
1479
  var isRowEditor = props.editMode === 'row';
1633
- var tabIndex = getTabIndex(cellSelected);
1480
+ var tabIndex = props.getTabIndex(cellSelected, props.index);
1634
1481
  var selectionMode = getColumnProp('selectionMode');
1635
1482
  var rowReorder = getColumnProp('rowReorder');
1636
1483
  var header = getColumnProp('header');
1637
1484
  var body = getColumnProp('body');
1638
1485
  var editor = getColumnProp('editor');
1639
- var frozen = getColumnProp('frozen');
1486
+ var frozen = props.frozenCol;
1640
1487
  var align = getColumnProp('align');
1641
- var value = resolveFieldData();
1488
+ var value = props.resolveFieldData();
1642
1489
  var columnBodyOptions = {
1643
1490
  column: props.column,
1644
- field: field,
1491
+ field: props.field,
1645
1492
  rowIndex: props.rowIndex,
1646
1493
  frozenRow: props.frozenRow,
1647
1494
  props: props.tableProps
@@ -1666,12 +1513,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1666
1513
  if (showSelection) {
1667
1514
  var ariaLabelField = props.selectionAriaLabel || props.tableProps.dataKey;
1668
1515
  var ariaLabelText = utils.ObjectUtils.resolveFieldData(props.rowData, ariaLabelField);
1669
- label = "".concat(props.selected ? PrimeReact$1.ariaLabel('unselectRow') : PrimeReact$1.ariaLabel('selectRow'), " ").concat(ariaLabelText);
1516
+ label = "".concat(props.isRowSelected ? PrimeReact$1.ariaLabel('unselectRow') : PrimeReact$1.ariaLabel('selectRow'), " ").concat(ariaLabelText);
1670
1517
  }
1671
1518
  content = showSelection && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, selectionMode === 'single' && /*#__PURE__*/React__namespace.createElement(RowRadioButton, {
1672
1519
  hostName: props.hostName,
1673
1520
  column: props.column,
1674
- checked: props.selected,
1521
+ checked: props.isRowSelected,
1675
1522
  disabled: !props.isSelectable({
1676
1523
  data: props.rowData,
1677
1524
  index: props.rowIndex
@@ -1686,12 +1533,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1686
1533
  }), selectionMode === 'multiple' && /*#__PURE__*/React__namespace.createElement(RowCheckbox, {
1687
1534
  hostName: props.hostName,
1688
1535
  column: props.column,
1689
- checked: props.selected,
1536
+ checked: props.isRowSelected,
1690
1537
  disabled: !props.isSelectable({
1691
1538
  data: props.rowData,
1692
1539
  index: props.rowIndex
1693
1540
  }),
1694
- onChange: onCheckboxChange,
1541
+ onChange: props.onCheckboxChange,
1695
1542
  tabIndex: props.tabIndex,
1696
1543
  ariaLabel: label,
1697
1544
  checkIcon: props.checkIcon,
@@ -1741,7 +1588,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1741
1588
  expanderProps.element = content;
1742
1589
  content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
1743
1590
  column: props.column,
1744
- field: field,
1591
+ field: props.field,
1745
1592
  rowIndex: props.rowIndex,
1746
1593
  frozenRow: props.frozenRow,
1747
1594
  props: props.tableProps,
@@ -1815,7 +1662,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1815
1662
  rowEditorProps.element = content;
1816
1663
  content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
1817
1664
  column: props.column,
1818
- field: field,
1665
+ field: props.field,
1819
1666
  rowIndex: props.rowIndex,
1820
1667
  frozenRow: props.frozenRow,
1821
1668
  props: props.tableProps,
@@ -1825,7 +1672,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1825
1672
  } else if (body && (!editingState || !editor)) {
1826
1673
  content = body ? utils.ObjectUtils.getJSXElement(body, props.rowData, {
1827
1674
  column: props.column,
1828
- field: field,
1675
+ field: props.field,
1829
1676
  rowIndex: props.rowIndex,
1830
1677
  frozenRow: props.frozenRow,
1831
1678
  props: props.tableProps
@@ -1833,9 +1680,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1833
1680
  } else if (editor && editingState) {
1834
1681
  content = utils.ObjectUtils.getJSXElement(editor, {
1835
1682
  rowData: editingRowDataState,
1836
- value: resolveFieldData(editingRowDataState),
1683
+ value: props.resolveFieldData(editingRowDataState),
1837
1684
  column: props.column,
1838
- field: field,
1685
+ field: props.field,
1839
1686
  rowIndex: props.rowIndex,
1840
1687
  frozenRow: props.frozenRow,
1841
1688
  props: props.tableProps,
@@ -1903,7 +1750,29 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1903
1750
  ref: elementRef
1904
1751
  }, bodyCellProps), editorKeyHelper, title, content);
1905
1752
  };
1906
- return getVirtualScrollerOption('loading') ? createLoading() : createElement();
1753
+ return props.getVirtualScrollerOption('loading') ? createLoading() : createElement();
1754
+ };
1755
+
1756
+ // RadioCheckCell is used for the Radio and Checkbox selection and has the isRowSelected dependency
1757
+ var RadioCheckCell = /*#__PURE__*/React__namespace.memo(function (props) {
1758
+ return /*#__PURE__*/React__namespace.createElement(Cell, props);
1759
+ }, function (prevProps, nextProps) {
1760
+ var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
1761
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1762
+ });
1763
+ RadioCheckCell.displayName = 'RadioCheckCell';
1764
+ var defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
1765
+ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1766
+ return /*#__PURE__*/React__namespace.createElement(Cell, props);
1767
+ }, function (prevProps, nextProps) {
1768
+ if (nextProps.cellMemo === false) return false;
1769
+ var memoProps = nextProps.cellMemoProps;
1770
+ var keysToCompare = Array.isArray(memoProps) && memoProps.every(function (prop) {
1771
+ return typeof prop === 'string';
1772
+ }) ? memoProps : defaultKeysToCompare;
1773
+ var memoPropsDepth = nextProps.cellMemoPropsDepth;
1774
+ var depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
1775
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
1907
1776
  });
1908
1777
  BodyCell.displayName = 'BodyCell';
1909
1778
 
@@ -1919,6 +1788,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1919
1788
  var _props$ptCallbacks = props.ptCallbacks,
1920
1789
  ptm = _props$ptCallbacks.ptm,
1921
1790
  cx = _props$ptCallbacks.cx;
1791
+ var isRowSelected = !props.allowCellSelection && props.selected || props.contextMenuSelected;
1922
1792
  var getBodyRowPTOptions = function getBodyRowPTOptions(key) {
1923
1793
  return ptm(key, {
1924
1794
  parent: props.metaData,
@@ -1932,7 +1802,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1932
1802
  data: props.rowData,
1933
1803
  index: props.rowIndex
1934
1804
  }),
1935
- selected: !props.allowCellSelection && props.selected || props.contextMenuSelected,
1805
+ selected: isRowSelected,
1936
1806
  stripedRows: props.metaData.props.stripedRows
1937
1807
  }
1938
1808
  });
@@ -1961,10 +1831,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1961
1831
  return equals(rowData, data);
1962
1832
  });
1963
1833
  };
1964
- var changeTabIndex = function changeTabIndex(currentRow, nextRow) {
1965
- if (currentRow && nextRow) {
1966
- currentRow.tabIndex = -1;
1967
- nextRow.tabIndex = props.tabIndex;
1834
+ var changeTabIndex = function changeTabIndex(currentElement, nextElement) {
1835
+ if (currentElement && nextElement) {
1836
+ currentElement.tabIndex = -1;
1837
+ nextElement.tabIndex = props.tabIndex;
1968
1838
  }
1969
1839
  };
1970
1840
  var findFirstSelectableRow = function findFirstSelectableRow(row) {
@@ -2291,32 +2161,179 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2291
2161
  onEditChange(e, false);
2292
2162
  event.preventDefault();
2293
2163
  };
2164
+ var equalsDataCell = function equalsDataCell(data) {
2165
+ return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
2166
+ };
2167
+ var equalsCell = function equalsCell(selectedCell, field, colIndex) {
2168
+ return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsDataCell(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === colIndex);
2169
+ };
2170
+ var findIndexCell = function findIndexCell(collection, field, colIndex) {
2171
+ return (collection || []).findIndex(function (data) {
2172
+ return equalsCell(data, field, colIndex);
2173
+ });
2174
+ };
2175
+ var isCellSelected = function isCellSelected(selection, field, colIndex) {
2176
+ return selection ? selection instanceof Array ? findIndexCell(selection, field, colIndex) > -1 : equalsCell(selection, field, colIndex) : false;
2177
+ };
2178
+ var onCheckboxChange = function onCheckboxChange(event) {
2179
+ props.onCheckboxChange({
2180
+ originalEvent: event,
2181
+ data: props.rowData,
2182
+ index: props.rowIndex
2183
+ });
2184
+ };
2185
+ var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
2186
+ var getVirtualScrollerOption = React__namespace.useCallback(function (option) {
2187
+ return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
2188
+ }, [props.virtualScrollerOptions]);
2189
+ var getEditingRowData = function getEditingRowData() {
2190
+ return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
2191
+ };
2192
+ var getTabIndexCell = React__namespace.useCallback(function (cellSelected, cellIndex) {
2193
+ return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && cellIndex === 0 ? props.tabIndex : -1 : null;
2194
+ }, [props.allowCellSelection, props.rowIndex, props.tabIndex]);
2195
+ var findNextSelectableCell = React__namespace.useCallback(function (cell) {
2196
+ var nextCell = cell.nextElementSibling;
2197
+ return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : findNextSelectableCell(nextCell) : null;
2198
+ }, []);
2199
+ var findPrevSelectableCell = React__namespace.useCallback(function (cell) {
2200
+ var prevCell = cell.previousElementSibling;
2201
+ return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : findPrevSelectableCell(prevCell) : null;
2202
+ }, []);
2203
+ var findDownSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2204
+ var downRow = cell.parentElement.nextElementSibling;
2205
+ var downCell = downRow ? downRow.children[cellIndex] : null;
2206
+ return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : findDownSelectableCell(downCell) : null;
2207
+ }, []);
2208
+ var findUpSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2209
+ var upRow = cell.parentElement.previousElementSibling;
2210
+ var upCell = upRow ? upRow.children[cellIndex] : null;
2211
+ return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : findUpSelectableCell(upCell) : null;
2212
+ }, []);
2213
+ var focusOnElement = React__namespace.useCallback(function (focusTimeoutRef, editingState, elementRef, keyHelperRef) {
2214
+ clearTimeout(focusTimeoutRef.current);
2215
+ focusTimeoutRef.current = setTimeout(function () {
2216
+ if (editingState) {
2217
+ 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"]');
2218
+ focusableEl && focusableEl.focus();
2219
+ }
2220
+ keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
2221
+ }, 1);
2222
+ }, [props.editMode]);
2223
+ var focusOnInit = React__namespace.useCallback(function (initFocusTimeoutRef, elementRef) {
2224
+ clearTimeout(initFocusTimeoutRef.current);
2225
+ initFocusTimeoutRef.current = setTimeout(function () {
2226
+ var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
2227
+ focusableEl && focusableEl.focus();
2228
+ }, 1);
2229
+ }, [props.editMode]);
2230
+ var updateStickyPosition = React__namespace.useCallback(function (elementRef, frozen, alignFrozen, styleObjectState, setStyleObjectState) {
2231
+ if (frozen) {
2232
+ var styleObject = _objectSpread$a({}, styleObjectState);
2233
+ if (alignFrozen === 'right') {
2234
+ var right = 0;
2235
+ var next = elementRef.current && elementRef.current.nextElementSibling;
2236
+ if (next && next.classList.contains('p-frozen-column')) {
2237
+ right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
2238
+ }
2239
+ styleObject.right = right + 'px';
2240
+ } else {
2241
+ var left = 0;
2242
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
2243
+ if (prev && prev.classList.contains('p-frozen-column')) {
2244
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2245
+ }
2246
+ styleObject.left = left + 'px';
2247
+ }
2248
+ var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
2249
+ !isSameStyle && setStyleObjectState(styleObject);
2250
+ }
2251
+ }, []);
2252
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener, isOutsideClicked) {
2253
+ if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2254
+ selfClick.current = true;
2255
+ var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2256
+ var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2257
+ var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
2258
+ if (onBeforeCellEditShow) {
2259
+ // if user returns false do not show the editor
2260
+ if (onBeforeCellEditShow(params) === false) {
2261
+ return;
2262
+ }
2263
+
2264
+ // if user prevents default stop the editor
2265
+ if (event && event.defaultPrevented) {
2266
+ return;
2267
+ }
2268
+ }
2269
+
2270
+ // 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.
2271
+ setTimeout(function () {
2272
+ setEditingState(true);
2273
+ if (onCellEditInit) {
2274
+ if (onCellEditInit(params) === false) {
2275
+ return;
2276
+ }
2277
+
2278
+ // if user prevents default stop the editor
2279
+ if (event && event.defaultPrevented) {
2280
+ return;
2281
+ }
2282
+ }
2283
+ if (cellEditValidatorEvent === 'click') {
2284
+ bindDocumentClickListener();
2285
+ overlayEventListener.current = function (e) {
2286
+ if (!isOutsideClicked(e.target)) {
2287
+ selfClick.current = true;
2288
+ }
2289
+ };
2290
+ overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
2291
+ }
2292
+ }, 1);
2293
+ }
2294
+ if (props.allowCellSelection && props.onCellClick) {
2295
+ props.onCellClick(params);
2296
+ }
2297
+ };
2294
2298
  var createContent = function createContent() {
2295
2299
  return props.columns.map(function (col, i) {
2296
2300
  if (shouldRenderBodyCell(props.value, col, props.index)) {
2297
2301
  var key = "".concat(props.rowIndex, "_").concat(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'), "_").concat(i);
2298
2302
  var rowSpan = props.rowGroupMode === 'rowspan' ? calculateRowGroupSize(props.value, col, props.index) : null;
2299
- return /*#__PURE__*/React__namespace.createElement(BodyCell, {
2303
+ var field = getColumnProp(col, 'field') || "field_".concat(i);
2304
+ var resolveFieldData = function resolveFieldData(data) {
2305
+ return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
2306
+ };
2307
+ var selectionMode = getColumnProp(col, 'selectionMode');
2308
+ var cellProps = mergeProps({
2300
2309
  hostName: props.hostName,
2301
- key: key,
2302
2310
  allowCellSelection: props.allowCellSelection,
2311
+ cellMemo: props.cellMemo,
2312
+ cellMemoProps: props.cellMemoProps,
2313
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
2303
2314
  cellClassName: props.cellClassName,
2304
2315
  checkIcon: props.checkIcon,
2305
2316
  collapsedRowIcon: props.collapsedRowIcon,
2317
+ field: field,
2318
+ resolveFieldData: resolveFieldData,
2306
2319
  column: col,
2307
- compareSelectionBy: props.compareSelectionBy,
2320
+ cProps: props.colsProps[i],
2308
2321
  dataKey: props.dataKey,
2309
2322
  editMode: props.editMode,
2310
2323
  editing: editing,
2311
2324
  editingMeta: props.editingMeta,
2325
+ onEditingMetaChange: props.onEditingMetaChange,
2326
+ editingKey: editingKey,
2327
+ getEditingRowData: getEditingRowData,
2312
2328
  expanded: props.expanded,
2313
2329
  expandedRowIcon: props.expandedRowIcon,
2314
2330
  frozenRow: props.frozenRow,
2331
+ frozenCol: getColumnProp(col, 'frozen'),
2332
+ alignFrozenCol: getColumnProp(col, 'alignFrozen'),
2315
2333
  index: i,
2316
2334
  isSelectable: props.isSelectable,
2317
- onCheckboxChange: props.onCheckboxChange,
2318
- onClick: props.onCellClick,
2319
- onEditingMetaChange: props.onEditingMetaChange,
2335
+ onCheckboxChange: onCheckboxChange,
2336
+ onClick: onCellClick,
2320
2337
  onMouseDown: props.onCellMouseDown,
2321
2338
  onMouseUp: props.onCellMouseUp,
2322
2339
  onRadioChange: props.onRadioChange,
@@ -2332,20 +2349,31 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2332
2349
  rowIndex: props.rowIndex,
2333
2350
  rowSpan: rowSpan,
2334
2351
  selectOnEdit: props.selectOnEdit,
2335
- selected: props.selected,
2336
- selection: props.selection,
2352
+ isRowSelected: isRowSelected,
2353
+ isCellSelected: isCellSelected(props.selection, field, i),
2337
2354
  selectionAriaLabel: props.tableProps.selectionAriaLabel,
2338
2355
  showRowReorderElement: props.showRowReorderElement,
2339
2356
  showSelectionElement: props.showSelectionElement,
2340
2357
  tabIndex: props.tabIndex,
2358
+ getTabIndex: getTabIndexCell,
2341
2359
  tableProps: props.tableProps,
2342
2360
  tableSelector: props.tableSelector,
2343
2361
  value: props.value,
2344
- virtualScrollerOptions: props.virtualScrollerOptions,
2362
+ getVirtualScrollerOption: getVirtualScrollerOption,
2345
2363
  ptCallbacks: props.ptCallbacks,
2346
2364
  metaData: props.metaData,
2347
- unstyled: props.unstyled
2365
+ unstyled: props.unstyled,
2366
+ findNextSelectableCell: findNextSelectableCell,
2367
+ findPrevSelectableCell: findPrevSelectableCell,
2368
+ findDownSelectableCell: findDownSelectableCell,
2369
+ findUpSelectableCell: findUpSelectableCell,
2370
+ focusOnElement: focusOnElement,
2371
+ focusOnInit: focusOnInit,
2372
+ updateStickyPosition: updateStickyPosition
2348
2373
  });
2374
+ return /*#__PURE__*/React__namespace.createElement(React.Fragment, {
2375
+ key: key
2376
+ }, selectionMode ? /*#__PURE__*/React__namespace.createElement(RadioCheckCell, cellProps) : /*#__PURE__*/React__namespace.createElement(BodyCell, cellProps));
2349
2377
  }
2350
2378
  return null;
2351
2379
  });
@@ -2495,8 +2523,11 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2495
2523
  var getColumnProps = function getColumnProps(column) {
2496
2524
  return ColumnBase.getCProps(column);
2497
2525
  };
2526
+ var cProps = getColumnProps(props.column);
2527
+ var colsProps = props.columns ? props.columns.map(function (col) {
2528
+ return getColumnProps(col);
2529
+ }) : [];
2498
2530
  var getColumnPTOptions = function getColumnPTOptions(key) {
2499
- var cProps = getColumnProps(props.column);
2500
2531
  var columnMetaData = {
2501
2532
  props: cProps,
2502
2533
  parent: props.metaData,
@@ -2621,8 +2652,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2621
2652
  var allowSelection = function allowSelection(event) {
2622
2653
  return !utils.DomHandler.isClickable(event.originalEvent.target);
2623
2654
  };
2655
+ var metaKeySelectionRef = React__namespace.useRef(props.metaKeySelection);
2656
+ React__namespace.useEffect(function () {
2657
+ metaKeySelectionRef.current = props.metaKeySelection;
2658
+ }, [props.metaKeySelection]);
2624
2659
  var allowMetaKeySelection = function allowMetaKeySelection(event) {
2625
- return !rowTouched.current && (!props.metaKeySelection || props.metaKeySelection && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2660
+ return !rowTouched.current && (!metaKeySelectionRef.current || metaKeySelectionRef.current && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2626
2661
  };
2627
2662
  var allowRangeSelection = function allowRangeSelection(event) {
2628
2663
  return isMultipleSelection() && event.originalEvent.shiftKey && anchorRowIndex.current !== null;
@@ -2643,9 +2678,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2643
2678
  options = options || props.virtualScrollerOptions;
2644
2679
  return options ? options[option] : null;
2645
2680
  };
2646
- var getProcessedDataIndex = function getProcessedDataIndex(rowIndex) {
2647
- return props.lazy ? rowIndex - props.first : rowIndex;
2648
- };
2649
2681
  var findIndex = function findIndex(collection, rowData) {
2650
2682
  return (collection || []).findIndex(function (data) {
2651
2683
  return equals(rowData, data);
@@ -2695,6 +2727,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2695
2727
  });
2696
2728
  }
2697
2729
  };
2730
+ var selectionRef = React__namespace.useRef(props.selection);
2731
+ React__namespace.useEffect(function () {
2732
+ selectionRef.current = props.selection;
2733
+ }, [props.selection]);
2698
2734
  var onSingleSelection = function onSingleSelection(_ref) {
2699
2735
  var originalEvent = _ref.originalEvent,
2700
2736
  data = _ref.data,
@@ -2708,10 +2744,11 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2708
2744
  return;
2709
2745
  }
2710
2746
  var selected = isSelected(data);
2711
- var selection = props.selection;
2747
+ var currentSelection = selectionRef.current || [];
2748
+ var newSelection = currentSelection;
2712
2749
  if (selected) {
2713
2750
  if (toggleable) {
2714
- selection = null;
2751
+ newSelection = null;
2715
2752
  onUnselect({
2716
2753
  originalEvent: originalEvent,
2717
2754
  data: data,
@@ -2719,7 +2756,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2719
2756
  });
2720
2757
  }
2721
2758
  } else {
2722
- selection = data;
2759
+ newSelection = data;
2723
2760
  onSelect({
2724
2761
  originalEvent: originalEvent,
2725
2762
  data: data,
@@ -2727,10 +2764,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2727
2764
  });
2728
2765
  }
2729
2766
  focusOnElement(originalEvent, true);
2730
- if (props.onSelectionChange && selection !== props.selection) {
2767
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2731
2768
  props.onSelectionChange({
2732
2769
  originalEvent: originalEvent,
2733
- value: selection,
2770
+ value: newSelection,
2734
2771
  type: type
2735
2772
  });
2736
2773
  }
@@ -2748,11 +2785,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2748
2785
  return;
2749
2786
  }
2750
2787
  var selected = isSelected(data);
2751
- var selection = props.selection || [];
2788
+ var currentSelection = selectionRef.current || [];
2789
+ var newSelection = currentSelection;
2752
2790
  if (selected) {
2753
2791
  if (toggleable) {
2754
- var selectionIndex = findIndex(selection, data);
2755
- selection = props.selection.filter(function (val, i) {
2792
+ var selectionIndex = findIndex(currentSelection, data);
2793
+ newSelection = currentSelection.filter(function (val, i) {
2756
2794
  return i !== selectionIndex;
2757
2795
  });
2758
2796
  onUnselect({
@@ -2760,15 +2798,15 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2760
2798
  data: data,
2761
2799
  type: type
2762
2800
  });
2763
- } else if (selection.length) {
2764
- props.selection.forEach(function (d) {
2801
+ } else if (currentSelection.length) {
2802
+ currentSelection.forEach(function (d) {
2765
2803
  return onUnselect({
2766
2804
  originalEvent: originalEvent,
2767
2805
  data: d,
2768
2806
  type: type
2769
2807
  });
2770
2808
  });
2771
- selection = [data];
2809
+ newSelection = [data];
2772
2810
  onSelect({
2773
2811
  originalEvent: originalEvent,
2774
2812
  data: data,
@@ -2776,18 +2814,18 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2776
2814
  });
2777
2815
  }
2778
2816
  } else {
2779
- selection = utils.ObjectUtils.isObject(selection) ? [selection] : selection;
2780
- selection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(selection), [data]) : [data];
2817
+ newSelection = utils.ObjectUtils.isObject(currentSelection) ? [currentSelection] : currentSelection;
2818
+ newSelection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(newSelection), [data]) : [data];
2781
2819
  onSelect({
2782
2820
  originalEvent: originalEvent,
2783
2821
  data: data,
2784
2822
  type: type
2785
2823
  });
2786
2824
  }
2787
- if (props.onSelectionChange && selection !== props.selection) {
2825
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2788
2826
  props.onSelectionChange({
2789
2827
  originalEvent: originalEvent,
2790
- value: selection,
2828
+ value: newSelection,
2791
2829
  type: type
2792
2830
  });
2793
2831
  }
@@ -2810,16 +2848,14 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2810
2848
  var rangeStart;
2811
2849
  var rangeEnd;
2812
2850
  var isAllowCellSelection = allowCellSelection();
2813
- var rangeRowIndexInProcessedData = getProcessedDataIndex(rangeRowIndex.current);
2814
- var anchorRowIndexInProcessedData = getProcessedDataIndex(anchorRowIndex.current);
2815
- if (rangeRowIndexInProcessedData > anchorRowIndexInProcessedData) {
2816
- rangeStart = anchorRowIndexInProcessedData;
2817
- rangeEnd = rangeRowIndexInProcessedData;
2818
- } else if (rangeRowIndexInProcessedData < anchorRowIndexInProcessedData) {
2819
- rangeStart = rangeRowIndexInProcessedData;
2820
- rangeEnd = anchorRowIndexInProcessedData;
2851
+ if (rangeRowIndex.current > anchorRowIndex.current) {
2852
+ rangeStart = anchorRowIndex.current;
2853
+ rangeEnd = rangeRowIndex.current;
2854
+ } else if (rangeRowIndex.current < anchorRowIndex.current) {
2855
+ rangeStart = rangeRowIndex.current;
2856
+ rangeEnd = anchorRowIndex.current;
2821
2857
  } else {
2822
- rangeStart = rangeEnd = rangeRowIndexInProcessedData;
2858
+ rangeStart = rangeEnd = rangeRowIndex.current;
2823
2859
  }
2824
2860
  return isAllowCellSelection ? selectRangeOnCell(event, rangeStart, rangeEnd) : selectRangeOnRow(event, rangeStart, rangeEnd);
2825
2861
  };
@@ -2860,7 +2896,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2860
2896
  for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
2861
2897
  var rowData = value[i];
2862
2898
  var columns = props.columns;
2863
- var rowIndex = props.lazy ? i + props.first : i;
2899
+ var rowIndex = props.paginator ? i + props.first : i;
2864
2900
  for (var j = cellRangeStart; j <= cellRangeEnd; j++) {
2865
2901
  var field = getColumnProp(columns[j], 'field');
2866
2902
  var _value = utils.ObjectUtils.resolveFieldData(rowData, field);
@@ -3059,13 +3095,17 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3059
3095
  onRangeSelection(event, 'row');
3060
3096
  }
3061
3097
  };
3098
+ var expandedRowsRef = React__namespace.useRef(props.expandedRows);
3099
+ React__namespace.useEffect(function () {
3100
+ expandedRowsRef.current = props.expandedRows;
3101
+ }, [props.expandedRows]);
3062
3102
  var onRowToggle = function onRowToggle(event) {
3063
3103
  var expandedRows;
3064
3104
  var dataKey = props.dataKey;
3065
3105
  var hasDataKey = props.groupRowsBy ? dataKey === props.groupRowsBy : !!dataKey;
3066
3106
  if (hasDataKey) {
3067
3107
  var dataKeyValue = String(utils.ObjectUtils.resolveFieldData(event.data, dataKey));
3068
- expandedRows = props.expandedRows ? _objectSpread$8({}, props.expandedRows) : {};
3108
+ expandedRows = expandedRowsRef.current ? _objectSpread$8({}, expandedRowsRef.current) : {};
3069
3109
  if (expandedRows[dataKeyValue] != null) {
3070
3110
  delete expandedRows[dataKeyValue];
3071
3111
  if (props.onRowCollapse) {
@@ -3084,8 +3124,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3084
3124
  }
3085
3125
  }
3086
3126
  } else {
3087
- var expandedRowIndex = findIndex(props.expandedRows, event.data);
3088
- expandedRows = props.expandedRows ? _toConsumableArray(props.expandedRows) : [];
3127
+ var expandedRowIndex = findIndex(expandedRowsRef.current, event.data);
3128
+ expandedRows = expandedRowsRef.current ? _toConsumableArray(expandedRowsRef.current) : [];
3089
3129
  if (expandedRowIndex !== -1) {
3090
3130
  expandedRows = expandedRows.filter(function (_, i) {
3091
3131
  return i !== expandedRowIndex;
@@ -3335,7 +3375,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3335
3375
  return null;
3336
3376
  };
3337
3377
  var createGroupHeader = function createGroupHeader(rowData, rowIndex, expanded, colSpan) {
3338
- if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, getProcessedDataIndex(rowIndex))) {
3378
+ if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, rowIndex - props.first)) {
3339
3379
  var style = rowGroupHeaderStyle();
3340
3380
  var toggler = props.expandableRowGroups && /*#__PURE__*/React__namespace.createElement(RowTogglerButton, {
3341
3381
  hostName: props.hostName,
@@ -3385,10 +3425,14 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3385
3425
  hostName: props.hostName,
3386
3426
  allowCellSelection: _allowCellSelection,
3387
3427
  allowRowSelection: _allowRowSelection,
3428
+ cellMemo: props.cellMemo,
3429
+ cellMemoProps: props.cellMemoProps,
3430
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
3388
3431
  cellClassName: props.cellClassName,
3389
3432
  checkIcon: props.checkIcon,
3390
3433
  collapsedRowIcon: props.collapsedRowIcon,
3391
3434
  columns: props.columns,
3435
+ colsProps: colsProps,
3392
3436
  compareSelectionBy: props.compareSelectionBy,
3393
3437
  contextMenuSelected: contextMenuSelected,
3394
3438
  dataKey: props.dataKey,
@@ -3776,6 +3820,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3776
3820
  EQUALS: 'equals',
3777
3821
  NOT_EQUALS: 'notEquals',
3778
3822
  IN: 'in',
3823
+ NOT_IN: 'notIn',
3779
3824
  LESS_THAN: 'lt',
3780
3825
  LESS_THAN_OR_EQUAL_TO: 'lte',
3781
3826
  GREATER_THAN: 'gt',
@@ -3864,6 +3909,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3864
3909
  emptySelectionMessage: 'No selected item',
3865
3910
  endsWith: 'Ends with',
3866
3911
  equals: 'Equals',
3912
+ fileChosenMessage: '{0} files',
3867
3913
  fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
3868
3914
  filter: 'Filter',
3869
3915
  firstDayOfWeek: 0,
@@ -3882,6 +3928,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3882
3928
  nextMonth: 'Next Month',
3883
3929
  nextSecond: 'Next Second',
3884
3930
  nextYear: 'Next Year',
3931
+ noFileChosenMessage: 'No file chosen',
3885
3932
  noFilter: 'No Filter',
3886
3933
  notContains: 'Not contains',
3887
3934
  notEquals: 'Not equals',
@@ -3909,8 +3956,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3909
3956
  aria: {
3910
3957
  cancelEdit: 'Cancel Edit',
3911
3958
  close: 'Close',
3959
+ collapseLabel: 'Collapse',
3912
3960
  collapseRow: 'Row Collapsed',
3913
3961
  editRow: 'Edit Row',
3962
+ expandLabel: 'Expand',
3914
3963
  expandRow: 'Row Expanded',
3915
3964
  falseLabel: 'False',
3916
3965
  filterConstraint: 'Filter Constraint',
@@ -3935,18 +3984,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3935
3984
  next: 'Next',
3936
3985
  nextPageLabel: 'Next Page',
3937
3986
  nullLabel: 'Not Selected',
3938
- pageLabel: 'Page {page}',
3939
3987
  otpLabel: 'Please enter one time password character {0}',
3988
+ pageLabel: 'Page {page}',
3940
3989
  passwordHide: 'Hide Password',
3941
3990
  passwordShow: 'Show Password',
3942
3991
  previous: 'Previous',
3943
3992
  prevPageLabel: 'Previous Page',
3993
+ removeLabel: 'Remove',
3944
3994
  rotateLeft: 'Rotate Left',
3945
3995
  rotateRight: 'Rotate Right',
3946
3996
  rowsPerPageLabel: 'Rows per page',
3947
3997
  saveEdit: 'Save Edit',
3948
3998
  scrollTop: 'Scroll Top',
3949
3999
  selectAll: 'All items selected',
4000
+ selectLabel: 'Select',
3950
4001
  selectRow: 'Row Selected',
3951
4002
  showFilterMenu: 'Show Filter Menu',
3952
4003
  slide: 'Slide',
@@ -3955,6 +4006,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3955
4006
  stars: '{star} stars',
3956
4007
  trueLabel: 'True',
3957
4008
  unselectAll: 'All items unselected',
4009
+ unselectLabel: 'Unselect',
3958
4010
  unselectRow: 'Row Unselected',
3959
4011
  zoomImage: 'Zoom Image',
3960
4012
  zoomIn: 'Zoom In',
@@ -4172,9 +4224,17 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
4172
4224
  var type = _ref.type,
4173
4225
  valid = _ref.valid;
4174
4226
  if (valid) {
4175
- type === 'outside' ? !selfClick.current && !isTargetClicked(event.target) && hide() : hide();
4227
+ if (type === 'outside') {
4228
+ if (!selfClick.current && !isTargetClicked(event.target)) {
4229
+ hide();
4230
+ }
4231
+ selfClick.current = false;
4232
+ } else if (context.hideOverlaysOnDocumentScrolling) {
4233
+ hide();
4234
+ } else if (!utils.DomHandler.isDocument(event.target)) {
4235
+ utils.DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact__default["default"].appendTo, false);
4236
+ }
4176
4237
  }
4177
- selfClick.current = false;
4178
4238
  },
4179
4239
  when: overlayVisibleState
4180
4240
  }),
@@ -6873,58 +6933,60 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
6873
6933
  var exportCSV = function exportCSV(options) {
6874
6934
  var data;
6875
6935
  var csv = "\uFEFF";
6876
- var columns = getColumns();
6877
6936
  if (options && options.selectionOnly) {
6878
6937
  data = props.selection || [];
6879
6938
  } else {
6880
6939
  data = [].concat(_toConsumableArray(props.frozenValue || []), _toConsumableArray(processedData() || []));
6881
6940
  }
6882
6941
 
6883
- //headers
6884
- columns.forEach(function (column, i) {
6885
- var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader'), getColumnProp(column, 'exportable')],
6942
+ // First build collection of exportable columns
6943
+ var exportableColumns = getColumns().filter(function (column) {
6944
+ var exportable = getColumnProp(column, 'exportable');
6945
+ var field = getColumnProp(column, 'field');
6946
+
6947
+ // Column must be exportable (or undefined/not set) and have a field defined
6948
+ return exportable !== false && field;
6949
+ });
6950
+
6951
+ // headers
6952
+ exportableColumns.forEach(function (column, i) {
6953
+ var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader')],
6886
6954
  field = _ref5[0],
6887
6955
  header = _ref5[1],
6888
- exportHeader = _ref5[2],
6889
- exportable = _ref5[3];
6890
- if (exportable && field) {
6891
- var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6892
- csv = csv + ('"' + columnHeader + '"');
6893
- if (i < columns.length - 1) {
6894
- csv = csv + props.csvSeparator;
6895
- }
6956
+ exportHeader = _ref5[2];
6957
+ var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6958
+ csv = csv + ('"' + columnHeader + '"');
6959
+ if (i < exportableColumns.length - 1) {
6960
+ csv = csv + props.csvSeparator;
6896
6961
  }
6897
6962
  });
6898
6963
 
6899
- //body
6964
+ // body
6900
6965
  data.forEach(function (record) {
6901
6966
  csv = csv + '\n';
6902
- columns.forEach(function (column, i) {
6903
- var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField'), getColumnProp(column, 'exportable')],
6967
+ exportableColumns.forEach(function (column, i) {
6968
+ var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField')],
6904
6969
  colField = _ref6[0],
6905
- exportField = _ref6[1],
6906
- exportable = _ref6[2];
6970
+ exportField = _ref6[1];
6907
6971
  var field = exportField || colField;
6908
- if (exportable && field) {
6909
- var cellData = utils.ObjectUtils.resolveFieldData(record, field);
6910
- if (cellData != null) {
6911
- if (props.exportFunction) {
6912
- cellData = props.exportFunction({
6913
- data: cellData,
6914
- field: field,
6915
- rowData: record,
6916
- column: column
6917
- });
6918
- } else {
6919
- cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6920
- }
6972
+ var cellData = utils.ObjectUtils.resolveFieldData(record, field);
6973
+ if (cellData != null) {
6974
+ if (props.exportFunction) {
6975
+ cellData = props.exportFunction({
6976
+ data: cellData,
6977
+ field: field,
6978
+ rowData: record,
6979
+ column: column
6980
+ });
6921
6981
  } else {
6922
- cellData = '';
6923
- }
6924
- csv = csv + ('"' + cellData + '"');
6925
- if (i < columns.length - 1) {
6926
- csv = csv + props.csvSeparator;
6982
+ cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6927
6983
  }
6984
+ } else {
6985
+ cellData = '';
6986
+ }
6987
+ csv = csv + ('"' + cellData + '"');
6988
+ if (i < exportableColumns.length - 1) {
6989
+ csv = csv + props.csvSeparator;
6928
6990
  }
6929
6991
  });
6930
6992
  });
@@ -7189,6 +7251,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
7189
7251
  var frozenBody = utils.ObjectUtils.isNotEmpty(props.frozenValue) && /*#__PURE__*/React__namespace.createElement(TableBody, {
7190
7252
  hostName: "DataTable",
7191
7253
  ref: frozenBodyRef,
7254
+ cellMemo: props.cellMemo,
7255
+ cellMemoProps: props.cellMemoProps,
7256
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7192
7257
  cellClassName: props.cellClassName,
7193
7258
  cellSelection: props.cellSelection,
7194
7259
  checkIcon: props.checkIcon,
@@ -7273,6 +7338,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
7273
7338
  var body = /*#__PURE__*/React__namespace.createElement(TableBody, {
7274
7339
  hostName: "DataTable",
7275
7340
  ref: bodyRef,
7341
+ cellMemo: props.cellMemo,
7342
+ cellMemoProps: props.cellMemoProps,
7343
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7276
7344
  cellClassName: props.cellClassName,
7277
7345
  cellSelection: props.cellSelection,
7278
7346
  checkIcon: props.checkIcon,