primereact 10.3.2 → 10.4.0

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 (161) hide show
  1. package/accordion/accordion.cjs.js +1 -1
  2. package/accordion/accordion.cjs.min.js +1 -1
  3. package/accordion/accordion.esm.js +1 -1
  4. package/accordion/accordion.esm.min.js +1 -1
  5. package/accordion/accordion.js +1 -1
  6. package/accordion/accordion.min.js +1 -1
  7. package/api/api.cjs.js +20 -0
  8. package/api/api.cjs.min.js +1 -1
  9. package/api/api.d.ts +5 -1
  10. package/api/api.esm.js +20 -0
  11. package/api/api.esm.min.js +1 -1
  12. package/api/api.js +20 -0
  13. package/api/api.min.js +1 -1
  14. package/calendar/calendar.cjs.js +509 -150
  15. package/calendar/calendar.cjs.min.js +1 -1
  16. package/calendar/calendar.d.ts +4 -0
  17. package/calendar/calendar.esm.js +510 -151
  18. package/calendar/calendar.esm.min.js +1 -1
  19. package/calendar/calendar.js +509 -150
  20. package/calendar/calendar.min.js +1 -1
  21. package/carousel/carousel.cjs.js +1 -0
  22. package/carousel/carousel.cjs.min.js +1 -1
  23. package/carousel/carousel.esm.js +1 -0
  24. package/carousel/carousel.esm.min.js +1 -1
  25. package/carousel/carousel.js +1 -0
  26. package/carousel/carousel.min.js +1 -1
  27. package/chips/chips.cjs.js +2 -1
  28. package/chips/chips.cjs.min.js +1 -1
  29. package/chips/chips.esm.js +2 -1
  30. package/chips/chips.esm.min.js +1 -1
  31. package/chips/chips.js +2 -1
  32. package/chips/chips.min.js +1 -1
  33. package/contextmenu/contextmenu.cjs.js +4 -4
  34. package/contextmenu/contextmenu.cjs.min.js +1 -1
  35. package/contextmenu/contextmenu.esm.js +4 -4
  36. package/contextmenu/contextmenu.esm.min.js +1 -1
  37. package/contextmenu/contextmenu.js +4 -4
  38. package/contextmenu/contextmenu.min.js +1 -1
  39. package/core/core.js +93 -40
  40. package/core/core.min.js +4 -4
  41. package/datatable/datatable.cjs.js +577 -150
  42. package/datatable/datatable.cjs.min.js +1 -1
  43. package/datatable/datatable.esm.js +573 -146
  44. package/datatable/datatable.esm.min.js +1 -1
  45. package/datatable/datatable.js +577 -150
  46. package/datatable/datatable.min.js +1 -1
  47. package/dataview/dataview.cjs.js +27 -25
  48. package/dataview/dataview.cjs.min.js +1 -1
  49. package/dataview/dataview.d.ts +7 -1
  50. package/dataview/dataview.esm.js +27 -25
  51. package/dataview/dataview.esm.min.js +1 -1
  52. package/dataview/dataview.js +27 -25
  53. package/dataview/dataview.min.js +1 -1
  54. package/divider/divider.cjs.js +2 -2
  55. package/divider/divider.cjs.min.js +1 -1
  56. package/divider/divider.esm.js +2 -2
  57. package/divider/divider.esm.min.js +1 -1
  58. package/divider/divider.js +2 -2
  59. package/divider/divider.min.js +1 -1
  60. package/dropdown/dropdown.cjs.js +20 -25
  61. package/dropdown/dropdown.cjs.min.js +1 -1
  62. package/dropdown/dropdown.d.ts +9 -0
  63. package/dropdown/dropdown.esm.js +20 -25
  64. package/dropdown/dropdown.esm.min.js +1 -1
  65. package/dropdown/dropdown.js +20 -25
  66. package/dropdown/dropdown.min.js +1 -1
  67. package/editor/editor.cjs.js +1 -1
  68. package/editor/editor.cjs.min.js +1 -1
  69. package/editor/editor.esm.js +1 -1
  70. package/editor/editor.esm.min.js +1 -1
  71. package/editor/editor.js +1 -1
  72. package/editor/editor.min.js +1 -1
  73. package/focustrap/focustrap.cjs.js +168 -0
  74. package/focustrap/focustrap.cjs.min.js +1 -0
  75. package/focustrap/focustrap.esm.js +159 -0
  76. package/focustrap/focustrap.esm.min.js +1 -0
  77. package/focustrap/focustrap.js +167 -0
  78. package/focustrap/focustrap.min.js +1 -0
  79. package/focustrap/package.json +7 -0
  80. package/galleria/galleria.cjs.js +26 -24
  81. package/galleria/galleria.cjs.min.js +1 -1
  82. package/galleria/galleria.esm.js +26 -24
  83. package/galleria/galleria.esm.min.js +1 -1
  84. package/galleria/galleria.js +26 -24
  85. package/galleria/galleria.min.js +1 -1
  86. package/hooks/hooks.d.ts +1 -1
  87. package/menubar/menubar.cjs.js +7 -4
  88. package/menubar/menubar.cjs.min.js +1 -1
  89. package/menubar/menubar.esm.js +7 -4
  90. package/menubar/menubar.esm.min.js +1 -1
  91. package/menubar/menubar.js +7 -4
  92. package/menubar/menubar.min.js +1 -1
  93. package/package.json +1 -1
  94. package/paginator/paginator.cjs.js +20 -0
  95. package/paginator/paginator.cjs.min.js +1 -1
  96. package/paginator/paginator.esm.js +20 -0
  97. package/paginator/paginator.esm.min.js +1 -1
  98. package/paginator/paginator.js +20 -0
  99. package/paginator/paginator.min.js +1 -1
  100. package/panelmenu/panelmenu.cjs.js +32 -21
  101. package/panelmenu/panelmenu.cjs.min.js +1 -1
  102. package/panelmenu/panelmenu.esm.js +32 -21
  103. package/panelmenu/panelmenu.esm.min.js +1 -1
  104. package/panelmenu/panelmenu.js +32 -21
  105. package/panelmenu/panelmenu.min.js +1 -1
  106. package/picklist/picklist.cjs.js +20 -0
  107. package/picklist/picklist.cjs.min.js +1 -1
  108. package/picklist/picklist.esm.js +20 -0
  109. package/picklist/picklist.esm.min.js +1 -1
  110. package/picklist/picklist.js +20 -0
  111. package/picklist/picklist.min.js +1 -1
  112. package/primereact.all.cjs.js +1499 -725
  113. package/primereact.all.cjs.min.js +1 -1
  114. package/primereact.all.esm.js +1499 -725
  115. package/primereact.all.esm.min.js +1 -1
  116. package/primereact.all.js +1499 -725
  117. package/primereact.all.min.js +1 -1
  118. package/sidebar/sidebar.cjs.js +18 -16
  119. package/sidebar/sidebar.cjs.min.js +1 -1
  120. package/sidebar/sidebar.esm.js +18 -16
  121. package/sidebar/sidebar.esm.min.js +1 -1
  122. package/sidebar/sidebar.js +18 -16
  123. package/sidebar/sidebar.min.js +1 -1
  124. package/splitbutton/splitbutton.cjs.js +8 -7
  125. package/splitbutton/splitbutton.cjs.min.js +1 -1
  126. package/splitbutton/splitbutton.esm.js +8 -7
  127. package/splitbutton/splitbutton.esm.min.js +1 -1
  128. package/splitbutton/splitbutton.js +8 -7
  129. package/splitbutton/splitbutton.min.js +1 -1
  130. package/splitter/splitter.cjs.js +57 -12
  131. package/splitter/splitter.cjs.min.js +1 -1
  132. package/splitter/splitter.d.ts +13 -1
  133. package/splitter/splitter.esm.js +59 -14
  134. package/splitter/splitter.esm.min.js +1 -1
  135. package/splitter/splitter.js +57 -12
  136. package/splitter/splitter.min.js +1 -1
  137. package/tieredmenu/tieredmenu.cjs.js +8 -7
  138. package/tieredmenu/tieredmenu.cjs.min.js +1 -1
  139. package/tieredmenu/tieredmenu.esm.js +8 -7
  140. package/tieredmenu/tieredmenu.esm.min.js +1 -1
  141. package/tieredmenu/tieredmenu.js +8 -7
  142. package/tieredmenu/tieredmenu.min.js +1 -1
  143. package/toast/toast.cjs.js +20 -0
  144. package/toast/toast.cjs.min.js +1 -1
  145. package/toast/toast.esm.js +20 -0
  146. package/toast/toast.esm.min.js +1 -1
  147. package/toast/toast.js +20 -0
  148. package/toast/toast.min.js +1 -1
  149. package/tree/tree.cjs.js +33 -15
  150. package/tree/tree.cjs.min.js +1 -1
  151. package/tree/tree.esm.js +34 -16
  152. package/tree/tree.esm.min.js +1 -1
  153. package/tree/tree.js +33 -15
  154. package/tree/tree.min.js +1 -1
  155. package/treetable/treetable.cjs.js +205 -68
  156. package/treetable/treetable.cjs.min.js +1 -1
  157. package/treetable/treetable.esm.js +206 -69
  158. package/treetable/treetable.esm.min.js +1 -1
  159. package/treetable/treetable.js +205 -68
  160. package/treetable/treetable.min.js +1 -1
  161. package/web-types.json +34 -1
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import PrimeReact, { FilterMatchMode, ariaLabel, localeOption, PrimeReactContext, FilterService } from 'primereact/api';
4
4
  import { ComponentBase, useHandleStyle } from 'primereact/componentbase';
5
5
  import { ObjectUtils, classNames, DomHandler, IconUtils } from 'primereact/utils';
6
- import { useMergeProps, useEventListener, useUnmountEffect, useMountEffect } from 'primereact/hooks';
6
+ import { useMergeProps, useEventListener, useUnmountEffect, useMountEffect, useUpdateEffect } from 'primereact/hooks';
7
7
  import { ArrowDownIcon } from 'primereact/icons/arrowdown';
8
8
  import { ArrowUpIcon } from 'primereact/icons/arrowup';
9
9
  import { SpinnerIcon } from 'primereact/icons/spinner';
@@ -654,6 +654,7 @@ var TreeTableBodyCell = function TreeTableBodyCell(props) {
654
654
  var align = getColumnProp('align');
655
655
  /* eslint-enable */
656
656
  var bodyCellProps = mergeProps({
657
+ role: 'cell',
657
658
  className: classNames(bodyClassName || props.className, cx('bodyCell', {
658
659
  bodyProps: props,
659
660
  editingState: editingState,
@@ -749,11 +750,13 @@ var TreeTableRow = /*#__PURE__*/React.memo(function (props) {
749
750
  event.stopPropagation();
750
751
  };
751
752
  var expand = function expand(event) {
753
+ var navigateFocusToChild = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
752
754
  var expandedKeys = props.expandedKeys ? _objectSpread$4({}, props.expandedKeys) : {};
753
755
  expandedKeys[props.node.key] = true;
754
756
  props.onToggle({
755
757
  originalEvent: event,
756
- value: expandedKeys
758
+ value: expandedKeys,
759
+ navigateFocusToChild: navigateFocusToChild
757
760
  });
758
761
  invokeToggleEvents(event, true);
759
762
  };
@@ -934,49 +937,147 @@ var TreeTableRow = /*#__PURE__*/React.memo(function (props) {
934
937
  });
935
938
  }
936
939
  };
937
- var _onKeyDown = function onKeyDown(event) {
938
- if (event.target === elementRef.current) {
939
- var rowElement = event.currentTarget;
940
- switch (event.which) {
941
- //down arrow
942
- case 40:
943
- var nextRow = rowElement.nextElementSibling;
944
- if (nextRow) {
945
- nextRow.focus();
946
- }
947
- event.preventDefault();
948
- break;
940
+ var _onKeyDown = function onKeyDown(event, item) {
941
+ switch (event.code) {
942
+ case 'ArrowDown':
943
+ onArrowDownKey(event);
944
+ break;
945
+ case 'ArrowUp':
946
+ onArrowUpKey(event);
947
+ break;
948
+ case 'ArrowLeft':
949
+ onArrowLeftKey(event);
950
+ break;
951
+ case 'ArrowRight':
952
+ onArrowRightKey(event);
953
+ break;
954
+ case 'Home':
955
+ onHomeKey(event);
956
+ break;
957
+ case 'End':
958
+ onEndKey(event);
959
+ break;
960
+ case 'Enter':
961
+ case 'NumpadEnter':
962
+ case 'Space':
963
+ if (!DomHandler.isClickable(event.target)) {
964
+ onEnterKey(event);
965
+ }
966
+ break;
967
+ case 'Tab':
968
+ onTabKey();
969
+ break;
970
+ }
971
+ };
972
+ var onArrowDownKey = function onArrowDownKey(event) {
973
+ var nextElementSibling = event.currentTarget.nextElementSibling;
974
+ nextElementSibling && focusRowChange(event.currentTarget, nextElementSibling);
975
+ event.preventDefault();
976
+ };
977
+ var onArrowUpKey = function onArrowUpKey(event) {
978
+ var previousElementSibling = event.currentTarget.previousElementSibling;
979
+ previousElementSibling && focusRowChange(event.currentTarget, previousElementSibling);
980
+ event.preventDefault();
981
+ };
982
+ var onArrowRightKey = function onArrowRightKey(event) {
983
+ var ishiddenIcon = DomHandler.findSingle(event.currentTarget, 'button').style.visibility === 'hidden';
984
+ DomHandler.findSingle(elementRef.current, '[data-pc-section="rowtoggler"]');
985
+ if (ishiddenIcon) return;
949
986
 
950
- //up arrow
951
- case 38:
952
- var previousRow = rowElement.previousElementSibling;
953
- if (previousRow) {
954
- previousRow.focus();
955
- }
956
- event.preventDefault();
957
- break;
987
+ // !expanded && togglerElement.click();
988
+ !expanded && expand(event, true);
958
989
 
959
- //right arrow
960
- case 39:
961
- if (!expanded) {
962
- expand(event);
963
- }
964
- event.preventDefault();
965
- break;
990
+ // this.$nextTick(() => {
991
+ // this.onArrowDownKey(event);
992
+ // });
966
993
 
967
- //left arrow
968
- case 37:
969
- if (expanded) {
970
- collapse(event);
971
- }
972
- event.preventDefault();
973
- break;
994
+ event.preventDefault();
995
+ };
996
+ var onArrowLeftKey = function onArrowLeftKey(event) {
997
+ if (props.level === 0 && !expanded) {
998
+ return;
999
+ }
1000
+ var currentTarget = event.currentTarget;
1001
+ var ishiddenIcon = DomHandler.findSingle(currentTarget, 'button').style.visibility === 'hidden';
1002
+ DomHandler.findSingle(currentTarget, '[data-pc-section="rowtoggler"]');
1003
+ if (expanded && !ishiddenIcon) {
1004
+ // togglerElement.click();
1005
+ collapse(event);
1006
+ return;
1007
+ }
1008
+ var target = findBeforeClickableNode(currentTarget);
1009
+ target && focusRowChange(currentTarget, target);
1010
+ };
1011
+ var onHomeKey = function onHomeKey(event) {
1012
+ var findFirstElement = DomHandler.findSingle(event.currentTarget.parentElement, "tr[aria-level=\"".concat(props.level + 1, "\"]"));
1013
+ findFirstElement && DomHandler.focus(findFirstElement);
1014
+ event.preventDefault();
1015
+ };
1016
+ var onEndKey = function onEndKey(event) {
1017
+ var nodes = DomHandler.find(event.currentTarget.parentElement, "tr[aria-level=\"".concat(props.level + 1, "\"]"));
1018
+ var findFirstElement = nodes[nodes.length - 1];
1019
+ DomHandler.focus(findFirstElement);
1020
+ event.preventDefault();
1021
+ };
1022
+ var onEnterKey = function onEnterKey(event) {
1023
+ event.preventDefault();
1024
+ setTabIndexForSelectionMode(event, nodeTouched.current);
1025
+ if (props.selectionMode === 'checkbox') {
1026
+ // this.toggleCheckbox();
1027
+ onCheckboxChange(event);
1028
+ return;
1029
+ }
1030
+
1031
+ // this.$emit('node-click', {
1032
+ // originalEvent: event,
1033
+ // nodeTouched: nodeTouched.current,
1034
+ // node: this.node
1035
+ // });
974
1036
 
975
- //enter
976
- case 13:
977
- _onClick(event);
978
- event.preventDefault();
979
- break;
1037
+ props.onRowClick(event, props.node);
1038
+ nodeTouched.current = false;
1039
+ };
1040
+ var onTabKey = function onTabKey() {
1041
+ var rows = _toConsumableArray(DomHandler.find(elementRef.current.parentElement, 'tr'));
1042
+ var hasSelectedRow = rows.some(function (row) {
1043
+ return DomHandler.getAttribute(row, 'data-p-highlight') || row.getAttribute('aria-checked') === 'true';
1044
+ });
1045
+ rows.forEach(function (row) {
1046
+ row.tabIndex = -1;
1047
+ });
1048
+ if (hasSelectedRow) {
1049
+ var selectedNodes = rows.filter(function (node) {
1050
+ return DomHandler.getAttribute(node, 'data-p-highlight') || node.getAttribute('aria-checked') === 'true';
1051
+ });
1052
+ selectedNodes[0].tabIndex = 0;
1053
+ return;
1054
+ }
1055
+ rows[0].tabIndex = 0;
1056
+ };
1057
+ var focusRowChange = function focusRowChange(firstFocusableRow, currentFocusedRow) {
1058
+ firstFocusableRow.tabIndex = '-1';
1059
+ currentFocusedRow.tabIndex = '0';
1060
+ DomHandler.focus(currentFocusedRow);
1061
+ };
1062
+ var findBeforeClickableNode = function findBeforeClickableNode(node) {
1063
+ var prevNode = node.previousElementSibling;
1064
+ if (prevNode) {
1065
+ var prevNodeButton = prevNode.querySelector('button');
1066
+ if (prevNodeButton && prevNodeButton.style.visibility !== 'hidden') {
1067
+ return prevNode;
1068
+ }
1069
+ return findBeforeClickableNode(prevNode);
1070
+ }
1071
+ return null;
1072
+ };
1073
+ var setTabIndexForSelectionMode = function setTabIndexForSelectionMode(event, nodeTouched) {
1074
+ if (props.selectionMode !== null) {
1075
+ var elements = _toConsumableArray(DomHandler.find(elementRef.current.parentElement, 'tr'));
1076
+ event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;
1077
+ if (elements.every(function (element) {
1078
+ return element.tabIndex === -1;
1079
+ })) {
1080
+ elements[0].tabIndex = 0;
980
1081
  }
981
1082
  }
982
1083
  };
@@ -1161,6 +1262,12 @@ var TreeTableRow = /*#__PURE__*/React.memo(function (props) {
1161
1262
  var rowProps = mergeProps({
1162
1263
  tabIndex: 0,
1163
1264
  className: className,
1265
+ 'aria-expanded': expanded,
1266
+ 'aria-level': props.level + 1,
1267
+ 'aria-posinset': props.ariaPosInSet,
1268
+ 'aria-setsize': props.ariaSetSize,
1269
+ 'aria-checked': isChecked(),
1270
+ 'aria-selected': isSelected(),
1164
1271
  style: props.node.style,
1165
1272
  onClick: function onClick(e) {
1166
1273
  return _onClick(e);
@@ -1352,6 +1459,8 @@ var TreeTableBody = /*#__PURE__*/React.memo(function (props) {
1352
1459
  key: "".concat(node.key || JSON.stringify(node.data), "_").concat(index),
1353
1460
  level: 0,
1354
1461
  rowIndex: index,
1462
+ ariaSetSize: props.value.length,
1463
+ ariaPosInSet: index + 1,
1355
1464
  selectOnEdit: props.selectOnEdit,
1356
1465
  node: node,
1357
1466
  originalOptions: props.originalOptions,
@@ -1415,6 +1524,7 @@ var TreeTableBody = /*#__PURE__*/React.memo(function (props) {
1415
1524
  };
1416
1525
  var content = props.value && props.value.length ? createRows() : createEmptyMessage();
1417
1526
  var tbodyProps = mergeProps({
1527
+ role: 'rowgroup',
1418
1528
  className: cx('tbody')
1419
1529
  }, getPTOptions('tbody'));
1420
1530
  return /*#__PURE__*/React.createElement("tbody", tbodyProps, content);
@@ -1486,7 +1596,8 @@ var TreeTableFooter = /*#__PURE__*/React.memo(function (props) {
1486
1596
  var rowColumns = React.Children.toArray(RowBase.getCProp(row, 'children'));
1487
1597
  var rowFooterCells = rowColumns.map(createFooterCell);
1488
1598
  var footerRowProps = mergeProps(ptm('footerRow', {
1489
- hostName: props.hostName
1599
+ hostName: props.hostName,
1600
+ role: 'row'
1490
1601
  }));
1491
1602
  return /*#__PURE__*/React.createElement("tr", _extends({}, footerRowProps, {
1492
1603
  key: index
@@ -1515,6 +1626,7 @@ var TreeTableFooter = /*#__PURE__*/React.memo(function (props) {
1515
1626
  var content = props.columnGroup ? createColumnGroup() : createColumns(props.columns);
1516
1627
  if (hasFooter()) {
1517
1628
  var tfootProps = mergeProps({
1629
+ role: 'rowgroup',
1518
1630
  className: cx('tfoot')
1519
1631
  }, ptm('tfoot', {
1520
1632
  hostName: props.hostName
@@ -1575,7 +1687,7 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1575
1687
  }
1576
1688
  };
1577
1689
  var onHeaderKeyDown = function onHeaderKeyDown(event, column) {
1578
- if (event.key === 'Enter') {
1690
+ if (event.key === 'Enter' && event.key === 'Space') {
1579
1691
  onHeaderClick(event, column);
1580
1692
  event.preventDefault();
1581
1693
  }
@@ -1749,6 +1861,7 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1749
1861
  if (options.filterOnly) {
1750
1862
  var frozen = getColumnProp(column, 'frozen');
1751
1863
  var headerCellProps = mergeProps({
1864
+ role: 'columnheader',
1752
1865
  key: getColumnProp(column, 'columnKey') || getColumnProp(column, 'field') || options.index,
1753
1866
  className: classNames(cx('headerCell', {
1754
1867
  options: options,
@@ -1780,11 +1893,14 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1780
1893
  var sortIconElement = createSortIcon(column, sorted, sortOrder);
1781
1894
  var ariaSortData = getAriaSort(column, sorted, sortOrder);
1782
1895
  var sortBadge = createSortBadge(column, sortMetaDataIndex);
1896
+ var ariaSort = sorted ? sortOrder ? sortOrder < 0 ? 'descending' : 'ascending' : 'none' : null;
1783
1897
  var headerTooltip = getColumnProp(column, 'headerTooltip');
1784
1898
  var hasTooltip = ObjectUtils.isNotEmpty(headerTooltip);
1785
1899
  var title = createTitle(column, options);
1786
1900
  var resizer = createResizer(column);
1787
- var _headerCellProps = mergeProps({
1901
+ var sortable = getColumnProp(column, 'sortable');
1902
+ var _headerCellProps = mergeProps(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
1903
+ role: 'columnheader',
1788
1904
  className: classNames(getColumnProp(column, 'headerClassName') || getColumnProp(column, 'className'), cx('headerCell', {
1789
1905
  headerProps: props,
1790
1906
  frozen: _frozen,
@@ -1795,7 +1911,8 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1795
1911
  align: align
1796
1912
  })),
1797
1913
  style: getColumnProp(column, 'headerStyle') || getColumnProp(column, 'style'),
1798
- tabIndex: getColumnProp(column, 'sortable') ? props.tabIndex : null,
1914
+ tabIndex: sortable ? props.tabIndex : null,
1915
+ 'aria-sort': ariaSort,
1799
1916
  onClick: function onClick(e) {
1800
1917
  return onHeaderClick(e, column);
1801
1918
  },
@@ -1806,25 +1923,16 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1806
1923
  return onHeaderKeyDown(e, column);
1807
1924
  },
1808
1925
  rowSpan: getColumnProp(column, 'rowSpan'),
1809
- colSpan: getColumnProp(column, 'colSpan'),
1810
- 'aria-sort': ariaSortData,
1811
- onDragStart: function onDragStart(e) {
1812
- return _onDragStart(e, column);
1813
- },
1814
- onDragOver: function onDragOver(e) {
1815
- return _onDragOver(e, column);
1816
- },
1817
- onDragLeave: function onDragLeave(e) {
1818
- return _onDragLeave(e, column);
1819
- },
1820
- onDrop: function onDrop(e) {
1821
- return _onDrop(e, column);
1822
- },
1823
- 'data-p-sortable-column': getColumnProp(column, 'sortable'),
1824
- 'data-p-resizable-column': props.resizableColumns,
1825
- 'data-p-highlight': sorted,
1826
- 'data-p-frozen-column': getColumnProp(column, 'frozen')
1827
- }, getColumnPTOptions(column, 'root'), getColumnPTOptions(column, 'headerCell', {
1926
+ colSpan: getColumnProp(column, 'colSpan')
1927
+ }, "aria-sort", ariaSortData), "onDragStart", function onDragStart(e) {
1928
+ return _onDragStart(e, column);
1929
+ }), "onDragOver", function onDragOver(e) {
1930
+ return _onDragOver(e, column);
1931
+ }), "onDragLeave", function onDragLeave(e) {
1932
+ return _onDragLeave(e, column);
1933
+ }), "onDrop", function onDrop(e) {
1934
+ return _onDrop(e, column);
1935
+ }), 'data-p-sortable-column', sortable), 'data-p-resizable-column', props.resizableColumns), 'data-p-highlight', sorted), 'data-p-frozen-column', getColumnProp(column, 'frozen')), getColumnPTOptions(column, 'root'), getColumnPTOptions(column, 'headerCell', {
1828
1936
  context: {
1829
1937
  sorted: sorted,
1830
1938
  frozen: _frozen,
@@ -1859,7 +1967,9 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1859
1967
  var headerRowProps = mergeProps(ptm('headerRow', {
1860
1968
  hostName: props.hostName
1861
1969
  }));
1862
- return /*#__PURE__*/React.createElement("tr", _extends({}, headerRowProps, {
1970
+ return /*#__PURE__*/React.createElement("tr", _extends({
1971
+ role: "row"
1972
+ }, headerRowProps, {
1863
1973
  key: index
1864
1974
  }), rowHeaderCells);
1865
1975
  };
@@ -1870,7 +1980,8 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1870
1980
  var createColumns = function createColumns(columns) {
1871
1981
  if (columns) {
1872
1982
  var headerRowProps = mergeProps(ptm('headerRow', {
1873
- hostName: props.hostName
1983
+ hostName: props.hostName,
1984
+ role: 'row'
1874
1985
  }));
1875
1986
  if (hasColumnFilter(columns)) {
1876
1987
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("tr", headerRowProps, columns.map(function (col, i) {
@@ -1887,7 +1998,9 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1887
1998
  });
1888
1999
  })));
1889
2000
  } else {
1890
- return /*#__PURE__*/React.createElement("tr", headerRowProps, columns.map(function (col, i) {
2001
+ return /*#__PURE__*/React.createElement("tr", _extends({
2002
+ role: "row"
2003
+ }, headerRowProps), columns.map(function (col, i) {
1891
2004
  return createHeaderCell(col, {
1892
2005
  index: i,
1893
2006
  filterOnly: false,
@@ -1901,6 +2014,7 @@ var TreeTableHeader = /*#__PURE__*/React.memo(function (props) {
1901
2014
  };
1902
2015
  var content = props.columnGroup ? createColumnGroup() : createColumns(props.columns);
1903
2016
  var theadProps = mergeProps({
2017
+ role: 'rowgroup',
1904
2018
  className: cx('thead')
1905
2019
  }, ptm('thead', {
1906
2020
  hostName: props.hostName
@@ -2151,6 +2265,7 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
2151
2265
  var columnSortable = React.useRef(null);
2152
2266
  var columnSortFunction = React.useRef(null);
2153
2267
  var columnField = React.useRef(null);
2268
+ var childFocusEvent = React.useRef(null);
2154
2269
  var _useEventListener = useEventListener({
2155
2270
  type: 'mousemove',
2156
2271
  listener: function listener(event) {
@@ -2175,10 +2290,19 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
2175
2290
  bindDocumentMouseUpListener = _useEventListener4[0],
2176
2291
  unbindDocumentMouseUpListener = _useEventListener4[1];
2177
2292
  var onToggle = function onToggle(event) {
2293
+ var originalEvent = event.originalEvent,
2294
+ value = event.value,
2295
+ navigateFocusToChild = event.navigateFocusToChild;
2178
2296
  if (props.onToggle) {
2179
- props.onToggle(event);
2297
+ props.onToggle({
2298
+ originalEvent: originalEvent,
2299
+ value: value
2300
+ });
2180
2301
  } else {
2181
- setExpandedKeysState(event.value);
2302
+ if (navigateFocusToChild) {
2303
+ childFocusEvent.current = originalEvent;
2304
+ }
2305
+ setExpandedKeysState(value);
2182
2306
  }
2183
2307
  };
2184
2308
  var onPageChange = function onPageChange(event) {
@@ -2881,6 +3005,17 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
2881
3005
  }
2882
3006
  return data;
2883
3007
  };
3008
+ useUpdateEffect(function () {
3009
+ if (childFocusEvent.current) {
3010
+ var nodeElement = childFocusEvent.current.target;
3011
+ var nextElementSibling = nodeElement.nextElementSibling;
3012
+ if (nextElementSibling) {
3013
+ nodeElement.tabIndex = '-1';
3014
+ nextElementSibling.tabIndex = '0';
3015
+ DomHandler.focus(nextElementSibling);
3016
+ }
3017
+ }
3018
+ }, [expandedKeysState]);
2884
3019
  React.useImperativeHandle(ref, function () {
2885
3020
  return {
2886
3021
  props: props,
@@ -3030,6 +3165,7 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
3030
3165
  className: ptCallbacks.cx('wrapper')
3031
3166
  }, ptCallbacks.ptm('wrapper'));
3032
3167
  var tableProps = mergeProps({
3168
+ role: 'table',
3033
3169
  style: props.tableStyle,
3034
3170
  className: classNames(props.tableClassName, ptCallbacks.cx('table'))
3035
3171
  }, ptCallbacks.ptm('table'));
@@ -3113,6 +3249,7 @@ var TreeTable = /*#__PURE__*/React.forwardRef(function (inProps, ref) {
3113
3249
  ref: reorderIndicatorDownRef
3114
3250
  }, reorderIndicatorDownProps), reorderIndicatorDownIcon);
3115
3251
  var rootProps = mergeProps({
3252
+ role: 'table',
3116
3253
  id: props.id,
3117
3254
  className: classNames(props.className, ptCallbacks.cx('root', {
3118
3255
  isRowSelectionMode: isRowSelectionMode