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
@@ -707,7 +707,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
707
707
  return props.checked === props.trueValue;
708
708
  };
709
709
  var _onChange = function onChange(event) {
710
- if (props.disabled || props.readonly) {
710
+ if (props.disabled || props.readOnly) {
711
711
  return;
712
712
  }
713
713
  if (props.onChange) {
@@ -966,7 +966,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
966
966
  onChange(event);
967
967
  };
968
968
  var onChange = function onChange(event) {
969
- if (props.disabled || props.readonly) {
969
+ if (props.disabled || props.readOnly) {
970
970
  return;
971
971
  }
972
972
  if (props.onChange) {
@@ -1069,7 +1069,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1069
1069
  onBlur: onBlur,
1070
1070
  onChange: onChange,
1071
1071
  disabled: props.disabled,
1072
- readOnly: props.readonly,
1072
+ readOnly: props.readOnly,
1073
1073
  required: props.required,
1074
1074
  tabIndex: props.tabIndex,
1075
1075
  className: cx('input')
@@ -1142,7 +1142,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1142
1142
 
1143
1143
  function ownKeys$b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1144
1144
  function _objectSpread$b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$b(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1145
- var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1145
+ var Cell = function Cell(props) {
1146
1146
  var mergeProps = hooks.useMergeProps();
1147
1147
  var _React$useState = React__namespace.useState(props.editing),
1148
1148
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -1170,13 +1170,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1170
1170
  var getColumnProp = function getColumnProp(name) {
1171
1171
  return ColumnBase.getCProp(props.column, name);
1172
1172
  };
1173
- var getColumnProps = function getColumnProps() {
1174
- return ColumnBase.getCProps(props.column);
1175
- };
1176
1173
  var getColumnPTOptions = function getColumnPTOptions(key) {
1177
- var cProps = getColumnProps();
1178
1174
  var columnMetaData = {
1179
- props: cProps,
1175
+ props: props.cProps,
1180
1176
  parent: props.metaData,
1181
1177
  hostName: props.hostName,
1182
1178
  state: {
@@ -1192,10 +1188,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1192
1188
  };
1193
1189
  return mergeProps(ptm("column.".concat(key), {
1194
1190
  column: columnMetaData
1195
- }), ptm("column.".concat(key), columnMetaData), ptmo(cProps, key, columnMetaData));
1191
+ }), ptm("column.".concat(key), columnMetaData), ptmo(props.cProps, key, columnMetaData));
1196
1192
  };
1197
- var field = getColumnProp('field') || "field_".concat(props.index);
1198
- var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
1199
1193
  var isEditable = function isEditable() {
1200
1194
  return utils.ObjectUtils.isNotEmpty(props.editMode) && getColumnProp('editor');
1201
1195
  };
@@ -1220,34 +1214,22 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1220
1214
  _useEventListener2 = _slicedToArray(_useEventListener, 2),
1221
1215
  bindDocumentClickListener = _useEventListener2[0],
1222
1216
  unbindDocumentClickListener = _useEventListener2[1];
1223
- var isSelected = function isSelected() {
1224
- return props.selection ? props.selection instanceof Array ? findIndex(props.selection) > -1 : equals(props.selection) : false;
1225
- };
1226
- var equalsData = function equalsData(data) {
1227
- return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
1228
- };
1229
- var equals = function equals(selectedCell) {
1230
- return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsData(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === props.index);
1231
- };
1232
1217
  var isOutsideClicked = function isOutsideClicked(target) {
1233
1218
  return elementRef.current && !(elementRef.current.isSameNode(target) || elementRef.current.contains(target));
1234
1219
  };
1235
- var getVirtualScrollerOption = function getVirtualScrollerOption(option) {
1236
- return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
1237
- };
1238
1220
  var getStyle = function getStyle() {
1239
1221
  var bodyStyle = getColumnProp('bodyStyle');
1240
1222
  var columnStyle = getColumnProp('style');
1241
- return getColumnProp('frozen') ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1223
+ return props.frozenCol ? Object.assign({}, columnStyle, bodyStyle, styleObjectState) : Object.assign({}, columnStyle, bodyStyle);
1242
1224
  };
1243
1225
  var getCellParams = function getCellParams() {
1244
1226
  return {
1245
- value: resolveFieldData(),
1246
- field: field,
1227
+ value: props.resolveFieldData(),
1228
+ field: props.field,
1247
1229
  rowData: props.rowData,
1248
1230
  rowIndex: props.rowIndex,
1249
1231
  cellIndex: props.index,
1250
- selected: isSelected(),
1232
+ selected: props.isCellSelected,
1251
1233
  column: props.column,
1252
1234
  props: props
1253
1235
  };
@@ -1258,20 +1240,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1258
1240
  originalEvent: event
1259
1241
  }, params);
1260
1242
  };
1261
- var resolveFieldData = function resolveFieldData(data) {
1262
- return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
1263
- };
1264
- var getEditingRowData = function getEditingRowData() {
1265
- return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
1266
- };
1267
- var getTabIndex = function getTabIndex(cellSelected) {
1268
- return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && props.index === 0 ? props.tabIndex : -1 : null;
1269
- };
1270
- var findIndex = function findIndex(collection) {
1271
- return (collection || []).findIndex(function (data) {
1272
- return equals(data);
1273
- });
1274
- };
1275
1243
  var closeCell = function closeCell(event) {
1276
1244
  var params = getCellCallbackParams(event);
1277
1245
  var onBeforeCellEditHide = getColumnProp('onBeforeCellEditHide');
@@ -1292,7 +1260,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1292
1260
  var switchCellToViewMode = function switchCellToViewMode(event, submit) {
1293
1261
  var callbackParams = getCellCallbackParams(event);
1294
1262
  var newRowData = _objectSpread$b({}, editingRowDataStateRef.current);
1295
- var newValue = resolveFieldData(newRowData);
1263
+ var newValue = props.resolveFieldData(newRowData);
1296
1264
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1297
1265
  newRowData: newRowData,
1298
1266
  newValue: newValue
@@ -1317,128 +1285,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1317
1285
  }
1318
1286
  setEditingRowDataState(newRowData);
1319
1287
  };
1320
- var _findNextSelectableCell = function findNextSelectableCell(cell) {
1321
- var nextCell = cell.nextElementSibling;
1322
- return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : _findNextSelectableCell(nextCell) : null;
1323
- };
1324
- var _findPrevSelectableCell = function findPrevSelectableCell(cell) {
1325
- var prevCell = cell.previousElementSibling;
1326
- return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : _findPrevSelectableCell(prevCell) : null;
1327
- };
1328
- var _findDownSelectableCell = function findDownSelectableCell(cell) {
1329
- var downRow = cell.parentElement.nextElementSibling;
1330
- var downCell = downRow ? downRow.children[props.index] : null;
1331
- return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : _findDownSelectableCell(downCell) : null;
1332
- };
1333
- var _findUpSelectableCell = function findUpSelectableCell(cell) {
1334
- var upRow = cell.parentElement.previousElementSibling;
1335
- var upCell = upRow ? upRow.children[props.index] : null;
1336
- return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : _findUpSelectableCell(upCell) : null;
1337
- };
1338
- var changeTabIndex = function changeTabIndex(currentCell, nextCell) {
1339
- if (currentCell && nextCell) {
1340
- currentCell.tabIndex = -1;
1341
- nextCell.tabIndex = props.tabIndex;
1342
- }
1343
- };
1344
- var focusOnElement = function focusOnElement() {
1345
- clearTimeout(focusTimeout.current);
1346
- focusTimeout.current = setTimeout(function () {
1347
- if (editingState) {
1348
- var focusableEl = props.editMode === 'cell' ? utils.DomHandler.getFirstFocusableElement(elementRef.current, ':not([data-pc-section="editorkeyhelperlabel"])') : utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-save="true"]');
1349
- focusableEl && focusableEl.focus();
1350
- }
1351
- keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
1352
- }, 1);
1353
- };
1354
- var focusOnInit = function focusOnInit() {
1355
- clearTimeout(initFocusTimeout.current);
1356
- initFocusTimeout.current = setTimeout(function () {
1357
- var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
1358
- focusableEl && focusableEl.focus();
1359
- }, 1);
1360
- };
1361
- var updateStickyPosition = function updateStickyPosition() {
1362
- if (getColumnProp('frozen')) {
1363
- var styleObject = _objectSpread$b({}, styleObjectState);
1364
- var align = getColumnProp('alignFrozen');
1365
- if (align === 'right') {
1366
- var right = 0;
1367
- var next = elementRef.current && elementRef.current.nextElementSibling;
1368
- if (next && next.classList.contains('p-frozen-column')) {
1369
- right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
1370
- }
1371
- styleObject.right = right + 'px';
1372
- } else {
1373
- var left = 0;
1374
- var prev = elementRef.current && elementRef.current.previousElementSibling;
1375
- if (prev && prev.classList.contains('p-frozen-column')) {
1376
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
1377
- }
1378
- styleObject.left = left + 'px';
1379
- }
1380
- var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
1381
- !isSameStyle && setStyleObjectState(styleObject);
1382
- }
1383
- };
1384
1288
  var editorCallback = function editorCallback(val) {
1385
1289
  var editingRowData = _objectSpread$b({}, editingRowDataState);
1386
- utils.ObjectUtils.mutateFieldData(editingRowData, field, val);
1290
+ utils.ObjectUtils.mutateFieldData(editingRowData, props.field, val);
1387
1291
  setEditingRowDataState(editingRowData);
1388
1292
 
1389
1293
  // update editing meta for complete methods on row mode
1390
- var currentData = getEditingRowData();
1294
+ var currentData = props.getEditingRowData();
1391
1295
  if (currentData) {
1392
- utils.ObjectUtils.mutateFieldData(currentData, field, val);
1296
+ utils.ObjectUtils.mutateFieldData(currentData, props.field, val);
1393
1297
  }
1394
1298
  editingRowDataStateRef.current = editingRowData;
1395
1299
  };
1396
1300
  var _onClick = function onClick(event) {
1397
- var params = getCellCallbackParams(event);
1398
- if (props.editMode !== 'row' && isEditable() && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.selected)) {
1399
- selfClick.current = true;
1400
- var onBeforeCellEditShow = getColumnProp('onBeforeCellEditShow');
1401
- var onCellEditInit = getColumnProp('onCellEditInit');
1402
- var cellEditValidatorEvent = getColumnProp('cellEditValidatorEvent');
1403
- if (onBeforeCellEditShow) {
1404
- // if user returns false do not show the editor
1405
- if (onBeforeCellEditShow(params) === false) {
1406
- return;
1407
- }
1408
-
1409
- // if user prevents default stop the editor
1410
- if (event && event.defaultPrevented) {
1411
- return;
1412
- }
1413
- }
1414
-
1415
- // If the data is sorted using sort icon, it has been added to wait for the sort operation when any cell is wanted to be opened.
1416
- setTimeout(function () {
1417
- setEditingState(true);
1418
- if (onCellEditInit) {
1419
- if (onCellEditInit(params) === false) {
1420
- return;
1421
- }
1422
-
1423
- // if user prevents default stop the editor
1424
- if (event && event.defaultPrevented) {
1425
- return;
1426
- }
1427
- }
1428
- if (cellEditValidatorEvent === 'click') {
1429
- bindDocumentClickListener();
1430
- overlayEventListener.current = function (e) {
1431
- if (!isOutsideClicked(e.target)) {
1432
- selfClick.current = true;
1433
- }
1434
- };
1435
- overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
1436
- }
1437
- }, 1);
1438
- }
1439
- if (props.allowCellSelection && props.onClick) {
1440
- props.onClick(params);
1441
- }
1301
+ props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, selfClick, props.column, bindDocumentClickListener, overlayEventListener);
1442
1302
  };
1443
1303
  var _onMouseDown = function onMouseDown(event) {
1444
1304
  var params = getCellCallbackParams(event);
@@ -1462,7 +1322,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1462
1322
  cell = event.currentTarget;
1463
1323
  switch (event.code) {
1464
1324
  case 'ArrowLeft':
1465
- var prevCell = _findPrevSelectableCell(cell);
1325
+ var prevCell = props.findPrevSelectableCell(cell);
1466
1326
  if (prevCell) {
1467
1327
  changeTabIndex(cell, prevCell);
1468
1328
  prevCell.focus();
@@ -1470,7 +1330,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1470
1330
  event.preventDefault();
1471
1331
  break;
1472
1332
  case 'ArrowRight':
1473
- var nextCell = _findNextSelectableCell(cell);
1333
+ var nextCell = props.findNextSelectableCell(cell);
1474
1334
  if (nextCell) {
1475
1335
  changeTabIndex(cell, nextCell);
1476
1336
  nextCell.focus();
@@ -1478,7 +1338,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1478
1338
  event.preventDefault();
1479
1339
  break;
1480
1340
  case 'ArrowUp':
1481
- var upCell = _findUpSelectableCell(cell);
1341
+ var upCell = props.findUpSelectableCell(cell, index);
1482
1342
  if (upCell) {
1483
1343
  changeTabIndex(cell, upCell);
1484
1344
  upCell.focus();
@@ -1486,7 +1346,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1486
1346
  event.preventDefault();
1487
1347
  break;
1488
1348
  case 'ArrowDown':
1489
- var downCell = _findDownSelectableCell(cell);
1349
+ var downCell = props.findDownSelectableCell(cell, index);
1490
1350
  if (downCell) {
1491
1351
  changeTabIndex(cell, downCell);
1492
1352
  downCell.focus();
@@ -1525,13 +1385,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1525
1385
  index: props.rowIndex
1526
1386
  });
1527
1387
  };
1528
- var onCheckboxChange = function onCheckboxChange(event) {
1529
- props.onCheckboxChange({
1530
- originalEvent: event,
1531
- data: props.rowData,
1532
- index: props.rowIndex
1533
- });
1534
- };
1535
1388
  var onRowToggle = function onRowToggle(event) {
1536
1389
  props.onRowToggle({
1537
1390
  originalEvent: event,
@@ -1544,8 +1397,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1544
1397
  props.onRowEditInit({
1545
1398
  originalEvent: event,
1546
1399
  data: props.rowData,
1547
- newData: getEditingRowData(),
1548
- field: field,
1400
+ newData: props.getEditingRowData(),
1401
+ field: props.field,
1549
1402
  index: props.rowIndex
1550
1403
  });
1551
1404
  };
@@ -1553,32 +1406,26 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1553
1406
  props.onRowEditSave({
1554
1407
  originalEvent: event,
1555
1408
  data: props.rowData,
1556
- newData: getEditingRowData(),
1557
- field: field,
1409
+ newData: props.getEditingRowData(),
1410
+ field: props.field,
1558
1411
  index: props.rowIndex
1559
1412
  });
1560
- focusOnInit();
1413
+ props.focusOnInit(initFocusTimeout, elementRef);
1561
1414
  };
1562
1415
  var onRowEditCancel = function onRowEditCancel(event) {
1563
1416
  props.onRowEditCancel({
1564
1417
  originalEvent: event,
1565
1418
  data: props.rowData,
1566
- newData: getEditingRowData(),
1567
- field: field,
1419
+ newData: props.getEditingRowData(),
1420
+ field: props.field,
1568
1421
  index: props.rowIndex
1569
1422
  });
1570
- focusOnInit();
1423
+ props.focusOnInit();
1571
1424
  };
1572
1425
  React__namespace.useEffect(function () {
1573
- if (getColumnProp('frozen')) {
1574
- updateStickyPosition();
1575
- }
1576
- });
1577
- React__namespace.useEffect(function () {
1578
- if (props.editMode === 'cell' || props.editMode === 'row') {
1579
- focusOnElement();
1580
- }
1581
- }, [props.editMode, props.editing, editingState]); // eslint-disable-line react-hooks/exhaustive-deps
1426
+ if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
1427
+ if (props.editMode === 'cell' || props.editMode === 'row') props.focusOnElement(focusTimeout, editingState, elementRef, keyHelperRef);
1428
+ }, [props.editMode, props.editing, editingState, props.frozenCol, props.alignFrozenCol]); // eslint-disable-line react-hooks/exhaustive-deps
1582
1429
 
1583
1430
  React__namespace.useEffect(function () {
1584
1431
  if (props.editMode === 'row' && props.editing !== editingState) {
@@ -1587,7 +1434,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1587
1434
  }, [props.editMode, props.editing, editingState]);
1588
1435
  hooks.useUpdateEffect(function () {
1589
1436
  if (props.editMode === 'cell' || props.editMode === 'row') {
1590
- var editingRowData = getEditingRowData();
1437
+ var editingRowData = props.getEditingRowData();
1591
1438
  setEditingRowDataState(editingRowData);
1592
1439
  editingRowDataStateRef.current = editingRowData;
1593
1440
  }
@@ -1597,7 +1444,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1597
1444
  var callbackParams = getCellCallbackParams();
1598
1445
  var params = _objectSpread$b(_objectSpread$b({}, callbackParams), {}, {
1599
1446
  editing: editingState,
1600
- editingKey: editingKey
1447
+ editingKey: props.editingKey
1601
1448
  });
1602
1449
  props.onEditingMetaChange(params);
1603
1450
  }
@@ -1610,16 +1457,16 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1610
1457
  }
1611
1458
  });
1612
1459
  var createLoading = function createLoading() {
1613
- var options = getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1460
+ var options = props.getVirtualScrollerOption('getLoaderOptions')(props.rowIndex, {
1614
1461
  cellIndex: props.index,
1615
1462
  cellFirst: props.index === 0,
1616
- cellLast: props.index === getVirtualScrollerOption('columns').length - 1,
1463
+ cellLast: props.index === props.getVirtualScrollerOption('columns').length - 1,
1617
1464
  cellEven: props.index % 2 === 0,
1618
1465
  cellOdd: props.index % 2 !== 0,
1619
1466
  column: props.column,
1620
- field: field
1467
+ field: props.field
1621
1468
  });
1622
- var content = utils.ObjectUtils.getJSXElement(getVirtualScrollerOption('loadingTemplate'), options);
1469
+ var content = utils.ObjectUtils.getJSXElement(props.getVirtualScrollerOption('loadingTemplate'), options);
1623
1470
  var bodyCellProps = mergeProps(getColumnPTOptions('bodyCell'), {
1624
1471
  role: 'cell'
1625
1472
  });
@@ -1628,20 +1475,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1628
1475
  var createElement = function createElement() {
1629
1476
  var content;
1630
1477
  var editorKeyHelper;
1631
- var cellSelected = props.allowCellSelection && isSelected();
1478
+ var cellSelected = props.allowCellSelection && props.isCellSelected;
1632
1479
  var isRowEditor = props.editMode === 'row';
1633
- var tabIndex = getTabIndex(cellSelected);
1480
+ var tabIndex = props.getTabIndex(cellSelected, props.index);
1634
1481
  var selectionMode = getColumnProp('selectionMode');
1635
1482
  var rowReorder = getColumnProp('rowReorder');
1636
1483
  var header = getColumnProp('header');
1637
1484
  var body = getColumnProp('body');
1638
1485
  var editor = getColumnProp('editor');
1639
- var frozen = getColumnProp('frozen');
1486
+ var frozen = props.frozenCol;
1640
1487
  var align = getColumnProp('align');
1641
- var value = resolveFieldData();
1488
+ var value = props.resolveFieldData();
1642
1489
  var columnBodyOptions = {
1643
1490
  column: props.column,
1644
- field: field,
1491
+ field: props.field,
1645
1492
  rowIndex: props.rowIndex,
1646
1493
  frozenRow: props.frozenRow,
1647
1494
  props: props.tableProps
@@ -1666,12 +1513,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1666
1513
  if (showSelection) {
1667
1514
  var ariaLabelField = props.selectionAriaLabel || props.tableProps.dataKey;
1668
1515
  var ariaLabelText = utils.ObjectUtils.resolveFieldData(props.rowData, ariaLabelField);
1669
- label = "".concat(props.selected ? PrimeReact$1.ariaLabel('unselectRow') : PrimeReact$1.ariaLabel('selectRow'), " ").concat(ariaLabelText);
1516
+ label = "".concat(props.isRowSelected ? PrimeReact$1.ariaLabel('unselectRow') : PrimeReact$1.ariaLabel('selectRow'), " ").concat(ariaLabelText);
1670
1517
  }
1671
1518
  content = showSelection && /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, selectionMode === 'single' && /*#__PURE__*/React__namespace.createElement(RowRadioButton, {
1672
1519
  hostName: props.hostName,
1673
1520
  column: props.column,
1674
- checked: props.selected,
1521
+ checked: props.isRowSelected,
1675
1522
  disabled: !props.isSelectable({
1676
1523
  data: props.rowData,
1677
1524
  index: props.rowIndex
@@ -1686,12 +1533,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1686
1533
  }), selectionMode === 'multiple' && /*#__PURE__*/React__namespace.createElement(RowCheckbox, {
1687
1534
  hostName: props.hostName,
1688
1535
  column: props.column,
1689
- checked: props.selected,
1536
+ checked: props.isRowSelected,
1690
1537
  disabled: !props.isSelectable({
1691
1538
  data: props.rowData,
1692
1539
  index: props.rowIndex
1693
1540
  }),
1694
- onChange: onCheckboxChange,
1541
+ onChange: props.onCheckboxChange,
1695
1542
  tabIndex: props.tabIndex,
1696
1543
  ariaLabel: label,
1697
1544
  checkIcon: props.checkIcon,
@@ -1741,7 +1588,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1741
1588
  expanderProps.element = content;
1742
1589
  content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
1743
1590
  column: props.column,
1744
- field: field,
1591
+ field: props.field,
1745
1592
  rowIndex: props.rowIndex,
1746
1593
  frozenRow: props.frozenRow,
1747
1594
  props: props.tableProps,
@@ -1815,7 +1662,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1815
1662
  rowEditorProps.element = content;
1816
1663
  content = utils.ObjectUtils.getJSXElement(body, props.rowData, {
1817
1664
  column: props.column,
1818
- field: field,
1665
+ field: props.field,
1819
1666
  rowIndex: props.rowIndex,
1820
1667
  frozenRow: props.frozenRow,
1821
1668
  props: props.tableProps,
@@ -1825,7 +1672,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1825
1672
  } else if (body && (!editingState || !editor)) {
1826
1673
  content = body ? utils.ObjectUtils.getJSXElement(body, props.rowData, {
1827
1674
  column: props.column,
1828
- field: field,
1675
+ field: props.field,
1829
1676
  rowIndex: props.rowIndex,
1830
1677
  frozenRow: props.frozenRow,
1831
1678
  props: props.tableProps
@@ -1833,9 +1680,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1833
1680
  } else if (editor && editingState) {
1834
1681
  content = utils.ObjectUtils.getJSXElement(editor, {
1835
1682
  rowData: editingRowDataState,
1836
- value: resolveFieldData(editingRowDataState),
1683
+ value: props.resolveFieldData(editingRowDataState),
1837
1684
  column: props.column,
1838
- field: field,
1685
+ field: props.field,
1839
1686
  rowIndex: props.rowIndex,
1840
1687
  frozenRow: props.frozenRow,
1841
1688
  props: props.tableProps,
@@ -1903,7 +1750,22 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1903
1750
  ref: elementRef
1904
1751
  }, bodyCellProps), editorKeyHelper, title, content);
1905
1752
  };
1906
- return getVirtualScrollerOption('loading') ? createLoading() : createElement();
1753
+ return props.getVirtualScrollerOption('loading') ? createLoading() : createElement();
1754
+ };
1755
+
1756
+ // RadioCheckCell is used for the Radio and Checkbox selection and has the isRowSelected dependency
1757
+ var RadioCheckCell = /*#__PURE__*/React__namespace.memo(function (props) {
1758
+ return /*#__PURE__*/React__namespace.createElement(Cell, props);
1759
+ }, function (prevProps, nextProps) {
1760
+ var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
1761
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1762
+ });
1763
+ RadioCheckCell.displayName = 'RadioCheckCell';
1764
+ var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1765
+ return /*#__PURE__*/React__namespace.createElement(Cell, props);
1766
+ }, function (prevProps, nextProps) {
1767
+ var keysToCompare = ['field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData', 'frozenCol', 'alignFrozenCol'];
1768
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1907
1769
  });
1908
1770
  BodyCell.displayName = 'BodyCell';
1909
1771
 
@@ -1919,6 +1781,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1919
1781
  var _props$ptCallbacks = props.ptCallbacks,
1920
1782
  ptm = _props$ptCallbacks.ptm,
1921
1783
  cx = _props$ptCallbacks.cx;
1784
+ var isRowSelected = !props.allowCellSelection && props.selected || props.contextMenuSelected;
1922
1785
  var getBodyRowPTOptions = function getBodyRowPTOptions(key) {
1923
1786
  return ptm(key, {
1924
1787
  parent: props.metaData,
@@ -1932,7 +1795,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1932
1795
  data: props.rowData,
1933
1796
  index: props.rowIndex
1934
1797
  }),
1935
- selected: !props.allowCellSelection && props.selected || props.contextMenuSelected,
1798
+ selected: isRowSelected,
1936
1799
  stripedRows: props.metaData.props.stripedRows
1937
1800
  }
1938
1801
  });
@@ -1961,10 +1824,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1961
1824
  return equals(rowData, data);
1962
1825
  });
1963
1826
  };
1964
- var changeTabIndex = function changeTabIndex(currentRow, nextRow) {
1965
- if (currentRow && nextRow) {
1966
- currentRow.tabIndex = -1;
1967
- nextRow.tabIndex = props.tabIndex;
1827
+ var changeTabIndex = function changeTabIndex(currentElement, nextElement) {
1828
+ if (currentElement && nextElement) {
1829
+ currentElement.tabIndex = -1;
1830
+ nextElement.tabIndex = props.tabIndex;
1968
1831
  }
1969
1832
  };
1970
1833
  var findFirstSelectableRow = function findFirstSelectableRow(row) {
@@ -2291,32 +2154,176 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2291
2154
  onEditChange(e, false);
2292
2155
  event.preventDefault();
2293
2156
  };
2157
+ var equalsDataCell = function equalsDataCell(data) {
2158
+ return props.compareSelectionBy === 'equals' ? data === props.rowData : utils.ObjectUtils.equals(data, props.rowData, props.dataKey);
2159
+ };
2160
+ var equalsCell = function equalsCell(selectedCell, field, colIndex) {
2161
+ return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsDataCell(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === colIndex);
2162
+ };
2163
+ var findIndexCell = function findIndexCell(collection, field, colIndex) {
2164
+ return (collection || []).findIndex(function (data) {
2165
+ return equalsCell(data, field, colIndex);
2166
+ });
2167
+ };
2168
+ var isCellSelected = function isCellSelected(selection, field, colIndex) {
2169
+ return selection ? selection instanceof Array ? findIndexCell(selection, field, colIndex) > -1 : equalsCell(selection, field, colIndex) : false;
2170
+ };
2171
+ var onCheckboxChange = function onCheckboxChange(event) {
2172
+ props.onCheckboxChange({
2173
+ originalEvent: event,
2174
+ data: props.rowData,
2175
+ index: props.rowIndex
2176
+ });
2177
+ };
2178
+ var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
2179
+ var getVirtualScrollerOption = React__namespace.useCallback(function (option) {
2180
+ return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
2181
+ }, [props.virtualScrollerOptions]);
2182
+ var getEditingRowData = function getEditingRowData() {
2183
+ return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
2184
+ };
2185
+ var getTabIndexCell = React__namespace.useCallback(function (cellSelected, cellIndex) {
2186
+ return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && cellIndex === 0 ? props.tabIndex : -1 : null;
2187
+ }, [props.allowCellSelection, props.rowIndex, props.tabIndex]);
2188
+ var findNextSelectableCell = React__namespace.useCallback(function (cell) {
2189
+ var nextCell = cell.nextElementSibling;
2190
+ return nextCell ? utils.DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : findNextSelectableCell(nextCell) : null;
2191
+ }, []);
2192
+ var findPrevSelectableCell = React__namespace.useCallback(function (cell) {
2193
+ var prevCell = cell.previousElementSibling;
2194
+ return prevCell ? utils.DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : findPrevSelectableCell(prevCell) : null;
2195
+ }, []);
2196
+ var findDownSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2197
+ var downRow = cell.parentElement.nextElementSibling;
2198
+ var downCell = downRow ? downRow.children[cellIndex] : null;
2199
+ return downRow && downCell ? utils.DomHandler.getAttribute(downRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : findDownSelectableCell(downCell) : null;
2200
+ }, []);
2201
+ var findUpSelectableCell = React__namespace.useCallback(function (cell, cellIndex) {
2202
+ var upRow = cell.parentElement.previousElementSibling;
2203
+ var upCell = upRow ? upRow.children[cellIndex] : null;
2204
+ return upRow && upCell ? utils.DomHandler.getAttribute(upRow, 'data-p-selectable-row') && utils.DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : findUpSelectableCell(upCell) : null;
2205
+ }, []);
2206
+ var focusOnElement = React__namespace.useCallback(function (focusTimeoutRef, editingState, elementRef, keyHelperRef) {
2207
+ clearTimeout(focusTimeoutRef.current);
2208
+ focusTimeoutRef.current = setTimeout(function () {
2209
+ if (editingState) {
2210
+ 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"]');
2211
+ focusableEl && focusableEl.focus();
2212
+ }
2213
+ keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
2214
+ }, 1);
2215
+ }, [props.editMode]);
2216
+ var focusOnInit = React__namespace.useCallback(function (initFocusTimeoutRef, elementRef) {
2217
+ clearTimeout(initFocusTimeoutRef.current);
2218
+ initFocusTimeoutRef.current = setTimeout(function () {
2219
+ var focusableEl = props.editMode === 'row' ? utils.DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
2220
+ focusableEl && focusableEl.focus();
2221
+ }, 1);
2222
+ }, [props.editMode]);
2223
+ var updateStickyPosition = React__namespace.useCallback(function (elementRef, frozen, alignFrozen, styleObjectState, setStyleObjectState) {
2224
+ if (frozen) {
2225
+ var styleObject = _objectSpread$a({}, styleObjectState);
2226
+ if (alignFrozen === 'right') {
2227
+ var right = 0;
2228
+ var next = elementRef.current && elementRef.current.nextElementSibling;
2229
+ if (next && next.classList.contains('p-frozen-column')) {
2230
+ right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
2231
+ }
2232
+ styleObject.right = right + 'px';
2233
+ } else {
2234
+ var left = 0;
2235
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
2236
+ if (prev && prev.classList.contains('p-frozen-column')) {
2237
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2238
+ }
2239
+ styleObject.left = left + 'px';
2240
+ }
2241
+ var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
2242
+ !isSameStyle && setStyleObjectState(styleObject);
2243
+ }
2244
+ }, []);
2245
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener) {
2246
+ if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2247
+ selfClick.current = true;
2248
+ var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2249
+ var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2250
+ var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
2251
+ if (onBeforeCellEditShow) {
2252
+ // if user returns false do not show the editor
2253
+ if (onBeforeCellEditShow(params) === false) {
2254
+ return;
2255
+ }
2256
+
2257
+ // if user prevents default stop the editor
2258
+ if (event && event.defaultPrevented) {
2259
+ return;
2260
+ }
2261
+ }
2262
+
2263
+ // 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.
2264
+ setTimeout(function () {
2265
+ setEditingState(true);
2266
+ if (onCellEditInit) {
2267
+ if (onCellEditInit(params) === false) {
2268
+ return;
2269
+ }
2270
+
2271
+ // if user prevents default stop the editor
2272
+ if (event && event.defaultPrevented) {
2273
+ return;
2274
+ }
2275
+ }
2276
+ if (cellEditValidatorEvent === 'click') {
2277
+ bindDocumentClickListener();
2278
+ overlayEventListener.current = function (e) {
2279
+ if (!isOutsideClicked(e.target)) {
2280
+ selfClick.current = true;
2281
+ }
2282
+ };
2283
+ overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
2284
+ }
2285
+ }, 1);
2286
+ }
2287
+ if (props.allowCellSelection && props.onCellClick) {
2288
+ props.onCellClick(params);
2289
+ }
2290
+ };
2294
2291
  var createContent = function createContent() {
2295
2292
  return props.columns.map(function (col, i) {
2296
2293
  if (shouldRenderBodyCell(props.value, col, props.index)) {
2297
2294
  var key = "".concat(props.rowIndex, "_").concat(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'), "_").concat(i);
2298
2295
  var rowSpan = props.rowGroupMode === 'rowspan' ? calculateRowGroupSize(props.value, col, props.index) : null;
2299
- return /*#__PURE__*/React__namespace.createElement(BodyCell, {
2296
+ var field = getColumnProp(col, 'field') || "field_".concat(i);
2297
+ var resolveFieldData = function resolveFieldData(data) {
2298
+ return utils.ObjectUtils.resolveFieldData(data || props.rowData, field);
2299
+ };
2300
+ var selectionMode = getColumnProp(col, 'selectionMode');
2301
+ var cellProps = mergeProps({
2300
2302
  hostName: props.hostName,
2301
- key: key,
2302
2303
  allowCellSelection: props.allowCellSelection,
2303
2304
  cellClassName: props.cellClassName,
2304
2305
  checkIcon: props.checkIcon,
2305
2306
  collapsedRowIcon: props.collapsedRowIcon,
2307
+ field: field,
2308
+ resolveFieldData: resolveFieldData,
2306
2309
  column: col,
2307
- compareSelectionBy: props.compareSelectionBy,
2310
+ cProps: props.colsProps[i],
2308
2311
  dataKey: props.dataKey,
2309
2312
  editMode: props.editMode,
2310
2313
  editing: editing,
2311
2314
  editingMeta: props.editingMeta,
2315
+ onEditingMetaChange: props.onEditingMetaChange,
2316
+ editingKey: editingKey,
2317
+ getEditingRowData: getEditingRowData,
2312
2318
  expanded: props.expanded,
2313
2319
  expandedRowIcon: props.expandedRowIcon,
2314
2320
  frozenRow: props.frozenRow,
2321
+ frozenCol: getColumnProp(col, 'frozen'),
2322
+ alignFrozenCol: getColumnProp(col, 'alignFrozen'),
2315
2323
  index: i,
2316
2324
  isSelectable: props.isSelectable,
2317
- onCheckboxChange: props.onCheckboxChange,
2318
- onClick: props.onCellClick,
2319
- onEditingMetaChange: props.onEditingMetaChange,
2325
+ onCheckboxChange: onCheckboxChange,
2326
+ onClick: onCellClick,
2320
2327
  onMouseDown: props.onCellMouseDown,
2321
2328
  onMouseUp: props.onCellMouseUp,
2322
2329
  onRadioChange: props.onRadioChange,
@@ -2332,20 +2339,31 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2332
2339
  rowIndex: props.rowIndex,
2333
2340
  rowSpan: rowSpan,
2334
2341
  selectOnEdit: props.selectOnEdit,
2335
- selected: props.selected,
2336
- selection: props.selection,
2342
+ isRowSelected: isRowSelected,
2343
+ isCellSelected: isCellSelected(props.selection, field, i),
2337
2344
  selectionAriaLabel: props.tableProps.selectionAriaLabel,
2338
2345
  showRowReorderElement: props.showRowReorderElement,
2339
2346
  showSelectionElement: props.showSelectionElement,
2340
2347
  tabIndex: props.tabIndex,
2348
+ getTabIndex: getTabIndexCell,
2341
2349
  tableProps: props.tableProps,
2342
2350
  tableSelector: props.tableSelector,
2343
2351
  value: props.value,
2344
- virtualScrollerOptions: props.virtualScrollerOptions,
2352
+ getVirtualScrollerOption: getVirtualScrollerOption,
2345
2353
  ptCallbacks: props.ptCallbacks,
2346
2354
  metaData: props.metaData,
2347
- unstyled: props.unstyled
2355
+ unstyled: props.unstyled,
2356
+ findNextSelectableCell: findNextSelectableCell,
2357
+ findPrevSelectableCell: findPrevSelectableCell,
2358
+ findDownSelectableCell: findDownSelectableCell,
2359
+ findUpSelectableCell: findUpSelectableCell,
2360
+ focusOnElement: focusOnElement,
2361
+ focusOnInit: focusOnInit,
2362
+ updateStickyPosition: updateStickyPosition
2348
2363
  });
2364
+ return /*#__PURE__*/React__namespace.createElement(React.Fragment, {
2365
+ key: key
2366
+ }, selectionMode ? /*#__PURE__*/React__namespace.createElement(RadioCheckCell, cellProps) : /*#__PURE__*/React__namespace.createElement(BodyCell, cellProps));
2349
2367
  }
2350
2368
  return null;
2351
2369
  });
@@ -2495,8 +2513,11 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2495
2513
  var getColumnProps = function getColumnProps(column) {
2496
2514
  return ColumnBase.getCProps(column);
2497
2515
  };
2516
+ var cProps = getColumnProps(props.column);
2517
+ var colsProps = props.columns ? props.columns.map(function (col) {
2518
+ return getColumnProps(col);
2519
+ }) : [];
2498
2520
  var getColumnPTOptions = function getColumnPTOptions(key) {
2499
- var cProps = getColumnProps(props.column);
2500
2521
  var columnMetaData = {
2501
2522
  props: cProps,
2502
2523
  parent: props.metaData,
@@ -2621,8 +2642,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2621
2642
  var allowSelection = function allowSelection(event) {
2622
2643
  return !utils.DomHandler.isClickable(event.originalEvent.target);
2623
2644
  };
2645
+ var metaKeySelectionRef = React__namespace.useRef(props.metaKeySelection);
2646
+ React__namespace.useEffect(function () {
2647
+ metaKeySelectionRef.current = props.metaKeySelection;
2648
+ }, [props.metaKeySelection]);
2624
2649
  var allowMetaKeySelection = function allowMetaKeySelection(event) {
2625
- return !rowTouched.current && (!props.metaKeySelection || props.metaKeySelection && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2650
+ return !rowTouched.current && (!metaKeySelectionRef.current || metaKeySelectionRef.current && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2626
2651
  };
2627
2652
  var allowRangeSelection = function allowRangeSelection(event) {
2628
2653
  return isMultipleSelection() && event.originalEvent.shiftKey && anchorRowIndex.current !== null;
@@ -2695,6 +2720,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2695
2720
  });
2696
2721
  }
2697
2722
  };
2723
+ var selectionRef = React__namespace.useRef(props.selection);
2724
+ React__namespace.useEffect(function () {
2725
+ selectionRef.current = props.selection;
2726
+ }, [props.selection]);
2698
2727
  var onSingleSelection = function onSingleSelection(_ref) {
2699
2728
  var originalEvent = _ref.originalEvent,
2700
2729
  data = _ref.data,
@@ -2708,10 +2737,11 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2708
2737
  return;
2709
2738
  }
2710
2739
  var selected = isSelected(data);
2711
- var selection = props.selection;
2740
+ var currentSelection = selectionRef.current || [];
2741
+ var newSelection = currentSelection;
2712
2742
  if (selected) {
2713
2743
  if (toggleable) {
2714
- selection = null;
2744
+ newSelection = null;
2715
2745
  onUnselect({
2716
2746
  originalEvent: originalEvent,
2717
2747
  data: data,
@@ -2719,7 +2749,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2719
2749
  });
2720
2750
  }
2721
2751
  } else {
2722
- selection = data;
2752
+ newSelection = data;
2723
2753
  onSelect({
2724
2754
  originalEvent: originalEvent,
2725
2755
  data: data,
@@ -2727,10 +2757,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2727
2757
  });
2728
2758
  }
2729
2759
  focusOnElement(originalEvent, true);
2730
- if (props.onSelectionChange && selection !== props.selection) {
2760
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2731
2761
  props.onSelectionChange({
2732
2762
  originalEvent: originalEvent,
2733
- value: selection,
2763
+ value: newSelection,
2734
2764
  type: type
2735
2765
  });
2736
2766
  }
@@ -2748,11 +2778,12 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2748
2778
  return;
2749
2779
  }
2750
2780
  var selected = isSelected(data);
2751
- var selection = props.selection || [];
2781
+ var currentSelection = selectionRef.current || [];
2782
+ var newSelection = currentSelection;
2752
2783
  if (selected) {
2753
2784
  if (toggleable) {
2754
- var selectionIndex = findIndex(selection, data);
2755
- selection = props.selection.filter(function (val, i) {
2785
+ var selectionIndex = findIndex(currentSelection, data);
2786
+ newSelection = currentSelection.filter(function (val, i) {
2756
2787
  return i !== selectionIndex;
2757
2788
  });
2758
2789
  onUnselect({
@@ -2760,15 +2791,15 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2760
2791
  data: data,
2761
2792
  type: type
2762
2793
  });
2763
- } else if (selection.length) {
2764
- props.selection.forEach(function (d) {
2794
+ } else if (currentSelection.length) {
2795
+ currentSelection.forEach(function (d) {
2765
2796
  return onUnselect({
2766
2797
  originalEvent: originalEvent,
2767
2798
  data: d,
2768
2799
  type: type
2769
2800
  });
2770
2801
  });
2771
- selection = [data];
2802
+ newSelection = [data];
2772
2803
  onSelect({
2773
2804
  originalEvent: originalEvent,
2774
2805
  data: data,
@@ -2776,18 +2807,18 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2776
2807
  });
2777
2808
  }
2778
2809
  } else {
2779
- selection = utils.ObjectUtils.isObject(selection) ? [selection] : selection;
2780
- selection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(selection), [data]) : [data];
2810
+ newSelection = utils.ObjectUtils.isObject(currentSelection) ? [currentSelection] : currentSelection;
2811
+ newSelection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(newSelection), [data]) : [data];
2781
2812
  onSelect({
2782
2813
  originalEvent: originalEvent,
2783
2814
  data: data,
2784
2815
  type: type
2785
2816
  });
2786
2817
  }
2787
- if (props.onSelectionChange && selection !== props.selection) {
2818
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2788
2819
  props.onSelectionChange({
2789
2820
  originalEvent: originalEvent,
2790
- value: selection,
2821
+ value: newSelection,
2791
2822
  type: type
2792
2823
  });
2793
2824
  }
@@ -3389,6 +3420,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3389
3420
  checkIcon: props.checkIcon,
3390
3421
  collapsedRowIcon: props.collapsedRowIcon,
3391
3422
  columns: props.columns,
3423
+ colsProps: colsProps,
3392
3424
  compareSelectionBy: props.compareSelectionBy,
3393
3425
  contextMenuSelected: contextMenuSelected,
3394
3426
  dataKey: props.dataKey,
@@ -4172,9 +4204,17 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
4172
4204
  var type = _ref.type,
4173
4205
  valid = _ref.valid;
4174
4206
  if (valid) {
4175
- type === 'outside' ? !selfClick.current && !isTargetClicked(event.target) && hide() : hide();
4207
+ if (type === 'outside') {
4208
+ if (!selfClick.current && !isTargetClicked(event.target)) {
4209
+ hide();
4210
+ }
4211
+ selfClick.current = false;
4212
+ } else if (context.hideOverlaysOnDocumentScrolling) {
4213
+ hide();
4214
+ } else if (!utils.DomHandler.isDocument(event.target)) {
4215
+ utils.DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact__default["default"].appendTo, false);
4216
+ }
4176
4217
  }
4177
- selfClick.current = false;
4178
4218
  },
4179
4219
  when: overlayVisibleState
4180
4220
  }),