Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

forward tab props #19

Merged
merged 1 commit into from May 7, 2021
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
29 changes: 26 additions & 3 deletions components/Navigation/src/index.tsx
Expand Up @@ -2,6 +2,7 @@ import React from "react";
import makeClass from "clsx";
import {
Tabs,
TabsProps,
TabList as ReachTabList,
Tab as ReachTab,
TabPanels,
Expand All @@ -14,8 +15,21 @@ import { styled, Element } from "@design-systems/utils";
import styles from "./Navigation.css";

/** The top-nav in devtools */
export const Navigation = (props: ThemeableElement<"nav">) => {
const { children, className, theme, colorScheme, ...html } = props;
export const Navigation = (
props: ThemeableElement<"nav"> & Omit<TabsProps, "keyboardActivation">
) => {
const {
children,
className,
theme,
colorScheme,
index,
readOnly,
defaultIndex,
orientation,
onChange,
...html
} = props;

const { themeClass, currentTheme } = useTheme({ theme, colorScheme }, styles);

Expand All @@ -29,7 +43,16 @@ export const Navigation = (props: ThemeableElement<"nav">) => {
styles[currentTheme]
)}
>
<Tabs keyboardActivation={TabsKeyboardActivation.Manual}>{children}</Tabs>
<Tabs
keyboardActivation={TabsKeyboardActivation.Manual}
index={index}
readOnly={readOnly}
defaultIndex={defaultIndex}
orientation={orientation}
onChange={onChange}
>
{children}
</Tabs>
</nav>
);
};
Expand Down
61 changes: 61 additions & 0 deletions components/Navigation/src/stories/Features.stories.tsx
Expand Up @@ -129,3 +129,64 @@ export const WithoutIcons = () => {
</Navigation>
);
};

export const SelectedIndex = () => {
return (
<Navigation defaultIndex={1}>
<Navigation.Controls>
<Navigation.Left>
<Navigation.Button
icon={<SelectIcon inline />}
aria-label="Inspect page"
/>
<Navigation.Divider />
</Navigation.Left>
<Navigation.TabList>
<Navigation.Tab id="elements" icon={<InspectorIcon inline />}>
Elements
</Navigation.Tab>
<Navigation.Tab id="console" icon={<ConsoleIcon inline />}>
Console
</Navigation.Tab>
<Navigation.Tab id="debugger" icon={<DebuggerIcon inline />}>
Debugger
</Navigation.Tab>
<Navigation.Tab id="styles" icon={<StylesIcon inline />}>
Style Editor
</Navigation.Tab>
<Navigation.Tab id="performance" icon={<OdometerIcon inline />}>
Performance
</Navigation.Tab>
<Navigation.Tab id="memory" icon={<MemoryIcon inline />}>
Memory
</Navigation.Tab>
</Navigation.TabList>

<Navigation.Right>
<Navigation.Button
icon={<NewWindowIcon inline />}
aria-label="New Window"
/>

<Navigation.Divider />
<Navigation.Button
icon={<MoreInfoIcon inline />}
aria-label="More settings"
/>
<Navigation.Button
icon={<CloseIcon inline />}
aria-label="Close panel"
/>
</Navigation.Right>
</Navigation.Controls>
<Navigation.Panels>
<Navigation.Panel>Elements</Navigation.Panel>
<Navigation.Panel>Console</Navigation.Panel>
<Navigation.Panel>Debugger</Navigation.Panel>
<Navigation.Panel>Styles</Navigation.Panel>
<Navigation.Panel>Performance</Navigation.Panel>
<Navigation.Panel>Memory</Navigation.Panel>
</Navigation.Panels>
</Navigation>
);
};