primereact 10.9.4 → 10.9.5

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 (195) hide show
  1. package/autocomplete/autocomplete.cjs.js +13 -1
  2. package/autocomplete/autocomplete.cjs.min.js +1 -1
  3. package/autocomplete/autocomplete.esm.js +14 -2
  4. package/autocomplete/autocomplete.esm.min.js +1 -1
  5. package/autocomplete/autocomplete.js +13 -1
  6. package/autocomplete/autocomplete.min.js +1 -1
  7. package/breadcrumb/breadcrumb.cjs.js +2 -1
  8. package/breadcrumb/breadcrumb.cjs.min.js +1 -1
  9. package/breadcrumb/breadcrumb.esm.js +2 -1
  10. package/breadcrumb/breadcrumb.esm.min.js +1 -1
  11. package/breadcrumb/breadcrumb.js +2 -1
  12. package/breadcrumb/breadcrumb.min.js +1 -1
  13. package/calendar/calendar.cjs.js +10 -2
  14. package/calendar/calendar.cjs.min.js +1 -1
  15. package/calendar/calendar.esm.js +11 -3
  16. package/calendar/calendar.esm.min.js +1 -1
  17. package/calendar/calendar.js +10 -2
  18. package/calendar/calendar.min.js +1 -1
  19. package/cascadeselect/cascadeselect.cjs.js +9 -2
  20. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  21. package/cascadeselect/cascadeselect.d.ts +9 -0
  22. package/cascadeselect/cascadeselect.esm.js +9 -2
  23. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  24. package/cascadeselect/cascadeselect.js +9 -2
  25. package/cascadeselect/cascadeselect.min.js +1 -1
  26. package/checkbox/checkbox.cjs.js +1 -1
  27. package/checkbox/checkbox.cjs.min.js +1 -1
  28. package/checkbox/checkbox.esm.js +1 -1
  29. package/checkbox/checkbox.esm.min.js +1 -1
  30. package/checkbox/checkbox.js +1 -1
  31. package/checkbox/checkbox.min.js +1 -1
  32. package/chip/chip.cjs.js +15 -2
  33. package/chip/chip.cjs.min.js +1 -1
  34. package/chip/chip.esm.js +17 -4
  35. package/chip/chip.esm.min.js +1 -1
  36. package/chip/chip.js +15 -2
  37. package/chip/chip.min.js +1 -1
  38. package/chips/chips.cjs.js +1 -1
  39. package/chips/chips.cjs.min.js +1 -1
  40. package/chips/chips.esm.js +1 -1
  41. package/chips/chips.esm.min.js +1 -1
  42. package/chips/chips.js +1 -1
  43. package/chips/chips.min.js +1 -1
  44. package/colorpicker/colorpicker.cjs.js +9 -2
  45. package/colorpicker/colorpicker.cjs.min.js +1 -1
  46. package/colorpicker/colorpicker.esm.js +9 -2
  47. package/colorpicker/colorpicker.esm.min.js +1 -1
  48. package/colorpicker/colorpicker.js +9 -2
  49. package/colorpicker/colorpicker.min.js +1 -1
  50. package/confirmpopup/confirmpopup.cjs.js +10 -2
  51. package/confirmpopup/confirmpopup.cjs.min.js +1 -1
  52. package/confirmpopup/confirmpopup.esm.js +10 -2
  53. package/confirmpopup/confirmpopup.esm.min.js +1 -1
  54. package/confirmpopup/confirmpopup.js +10 -2
  55. package/confirmpopup/confirmpopup.min.js +1 -1
  56. package/core/core.js +172 -30
  57. package/core/core.min.js +6 -6
  58. package/datatable/datatable.cjs.js +278 -238
  59. package/datatable/datatable.cjs.min.js +1 -1
  60. package/datatable/datatable.esm.js +279 -239
  61. package/datatable/datatable.esm.min.js +1 -1
  62. package/datatable/datatable.js +278 -238
  63. package/datatable/datatable.min.js +1 -1
  64. package/dropdown/dropdown.cjs.js +13 -2
  65. package/dropdown/dropdown.cjs.min.js +1 -1
  66. package/dropdown/dropdown.d.ts +4 -0
  67. package/dropdown/dropdown.esm.js +13 -2
  68. package/dropdown/dropdown.esm.min.js +1 -1
  69. package/dropdown/dropdown.js +13 -2
  70. package/dropdown/dropdown.min.js +1 -1
  71. package/hooks/hooks.cjs.js +16 -6
  72. package/hooks/hooks.cjs.min.js +1 -1
  73. package/hooks/hooks.esm.js +16 -6
  74. package/hooks/hooks.esm.min.js +1 -1
  75. package/hooks/hooks.js +16 -6
  76. package/hooks/hooks.min.js +1 -1
  77. package/inputmask/inputmask.cjs.js +1 -1
  78. package/inputmask/inputmask.cjs.min.js +1 -1
  79. package/inputmask/inputmask.esm.js +1 -1
  80. package/inputmask/inputmask.esm.min.js +1 -1
  81. package/inputmask/inputmask.js +1 -1
  82. package/inputmask/inputmask.min.js +1 -1
  83. package/inputnumber/inputnumber.cjs.js +5 -2
  84. package/inputnumber/inputnumber.cjs.min.js +1 -1
  85. package/inputnumber/inputnumber.esm.js +5 -2
  86. package/inputnumber/inputnumber.esm.min.js +1 -1
  87. package/inputnumber/inputnumber.js +5 -2
  88. package/inputnumber/inputnumber.min.js +1 -1
  89. package/inputotp/inputotp.cjs.js +1 -0
  90. package/inputotp/inputotp.cjs.min.js +1 -1
  91. package/inputotp/inputotp.esm.js +1 -0
  92. package/inputotp/inputotp.esm.min.js +1 -1
  93. package/inputotp/inputotp.js +1 -0
  94. package/inputotp/inputotp.min.js +1 -1
  95. package/mention/mention.cjs.js +18 -9
  96. package/mention/mention.cjs.min.js +1 -1
  97. package/mention/mention.d.ts +5 -0
  98. package/mention/mention.esm.js +18 -9
  99. package/mention/mention.esm.min.js +1 -1
  100. package/mention/mention.js +18 -9
  101. package/mention/mention.min.js +1 -1
  102. package/menu/menu.cjs.js +11 -3
  103. package/menu/menu.cjs.min.js +1 -1
  104. package/menu/menu.esm.js +12 -4
  105. package/menu/menu.esm.min.js +1 -1
  106. package/menu/menu.js +11 -3
  107. package/menu/menu.min.js +1 -1
  108. package/menubar/menubar.cjs.js +6 -9
  109. package/menubar/menubar.cjs.min.js +1 -1
  110. package/menubar/menubar.esm.js +6 -9
  111. package/menubar/menubar.esm.min.js +1 -1
  112. package/menubar/menubar.js +6 -9
  113. package/menubar/menubar.min.js +1 -1
  114. package/multiselect/multiselect.cjs.js +7 -3
  115. package/multiselect/multiselect.cjs.min.js +1 -1
  116. package/multiselect/multiselect.esm.js +7 -3
  117. package/multiselect/multiselect.esm.min.js +1 -1
  118. package/multiselect/multiselect.js +7 -3
  119. package/multiselect/multiselect.min.js +1 -1
  120. package/multistatecheckbox/multistatecheckbox.cjs.js +1 -1
  121. package/multistatecheckbox/multistatecheckbox.cjs.min.js +1 -1
  122. package/multistatecheckbox/multistatecheckbox.esm.js +1 -1
  123. package/multistatecheckbox/multistatecheckbox.esm.min.js +1 -1
  124. package/multistatecheckbox/multistatecheckbox.js +1 -1
  125. package/multistatecheckbox/multistatecheckbox.min.js +1 -1
  126. package/orderlist/orderlist.cjs.js +34 -3
  127. package/orderlist/orderlist.cjs.min.js +1 -1
  128. package/orderlist/orderlist.esm.js +34 -3
  129. package/orderlist/orderlist.esm.min.js +1 -1
  130. package/orderlist/orderlist.js +34 -3
  131. package/orderlist/orderlist.min.js +1 -1
  132. package/overlaypanel/overlaypanel.cjs.js +9 -10
  133. package/overlaypanel/overlaypanel.cjs.min.js +1 -1
  134. package/overlaypanel/overlaypanel.esm.js +9 -10
  135. package/overlaypanel/overlaypanel.esm.min.js +1 -1
  136. package/overlaypanel/overlaypanel.js +9 -10
  137. package/overlaypanel/overlaypanel.min.js +1 -1
  138. package/package.json +1 -1
  139. package/password/password.cjs.js +9 -2
  140. package/password/password.cjs.min.js +1 -1
  141. package/password/password.esm.js +10 -3
  142. package/password/password.esm.min.js +1 -1
  143. package/password/password.js +9 -2
  144. package/password/password.min.js +1 -1
  145. package/primereact.all.cjs.js +641 -334
  146. package/primereact.all.cjs.min.js +1 -1
  147. package/primereact.all.esm.js +642 -335
  148. package/primereact.all.esm.min.js +1 -1
  149. package/primereact.all.js +641 -334
  150. package/primereact.all.min.js +1 -1
  151. package/radiobutton/radiobutton.cjs.js +2 -2
  152. package/radiobutton/radiobutton.cjs.min.js +1 -1
  153. package/radiobutton/radiobutton.d.ts +1 -1
  154. package/radiobutton/radiobutton.esm.js +2 -2
  155. package/radiobutton/radiobutton.esm.min.js +1 -1
  156. package/radiobutton/radiobutton.js +2 -2
  157. package/radiobutton/radiobutton.min.js +1 -1
  158. package/slidemenu/slidemenu.cjs.js +9 -2
  159. package/slidemenu/slidemenu.cjs.min.js +1 -1
  160. package/slidemenu/slidemenu.esm.js +10 -3
  161. package/slidemenu/slidemenu.esm.min.js +1 -1
  162. package/slidemenu/slidemenu.js +9 -2
  163. package/slidemenu/slidemenu.min.js +1 -1
  164. package/tree/tree.cjs.js +1 -1
  165. package/tree/tree.cjs.min.js +1 -1
  166. package/tree/tree.esm.js +1 -1
  167. package/tree/tree.esm.min.js +1 -1
  168. package/tree/tree.js +1 -1
  169. package/tree/tree.min.js +1 -1
  170. package/treeselect/treeselect.cjs.js +15 -8
  171. package/treeselect/treeselect.cjs.min.js +1 -1
  172. package/treeselect/treeselect.esm.js +15 -8
  173. package/treeselect/treeselect.esm.min.js +1 -1
  174. package/treeselect/treeselect.js +15 -8
  175. package/treeselect/treeselect.min.js +1 -1
  176. package/treetable/treetable.cjs.js +1 -1
  177. package/treetable/treetable.cjs.min.js +1 -1
  178. package/treetable/treetable.esm.js +1 -1
  179. package/treetable/treetable.esm.min.js +1 -1
  180. package/treetable/treetable.js +1 -1
  181. package/treetable/treetable.min.js +1 -1
  182. package/tristatecheckbox/tristatecheckbox.cjs.js +6 -6
  183. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  184. package/tristatecheckbox/tristatecheckbox.esm.js +6 -6
  185. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  186. package/tristatecheckbox/tristatecheckbox.js +6 -6
  187. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  188. package/utils/utils.cjs.js +136 -18
  189. package/utils/utils.cjs.min.js +1 -1
  190. package/utils/utils.d.ts +5 -1
  191. package/utils/utils.esm.js +136 -18
  192. package/utils/utils.esm.min.js +1 -1
  193. package/utils/utils.js +136 -18
  194. package/utils/utils.min.js +1 -1
  195. package/web-types.json +29 -2
@@ -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);
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();
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,22 @@ 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 BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1798
+ return /*#__PURE__*/React__namespace.createElement(Cell, props);
1799
+ }, function (prevProps, nextProps) {
1800
+ var keysToCompare = ['field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData', 'frozenCol', 'alignFrozenCol'];
1801
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1940
1802
  });
1941
1803
  BodyCell.displayName = 'BodyCell';
1942
1804
 
@@ -1952,6 +1814,7 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
1952
1814
  var _props$ptCallbacks = props.ptCallbacks,
1953
1815
  ptm = _props$ptCallbacks.ptm,
1954
1816
  cx = _props$ptCallbacks.cx;
1817
+ var isRowSelected = !props.allowCellSelection && props.selected || props.contextMenuSelected;
1955
1818
  var getBodyRowPTOptions = function getBodyRowPTOptions(key) {
1956
1819
  return ptm(key, {
1957
1820
  parent: props.metaData,
@@ -1965,7 +1828,7 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
1965
1828
  data: props.rowData,
1966
1829
  index: props.rowIndex
1967
1830
  }),
1968
- selected: !props.allowCellSelection && props.selected || props.contextMenuSelected,
1831
+ selected: isRowSelected,
1969
1832
  stripedRows: props.metaData.props.stripedRows
1970
1833
  }
1971
1834
  });
@@ -1994,10 +1857,10 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
1994
1857
  return equals(rowData, data);
1995
1858
  });
1996
1859
  };
1997
- var changeTabIndex = function changeTabIndex(currentRow, nextRow) {
1998
- if (currentRow && nextRow) {
1999
- currentRow.tabIndex = -1;
2000
- nextRow.tabIndex = props.tabIndex;
1860
+ var changeTabIndex = function changeTabIndex(currentElement, nextElement) {
1861
+ if (currentElement && nextElement) {
1862
+ currentElement.tabIndex = -1;
1863
+ nextElement.tabIndex = props.tabIndex;
2001
1864
  }
2002
1865
  };
2003
1866
  var findFirstSelectableRow = function findFirstSelectableRow(row) {
@@ -2324,32 +2187,176 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2324
2187
  onEditChange(e, false);
2325
2188
  event.preventDefault();
2326
2189
  };
2190
+ var equalsDataCell = function equalsDataCell(data) {
2191
+ return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
2192
+ };
2193
+ var equalsCell = function equalsCell(selectedCell, field, colIndex) {
2194
+ return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsDataCell(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === colIndex);
2195
+ };
2196
+ var findIndexCell = function findIndexCell(collection, field, colIndex) {
2197
+ return (collection || []).findIndex(function (data) {
2198
+ return equalsCell(data, field, colIndex);
2199
+ });
2200
+ };
2201
+ var isCellSelected = function isCellSelected(selection, field, colIndex) {
2202
+ return selection ? selection instanceof Array ? findIndexCell(selection, field, colIndex) > -1 : equalsCell(selection, field, colIndex) : false;
2203
+ };
2204
+ var onCheckboxChange = function onCheckboxChange(event) {
2205
+ props.onCheckboxChange({
2206
+ originalEvent: event,
2207
+ data: props.rowData,
2208
+ index: props.rowIndex
2209
+ });
2210
+ };
2211
+ var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
2212
+ var getVirtualScrollerOption = React__namespace.useCallback(function (option) {
2213
+ return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
2214
+ }, [props.virtualScrollerOptions]);
2215
+ var getEditingRowData = function getEditingRowData() {
2216
+ return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
2217
+ };
2218
+ var getTabIndexCell = React__namespace.useCallback(function (cellSelected, cellIndex) {
2219
+ return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && cellIndex === 0 ? props.tabIndex : -1 : null;
2220
+ }, [props.allowCellSelection, props.rowIndex, props.tabIndex]);
2221
+ var findNextSelectableCell = React__namespace.useCallback(function (cell) {
2222
+ var nextCell = cell.nextElementSibling;
2223
+ return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : findNextSelectableCell(nextCell) : null;
2224
+ }, []);
2225
+ var findPrevSelectableCell = React__namespace.useCallback(function (cell) {
2226
+ var prevCell = cell.previousElementSibling;
2227
+ return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : findPrevSelectableCell(prevCell) : null;
2228
+ }, []);
2229
+ var findDownSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2230
+ var downRow = cell.parentElement.nextElementSibling;
2231
+ var downCell = downRow ? downRow.children[cellIndex] : null;
2232
+ return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : findDownSelectableCell(downCell) : null;
2233
+ }, []);
2234
+ var findUpSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2235
+ var upRow = cell.parentElement.previousElementSibling;
2236
+ var upCell = upRow ? upRow.children[cellIndex] : null;
2237
+ return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : findUpSelectableCell(upCell) : null;
2238
+ }, []);
2239
+ var focusOnElement = React__namespace.useCallback(function (focusTimeoutRef, editingState, elementRef, keyHelperRef) {
2240
+ clearTimeout(focusTimeoutRef.current);
2241
+ focusTimeoutRef.current = setTimeout(function () {
2242
+ if (editingState) {
2243
+ 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"]');
2244
+ focusableEl && focusableEl.focus();
2245
+ }
2246
+ keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
2247
+ }, 1);
2248
+ }, [props.editMode]);
2249
+ var focusOnInit = React__namespace.useCallback(function (initFocusTimeoutRef, elementRef) {
2250
+ clearTimeout(initFocusTimeoutRef.current);
2251
+ initFocusTimeoutRef.current = setTimeout(function () {
2252
+ var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
2253
+ focusableEl && focusableEl.focus();
2254
+ }, 1);
2255
+ }, [props.editMode]);
2256
+ var updateStickyPosition = React__namespace.useCallback(function (elementRef, frozen, alignFrozen, styleObjectState, setStyleObjectState) {
2257
+ if (frozen) {
2258
+ var styleObject = _objectSpread$a({}, styleObjectState);
2259
+ if (alignFrozen === 'right') {
2260
+ var right = 0;
2261
+ var next = elementRef.current && elementRef.current.nextElementSibling;
2262
+ if (next && next.classList.contains('p-frozen-column')) {
2263
+ right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
2264
+ }
2265
+ styleObject.right = right + 'px';
2266
+ } else {
2267
+ var left = 0;
2268
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
2269
+ if (prev && prev.classList.contains('p-frozen-column')) {
2270
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2271
+ }
2272
+ styleObject.left = left + 'px';
2273
+ }
2274
+ var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
2275
+ !isSameStyle && setStyleObjectState(styleObject);
2276
+ }
2277
+ }, []);
2278
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener) {
2279
+ if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2280
+ selfClick.current = true;
2281
+ var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2282
+ var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2283
+ var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
2284
+ if (onBeforeCellEditShow) {
2285
+ // if user returns false do not show the editor
2286
+ if (onBeforeCellEditShow(params) === false) {
2287
+ return;
2288
+ }
2289
+
2290
+ // if user prevents default stop the editor
2291
+ if (event && event.defaultPrevented) {
2292
+ return;
2293
+ }
2294
+ }
2295
+
2296
+ // 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.
2297
+ setTimeout(function () {
2298
+ setEditingState(true);
2299
+ if (onCellEditInit) {
2300
+ if (onCellEditInit(params) === false) {
2301
+ return;
2302
+ }
2303
+
2304
+ // if user prevents default stop the editor
2305
+ if (event && event.defaultPrevented) {
2306
+ return;
2307
+ }
2308
+ }
2309
+ if (cellEditValidatorEvent === 'click') {
2310
+ bindDocumentClickListener();
2311
+ overlayEventListener.current = function (e) {
2312
+ if (!isOutsideClicked(e.target)) {
2313
+ selfClick.current = true;
2314
+ }
2315
+ };
2316
+ overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
2317
+ }
2318
+ }, 1);
2319
+ }
2320
+ if (props.allowCellSelection && props.onCellClick) {
2321
+ props.onCellClick(params);
2322
+ }
2323
+ };
2327
2324
  var createContent = function createContent() {
2328
2325
  return props.columns.map(function (col, i) {
2329
2326
  if (shouldRenderBodyCell(props.value, col, props.index)) {
2330
2327
  var key = "".concat(props.rowIndex, "_").concat(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'), "_").concat(i);
2331
2328
  var rowSpan = props.rowGroupMode === 'rowspan' ? calculateRowGroupSize(props.value, col, props.index) : null;
2332
- return /*#__PURE__*/React__namespace.createElement(BodyCell, {
2329
+ var field = getColumnProp(col, 'field') || "field_".concat(i);
2330
+ var resolveFieldData = function resolveFieldData(data) {
2331
+ return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
2332
+ };
2333
+ var selectionMode = getColumnProp(col, 'selectionMode');
2334
+ var cellProps = mergeProps({
2333
2335
  hostName: props.hostName,
2334
- key: key,
2335
2336
  allowCellSelection: props.allowCellSelection,
2336
2337
  cellClassName: props.cellClassName,
2337
2338
  checkIcon: props.checkIcon,
2338
2339
  collapsedRowIcon: props.collapsedRowIcon,
2340
+ field: field,
2341
+ resolveFieldData: resolveFieldData,
2339
2342
  column: col,
2340
- compareSelectionBy: props.compareSelectionBy,
2343
+ cProps: props.colsProps[i],
2341
2344
  dataKey: props.dataKey,
2342
2345
  editMode: props.editMode,
2343
2346
  editing: editing,
2344
2347
  editingMeta: props.editingMeta,
2348
+ onEditingMetaChange: props.onEditingMetaChange,
2349
+ editingKey: editingKey,
2350
+ getEditingRowData: getEditingRowData,
2345
2351
  expanded: props.expanded,
2346
2352
  expandedRowIcon: props.expandedRowIcon,
2347
2353
  frozenRow: props.frozenRow,
2354
+ frozenCol: getColumnProp(col, 'frozen'),
2355
+ alignFrozenCol: getColumnProp(col, 'alignFrozen'),
2348
2356
  index: i,
2349
2357
  isSelectable: props.isSelectable,
2350
- onCheckboxChange: props.onCheckboxChange,
2351
- onClick: props.onCellClick,
2352
- onEditingMetaChange: props.onEditingMetaChange,
2358
+ onCheckboxChange: onCheckboxChange,
2359
+ onClick: onCellClick,
2353
2360
  onMouseDown: props.onCellMouseDown,
2354
2361
  onMouseUp: props.onCellMouseUp,
2355
2362
  onRadioChange: props.onRadioChange,
@@ -2365,20 +2372,31 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2365
2372
  rowIndex: props.rowIndex,
2366
2373
  rowSpan: rowSpan,
2367
2374
  selectOnEdit: props.selectOnEdit,
2368
- selected: props.selected,
2369
- selection: props.selection,
2375
+ isRowSelected: isRowSelected,
2376
+ isCellSelected: isCellSelected(props.selection, field, i),
2370
2377
  selectionAriaLabel: props.tableProps.selectionAriaLabel,
2371
2378
  showRowReorderElement: props.showRowReorderElement,
2372
2379
  showSelectionElement: props.showSelectionElement,
2373
2380
  tabIndex: props.tabIndex,
2381
+ getTabIndex: getTabIndexCell,
2374
2382
  tableProps: props.tableProps,
2375
2383
  tableSelector: props.tableSelector,
2376
2384
  value: props.value,
2377
- virtualScrollerOptions: props.virtualScrollerOptions,
2385
+ getVirtualScrollerOption: getVirtualScrollerOption,
2378
2386
  ptCallbacks: props.ptCallbacks,
2379
2387
  metaData: props.metaData,
2380
- unstyled: props.unstyled
2388
+ unstyled: props.unstyled,
2389
+ findNextSelectableCell: findNextSelectableCell,
2390
+ findPrevSelectableCell: findPrevSelectableCell,
2391
+ findDownSelectableCell: findDownSelectableCell,
2392
+ findUpSelectableCell: findUpSelectableCell,
2393
+ focusOnElement: focusOnElement,
2394
+ focusOnInit: focusOnInit,
2395
+ updateStickyPosition: updateStickyPosition
2381
2396
  });
2397
+ return /*#__PURE__*/React__namespace.createElement(React.Fragment, {
2398
+ key: key
2399
+ }, selectionMode ? /*#__PURE__*/React__namespace.createElement(RadioCheckCell, cellProps) : /*#__PURE__*/React__namespace.createElement(BodyCell, cellProps));
2382
2400
  }
2383
2401
  return null;
2384
2402
  });
@@ -2528,8 +2546,11 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2528
2546
  var getColumnProps = function getColumnProps(column) {
2529
2547
  return ColumnBase.getCProps(column);
2530
2548
  };
2549
+ var cProps = getColumnProps(props.column);
2550
+ var colsProps = props.columns ? props.columns.map(function (col) {
2551
+ return getColumnProps(col);
2552
+ }) : [];
2531
2553
  var getColumnPTOptions = function getColumnPTOptions(key) {
2532
- var cProps = getColumnProps(props.column);
2533
2554
  var columnMetaData = {
2534
2555
  props: cProps,
2535
2556
  parent: props.metaData,
@@ -2654,8 +2675,12 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2654
2675
  var allowSelection = function allowSelection(event) {
2655
2676
  return !utils.DomHandler.isClickable(event.originalEvent.target);
2656
2677
  };
2678
+ var metaKeySelectionRef = React__namespace.useRef(props.metaKeySelection);
2679
+ React__namespace.useEffect(function () {
2680
+ metaKeySelectionRef.current = props.metaKeySelection;
2681
+ }, [props.metaKeySelection]);
2657
2682
  var allowMetaKeySelection = function allowMetaKeySelection(event) {
2658
- return !rowTouched.current && (!props.metaKeySelection || props.metaKeySelection && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2683
+ return !rowTouched.current && (!metaKeySelectionRef.current || metaKeySelectionRef.current && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2659
2684
  };
2660
2685
  var allowRangeSelection = function allowRangeSelection(event) {
2661
2686
  return isMultipleSelection() && event.originalEvent.shiftKey && anchorRowIndex.current !== null;
@@ -2728,6 +2753,10 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2728
2753
  });
2729
2754
  }
2730
2755
  };
2756
+ var selectionRef = React__namespace.useRef(props.selection);
2757
+ React__namespace.useEffect(function () {
2758
+ selectionRef.current = props.selection;
2759
+ }, [props.selection]);
2731
2760
  var onSingleSelection = function onSingleSelection(_ref) {
2732
2761
  var originalEvent = _ref.originalEvent,
2733
2762
  data = _ref.data,
@@ -2741,10 +2770,11 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2741
2770
  return;
2742
2771
  }
2743
2772
  var selected = isSelected(data);
2744
- var selection = props.selection;
2773
+ var currentSelection = selectionRef.current || [];
2774
+ var newSelection = currentSelection;
2745
2775
  if (selected) {
2746
2776
  if (toggleable) {
2747
- selection = null;
2777
+ newSelection = null;
2748
2778
  onUnselect({
2749
2779
  originalEvent: originalEvent,
2750
2780
  data: data,
@@ -2752,7 +2782,7 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2752
2782
  });
2753
2783
  }
2754
2784
  } else {
2755
- selection = data;
2785
+ newSelection = data;
2756
2786
  onSelect({
2757
2787
  originalEvent: originalEvent,
2758
2788
  data: data,
@@ -2760,10 +2790,10 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2760
2790
  });
2761
2791
  }
2762
2792
  focusOnElement(originalEvent, true);
2763
- if (props.onSelectionChange && selection !== props.selection) {
2793
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2764
2794
  props.onSelectionChange({
2765
2795
  originalEvent: originalEvent,
2766
- value: selection,
2796
+ value: newSelection,
2767
2797
  type: type
2768
2798
  });
2769
2799
  }
@@ -2781,11 +2811,12 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2781
2811
  return;
2782
2812
  }
2783
2813
  var selected = isSelected(data);
2784
- var selection = props.selection || [];
2814
+ var currentSelection = selectionRef.current || [];
2815
+ var newSelection = currentSelection;
2785
2816
  if (selected) {
2786
2817
  if (toggleable) {
2787
- var selectionIndex = findIndex(selection, data);
2788
- selection = props.selection.filter(function (val, i) {
2818
+ var selectionIndex = findIndex(currentSelection, data);
2819
+ newSelection = currentSelection.filter(function (val, i) {
2789
2820
  return i !== selectionIndex;
2790
2821
  });
2791
2822
  onUnselect({
@@ -2793,15 +2824,15 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2793
2824
  data: data,
2794
2825
  type: type
2795
2826
  });
2796
- } else if (selection.length) {
2797
- props.selection.forEach(function (d) {
2827
+ } else if (currentSelection.length) {
2828
+ currentSelection.forEach(function (d) {
2798
2829
  return onUnselect({
2799
2830
  originalEvent: originalEvent,
2800
2831
  data: d,
2801
2832
  type: type
2802
2833
  });
2803
2834
  });
2804
- selection = [data];
2835
+ newSelection = [data];
2805
2836
  onSelect({
2806
2837
  originalEvent: originalEvent,
2807
2838
  data: data,
@@ -2809,18 +2840,18 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2809
2840
  });
2810
2841
  }
2811
2842
  } else {
2812
- selection = utils.ObjectUtils.isObject(selection) ? [selection] : selection;
2813
- selection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(selection), [data]) : [data];
2843
+ newSelection = utils.ObjectUtils.isObject(currentSelection) ? [currentSelection] : currentSelection;
2844
+ newSelection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(newSelection), [data]) : [data];
2814
2845
  onSelect({
2815
2846
  originalEvent: originalEvent,
2816
2847
  data: data,
2817
2848
  type: type
2818
2849
  });
2819
2850
  }
2820
- if (props.onSelectionChange && selection !== props.selection) {
2851
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2821
2852
  props.onSelectionChange({
2822
2853
  originalEvent: originalEvent,
2823
- value: selection,
2854
+ value: newSelection,
2824
2855
  type: type
2825
2856
  });
2826
2857
  }
@@ -3422,6 +3453,7 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3422
3453
  checkIcon: props.checkIcon,
3423
3454
  collapsedRowIcon: props.collapsedRowIcon,
3424
3455
  columns: props.columns,
3456
+ colsProps: colsProps,
3425
3457
  compareSelectionBy: props.compareSelectionBy,
3426
3458
  contextMenuSelected: contextMenuSelected,
3427
3459
  dataKey: props.dataKey,
@@ -4205,9 +4237,17 @@ var ColumnFilter = /*#__PURE__*/React__namespace.memo(function (props) {
4205
4237
  var type = _ref.type,
4206
4238
  valid = _ref.valid;
4207
4239
  if (valid) {
4208
- type === 'outside' ? !selfClick.current && !isTargetClicked(event.target) && hide() : hide();
4240
+ if (type === 'outside') {
4241
+ if (!selfClick.current && !isTargetClicked(event.target)) {
4242
+ hide();
4243
+ }
4244
+ selfClick.current = false;
4245
+ } else if (context.hideOverlaysOnDocumentScrolling) {
4246
+ hide();
4247
+ } else if (!utils.DomHandler.isDocument(event.target)) {
4248
+ utils.DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact__default["default"].appendTo, false);
4249
+ }
4209
4250
  }
4210
- selfClick.current = false;
4211
4251
  },
4212
4252
  when: overlayVisibleState
4213
4253
  }),