primereact 10.9.6 → 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 (145) 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.d.ts +4 -0
  8. package/autocomplete/autocomplete.cjs.js +2 -1
  9. package/autocomplete/autocomplete.cjs.min.js +1 -1
  10. package/autocomplete/autocomplete.esm.js +2 -1
  11. package/autocomplete/autocomplete.esm.min.js +1 -1
  12. package/autocomplete/autocomplete.js +2 -1
  13. package/autocomplete/autocomplete.min.js +1 -1
  14. package/calendar/calendar.cjs.js +9 -8
  15. package/calendar/calendar.cjs.min.js +1 -1
  16. package/calendar/calendar.esm.js +9 -8
  17. package/calendar/calendar.esm.min.js +1 -1
  18. package/calendar/calendar.js +9 -8
  19. package/calendar/calendar.min.js +1 -1
  20. package/carousel/carousel.cjs.js +9 -1
  21. package/carousel/carousel.cjs.min.js +1 -1
  22. package/carousel/carousel.esm.js +9 -1
  23. package/carousel/carousel.esm.min.js +1 -1
  24. package/carousel/carousel.js +9 -1
  25. package/carousel/carousel.min.js +1 -1
  26. package/cascadeselect/cascadeselect.cjs.js +2 -1
  27. package/cascadeselect/cascadeselect.cjs.min.js +1 -1
  28. package/cascadeselect/cascadeselect.esm.js +2 -1
  29. package/cascadeselect/cascadeselect.esm.min.js +1 -1
  30. package/cascadeselect/cascadeselect.js +2 -1
  31. package/cascadeselect/cascadeselect.min.js +1 -1
  32. package/colorpicker/colorpicker.cjs.js +2 -1
  33. package/colorpicker/colorpicker.cjs.min.js +1 -1
  34. package/colorpicker/colorpicker.esm.js +2 -1
  35. package/colorpicker/colorpicker.esm.min.js +1 -1
  36. package/colorpicker/colorpicker.js +2 -1
  37. package/colorpicker/colorpicker.min.js +1 -1
  38. package/componentbase/componentbase.cjs.js +1 -1
  39. package/componentbase/componentbase.cjs.min.js +1 -1
  40. package/componentbase/componentbase.esm.js +1 -1
  41. package/componentbase/componentbase.esm.min.js +1 -1
  42. package/componentbase/componentbase.js +1 -1
  43. package/componentbase/componentbase.min.js +1 -1
  44. package/contextmenu/contextmenu.cjs.js +8 -6
  45. package/contextmenu/contextmenu.cjs.min.js +1 -1
  46. package/contextmenu/contextmenu.esm.js +8 -6
  47. package/contextmenu/contextmenu.esm.min.js +1 -1
  48. package/contextmenu/contextmenu.js +8 -6
  49. package/contextmenu/contextmenu.min.js +1 -1
  50. package/core/core.js +35 -23
  51. package/core/core.min.js +5 -5
  52. package/datatable/datatable.cjs.js +65 -39
  53. package/datatable/datatable.cjs.min.js +1 -1
  54. package/datatable/datatable.d.ts +66 -7
  55. package/datatable/datatable.esm.js +65 -39
  56. package/datatable/datatable.esm.min.js +1 -1
  57. package/datatable/datatable.js +66 -40
  58. package/datatable/datatable.min.js +1 -1
  59. package/dialog/dialog.cjs.js +3 -3
  60. package/dialog/dialog.cjs.min.js +1 -1
  61. package/dialog/dialog.esm.js +3 -3
  62. package/dialog/dialog.esm.min.js +1 -1
  63. package/dialog/dialog.js +3 -3
  64. package/dialog/dialog.min.js +1 -1
  65. package/dropdown/dropdown.cjs.js +4 -2
  66. package/dropdown/dropdown.cjs.min.js +1 -1
  67. package/dropdown/dropdown.esm.js +4 -2
  68. package/dropdown/dropdown.esm.min.js +1 -1
  69. package/dropdown/dropdown.js +4 -2
  70. package/dropdown/dropdown.min.js +1 -1
  71. package/inputnumber/inputnumber.cjs.js +5 -1
  72. package/inputnumber/inputnumber.cjs.min.js +1 -1
  73. package/inputnumber/inputnumber.esm.js +5 -1
  74. package/inputnumber/inputnumber.esm.min.js +1 -1
  75. package/inputnumber/inputnumber.js +5 -1
  76. package/inputnumber/inputnumber.min.js +1 -1
  77. package/inputotp/inputotp.cjs.js +11 -7
  78. package/inputotp/inputotp.cjs.min.js +1 -1
  79. package/inputotp/inputotp.esm.js +11 -7
  80. package/inputotp/inputotp.esm.min.js +1 -1
  81. package/inputotp/inputotp.js +11 -7
  82. package/inputotp/inputotp.min.js +1 -1
  83. package/megamenu/megamenu.cjs.js +19 -12
  84. package/megamenu/megamenu.cjs.min.js +1 -1
  85. package/megamenu/megamenu.esm.js +19 -12
  86. package/megamenu/megamenu.esm.min.js +1 -1
  87. package/megamenu/megamenu.js +19 -12
  88. package/megamenu/megamenu.min.js +1 -1
  89. package/mention/mention.cjs.js +3 -2
  90. package/mention/mention.cjs.min.js +1 -1
  91. package/mention/mention.esm.js +3 -2
  92. package/mention/mention.esm.min.js +1 -1
  93. package/mention/mention.js +3 -2
  94. package/mention/mention.min.js +1 -1
  95. package/menubar/menubar.cjs.js +8 -3
  96. package/menubar/menubar.cjs.min.js +1 -1
  97. package/menubar/menubar.esm.js +8 -3
  98. package/menubar/menubar.esm.min.js +1 -1
  99. package/menubar/menubar.js +8 -3
  100. package/menubar/menubar.min.js +1 -1
  101. package/multiselect/multiselect.cjs.js +3 -1
  102. package/multiselect/multiselect.cjs.min.js +1 -1
  103. package/multiselect/multiselect.esm.js +3 -1
  104. package/multiselect/multiselect.esm.min.js +1 -1
  105. package/multiselect/multiselect.js +3 -1
  106. package/multiselect/multiselect.min.js +1 -1
  107. package/multistatecheckbox/multistatecheckbox.d.ts +10 -0
  108. package/package.json +1 -1
  109. package/primereact.all.cjs.js +187 -111
  110. package/primereact.all.cjs.min.js +1 -1
  111. package/primereact.all.esm.js +187 -111
  112. package/primereact.all.esm.min.js +1 -1
  113. package/primereact.all.js +187 -111
  114. package/primereact.all.min.js +1 -1
  115. package/slidemenu/slidemenu.cjs.js +6 -4
  116. package/slidemenu/slidemenu.cjs.min.js +1 -1
  117. package/slidemenu/slidemenu.esm.js +6 -4
  118. package/slidemenu/slidemenu.esm.min.js +1 -1
  119. package/slidemenu/slidemenu.js +6 -4
  120. package/slidemenu/slidemenu.min.js +1 -1
  121. package/splitbutton/splitbutton.cjs.js +11 -5
  122. package/splitbutton/splitbutton.cjs.min.js +1 -1
  123. package/splitbutton/splitbutton.esm.js +11 -5
  124. package/splitbutton/splitbutton.esm.min.js +1 -1
  125. package/splitbutton/splitbutton.js +11 -5
  126. package/splitbutton/splitbutton.min.js +1 -1
  127. package/tieredmenu/tieredmenu.cjs.js +9 -4
  128. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  129. package/tieredmenu/tieredmenu.esm.js +9 -4
  130. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  131. package/tieredmenu/tieredmenu.js +9 -4
  132. package/tieredmenu/tieredmenu.min.js +1 -1
  133. package/togglebutton/togglebutton.cjs.js +3 -3
  134. package/togglebutton/togglebutton.cjs.min.js +1 -1
  135. package/togglebutton/togglebutton.esm.js +3 -3
  136. package/togglebutton/togglebutton.esm.min.js +1 -1
  137. package/togglebutton/togglebutton.js +3 -3
  138. package/togglebutton/togglebutton.min.js +1 -1
  139. package/tree/tree.cjs.js +22 -16
  140. package/tree/tree.cjs.min.js +1 -1
  141. package/tree/tree.esm.js +22 -16
  142. package/tree/tree.esm.min.js +1 -1
  143. package/tree/tree.js +22 -16
  144. package/tree/tree.min.js +1 -1
  145. package/web-types.json +19 -1
@@ -363,11 +363,11 @@ interface DataTableSelectionSingleChangeEvent<TValue extends DataTableValueArray
363
363
  }
364
364
 
365
365
  /**
366
- * Custom cell selection change event.
366
+ * Custom cell single selection change event.
367
367
  * @see {@link DataTableProps.onSelectionChange}
368
368
  * @event
369
369
  */
370
- interface DataTableSelectionCellChangeEvent<TValue extends DataTableValueArray> {
370
+ interface DataTableSelectionCellSingleChangeEvent<TValue extends DataTableValueArray> {
371
371
  /**
372
372
  * Browser event.
373
373
  */
@@ -386,6 +386,30 @@ interface DataTableSelectionCellChangeEvent<TValue extends DataTableValueArray>
386
386
  [key: string]: any;
387
387
  }
388
388
 
389
+ /**
390
+ * Custom cell multiple selection change event.
391
+ * @see {@link DataTableProps.onSelectionChange}
392
+ * @event
393
+ */
394
+ interface DataTableSelectionCellMultipleChangeEvent<TValue extends DataTableValueArray> {
395
+ /**
396
+ * Browser event.
397
+ */
398
+ originalEvent: React.SyntheticEvent;
399
+ /**
400
+ * Selection objects.
401
+ */
402
+ value: Array<DataTableCellSelection<TValue>>;
403
+ /**
404
+ * Type of the selection.
405
+ */
406
+ type?: 'cell';
407
+ /**
408
+ * Extra options.
409
+ */
410
+ [key: string]: any;
411
+ }
412
+
389
413
  /**
390
414
  * Custom select all change event.
391
415
  * @see {@link DataTableProps.onSelectAllChange}
@@ -1851,7 +1875,7 @@ interface DataTablePropsMultiple<TValue extends DataTableValueArray> extends Dat
1851
1875
  * Defines valid properties in DataTable component. In addition to these, all properties of HTMLDivElement can be used in this component.
1852
1876
  * @group Properties
1853
1877
  */
1854
- interface DataTablePropsCell<TValue extends DataTableValueArray> extends DataTableBaseProps<TValue> {
1878
+ interface DataTablePropsCellSingle<TValue extends DataTableValueArray> extends DataTableBaseProps<TValue> {
1855
1879
  /**
1856
1880
  * Whether to cell selection is enabled or not.
1857
1881
  * @defaultValue false
@@ -1860,7 +1884,7 @@ interface DataTablePropsCell<TValue extends DataTableValueArray> extends DataTab
1860
1884
  /**
1861
1885
  * Specifies the selection mode, valid values are "single", "multiple", "radiobutton" and "checkbox".
1862
1886
  */
1863
- selectionMode: 'single' | 'multiple';
1887
+ selectionMode: 'single';
1864
1888
  /**
1865
1889
  * Selected cells.
1866
1890
  */
@@ -1872,16 +1896,46 @@ interface DataTablePropsCell<TValue extends DataTableValueArray> extends DataTab
1872
1896
  onContextMenuSelectionChange?(event: DataTableContextMenuMultipleSelectionChangeEvent<TValue>): void;
1873
1897
  /**
1874
1898
  * Callback to invoke when selection changes.
1875
- * @param {DataTableSelectionCellChangeEvent<TValue>} event - Custom selection change event.
1899
+ * @param {DataTableSelectionCellSingleChangeEvent<TValue>} event - Custom selection change event.
1900
+ */
1901
+ onSelectionChange?(event: DataTableSelectionCellSingleChangeEvent<TValue>): void;
1902
+ }
1903
+
1904
+ /**
1905
+ * Defines valid properties in DataTable component. In addition to these, all properties of HTMLDivElement can be used in this component.
1906
+ * @group Properties
1907
+ */
1908
+ interface DataTablePropsCellMultiple<TValue extends DataTableValueArray> extends DataTableBaseProps<TValue> {
1909
+ /**
1910
+ * Whether to cell selection is enabled or not.
1911
+ * @defaultValue false
1912
+ */
1913
+ cellSelection: true;
1914
+ /**
1915
+ * Specifies the selection mode, valid values are "single", "multiple", "radiobutton" and "checkbox".
1916
+ */
1917
+ selectionMode: 'multiple';
1918
+ /**
1919
+ * Selected cells.
1920
+ */
1921
+ selection: Array<DataTableCellSelection<TValue>> | null;
1922
+ /**
1923
+ * Callback to invoke when a row selected with right click.
1924
+ * @param {DataTableRowEvent} event - Custom row event.
1925
+ */
1926
+ onContextMenuSelectionChange?(event: DataTableContextMenuMultipleSelectionChangeEvent<TValue>): void;
1927
+ /**
1928
+ * Callback to invoke when selection changes.
1929
+ * @param {DataTableSelectionCellMultipleChangeEvent<TValue>} event - Custom selection change event.
1876
1930
  */
1877
- onSelectionChange?(event: DataTableSelectionCellChangeEvent<TValue>): void;
1931
+ onSelectionChange?(event: DataTableSelectionCellMultipleChangeEvent<TValue>): void;
1878
1932
  }
1879
1933
 
1880
1934
  /**
1881
1935
  * Defines valid properties in DataTable component. In addition to these, all properties of HTMLDivElement can be used in this component.
1882
1936
  * @group Properties
1883
1937
  */
1884
- export type DataTableProps<TValue extends DataTableValueArray> = DataTablePropsSingle<TValue> | DataTablePropsCell<TValue> | DataTablePropsMultiple<TValue>;
1938
+ export type DataTableProps<TValue extends DataTableValueArray> = DataTablePropsSingle<TValue> | DataTablePropsCellSingle<TValue> | DataTablePropsMultiple<TValue> | DataTablePropsCellMultiple<TValue>;
1885
1939
 
1886
1940
  /**
1887
1941
  * **PrimeReact - DataTable<TValue**
@@ -2007,4 +2061,9 @@ export declare class DataTable<TValue extends DataTableValueArray> extends React
2007
2061
  * @return {VirtualScroller | null} Virtual scroller instance
2008
2062
  */
2009
2063
  public getVirtualScroller(): VirtualScroller | null;
2064
+ /**
2065
+ * Used to get the processed data.
2066
+ * @return {TValue} sorted and filtered data
2067
+ */
2068
+ public getProcessedData(): TValue;
2010
2069
  }
@@ -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, isOutsideClicked);
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
  }
@@ -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,6 +1761,7 @@ 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
  });
@@ -2246,8 +2245,13 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2246
2245
  } else {
2247
2246
  var left = 0;
2248
2247
  var prev = elementRef.current && elementRef.current.previousElementSibling;
2249
- if (prev && prev.classList.contains('p-frozen-column')) {
2250
- left = DomHandler.getOuterWidth(prev) + parseFloat(prev.style.left || 0);
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;
2251
2255
  }
2252
2256
  styleObject.left = left + 'px';
2253
2257
  }
@@ -2255,9 +2259,8 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2255
2259
  !isSameStyle && setStyleObjectState(styleObject);
2256
2260
  }
2257
2261
  }, []);
2258
- var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, selfClick, column, bindDocumentClickListener, overlayEventListener, isOutsideClicked) {
2262
+ var onCellClick = function onCellClick(event, params, isEditable, editingState, setEditingState, column, bindDocumentClickListener) {
2259
2263
  if (props.editMode !== 'row' && isEditable && !editingState && (props.selectOnEdit || !props.selectOnEdit && props.isRowSelected)) {
2260
- selfClick.current = true;
2261
2264
  var onBeforeCellEditShow = getColumnProp(column, 'onBeforeCellEditShow');
2262
2265
  var onCellEditInit = getColumnProp(column, 'onCellEditInit');
2263
2266
  var cellEditValidatorEvent = getColumnProp(column, 'cellEditValidatorEvent');
@@ -2288,12 +2291,6 @@ var BodyRow = /*#__PURE__*/React.memo(function (props) {
2288
2291
  }
2289
2292
  if (cellEditValidatorEvent === 'click') {
2290
2293
  bindDocumentClickListener();
2291
- overlayEventListener.current = function (e) {
2292
- if (!isOutsideClicked(e.target)) {
2293
- selfClick.current = true;
2294
- }
2295
- };
2296
- OverlayService.on('overlay-click', overlayEventListener.current);
2297
2294
  }
2298
2295
  }, 1);
2299
2296
  }
@@ -3653,16 +3650,21 @@ var FooterCell = /*#__PURE__*/React.memo(function (props) {
3653
3650
  var _align = getColumnProp('alignFrozen');
3654
3651
  if (_align === 'right') {
3655
3652
  var right = 0;
3656
- var next = elementRef.current.nextElementSibling;
3653
+ var next = elementRef.current && elementRef.current.nextElementSibling;
3657
3654
  if (next && next.classList.contains('p-frozen-column')) {
3658
3655
  right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
3659
3656
  }
3660
3657
  styleObject.right = right + 'px';
3661
3658
  } else {
3662
3659
  var left = 0;
3663
- var prev = elementRef.current.previousElementSibling;
3664
- if (prev && prev.classList.contains('p-frozen-column')) {
3665
- 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;
3666
3668
  }
3667
3669
  styleObject.left = left + 'px';
3668
3670
  }
@@ -4345,7 +4347,7 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4345
4347
  };
4346
4348
  } else {
4347
4349
  filters[field].value = null;
4348
- filters[field].matchMode = defaultConstraint.matchMode;
4350
+ filters[field].matchMode = defaultConstraint ? defaultConstraint.matchMode : filters[field].matchMode;
4349
4351
  }
4350
4352
  filterClearCallback && filterClearCallback();
4351
4353
  props.onFilterChange(filters);
@@ -4412,6 +4414,7 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4412
4414
  }
4413
4415
  };
4414
4416
  var onRowMatchModeChange = function onRowMatchModeChange(matchMode) {
4417
+ var _iconRef$current;
4415
4418
  var filterMatchModeChangeCallback = getColumnProp('onFilterMatchModeChange');
4416
4419
  var filters = _objectSpread$4({}, props.filters);
4417
4420
  filters[field].matchMode = matchMode;
@@ -4422,6 +4425,7 @@ var ColumnFilter = /*#__PURE__*/React.memo(function (props) {
4422
4425
  props.onFilterChange(filters);
4423
4426
  props.onFilterApply();
4424
4427
  hide();
4428
+ (_iconRef$current = iconRef.current) === null || _iconRef$current === void 0 || _iconRef$current.focus();
4425
4429
  };
4426
4430
  var onRowMatchModeKeyDown = function onRowMatchModeKeyDown(event, matchMode, clear) {
4427
4431
  var item = event.target;
@@ -5181,16 +5185,21 @@ var HeaderCell = /*#__PURE__*/React.memo(function (props) {
5181
5185
  var align = getColumnProp('alignFrozen');
5182
5186
  if (align === 'right') {
5183
5187
  var right = 0;
5184
- var next = elementRef.current.nextElementSibling;
5188
+ var next = elementRef.current && elementRef.current.nextElementSibling;
5185
5189
  if (next && next.classList.contains('p-frozen-column')) {
5186
5190
  right = DomHandler.getOuterWidth(next) + parseFloat(next.style.right || 0);
5187
5191
  }
5188
5192
  styleObject.right = right + 'px';
5189
5193
  } else {
5190
5194
  var left = 0;
5191
- var prev = elementRef.current.previousElementSibling;
5192
- if (prev && prev.classList.contains('p-frozen-column')) {
5193
- 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;
5194
5203
  }
5195
5204
  styleObject.left = left + 'px';
5196
5205
  }
@@ -6041,6 +6050,20 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
6041
6050
  multiSortMeta: restoredState.multiSortMeta
6042
6051
  }));
6043
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
+ }
6044
6067
  setMultiSortMetaState(restoredState.multiSortMeta);
6045
6068
  }
6046
6069
  }
@@ -7156,6 +7179,9 @@ var DataTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
7156
7179
  },
7157
7180
  getVirtualScroller: function getVirtualScroller() {
7158
7181
  return virtualScrollerRef.current;
7182
+ },
7183
+ getProcessedData: function getProcessedData() {
7184
+ return processedData();
7159
7185
  }
7160
7186
  };
7161
7187
  });