feat(ui-shell): add HeaderGlobalAction component

This commit is contained in:
Eric Liu 2020-09-05 15:28:10 -07:00
commit 7b3c111b5f
7 changed files with 110 additions and 1 deletions

View file

@ -1,6 +1,6 @@
# Component Index # Component Index
> 143 components exported from carbon-components-svelte 0.10.0 > 144 components exported from carbon-components-svelte 0.10.0
- Accordion - Accordion
- [AccordionSkeleton](#accordionskeleton) - [AccordionSkeleton](#accordionskeleton)
@ -171,6 +171,7 @@
- [HeaderPanelLink](#headerpanellink) - [HeaderPanelLink](#headerpanellink)
- [HeaderPanelLinks](#headerpanellinks) - [HeaderPanelLinks](#headerpanellinks)
- [HeaderUtilities](#headerutilities) - [HeaderUtilities](#headerutilities)
- [HeaderGlobalAction](#headerglobalaction)
- [SideNav](#sidenav) - [SideNav](#sidenav)
- [SideNavItems](#sidenavitems) - [SideNavItems](#sidenavitems)
- [SideNavLink](#sidenavlink) - [SideNavLink](#sidenavlink)
@ -1693,6 +1694,36 @@ No forwarded events.
--- ---
## HeaderGlobalAction
### Import path
```js
import { HeaderGlobalAction } from "carbon-components-svelte";
```
### Props
| Prop name | Type | Default value |
| :-------- | :------------------------------------------------------------------ | :------------ |
| isActive | <code>boolean</code> | false |
| icon | <code>typeof import("carbon-icons-svelte/lib/Add16").default</code> | -- |
| ref | <code>null &#124; HTMLButtonElement</code> | null |
### Slots
- `<slot>...</slot>`
### Forwarded events
- `on:click`
### Dispatched events
No dispatched events.
---
## HeaderNav ## HeaderNav
### Import path ### Import path

View file

@ -0,0 +1,33 @@
<script>
/**
* Set to `true` to use the active variant
* @type {boolean} [isActive=false]
*/
export let isActive = false;
/**
* Specify the icon to render
* @type {typeof import("carbon-icons-svelte/lib/Add16").default} [icon]
*/
export let icon = undefined;
/**
* Obtain a reference to the HTML button element
* @type {null | HTMLButtonElement} [ref=null]
*/
export let ref = null;
</script>
<button
type="button"
ref="{ref}"
class:bx--header__action="{true}"
class:bx--header__action--active="{isActive}"
{...$$restProps}
on:click>
<slot>
{#if icon}
<svelte:component this="{icon}" />
{/if}
</slot>
</button>

View file

@ -27,6 +27,7 @@
import HeaderPanelLinks from "./GlobalHeader/HeaderPanelLinks.svelte"; import HeaderPanelLinks from "./GlobalHeader/HeaderPanelLinks.svelte";
import Content from "./Content.svelte"; import Content from "./Content.svelte";
import SkipToContent from "./SkipToContent.svelte"; import SkipToContent from "./SkipToContent.svelte";
import HeaderGlobalAction from "./HeaderGlobalAction.svelte";
let isSideNavOpen = undefined; let isSideNavOpen = undefined;
@ -188,6 +189,15 @@
<HeaderActionLink type="Account" icon="{iAccount}" /> <HeaderActionLink type="Account" icon="{iAccount}" />
</HeaderUtilities> </HeaderUtilities>
</Header> </Header>
{:else if story === 'header-global-action'}
<Header {...$$props}>
<HeaderUtilities>
<HeaderGlobalAction isActive>
<AppSwitcher20 />
</HeaderGlobalAction>
<HeaderGlobalAction icon="{AppSwitcher20}" />
</HeaderUtilities>
</Header>
{:else if story === 'header-with-switcher'} {:else if story === 'header-with-switcher'}
<Header {...$$props}> <Header {...$$props}>
<HeaderUtilities> <HeaderUtilities>

View file

@ -43,6 +43,16 @@ export const HeaderWithUtilities = () => ({
}, },
}); });
export const HeaderGlobalAction = () => ({
Component,
props: {
story: "header-global-action",
href: text("The link href (href)", "#"),
company: text("Company name", "IBM"),
platformName: text("Platform name", "Platform Name"),
},
});
export const HeaderWithSwitcher = () => ({ export const HeaderWithSwitcher = () => ({
Component, Component,
props: { props: {

View file

@ -16,3 +16,4 @@ export { default as SideNavMenu } from "./SideNav/SideNavMenu.svelte";
export { default as SideNavMenuItem } from "./SideNav/SideNavMenuItem.svelte"; export { default as SideNavMenuItem } from "./SideNav/SideNavMenuItem.svelte";
export { default as Content } from "./Content.svelte"; export { default as Content } from "./Content.svelte";
export { default as SkipToContent } from "./SkipToContent.svelte"; export { default as SkipToContent } from "./SkipToContent.svelte";
export { default as HeaderGlobalAction } from "./HeaderGlobalAction.svelte";

View file

@ -124,5 +124,6 @@ export {
SideNavMenuItem, SideNavMenuItem,
Content, Content,
SkipToContent, SkipToContent,
HeaderGlobalAction,
} from "./UIShell"; } from "./UIShell";
export { UnorderedList } from "./UnorderedList"; export { UnorderedList } from "./UnorderedList";

23
types/index.d.ts vendored
View file

@ -1591,6 +1591,29 @@ export class HeaderActionSearch extends CarbonSvelteComponent {
}; };
} }
export class HeaderGlobalAction extends CarbonSvelteComponent {
$$prop_def: {
/**
* Set to `true` to use the active variant
* @default false
*/
isActive?: boolean;
/**
* Specify the icon to render
*/
icon?: typeof import("carbon-icons-svelte/lib/Add16").default;
/**
* Obtain a reference to the HTML button element
* @default null
*/
ref?: null | HTMLButtonElement;
};
$$slot_def: { default: {} };
}
export class HeaderNav extends CarbonSvelteComponent { export class HeaderNav extends CarbonSvelteComponent {
$$prop_def: { $$prop_def: {
/** /**