feat(ui-shell): support fixed SideNav

This commit is contained in:
Eric Liu 2020-08-02 05:52:42 -07:00
commit 4f2251b5e1
2 changed files with 34 additions and 18 deletions

View file

@ -1,4 +1,10 @@
<script> <script>
/**
* Set to `true` to use the fixed variant
* @type {boolean} [fixed=false]
*/
export let fixed = false;
/** /**
* Specify the ARIA label for the nav * Specify the ARIA label for the nav
* @type {string} [ariaLabel] * @type {string} [ariaLabel]
@ -12,12 +18,21 @@
export let isOpen = false; export let isOpen = false;
</script> </script>
{#if fixed}
<div
on:click={() => {
isOpen = false;
}}
class:bx--side-nav__overlay={true}
class:bx--side-nav__overlay-active={isOpen} />
{/if}
<nav <nav
aria-label={ariaLabel} aria-label={ariaLabel}
class:bx--side-nav__navigation={true} class:bx--side-nav__navigation={true}
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}
{...$$restProps}> {...$$restProps}>
<slot /> <slot />
</nav> </nav>

View file

@ -213,8 +213,8 @@
</HeaderUtilities> </HeaderUtilities>
</Header> </Header>
{:else if story === 'header-and-sidenav'} {:else if story === 'header-and-sidenav'}
<Header bind:isSideNavOpen {...$$props} /> <Header expandedByDefault={false} bind:isSideNavOpen {...$$props}>
<SideNav bind:isOpen={isSideNavOpen}> <SideNav fixed bind:isOpen={isSideNavOpen}>
<SideNavItems> <SideNavItems>
<SideNavMenu text="Menu 01" icon={iCatalog}> <SideNavMenu text="Menu 01" icon={iCatalog}>
<SideNavMenuItem text="Sub 01" href="/" /> <SideNavMenuItem text="Sub 01" href="/" />
@ -231,6 +231,7 @@
<SideNavLink text="Menu 03" href="/" icon={iProtection} /> <SideNavLink text="Menu 03" href="/" icon={iProtection} />
</SideNavItems> </SideNavItems>
</SideNav> </SideNav>
</Header>
{/if} {/if}
<Content> <Content>
<h2>Page Title</h2> <h2>Page Title</h2>