@patternfly/react-core 6.0.0-alpha.97 → 6.0.0-alpha.98

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 (147) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Content/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/Tile/package.json +1 -1
  74. package/dist/dynamic/components/TimePicker/package.json +1 -1
  75. package/dist/dynamic/components/Timestamp/package.json +1 -1
  76. package/dist/dynamic/components/Title/package.json +1 -1
  77. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  78. package/dist/dynamic/components/Toolbar/package.json +1 -1
  79. package/dist/dynamic/components/Tooltip/package.json +1 -1
  80. package/dist/dynamic/components/TreeView/package.json +1 -1
  81. package/dist/dynamic/components/Truncate/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  83. package/dist/dynamic/components/Wizard/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/esm/components/Dropdown/Dropdown.d.ts.map +1 -1
  115. package/dist/esm/components/Dropdown/Dropdown.js +16 -11
  116. package/dist/esm/components/Dropdown/Dropdown.js.map +1 -1
  117. package/dist/esm/components/Menu/Menu.js +2 -2
  118. package/dist/esm/components/Menu/Menu.js.map +1 -1
  119. package/dist/esm/components/Menu/MenuContainer.d.ts +2 -0
  120. package/dist/esm/components/Menu/MenuContainer.d.ts.map +1 -1
  121. package/dist/esm/components/Menu/MenuContainer.js +17 -12
  122. package/dist/esm/components/Menu/MenuContainer.js.map +1 -1
  123. package/dist/esm/components/Select/Select.d.ts.map +1 -1
  124. package/dist/esm/components/Select/Select.js +16 -11
  125. package/dist/esm/components/Select/Select.js.map +1 -1
  126. package/dist/js/components/Dropdown/Dropdown.d.ts.map +1 -1
  127. package/dist/js/components/Dropdown/Dropdown.js +16 -11
  128. package/dist/js/components/Dropdown/Dropdown.js.map +1 -1
  129. package/dist/js/components/Menu/Menu.js +2 -2
  130. package/dist/js/components/Menu/Menu.js.map +1 -1
  131. package/dist/js/components/Menu/MenuContainer.d.ts +2 -0
  132. package/dist/js/components/Menu/MenuContainer.d.ts.map +1 -1
  133. package/dist/js/components/Menu/MenuContainer.js +17 -12
  134. package/dist/js/components/Menu/MenuContainer.js.map +1 -1
  135. package/dist/js/components/Select/Select.d.ts.map +1 -1
  136. package/dist/js/components/Select/Select.js +16 -11
  137. package/dist/js/components/Select/Select.js.map +1 -1
  138. package/dist/umd/assets/{output-oMCjf7ay.css → output-DTcGGjoh.css} +3510 -3510
  139. package/dist/umd/react-core.min.js +3 -3
  140. package/helpers/package.json +1 -1
  141. package/layouts/package.json +1 -1
  142. package/next/package.json +1 -1
  143. package/package.json +2 -2
  144. package/src/components/Dropdown/Dropdown.tsx +16 -10
  145. package/src/components/Menu/Menu.tsx +2 -2
  146. package/src/components/Menu/MenuContainer.tsx +20 -11
  147. package/src/components/Select/Select.tsx +14 -8
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.96","private":true}
1
+ {"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.0.0-alpha.97","private":true}
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.96","private":true}
1
+ {"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.0.0-alpha.97","private":true}
package/next/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.96","private":true}
1
+ {"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.0.0-alpha.97","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.0.0-alpha.97",
3
+ "version": "6.0.0-alpha.98",
4
4
  "description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
5
5
  "main": "dist/js/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -64,5 +64,5 @@
64
64
  "react": "^17 || ^18",
65
65
  "react-dom": "^17 || ^18"
66
66
  },
67
- "gitHead": "5e19008b3872fc1fb2cdea963253d3d48e6cd329"
67
+ "gitHead": "e0e139240e357c96814d0cb6fda052a8fc7732ee"
68
68
  }
@@ -104,6 +104,22 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
104
104
  ? localToggleRef
105
105
  : (toggle?.toggleRef as React.RefObject<HTMLButtonElement>);
106
106
 
107
+ const prevIsOpen = React.useRef<boolean>(isOpen);
108
+ React.useEffect(() => {
109
+ // menu was opened, focus on first menu item
110
+ if (prevIsOpen.current === false && isOpen === true && shouldFocusFirstItemOnOpen) {
111
+ setTimeout(() => {
112
+ const firstElement = menuRef?.current?.querySelector(
113
+ 'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
114
+ );
115
+ firstElement && (firstElement as HTMLElement).focus();
116
+ }, 0);
117
+ }
118
+
119
+ prevIsOpen.current = isOpen;
120
+ // eslint-disable-next-line react-hooks/exhaustive-deps
121
+ }, [isOpen]);
122
+
107
123
  React.useEffect(() => {
108
124
  const handleMenuKeys = (event: KeyboardEvent) => {
109
125
  // Close the menu on tab or escape if onOpenChange is provided
@@ -120,16 +136,6 @@ const DropdownBase: React.FunctionComponent<DropdownProps> = ({
120
136
  };
121
137
 
122
138
  const handleClick = (event: MouseEvent) => {
123
- // toggle was opened, focus on first menu item
124
- if (isOpen && shouldFocusFirstItemOnOpen && toggleRef.current?.contains(event.target as Node)) {
125
- setTimeout(() => {
126
- const firstElement = menuRef?.current?.querySelector(
127
- 'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
128
- );
129
- firstElement && (firstElement as HTMLElement).focus();
130
- }, 0);
131
- }
132
-
133
139
  // If the event is not on the toggle and onOpenChange callback is provided, close the menu
134
140
  if (isOpen && onOpenChange && !toggleRef?.current?.contains(event.target as Node)) {
135
141
  if (isOpen && !menuRef.current?.contains(event.target as Node)) {
@@ -119,7 +119,7 @@ class MenuBase extends React.Component<MenuProps, MenuState> {
119
119
  if (this.context) {
120
120
  this.setState({ disableHover: this.context.disableHover });
121
121
  }
122
- if (canUseDOM) {
122
+ if (canUseDOM && this.props.containsDrilldown) {
123
123
  window.addEventListener('transitionend', this.props.isRootMenu ? this.handleDrilldownTransition : null);
124
124
  }
125
125
 
@@ -127,7 +127,7 @@ class MenuBase extends React.Component<MenuProps, MenuState> {
127
127
  }
128
128
 
129
129
  componentWillUnmount() {
130
- if (canUseDOM) {
130
+ if (canUseDOM && this.props.containsDrilldown) {
131
131
  window.removeEventListener('transitionend', this.handleDrilldownTransition);
132
132
  }
133
133
  }
@@ -37,6 +37,8 @@ export interface MenuContainerProps {
37
37
  zIndex?: number;
38
38
  /** Additional properties to pass to the Popper */
39
39
  popperProps?: MenuPopperProps;
40
+ /** @beta Flag indicating the first menu item should be focused after opening the dropdown. */
41
+ shouldFocusFirstItemOnOpen?: boolean;
40
42
  }
41
43
 
42
44
  /**
@@ -51,8 +53,25 @@ export const MenuContainer: React.FunctionComponent<MenuContainerProps> = ({
51
53
  onOpenChange,
52
54
  zIndex = 9999,
53
55
  popperProps,
54
- onOpenChangeKeys = ['Escape', 'Tab']
56
+ onOpenChangeKeys = ['Escape', 'Tab'],
57
+ shouldFocusFirstItemOnOpen = true
55
58
  }: MenuContainerProps) => {
59
+ const prevIsOpen = React.useRef<boolean>(isOpen);
60
+ React.useEffect(() => {
61
+ // menu was opened, focus on first menu item
62
+ if (prevIsOpen.current === false && isOpen === true && shouldFocusFirstItemOnOpen) {
63
+ setTimeout(() => {
64
+ const firstElement = menuRef?.current?.querySelector(
65
+ 'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
66
+ );
67
+ firstElement && (firstElement as HTMLElement).focus();
68
+ }, 0);
69
+ }
70
+
71
+ prevIsOpen.current = isOpen;
72
+ // eslint-disable-next-line react-hooks/exhaustive-deps
73
+ }, [isOpen]);
74
+
56
75
  React.useEffect(() => {
57
76
  const handleMenuKeys = (event: KeyboardEvent) => {
58
77
  // Close the menu on tab or escape if onOpenChange is provided
@@ -68,16 +87,6 @@ export const MenuContainer: React.FunctionComponent<MenuContainerProps> = ({
68
87
  };
69
88
 
70
89
  const handleClick = (event: MouseEvent) => {
71
- // toggle was opened, focus on first menu item
72
- if (isOpen && toggleRef.current?.contains(event.target as Node)) {
73
- setTimeout(() => {
74
- const firstElement = menuRef?.current?.querySelector(
75
- 'li button:not(:disabled),li input:not(:disabled),li a:not([aria-disabled="true"])'
76
- );
77
- firstElement && (firstElement as HTMLElement).focus();
78
- }, 0);
79
- }
80
-
81
90
  // If the event is not on the toggle and onOpenChange callback is provided, close the menu
82
91
  if (isOpen && onOpenChange && !toggleRef?.current?.contains(event.target as Node)) {
83
92
  if (isOpen && !menuRef.current?.contains(event.target as Node)) {
@@ -110,6 +110,20 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
110
110
  ? localToggleRef
111
111
  : (toggle?.toggleRef as React.RefObject<HTMLButtonElement>);
112
112
 
113
+ const prevIsOpen = React.useRef<boolean>(isOpen);
114
+ React.useEffect(() => {
115
+ // menu was opened, focus on first menu item
116
+ if (prevIsOpen.current === false && isOpen === true && shouldFocusFirstItemOnOpen) {
117
+ setTimeout(() => {
118
+ const firstElement = menuRef?.current?.querySelector('li button:not(:disabled),li input:not(:disabled)');
119
+ firstElement && (firstElement as HTMLElement).focus();
120
+ }, 0);
121
+ }
122
+
123
+ prevIsOpen.current = isOpen;
124
+ // eslint-disable-next-line react-hooks/exhaustive-deps
125
+ }, [isOpen]);
126
+
113
127
  React.useEffect(() => {
114
128
  const handleMenuKeys = (event: KeyboardEvent) => {
115
129
  // Close the menu on tab or escape if onOpenChange is provided
@@ -127,14 +141,6 @@ const SelectBase: React.FunctionComponent<SelectProps & OUIAProps> = ({
127
141
  };
128
142
 
129
143
  const handleClick = (event: MouseEvent) => {
130
- // toggle was opened, focus on first menu item
131
- if (isOpen && shouldFocusFirstItemOnOpen && toggleRef.current?.contains(event.target as Node)) {
132
- setTimeout(() => {
133
- const firstElement = menuRef?.current?.querySelector('li button:not(:disabled),li input:not(:disabled)');
134
- firstElement && (firstElement as HTMLElement).focus();
135
- }, 0);
136
- }
137
-
138
144
  // If the event is not on the toggle and onOpenChange callback is provided, close the menu
139
145
  if (isOpen && onOpenChange && !toggleRef?.current?.contains(event.target as Node)) {
140
146
  if (isOpen && !menuRef.current?.contains(event.target as Node)) {