primereact 10.9.5 → 10.9.7

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 (211) hide show
  1. package/accordion/accordion.cjs.js +3 -2
  2. package/accordion/accordion.cjs.min.js +1 -1
  3. package/accordion/accordion.esm.js +3 -2
  4. package/accordion/accordion.esm.min.js +1 -1
  5. package/accordion/accordion.js +3 -2
  6. package/accordion/accordion.min.js +1 -1
  7. package/api/api.cjs.js +9 -1
  8. package/api/api.cjs.min.js +1 -1
  9. package/api/api.d.ts +9 -3
  10. package/api/api.esm.js +9 -1
  11. package/api/api.esm.min.js +1 -1
  12. package/api/api.js +9 -1
  13. package/api/api.min.js +1 -1
  14. package/autocomplete/autocomplete.cjs.js +2 -1
  15. package/autocomplete/autocomplete.cjs.min.js +1 -1
  16. package/autocomplete/autocomplete.d.ts +5 -5
  17. package/autocomplete/autocomplete.esm.js +2 -1
  18. package/autocomplete/autocomplete.esm.min.js +1 -1
  19. package/autocomplete/autocomplete.js +2 -1
  20. package/autocomplete/autocomplete.min.js +1 -1
  21. package/calendar/calendar.cjs.js +36 -13
  22. package/calendar/calendar.cjs.min.js +1 -1
  23. package/calendar/calendar.esm.js +36 -13
  24. package/calendar/calendar.esm.min.js +1 -1
  25. package/calendar/calendar.js +36 -13
  26. package/calendar/calendar.min.js +1 -1
  27. package/carousel/carousel.cjs.js +9 -1
  28. package/carousel/carousel.cjs.min.js +1 -1
  29. package/carousel/carousel.esm.js +9 -1
  30. package/carousel/carousel.esm.min.js +1 -1
  31. package/carousel/carousel.js +9 -1
  32. package/carousel/carousel.min.js +1 -1
  33. package/cascadeselect/cascadeselect.cjs.js +54 -3
  34. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  35. package/cascadeselect/cascadeselect.d.ts +13 -0
  36. package/cascadeselect/cascadeselect.esm.js +55 -4
  37. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  38. package/cascadeselect/cascadeselect.js +55 -5
  39. package/cascadeselect/cascadeselect.min.js +1 -1
  40. package/colorpicker/colorpicker.cjs.js +2 -1
  41. package/colorpicker/colorpicker.cjs.min.js +1 -1
  42. package/colorpicker/colorpicker.esm.js +2 -1
  43. package/colorpicker/colorpicker.esm.min.js +1 -1
  44. package/colorpicker/colorpicker.js +2 -1
  45. package/colorpicker/colorpicker.min.js +1 -1
  46. package/componentbase/componentbase.cjs.js +1 -1
  47. package/componentbase/componentbase.cjs.min.js +1 -1
  48. package/componentbase/componentbase.esm.js +1 -1
  49. package/componentbase/componentbase.esm.min.js +1 -1
  50. package/componentbase/componentbase.js +1 -1
  51. package/componentbase/componentbase.min.js +1 -1
  52. package/contextmenu/contextmenu.cjs.js +8 -6
  53. package/contextmenu/contextmenu.cjs.min.js +1 -1
  54. package/contextmenu/contextmenu.esm.js +8 -6
  55. package/contextmenu/contextmenu.esm.min.js +1 -1
  56. package/contextmenu/contextmenu.js +8 -6
  57. package/contextmenu/contextmenu.min.js +1 -1
  58. package/core/core.js +79 -33
  59. package/core/core.min.js +8 -8
  60. package/datatable/datatable.cjs.js +149 -95
  61. package/datatable/datatable.cjs.min.js +1 -1
  62. package/datatable/datatable.d.ts +145 -10
  63. package/datatable/datatable.esm.js +149 -95
  64. package/datatable/datatable.esm.min.js +1 -1
  65. package/datatable/datatable.js +150 -96
  66. package/datatable/datatable.min.js +1 -1
  67. package/dialog/dialog.cjs.js +6 -5
  68. package/dialog/dialog.cjs.min.js +1 -1
  69. package/dialog/dialog.d.ts +6 -1
  70. package/dialog/dialog.esm.js +6 -5
  71. package/dialog/dialog.esm.min.js +1 -1
  72. package/dialog/dialog.js +6 -5
  73. package/dialog/dialog.min.js +1 -1
  74. package/dropdown/dropdown.cjs.js +17 -5
  75. package/dropdown/dropdown.cjs.min.js +1 -1
  76. package/dropdown/dropdown.esm.js +17 -5
  77. package/dropdown/dropdown.esm.min.js +1 -1
  78. package/dropdown/dropdown.js +17 -5
  79. package/dropdown/dropdown.min.js +1 -1
  80. package/fileupload/fileupload.cjs.js +4 -2
  81. package/fileupload/fileupload.cjs.min.js +1 -1
  82. package/fileupload/fileupload.esm.js +4 -2
  83. package/fileupload/fileupload.esm.min.js +1 -1
  84. package/fileupload/fileupload.js +4 -2
  85. package/fileupload/fileupload.min.js +1 -1
  86. package/galleria/galleria.cjs.js +1 -0
  87. package/galleria/galleria.cjs.min.js +1 -1
  88. package/galleria/galleria.esm.js +1 -0
  89. package/galleria/galleria.esm.min.js +1 -1
  90. package/galleria/galleria.js +1 -0
  91. package/galleria/galleria.min.js +1 -1
  92. package/inputnumber/inputnumber.cjs.js +12 -3
  93. package/inputnumber/inputnumber.cjs.min.js +1 -1
  94. package/inputnumber/inputnumber.esm.js +12 -3
  95. package/inputnumber/inputnumber.esm.min.js +1 -1
  96. package/inputnumber/inputnumber.js +12 -3
  97. package/inputnumber/inputnumber.min.js +1 -1
  98. package/inputotp/inputotp.cjs.js +11 -7
  99. package/inputotp/inputotp.cjs.min.js +1 -1
  100. package/inputotp/inputotp.esm.js +11 -7
  101. package/inputotp/inputotp.esm.min.js +1 -1
  102. package/inputotp/inputotp.js +11 -7
  103. package/inputotp/inputotp.min.js +1 -1
  104. package/listbox/listbox.d.ts +4 -4
  105. package/megamenu/megamenu.cjs.js +19 -12
  106. package/megamenu/megamenu.cjs.min.js +1 -1
  107. package/megamenu/megamenu.esm.js +19 -12
  108. package/megamenu/megamenu.esm.min.js +1 -1
  109. package/megamenu/megamenu.js +19 -12
  110. package/megamenu/megamenu.min.js +1 -1
  111. package/mention/mention.cjs.js +3 -2
  112. package/mention/mention.cjs.min.js +1 -1
  113. package/mention/mention.esm.js +3 -2
  114. package/mention/mention.esm.min.js +1 -1
  115. package/mention/mention.js +3 -2
  116. package/mention/mention.min.js +1 -1
  117. package/menu/menu.cjs.js +3 -0
  118. package/menu/menu.cjs.min.js +1 -1
  119. package/menu/menu.esm.js +3 -0
  120. package/menu/menu.esm.min.js +1 -1
  121. package/menu/menu.js +3 -0
  122. package/menu/menu.min.js +1 -1
  123. package/menubar/menubar.cjs.js +8 -3
  124. package/menubar/menubar.cjs.min.js +1 -1
  125. package/menubar/menubar.esm.js +8 -3
  126. package/menubar/menubar.esm.min.js +1 -1
  127. package/menubar/menubar.js +8 -3
  128. package/menubar/menubar.min.js +1 -1
  129. package/multiselect/multiselect.cjs.js +64 -16
  130. package/multiselect/multiselect.cjs.min.js +1 -1
  131. package/multiselect/multiselect.esm.js +64 -16
  132. package/multiselect/multiselect.esm.min.js +1 -1
  133. package/multiselect/multiselect.js +64 -16
  134. package/multiselect/multiselect.min.js +1 -1
  135. package/multistatecheckbox/multistatecheckbox.cjs.js +16 -8
  136. package/multistatecheckbox/multistatecheckbox.cjs.min.js +1 -1
  137. package/multistatecheckbox/multistatecheckbox.d.ts +10 -0
  138. package/multistatecheckbox/multistatecheckbox.esm.js +16 -8
  139. package/multistatecheckbox/multistatecheckbox.esm.min.js +1 -1
  140. package/multistatecheckbox/multistatecheckbox.js +16 -8
  141. package/multistatecheckbox/multistatecheckbox.min.js +1 -1
  142. package/package.json +1 -1
  143. package/paginator/paginator.cjs.js +9 -1
  144. package/paginator/paginator.cjs.min.js +1 -1
  145. package/paginator/paginator.esm.js +9 -1
  146. package/paginator/paginator.esm.min.js +1 -1
  147. package/paginator/paginator.js +9 -1
  148. package/paginator/paginator.min.js +1 -1
  149. package/picklist/picklist.cjs.js +9 -1
  150. package/picklist/picklist.cjs.min.js +1 -1
  151. package/picklist/picklist.esm.js +9 -1
  152. package/picklist/picklist.esm.min.js +1 -1
  153. package/picklist/picklist.js +9 -1
  154. package/picklist/picklist.min.js +1 -1
  155. package/primereact.all.cjs.js +481 -223
  156. package/primereact.all.cjs.min.js +1 -1
  157. package/primereact.all.esm.js +481 -223
  158. package/primereact.all.esm.min.js +1 -1
  159. package/primereact.all.js +481 -223
  160. package/primereact.all.min.js +1 -1
  161. package/slidemenu/slidemenu.cjs.js +6 -4
  162. package/slidemenu/slidemenu.cjs.min.js +1 -1
  163. package/slidemenu/slidemenu.esm.js +6 -4
  164. package/slidemenu/slidemenu.esm.min.js +1 -1
  165. package/slidemenu/slidemenu.js +6 -4
  166. package/slidemenu/slidemenu.min.js +1 -1
  167. package/splitbutton/splitbutton.cjs.js +11 -5
  168. package/splitbutton/splitbutton.cjs.min.js +1 -1
  169. package/splitbutton/splitbutton.esm.js +11 -5
  170. package/splitbutton/splitbutton.esm.min.js +1 -1
  171. package/splitbutton/splitbutton.js +11 -5
  172. package/splitbutton/splitbutton.min.js +1 -1
  173. package/tieredmenu/tieredmenu.cjs.js +9 -4
  174. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  175. package/tieredmenu/tieredmenu.esm.js +9 -4
  176. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  177. package/tieredmenu/tieredmenu.js +9 -4
  178. package/tieredmenu/tieredmenu.min.js +1 -1
  179. package/togglebutton/togglebutton.cjs.js +3 -3
  180. package/togglebutton/togglebutton.cjs.min.js +1 -1
  181. package/togglebutton/togglebutton.esm.js +3 -3
  182. package/togglebutton/togglebutton.esm.min.js +1 -1
  183. package/togglebutton/togglebutton.js +3 -3
  184. package/togglebutton/togglebutton.min.js +1 -1
  185. package/tree/tree.cjs.js +22 -16
  186. package/tree/tree.cjs.min.js +1 -1
  187. package/tree/tree.esm.js +22 -16
  188. package/tree/tree.esm.min.js +1 -1
  189. package/tree/tree.js +22 -16
  190. package/tree/tree.min.js +1 -1
  191. package/treeselect/treeselect.cjs.js +4 -0
  192. package/treeselect/treeselect.cjs.min.js +1 -1
  193. package/treeselect/treeselect.d.ts +33 -0
  194. package/treeselect/treeselect.esm.js +4 -0
  195. package/treeselect/treeselect.esm.min.js +1 -1
  196. package/treeselect/treeselect.js +4 -0
  197. package/treeselect/treeselect.min.js +1 -1
  198. package/tristatecheckbox/tristatecheckbox.cjs.js +1 -0
  199. package/tristatecheckbox/tristatecheckbox.cjs.min.js +1 -1
  200. package/tristatecheckbox/tristatecheckbox.esm.js +1 -0
  201. package/tristatecheckbox/tristatecheckbox.esm.min.js +1 -1
  202. package/tristatecheckbox/tristatecheckbox.js +1 -0
  203. package/tristatecheckbox/tristatecheckbox.min.js +1 -1
  204. package/utils/utils.cjs.js +3 -1
  205. package/utils/utils.cjs.min.js +1 -1
  206. package/utils/utils.d.ts +1 -1
  207. package/utils/utils.esm.js +3 -1
  208. package/utils/utils.esm.min.js +1 -1
  209. package/utils/utils.js +3 -1
  210. package/utils/utils.min.js +1 -1
  211. package/web-types.json +95 -10
@@ -16,7 +16,6 @@ import { ChevronDownIcon } from 'primereact/icons/chevrondown';
16
16
  import { ChevronRightIcon } from 'primereact/icons/chevronright';
17
17
  import { PencilIcon } from 'primereact/icons/pencil';
18
18
  import { TimesIcon } from 'primereact/icons/times';
19
- import { OverlayService } from 'primereact/overlayservice';
20
19
  import { Ripple } from 'primereact/ripple';
21
20
  import { Tooltip } from 'primereact/tooltip';
22
21
  import { Button } from 'primereact/button';
@@ -27,6 +26,7 @@ import { FilterSlashIcon } from 'primereact/icons/filterslash';
27
26
  import { PlusIcon } from 'primereact/icons/plus';
28
27
  import { TrashIcon } from 'primereact/icons/trash';
29
28
  import { InputText } from 'primereact/inputtext';
29
+ import { OverlayService } from 'primereact/overlayservice';
30
30
  import { Portal } from 'primereact/portal';
31
31
  import { SortAltIcon } from 'primereact/icons/sortalt';
32
32
  import { SortAmountDownIcon } from 'primereact/icons/sortamountdown';
@@ -462,6 +462,9 @@ var DataTableBase = ComponentBase.extend({
462
462
  alwaysShowPaginator: true,
463
463
  breakpoint: '960px',
464
464
  cellClassName: null,
465
+ cellMemo: true,
466
+ cellMemoProps: ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'],
467
+ cellMemoPropsDepth: 1,
465
468
  cellSelection: false,
466
469
  checkIcon: null,
467
470
  className: null,
@@ -1164,8 +1167,6 @@ var Cell = function Cell(props) {
1164
1167
  setStyleObjectState = _React$useState6[1];
1165
1168
  var elementRef = React.useRef(null);
1166
1169
  var keyHelperRef = React.useRef(null);
1167
- var overlayEventListener = React.useRef(null);
1168
- var selfClick = React.useRef(false);
1169
1170
  var focusTimeout = React.useRef(null);
1170
1171
  var initFocusTimeout = React.useRef(null);
1171
1172
  var editingRowDataStateRef = React.useRef(null);
@@ -1202,17 +1203,20 @@ var Cell = function Cell(props) {
1202
1203
  var cellEditValidateOnClose = function cellEditValidateOnClose() {
1203
1204
  return getColumnProp('cellEditValidateOnClose');
1204
1205
  };
1206
+ var isIgnoredElement = function isIgnoredElement(element) {
1207
+ var isOverlay = function isOverlay(el) {
1208
+ return el.getAttribute && el.getAttribute('data-pr-is-overlay');
1209
+ };
1210
+ return isOverlay(element) || DomHandler.getParents(element).find(function (el) {
1211
+ return isOverlay(el);
1212
+ });
1213
+ };
1205
1214
  var _useEventListener = useEventListener({
1206
1215
  type: 'click',
1207
1216
  listener: function listener(e) {
1208
- setTimeout(function () {
1209
- if (!selfClick.current && isOutsideClicked(e.target)) {
1210
- // #2666 for overlay components and outside is clicked
1211
-
1212
- switchCellToViewMode(e, true);
1213
- }
1214
- }, 0);
1215
- selfClick.current = false;
1217
+ if (!isIgnoredElement(e.target) && isOutsideClicked(e.target)) {
1218
+ switchCellToViewMode(e, true);
1219
+ }
1216
1220
  },
1217
1221
  options: true,
1218
1222
  when: isEditable()
@@ -1257,10 +1261,6 @@ var Cell = function Cell(props) {
1257
1261
  setTimeout(function () {
1258
1262
  setEditingState(false);
1259
1263
  unbindDocumentClickListener();
1260
- OverlayService.off('overlay-click', overlayEventListener.current);
1261
- overlayEventListener.current = null;
1262
- editingRowDataStateRef.current = null;
1263
- selfClick.current = false;
1264
1264
  }, 1);
1265
1265
  };
1266
1266
  var switchCellToViewMode = function switchCellToViewMode(event, submit) {
@@ -1304,7 +1304,7 @@ var Cell = function Cell(props) {
1304
1304
  editingRowDataStateRef.current = editingRowData;
1305
1305
  };
1306
1306
  var _onClick = function onClick(event) {
1307
- props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, selfClick, props.column, bindDocumentClickListener, overlayEventListener);
1307
+ props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, props.column, bindDocumentClickListener);
1308
1308
  };
1309
1309
  var _onMouseDown = function onMouseDown(event) {
1310
1310
  var params = getCellCallbackParams(event);
@@ -1376,7 +1376,6 @@ var Cell = function Cell(props) {
1376
1376
  }
1377
1377
  };
1378
1378
  var _onBlur = function onBlur(event) {
1379
- selfClick.current = false;
1380
1379
  if (props.editMode !== 'row' && editingState && getColumnProp('cellEditValidatorEvent') === 'blur') {
1381
1380
  switchCellToViewMode(event, true);
1382
1381
  }
@@ -1426,7 +1425,7 @@ var Cell = function Cell(props) {
1426
1425
  field: props.field,
1427
1426
  index: props.rowIndex
1428
1427
  });
1429
- props.focusOnInit();
1428
+ props.focusOnInit(initFocusTimeout, elementRef);
1430
1429
  };
1431
1430
  React.useEffect(function () {
1432
1431
  if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
@@ -1457,9 +1456,8 @@ var Cell = function Cell(props) {
1457
1456
  // eslint-disable-next-line react-hooks/exhaustive-deps
1458
1457
  }, [editingState]);
1459
1458
  useUnmountEffect(function () {
1460
- if (overlayEventListener.current) {
1461
- OverlayService.off('overlay-click', overlayEventListener.current);
1462
- overlayEventListener.current = null;
1459
+ if (editingRowDataStateRef.current) {
1460
+ editingRowDataStateRef.current = null;
1463
1461
  }
1464
1462
  });
1465
1463
  var createLoading = function createLoading() {
@@ -1763,15 +1761,23 @@ var Cell = function Cell(props) {
1763
1761
  var RadioCheckCell = /*#__PURE__*/React.memo(function (props) {
1764
1762
  return /*#__PURE__*/React.createElement(Cell, props);
1765
1763
  }, function (prevProps, nextProps) {
1764
+ if (nextProps.cellMemo === false) return false;
1766
1765
  var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
1767
1766
  return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1768
1767
  });
1769
1768
  RadioCheckCell.displayName = 'RadioCheckCell';
1769
+ var defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
1770
1770
  var BodyCell = /*#__PURE__*/React.memo(function (props) {
1771
1771
  return /*#__PURE__*/React.createElement(Cell, props);
1772
1772
  }, function (prevProps, nextProps) {
1773
- var keysToCompare = ['field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData', 'frozenCol', 'alignFrozenCol'];
1774
- return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1773
+ if (nextProps.cellMemo === false) return false;
1774
+ var memoProps = nextProps.cellMemoProps;
1775
+ var keysToCompare = Array.isArray(memoProps) && memoProps.every(function (prop) {
1776
+ return typeof prop === 'string';
1777
+ }) ? memoProps : defaultKeysToCompare;
1778
+ var memoPropsDepth = nextProps.cellMemoPropsDepth;
1779
+ var depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
1780
+ return ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
1775
1781
  });
1776
1782
  BodyCell.displayName = 'BodyCell';
1777
1783
 
@@ -2239,8 +2245,13 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2239
2245
  } else {
2240
2246
  var left = 0;
2241
2247
  var prev = elementRef.current && elementRef.current.previousElementSibling;
2242
- if (prev && prev.classList.contains('p-frozen-column')) {
2243
- left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2248
+ while (prev) {
2249
+ if (prev.classList.contains('p-frozen-column')) {
2250
+ left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2251
+ elementRef.current.style.left = left + 'px';
2252
+ break;
2253
+ }
2254
+ prev = prev.previousElementSibling;
2244
2255
  }
2245
2256
  styleObject.left = left + 'px';
2246
2257
  }
@@ -2248,9 +2259,8 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2248
2259
  !isSameStyle && setStyleObjectState(styleObject);
2249
2260
  }
2250
2261
  }, []);
2251
- var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener) {
2262
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, column, bindDocumentClickListener) {
2252
2263
  if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2253
- selfClick.current = true;
2254
2264
  var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2255
2265
  var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2256
2266
  var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
@@ -2281,12 +2291,6 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2281
2291
  }
2282
2292
  if (cellEditValidatorEvent === 'click') {
2283
2293
  bindDocumentClickListener();
2284
- overlayEventListener.current = function (e) {
2285
- if (!isOutsideClicked(e.target)) {
2286
- selfClick.current = true;
2287
- }
2288
- };
2289
- OverlayService.on('overlay-click', overlayEventListener.current);
2290
2294
  }
2291
2295
  }, 1);
2292
2296
  }
@@ -2307,6 +2311,9 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2307
2311
  var cellProps = mergeProps({
2308
2312
  hostName: props.hostName,
2309
2313
  allowCellSelection: props.allowCellSelection,
2314
+ cellMemo: props.cellMemo,
2315
+ cellMemoProps: props.cellMemoProps,
2316
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
2310
2317
  cellClassName: props.cellClassName,
2311
2318
  checkIcon: props.checkIcon,
2312
2319
  collapsedRowIcon: props.collapsedRowIcon,
@@ -2674,9 +2681,6 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2674
2681
  options = options || props.virtualScrollerOptions;
2675
2682
  return options ? options[option] : null;
2676
2683
  };
2677
- var getProcessedDataIndex = function getProcessedDataIndex(rowIndex) {
2678
- return props.lazy ? rowIndex - props.first : rowIndex;
2679
- };
2680
2684
  var findIndex = function findIndex(collection, rowData) {
2681
2685
  return (collection || []).findIndex(function (data) {
2682
2686
  return equals(rowData, data);
@@ -2847,16 +2851,14 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2847
2851
  var rangeStart;
2848
2852
  var rangeEnd;
2849
2853
  var isAllowCellSelection = allowCellSelection();
2850
- var rangeRowIndexInProcessedData = getProcessedDataIndex(rangeRowIndex.current);
2851
- var anchorRowIndexInProcessedData = getProcessedDataIndex(anchorRowIndex.current);
2852
- if (rangeRowIndexInProcessedData > anchorRowIndexInProcessedData) {
2853
- rangeStart = anchorRowIndexInProcessedData;
2854
- rangeEnd = rangeRowIndexInProcessedData;
2855
- } else if (rangeRowIndexInProcessedData < anchorRowIndexInProcessedData) {
2856
- rangeStart = rangeRowIndexInProcessedData;
2857
- rangeEnd = anchorRowIndexInProcessedData;
2854
+ if (rangeRowIndex.current > anchorRowIndex.current) {
2855
+ rangeStart = anchorRowIndex.current;
2856
+ rangeEnd = rangeRowIndex.current;
2857
+ } else if (rangeRowIndex.current < anchorRowIndex.current) {
2858
+ rangeStart = rangeRowIndex.current;
2859
+ rangeEnd = anchorRowIndex.current;
2858
2860
  } else {
2859
- rangeStart = rangeEnd = rangeRowIndexInProcessedData;
2861
+ rangeStart = rangeEnd = rangeRowIndex.current;
2860
2862
  }
2861
2863
  return isAllowCellSelection ? selectRangeOnCell(event, rangeStart, rangeEnd) : selectRangeOnRow(event, rangeStart, rangeEnd);
2862
2864
  };
@@ -2897,7 +2899,7 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
2897
2899
  for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
2898
2900
  var rowData = value[i];
2899
2901
  var columns = props.columns;
2900
- var rowIndex = props.lazy ? i + props.first : i;
2902
+ var rowIndex = props.paginator ? i + props.first : i;
2901
2903
  for (var j = cellRangeStart; j <= cellRangeEnd; j++) {
2902
2904
  var field = getColumnProp(columns[j], 'field');
2903
2905
  var _value = ObjectUtils.resolveFieldData(rowData, field);
@@ -3096,13 +3098,17 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3096
3098
  onRangeSelection(event, 'row');
3097
3099
  }
3098
3100
  };
3101
+ var expandedRowsRef = React.useRef(props.expandedRows);
3102
+ React.useEffect(function () {
3103
+ expandedRowsRef.current = props.expandedRows;
3104
+ }, [props.expandedRows]);
3099
3105
  var onRowToggle = function onRowToggle(event) {
3100
3106
  var expandedRows;
3101
3107
  var dataKey = props.dataKey;
3102
3108
  var hasDataKey = props.groupRowsBy ? dataKey === props.groupRowsBy : !!dataKey;
3103
3109
  if (hasDataKey) {
3104
3110
  var dataKeyValue = String(ObjectUtils.resolveFieldData(event.data, dataKey));
3105
- expandedRows = props.expandedRows ? _objectSpread$8({}, props.expandedRows) : {};
3111
+ expandedRows = expandedRowsRef.current ? _objectSpread$8({}, expandedRowsRef.current) : {};
3106
3112
  if (expandedRows[dataKeyValue] != null) {
3107
3113
  delete expandedRows[dataKeyValue];
3108
3114
  if (props.onRowCollapse) {
@@ -3121,8 +3127,8 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3121
3127
  }
3122
3128
  }
3123
3129
  } else {
3124
- var expandedRowIndex = findIndex(props.expandedRows, event.data);
3125
- expandedRows = props.expandedRows ? _toConsumableArray(props.expandedRows) : [];
3130
+ var expandedRowIndex = findIndex(expandedRowsRef.current, event.data);
3131
+ expandedRows = expandedRowsRef.current ? _toConsumableArray(expandedRowsRef.current) : [];
3126
3132
  if (expandedRowIndex !== -1) {
3127
3133
  expandedRows = expandedRows.filter(function (_, i) {
3128
3134
  return i !== expandedRowIndex;
@@ -3372,7 +3378,7 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3372
3378
  return null;
3373
3379
  };
3374
3380
  var createGroupHeader = function createGroupHeader(rowData, rowIndex, expanded, colSpan) {
3375
- if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, getProcessedDataIndex(rowIndex))) {
3381
+ if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, rowIndex - props.first)) {
3376
3382
  var style = rowGroupHeaderStyle();
3377
3383
  var toggler = props.expandableRowGroups && /*#__PURE__*/React.createElement(RowTogglerButton, {
3378
3384
  hostName: props.hostName,
@@ -3422,6 +3428,9 @@ var TableBody = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (
3422
3428
  hostName: props.hostName,
3423
3429
  allowCellSelection: _allowCellSelection,
3424
3430
  allowRowSelection: _allowRowSelection,
3431
+ cellMemo: props.cellMemo,
3432
+ cellMemoProps: props.cellMemoProps,
3433
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
3425
3434
  cellClassName: props.cellClassName,
3426
3435
  checkIcon: props.checkIcon,
3427
3436
  collapsedRowIcon: props.collapsedRowIcon,
@@ -3641,16 +3650,21 @@ var FooterCell = /*#__PURE__*/React.memo(function (props) {
3641
3650
  var _align = getColumnProp('alignFrozen');
3642
3651
  if (_align === 'right') {
3643
3652
  var right = 0;
3644
- var next = elementRef.current.nextElementSibling;
3653
+ var next = elementRef.current && elementRef.current.nextElementSibling;
3645
3654
  if (next && next.classList.contains('p-frozen-column')) {
3646
3655
  right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
3647
3656
  }
3648
3657
  styleObject.right = right + 'px';
3649
3658
  } else {
3650
3659
  var left = 0;
3651
- var prev = elementRef.current.previousElementSibling;
3652
- if (prev && prev.classList.contains('p-frozen-column')) {
3653
- left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
3660
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
3661
+ while (prev) {
3662
+ if (prev && prev.classList.contains('p-frozen-column')) {
3663
+ left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
3664
+ elementRef.current.style.left = left + 'px';
3665
+ break;
3666
+ }
3667
+ prev = prev.previousElementSibling;
3654
3668
  }
3655
3669
  styleObject.left = left + 'px';
3656
3670
  }
@@ -3814,6 +3828,7 @@ var FilterMatchMode = Object.freeze({
3814
3828
  EQUALS: 'equals',
3815
3829
  NOT_EQUALS: 'notEquals',
3816
3830
  IN: 'in',
3831
+ NOT_IN: 'notIn',
3817
3832
  LESS_THAN: 'lt',
3818
3833
  LESS_THAN_OR_EQUAL_TO: 'lte',
3819
3834
  GREATER_THAN: 'gt',
@@ -3902,6 +3917,7 @@ var locales = {
3902
3917
  emptySelectionMessage: 'No selected item',
3903
3918
  endsWith: 'Ends with',
3904
3919
  equals: 'Equals',
3920
+ fileChosenMessage: '{0} files',
3905
3921
  fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
3906
3922
  filter: 'Filter',
3907
3923
  firstDayOfWeek: 0,
@@ -3920,6 +3936,7 @@ var locales = {
3920
3936
  nextMonth: 'Next Month',
3921
3937
  nextSecond: 'Next Second',
3922
3938
  nextYear: 'Next Year',
3939
+ noFileChosenMessage: 'No file chosen',
3923
3940
  noFilter: 'No Filter',
3924
3941
  notContains: 'Not contains',
3925
3942
  notEquals: 'Not equals',
@@ -3947,8 +3964,10 @@ var locales = {
3947
3964
  aria: {
3948
3965
  cancelEdit: 'Cancel Edit',
3949
3966
  close: 'Close',
3967
+ collapseLabel: 'Collapse',
3950
3968
  collapseRow: 'Row Collapsed',
3951
3969
  editRow: 'Edit Row',
3970
+ expandLabel: 'Expand',
3952
3971
  expandRow: 'Row Expanded',
3953
3972
  falseLabel: 'False',
3954
3973
  filterConstraint: 'Filter Constraint',
@@ -3973,18 +3992,20 @@ var locales = {
3973
3992
  next: 'Next',
3974
3993
  nextPageLabel: 'Next Page',
3975
3994
  nullLabel: 'Not Selected',
3976
- pageLabel: 'Page {page}',
3977
3995
  otpLabel: 'Please enter one time password character {0}',
3996
+ pageLabel: 'Page {page}',
3978
3997
  passwordHide: 'Hide Password',
3979
3998
  passwordShow: 'Show Password',
3980
3999
  previous: 'Previous',
3981
4000
  prevPageLabel: 'Previous Page',
4001
+ removeLabel: 'Remove',
3982
4002
  rotateLeft: 'Rotate Left',
3983
4003
  rotateRight: 'Rotate Right',
3984
4004
  rowsPerPageLabel: 'Rows per page',
3985
4005
  saveEdit: 'Save Edit',
3986
4006
  scrollTop: 'Scroll Top',
3987
4007
  selectAll: 'All items selected',
4008
+ selectLabel: 'Select',
3988
4009
  selectRow: 'Row Selected',
3989
4010
  showFilterMenu: 'Show Filter Menu',
3990
4011
  slide: 'Slide',
@@ -3993,6 +4014,7 @@ var locales = {
3993
4014
  stars: '{star} stars',
3994
4015
  trueLabel: 'True',
3995
4016
  unselectAll: 'All items unselected',
4017
+ unselectLabel: 'Unselect',
3996
4018
  unselectRow: 'Row Unselected',
3997
4019
  zoomImage: 'Zoom Image',
3998
4020
  zoomIn: 'Zoom In',
@@ -4325,7 +4347,7 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4325
4347
  };
4326
4348
  } else {
4327
4349
  filters[field].value = null;
4328
- filters[field].matchMode = defaultConstraint.matchMode;
4350
+ filters[field].matchMode = defaultConstraint ? defaultConstraint.matchMode : filters[field].matchMode;
4329
4351
  }
4330
4352
  filterClearCallback && filterClearCallback();
4331
4353
  props.onFilterChange(filters);
@@ -4392,6 +4414,7 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4392
4414
  }
4393
4415
  };
4394
4416
  var onRowMatchModeChange = function onRowMatchModeChange(matchMode) {
4417
+ var _iconRef$current;
4395
4418
  var filterMatchModeChangeCallback = getColumnProp('onFilterMatchModeChange');
4396
4419
  var filters = _objectSpread$4({}, props.filters);
4397
4420
  filters[field].matchMode = matchMode;
@@ -4402,6 +4425,7 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4402
4425
  props.onFilterChange(filters);
4403
4426
  props.onFilterApply();
4404
4427
  hide();
4428
+ (_iconRef$current = iconRef.current) === null || _iconRef$current === void 0 || _iconRef$current.focus();
4405
4429
  };
4406
4430
  var onRowMatchModeKeyDown = function onRowMatchModeKeyDown(event, matchMode, clear) {
4407
4431
  var item = event.target;
@@ -5161,16 +5185,21 @@ var HeaderCell = /*#__PURE__*/React.memo(function (props) {
5161
5185
  var align = getColumnProp('alignFrozen');
5162
5186
  if (align === 'right') {
5163
5187
  var right = 0;
5164
- var next = elementRef.current.nextElementSibling;
5188
+ var next = elementRef.current && elementRef.current.nextElementSibling;
5165
5189
  if (next && next.classList.contains('p-frozen-column')) {
5166
5190
  right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
5167
5191
  }
5168
5192
  styleObject.right = right + 'px';
5169
5193
  } else {
5170
5194
  var left = 0;
5171
- var prev = elementRef.current.previousElementSibling;
5172
- if (prev && prev.classList.contains('p-frozen-column')) {
5173
- left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
5195
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
5196
+ while (prev) {
5197
+ if (prev && prev.classList.contains('p-frozen-column')) {
5198
+ left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
5199
+ elementRef.current.style.left = left + 'px';
5200
+ break;
5201
+ }
5202
+ prev = prev.previousElementSibling;
5174
5203
  }
5175
5204
  styleObject.left = left + 'px';
5176
5205
  }
@@ -6021,6 +6050,20 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
6021
6050
  multiSortMeta: restoredState.multiSortMeta
6022
6051
  }));
6023
6052
  } else {
6053
+ var lastMeta = restoredState.multiSortMeta[restoredState.multiSortMeta.length - 1];
6054
+ var field = lastMeta && lastMeta.field ? lastMeta.field : null;
6055
+ if (field) {
6056
+ var sortColumn = findColumnByKey(getColumns(), field);
6057
+ if (sortColumn) {
6058
+ var sortFunction = getColumnProp(sortColumn, 'sortFunction');
6059
+ var sortable = getColumnProp(sortColumn, 'sortable');
6060
+ if (sortFunction && sortable) {
6061
+ columnSortFunction.current = sortFunction;
6062
+ columnSortable.current = sortable;
6063
+ columnField.current = field;
6064
+ }
6065
+ }
6066
+ }
6024
6067
  setMultiSortMetaState(restoredState.multiSortMeta);
6025
6068
  }
6026
6069
  }
@@ -6919,58 +6962,60 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
6919
6962
  var exportCSV = function exportCSV(options) {
6920
6963
  var data;
6921
6964
  var csv = "\uFEFF";
6922
- var columns = getColumns();
6923
6965
  if (options && options.selectionOnly) {
6924
6966
  data = props.selection || [];
6925
6967
  } else {
6926
6968
  data = [].concat(_toConsumableArray(props.frozenValue || []), _toConsumableArray(processedData() || []));
6927
6969
  }
6928
6970
 
6929
- //headers
6930
- columns.forEach(function (column, i) {
6931
- var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader'), getColumnProp(column, 'exportable')],
6971
+ // First build collection of exportable columns
6972
+ var exportableColumns = getColumns().filter(function (column) {
6973
+ var exportable = getColumnProp(column, 'exportable');
6974
+ var field = getColumnProp(column, 'field');
6975
+
6976
+ // Column must be exportable (or undefined/not set) and have a field defined
6977
+ return exportable !== false && field;
6978
+ });
6979
+
6980
+ // headers
6981
+ exportableColumns.forEach(function (column, i) {
6982
+ var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader')],
6932
6983
  field = _ref5[0],
6933
6984
  header = _ref5[1],
6934
- exportHeader = _ref5[2],
6935
- exportable = _ref5[3];
6936
- if (exportable && field) {
6937
- var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6938
- csv = csv + ('"' + columnHeader + '"');
6939
- if (i < columns.length - 1) {
6940
- csv = csv + props.csvSeparator;
6941
- }
6985
+ exportHeader = _ref5[2];
6986
+ var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6987
+ csv = csv + ('"' + columnHeader + '"');
6988
+ if (i < exportableColumns.length - 1) {
6989
+ csv = csv + props.csvSeparator;
6942
6990
  }
6943
6991
  });
6944
6992
 
6945
- //body
6993
+ // body
6946
6994
  data.forEach(function (record) {
6947
6995
  csv = csv + '\n';
6948
- columns.forEach(function (column, i) {
6949
- var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField'), getColumnProp(column, 'exportable')],
6996
+ exportableColumns.forEach(function (column, i) {
6997
+ var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField')],
6950
6998
  colField = _ref6[0],
6951
- exportField = _ref6[1],
6952
- exportable = _ref6[2];
6999
+ exportField = _ref6[1];
6953
7000
  var field = exportField || colField;
6954
- if (exportable && field) {
6955
- var cellData = ObjectUtils.resolveFieldData(record, field);
6956
- if (cellData != null) {
6957
- if (props.exportFunction) {
6958
- cellData = props.exportFunction({
6959
- data: cellData,
6960
- field: field,
6961
- rowData: record,
6962
- column: column
6963
- });
6964
- } else {
6965
- cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6966
- }
7001
+ var cellData = ObjectUtils.resolveFieldData(record, field);
7002
+ if (cellData != null) {
7003
+ if (props.exportFunction) {
7004
+ cellData = props.exportFunction({
7005
+ data: cellData,
7006
+ field: field,
7007
+ rowData: record,
7008
+ column: column
7009
+ });
6967
7010
  } else {
6968
- cellData = '';
6969
- }
6970
- csv = csv + ('"' + cellData + '"');
6971
- if (i < columns.length - 1) {
6972
- csv = csv + props.csvSeparator;
7011
+ cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6973
7012
  }
7013
+ } else {
7014
+ cellData = '';
7015
+ }
7016
+ csv = csv + ('"' + cellData + '"');
7017
+ if (i < exportableColumns.length - 1) {
7018
+ csv = csv + props.csvSeparator;
6974
7019
  }
6975
7020
  });
6976
7021
  });
@@ -7134,6 +7179,9 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
7134
7179
  },
7135
7180
  getVirtualScroller: function getVirtualScroller() {
7136
7181
  return virtualScrollerRef.current;
7182
+ },
7183
+ getProcessedData: function getProcessedData() {
7184
+ return processedData();
7137
7185
  }
7138
7186
  };
7139
7187
  });
@@ -7235,6 +7283,9 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
7235
7283
  var frozenBody = ObjectUtils.isNotEmpty(props.frozenValue) && /*#__PURE__*/React.createElement(TableBody, {
7236
7284
  hostName: "DataTable",
7237
7285
  ref: frozenBodyRef,
7286
+ cellMemo: props.cellMemo,
7287
+ cellMemoProps: props.cellMemoProps,
7288
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7238
7289
  cellClassName: props.cellClassName,
7239
7290
  cellSelection: props.cellSelection,
7240
7291
  checkIcon: props.checkIcon,
@@ -7319,6 +7370,9 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
7319
7370
  var body = /*#__PURE__*/React.createElement(TableBody, {
7320
7371
  hostName: "DataTable",
7321
7372
  ref: bodyRef,
7373
+ cellMemo: props.cellMemo,
7374
+ cellMemoProps: props.cellMemoProps,
7375
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7322
7376
  cellClassName: props.cellClassName,
7323
7377
  cellSelection: props.cellSelection,
7324
7378
  checkIcon: props.checkIcon,