Skip to content

Commit 36a8927

Browse files
committed
revert some updates for build
1 parent 454aa8c commit 36a8927

File tree

3 files changed

+39
-60
lines changed

3 files changed

+39
-60
lines changed

packages/react-core/src/components/Nav/NavItem.tsx

Lines changed: 28 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
useRef,
88
useState,
99
forwardRef,
10-
useCallback
10+
MutableRefObject
1111
} from 'react';
1212
import styles from '@patternfly/react-styles/css/components/Nav/nav';
1313
import menuStyles from '@patternfly/react-styles/css/components/Menu/menu';
@@ -76,25 +76,13 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
7676
innerRef,
7777
...props
7878
}: NavItemProps) => {
79-
const { flyoutRef: contextFlyoutRef, setFlyoutRef, navRef } = useContext(NavContext);
79+
const { flyoutRef, setFlyoutRef, navRef } = useContext(NavContext);
8080
const { isSidebarOpen } = useContext(PageSidebarContext);
8181
const [flyoutTarget, setFlyoutTarget] = useState(null);
8282
const [isHovered, setIsHovered] = useState(false);
83-
const flyoutRef = useRef<HTMLLIElement | null>(null);
84-
const ref = useCallback(
85-
(node: HTMLLIElement | null) => {
86-
flyoutRef.current = node;
87-
if (typeof innerRef === 'function') {
88-
innerRef(node);
89-
} else if (innerRef) {
90-
(innerRef as React.MutableRefObject<HTMLLIElement | null>).current = node;
91-
}
92-
},
93-
[innerRef]
94-
);
95-
const contextFlyoutRefCurrent =
96-
typeof contextFlyoutRef === 'object' && contextFlyoutRef ? contextFlyoutRef.current : null;
97-
const flyoutVisible = flyoutRef?.current === contextFlyoutRefCurrent;
83+
const _ref = useRef<HTMLLIElement>(undefined);
84+
const ref = (innerRef as MutableRefObject<HTMLLIElement>) || _ref;
85+
const flyoutVisible = ref === flyoutRef;
9886
const popperRef = useRef<HTMLDivElement>(undefined);
9987
const hasFlyout = flyout !== undefined;
10088
const Component = hasFlyout ? 'button' : (component as any);
@@ -105,48 +93,42 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
10593
console.error('NavItem cannot have both "to" and "flyout" props.');
10694
}
10795

108-
const showFlyout = useCallback(
109-
(show: boolean, override?: boolean) => {
110-
if ((!flyoutVisible || override) && show) {
111-
setFlyoutRef(flyoutRef);
112-
} else if ((flyoutVisible || override) && !show) {
113-
setFlyoutRef(null);
114-
}
96+
const showFlyout = (show: boolean, override?: boolean) => {
97+
if ((!flyoutVisible || override) && show) {
98+
setFlyoutRef(ref);
99+
} else if ((flyoutVisible || override) && !show) {
100+
setFlyoutRef(null);
101+
}
115102

116-
onShowFlyout && show && onShowFlyout();
117-
},
118-
[flyoutVisible, setFlyoutRef, flyoutRef, onShowFlyout]
119-
);
103+
onShowFlyout && show && onShowFlyout();
104+
};
120105

121106
const onMouseOver = (event: React.MouseEvent) => {
122107
const evtContainedInFlyout = (event.target as HTMLElement).closest(`.${styles.navItem}.pf-m-flyout`);
123108
if (hasFlyout && !flyoutVisible) {
124109
showFlyout(true);
125-
} else if (contextFlyoutRef !== null && !evtContainedInFlyout) {
110+
} else if (flyoutRef !== null && !evtContainedInFlyout) {
126111
setFlyoutRef(null);
127112
}
128113
};
129114

130-
const onFlyoutClick = useCallback(
131-
(event: MouseEvent) => {
132-
const target = event.target;
133-
const closestItem = (target as HTMLElement).closest('.pf-m-flyout');
134-
if (!closestItem) {
135-
if (hasFlyout) {
136-
showFlyout(false, true);
137-
} else if (contextFlyoutRef !== null) {
138-
setFlyoutRef(null);
139-
}
115+
const onFlyoutClick = (event: MouseEvent) => {
116+
const target = event.target;
117+
const closestItem = (target as HTMLElement).closest('.pf-m-flyout');
118+
if (!closestItem) {
119+
if (hasFlyout) {
120+
showFlyout(false, true);
121+
} else if (flyoutRef !== null) {
122+
setFlyoutRef(null);
140123
}
141-
},
142-
[hasFlyout, showFlyout, contextFlyoutRef, setFlyoutRef]
143-
);
124+
}
125+
};
144126

145127
const handleFlyout = (event: KeyboardEvent) => {
146128
const key = event.key;
147129
const target = event.target as HTMLElement;
148130

149-
if ((key === ' ' || key === 'Enter' || key === 'ArrowRight') && hasFlyout && flyoutRef?.current?.contains(target)) {
131+
if ((key === ' ' || key === 'Enter' || key === 'ArrowRight') && hasFlyout && ref?.current?.contains(target)) {
150132
event.stopPropagation();
151133
event.preventDefault();
152134
if (!flyoutVisible) {
@@ -178,7 +160,7 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
178160
window.removeEventListener('click', onFlyoutClick);
179161
}
180162
};
181-
}, [hasFlyout, onFlyoutClick]);
163+
}, []);
182164

183165
useEffect(() => {
184166
if (flyoutTarget) {
@@ -262,7 +244,7 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
262244

263245
const flyoutPopper = (
264246
<Popper
265-
triggerRef={flyoutRef}
247+
triggerRef={ref}
266248
popper={
267249
<div ref={popperRef} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>
268250
{flyout}
@@ -300,7 +282,7 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
300282
return navItem;
301283
};
302284

303-
export const NavItem = forwardRef<HTMLLIElement, NavItemProps>((props, ref) => (
285+
export const NavItem = forwardRef((props: NavItemProps, ref: React.Ref<any>) => (
304286
<NavItemBase {...props} innerRef={ref} />
305287
));
306288

packages/react-core/src/demos/Page.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import FolderIcon from '@patternfly/react-icons/dist/esm/icons/folder-icon';
1818
import CloudIcon from '@patternfly/react-icons/dist/esm/icons/cloud-icon';
1919
import CodeIcon from '@patternfly/react-icons/dist/esm/icons/code-icon';
2020
import pfLogo from '@patternfly/react-core/src/demos/assets/PF-HorizontalLogo-Color.svg';
21-
import imgAvatar from '../../../components/assets/avatarImg.svg';
22-
import pfIconLogo from '../../assets/PF-IconLogo-color.svg';
21+
import pfIconLogo from '@patternfly/react-core/src/demos/assets/PF-IconLogo-color.svg';
22+
import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';
2323

2424
- All examples set the `isManagedSidebar` prop on the Page component to have the sidebar automatically close for smaller screen widths. You can also manually control this behavior by not adding the `isManagedSidebar` prop and instead:
2525

packages/react-core/src/demos/examples/Page/PageDockedNav.tsx

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ import CubeIcon from '@patternfly/react-icons/dist/esm/icons/cube-icon';
3939
import FolderIcon from '@patternfly/react-icons/dist/esm/icons/folder-icon';
4040
import CloudIcon from '@patternfly/react-icons/dist/esm/icons/cloud-icon';
4141
import CodeIcon from '@patternfly/react-icons/dist/esm/icons/code-icon';
42-
import imgAvatar from '../../../components/assets/avatarImg.svg';
43-
import pfIconLogo from '../../assets/PF-IconLogo-color.svg';
42+
import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';
43+
import pfIconLogo from '@patternfly/react-core/src/demos/assets/PF-IconLogo-color.svg';
44+
4445
interface NavOnSelectProps {
4546
groupId: number | string;
4647
itemId: number | string;
@@ -143,7 +144,6 @@ export const PageDockedNav: React.FunctionComponent = () => {
143144
isActive={activeItem === 0}
144145
icon={<CubeIcon />}
145146
ref={navItem1Ref}
146-
aria-label="Link 1"
147147
/>
148148
<NavItem
149149
preventDefault
@@ -153,27 +153,24 @@ export const PageDockedNav: React.FunctionComponent = () => {
153153
isActive={activeItem === 1}
154154
icon={<FolderIcon />}
155155
ref={navItem2Ref}
156-
aria-label="Link 2"
157156
/>
158157
<NavItem
159158
preventDefault
160-
id="nav-icon-link3"
161-
to="#nav-icon-link3"
162-
itemId={2}
159+
id="nav-icon-link1"
160+
to="#nav-icon-link1"
161+
itemId={0}
163162
isActive={activeItem === 2}
164163
icon={<CloudIcon />}
165164
ref={navItem3Ref}
166-
aria-label="Link 3"
167165
/>
168166
<NavItem
169167
preventDefault
170-
id="nav-icon-link4"
171-
to="#nav-icon-link4"
172-
itemId={3}
168+
id="nav-icon-link1"
169+
to="#nav-icon-link1"
170+
itemId={0}
173171
isActive={activeItem === 3}
174172
icon={<CodeIcon />}
175173
ref={navItem4Ref}
176-
aria-label="Link 4"
177174
/>
178175
</NavList>
179176
</Nav>

0 commit comments

Comments
 (0)