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
@@ -1,5 +1,5 @@
1
1
  this.primereact = this.primereact || {};
2
- this.primereact.datatable = (function (exports, React, PrimeReact$1, componentbase, utils, hooks, arrowdown, arrowup, spinner, paginator, virtualscroller, bars, check, chevrondown, chevronright, pencil, times, overlayservice, ripple, tooltip, button, csstransition, dropdown, filter, filterslash, plus, trash, inputtext, portal, sortalt, sortamountdown, sortamountupalt) {
2
+ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentbase, utils, hooks, arrowdown, arrowup, spinner, paginator, virtualscroller, bars, check, chevrondown, chevronright, pencil, times, ripple, tooltip, button, csstransition, dropdown, filter, filterslash, plus, trash, inputtext, overlayservice, portal, sortalt, sortamountdown, sortamountupalt) {
3
3
  'use strict';
4
4
 
5
5
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -456,6 +456,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
456
456
  alwaysShowPaginator: true,
457
457
  breakpoint: '960px',
458
458
  cellClassName: null,
459
+ cellMemo: true,
460
+ cellMemoProps: ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'],
461
+ cellMemoPropsDepth: 1,
459
462
  cellSelection: false,
460
463
  checkIcon: null,
461
464
  className: null,
@@ -1158,8 +1161,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1158
1161
  setStyleObjectState = _React$useState6[1];
1159
1162
  var elementRef = React__namespace.useRef(null);
1160
1163
  var keyHelperRef = React__namespace.useRef(null);
1161
- var overlayEventListener = React__namespace.useRef(null);
1162
- var selfClick = React__namespace.useRef(false);
1163
1164
  var focusTimeout = React__namespace.useRef(null);
1164
1165
  var initFocusTimeout = React__namespace.useRef(null);
1165
1166
  var editingRowDataStateRef = React__namespace.useRef(null);
@@ -1196,17 +1197,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1196
1197
  var cellEditValidateOnClose = function cellEditValidateOnClose() {
1197
1198
  return getColumnProp('cellEditValidateOnClose');
1198
1199
  };
1200
+ var isIgnoredElement = function isIgnoredElement(element) {
1201
+ var isOverlay = function isOverlay(el) {
1202
+ return el.getAttribute && el.getAttribute('data-pr-is-overlay');
1203
+ };
1204
+ return isOverlay(element) || utils.DomHandler.getParents(element).find(function (el) {
1205
+ return isOverlay(el);
1206
+ });
1207
+ };
1199
1208
  var _useEventListener = hooks.useEventListener({
1200
1209
  type: 'click',
1201
1210
  listener: function listener(e) {
1202
- setTimeout(function () {
1203
- if (!selfClick.current && isOutsideClicked(e.target)) {
1204
- // #2666 for overlay components and outside is clicked
1205
-
1206
- switchCellToViewMode(e, true);
1207
- }
1208
- }, 0);
1209
- selfClick.current = false;
1211
+ if (!isIgnoredElement(e.target) && isOutsideClicked(e.target)) {
1212
+ switchCellToViewMode(e, true);
1213
+ }
1210
1214
  },
1211
1215
  options: true,
1212
1216
  when: isEditable()
@@ -1251,10 +1255,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1251
1255
  setTimeout(function () {
1252
1256
  setEditingState(false);
1253
1257
  unbindDocumentClickListener();
1254
- overlayservice.OverlayService.off('overlay-click', overlayEventListener.current);
1255
- overlayEventListener.current = null;
1256
- editingRowDataStateRef.current = null;
1257
- selfClick.current = false;
1258
1258
  }, 1);
1259
1259
  };
1260
1260
  var switchCellToViewMode = function switchCellToViewMode(event, submit) {
@@ -1298,7 +1298,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1298
1298
  editingRowDataStateRef.current = editingRowData;
1299
1299
  };
1300
1300
  var _onClick = function onClick(event) {
1301
- props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, selfClick, props.column, bindDocumentClickListener, overlayEventListener);
1301
+ props.onClick(event, getCellCallbackParams(event), isEditable(), editingState, setEditingState, props.column, bindDocumentClickListener);
1302
1302
  };
1303
1303
  var _onMouseDown = function onMouseDown(event) {
1304
1304
  var params = getCellCallbackParams(event);
@@ -1370,7 +1370,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1370
1370
  }
1371
1371
  };
1372
1372
  var _onBlur = function onBlur(event) {
1373
- selfClick.current = false;
1374
1373
  if (props.editMode !== 'row' && editingState && getColumnProp('cellEditValidatorEvent') === 'blur') {
1375
1374
  switchCellToViewMode(event, true);
1376
1375
  }
@@ -1420,7 +1419,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1420
1419
  field: props.field,
1421
1420
  index: props.rowIndex
1422
1421
  });
1423
- props.focusOnInit();
1422
+ props.focusOnInit(initFocusTimeout, elementRef);
1424
1423
  };
1425
1424
  React__namespace.useEffect(function () {
1426
1425
  if (props.frozenCol) props.updateStickyPosition(elementRef, props.frozenCol, props.alignFrozenCol, styleObjectState, setStyleObjectState);
@@ -1451,9 +1450,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1451
1450
  // eslint-disable-next-line react-hooks/exhaustive-deps
1452
1451
  }, [editingState]);
1453
1452
  hooks.useUnmountEffect(function () {
1454
- if (overlayEventListener.current) {
1455
- overlayservice.OverlayService.off('overlay-click', overlayEventListener.current);
1456
- overlayEventListener.current = null;
1453
+ if (editingRowDataStateRef.current) {
1454
+ editingRowDataStateRef.current = null;
1457
1455
  }
1458
1456
  });
1459
1457
  var createLoading = function createLoading() {
@@ -1757,15 +1755,23 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
1757
1755
  var RadioCheckCell = /*#__PURE__*/React__namespace.memo(function (props) {
1758
1756
  return /*#__PURE__*/React__namespace.createElement(Cell, props);
1759
1757
  }, function (prevProps, nextProps) {
1758
+ if (nextProps.cellMemo === false) return false;
1760
1759
  var keysToCompare = ['isRowSelected', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData'];
1761
1760
  return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1762
1761
  });
1763
1762
  RadioCheckCell.displayName = 'RadioCheckCell';
1763
+ var defaultKeysToCompare = ['rowData', 'field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'frozenCol', 'alignFrozenCol'];
1764
1764
  var BodyCell = /*#__PURE__*/React__namespace.memo(function (props) {
1765
1765
  return /*#__PURE__*/React__namespace.createElement(Cell, props);
1766
1766
  }, function (prevProps, nextProps) {
1767
- var keysToCompare = ['field', 'allowCellSelection', 'isCellSelected', 'editMode', 'index', 'tabIndex', 'editing', 'expanded', 'editingMeta', 'rowData', 'frozenCol', 'alignFrozenCol'];
1768
- return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare);
1767
+ if (nextProps.cellMemo === false) return false;
1768
+ var memoProps = nextProps.cellMemoProps;
1769
+ var keysToCompare = Array.isArray(memoProps) && memoProps.every(function (prop) {
1770
+ return typeof prop === 'string';
1771
+ }) ? memoProps : defaultKeysToCompare;
1772
+ var memoPropsDepth = nextProps.cellMemoPropsDepth;
1773
+ var depth = typeof memoPropsDepth === 'number' && memoPropsDepth > 0 ? memoPropsDepth : 1;
1774
+ return utils.ObjectUtils.selectiveCompare(prevProps, nextProps, keysToCompare, depth);
1769
1775
  });
1770
1776
  BodyCell.displayName = 'BodyCell';
1771
1777
 
@@ -2233,8 +2239,13 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2233
2239
  } else {
2234
2240
  var left = 0;
2235
2241
  var prev = elementRef.current && elementRef.current.previousElementSibling;
2236
- if (prev && prev.classList.contains('p-frozen-column')) {
2237
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2242
+ while (prev) {
2243
+ if (prev.classList.contains('p-frozen-column')) {
2244
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
2245
+ elementRef.current.style.left = left + 'px';
2246
+ break;
2247
+ }
2248
+ prev = prev.previousElementSibling;
2238
2249
  }
2239
2250
  styleObject.left = left + 'px';
2240
2251
  }
@@ -2242,9 +2253,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2242
2253
  !isSameStyle && setStyleObjectState(styleObject);
2243
2254
  }
2244
2255
  }, []);
2245
- var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener) {
2256
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, column, bindDocumentClickListener) {
2246
2257
  if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2247
- selfClick.current = true;
2248
2258
  var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2249
2259
  var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2250
2260
  var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
@@ -2275,12 +2285,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2275
2285
  }
2276
2286
  if (cellEditValidatorEvent === 'click') {
2277
2287
  bindDocumentClickListener();
2278
- overlayEventListener.current = function (e) {
2279
- if (!isOutsideClicked(e.target)) {
2280
- selfClick.current = true;
2281
- }
2282
- };
2283
- overlayservice.OverlayService.on('overlay-click', overlayEventListener.current);
2284
2288
  }
2285
2289
  }, 1);
2286
2290
  }
@@ -2301,6 +2305,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2301
2305
  var cellProps = mergeProps({
2302
2306
  hostName: props.hostName,
2303
2307
  allowCellSelection: props.allowCellSelection,
2308
+ cellMemo: props.cellMemo,
2309
+ cellMemoProps: props.cellMemoProps,
2310
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
2304
2311
  cellClassName: props.cellClassName,
2305
2312
  checkIcon: props.checkIcon,
2306
2313
  collapsedRowIcon: props.collapsedRowIcon,
@@ -2668,9 +2675,6 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2668
2675
  options = options || props.virtualScrollerOptions;
2669
2676
  return options ? options[option] : null;
2670
2677
  };
2671
- var getProcessedDataIndex = function getProcessedDataIndex(rowIndex) {
2672
- return props.lazy ? rowIndex - props.first : rowIndex;
2673
- };
2674
2678
  var findIndex = function findIndex(collection, rowData) {
2675
2679
  return (collection || []).findIndex(function (data) {
2676
2680
  return equals(rowData, data);
@@ -2841,16 +2845,14 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2841
2845
  var rangeStart;
2842
2846
  var rangeEnd;
2843
2847
  var isAllowCellSelection = allowCellSelection();
2844
- var rangeRowIndexInProcessedData = getProcessedDataIndex(rangeRowIndex.current);
2845
- var anchorRowIndexInProcessedData = getProcessedDataIndex(anchorRowIndex.current);
2846
- if (rangeRowIndexInProcessedData > anchorRowIndexInProcessedData) {
2847
- rangeStart = anchorRowIndexInProcessedData;
2848
- rangeEnd = rangeRowIndexInProcessedData;
2849
- } else if (rangeRowIndexInProcessedData < anchorRowIndexInProcessedData) {
2850
- rangeStart = rangeRowIndexInProcessedData;
2851
- rangeEnd = anchorRowIndexInProcessedData;
2848
+ if (rangeRowIndex.current > anchorRowIndex.current) {
2849
+ rangeStart = anchorRowIndex.current;
2850
+ rangeEnd = rangeRowIndex.current;
2851
+ } else if (rangeRowIndex.current < anchorRowIndex.current) {
2852
+ rangeStart = rangeRowIndex.current;
2853
+ rangeEnd = anchorRowIndex.current;
2852
2854
  } else {
2853
- rangeStart = rangeEnd = rangeRowIndexInProcessedData;
2855
+ rangeStart = rangeEnd = rangeRowIndex.current;
2854
2856
  }
2855
2857
  return isAllowCellSelection ? selectRangeOnCell(event, rangeStart, rangeEnd) : selectRangeOnRow(event, rangeStart, rangeEnd);
2856
2858
  };
@@ -2891,7 +2893,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
2891
2893
  for (var i = rowRangeStart; i <= rowRangeEnd; i++) {
2892
2894
  var rowData = value[i];
2893
2895
  var columns = props.columns;
2894
- var rowIndex = props.lazy ? i + props.first : i;
2896
+ var rowIndex = props.paginator ? i + props.first : i;
2895
2897
  for (var j = cellRangeStart; j <= cellRangeEnd; j++) {
2896
2898
  var field = getColumnProp(columns[j], 'field');
2897
2899
  var _value = utils.ObjectUtils.resolveFieldData(rowData, field);
@@ -3090,13 +3092,17 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3090
3092
  onRangeSelection(event, 'row');
3091
3093
  }
3092
3094
  };
3095
+ var expandedRowsRef = React__namespace.useRef(props.expandedRows);
3096
+ React__namespace.useEffect(function () {
3097
+ expandedRowsRef.current = props.expandedRows;
3098
+ }, [props.expandedRows]);
3093
3099
  var onRowToggle = function onRowToggle(event) {
3094
3100
  var expandedRows;
3095
3101
  var dataKey = props.dataKey;
3096
3102
  var hasDataKey = props.groupRowsBy ? dataKey === props.groupRowsBy : !!dataKey;
3097
3103
  if (hasDataKey) {
3098
3104
  var dataKeyValue = String(utils.ObjectUtils.resolveFieldData(event.data, dataKey));
3099
- expandedRows = props.expandedRows ? _objectSpread$8({}, props.expandedRows) : {};
3105
+ expandedRows = expandedRowsRef.current ? _objectSpread$8({}, expandedRowsRef.current) : {};
3100
3106
  if (expandedRows[dataKeyValue] != null) {
3101
3107
  delete expandedRows[dataKeyValue];
3102
3108
  if (props.onRowCollapse) {
@@ -3115,8 +3121,8 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3115
3121
  }
3116
3122
  }
3117
3123
  } else {
3118
- var expandedRowIndex = findIndex(props.expandedRows, event.data);
3119
- expandedRows = props.expandedRows ? _toConsumableArray(props.expandedRows) : [];
3124
+ var expandedRowIndex = findIndex(expandedRowsRef.current, event.data);
3125
+ expandedRows = expandedRowsRef.current ? _toConsumableArray(expandedRowsRef.current) : [];
3120
3126
  if (expandedRowIndex !== -1) {
3121
3127
  expandedRows = expandedRows.filter(function (_, i) {
3122
3128
  return i !== expandedRowIndex;
@@ -3366,7 +3372,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3366
3372
  return null;
3367
3373
  };
3368
3374
  var createGroupHeader = function createGroupHeader(rowData, rowIndex, expanded, colSpan) {
3369
- if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, getProcessedDataIndex(rowIndex))) {
3375
+ if (isSubheaderGrouping && shouldRenderRowGroupHeader(props.value, rowData, rowIndex - props.first)) {
3370
3376
  var style = rowGroupHeaderStyle();
3371
3377
  var toggler = props.expandableRowGroups && /*#__PURE__*/React__namespace.createElement(RowTogglerButton, {
3372
3378
  hostName: props.hostName,
@@ -3416,6 +3422,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3416
3422
  hostName: props.hostName,
3417
3423
  allowCellSelection: _allowCellSelection,
3418
3424
  allowRowSelection: _allowRowSelection,
3425
+ cellMemo: props.cellMemo,
3426
+ cellMemoProps: props.cellMemoProps,
3427
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
3419
3428
  cellClassName: props.cellClassName,
3420
3429
  checkIcon: props.checkIcon,
3421
3430
  collapsedRowIcon: props.collapsedRowIcon,
@@ -3635,16 +3644,21 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3635
3644
  var _align = getColumnProp('alignFrozen');
3636
3645
  if (_align === 'right') {
3637
3646
  var right = 0;
3638
- var next = elementRef.current.nextElementSibling;
3647
+ var next = elementRef.current && elementRef.current.nextElementSibling;
3639
3648
  if (next && next.classList.contains('p-frozen-column')) {
3640
3649
  right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
3641
3650
  }
3642
3651
  styleObject.right = right + 'px';
3643
3652
  } else {
3644
3653
  var left = 0;
3645
- var prev = elementRef.current.previousElementSibling;
3646
- if (prev && prev.classList.contains('p-frozen-column')) {
3647
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
3654
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
3655
+ while (prev) {
3656
+ if (prev && prev.classList.contains('p-frozen-column')) {
3657
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
3658
+ elementRef.current.style.left = left + 'px';
3659
+ break;
3660
+ }
3661
+ prev = prev.previousElementSibling;
3648
3662
  }
3649
3663
  styleObject.left = left + 'px';
3650
3664
  }
@@ -3808,6 +3822,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3808
3822
  EQUALS: 'equals',
3809
3823
  NOT_EQUALS: 'notEquals',
3810
3824
  IN: 'in',
3825
+ NOT_IN: 'notIn',
3811
3826
  LESS_THAN: 'lt',
3812
3827
  LESS_THAN_OR_EQUAL_TO: 'lte',
3813
3828
  GREATER_THAN: 'gt',
@@ -3896,6 +3911,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3896
3911
  emptySelectionMessage: 'No selected item',
3897
3912
  endsWith: 'Ends with',
3898
3913
  equals: 'Equals',
3914
+ fileChosenMessage: '{0} files',
3899
3915
  fileSizeTypes: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
3900
3916
  filter: 'Filter',
3901
3917
  firstDayOfWeek: 0,
@@ -3914,6 +3930,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3914
3930
  nextMonth: 'Next Month',
3915
3931
  nextSecond: 'Next Second',
3916
3932
  nextYear: 'Next Year',
3933
+ noFileChosenMessage: 'No file chosen',
3917
3934
  noFilter: 'No Filter',
3918
3935
  notContains: 'Not contains',
3919
3936
  notEquals: 'Not equals',
@@ -3941,8 +3958,10 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3941
3958
  aria: {
3942
3959
  cancelEdit: 'Cancel Edit',
3943
3960
  close: 'Close',
3961
+ collapseLabel: 'Collapse',
3944
3962
  collapseRow: 'Row Collapsed',
3945
3963
  editRow: 'Edit Row',
3964
+ expandLabel: 'Expand',
3946
3965
  expandRow: 'Row Expanded',
3947
3966
  falseLabel: 'False',
3948
3967
  filterConstraint: 'Filter Constraint',
@@ -3967,18 +3986,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3967
3986
  next: 'Next',
3968
3987
  nextPageLabel: 'Next Page',
3969
3988
  nullLabel: 'Not Selected',
3970
- pageLabel: 'Page {page}',
3971
3989
  otpLabel: 'Please enter one time password character {0}',
3990
+ pageLabel: 'Page {page}',
3972
3991
  passwordHide: 'Hide Password',
3973
3992
  passwordShow: 'Show Password',
3974
3993
  previous: 'Previous',
3975
3994
  prevPageLabel: 'Previous Page',
3995
+ removeLabel: 'Remove',
3976
3996
  rotateLeft: 'Rotate Left',
3977
3997
  rotateRight: 'Rotate Right',
3978
3998
  rowsPerPageLabel: 'Rows per page',
3979
3999
  saveEdit: 'Save Edit',
3980
4000
  scrollTop: 'Scroll Top',
3981
4001
  selectAll: 'All items selected',
4002
+ selectLabel: 'Select',
3982
4003
  selectRow: 'Row Selected',
3983
4004
  showFilterMenu: 'Show Filter Menu',
3984
4005
  slide: 'Slide',
@@ -3987,6 +4008,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
3987
4008
  stars: '{star} stars',
3988
4009
  trueLabel: 'True',
3989
4010
  unselectAll: 'All items unselected',
4011
+ unselectLabel: 'Unselect',
3990
4012
  unselectRow: 'Row Unselected',
3991
4013
  zoomImage: 'Zoom Image',
3992
4014
  zoomIn: 'Zoom In',
@@ -4319,7 +4341,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
4319
4341
  };
4320
4342
  } else {
4321
4343
  filters[field].value = null;
4322
- filters[field].matchMode = defaultConstraint.matchMode;
4344
+ filters[field].matchMode = defaultConstraint ? defaultConstraint.matchMode : filters[field].matchMode;
4323
4345
  }
4324
4346
  filterClearCallback && filterClearCallback();
4325
4347
  props.onFilterChange(filters);
@@ -4386,6 +4408,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
4386
4408
  }
4387
4409
  };
4388
4410
  var onRowMatchModeChange = function onRowMatchModeChange(matchMode) {
4411
+ var _iconRef$current;
4389
4412
  var filterMatchModeChangeCallback = getColumnProp('onFilterMatchModeChange');
4390
4413
  var filters = _objectSpread$4({}, props.filters);
4391
4414
  filters[field].matchMode = matchMode;
@@ -4396,6 +4419,7 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
4396
4419
  props.onFilterChange(filters);
4397
4420
  props.onFilterApply();
4398
4421
  hide();
4422
+ (_iconRef$current = iconRef.current) === null || _iconRef$current === void 0 || _iconRef$current.focus();
4399
4423
  };
4400
4424
  var onRowMatchModeKeyDown = function onRowMatchModeKeyDown(event, matchMode, clear) {
4401
4425
  var item = event.target;
@@ -5155,16 +5179,21 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
5155
5179
  var align = getColumnProp('alignFrozen');
5156
5180
  if (align === 'right') {
5157
5181
  var right = 0;
5158
- var next = elementRef.current.nextElementSibling;
5182
+ var next = elementRef.current && elementRef.current.nextElementSibling;
5159
5183
  if (next && next.classList.contains('p-frozen-column')) {
5160
5184
  right = utils.DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
5161
5185
  }
5162
5186
  styleObject.right = right + 'px';
5163
5187
  } else {
5164
5188
  var left = 0;
5165
- var prev = elementRef.current.previousElementSibling;
5166
- if (prev && prev.classList.contains('p-frozen-column')) {
5167
- left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
5189
+ var prev = elementRef.current && elementRef.current.previousElementSibling;
5190
+ while (prev) {
5191
+ if (prev && prev.classList.contains('p-frozen-column')) {
5192
+ left = utils.DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
5193
+ elementRef.current.style.left = left + 'px';
5194
+ break;
5195
+ }
5196
+ prev = prev.previousElementSibling;
5168
5197
  }
5169
5198
  styleObject.left = left + 'px';
5170
5199
  }
@@ -6015,6 +6044,20 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
6015
6044
  multiSortMeta: restoredState.multiSortMeta
6016
6045
  }));
6017
6046
  } else {
6047
+ var lastMeta = restoredState.multiSortMeta[restoredState.multiSortMeta.length - 1];
6048
+ var field = lastMeta && lastMeta.field ? lastMeta.field : null;
6049
+ if (field) {
6050
+ var sortColumn = findColumnByKey(getColumns(), field);
6051
+ if (sortColumn) {
6052
+ var sortFunction = getColumnProp(sortColumn, 'sortFunction');
6053
+ var sortable = getColumnProp(sortColumn, 'sortable');
6054
+ if (sortFunction && sortable) {
6055
+ columnSortFunction.current = sortFunction;
6056
+ columnSortable.current = sortable;
6057
+ columnField.current = field;
6058
+ }
6059
+ }
6060
+ }
6018
6061
  setMultiSortMetaState(restoredState.multiSortMeta);
6019
6062
  }
6020
6063
  }
@@ -6913,58 +6956,60 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
6913
6956
  var exportCSV = function exportCSV(options) {
6914
6957
  var data;
6915
6958
  var csv = "\uFEFF";
6916
- var columns = getColumns();
6917
6959
  if (options && options.selectionOnly) {
6918
6960
  data = props.selection || [];
6919
6961
  } else {
6920
6962
  data = [].concat(_toConsumableArray(props.frozenValue || []), _toConsumableArray(processedData() || []));
6921
6963
  }
6922
6964
 
6923
- //headers
6924
- columns.forEach(function (column, i) {
6925
- var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader'), getColumnProp(column, 'exportable')],
6965
+ // First build collection of exportable columns
6966
+ var exportableColumns = getColumns().filter(function (column) {
6967
+ var exportable = getColumnProp(column, 'exportable');
6968
+ var field = getColumnProp(column, 'field');
6969
+
6970
+ // Column must be exportable (or undefined/not set) and have a field defined
6971
+ return exportable !== false && field;
6972
+ });
6973
+
6974
+ // headers
6975
+ exportableColumns.forEach(function (column, i) {
6976
+ var _ref5 = [getColumnProp(column, 'field'), getColumnProp(column, 'header'), getColumnProp(column, 'exportHeader')],
6926
6977
  field = _ref5[0],
6927
6978
  header = _ref5[1],
6928
- exportHeader = _ref5[2],
6929
- exportable = _ref5[3];
6930
- if (exportable && field) {
6931
- var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6932
- csv = csv + ('"' + columnHeader + '"');
6933
- if (i < columns.length - 1) {
6934
- csv = csv + props.csvSeparator;
6935
- }
6979
+ exportHeader = _ref5[2];
6980
+ var columnHeader = String(exportHeader || header || field).replace(/"/g, '""').replace(/\n/g, "\u2028");
6981
+ csv = csv + ('"' + columnHeader + '"');
6982
+ if (i < exportableColumns.length - 1) {
6983
+ csv = csv + props.csvSeparator;
6936
6984
  }
6937
6985
  });
6938
6986
 
6939
- //body
6987
+ // body
6940
6988
  data.forEach(function (record) {
6941
6989
  csv = csv + '\n';
6942
- columns.forEach(function (column, i) {
6943
- var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField'), getColumnProp(column, 'exportable')],
6990
+ exportableColumns.forEach(function (column, i) {
6991
+ var _ref6 = [getColumnProp(column, 'field'), getColumnProp(column, 'exportField')],
6944
6992
  colField = _ref6[0],
6945
- exportField = _ref6[1],
6946
- exportable = _ref6[2];
6993
+ exportField = _ref6[1];
6947
6994
  var field = exportField || colField;
6948
- if (exportable && field) {
6949
- var cellData = utils.ObjectUtils.resolveFieldData(record, field);
6950
- if (cellData != null) {
6951
- if (props.exportFunction) {
6952
- cellData = props.exportFunction({
6953
- data: cellData,
6954
- field: field,
6955
- rowData: record,
6956
- column: column
6957
- });
6958
- } else {
6959
- cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6960
- }
6995
+ var cellData = utils.ObjectUtils.resolveFieldData(record, field);
6996
+ if (cellData != null) {
6997
+ if (props.exportFunction) {
6998
+ cellData = props.exportFunction({
6999
+ data: cellData,
7000
+ field: field,
7001
+ rowData: record,
7002
+ column: column
7003
+ });
6961
7004
  } else {
6962
- cellData = '';
6963
- }
6964
- csv = csv + ('"' + cellData + '"');
6965
- if (i < columns.length - 1) {
6966
- csv = csv + props.csvSeparator;
7005
+ cellData = String(cellData).replace(/"/g, '""').replace(/\n/g, "\u2028");
6967
7006
  }
7007
+ } else {
7008
+ cellData = '';
7009
+ }
7010
+ csv = csv + ('"' + cellData + '"');
7011
+ if (i < exportableColumns.length - 1) {
7012
+ csv = csv + props.csvSeparator;
6968
7013
  }
6969
7014
  });
6970
7015
  });
@@ -7128,6 +7173,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
7128
7173
  },
7129
7174
  getVirtualScroller: function getVirtualScroller() {
7130
7175
  return virtualScrollerRef.current;
7176
+ },
7177
+ getProcessedData: function getProcessedData() {
7178
+ return processedData();
7131
7179
  }
7132
7180
  };
7133
7181
  });
@@ -7229,6 +7277,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
7229
7277
  var frozenBody = utils.ObjectUtils.isNotEmpty(props.frozenValue) && /*#__PURE__*/React__namespace.createElement(TableBody, {
7230
7278
  hostName: "DataTable",
7231
7279
  ref: frozenBodyRef,
7280
+ cellMemo: props.cellMemo,
7281
+ cellMemoProps: props.cellMemoProps,
7282
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7232
7283
  cellClassName: props.cellClassName,
7233
7284
  cellSelection: props.cellSelection,
7234
7285
  checkIcon: props.checkIcon,
@@ -7313,6 +7364,9 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
7313
7364
  var body = /*#__PURE__*/React__namespace.createElement(TableBody, {
7314
7365
  hostName: "DataTable",
7315
7366
  ref: bodyRef,
7367
+ cellMemo: props.cellMemo,
7368
+ cellMemoProps: props.cellMemoProps,
7369
+ cellMemoPropsDepth: props.cellMemoPropsDepth,
7316
7370
  cellClassName: props.cellClassName,
7317
7371
  cellSelection: props.cellSelection,
7318
7372
  checkIcon: props.checkIcon,
@@ -7602,4 +7656,4 @@ this.primereact.datatable = (function (exports, React, PrimeReact$1, componentba
7602
7656
 
7603
7657
  return exports;
7604
7658
 
7605
- })({}, React, primereact.api, primereact.componentbase, primereact.utils, primereact.hooks, primereact.icons.arrowdown, primereact.icons.arrowup, primereact.icons.spinner, primereact.paginator, primereact.virtualscroller, primereact.icons.bars, primereact.icons.check, primereact.icons.chevrondown, primereact.icons.chevronright, primereact.icons.pencil, primereact.icons.times, primereact.overlayservice, primereact.ripple, primereact.tooltip, primereact.button, primereact.csstransition, primereact.dropdown, primereact.icons.filter, primereact.icons.filterslash, primereact.icons.plus, primereact.icons.trash, primereact.inputtext, primereact.portal, primereact.icons.sortalt, primereact.icons.sortamountdown, primereact.icons.sortamountupalt);
7659
+ })({}, React, primereact.api, primereact.componentbase, primereact.utils, primereact.hooks, primereact.icons.arrowdown, primereact.icons.arrowup, primereact.icons.spinner, primereact.paginator, primereact.virtualscroller, primereact.icons.bars, primereact.icons.check, primereact.icons.chevrondown, primereact.icons.chevronright, primereact.icons.pencil, primereact.icons.times, primereact.ripple, primereact.tooltip, primereact.button, primereact.csstransition, primereact.dropdown, primereact.icons.filter, primereact.icons.filterslash, primereact.icons.plus, primereact.icons.trash, primereact.inputtext, primereact.overlayservice, primereact.portal, primereact.icons.sortalt, primereact.icons.sortamountdown, primereact.icons.sortamountupalt);