primereact 10.9.4 → 10.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/api/api.cjs.js +9 -1
  2. package/api/api.cjs.min.js +1 -1
  3. package/api/api.d.ts +5 -3
  4. package/api/api.esm.js +9 -1
  5. package/api/api.esm.min.js +1 -1
  6. package/api/api.js +9 -1
  7. package/api/api.min.js +1 -1
  8. package/autocomplete/autocomplete.cjs.js +13 -1
  9. package/autocomplete/autocomplete.cjs.min.js +1 -1
  10. package/autocomplete/autocomplete.d.ts +5 -5
  11. package/autocomplete/autocomplete.esm.js +14 -2
  12. package/autocomplete/autocomplete.esm.min.js +1 -1
  13. package/autocomplete/autocomplete.js +13 -1
  14. package/autocomplete/autocomplete.min.js +1 -1
  15. package/breadcrumb/breadcrumb.cjs.js +2 -1
  16. package/breadcrumb/breadcrumb.cjs.min.js +1 -1
  17. package/breadcrumb/breadcrumb.esm.js +2 -1
  18. package/breadcrumb/breadcrumb.esm.min.js +1 -1
  19. package/breadcrumb/breadcrumb.js +2 -1
  20. package/breadcrumb/breadcrumb.min.js +1 -1
  21. package/calendar/calendar.cjs.js +37 -7
  22. package/calendar/calendar.cjs.min.js +1 -1
  23. package/calendar/calendar.esm.js +38 -8
  24. package/calendar/calendar.esm.min.js +1 -1
  25. package/calendar/calendar.js +37 -7
  26. package/calendar/calendar.min.js +1 -1
  27. package/cascadeselect/cascadeselect.cjs.js +62 -5
  28. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  29. package/cascadeselect/cascadeselect.d.ts +22 -0
  30. package/cascadeselect/cascadeselect.esm.js +63 -6
  31. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  32. package/cascadeselect/cascadeselect.js +63 -7
  33. package/cascadeselect/cascadeselect.min.js +1 -1
  34. package/checkbox/checkbox.cjs.js +1 -1
  35. package/checkbox/checkbox.cjs.min.js +1 -1
  36. package/checkbox/checkbox.esm.js +1 -1
  37. package/checkbox/checkbox.esm.min.js +1 -1
  38. package/checkbox/checkbox.js +1 -1
  39. package/checkbox/checkbox.min.js +1 -1
  40. package/chip/chip.cjs.js +15 -2
  41. package/chip/chip.cjs.min.js +1 -1
  42. package/chip/chip.esm.js +17 -4
  43. package/chip/chip.esm.min.js +1 -1
  44. package/chip/chip.js +15 -2
  45. package/chip/chip.min.js +1 -1
  46. package/chips/chips.cjs.js +1 -1
  47. package/chips/chips.cjs.min.js +1 -1
  48. package/chips/chips.esm.js +1 -1
  49. package/chips/chips.esm.min.js +1 -1
  50. package/chips/chips.js +1 -1
  51. package/chips/chips.min.js +1 -1
  52. package/colorpicker/colorpicker.cjs.js +9 -2
  53. package/colorpicker/colorpicker.cjs.min.js +1 -1
  54. package/colorpicker/colorpicker.esm.js +9 -2
  55. package/colorpicker/colorpicker.esm.min.js +1 -1
  56. package/colorpicker/colorpicker.js +9 -2
  57. package/colorpicker/colorpicker.min.js +1 -1
  58. package/confirmpopup/confirmpopup.cjs.js +10 -2
  59. package/confirmpopup/confirmpopup.cjs.min.js +1 -1
  60. package/confirmpopup/confirmpopup.esm.js +10 -2
  61. package/confirmpopup/confirmpopup.esm.min.js +1 -1
  62. package/confirmpopup/confirmpopup.js +10 -2
  63. package/confirmpopup/confirmpopup.min.js +1 -1
  64. package/core/core.js +214 -38
  65. package/core/core.min.js +9 -9
  66. package/datatable/datatable.cjs.js +359 -291
  67. package/datatable/datatable.cjs.min.js +1 -1
  68. package/datatable/datatable.d.ts +79 -3
  69. package/datatable/datatable.esm.js +360 -292
  70. package/datatable/datatable.esm.min.js +1 -1
  71. package/datatable/datatable.js +359 -291
  72. package/datatable/datatable.min.js +1 -1
  73. package/dialog/dialog.cjs.js +3 -2
  74. package/dialog/dialog.cjs.min.js +1 -1
  75. package/dialog/dialog.d.ts +6 -1
  76. package/dialog/dialog.esm.js +3 -2
  77. package/dialog/dialog.esm.min.js +1 -1
  78. package/dialog/dialog.js +3 -2
  79. package/dialog/dialog.min.js +1 -1
  80. package/dropdown/dropdown.cjs.js +26 -5
  81. package/dropdown/dropdown.cjs.min.js +1 -1
  82. package/dropdown/dropdown.d.ts +4 -0
  83. package/dropdown/dropdown.esm.js +26 -5
  84. package/dropdown/dropdown.esm.min.js +1 -1
  85. package/dropdown/dropdown.js +26 -5
  86. package/dropdown/dropdown.min.js +1 -1
  87. package/fileupload/fileupload.cjs.js +4 -2
  88. package/fileupload/fileupload.cjs.min.js +1 -1
  89. package/fileupload/fileupload.esm.js +4 -2
  90. package/fileupload/fileupload.esm.min.js +1 -1
  91. package/fileupload/fileupload.js +4 -2
  92. package/fileupload/fileupload.min.js +1 -1
  93. package/galleria/galleria.cjs.js +1 -0
  94. package/galleria/galleria.cjs.min.js +1 -1
  95. package/galleria/galleria.esm.js +1 -0
  96. package/galleria/galleria.esm.min.js +1 -1
  97. package/galleria/galleria.js +1 -0
  98. package/galleria/galleria.min.js +1 -1
  99. package/hooks/hooks.cjs.js +16 -6
  100. package/hooks/hooks.cjs.min.js +1 -1
  101. package/hooks/hooks.esm.js +16 -6
  102. package/hooks/hooks.esm.min.js +1 -1
  103. package/hooks/hooks.js +16 -6
  104. package/hooks/hooks.min.js +1 -1
  105. package/inputmask/inputmask.cjs.js +1 -1
  106. package/inputmask/inputmask.cjs.min.js +1 -1
  107. package/inputmask/inputmask.esm.js +1 -1
  108. package/inputmask/inputmask.esm.min.js +1 -1
  109. package/inputmask/inputmask.js +1 -1
  110. package/inputmask/inputmask.min.js +1 -1
  111. package/inputnumber/inputnumber.cjs.js +11 -3
  112. package/inputnumber/inputnumber.cjs.min.js +1 -1
  113. package/inputnumber/inputnumber.esm.js +11 -3
  114. package/inputnumber/inputnumber.esm.min.js +1 -1
  115. package/inputnumber/inputnumber.js +11 -3
  116. package/inputnumber/inputnumber.min.js +1 -1
  117. package/inputotp/inputotp.cjs.js +1 -0
  118. package/inputotp/inputotp.cjs.min.js +1 -1
  119. package/inputotp/inputotp.esm.js +1 -0
  120. package/inputotp/inputotp.esm.min.js +1 -1
  121. package/inputotp/inputotp.js +1 -0
  122. package/inputotp/inputotp.min.js +1 -1
  123. package/listbox/listbox.d.ts +4 -4
  124. package/mention/mention.cjs.js +18 -9
  125. package/mention/mention.cjs.min.js +1 -1
  126. package/mention/mention.d.ts +5 -0
  127. package/mention/mention.esm.js +18 -9
  128. package/mention/mention.esm.min.js +1 -1
  129. package/mention/mention.js +18 -9
  130. package/mention/mention.min.js +1 -1
  131. package/menu/menu.cjs.js +14 -3
  132. package/menu/menu.cjs.min.js +1 -1
  133. package/menu/menu.esm.js +15 -4
  134. package/menu/menu.esm.min.js +1 -1
  135. package/menu/menu.js +14 -3
  136. package/menu/menu.min.js +1 -1
  137. package/menubar/menubar.cjs.js +6 -9
  138. package/menubar/menubar.cjs.min.js +1 -1
  139. package/menubar/menubar.esm.js +6 -9
  140. package/menubar/menubar.esm.min.js +1 -1
  141. package/menubar/menubar.js +6 -9
  142. package/menubar/menubar.min.js +1 -1
  143. package/multiselect/multiselect.cjs.js +68 -18
  144. package/multiselect/multiselect.cjs.min.js +1 -1
  145. package/multiselect/multiselect.esm.js +68 -18
  146. package/multiselect/multiselect.esm.min.js +1 -1
  147. package/multiselect/multiselect.js +68 -18
  148. package/multiselect/multiselect.min.js +1 -1
  149. package/multistatecheckbox/multistatecheckbox.cjs.js +17 -9
  150. package/multistatecheckbox/multistatecheckbox.cjs.min.js +1 -1
  151. package/multistatecheckbox/multistatecheckbox.esm.js +17 -9
  152. package/multistatecheckbox/multistatecheckbox.esm.min.js +1 -1
  153. package/multistatecheckbox/multistatecheckbox.js +17 -9
  154. package/multistatecheckbox/multistatecheckbox.min.js +1 -1
  155. package/orderlist/orderlist.cjs.js +34 -3
  156. package/orderlist/orderlist.cjs.min.js +1 -1
  157. package/orderlist/orderlist.esm.js +34 -3
  158. package/orderlist/orderlist.esm.min.js +1 -1
  159. package/orderlist/orderlist.js +34 -3
  160. package/orderlist/orderlist.min.js +1 -1
  161. package/overlaypanel/overlaypanel.cjs.js +9 -10
  162. package/overlaypanel/overlaypanel.cjs.min.js +1 -1
  163. package/overlaypanel/overlaypanel.esm.js +9 -10
  164. package/overlaypanel/overlaypanel.esm.min.js +1 -1
  165. package/overlaypanel/overlaypanel.js +9 -10
  166. package/overlaypanel/overlaypanel.min.js +1 -1
  167. package/package.json +1 -1
  168. package/paginator/paginator.cjs.js +9 -1
  169. package/paginator/paginator.cjs.min.js +1 -1
  170. package/paginator/paginator.esm.js +9 -1
  171. package/paginator/paginator.esm.min.js +1 -1
  172. package/paginator/paginator.js +9 -1
  173. package/paginator/paginator.min.js +1 -1
  174. package/password/password.cjs.js +9 -2
  175. package/password/password.cjs.min.js +1 -1
  176. package/password/password.esm.js +10 -3
  177. package/password/password.esm.min.js +1 -1
  178. package/password/password.js +9 -2
  179. package/password/password.min.js +1 -1
  180. package/picklist/picklist.cjs.js +9 -1
  181. package/picklist/picklist.cjs.min.js +1 -1
  182. package/picklist/picklist.esm.js +9 -1
  183. package/picklist/picklist.esm.min.js +1 -1
  184. package/picklist/picklist.js +9 -1
  185. package/picklist/picklist.min.js +1 -1
  186. package/primereact.all.cjs.js +931 -442
  187. package/primereact.all.cjs.min.js +1 -1
  188. package/primereact.all.esm.js +932 -443
  189. package/primereact.all.esm.min.js +1 -1
  190. package/primereact.all.js +931 -442
  191. package/primereact.all.min.js +1 -1
  192. package/radiobutton/radiobutton.cjs.js +2 -2
  193. package/radiobutton/radiobutton.cjs.min.js +1 -1
  194. package/radiobutton/radiobutton.d.ts +1 -1
  195. package/radiobutton/radiobutton.esm.js +2 -2
  196. package/radiobutton/radiobutton.esm.min.js +1 -1
  197. package/radiobutton/radiobutton.js +2 -2
  198. package/radiobutton/radiobutton.min.js +1 -1
  199. package/slidemenu/slidemenu.cjs.js +9 -2
  200. package/slidemenu/slidemenu.cjs.min.js +1 -1
  201. package/slidemenu/slidemenu.esm.js +10 -3
  202. package/slidemenu/slidemenu.esm.min.js +1 -1
  203. package/slidemenu/slidemenu.js +9 -2
  204. package/slidemenu/slidemenu.min.js +1 -1
  205. package/tree/tree.cjs.js +1 -1
  206. package/tree/tree.cjs.min.js +1 -1
  207. package/tree/tree.esm.js +1 -1
  208. package/tree/tree.esm.min.js +1 -1
  209. package/tree/tree.js +1 -1
  210. package/tree/tree.min.js +1 -1
  211. package/treeselect/treeselect.cjs.js +19 -8
  212. package/treeselect/treeselect.cjs.min.js +1 -1
  213. package/treeselect/treeselect.d.ts +33 -0
  214. package/treeselect/treeselect.esm.js +19 -8
  215. package/treeselect/treeselect.esm.min.js +1 -1
  216. package/treeselect/treeselect.js +19 -8
  217. package/treeselect/treeselect.min.js +1 -1
  218. package/treetable/treetable.cjs.js +1 -1
  219. package/treetable/treetable.cjs.min.js +1 -1
  220. package/treetable/treetable.esm.js +1 -1
  221. package/treetable/treetable.esm.min.js +1 -1
  222. package/treetable/treetable.js +1 -1
  223. package/treetable/treetable.min.js +1 -1
  224. package/tristatecheckbox/tristatecheckbox.cjs.js +7 -6
  225. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  226. package/tristatecheckbox/tristatecheckbox.esm.js +7 -6
  227. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  228. package/tristatecheckbox/tristatecheckbox.js +7 -6
  229. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  230. package/utils/utils.cjs.js +138 -18
  231. package/utils/utils.cjs.min.js +1 -1
  232. package/utils/utils.d.ts +5 -1
  233. package/utils/utils.esm.js +138 -18
  234. package/utils/utils.esm.min.js +1 -1
  235. package/utils/utils.js +138 -18
  236. package/utils/utils.min.js +1 -1
  237. package/web-types.json +105 -11
@@ -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, isOutsideClicked);
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(initFocusTimeout, elementRef);
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,29 @@ 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 defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
1771
+ var BodyCell = /*#__PURE__*/React.memo(function (props) {
1772
+ return /*#__PURE__*/React.createElement(Cell, props);
1773
+ }, function (prevProps, nextProps) {
1774
+ if (nextProps.cellMemo === false) return false;
1775
+ var memoProps = nextProps.cellMemoProps;
1776
+ var keysToCompare = Array.isArray(memoProps) && memoProps.every(function (prop) {
1777
+ return typeof prop === 'string';
1778
+ }) ? memoProps : defaultKeysToCompare;
1779
+ var memoPropsDepth = nextProps.cellMemoPropsDepth;
1780
+ var depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
1781
+ return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
1913
1782
  });
1914
1783
  BodyCell.displayName = 'BodyCell';
1915
1784
 
@@ -1925,6 +1794,7 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
1925
1794
  var _props$ptCallbacks = props.ptCallbacks,
1926
1795
  ptm = _props$ptCallbacks.ptm,
1927
1796
  cx = _props$ptCallbacks.cx;
1797
+ var isRowSelected = !props.allowCellSelection && props.selected || props.contextMenuSelected;
1928
1798
  var getBodyRowPTOptions = function getBodyRowPTOptions(key) {
1929
1799
  return ptm(key, {
1930
1800
  parent: props.metaData,
@@ -1938,7 +1808,7 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
1938
1808
  data: props.rowData,
1939
1809
  index: props.rowIndex
1940
1810
  }),
1941
- selected: !props.allowCellSelection && props.selected || props.contextMenuSelected,
1811
+ selected: isRowSelected,
1942
1812
  stripedRows: props.metaData.props.stripedRows
1943
1813
  }
1944
1814
  });
@@ -1967,10 +1837,10 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
1967
1837
  return equals(rowData, data);
1968
1838
  });
1969
1839
  };
1970
- var changeTabIndex = function changeTabIndex(currentRow, nextRow) {
1971
- if (currentRow && nextRow) {
1972
- currentRow.tabIndex = -1;
1973
- nextRow.tabIndex = props.tabIndex;
1840
+ var changeTabIndex = function changeTabIndex(currentElement, nextElement) {
1841
+ if (currentElement && nextElement) {
1842
+ currentElement.tabIndex = -1;
1843
+ nextElement.tabIndex = props.tabIndex;
1974
1844
  }
1975
1845
  };
1976
1846
  var findFirstSelectableRow = function findFirstSelectableRow(row) {
@@ -2297,32 +2167,179 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2297
2167
  onEditChange(e, false);
2298
2168
  event.preventDefault();
2299
2169
  };
2170
+ var equalsDataCell = function equalsDataCell(data) {
2171
+ return props.compareSelectionBy === 'equals' ? data === props.rowData : ObjectUtils.equals(data, props.rowData, props.dataKey);
2172
+ };
2173
+ var equalsCell = function equalsCell(selectedCell, field, colIndex) {
2174
+ return selectedCell && (selectedCell.rowIndex === props.rowIndex || equalsDataCell(selectedCell.rowData)) && (selectedCell.field === field || selectedCell.cellIndex === colIndex);
2175
+ };
2176
+ var findIndexCell = function findIndexCell(collection, field, colIndex) {
2177
+ return (collection || []).findIndex(function (data) {
2178
+ return equalsCell(data, field, colIndex);
2179
+ });
2180
+ };
2181
+ var isCellSelected = function isCellSelected(selection, field, colIndex) {
2182
+ return selection ? selection instanceof Array ? findIndexCell(selection, field, colIndex) > -1 : equalsCell(selection, field, colIndex) : false;
2183
+ };
2184
+ var onCheckboxChange = function onCheckboxChange(event) {
2185
+ props.onCheckboxChange({
2186
+ originalEvent: event,
2187
+ data: props.rowData,
2188
+ index: props.rowIndex
2189
+ });
2190
+ };
2191
+ var editingKey = props.dataKey ? props.rowData && props.rowData[props.dataKey] || props.rowIndex : props.rowIndex;
2192
+ var getVirtualScrollerOption = React.useCallback(function (option) {
2193
+ return props.virtualScrollerOptions ? props.virtualScrollerOptions[option] : null;
2194
+ }, [props.virtualScrollerOptions]);
2195
+ var getEditingRowData = function getEditingRowData() {
2196
+ return props.editingMeta && props.editingMeta[editingKey] ? props.editingMeta[editingKey].data : props.rowData;
2197
+ };
2198
+ var getTabIndexCell = React.useCallback(function (cellSelected, cellIndex) {
2199
+ return props.allowCellSelection ? cellSelected ? 0 : props.rowIndex === 0 && cellIndex === 0 ? props.tabIndex : -1 : null;
2200
+ }, [props.allowCellSelection, props.rowIndex, props.tabIndex]);
2201
+ var findNextSelectableCell = React.useCallback(function (cell) {
2202
+ var nextCell = cell.nextElementSibling;
2203
+ return nextCell ? DomHandler.getAttribute(nextCell, 'data-p-selectable-cell') ? nextCell : findNextSelectableCell(nextCell) : null;
2204
+ }, []);
2205
+ var findPrevSelectableCell = React.useCallback(function (cell) {
2206
+ var prevCell = cell.previousElementSibling;
2207
+ return prevCell ? DomHandler.getAttribute(prevCell, 'data-p-selectable-cell') ? prevCell : findPrevSelectableCell(prevCell) : null;
2208
+ }, []);
2209
+ var findDownSelectableCell = React.useCallback(function (cell, cellIndex) {
2210
+ var downRow = cell.parentElement.nextElementSibling;
2211
+ var downCell = downRow ? downRow.children[cellIndex] : null;
2212
+ return downRow && downCell ? DomHandler.getAttribute(downRow, 'data-p-selectable-row') && DomHandler.getAttribute(downCell, 'data-p-selectable-cell') ? downCell : findDownSelectableCell(downCell) : null;
2213
+ }, []);
2214
+ var findUpSelectableCell = React.useCallback(function (cell, cellIndex) {
2215
+ var upRow = cell.parentElement.previousElementSibling;
2216
+ var upCell = upRow ? upRow.children[cellIndex] : null;
2217
+ return upRow && upCell ? DomHandler.getAttribute(upRow, 'data-p-selectable-row') && DomHandler.getAttribute(upCell, 'data-p-selectable-cell') ? upCell : findUpSelectableCell(upCell) : null;
2218
+ }, []);
2219
+ var focusOnElement = React.useCallback(function (focusTimeoutRef, editingState, elementRef, keyHelperRef) {
2220
+ clearTimeout(focusTimeoutRef.current);
2221
+ focusTimeoutRef.current = setTimeout(function () {
2222
+ if (editingState) {
2223
+ var focusableEl = props.editMode === 'cell' ? DomHandler.getFirstFocusableElement(elementRef.current, ':not([data-pc-section="editorkeyhelperlabel"])') : DomHandler.findSingle(elementRef.current, '[data-p-row-editor-save="true"]');
2224
+ focusableEl && focusableEl.focus();
2225
+ }
2226
+ keyHelperRef.current && (keyHelperRef.current.tabIndex = editingState ? -1 : 0);
2227
+ }, 1);
2228
+ }, [props.editMode]);
2229
+ var focusOnInit = React.useCallback(function (initFocusTimeoutRef, elementRef) {
2230
+ clearTimeout(initFocusTimeoutRef.current);
2231
+ initFocusTimeoutRef.current = setTimeout(function () {
2232
+ var focusableEl = props.editMode === 'row' ? DomHandler.findSingle(elementRef.current, '[data-p-row-editor-init="true"]') : null;
2233
+ focusableEl && focusableEl.focus();
2234
+ }, 1);
2235
+ }, [props.editMode]);
2236
+ var updateStickyPosition = React.useCallback(function (elementRef, frozen, alignFrozen, styleObjectState, setStyleObjectState) {
2237
+ if (frozen) {
2238
+ var styleObject = _objectSpread$a({}, styleObjectState);
2239
+ if (alignFrozen === 'right') {
2240
+ var right = 0;
2241
+ var next = elementRef.current && elementRef.current.nextElementSibling;
2242
+ if (next && next.classList.contains('p-frozen-column')) {
2243
+ right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
2244
+ }
2245
+ styleObject.right = right + 'px';
2246
+ } else {
2247
+ var left = 0;
2248
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
2249
+ if (prev && prev.classList.contains('p-frozen-column')) {
2250
+ left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2251
+ }
2252
+ styleObject.left = left + 'px';
2253
+ }
2254
+ var isSameStyle = styleObjectState.left === styleObject.left && styleObjectState.right === styleObject.right;
2255
+ !isSameStyle && setStyleObjectState(styleObject);
2256
+ }
2257
+ }, []);
2258
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener, isOutsideClicked) {
2259
+ if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2260
+ selfClick.current = true;
2261
+ var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2262
+ var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2263
+ var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
2264
+ if (onBeforeCellEditShow) {
2265
+ // if user returns false do not show the editor
2266
+ if (onBeforeCellEditShow(params) === false) {
2267
+ return;
2268
+ }
2269
+
2270
+ // if user prevents default stop the editor
2271
+ if (event && event.defaultPrevented) {
2272
+ return;
2273
+ }
2274
+ }
2275
+
2276
+ // 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.
2277
+ setTimeout(function () {
2278
+ setEditingState(true);
2279
+ if (onCellEditInit) {
2280
+ if (onCellEditInit(params) === false) {
2281
+ return;
2282
+ }
2283
+
2284
+ // if user prevents default stop the editor
2285
+ if (event && event.defaultPrevented) {
2286
+ return;
2287
+ }
2288
+ }
2289
+ if (cellEditValidatorEvent === 'click') {
2290
+ bindDocumentClickListener();
2291
+ overlayEventListener.current = function (e) {
2292
+ if (!isOutsideClicked(e.target)) {
2293
+ selfClick.current = true;
2294
+ }
2295
+ };
2296
+ OverlayService.on('overlay-click', overlayEventListener.current);
2297
+ }
2298
+ }, 1);
2299
+ }
2300
+ if (props.allowCellSelection && props.onCellClick) {
2301
+ props.onCellClick(params);
2302
+ }
2303
+ };
2300
2304
  var createContent = function createContent() {
2301
2305
  return props.columns.map(function (col, i) {
2302
2306
  if (shouldRenderBodyCell(props.value, col, props.index)) {
2303
2307
  var key = "".concat(props.rowIndex, "_").concat(getColumnProp(col, 'columnKey') || getColumnProp(col, 'field'), "_").concat(i);
2304
2308
  var rowSpan = props.rowGroupMode === 'rowspan' ? calculateRowGroupSize(props.value, col, props.index) : null;
2305
- return /*#__PURE__*/React.createElement(BodyCell, {
2309
+ var field = getColumnProp(col, 'field') || "field_".concat(i);
2310
+ var resolveFieldData = function resolveFieldData(data) {
2311
+ return ObjectUtils.resolveFieldData(data || props.rowData, field);
2312
+ };
2313
+ var selectionMode = getColumnProp(col, 'selectionMode');
2314
+ var cellProps = mergeProps({
2306
2315
  hostName: props.hostName,
2307
- key: key,
2308
2316
  allowCellSelection: props.allowCellSelection,
2317
+ cellMemo: props.cellMemo,
2318
+ cellMemoProps: props.cellMemoProps,
2319
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
2309
2320
  cellClassName: props.cellClassName,
2310
2321
  checkIcon: props.checkIcon,
2311
2322
  collapsedRowIcon: props.collapsedRowIcon,
2323
+ field: field,
2324
+ resolveFieldData: resolveFieldData,
2312
2325
  column: col,
2313
- compareSelectionBy: props.compareSelectionBy,
2326
+ cProps: props.colsProps[i],
2314
2327
  dataKey: props.dataKey,
2315
2328
  editMode: props.editMode,
2316
2329
  editing: editing,
2317
2330
  editingMeta: props.editingMeta,
2331
+ onEditingMetaChange: props.onEditingMetaChange,
2332
+ editingKey: editingKey,
2333
+ getEditingRowData: getEditingRowData,
2318
2334
  expanded: props.expanded,
2319
2335
  expandedRowIcon: props.expandedRowIcon,
2320
2336
  frozenRow: props.frozenRow,
2337
+ frozenCol: getColumnProp(col, 'frozen'),
2338
+ alignFrozenCol: getColumnProp(col, 'alignFrozen'),
2321
2339
  index: i,
2322
2340
  isSelectable: props.isSelectable,
2323
- onCheckboxChange: props.onCheckboxChange,
2324
- onClick: props.onCellClick,
2325
- onEditingMetaChange: props.onEditingMetaChange,
2341
+ onCheckboxChange: onCheckboxChange,
2342
+ onClick: onCellClick,
2326
2343
  onMouseDown: props.onCellMouseDown,
2327
2344
  onMouseUp: props.onCellMouseUp,
2328
2345
  onRadioChange: props.onRadioChange,
@@ -2338,20 +2355,31 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2338
2355
  rowIndex: props.rowIndex,
2339
2356
  rowSpan: rowSpan,
2340
2357
  selectOnEdit: props.selectOnEdit,
2341
- selected: props.selected,
2342
- selection: props.selection,
2358
+ isRowSelected: isRowSelected,
2359
+ isCellSelected: isCellSelected(props.selection, field, i),
2343
2360
  selectionAriaLabel: props.tableProps.selectionAriaLabel,
2344
2361
  showRowReorderElement: props.showRowReorderElement,
2345
2362
  showSelectionElement: props.showSelectionElement,
2346
2363
  tabIndex: props.tabIndex,
2364
+ getTabIndex: getTabIndexCell,
2347
2365
  tableProps: props.tableProps,
2348
2366
  tableSelector: props.tableSelector,
2349
2367
  value: props.value,
2350
- virtualScrollerOptions: props.virtualScrollerOptions,
2368
+ getVirtualScrollerOption: getVirtualScrollerOption,
2351
2369
  ptCallbacks: props.ptCallbacks,
2352
2370
  metaData: props.metaData,
2353
- unstyled: props.unstyled
2371
+ unstyled: props.unstyled,
2372
+ findNextSelectableCell: findNextSelectableCell,
2373
+ findPrevSelectableCell: findPrevSelectableCell,
2374
+ findDownSelectableCell: findDownSelectableCell,
2375
+ findUpSelectableCell: findUpSelectableCell,
2376
+ focusOnElement: focusOnElement,
2377
+ focusOnInit: focusOnInit,
2378
+ updateStickyPosition: updateStickyPosition
2354
2379
  });
2380
+ return /*#__PURE__*/React.createElement(Fragment, {
2381
+ key: key
2382
+ }, selectionMode ? /*#__PURE__*/React.createElement(RadioCheckCell, cellProps) : /*#__PURE__*/React.createElement(BodyCell, cellProps));
2355
2383
  }
2356
2384
  return null;
2357
2385
  });
@@ -2501,8 +2529,11 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2501
2529
  var getColumnProps = function getColumnProps(column) {
2502
2530
  return ColumnBase.getCProps(column);
2503
2531
  };
2532
+ var cProps = getColumnProps(props.column);
2533
+ var colsProps = props.columns ? props.columns.map(function (col) {
2534
+ return getColumnProps(col);
2535
+ }) : [];
2504
2536
  var getColumnPTOptions = function getColumnPTOptions(key) {
2505
- var cProps = getColumnProps(props.column);
2506
2537
  var columnMetaData = {
2507
2538
  props: cProps,
2508
2539
  parent: props.metaData,
@@ -2627,8 +2658,12 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2627
2658
  var allowSelection = function allowSelection(event) {
2628
2659
  return !DomHandler.isClickable(event.originalEvent.target);
2629
2660
  };
2661
+ var metaKeySelectionRef = React.useRef(props.metaKeySelection);
2662
+ React.useEffect(function () {
2663
+ metaKeySelectionRef.current = props.metaKeySelection;
2664
+ }, [props.metaKeySelection]);
2630
2665
  var allowMetaKeySelection = function allowMetaKeySelection(event) {
2631
- return !rowTouched.current && (!props.metaKeySelection || props.metaKeySelection && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2666
+ return !rowTouched.current && (!metaKeySelectionRef.current || metaKeySelectionRef.current && (event.originalEvent.metaKey || event.originalEvent.ctrlKey));
2632
2667
  };
2633
2668
  var allowRangeSelection = function allowRangeSelection(event) {
2634
2669
  return isMultipleSelection() && event.originalEvent.shiftKey && anchorRowIndex.current !== null;
@@ -2649,9 +2684,6 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2649
2684
  options = options || props.virtualScrollerOptions;
2650
2685
  return options ? options[option] : null;
2651
2686
  };
2652
- var getProcessedDataIndex = function getProcessedDataIndex(rowIndex) {
2653
- return props.lazy ? rowIndex - props.first : rowIndex;
2654
- };
2655
2687
  var findIndex = function findIndex(collection, rowData) {
2656
2688
  return (collection || []).findIndex(function (data) {
2657
2689
  return equals(rowData, data);
@@ -2701,6 +2733,10 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2701
2733
  });
2702
2734
  }
2703
2735
  };
2736
+ var selectionRef = React.useRef(props.selection);
2737
+ React.useEffect(function () {
2738
+ selectionRef.current = props.selection;
2739
+ }, [props.selection]);
2704
2740
  var onSingleSelection = function onSingleSelection(_ref) {
2705
2741
  var originalEvent = _ref.originalEvent,
2706
2742
  data = _ref.data,
@@ -2714,10 +2750,11 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2714
2750
  return;
2715
2751
  }
2716
2752
  var selected = isSelected(data);
2717
- var selection = props.selection;
2753
+ var currentSelection = selectionRef.current || [];
2754
+ var newSelection = currentSelection;
2718
2755
  if (selected) {
2719
2756
  if (toggleable) {
2720
- selection = null;
2757
+ newSelection = null;
2721
2758
  onUnselect({
2722
2759
  originalEvent: originalEvent,
2723
2760
  data: data,
@@ -2725,7 +2762,7 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2725
2762
  });
2726
2763
  }
2727
2764
  } else {
2728
- selection = data;
2765
+ newSelection = data;
2729
2766
  onSelect({
2730
2767
  originalEvent: originalEvent,
2731
2768
  data: data,
@@ -2733,10 +2770,10 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2733
2770
  });
2734
2771
  }
2735
2772
  focusOnElement(originalEvent, true);
2736
- if (props.onSelectionChange && selection !== props.selection) {
2773
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2737
2774
  props.onSelectionChange({
2738
2775
  originalEvent: originalEvent,
2739
- value: selection,
2776
+ value: newSelection,
2740
2777
  type: type
2741
2778
  });
2742
2779
  }
@@ -2754,11 +2791,12 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2754
2791
  return;
2755
2792
  }
2756
2793
  var selected = isSelected(data);
2757
- var selection = props.selection || [];
2794
+ var currentSelection = selectionRef.current || [];
2795
+ var newSelection = currentSelection;
2758
2796
  if (selected) {
2759
2797
  if (toggleable) {
2760
- var selectionIndex = findIndex(selection, data);
2761
- selection = props.selection.filter(function (val, i) {
2798
+ var selectionIndex = findIndex(currentSelection, data);
2799
+ newSelection = currentSelection.filter(function (val, i) {
2762
2800
  return i !== selectionIndex;
2763
2801
  });
2764
2802
  onUnselect({
@@ -2766,15 +2804,15 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2766
2804
  data: data,
2767
2805
  type: type
2768
2806
  });
2769
- } else if (selection.length) {
2770
- props.selection.forEach(function (d) {
2807
+ } else if (currentSelection.length) {
2808
+ currentSelection.forEach(function (d) {
2771
2809
  return onUnselect({
2772
2810
  originalEvent: originalEvent,
2773
2811
  data: d,
2774
2812
  type: type
2775
2813
  });
2776
2814
  });
2777
- selection = [data];
2815
+ newSelection = [data];
2778
2816
  onSelect({
2779
2817
  originalEvent: originalEvent,
2780
2818
  data: data,
@@ -2782,18 +2820,18 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2782
2820
  });
2783
2821
  }
2784
2822
  } else {
2785
- selection = ObjectUtils.isObject(selection) ? [selection] : selection;
2786
- selection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(selection), [data]) : [data];
2823
+ newSelection = ObjectUtils.isObject(currentSelection) ? [currentSelection] : currentSelection;
2824
+ newSelection = toggleable && isMultipleSelection() ? [].concat(_toConsumableArray(newSelection), [data]) : [data];
2787
2825
  onSelect({
2788
2826
  originalEvent: originalEvent,
2789
2827
  data: data,
2790
2828
  type: type
2791
2829
  });
2792
2830
  }
2793
- if (props.onSelectionChange && selection !== props.selection) {
2831
+ if (props.onSelectionChange && newSelection !== currentSelection) {
2794
2832
  props.onSelectionChange({
2795
2833
  originalEvent: originalEvent,
2796
- value: selection,
2834
+ value: newSelection,
2797
2835
  type: type
2798
2836
  });
2799
2837
  }
@@ -2816,16 +2854,14 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2816
2854
  var rangeStart;
2817
2855
  var rangeEnd;
2818
2856
  var isAllowCellSelection = allowCellSelection();
2819
- var rangeRowIndexInProcessedData = getProcessedDataIndex(rangeRowIndex.current);
2820
- var anchorRowIndexInProcessedData = getProcessedDataIndex(anchorRowIndex.current);
2821
- if (rangeRowIndexInProcessedData > anchorRowIndexInProcessedData) {
2822
- rangeStart = anchorRowIndexInProcessedData;
2823
- rangeEnd = rangeRowIndexInProcessedData;
2824
- } else if (rangeRowIndexInProcessedData < anchorRowIndexInProcessedData) {
2825
- rangeStart = rangeRowIndexInProcessedData;
2826
- rangeEnd = anchorRowIndexInProcessedData;
2857
+ if (rangeRowIndex.current > anchorRowIndex.current) {
2858
+ rangeStart = anchorRowIndex.current;
2859
+ rangeEnd = rangeRowIndex.current;
2860
+ } else if (rangeRowIndex.current < anchorRowIndex.current) {
2861
+ rangeStart = rangeRowIndex.current;
2862
+ rangeEnd = anchorRowIndex.current;
2827
2863
  } else {
2828
- rangeStart = rangeEnd = rangeRowIndexInProcessedData;
2864
+ rangeStart = rangeEnd = rangeRowIndex.current;
2829
2865
  }
2830
2866
  return isAllowCellSelection ? selectRangeOnCell(event, rangeStart, rangeEnd) : selectRangeOnRow(event, rangeStart, rangeEnd);
2831
2867
  };
@@ -2866,7 +2902,7 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2866
2902
  for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
2867
2903
  var rowData = value[i];
2868
2904
  var columns = props.columns;
2869
- var rowIndex = props.lazy ? i + props.first : i;
2905
+ var rowIndex = props.paginator ? i + props.first : i;
2870
2906
  for (var j = cellRangeStart; j <= cellRangeEnd; j++) {
2871
2907
  var field = getColumnProp(columns[j], 'field');
2872
2908
  var _value = ObjectUtils.resolveFieldData(rowData, field);
@@ -3065,13 +3101,17 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3065
3101
  onRangeSelection(event, 'row');
3066
3102
  }
3067
3103
  };
3104
+ var expandedRowsRef = React.useRef(props.expandedRows);
3105
+ React.useEffect(function () {
3106
+ expandedRowsRef.current = props.expandedRows;
3107
+ }, [props.expandedRows]);
3068
3108
  var onRowToggle = function onRowToggle(event) {
3069
3109
  var expandedRows;
3070
3110
  var dataKey = props.dataKey;
3071
3111
  var hasDataKey = props.groupRowsBy ? dataKey === props.groupRowsBy : !!dataKey;
3072
3112
  if (hasDataKey) {
3073
3113
  var dataKeyValue = String(ObjectUtils.resolveFieldData(event.data, dataKey));
3074
- expandedRows = props.expandedRows ? _objectSpread$8({}, props.expandedRows) : {};
3114
+ expandedRows = expandedRowsRef.current ? _objectSpread$8({}, expandedRowsRef.current) : {};
3075
3115
  if (expandedRows[dataKeyValue] != null) {
3076
3116
  delete expandedRows[dataKeyValue];
3077
3117
  if (props.onRowCollapse) {
@@ -3090,8 +3130,8 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3090
3130
  }
3091
3131
  }
3092
3132
  } else {
3093
- var expandedRowIndex = findIndex(props.expandedRows, event.data);
3094
- expandedRows = props.expandedRows ? _toConsumableArray(props.expandedRows) : [];
3133
+ var expandedRowIndex = findIndex(expandedRowsRef.current, event.data);
3134
+ expandedRows = expandedRowsRef.current ? _toConsumableArray(expandedRowsRef.current) : [];
3095
3135
  if (expandedRowIndex !== -1) {
3096
3136
  expandedRows = expandedRows.filter(function (_, i) {
3097
3137
  return i !== expandedRowIndex;
@@ -3341,7 +3381,7 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3341
3381
  return null;
3342
3382
  };
3343
3383
  var createGroupHeader = function createGroupHeader(rowData, rowIndex, expanded, colSpan) {
3344
- if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, getProcessedDataIndex(rowIndex))) {
3384
+ if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, rowIndex - props.first)) {
3345
3385
  var style = rowGroupHeaderStyle();
3346
3386
  var toggler = props.expandableRowGroups && /*#__PURE__*/React.createElement(RowTogglerButton, {
3347
3387
  hostName: props.hostName,
@@ -3391,10 +3431,14 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3391
3431
  hostName: props.hostName,
3392
3432
  allowCellSelection: _allowCellSelection,
3393
3433
  allowRowSelection: _allowRowSelection,
3434
+ cellMemo: props.cellMemo,
3435
+ cellMemoProps: props.cellMemoProps,
3436
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
3394
3437
  cellClassName: props.cellClassName,
3395
3438
  checkIcon: props.checkIcon,
3396
3439
  collapsedRowIcon: props.collapsedRowIcon,
3397
3440
  columns: props.columns,
3441
+ colsProps: colsProps,
3398
3442
  compareSelectionBy: props.compareSelectionBy,
3399
3443
  contextMenuSelected: contextMenuSelected,
3400
3444
  dataKey: props.dataKey,
@@ -3782,6 +3826,7 @@ var FilterMatchMode = Object.freeze({
3782
3826
  EQUALS: 'equals',
3783
3827
  NOT_EQUALS: 'notEquals',
3784
3828
  IN: 'in',
3829
+ NOT_IN: 'notIn',
3785
3830
  LESS_THAN: 'lt',
3786
3831
  LESS_THAN_OR_EQUAL_TO: 'lte',
3787
3832
  GREATER_THAN: 'gt',
@@ -3870,6 +3915,7 @@ var locales = {
3870
3915
  emptySelectionMessage: 'No selected item',
3871
3916
  endsWith: 'Ends with',
3872
3917
  equals: 'Equals',
3918
+ fileChosenMessage: '{0} files',
3873
3919
  fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
3874
3920
  filter: 'Filter',
3875
3921
  firstDayOfWeek: 0,
@@ -3888,6 +3934,7 @@ var locales = {
3888
3934
  nextMonth: 'Next Month',
3889
3935
  nextSecond: 'Next Second',
3890
3936
  nextYear: 'Next Year',
3937
+ noFileChosenMessage: 'No file chosen',
3891
3938
  noFilter: 'No Filter',
3892
3939
  notContains: 'Not contains',
3893
3940
  notEquals: 'Not equals',
@@ -3915,8 +3962,10 @@ var locales = {
3915
3962
  aria: {
3916
3963
  cancelEdit: 'Cancel Edit',
3917
3964
  close: 'Close',
3965
+ collapseLabel: 'Collapse',
3918
3966
  collapseRow: 'Row Collapsed',
3919
3967
  editRow: 'Edit Row',
3968
+ expandLabel: 'Expand',
3920
3969
  expandRow: 'Row Expanded',
3921
3970
  falseLabel: 'False',
3922
3971
  filterConstraint: 'Filter Constraint',
@@ -3941,18 +3990,20 @@ var locales = {
3941
3990
  next: 'Next',
3942
3991
  nextPageLabel: 'Next Page',
3943
3992
  nullLabel: 'Not Selected',
3944
- pageLabel: 'Page {page}',
3945
3993
  otpLabel: 'Please enter one time password character {0}',
3994
+ pageLabel: 'Page {page}',
3946
3995
  passwordHide: 'Hide Password',
3947
3996
  passwordShow: 'Show Password',
3948
3997
  previous: 'Previous',
3949
3998
  prevPageLabel: 'Previous Page',
3999
+ removeLabel: 'Remove',
3950
4000
  rotateLeft: 'Rotate Left',
3951
4001
  rotateRight: 'Rotate Right',
3952
4002
  rowsPerPageLabel: 'Rows per page',
3953
4003
  saveEdit: 'Save Edit',
3954
4004
  scrollTop: 'Scroll Top',
3955
4005
  selectAll: 'All items selected',
4006
+ selectLabel: 'Select',
3956
4007
  selectRow: 'Row Selected',
3957
4008
  showFilterMenu: 'Show Filter Menu',
3958
4009
  slide: 'Slide',
@@ -3961,6 +4012,7 @@ var locales = {
3961
4012
  stars: '{star} stars',
3962
4013
  trueLabel: 'True',
3963
4014
  unselectAll: 'All items unselected',
4015
+ unselectLabel: 'Unselect',
3964
4016
  unselectRow: 'Row Unselected',
3965
4017
  zoomImage: 'Zoom Image',
3966
4018
  zoomIn: 'Zoom In',
@@ -4178,9 +4230,17 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4178
4230
  var type = _ref.type,
4179
4231
  valid = _ref.valid;
4180
4232
  if (valid) {
4181
- type === 'outside' ? !selfClick.current && !isTargetClicked(event.target) && hide() : hide();
4233
+ if (type === 'outside') {
4234
+ if (!selfClick.current && !isTargetClicked(event.target)) {
4235
+ hide();
4236
+ }
4237
+ selfClick.current = false;
4238
+ } else if (context.hideOverlaysOnDocumentScrolling) {
4239
+ hide();
4240
+ } else if (!DomHandler.isDocument(event.target)) {
4241
+ DomHandler.alignOverlay(overlayRef.current, iconRef.current, context && context.appendTo || PrimeReact$1.appendTo, false);
4242
+ }
4182
4243
  }
4183
- selfClick.current = false;
4184
4244
  },
4185
4245
  when: overlayVisibleState
4186
4246
  }),
@@ -6879,58 +6939,60 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
6879
6939
  var exportCSV = function exportCSV(options) {
6880
6940
  var data;
6881
6941
  var csv = "\uFEFF";
6882
- var columns = getColumns();
6883
6942
  if (options && options.selectionOnly) {
6884
6943
  data = props.selection || [];
6885
6944
  } else {
6886
6945
  data = [].concat(_toConsumableArray(props.frozenValue || []), _toConsumableArray(processedData() || []));
6887
6946
  }
6888
6947
 
6889
- //headers
6890
- columns.forEach(function (column, i) {
6891
- var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader'), getColumnProp(column, 'exportable')],
6948
+ // First build collection of exportable columns
6949
+ var exportableColumns = getColumns().filter(function (column) {
6950
+ var exportable = getColumnProp(column, 'exportable');
6951
+ var field = getColumnProp(column, 'field');
6952
+
6953
+ // Column must be exportable (or undefined/not set) and have a field defined
6954
+ return exportable !== false && field;
6955
+ });
6956
+
6957
+ // headers
6958
+ exportableColumns.forEach(function (column, i) {
6959
+ var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader')],
6892
6960
  field = _ref5[0],
6893
6961
  header = _ref5[1],
6894
- exportHeader = _ref5[2],
6895
- exportable = _ref5[3];
6896
- if (exportable && field) {
6897
- var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6898
- csv = csv + ('"' + columnHeader + '"');
6899
- if (i < columns.length - 1) {
6900
- csv = csv + props.csvSeparator;
6901
- }
6962
+ exportHeader = _ref5[2];
6963
+ var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6964
+ csv = csv + ('"' + columnHeader + '"');
6965
+ if (i < exportableColumns.length - 1) {
6966
+ csv = csv + props.csvSeparator;
6902
6967
  }
6903
6968
  });
6904
6969
 
6905
- //body
6970
+ // body
6906
6971
  data.forEach(function (record) {
6907
6972
  csv = csv + '\n';
6908
- columns.forEach(function (column, i) {
6909
- var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField'), getColumnProp(column, 'exportable')],
6973
+ exportableColumns.forEach(function (column, i) {
6974
+ var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField')],
6910
6975
  colField = _ref6[0],
6911
- exportField = _ref6[1],
6912
- exportable = _ref6[2];
6976
+ exportField = _ref6[1];
6913
6977
  var field = exportField || colField;
6914
- if (exportable && field) {
6915
- var cellData = ObjectUtils.resolveFieldData(record, field);
6916
- if (cellData != null) {
6917
- if (props.exportFunction) {
6918
- cellData = props.exportFunction({
6919
- data: cellData,
6920
- field: field,
6921
- rowData: record,
6922
- column: column
6923
- });
6924
- } else {
6925
- cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6926
- }
6978
+ var cellData = ObjectUtils.resolveFieldData(record, field);
6979
+ if (cellData != null) {
6980
+ if (props.exportFunction) {
6981
+ cellData = props.exportFunction({
6982
+ data: cellData,
6983
+ field: field,
6984
+ rowData: record,
6985
+ column: column
6986
+ });
6927
6987
  } else {
6928
- cellData = '';
6929
- }
6930
- csv = csv + ('"' + cellData + '"');
6931
- if (i < columns.length - 1) {
6932
- csv = csv + props.csvSeparator;
6988
+ cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6933
6989
  }
6990
+ } else {
6991
+ cellData = '';
6992
+ }
6993
+ csv = csv + ('"' + cellData + '"');
6994
+ if (i < exportableColumns.length - 1) {
6995
+ csv = csv + props.csvSeparator;
6934
6996
  }
6935
6997
  });
6936
6998
  });
@@ -7195,6 +7257,9 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
7195
7257
  var frozenBody = ObjectUtils.isNotEmpty(props.frozenValue) && /*#__PURE__*/React.createElement(TableBody, {
7196
7258
  hostName: "DataTable",
7197
7259
  ref: frozenBodyRef,
7260
+ cellMemo: props.cellMemo,
7261
+ cellMemoProps: props.cellMemoProps,
7262
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7198
7263
  cellClassName: props.cellClassName,
7199
7264
  cellSelection: props.cellSelection,
7200
7265
  checkIcon: props.checkIcon,
@@ -7279,6 +7344,9 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
7279
7344
  var body = /*#__PURE__*/React.createElement(TableBody, {
7280
7345
  hostName: "DataTable",
7281
7346
  ref: bodyRef,
7347
+ cellMemo: props.cellMemo,
7348
+ cellMemoProps: props.cellMemoProps,
7349
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7282
7350
  cellClassName: props.cellClassName,
7283
7351
  cellSelection: props.cellSelection,
7284
7352
  checkIcon: props.checkIcon,