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
@@ -19,7 +19,6 @@ var chevrondown = require('primereact/icons/chevrondown');
19
19
  var chevronright = require('primereact/icons/chevronright');
20
20
  var pencil = require('primereact/icons/pencil');
21
21
  var times = require('primereact/icons/times');
22
- var overlayservice = require('primereact/overlayservice');
23
22
  var ripple = require('primereact/ripple');
24
23
  var tooltip = require('primereact/tooltip');
25
24
  var button = require('primereact/button');
@@ -30,6 +29,7 @@ var filterslash = require('primereact/icons/filterslash');
30
29
  var plus = require('primereact/icons/plus');
31
30
  var trash = require('primereact/icons/trash');
32
31
  var inputtext = require('primereact/inputtext');
32
+ var overlayservice = require('primereact/overlayservice');
33
33
  var portal = require('primereact/portal');
34
34
  var sortalt = require('primereact/icons/sortalt');
35
35
  var sortamountdown = require('primereact/icons/sortamountdown');
@@ -489,6 +489,9 @@ var DataTableBase = componentbase.ComponentBase.extend({
489
489
  alwaysShowPaginator: true,
490
490
  breakpoint: '960px',
491
491
  cellClassName: null,
492
+ cellMemo: true,
493
+ cellMemoProps: ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'],
494
+ cellMemoPropsDepth: 1,
492
495
  cellSelection: false,
493
496
  checkIcon: null,
494
497
  className: null,
@@ -1191,8 +1194,6 @@ var Cell = function Cell(props) {
1191
1194
  setStyleObjectState = _React$useState6[1];
1192
1195
  var elementRef = React__namespace.useRef(null);
1193
1196
  var keyHelperRef = React__namespace.useRef(null);
1194
- var overlayEventListener = React__namespace.useRef(null);
1195
- var selfClick = React__namespace.useRef(false);
1196
1197
  var focusTimeout = React__namespace.useRef(null);
1197
1198
  var initFocusTimeout = React__namespace.useRef(null);
1198
1199
  var editingRowDataStateRef = React__namespace.useRef(null);
@@ -1229,17 +1230,20 @@ var Cell = function Cell(props) {
1229
1230
  var cellEditValidateOnClose = function cellEditValidateOnClose() {
1230
1231
  return getColumnProp('cellEditValidateOnClose');
1231
1232
  };
1233
+ var isIgnoredElement = function isIgnoredElement(element) {
1234
+ var isOverlay = function isOverlay(el) {
1235
+ return el.getAttribute && el.getAttribute('data-pr-is-overlay');
1236
+ };
1237
+ return isOverlay(element) || utils.DomHandler.getParents(element).find(function (el) {
1238
+ return isOverlay(el);
1239
+ });
1240
+ };
1232
1241
  var _useEventListener = hooks.useEventListener({
1233
1242
  type: 'click',
1234
1243
  listener: function listener(e) {
1235
- setTimeout(function () {
1236
- if (!selfClick.current && isOutsideClicked(e.target)) {
1237
- // #2666 for overlay components and outside is clicked
1238
-
1239
- switchCellToViewMode(e, true);
1240
- }
1241
- }, 0);
1242
- selfClick.current = false;
1244
+ if (!isIgnoredElement(e.target) && isOutsideClicked(e.target)) {
1245
+ switchCellToViewMode(e, true);
1246
+ }
1243
1247
  },
1244
1248
  options: true,
1245
1249
  when: isEditable()
@@ -1284,10 +1288,6 @@ var Cell = function Cell(props) {
1284
1288
  setTimeout(function () {
1285
1289
  setEditingState(false);
1286
1290
  unbindDocumentClickListener();
1287
- overlayservice.OverlayService.off('overlay-click', overlayEventListener.current);
1288
- overlayEventListener.current = null;
1289
- editingRowDataStateRef.current = null;
1290
- selfClick.current = false;
1291
1291
  }, 1);
1292
1292
  };
1293
1293
  var switchCellToViewMode = function switchCellToViewMode(event, submit) {
@@ -1331,7 +1331,7 @@ var Cell = function Cell(props) {
1331
1331
  editingRowDataStateRef.current = editingRowData;
1332
1332
  };
1333
1333
  var _onClick = function onClick(event) {
1334
- props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, selfClick, props.column, bindDocumentClickListener, overlayEventListener);
1334
+ props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, props.column, bindDocumentClickListener);
1335
1335
  };
1336
1336
  var _onMouseDown = function onMouseDown(event) {
1337
1337
  var params = getCellCallbackParams(event);
@@ -1403,7 +1403,6 @@ var Cell = function Cell(props) {
1403
1403
  }
1404
1404
  };
1405
1405
  var _onBlur = function onBlur(event) {
1406
- selfClick.current = false;
1407
1406
  if (props.editMode !== 'row' && editingState && getColumnProp('cellEditValidatorEvent') === 'blur') {
1408
1407
  switchCellToViewMode(event, true);
1409
1408
  }
@@ -1453,7 +1452,7 @@ var Cell = function Cell(props) {
1453
1452
  field: props.field,
1454
1453
  index: props.rowIndex
1455
1454
  });
1456
- props.focusOnInit();
1455
+ props.focusOnInit(initFocusTimeout, elementRef);
1457
1456
  };
1458
1457
  React__namespace.useEffect(function () {
1459
1458
  if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
@@ -1484,9 +1483,8 @@ var Cell = function Cell(props) {
1484
1483
  // eslint-disable-next-line react-hooks/exhaustive-deps
1485
1484
  }, [editingState]);
1486
1485
  hooks.useUnmountEffect(function () {
1487
- if (overlayEventListener.current) {
1488
- overlayservice.OverlayService.off('overlay-click', overlayEventListener.current);
1489
- overlayEventListener.current = null;
1486
+ if (editingRowDataStateRef.current) {
1487
+ editingRowDataStateRef.current = null;
1490
1488
  }
1491
1489
  });
1492
1490
  var createLoading = function createLoading() {
@@ -1790,15 +1788,23 @@ var Cell = function Cell(props) {
1790
1788
  var RadioCheckCell = /*#__PURE__*/React__namespace.memo(function (props) {
1791
1789
  return /*#__PURE__*/React__namespace.createElement(Cell, props);
1792
1790
  }, function (prevProps, nextProps) {
1791
+ if (nextProps.cellMemo === false) return false;
1793
1792
  var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
1794
1793
  return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1795
1794
  });
1796
1795
  RadioCheckCell.displayName = 'RadioCheckCell';
1796
+ var defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
1797
1797
  var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1798
1798
  return /*#__PURE__*/React__namespace.createElement(Cell, props);
1799
1799
  }, function (prevProps, nextProps) {
1800
- var keysToCompare = ['field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData', 'frozenCol', 'alignFrozenCol'];
1801
- return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1800
+ if (nextProps.cellMemo === false) return false;
1801
+ var memoProps = nextProps.cellMemoProps;
1802
+ var keysToCompare = Array.isArray(memoProps) && memoProps.every(function (prop) {
1803
+ return typeof prop === 'string';
1804
+ }) ? memoProps : defaultKeysToCompare;
1805
+ var memoPropsDepth = nextProps.cellMemoPropsDepth;
1806
+ var depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
1807
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
1802
1808
  });
1803
1809
  BodyCell.displayName = 'BodyCell';
1804
1810
 
@@ -2266,8 +2272,13 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2266
2272
  } else {
2267
2273
  var left = 0;
2268
2274
  var prev = elementRef.current && elementRef.current.previousElementSibling;
2269
- if (prev && prev.classList.contains('p-frozen-column')) {
2270
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2275
+ while (prev) {
2276
+ if (prev.classList.contains('p-frozen-column')) {
2277
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2278
+ elementRef.current.style.left = left + 'px';
2279
+ break;
2280
+ }
2281
+ prev = prev.previousElementSibling;
2271
2282
  }
2272
2283
  styleObject.left = left + 'px';
2273
2284
  }
@@ -2275,9 +2286,8 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2275
2286
  !isSameStyle && setStyleObjectState(styleObject);
2276
2287
  }
2277
2288
  }, []);
2278
- var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener) {
2289
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, column, bindDocumentClickListener) {
2279
2290
  if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2280
- selfClick.current = true;
2281
2291
  var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2282
2292
  var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2283
2293
  var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
@@ -2308,12 +2318,6 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2308
2318
  }
2309
2319
  if (cellEditValidatorEvent === 'click') {
2310
2320
  bindDocumentClickListener();
2311
- overlayEventListener.current = function (e) {
2312
- if (!isOutsideClicked(e.target)) {
2313
- selfClick.current = true;
2314
- }
2315
- };
2316
- overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
2317
2321
  }
2318
2322
  }, 1);
2319
2323
  }
@@ -2334,6 +2338,9 @@ var BodyRow = /*#__PURE__*/React__namespace.memo(function (props) {
2334
2338
  var cellProps = mergeProps({
2335
2339
  hostName: props.hostName,
2336
2340
  allowCellSelection: props.allowCellSelection,
2341
+ cellMemo: props.cellMemo,
2342
+ cellMemoProps: props.cellMemoProps,
2343
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
2337
2344
  cellClassName: props.cellClassName,
2338
2345
  checkIcon: props.checkIcon,
2339
2346
  collapsedRowIcon: props.collapsedRowIcon,
@@ -2701,9 +2708,6 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2701
2708
  options = options || props.virtualScrollerOptions;
2702
2709
  return options ? options[option] : null;
2703
2710
  };
2704
- var getProcessedDataIndex = function getProcessedDataIndex(rowIndex) {
2705
- return props.lazy ? rowIndex - props.first : rowIndex;
2706
- };
2707
2711
  var findIndex = function findIndex(collection, rowData) {
2708
2712
  return (collection || []).findIndex(function (data) {
2709
2713
  return equals(rowData, data);
@@ -2874,16 +2878,14 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2874
2878
  var rangeStart;
2875
2879
  var rangeEnd;
2876
2880
  var isAllowCellSelection = allowCellSelection();
2877
- var rangeRowIndexInProcessedData = getProcessedDataIndex(rangeRowIndex.current);
2878
- var anchorRowIndexInProcessedData = getProcessedDataIndex(anchorRowIndex.current);
2879
- if (rangeRowIndexInProcessedData > anchorRowIndexInProcessedData) {
2880
- rangeStart = anchorRowIndexInProcessedData;
2881
- rangeEnd = rangeRowIndexInProcessedData;
2882
- } else if (rangeRowIndexInProcessedData < anchorRowIndexInProcessedData) {
2883
- rangeStart = rangeRowIndexInProcessedData;
2884
- rangeEnd = anchorRowIndexInProcessedData;
2881
+ if (rangeRowIndex.current > anchorRowIndex.current) {
2882
+ rangeStart = anchorRowIndex.current;
2883
+ rangeEnd = rangeRowIndex.current;
2884
+ } else if (rangeRowIndex.current < anchorRowIndex.current) {
2885
+ rangeStart = rangeRowIndex.current;
2886
+ rangeEnd = anchorRowIndex.current;
2885
2887
  } else {
2886
- rangeStart = rangeEnd = rangeRowIndexInProcessedData;
2888
+ rangeStart = rangeEnd = rangeRowIndex.current;
2887
2889
  }
2888
2890
  return isAllowCellSelection ? selectRangeOnCell(event, rangeStart, rangeEnd) : selectRangeOnRow(event, rangeStart, rangeEnd);
2889
2891
  };
@@ -2924,7 +2926,7 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
2924
2926
  for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
2925
2927
  var rowData = value[i];
2926
2928
  var columns = props.columns;
2927
- var rowIndex = props.lazy ? i + props.first : i;
2929
+ var rowIndex = props.paginator ? i + props.first : i;
2928
2930
  for (var j = cellRangeStart; j <= cellRangeEnd; j++) {
2929
2931
  var field = getColumnProp(columns[j], 'field');
2930
2932
  var _value = utils.ObjectUtils.resolveFieldData(rowData, field);
@@ -3123,13 +3125,17 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3123
3125
  onRangeSelection(event, 'row');
3124
3126
  }
3125
3127
  };
3128
+ var expandedRowsRef = React__namespace.useRef(props.expandedRows);
3129
+ React__namespace.useEffect(function () {
3130
+ expandedRowsRef.current = props.expandedRows;
3131
+ }, [props.expandedRows]);
3126
3132
  var onRowToggle = function onRowToggle(event) {
3127
3133
  var expandedRows;
3128
3134
  var dataKey = props.dataKey;
3129
3135
  var hasDataKey = props.groupRowsBy ? dataKey === props.groupRowsBy : !!dataKey;
3130
3136
  if (hasDataKey) {
3131
3137
  var dataKeyValue = String(utils.ObjectUtils.resolveFieldData(event.data, dataKey));
3132
- expandedRows = props.expandedRows ? _objectSpread$8({}, props.expandedRows) : {};
3138
+ expandedRows = expandedRowsRef.current ? _objectSpread$8({}, expandedRowsRef.current) : {};
3133
3139
  if (expandedRows[dataKeyValue] != null) {
3134
3140
  delete expandedRows[dataKeyValue];
3135
3141
  if (props.onRowCollapse) {
@@ -3148,8 +3154,8 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3148
3154
  }
3149
3155
  }
3150
3156
  } else {
3151
- var expandedRowIndex = findIndex(props.expandedRows, event.data);
3152
- expandedRows = props.expandedRows ? _toConsumableArray(props.expandedRows) : [];
3157
+ var expandedRowIndex = findIndex(expandedRowsRef.current, event.data);
3158
+ expandedRows = expandedRowsRef.current ? _toConsumableArray(expandedRowsRef.current) : [];
3153
3159
  if (expandedRowIndex !== -1) {
3154
3160
  expandedRows = expandedRows.filter(function (_, i) {
3155
3161
  return i !== expandedRowIndex;
@@ -3399,7 +3405,7 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3399
3405
  return null;
3400
3406
  };
3401
3407
  var createGroupHeader = function createGroupHeader(rowData, rowIndex, expanded, colSpan) {
3402
- if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, getProcessedDataIndex(rowIndex))) {
3408
+ if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, rowIndex - props.first)) {
3403
3409
  var style = rowGroupHeaderStyle();
3404
3410
  var toggler = props.expandableRowGroups && /*#__PURE__*/React__namespace.createElement(RowTogglerButton, {
3405
3411
  hostName: props.hostName,
@@ -3449,6 +3455,9 @@ var TableBody = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace
3449
3455
  hostName: props.hostName,
3450
3456
  allowCellSelection: _allowCellSelection,
3451
3457
  allowRowSelection: _allowRowSelection,
3458
+ cellMemo: props.cellMemo,
3459
+ cellMemoProps: props.cellMemoProps,
3460
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
3452
3461
  cellClassName: props.cellClassName,
3453
3462
  checkIcon: props.checkIcon,
3454
3463
  collapsedRowIcon: props.collapsedRowIcon,
@@ -3668,16 +3677,21 @@ var FooterCell = /*#__PURE__*/React__namespace.memo(function (props) {
3668
3677
  var _align = getColumnProp('alignFrozen');
3669
3678
  if (_align === 'right') {
3670
3679
  var right = 0;
3671
- var next = elementRef.current.nextElementSibling;
3680
+ var next = elementRef.current && elementRef.current.nextElementSibling;
3672
3681
  if (next && next.classList.contains('p-frozen-column')) {
3673
3682
  right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
3674
3683
  }
3675
3684
  styleObject.right = right + 'px';
3676
3685
  } else {
3677
3686
  var left = 0;
3678
- var prev = elementRef.current.previousElementSibling;
3679
- if (prev && prev.classList.contains('p-frozen-column')) {
3680
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
3687
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
3688
+ while (prev) {
3689
+ if (prev && prev.classList.contains('p-frozen-column')) {
3690
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
3691
+ elementRef.current.style.left = left + 'px';
3692
+ break;
3693
+ }
3694
+ prev = prev.previousElementSibling;
3681
3695
  }
3682
3696
  styleObject.left = left + 'px';
3683
3697
  }
@@ -3841,6 +3855,7 @@ var FilterMatchMode = Object.freeze({
3841
3855
  EQUALS: 'equals',
3842
3856
  NOT_EQUALS: 'notEquals',
3843
3857
  IN: 'in',
3858
+ NOT_IN: 'notIn',
3844
3859
  LESS_THAN: 'lt',
3845
3860
  LESS_THAN_OR_EQUAL_TO: 'lte',
3846
3861
  GREATER_THAN: 'gt',
@@ -3929,6 +3944,7 @@ var locales = {
3929
3944
  emptySelectionMessage: 'No selected item',
3930
3945
  endsWith: 'Ends with',
3931
3946
  equals: 'Equals',
3947
+ fileChosenMessage: '{0} files',
3932
3948
  fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
3933
3949
  filter: 'Filter',
3934
3950
  firstDayOfWeek: 0,
@@ -3947,6 +3963,7 @@ var locales = {
3947
3963
  nextMonth: 'Next Month',
3948
3964
  nextSecond: 'Next Second',
3949
3965
  nextYear: 'Next Year',
3966
+ noFileChosenMessage: 'No file chosen',
3950
3967
  noFilter: 'No Filter',
3951
3968
  notContains: 'Not contains',
3952
3969
  notEquals: 'Not equals',
@@ -3974,8 +3991,10 @@ var locales = {
3974
3991
  aria: {
3975
3992
  cancelEdit: 'Cancel Edit',
3976
3993
  close: 'Close',
3994
+ collapseLabel: 'Collapse',
3977
3995
  collapseRow: 'Row Collapsed',
3978
3996
  editRow: 'Edit Row',
3997
+ expandLabel: 'Expand',
3979
3998
  expandRow: 'Row Expanded',
3980
3999
  falseLabel: 'False',
3981
4000
  filterConstraint: 'Filter Constraint',
@@ -4000,18 +4019,20 @@ var locales = {
4000
4019
  next: 'Next',
4001
4020
  nextPageLabel: 'Next Page',
4002
4021
  nullLabel: 'Not Selected',
4003
- pageLabel: 'Page {page}',
4004
4022
  otpLabel: 'Please enter one time password character {0}',
4023
+ pageLabel: 'Page {page}',
4005
4024
  passwordHide: 'Hide Password',
4006
4025
  passwordShow: 'Show Password',
4007
4026
  previous: 'Previous',
4008
4027
  prevPageLabel: 'Previous Page',
4028
+ removeLabel: 'Remove',
4009
4029
  rotateLeft: 'Rotate Left',
4010
4030
  rotateRight: 'Rotate Right',
4011
4031
  rowsPerPageLabel: 'Rows per page',
4012
4032
  saveEdit: 'Save Edit',
4013
4033
  scrollTop: 'Scroll Top',
4014
4034
  selectAll: 'All items selected',
4035
+ selectLabel: 'Select',
4015
4036
  selectRow: 'Row Selected',
4016
4037
  showFilterMenu: 'Show Filter Menu',
4017
4038
  slide: 'Slide',
@@ -4020,6 +4041,7 @@ var locales = {
4020
4041
  stars: '{star} stars',
4021
4042
  trueLabel: 'True',
4022
4043
  unselectAll: 'All items unselected',
4044
+ unselectLabel: 'Unselect',
4023
4045
  unselectRow: 'Row Unselected',
4024
4046
  zoomImage: 'Zoom Image',
4025
4047
  zoomIn: 'Zoom In',
@@ -4352,7 +4374,7 @@ var ColumnFilter = /*#__PURE__*/React__namespace.memo(function (props) {
4352
4374
  };
4353
4375
  } else {
4354
4376
  filters[field].value = null;
4355
- filters[field].matchMode = defaultConstraint.matchMode;
4377
+ filters[field].matchMode = defaultConstraint ? defaultConstraint.matchMode : filters[field].matchMode;
4356
4378
  }
4357
4379
  filterClearCallback && filterClearCallback();
4358
4380
  props.onFilterChange(filters);
@@ -4419,6 +4441,7 @@ var ColumnFilter = /*#__PURE__*/React__namespace.memo(function (props) {
4419
4441
  }
4420
4442
  };
4421
4443
  var onRowMatchModeChange = function onRowMatchModeChange(matchMode) {
4444
+ var _iconRef$current;
4422
4445
  var filterMatchModeChangeCallback = getColumnProp('onFilterMatchModeChange');
4423
4446
  var filters = _objectSpread$4({}, props.filters);
4424
4447
  filters[field].matchMode = matchMode;
@@ -4429,6 +4452,7 @@ var ColumnFilter = /*#__PURE__*/React__namespace.memo(function (props) {
4429
4452
  props.onFilterChange(filters);
4430
4453
  props.onFilterApply();
4431
4454
  hide();
4455
+ (_iconRef$current = iconRef.current) === null || _iconRef$current === void 0 || _iconRef$current.focus();
4432
4456
  };
4433
4457
  var onRowMatchModeKeyDown = function onRowMatchModeKeyDown(event, matchMode, clear) {
4434
4458
  var item = event.target;
@@ -5188,16 +5212,21 @@ var HeaderCell = /*#__PURE__*/React__namespace.memo(function (props) {
5188
5212
  var align = getColumnProp('alignFrozen');
5189
5213
  if (align === 'right') {
5190
5214
  var right = 0;
5191
- var next = elementRef.current.nextElementSibling;
5215
+ var next = elementRef.current && elementRef.current.nextElementSibling;
5192
5216
  if (next && next.classList.contains('p-frozen-column')) {
5193
5217
  right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
5194
5218
  }
5195
5219
  styleObject.right = right + 'px';
5196
5220
  } else {
5197
5221
  var left = 0;
5198
- var prev = elementRef.current.previousElementSibling;
5199
- if (prev && prev.classList.contains('p-frozen-column')) {
5200
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
5222
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
5223
+ while (prev) {
5224
+ if (prev && prev.classList.contains('p-frozen-column')) {
5225
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
5226
+ elementRef.current.style.left = left + 'px';
5227
+ break;
5228
+ }
5229
+ prev = prev.previousElementSibling;
5201
5230
  }
5202
5231
  styleObject.left = left + 'px';
5203
5232
  }
@@ -6048,6 +6077,20 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
6048
6077
  multiSortMeta: restoredState.multiSortMeta
6049
6078
  }));
6050
6079
  } else {
6080
+ var lastMeta = restoredState.multiSortMeta[restoredState.multiSortMeta.length - 1];
6081
+ var field = lastMeta && lastMeta.field ? lastMeta.field : null;
6082
+ if (field) {
6083
+ var sortColumn = findColumnByKey(getColumns(), field);
6084
+ if (sortColumn) {
6085
+ var sortFunction = getColumnProp(sortColumn, 'sortFunction');
6086
+ var sortable = getColumnProp(sortColumn, 'sortable');
6087
+ if (sortFunction && sortable) {
6088
+ columnSortFunction.current = sortFunction;
6089
+ columnSortable.current = sortable;
6090
+ columnField.current = field;
6091
+ }
6092
+ }
6093
+ }
6051
6094
  setMultiSortMetaState(restoredState.multiSortMeta);
6052
6095
  }
6053
6096
  }
@@ -6946,58 +6989,60 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
6946
6989
  var exportCSV = function exportCSV(options) {
6947
6990
  var data;
6948
6991
  var csv = "\uFEFF";
6949
- var columns = getColumns();
6950
6992
  if (options && options.selectionOnly) {
6951
6993
  data = props.selection || [];
6952
6994
  } else {
6953
6995
  data = [].concat(_toConsumableArray(props.frozenValue || []), _toConsumableArray(processedData() || []));
6954
6996
  }
6955
6997
 
6956
- //headers
6957
- columns.forEach(function (column, i) {
6958
- var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader'), getColumnProp(column, 'exportable')],
6998
+ // First build collection of exportable columns
6999
+ var exportableColumns = getColumns().filter(function (column) {
7000
+ var exportable = getColumnProp(column, 'exportable');
7001
+ var field = getColumnProp(column, 'field');
7002
+
7003
+ // Column must be exportable (or undefined/not set) and have a field defined
7004
+ return exportable !== false && field;
7005
+ });
7006
+
7007
+ // headers
7008
+ exportableColumns.forEach(function (column, i) {
7009
+ var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader')],
6959
7010
  field = _ref5[0],
6960
7011
  header = _ref5[1],
6961
- exportHeader = _ref5[2],
6962
- exportable = _ref5[3];
6963
- if (exportable && field) {
6964
- var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6965
- csv = csv + ('"' + columnHeader + '"');
6966
- if (i < columns.length - 1) {
6967
- csv = csv + props.csvSeparator;
6968
- }
7012
+ exportHeader = _ref5[2];
7013
+ var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
7014
+ csv = csv + ('"' + columnHeader + '"');
7015
+ if (i < exportableColumns.length - 1) {
7016
+ csv = csv + props.csvSeparator;
6969
7017
  }
6970
7018
  });
6971
7019
 
6972
- //body
7020
+ // body
6973
7021
  data.forEach(function (record) {
6974
7022
  csv = csv + '\n';
6975
- columns.forEach(function (column, i) {
6976
- var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField'), getColumnProp(column, 'exportable')],
7023
+ exportableColumns.forEach(function (column, i) {
7024
+ var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField')],
6977
7025
  colField = _ref6[0],
6978
- exportField = _ref6[1],
6979
- exportable = _ref6[2];
7026
+ exportField = _ref6[1];
6980
7027
  var field = exportField || colField;
6981
- if (exportable && field) {
6982
- var cellData = utils.ObjectUtils.resolveFieldData(record, field);
6983
- if (cellData != null) {
6984
- if (props.exportFunction) {
6985
- cellData = props.exportFunction({
6986
- data: cellData,
6987
- field: field,
6988
- rowData: record,
6989
- column: column
6990
- });
6991
- } else {
6992
- cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6993
- }
7028
+ var cellData = utils.ObjectUtils.resolveFieldData(record, field);
7029
+ if (cellData != null) {
7030
+ if (props.exportFunction) {
7031
+ cellData = props.exportFunction({
7032
+ data: cellData,
7033
+ field: field,
7034
+ rowData: record,
7035
+ column: column
7036
+ });
6994
7037
  } else {
6995
- cellData = '';
6996
- }
6997
- csv = csv + ('"' + cellData + '"');
6998
- if (i < columns.length - 1) {
6999
- csv = csv + props.csvSeparator;
7038
+ cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
7000
7039
  }
7040
+ } else {
7041
+ cellData = '';
7042
+ }
7043
+ csv = csv + ('"' + cellData + '"');
7044
+ if (i < exportableColumns.length - 1) {
7045
+ csv = csv + props.csvSeparator;
7001
7046
  }
7002
7047
  });
7003
7048
  });
@@ -7161,6 +7206,9 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
7161
7206
  },
7162
7207
  getVirtualScroller: function getVirtualScroller() {
7163
7208
  return virtualScrollerRef.current;
7209
+ },
7210
+ getProcessedData: function getProcessedData() {
7211
+ return processedData();
7164
7212
  }
7165
7213
  };
7166
7214
  });
@@ -7262,6 +7310,9 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
7262
7310
  var frozenBody = utils.ObjectUtils.isNotEmpty(props.frozenValue) && /*#__PURE__*/React__namespace.createElement(TableBody, {
7263
7311
  hostName: "DataTable",
7264
7312
  ref: frozenBodyRef,
7313
+ cellMemo: props.cellMemo,
7314
+ cellMemoProps: props.cellMemoProps,
7315
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7265
7316
  cellClassName: props.cellClassName,
7266
7317
  cellSelection: props.cellSelection,
7267
7318
  checkIcon: props.checkIcon,
@@ -7346,6 +7397,9 @@ var DataTable = /*#__PURE__*/React__namespace.forwardRef(function (inProps, ref)
7346
7397
  var body = /*#__PURE__*/React__namespace.createElement(TableBody, {
7347
7398
  hostName: "DataTable",
7348
7399
  ref: bodyRef,
7400
+ cellMemo: props.cellMemo,
7401
+ cellMemoProps: props.cellMemoProps,
7402
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7349
7403
  cellClassName: props.cellClassName,
7350
7404
  cellSelection: props.cellSelection,
7351
7405
  checkIcon: props.checkIcon,