Merge pull request #396 from IBM/374-header-hamburger-persistence

feat(UIShell): add persistentHamburgerMenu prop to Header
This commit is contained in:
Eric Liu 2020-11-18 08:26:29 -08:00 committed by GitHub
commit d9e14b2561
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 80 additions and 4 deletions

View file

@ -37,3 +37,7 @@ components: ["Header",
### Header with utilities ### Header with utilities
<FileSource src="/framed/UIShell/HeaderUtilities" /> <FileSource src="/framed/UIShell/HeaderUtilities" />
### Header with persisted hamburger menu
<FileSource src="/framed/UIShell/PersistedHamburgerMenu" />

View file

@ -0,0 +1,65 @@
<script>
import {
Header,
HeaderNav,
HeaderNavItem,
HeaderNavMenu,
SideNav,
SideNavItems,
SideNavMenu,
SideNavMenuItem,
SideNavLink,
SkipToContent,
Content,
Grid,
Row,
Column,
} from "carbon-components-svelte";
let isSideNavOpen = false;
</script>
<Header
persistentHamburgerMenu="{true}"
company="IBM"
platformName="Carbon Svelte"
bind:isSideNavOpen
>
<div slot="skip-to-content">
<SkipToContent />
</div>
<HeaderNav>
<HeaderNavItem href="/" text="Link 1" />
<HeaderNavItem href="/" text="Link 2" />
<HeaderNavItem href="/" text="Link 3" />
<HeaderNavMenu text="Menu">
<HeaderNavItem href="/" text="Link 1" />
<HeaderNavItem href="/" text="Link 2" />
<HeaderNavItem href="/" text="Link 3" />
</HeaderNavMenu>
</HeaderNav>
</Header>
<SideNav bind:isOpen="{isSideNavOpen}">
<SideNavItems>
<SideNavLink text="Link 1" />
<SideNavLink text="Link 2" />
<SideNavLink text="Link 3" />
<SideNavMenu text="Menu">
<SideNavMenuItem href="/" text="Link 1" />
<SideNavMenuItem href="/" text="Link 2" />
<SideNavMenuItem href="/" text="Link 3" />
</SideNavMenu>
</SideNavItems>
</SideNav>
<Content>
<Grid>
<Row>
<Column>
<h1>Welcome</h1>
</Column>
</Row>
</Grid>
</Content>

View file

@ -36,6 +36,12 @@
*/ */
export let platformName = ""; export let platformName = "";
/**
* Specify Hamburger Menu persistance
* @type {boolean} [persistentHamburgerMenu=false]
*/
export let persistentHamburgerMenu = false;
/** /**
* Obtain a reference to the HTML anchor element * Obtain a reference to the HTML anchor element
* @type {null | HTMLAnchorElement} [ref=null] * @type {null | HTMLAnchorElement} [ref=null]
@ -46,7 +52,8 @@
let winWidth = undefined; let winWidth = undefined;
$: isSideNavOpen = expandedByDefault && winWidth >= 1056; $: isSideNavOpen =
expandedByDefault && winWidth >= 1056 && !persistentHamburgerMenu;
$: ariaLabel = company $: ariaLabel = company
? `${company} ` ? `${company} `
: "" + (uiShellAriaLabel || $$props["aria-label"] || platformName); : "" + (uiShellAriaLabel || $$props["aria-label"] || platformName);
@ -56,7 +63,7 @@
<header role="banner" aria-label="{ariaLabel}" class:bx--header="{true}"> <header role="banner" aria-label="{ariaLabel}" class:bx--header="{true}">
<slot name="skip-to-content" /> <slot name="skip-to-content" />
{#if winWidth < 1056} {#if winWidth < 1056 || persistentHamburgerMenu}
<HamburgerMenu bind:isOpen="{isSideNavOpen}" /> <HamburgerMenu bind:isOpen="{isSideNavOpen}" />
{/if} {/if}
<a <a

View file

@ -33,7 +33,7 @@
class:bx--side-nav="{true}" class:bx--side-nav="{true}"
class:bx--side-nav--ux="{true}" class:bx--side-nav--ux="{true}"
class:bx--side-nav--expanded="{isOpen}" class:bx--side-nav--expanded="{isOpen}"
class:bx--side-nav--collapsed="{!isOpen && fixed}" class:bx--side-nav--collapsed="{!isOpen}"
{...$$restProps} {...$$restProps}
> >
<slot /> <slot />