Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
636 changes: 10 additions & 626 deletions packages/react-core/src/components/Nav/examples/Nav.md

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions packages/react-core/src/components/Nav/examples/NavDefault.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import React from 'react';
import { Nav, NavItem, NavList } from '@patternfly/react-core';

export const NavDefault: React.FunctionComponent = () => {
const [activeItem, setActiveItem] = React.useState(0);

const onSelect = (result: { itemId: number | string }) => {
setActiveItem(result.itemId as number);
};

return (
<Nav onSelect={onSelect} aria-label="Default global nav">
<NavList>
<NavItem preventDefault id="nav-default-link1" to="#nav-default-link1" itemId={0} isActive={activeItem === 0}>
Default Link 1
</NavItem>
<NavItem preventDefault id="nav-default-link2" to="#nav-default-link2" itemId={1} isActive={activeItem === 1}>
Default Link 2
</NavItem>
<NavItem preventDefault id="nav-default-link3" to="#nav-default-link3" itemId={2} isActive={activeItem === 2}>
Default Link 3
</NavItem>
<NavItem preventDefault id="nav-default-link4" to="#nav-default-link4" itemId={3} isActive={activeItem === 3}>
Default Link 4
</NavItem>
</NavList>
</Nav>
);
};
35 changes: 20 additions & 15 deletions packages/react-core/src/components/Nav/examples/NavDrilldown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,45 @@ interface MenuHeights {
}

const subMenuTwo: JSX.Element = (
<DrilldownMenu id="subMenu-2">
<MenuItem itemId="subMenu-2-breadcrumb" direction="up">
<DrilldownMenu id="nav-drilldown-subMenu-2">
<MenuItem itemId="nav-drilldown-subMenu-2-breadcrumb" direction="up">
SubMenu 1 - Item 1
</MenuItem>
<MenuItem itemId="subMenu-2_item-1" to="#subMenu-2_item-1">
<MenuItem itemId="nav-drilldown-subMenu-2_item-1" to="#subMenu-2_item-1">
SubMenu 2 - Item 1
</MenuItem>
<MenuItem itemId="subMenu-2_item-2" to="#subMenu-2_item-2">
<MenuItem itemId="nav-drilldown-subMenu-2_item-2" to="#subMenu-2_item-2">
SubMenu 2 - Item 2
</MenuItem>
<MenuItem itemId="subMenu-2_item-3" to="#subMenu-2_item-3">
<MenuItem itemId="nav-drilldown-subMenu-2_item-3" to="#subMenu-2_item-3">
SubMenu 2 - Item 3
</MenuItem>
</DrilldownMenu>
);

const subMenuOne: JSX.Element = (
<DrilldownMenu id="subMenu-1">
<MenuItem itemId="subMenu-1-breadcrumb" direction="up">
<DrilldownMenu id="nav-drilldown-subMenu-1">
<MenuItem itemId="nav-drilldown-subMenu-1-breadcrumb" direction="up">
Item 1
</MenuItem>
<MenuItem itemId="subMenu-1_item-1" description="SubMenu 2" direction="down" drilldownMenu={subMenuTwo}>
<MenuItem
itemId="nav-drilldown-subMenu-1_item-1"
description="SubMenu 2"
direction="down"
drilldownMenu={subMenuTwo}
>
SubMenu 1 - Item 1
</MenuItem>
<MenuItem itemId="subMenu-1_item-2" to="#subMenu-1_item-2">
<MenuItem itemId="nav-drilldown-subMenu-1_item-2" to="#subMenu-1_item-2">
SubMenu 1 - Item 2
</MenuItem>
<MenuItem itemId="subMenu-1_item-3" to="#subMenu-1_item-3">
<MenuItem itemId="nav-drilldown-subMenu-1_item-3" to="#subMenu-1_item-3">
SubMenu 1 - Item 3
</MenuItem>
</DrilldownMenu>
);

export const NavLevelThreeDrill: React.FunctionComponent = () => {
export const NavigationDrilldown: React.FunctionComponent = () => {
const [menuDrilledIn, setMenuDrilledIn] = React.useState<string[]>([]);
const [drilldownPath, setDrilldownPath] = React.useState<string[]>([]);
const [menuHeights, setMenuHeights] = React.useState<MenuHeights>({});
Expand All @@ -67,7 +72,7 @@ export const NavLevelThreeDrill: React.FunctionComponent = () => {
return (
<Nav aria-label="Drilldown global nav">
<Menu
id="rootMenu"
id="nav-drilldown-rootMenu"
containsDrilldown
drilldownItemPath={drilldownPath}
drilledInMenus={menuDrilledIn}
Expand All @@ -78,13 +83,13 @@ export const NavLevelThreeDrill: React.FunctionComponent = () => {
>
<MenuContent menuHeight={`${menuHeights[activeMenu]}px`}>
<MenuList>
<MenuItem itemId="item-1" direction="down" description="SubMenu 1" drilldownMenu={subMenuOne}>
<MenuItem itemId="nav-drilldown-item-1" direction="down" description="SubMenu 1" drilldownMenu={subMenuOne}>
Item 1
</MenuItem>
<MenuItem itemId="item-2" to="#item-2">
<MenuItem itemId="nav-drilldown-item-2" to="#item-2">
Item 2
</MenuItem>
<MenuItem itemId="item-3" to="#item-3">
<MenuItem itemId="nav-drilldown-item-3" to="#item-3">
Item 3
</MenuItem>
</MenuList>
Expand Down
119 changes: 119 additions & 0 deletions packages/react-core/src/components/Nav/examples/NavExpandable.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
import React from 'react';
import { Nav, NavExpandable, NavItem, NavItemSeparator, NavList } from '@patternfly/react-core';

export const NavExpandableExample: React.FunctionComponent = () => {
const [activeGroup, setActiveGroup] = React.useState('nav-expandable-group-1');
const [activeItem, setActiveItem] = React.useState('nav-expandable-group-1_item-1');

const onSelect = (result: { itemId: number | string; groupId: number | string }) => {
setActiveGroup(result.groupId as string);
setActiveItem(result.itemId as string);
};

const onToggle = (result: { groupId: number | string; isExpanded: boolean }) => {
// eslint-disable-next-line no-console
console.log(`Group ${result.groupId} expanded? ${result.isExpanded}`);
};

const onItemClick = (
_event: React.FormEvent<HTMLInputElement>,
itemId: number | string,
_groupId: number | string
) => {
// eslint-disable-next-line no-console
console.log(`Custom click handler on ${itemId}`);
};

return (
<Nav onSelect={onSelect} onToggle={onToggle} aria-label="Expandable global nav">
<NavList>
<NavExpandable
title="Expandable Group 1"
groupId="nav-expandable-group-1"
isActive={activeGroup === 'nav-expandable-group-1'}
isExpanded
>
<NavItem
preventDefault
id="expandable-1"
to="#expandable-1"
groupId="nav-expandable-group-1"
itemId="nav-expandable-group-1_item-1"
isActive={activeItem === 'nav-expandable-group-1_item-1'}
>
Subnav 1 Link 1
</NavItem>
<NavItemSeparator />
<NavItem
preventDefault
id="expandable-2"
to="#expandable-2"
groupId="nav-expandable-group-1"
itemId="nav-expandable-group-1_item-2"
isActive={activeItem === 'nav-expandable-group-1_item-2'}
>
Subnav 1 Link 2
</NavItem>
<NavItem
preventDefault
id="expandable-3"
to="#expandable-3"
groupId="nav-expandable-group-1"
itemId="nav-expandable-group-1_item-3"
isActive={activeItem === 'nav-expandable-group-1_item-3'}
>
Subnav 1 Link 3
</NavItem>
</NavExpandable>
<NavExpandable
title="Expandable Group 2"
groupId="nav-expandable-group-2"
isActive={activeGroup === 'nav-expandable-group-2'}
isExpanded
>
<NavItem
preventDefault
onClick={onItemClick}
id="expandable-custom-click"
to="#expandable-custom-click"
groupId="nav-expandable-group-2"
itemId="nav-expandable-group-2_custom-click"
isActive={activeItem === 'nav-expandable-group-2_custom-click'}
>
Custom onClick Link
</NavItem>
<NavItem
preventDefault
id="expandable-4"
to="#expandable-4"
groupId="nav-expandable-group-2"
itemId="nav-expandable-group-2_item-1"
isActive={activeItem === 'nav-expandable-group-2_item-1'}
>
Subnav 2 Link 1
</NavItem>
<NavItem
preventDefault
id="expandable-5"
to="#expandable-5"
groupId="nav-expandable-group-2"
itemId="nav-expandable-group-2_item-2"
isActive={activeItem === 'nav-expandable-group-2_item-2'}
>
Subnav 2 Link 2
</NavItem>
<NavItem
preventDefault
id="expandable-6"
to="#expandable-6"
groupId="nav-expandable-group-2"
itemId="nav-expandable-group-2_item-3"
isActive={activeItem === 'nav-expandable-group-2_item-3'}
>
Subnav 2 Link 3
</NavItem>
</NavExpandable>
</NavList>
</Nav>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
import React from 'react';
import { Nav, NavExpandable, NavItem, NavList } from '@patternfly/react-core';

export const NavExpandableThirdLevel: React.FunctionComponent = () => {
const [activeGroup, setActiveGroup] = React.useState('nav-expand3rd-group-1');
const [activeItem, setActiveItem] = React.useState('nav-expand3rd-group-1_item-1');

const onSelect = (result: { itemId: number | string; groupId: number | string }) => {
setActiveGroup(result.groupId as string);
setActiveItem(result.itemId as string);
};

const onToggle = (result: { groupId: number | string; isExpanded: boolean }) => {
// eslint-disable-next-line no-console
console.log(`Group ${result.groupId} expanded? ${result.isExpanded}`);
};

return (
<Nav onSelect={onSelect} onToggle={onToggle} aria-label="Expandable third level global nav">
<NavList>
<NavExpandable
title="Expandable section title 1"
groupId="nav-expand3rd-group-1"
isActive={activeGroup === 'nav-expand3rd-group-1'}
isExpanded
>
<NavItem
preventDefault
id="expandable3rd-1"
to="#expandable3rd-1"
groupId="nav-expand3rd-group-1"
itemId="nav-expand3rd-group-1_item-1"
isActive={activeItem === 'nav-expand3rd-group-1_item-1'}
>
With 3rd 1 Link 1
</NavItem>
<NavItem
preventDefault
id="expandable3rd-2"
to="#expandable3rd-2"
groupId="nav-expand3rd-group-1"
itemId="nav-expand3rd-group-1_item-2"
isActive={activeItem === 'nav-expand3rd-group-1_item-2'}
>
With 3rd 1 Link 2
</NavItem>
<NavItem
preventDefault
id="expandable3rd-3"
to="#expandable3rd-3"
groupId="nav-expand3rd-group-1"
itemId="nav-expand3rd-group-1_item-3"
isActive={activeItem === 'nav-expand3rd-group-1_item-3'}
>
With 3rd 1 Link 3
</NavItem>
</NavExpandable>
<NavExpandable
title="Expandable section title 2"
groupId="nav-expand3rd-group-2"
isActive={activeGroup === 'nav-expand3rd-group-2'}
isExpanded
>
<NavItem
preventDefault
id="expandable3rd-4"
to="#expandable3rd-4"
groupId="nav-expand3rd-group-2"
itemId="nav-expand3rd-group-2_item-1"
isActive={activeItem === 'nav-expand3rd-group-2_item-1'}
>
With 3rd 2 Link 1
</NavItem>
<NavExpandable
title="Expandable third level"
groupId="nav-expand3rd-group-3"
isActive={activeGroup === 'nav-expand3rd-group-3'}
isExpanded
>
<NavItem
preventDefault
id="expandable3rd-5"
to="#expandable3rd-5"
groupId="nav-expand3rd-group-3"
itemId="nav-expand3rd-group-3_item-1"
isActive={activeItem === 'nav-expand3rd-group-3_item-1'}
>
Third Level Link 1
</NavItem>
<NavItem
preventDefault
id="expandable3rd-6"
to="#expandable3rd-6"
groupId="nav-expand3rd-group-3"
itemId="nav-expand3rd-group-3_item-3"
isActive={activeItem === 'nav-expand3rd-group-3_item-2'}
>
Third Level Link 2
</NavItem>
</NavExpandable>
<NavItem
preventDefault
id="expandable3rd-7"
to="#expandable3rd-7"
groupId="nav-expand3rd-group-2"
itemId="nav-expand3rd-group-2_item-2"
isActive={activeItem === 'nav-expand3rd-group-2_item-2'}
>
With 3rd 2 Link 2
</NavItem>
</NavExpandable>
</NavList>
</Nav>
);
};
Loading