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
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import * as React from 'react';
3
- import React__default from 'react';
3
+ import React__default, { Fragment } from 'react';
4
4
  import PrimeReact$1, { FilterMatchMode as FilterMatchMode$1, PrimeReactContext, ariaLabel as ariaLabel$1, localeOption, FilterOperator, FilterService } from 'primereact/api';
5
5
  import { ComponentBase, useHandleStyle } from 'primereact/componentbase';
6
6
  import { ObjectUtils, classNames, DomHandler, IconUtils, UniqueComponentId, ZIndexUtils } from 'primereact/utils';
@@ -713,7 +713,7 @@ var Checkbox = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (i
713
713
  return props.checked === props.trueValue;
714
714
  };
715
715
  var _onChange = function onChange(event) {
716
- if (props.disabled || props.readonly) {
716
+ if (props.disabled || props.readOnly) {
717
717
  return;
718
718
  }
719
719
  if (props.onChange) {
@@ -972,7 +972,7 @@ var RadioButton = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function
972
972
  onChange(event);
973
973
  };
974
974
  var onChange = function onChange(event) {
975
- if (props.disabled || props.readonly) {
975
+ if (props.disabled || props.readOnly) {
976
976
  return;
977
977
  }
978
978
  if (props.onChange) {
@@ -1075,7 +1075,7 @@ var RadioButton = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function
1075
1075
  onBlur: onBlur,
1076
1076
  onChange: onChange,
1077
1077
  disabled: props.disabled,
1078
- readOnly: props.readonly,
1078
+ readOnly: props.readOnly,
1079
1079
  required: props.required,
1080
1080
  tabIndex: props.tabIndex,
1081
1081
  className: cx('input')
@@ -1148,7 +1148,7 @@ RowRadioButton.displayName = 'RowRadioButton';
1148
1148
 
1149
1149
  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; }
1150
1150
  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; }
1151
- var BodyCell = /*#__PURE__*/React.memo(function (props) {
1151
+ var Cell = function Cell(props) {
1152
1152
  var mergeProps = useMergeProps();
1153
1153
  var _React$useState = React.useState(props.editing),
1154
1154
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -1176,13 +1176,9 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1176
1176
  var getColumnProp = function getColumnProp(name) {
1177
1177
  return ColumnBase.getCProp(props.column, name);
1178
1178
  };
1179
- var getColumnProps = function getColumnProps() {
1180
- return ColumnBase.getCProps(props.column);
1181
- };
1182
1179
  var getColumnPTOptions = function getColumnPTOptions(key) {
1183
- var cProps = getColumnProps();
1184
1180
  var columnMetaData = {
1185
- props: cProps,
1181
+ props: props.cProps,
1186
1182
  parent: props.metaData,
1187
1183
  hostName: props.hostName,
1188
1184
  state: {
@@ -1198,10 +1194,8 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1198
1194
  };
1199
1195
  return mergeProps(ptm("column.".concat(key), {
1200
1196
  column: columnMetaData
1201
- }), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
1197
+ }), ptm("column.".concat(key), columnMetaData), ptmo(props.cProps, key, columnMetaData));
1202
1198
  };
1203
- var field = getColumnProp('field') || "field_".concat(props.index);
1204
- var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
1205
1199
  var isEditable = function isEditable() {
1206
1200
  return ObjectUtils.isNotEmpty(props.editMode) && getColumnProp('editor');
1207
1201
  };
@@ -1226,34 +1220,22 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1226
1220
  _useEventListener2 = _slicedToArray(_useEventListener, 2),
1227
1221
  bindDocumentClickListener = _useEventListener2[0],
1228
1222
  unbindDocumentClickListener = _useEventListener2[1];
1229
- var isSelected = function isSelected() {
1230
- return props.selection ? props.selection instanceof Array ? findIndex(props.selection) > -1 : equals(props.selection) : false;
1231
- };
1232
- var equalsData = function equalsData(data) {
1233
- return props.compareSelectionBy === 'equals' ? data === props.rowData : ObjectUtils.equals(data, props.rowData, props.dataKey);
1234
- };
1235
- var equals = function equals(selectedCell) {
1236
- return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsData(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === props.index);
1237
- };
1238
1223
  var isOutsideClicked = function isOutsideClicked(target) {
1239
1224
  return elementRef.current && !(elementRef.current.isSameNode(target) || elementRef.current.contains(target));
1240
1225
  };
1241
- var getVirtualScrollerOption = function getVirtualScrollerOption(option) {
1242
- return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
1243
- };
1244
1226
  var getStyle = function getStyle() {
1245
1227
  var bodyStyle = getColumnProp('bodyStyle');
1246
1228
  var columnStyle = getColumnProp('style');
1247
- return getColumnProp('frozen') ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1229
+ return props.frozenCol ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1248
1230
  };
1249
1231
  var getCellParams = function getCellParams() {
1250
1232
  return {
1251
- value: resolveFieldData(),
1252
- field: field,
1233
+ value: props.resolveFieldData(),
1234
+ field: props.field,
1253
1235
  rowData: props.rowData,
1254
1236
  rowIndex: props.rowIndex,
1255
1237
  cellIndex: props.index,
1256
- selected: isSelected(),
1238
+ selected: props.isCellSelected,
1257
1239
  column: props.column,
1258
1240
  props: props
1259
1241
  };
@@ -1264,20 +1246,6 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1264
1246
  originalEvent: event
1265
1247
  }, params);
1266
1248
  };
1267
- var resolveFieldData = function resolveFieldData(data) {
1268
- return ObjectUtils.resolveFieldData(data || props.rowData, field);
1269
- };
1270
- var getEditingRowData = function getEditingRowData() {
1271
- return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
1272
- };
1273
- var getTabIndex = function getTabIndex(cellSelected) {
1274
- return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && props.index === 0 ? props.tabIndex : -1 : null;
1275
- };
1276
- var findIndex = function findIndex(collection) {
1277
- return (collection || []).findIndex(function (data) {
1278
- return equals(data);
1279
- });
1280
- };
1281
1249
  var closeCell = function closeCell(event) {
1282
1250
  var params = getCellCallbackParams(event);
1283
1251
  var onBeforeCellEditHide = getColumnProp('onBeforeCellEditHide');
@@ -1298,7 +1266,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1298
1266
  var switchCellToViewMode = function switchCellToViewMode(event, submit) {
1299
1267
  var callbackParams = getCellCallbackParams(event);
1300
1268
  var newRowData = _objectSpread$b({}, editingRowDataStateRef.current);
1301
- var newValue = resolveFieldData(newRowData);
1269
+ var newValue = props.resolveFieldData(newRowData);
1302
1270
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1303
1271
  newRowData: newRowData,
1304
1272
  newValue: newValue
@@ -1323,128 +1291,20 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1323
1291
  }
1324
1292
  setEditingRowDataState(newRowData);
1325
1293
  };
1326
- var _findNextSelectableCell = function findNextSelectableCell(cell) {
1327
- var nextCell = cell.nextElementSibling;
1328
- return nextCell ? DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : _findNextSelectableCell(nextCell) : null;
1329
- };
1330
- var _findPrevSelectableCell = function findPrevSelectableCell(cell) {
1331
- var prevCell = cell.previousElementSibling;
1332
- return prevCell ? DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : _findPrevSelectableCell(prevCell) : null;
1333
- };
1334
- var _findDownSelectableCell = function findDownSelectableCell(cell) {
1335
- var downRow = cell.parentElement.nextElementSibling;
1336
- var downCell = downRow ? downRow.children[props.index] : null;
1337
- return downRow && downCell ? DomHandler.getAttribute(downRow, 'data-p-selectable-row') && DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : _findDownSelectableCell(downCell) : null;
1338
- };
1339
- var _findUpSelectableCell = function findUpSelectableCell(cell) {
1340
- var upRow = cell.parentElement.previousElementSibling;
1341
- var upCell = upRow ? upRow.children[props.index] : null;
1342
- return upRow && upCell ? DomHandler.getAttribute(upRow, 'data-p-selectable-row') && DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : _findUpSelectableCell(upCell) : null;
1343
- };
1344
- var changeTabIndex = function changeTabIndex(currentCell, nextCell) {
1345
- if (currentCell && nextCell) {
1346
- currentCell.tabIndex = -1;
1347
- nextCell.tabIndex = props.tabIndex;
1348
- }
1349
- };
1350
- var focusOnElement = function focusOnElement() {
1351
- clearTimeout(focusTimeout.current);
1352
- focusTimeout.current = setTimeout(function () {
1353
- if (editingState) {
1354
- var focusableEl = props.editMode === 'cell' ? DomHandler.getFirstFocusableElement(elementRef.current, ':not([data-pc-section="editorkeyhelperlabel"])') : DomHandler.findSingle(elementRef.current, '[data-p-row-editor-save="true"]');
1355
- focusableEl && focusableEl.focus();
1356
- }
1357
- keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
1358
- }, 1);
1359
- };
1360
- var focusOnInit = function focusOnInit() {
1361
- clearTimeout(initFocusTimeout.current);
1362
- initFocusTimeout.current = setTimeout(function () {
1363
- var focusableEl = props.editMode === 'row' ? DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
1364
- focusableEl && focusableEl.focus();
1365
- }, 1);
1366
- };
1367
- var updateStickyPosition = function updateStickyPosition() {
1368
- if (getColumnProp('frozen')) {
1369
- var styleObject = _objectSpread$b({}, styleObjectState);
1370
- var align = getColumnProp('alignFrozen');
1371
- if (align === 'right') {
1372
- var right = 0;
1373
- var next = elementRef.current && elementRef.current.nextElementSibling;
1374
- if (next && next.classList.contains('p-frozen-column')) {
1375
- right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
1376
- }
1377
- styleObject.right = right + 'px';
1378
- } else {
1379
- var left = 0;
1380
- var prev = elementRef.current && elementRef.current.previousElementSibling;
1381
- if (prev && prev.classList.contains('p-frozen-column')) {
1382
- left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
1383
- }
1384
- styleObject.left = left + 'px';
1385
- }
1386
- var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
1387
- !isSameStyle && setStyleObjectState(styleObject);
1388
- }
1389
- };
1390
1294
  var editorCallback = function editorCallback(val) {
1391
1295
  var editingRowData = _objectSpread$b({}, editingRowDataState);
1392
- ObjectUtils.mutateFieldData(editingRowData, field, val);
1296
+ ObjectUtils.mutateFieldData(editingRowData, props.field, val);
1393
1297
  setEditingRowDataState(editingRowData);
1394
1298
 
1395
1299
  // update editing meta for complete methods on row mode
1396
- var currentData = getEditingRowData();
1300
+ var currentData = props.getEditingRowData();
1397
1301
  if (currentData) {
1398
- ObjectUtils.mutateFieldData(currentData, field, val);
1302
+ ObjectUtils.mutateFieldData(currentData, props.field, val);
1399
1303
  }
1400
1304
  editingRowDataStateRef.current = editingRowData;
1401
1305
  };
1402
1306
  var _onClick = function onClick(event) {
1403
- var params = getCellCallbackParams(event);
1404
- if (props.editMode !== 'row' && isEditable() && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.selected)) {
1405
- selfClick.current = true;
1406
- var onBeforeCellEditShow = getColumnProp('onBeforeCellEditShow');
1407
- var onCellEditInit = getColumnProp('onCellEditInit');
1408
- var cellEditValidatorEvent = getColumnProp('cellEditValidatorEvent');
1409
- if (onBeforeCellEditShow) {
1410
- // if user returns false do not show the editor
1411
- if (onBeforeCellEditShow(params) === false) {
1412
- return;
1413
- }
1414
-
1415
- // if user prevents default stop the editor
1416
- if (event && event.defaultPrevented) {
1417
- return;
1418
- }
1419
- }
1420
-
1421
- // 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.
1422
- setTimeout(function () {
1423
- setEditingState(true);
1424
- if (onCellEditInit) {
1425
- if (onCellEditInit(params) === false) {
1426
- return;
1427
- }
1428
-
1429
- // if user prevents default stop the editor
1430
- if (event && event.defaultPrevented) {
1431
- return;
1432
- }
1433
- }
1434
- if (cellEditValidatorEvent === 'click') {
1435
- bindDocumentClickListener();
1436
- overlayEventListener.current = function (e) {
1437
- if (!isOutsideClicked(e.target)) {
1438
- selfClick.current = true;
1439
- }
1440
- };
1441
- OverlayService.on('overlay-click', overlayEventListener.current);
1442
- }
1443
- }, 1);
1444
- }
1445
- if (props.allowCellSelection && props.onClick) {
1446
- props.onClick(params);
1447
- }
1307
+ props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, selfClick, props.column, bindDocumentClickListener, overlayEventListener);
1448
1308
  };
1449
1309
  var _onMouseDown = function onMouseDown(event) {
1450
1310
  var params = getCellCallbackParams(event);
@@ -1468,7 +1328,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1468
1328
  cell = event.currentTarget;
1469
1329
  switch (event.code) {
1470
1330
  case 'ArrowLeft':
1471
- var prevCell = _findPrevSelectableCell(cell);
1331
+ var prevCell = props.findPrevSelectableCell(cell);
1472
1332
  if (prevCell) {
1473
1333
  changeTabIndex(cell, prevCell);
1474
1334
  prevCell.focus();
@@ -1476,7 +1336,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1476
1336
  event.preventDefault();
1477
1337
  break;
1478
1338
  case 'ArrowRight':
1479
- var nextCell = _findNextSelectableCell(cell);
1339
+ var nextCell = props.findNextSelectableCell(cell);
1480
1340
  if (nextCell) {
1481
1341
  changeTabIndex(cell, nextCell);
1482
1342
  nextCell.focus();
@@ -1484,7 +1344,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1484
1344
  event.preventDefault();
1485
1345
  break;
1486
1346
  case 'ArrowUp':
1487
- var upCell = _findUpSelectableCell(cell);
1347
+ var upCell = props.findUpSelectableCell(cell, index);
1488
1348
  if (upCell) {
1489
1349
  changeTabIndex(cell, upCell);
1490
1350
  upCell.focus();
@@ -1492,7 +1352,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1492
1352
  event.preventDefault();
1493
1353
  break;
1494
1354
  case 'ArrowDown':
1495
- var downCell = _findDownSelectableCell(cell);
1355
+ var downCell = props.findDownSelectableCell(cell, index);
1496
1356
  if (downCell) {
1497
1357
  changeTabIndex(cell, downCell);
1498
1358
  downCell.focus();
@@ -1531,13 +1391,6 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1531
1391
  index: props.rowIndex
1532
1392
  });
1533
1393
  };
1534
- var onCheckboxChange = function onCheckboxChange(event) {
1535
- props.onCheckboxChange({
1536
- originalEvent: event,
1537
- data: props.rowData,
1538
- index: props.rowIndex
1539
- });
1540
- };
1541
1394
  var onRowToggle = function onRowToggle(event) {
1542
1395
  props.onRowToggle({
1543
1396
  originalEvent: event,
@@ -1550,8 +1403,8 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1550
1403
  props.onRowEditInit({
1551
1404
  originalEvent: event,
1552
1405
  data: props.rowData,
1553
- newData: getEditingRowData(),
1554
- field: field,
1406
+ newData: props.getEditingRowData(),
1407
+ field: props.field,
1555
1408
  index: props.rowIndex
1556
1409
  });
1557
1410
  };
@@ -1559,32 +1412,26 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1559
1412
  props.onRowEditSave({
1560
1413
  originalEvent: event,
1561
1414
  data: props.rowData,
1562
- newData: getEditingRowData(),
1563
- field: field,
1415
+ newData: props.getEditingRowData(),
1416
+ field: props.field,
1564
1417
  index: props.rowIndex
1565
1418
  });
1566
- focusOnInit();
1419
+ props.focusOnInit(initFocusTimeout, elementRef);
1567
1420
  };
1568
1421
  var onRowEditCancel = function onRowEditCancel(event) {
1569
1422
  props.onRowEditCancel({
1570
1423
  originalEvent: event,
1571
1424
  data: props.rowData,
1572
- newData: getEditingRowData(),
1573
- field: field,
1425
+ newData: props.getEditingRowData(),
1426
+ field: props.field,
1574
1427
  index: props.rowIndex
1575
1428
  });
1576
- focusOnInit();
1429
+ props.focusOnInit();
1577
1430
  };
1578
1431
  React.useEffect(function () {
1579
- if (getColumnProp('frozen')) {
1580
- updateStickyPosition();
1581
- }
1582
- });
1583
- React.useEffect(function () {
1584
- if (props.editMode === 'cell' || props.editMode === 'row') {
1585
- focusOnElement();
1586
- }
1587
- }, [props.editMode, props.editing, editingState]); // eslint-disable-line react-hooks/exhaustive-deps
1432
+ if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
1433
+ if (props.editMode === 'cell' || props.editMode === 'row') props.focusOnElement(focusTimeout, editingState, elementRef, keyHelperRef);
1434
+ }, [props.editMode, props.editing, editingState, props.frozenCol, props.alignFrozenCol]); // eslint-disable-line react-hooks/exhaustive-deps
1588
1435
 
1589
1436
  React.useEffect(function () {
1590
1437
  if (props.editMode === 'row' && props.editing !== editingState) {
@@ -1593,7 +1440,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1593
1440
  }, [props.editMode, props.editing, editingState]);
1594
1441
  useUpdateEffect(function () {
1595
1442
  if (props.editMode === 'cell' || props.editMode === 'row') {
1596
- var editingRowData = getEditingRowData();
1443
+ var editingRowData = props.getEditingRowData();
1597
1444
  setEditingRowDataState(editingRowData);
1598
1445
  editingRowDataStateRef.current = editingRowData;
1599
1446
  }
@@ -1603,7 +1450,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1603
1450
  var callbackParams = getCellCallbackParams();
1604
1451
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1605
1452
  editing: editingState,
1606
- editingKey: editingKey
1453
+ editingKey: props.editingKey
1607
1454
  });
1608
1455
  props.onEditingMetaChange(params);
1609
1456
  }
@@ -1616,16 +1463,16 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1616
1463
  }
1617
1464
  });
1618
1465
  var createLoading = function createLoading() {
1619
- var options = getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1466
+ var options = props.getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1620
1467
  cellIndex: props.index,
1621
1468
  cellFirst: props.index === 0,
1622
- cellLast: props.index === getVirtualScrollerOption('columns').length - 1,
1469
+ cellLast: props.index === props.getVirtualScrollerOption('columns').length - 1,
1623
1470
  cellEven: props.index % 2 === 0,
1624
1471
  cellOdd: props.index % 2 !== 0,
1625
1472
  column: props.column,
1626
- field: field
1473
+ field: props.field
1627
1474
  });
1628
- var content = ObjectUtils.getJSXElement(getVirtualScrollerOption('loadingTemplate'), options);
1475
+ var content = ObjectUtils.getJSXElement(props.getVirtualScrollerOption('loadingTemplate'), options);
1629
1476
  var bodyCellProps = mergeProps(getColumnPTOptions('bodyCell'), {
1630
1477
  role: 'cell'
1631
1478
  });
@@ -1634,20 +1481,20 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1634
1481
  var createElement = function createElement() {
1635
1482
  var content;
1636
1483
  var editorKeyHelper;
1637
- var cellSelected = props.allowCellSelection && isSelected();
1484
+ var cellSelected = props.allowCellSelection && props.isCellSelected;
1638
1485
  var isRowEditor = props.editMode === 'row';
1639
- var tabIndex = getTabIndex(cellSelected);
1486
+ var tabIndex = props.getTabIndex(cellSelected, props.index);
1640
1487
  var selectionMode = getColumnProp('selectionMode');
1641
1488
  var rowReorder = getColumnProp('rowReorder');
1642
1489
  var header = getColumnProp('header');
1643
1490
  var body = getColumnProp('body');
1644
1491
  var editor = getColumnProp('editor');
1645
- var frozen = getColumnProp('frozen');
1492
+ var frozen = props.frozenCol;
1646
1493
  var align = getColumnProp('align');
1647
- var value = resolveFieldData();
1494
+ var value = props.resolveFieldData();
1648
1495
  var columnBodyOptions = {
1649
1496
  column: props.column,
1650
- field: field,
1497
+ field: props.field,
1651
1498
  rowIndex: props.rowIndex,
1652
1499
  frozenRow: props.frozenRow,
1653
1500
  props: props.tableProps
@@ -1672,12 +1519,12 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1672
1519
  if (showSelection) {
1673
1520
  var ariaLabelField = props.selectionAriaLabel || props.tableProps.dataKey;
1674
1521
  var ariaLabelText = ObjectUtils.resolveFieldData(props.rowData, ariaLabelField);
1675
- label = "".concat(props.selected ? ariaLabel$1('unselectRow') : ariaLabel$1('selectRow'), " ").concat(ariaLabelText);
1522
+ label = "".concat(props.isRowSelected ? ariaLabel$1('unselectRow') : ariaLabel$1('selectRow'), " ").concat(ariaLabelText);
1676
1523
  }
1677
1524
  content = showSelection && /*#__PURE__*/React.createElement(React.Fragment, null, selectionMode === 'single' && /*#__PURE__*/React.createElement(RowRadioButton, {
1678
1525
  hostName: props.hostName,
1679
1526
  column: props.column,
1680
- checked: props.selected,
1527
+ checked: props.isRowSelected,
1681
1528
  disabled: !props.isSelectable({
1682
1529
  data: props.rowData,
1683
1530
  index: props.rowIndex
@@ -1692,12 +1539,12 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1692
1539
  }), selectionMode === 'multiple' && /*#__PURE__*/React.createElement(RowCheckbox, {
1693
1540
  hostName: props.hostName,
1694
1541
  column: props.column,
1695
- checked: props.selected,
1542
+ checked: props.isRowSelected,
1696
1543
  disabled: !props.isSelectable({
1697
1544
  data: props.rowData,
1698
1545
  index: props.rowIndex
1699
1546
  }),
1700
- onChange: onCheckboxChange,
1547
+ onChange: props.onCheckboxChange,
1701
1548
  tabIndex: props.tabIndex,
1702
1549
  ariaLabel: label,
1703
1550
  checkIcon: props.checkIcon,
@@ -1747,7 +1594,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1747
1594
  expanderProps.element = content;
1748
1595
  content = ObjectUtils.getJSXElement(body, props.rowData, {
1749
1596
  column: props.column,
1750
- field: field,
1597
+ field: props.field,
1751
1598
  rowIndex: props.rowIndex,
1752
1599
  frozenRow: props.frozenRow,
1753
1600
  props: props.tableProps,
@@ -1821,7 +1668,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1821
1668
  rowEditorProps.element = content;
1822
1669
  content = ObjectUtils.getJSXElement(body, props.rowData, {
1823
1670
  column: props.column,
1824
- field: field,
1671
+ field: props.field,
1825
1672
  rowIndex: props.rowIndex,
1826
1673
  frozenRow: props.frozenRow,
1827
1674
  props: props.tableProps,
@@ -1831,7 +1678,7 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1831
1678
  } else if (body && (!editingState || !editor)) {
1832
1679
  content = body ? ObjectUtils.getJSXElement(body, props.rowData, {
1833
1680
  column: props.column,
1834
- field: field,
1681
+ field: props.field,
1835
1682
  rowIndex: props.rowIndex,
1836
1683
  frozenRow: props.frozenRow,
1837
1684
  props: props.tableProps
@@ -1839,9 +1686,9 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1839
1686
  } else if (editor && editingState) {
1840
1687
  content = ObjectUtils.getJSXElement(editor, {
1841
1688
  rowData: editingRowDataState,
1842
- value: resolveFieldData(editingRowDataState),
1689
+ value: props.resolveFieldData(editingRowDataState),
1843
1690
  column: props.column,
1844
- field: field,
1691
+ field: props.field,
1845
1692
  rowIndex: props.rowIndex,
1846
1693
  frozenRow: props.frozenRow,
1847
1694
  props: props.tableProps,
@@ -1909,7 +1756,22 @@ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1909
1756
  ref: elementRef
1910
1757
  }, bodyCellProps), editorKeyHelper, title, content);
1911
1758
  };
1912
- return getVirtualScrollerOption('loading') ? createLoading() : createElement();
1759
+ return props.getVirtualScrollerOption('loading') ? createLoading() : createElement();
1760
+ };
1761
+
1762
+ // RadioCheckCell is used for the Radio and Checkbox selection and has the isRowSelected dependency
1763
+ var RadioCheckCell = /*#__PURE__*/React.memo(function (props) {
1764
+ return /*#__PURE__*/React.createElement(Cell, props);
1765
+ }, function (prevProps, nextProps) {
1766
+ var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
1767
+ return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1768
+ });
1769
+ RadioCheckCell.displayName = 'RadioCheckCell';
1770
+ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1771
+ return /*#__PURE__*/React.createElement(Cell, props);
1772
+ }, function (prevProps, nextProps) {
1773
+ var keysToCompare = ['field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData', 'frozenCol', 'alignFrozenCol'];
1774
+ return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1913
1775
  });
1914
1776
  BodyCell.displayName = 'BodyCell';
1915
1777
 
@@ -1925,6 +1787,7 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
1925
1787
  var _props$ptCallbacks = props.ptCallbacks,
1926
1788
  ptm = _props$ptCallbacks.ptm,
1927
1789
  cx = _props$ptCallbacks.cx;
1790
+ var isRowSelected = !props.allowCellSelection && props.selected || props.contextMenuSelected;
1928
1791
  var getBodyRowPTOptions = function getBodyRowPTOptions(key) {
1929
1792
  return ptm(key, {
1930
1793
  parent: props.metaData,
@@ -1938,7 +1801,7 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
1938
1801
  data: props.rowData,
1939
1802
  index: props.rowIndex
1940
1803
  }),
1941
- selected: !props.allowCellSelection && props.selected || props.contextMenuSelected,
1804
+ selected: isRowSelected,
1942
1805
  stripedRows: props.metaData.props.stripedRows
1943
1806
  }
1944
1807
  });
@@ -1967,10 +1830,10 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
1967
1830
  return equals(rowData, data);
1968
1831
  });
1969
1832
  };
1970
- var changeTabIndex = function changeTabIndex(currentRow, nextRow) {
1971
- if (currentRow && nextRow) {
1972
- currentRow.tabIndex = -1;
1973
- nextRow.tabIndex = props.tabIndex;
1833
+ var changeTabIndex = function changeTabIndex(currentElement, nextElement) {
1834
+ if (currentElement && nextElement) {
1835
+ currentElement.tabIndex = -1;
1836
+ nextElement.tabIndex = props.tabIndex;
1974
1837
  }
1975
1838
  };
1976
1839
  var findFirstSelectableRow = function findFirstSelectableRow(row) {
@@ -2297,32 +2160,176 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2297
2160
  onEditChange(e, false);
2298
2161
  event.preventDefault();
2299
2162
  };
2163
+ var equalsDataCell = function equalsDataCell(data) {
2164
+ return props.compareSelectionBy === 'equals' ? data === props.rowData : ObjectUtils.equals(data, props.rowData, props.dataKey);
2165
+ };
2166
+ var equalsCell = function equalsCell(selectedCell, field, colIndex) {
2167
+ return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsDataCell(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === colIndex);
2168
+ };
2169
+ var findIndexCell = function findIndexCell(collection, field, colIndex) {
2170
+ return (collection || []).findIndex(function (data) {
2171
+ return equalsCell(data, field, colIndex);
2172
+ });
2173
+ };
2174
+ var isCellSelected = function isCellSelected(selection, field, colIndex) {
2175
+ return selection ? selection instanceof Array ? findIndexCell(selection, field, colIndex) > -1 : equalsCell(selection, field, colIndex) : false;
2176
+ };
2177
+ var onCheckboxChange = function onCheckboxChange(event) {
2178
+ props.onCheckboxChange({
2179
+ originalEvent: event,
2180
+ data: props.rowData,
2181
+ index: props.rowIndex
2182
+ });
2183
+ };
2184
+ var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
2185
+ var getVirtualScrollerOption = React.useCallback(function (option) {
2186
+ return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
2187
+ }, [props.virtualScrollerOptions]);
2188
+ var getEditingRowData = function getEditingRowData() {
2189
+ return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
2190
+ };
2191
+ var getTabIndexCell = React.useCallback(function (cellSelected, cellIndex) {
2192
+ return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && cellIndex === 0 ? props.tabIndex : -1 : null;
2193
+ }, [props.allowCellSelection, props.rowIndex, props.tabIndex]);
2194
+ var findNextSelectableCell = React.useCallback(function (cell) {
2195
+ var nextCell = cell.nextElementSibling;
2196
+ return nextCell ? DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : findNextSelectableCell(nextCell) : null;
2197
+ }, []);
2198
+ var findPrevSelectableCell = React.useCallback(function (cell) {
2199
+ var prevCell = cell.previousElementSibling;
2200
+ return prevCell ? DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : findPrevSelectableCell(prevCell) : null;
2201
+ }, []);
2202
+ var findDownSelectableCell = React.useCallback(function (cell, cellIndex) {
2203
+ var downRow = cell.parentElement.nextElementSibling;
2204
+ var downCell = downRow ? downRow.children[cellIndex] : null;
2205
+ return downRow && downCell ? DomHandler.getAttribute(downRow, 'data-p-selectable-row') && DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : findDownSelectableCell(downCell) : null;
2206
+ }, []);
2207
+ var findUpSelectableCell = React.useCallback(function (cell, cellIndex) {
2208
+ var upRow = cell.parentElement.previousElementSibling;
2209
+ var upCell = upRow ? upRow.children[cellIndex] : null;
2210
+ return upRow && upCell ? DomHandler.getAttribute(upRow, 'data-p-selectable-row') && DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : findUpSelectableCell(upCell) : null;
2211
+ }, []);
2212
+ var focusOnElement = React.useCallback(function (focusTimeoutRef, editingState, elementRef, keyHelperRef) {
2213
+ clearTimeout(focusTimeoutRef.current);
2214
+ focusTimeoutRef.current = setTimeout(function () {
2215
+ if (editingState) {
2216
+ var focusableEl = props.editMode === 'cell' ? DomHandler.getFirstFocusableElement(elementRef.current, ':not([data-pc-section="editorkeyhelperlabel"])') : DomHandler.findSingle(elementRef.current, '[data-p-row-editor-save="true"]');
2217
+ focusableEl && focusableEl.focus();
2218
+ }
2219
+ keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
2220
+ }, 1);
2221
+ }, [props.editMode]);
2222
+ var focusOnInit = React.useCallback(function (initFocusTimeoutRef, elementRef) {
2223
+ clearTimeout(initFocusTimeoutRef.current);
2224
+ initFocusTimeoutRef.current = setTimeout(function () {
2225
+ var focusableEl = props.editMode === 'row' ? DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
2226
+ focusableEl && focusableEl.focus();
2227
+ }, 1);
2228
+ }, [props.editMode]);
2229
+ var updateStickyPosition = React.useCallback(function (elementRef, frozen, alignFrozen, styleObjectState, setStyleObjectState) {
2230
+ if (frozen) {
2231
+ var styleObject = _objectSpread$a({}, styleObjectState);
2232
+ if (alignFrozen === 'right') {
2233
+ var right = 0;
2234
+ var next = elementRef.current && elementRef.current.nextElementSibling;
2235
+ if (next && next.classList.contains('p-frozen-column')) {
2236
+ right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
2237
+ }
2238
+ styleObject.right = right + 'px';
2239
+ } else {
2240
+ var left = 0;
2241
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
2242
+ if (prev && prev.classList.contains('p-frozen-column')) {
2243
+ left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2244
+ }
2245
+ styleObject.left = left + 'px';
2246
+ }
2247
+ var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
2248
+ !isSameStyle && setStyleObjectState(styleObject);
2249
+ }
2250
+ }, []);
2251
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener) {
2252
+ if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2253
+ selfClick.current = true;
2254
+ var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2255
+ var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2256
+ var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
2257
+ if (onBeforeCellEditShow) {
2258
+ // if user returns false do not show the editor
2259
+ if (onBeforeCellEditShow(params) === false) {
2260
+ return;
2261
+ }
2262
+
2263
+ // if user prevents default stop the editor
2264
+ if (event && event.defaultPrevented) {
2265
+ return;
2266
+ }
2267
+ }
2268
+
2269
+ // 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.
2270
+ setTimeout(function () {
2271
+ setEditingState(true);
2272
+ if (onCellEditInit) {
2273
+ if (onCellEditInit(params) === false) {
2274
+ return;
2275
+ }
2276
+
2277
+ // if user prevents default stop the editor
2278
+ if (event && event.defaultPrevented) {
2279
+ return;
2280
+ }
2281
+ }
2282
+ if (cellEditValidatorEvent === 'click') {
2283
+ bindDocumentClickListener();
2284
+ overlayEventListener.current = function (e) {
2285
+ if (!isOutsideClicked(e.target)) {
2286
+ selfClick.current = true;
2287
+ }
2288
+ };
2289
+ OverlayService.on('overlay-click', overlayEventListener.current);
2290
+ }
2291
+ }, 1);
2292
+ }
2293
+ if (props.allowCellSelection && props.onCellClick) {
2294
+ props.onCellClick(params);
2295
+ }
2296
+ };
2300
2297
  var createContent = function createContent() {
2301
2298
  return props.columns.map(function (col, i) {
2302
2299
  if (shouldRenderBodyCell(props.value, col, props.index)) {
2303
2300
  var key = "".concat(props.rowIndex, "_").concat(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'), "_").concat(i);
2304
2301
  var rowSpan = props.rowGroupMode === 'rowspan' ? calculateRowGroupSize(props.value, col, props.index) : null;
2305
- return /*#__PURE__*/React.createElement(BodyCell, {
2302
+ var field = getColumnProp(col, 'field') || "field_".concat(i);
2303
+ var resolveFieldData = function resolveFieldData(data) {
2304
+ return ObjectUtils.resolveFieldData(data || props.rowData, field);
2305
+ };
2306
+ var selectionMode = getColumnProp(col, 'selectionMode');
2307
+ var cellProps = mergeProps({
2306
2308
  hostName: props.hostName,
2307
- key: key,
2308
2309
  allowCellSelection: props.allowCellSelection,
2309
2310
  cellClassName: props.cellClassName,
2310
2311
  checkIcon: props.checkIcon,
2311
2312
  collapsedRowIcon: props.collapsedRowIcon,
2313
+ field: field,
2314
+ resolveFieldData: resolveFieldData,
2312
2315
  column: col,
2313
- compareSelectionBy: props.compareSelectionBy,
2316
+ cProps: props.colsProps[i],
2314
2317
  dataKey: props.dataKey,
2315
2318
  editMode: props.editMode,
2316
2319
  editing: editing,
2317
2320
  editingMeta: props.editingMeta,
2321
+ onEditingMetaChange: props.onEditingMetaChange,
2322
+ editingKey: editingKey,
2323
+ getEditingRowData: getEditingRowData,
2318
2324
  expanded: props.expanded,
2319
2325
  expandedRowIcon: props.expandedRowIcon,
2320
2326
  frozenRow: props.frozenRow,
2327
+ frozenCol: getColumnProp(col, 'frozen'),
2328
+ alignFrozenCol: getColumnProp(col, 'alignFrozen'),
2321
2329
  index: i,
2322
2330
  isSelectable: props.isSelectable,
2323
- onCheckboxChange: props.onCheckboxChange,
2324
- onClick: props.onCellClick,
2325
- onEditingMetaChange: props.onEditingMetaChange,
2331
+ onCheckboxChange: onCheckboxChange,
2332
+ onClick: onCellClick,
2326
2333
  onMouseDown: props.onCellMouseDown,
2327
2334
  onMouseUp: props.onCellMouseUp,
2328
2335
  onRadioChange: props.onRadioChange,
@@ -2338,20 +2345,31 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2338
2345
  rowIndex: props.rowIndex,
2339
2346
  rowSpan: rowSpan,
2340
2347
  selectOnEdit: props.selectOnEdit,
2341
- selected: props.selected,
2342
- selection: props.selection,
2348
+ isRowSelected: isRowSelected,
2349
+ isCellSelected: isCellSelected(props.selection, field, i),
2343
2350
  selectionAriaLabel: props.tableProps.selectionAriaLabel,
2344
2351
  showRowReorderElement: props.showRowReorderElement,
2345
2352
  showSelectionElement: props.showSelectionElement,
2346
2353
  tabIndex: props.tabIndex,
2354
+ getTabIndex: getTabIndexCell,
2347
2355
  tableProps: props.tableProps,
2348
2356
  tableSelector: props.tableSelector,
2349
2357
  value: props.value,
2350
- virtualScrollerOptions: props.virtualScrollerOptions,
2358
+ getVirtualScrollerOption: getVirtualScrollerOption,
2351
2359
  ptCallbacks: props.ptCallbacks,
2352
2360
  metaData: props.metaData,
2353
- unstyled: props.unstyled
2361
+ unstyled: props.unstyled,
2362
+ findNextSelectableCell: findNextSelectableCell,
2363
+ findPrevSelectableCell: findPrevSelectableCell,
2364
+ findDownSelectableCell: findDownSelectableCell,
2365
+ findUpSelectableCell: findUpSelectableCell,
2366
+ focusOnElement: focusOnElement,
2367
+ focusOnInit: focusOnInit,
2368
+ updateStickyPosition: updateStickyPosition
2354
2369
  });
2370
+ return /*#__PURE__*/React.createElement(Fragment, {
2371
+ key: key
2372
+ }, selectionMode ? /*#__PURE__*/React.createElement(RadioCheckCell, cellProps) : /*#__PURE__*/React.createElement(BodyCell, cellProps));
2355
2373
  }
2356
2374
  return null;
2357
2375
  });
@@ -2501,8 +2519,11 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2501
2519
  var getColumnProps = function getColumnProps(column) {
2502
2520
  return ColumnBase.getCProps(column);
2503
2521
  };
2522
+ var cProps = getColumnProps(props.column);
2523
+ var colsProps = props.columns ? props.columns.map(function (col) {
2524
+ return getColumnProps(col);
2525
+ }) : [];
2504
2526
  var getColumnPTOptions = function getColumnPTOptions(key) {
2505
- var cProps = getColumnProps(props.column);
2506
2527
  var columnMetaData = {
2507
2528
  props: cProps,
2508
2529
  parent: props.metaData,
@@ -2627,8 +2648,12 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2627
2648
  var allowSelection = function allowSelection(event) {
2628
2649
  return !DomHandler.isClickable(event.originalEvent.target);
2629
2650
  };
2651
+ var metaKeySelectionRef = React.useRef(props.metaKeySelection);
2652
+ React.useEffect(function () {
2653
+ metaKeySelectionRef.current = props.metaKeySelection;
2654
+ }, [props.metaKeySelection]);
2630
2655
  var allowMetaKeySelection = function allowMetaKeySelection(event) {
2631
- return !rowTouched.current && (!props.metaKeySelection || props.metaKeySelection && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2656
+ return !rowTouched.current && (!metaKeySelectionRef.current || metaKeySelectionRef.current && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2632
2657
  };
2633
2658
  var allowRangeSelection = function allowRangeSelection(event) {
2634
2659
  return isMultipleSelection() && event.originalEvent.shiftKey && anchorRowIndex.current !== null;
@@ -2701,6 +2726,10 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2701
2726
  });
2702
2727
  }
2703
2728
  };
2729
+ var selectionRef = React.useRef(props.selection);
2730
+ React.useEffect(function () {
2731
+ selectionRef.current = props.selection;
2732
+ }, [props.selection]);
2704
2733
  var onSingleSelection = function onSingleSelection(_ref) {
2705
2734
  var originalEvent = _ref.originalEvent,
2706
2735
  data = _ref.data,
@@ -2714,10 +2743,11 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2714
2743
  return;
2715
2744
  }
2716
2745
  var selected = isSelected(data);
2717
- var selection = props.selection;
2746
+ var currentSelection = selectionRef.current || [];
2747
+ var newSelection = currentSelection;
2718
2748
  if (selected) {
2719
2749
  if (toggleable) {
2720
- selection = null;
2750
+ newSelection = null;
2721
2751
  onUnselect({
2722
2752
  originalEvent: originalEvent,
2723
2753
  data: data,
@@ -2725,7 +2755,7 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2725
2755
  });
2726
2756
  }
2727
2757
  } else {
2728
- selection = data;
2758
+ newSelection = data;
2729
2759
  onSelect({
2730
2760
  originalEvent: originalEvent,
2731
2761
  data: data,
@@ -2733,10 +2763,10 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2733
2763
  });
2734
2764
  }
2735
2765
  focusOnElement(originalEvent, true);
2736
- if (props.onSelectionChange && selection !== props.selection) {
2766
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2737
2767
  props.onSelectionChange({
2738
2768
  originalEvent: originalEvent,
2739
- value: selection,
2769
+ value: newSelection,
2740
2770
  type: type
2741
2771
  });
2742
2772
  }
@@ -2754,11 +2784,12 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2754
2784
  return;
2755
2785
  }
2756
2786
  var selected = isSelected(data);
2757
- var selection = props.selection || [];
2787
+ var currentSelection = selectionRef.current || [];
2788
+ var newSelection = currentSelection;
2758
2789
  if (selected) {
2759
2790
  if (toggleable) {
2760
- var selectionIndex = findIndex(selection, data);
2761
- selection = props.selection.filter(function (val, i) {
2791
+ var selectionIndex = findIndex(currentSelection, data);
2792
+ newSelection = currentSelection.filter(function (val, i) {
2762
2793
  return i !== selectionIndex;
2763
2794
  });
2764
2795
  onUnselect({
@@ -2766,15 +2797,15 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2766
2797
  data: data,
2767
2798
  type: type
2768
2799
  });
2769
- } else if (selection.length) {
2770
- props.selection.forEach(function (d) {
2800
+ } else if (currentSelection.length) {
2801
+ currentSelection.forEach(function (d) {
2771
2802
  return onUnselect({
2772
2803
  originalEvent: originalEvent,
2773
2804
  data: d,
2774
2805
  type: type
2775
2806
  });
2776
2807
  });
2777
- selection = [data];
2808
+ newSelection = [data];
2778
2809
  onSelect({
2779
2810
  originalEvent: originalEvent,
2780
2811
  data: data,
@@ -2782,18 +2813,18 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2782
2813
  });
2783
2814
  }
2784
2815
  } else {
2785
- selection = ObjectUtils.isObject(selection) ? [selection] : selection;
2786
- selection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(selection), [data]) : [data];
2816
+ newSelection = ObjectUtils.isObject(currentSelection) ? [currentSelection] : currentSelection;
2817
+ newSelection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(newSelection), [data]) : [data];
2787
2818
  onSelect({
2788
2819
  originalEvent: originalEvent,
2789
2820
  data: data,
2790
2821
  type: type
2791
2822
  });
2792
2823
  }
2793
- if (props.onSelectionChange && selection !== props.selection) {
2824
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2794
2825
  props.onSelectionChange({
2795
2826
  originalEvent: originalEvent,
2796
- value: selection,
2827
+ value: newSelection,
2797
2828
  type: type
2798
2829
  });
2799
2830
  }
@@ -3395,6 +3426,7 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3395
3426
  checkIcon: props.checkIcon,
3396
3427
  collapsedRowIcon: props.collapsedRowIcon,
3397
3428
  columns: props.columns,
3429
+ colsProps: colsProps,
3398
3430
  compareSelectionBy: props.compareSelectionBy,
3399
3431
  contextMenuSelected: contextMenuSelected,
3400
3432
  dataKey: props.dataKey,
@@ -4178,9 +4210,17 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4178
4210
  var type = _ref.type,
4179
4211
  valid = _ref.valid;
4180
4212
  if (valid) {
4181
- type === 'outside' ? !selfClick.current && !isTargetClicked(event.target) && hide() : hide();
4213
+ if (type === 'outside') {
4214
+ if (!selfClick.current && !isTargetClicked(event.target)) {
4215
+ hide();
4216
+ }
4217
+ selfClick.current = false;
4218
+ } else if (context.hideOverlaysOnDocumentScrolling) {
4219
+ hide();
4220
+ } else if (!DomHandler.isDocument(event.target)) {
4221
+ DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact$1.appendTo, false);
4222
+ }
4182
4223
  }
4183
- selfClick.current = false;
4184
4224
  },
4185
4225
  when: overlayVisibleState
4186
4226
  }),