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

[New Nav Feature] Created EuiCollapsibleGroup #3031

Merged
54 changes: 54 additions & 0 deletions src-docs/src/views/collapsible_nav/collapsible_nav_example.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,17 @@ import {
EuiText,
EuiSpacer,
EuiCallOut,
EuiCollapsibleNavGroup,
} from '../../../../src/components';

import CollapsibleNav from './collapsible_nav';
const collapsibleNavSource = require('!!raw-loader!./collapsible_nav');
const collapsibleNavHtml = renderToHtml(CollapsibleNav);

import CollapsibleNavGroup from './collapsible_nav_group';
const collapsibleNavGroupSource = require('!!raw-loader!./collapsible_nav_group');
const collapsibleNavGroupHtml = renderToHtml(CollapsibleNavGroup);

export const CollapsibleNavExample = {
title: 'Collapsible nav',
intro: (
Expand Down Expand Up @@ -64,6 +69,55 @@ export const CollapsibleNavExample = {
),
props: { EuiCollapsibleNav },
demo: <CollapsibleNav />,
snippet: `<EuiButton onClick={() => setNavIsOpen(!navIsOpen)}>Toggle nav</EuiButton>
{navIsOpen && (
<EuiCollapsibleNav
docked={navIsDocked}
onClose={() => setNavIsOpen(false)}
/>
)}`,
},
{
title: 'Collapsible nav group',
source: [
{
type: GuideSectionTypes.JS,
code: collapsibleNavGroupSource,
},
{
type: GuideSectionTypes.HTML,
code: collapsibleNavGroupHtml,
},
],
text: (
<>
<p>
An <strong>EuiCollapsibleNavGroup</strong> adds some basic borders
and <EuiCode>background</EuiCode> color of <EuiCode>none</EuiCode>,{' '}
<EuiCode>light</EuiCode>, or <EuiCode>dark</EuiCode>. Give each
seaction a heading by providing an optional <EuiCode>title</EuiCode>{' '}
and <EuiCode>iconType</EuiCode>. Make the section collapsible (
<Link to="/layout/accordion">accordion style</Link>) with{' '}
<EuiCode language="js">collapsible=true</EuiCode>.
</p>
<p>
When in <EuiCode>collapsible</EuiCode> mode, a{' '}
<EuiCode>title</EuiCode> and{' '}
<EuiCode language="ts">initialIsOpen:boolean</EuiCode> is required.
</p>
</>
),
props: {
EuiCollapsibleNavGroup,
},
demo: <CollapsibleNavGroup />,
snippet: `<EuiCollapsibleNavGroup
title="Nav group"
iconType="logo"
collapsible={true}
initialIsOpen={true}
background="none"
/>`,
},
],
};
55 changes: 55 additions & 0 deletions src-docs/src/views/collapsible_nav/collapsible_nav_group.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import React from 'react';

import { EuiCollapsibleNavGroup } from '../../../../src/components/collapsible_nav';
import { EuiText } from '../../../../src/components/text';
import { EuiCode } from '../../../../src/components/code';

export default () => (
<>
<EuiCollapsibleNavGroup>
<EuiText size="s" color="subdued">
<p>This is a basic group without any modifications</p>
</EuiText>
</EuiCollapsibleNavGroup>
<EuiCollapsibleNavGroup title="Nav group" iconType="logoElastic">
<EuiText size="s" color="subdued">
<p>
This is a nice group with a heading supplied via{' '}
<EuiCode>title</EuiCode> and <EuiCode>iconType</EuiCode>.
</p>
</EuiText>
</EuiCollapsibleNavGroup>
<EuiCollapsibleNavGroup
background="light"
title="Nav group"
collapsible={true}
iconType="logoElastic"
initialIsOpen={true}>
<EuiText size="s" color="subdued">
<p>
This group is <EuiCode>collapsible</EuiCode> and set with{' '}
<EuiCode>initialIsOpen</EuiCode>. It has a heading that is the
collapsing button via <EuiCode>title</EuiCode> and{' '}
<EuiCode>iconType</EuiCode>.
</p>
</EuiText>
</EuiCollapsibleNavGroup>
<EuiCollapsibleNavGroup
title="Nav group"
iconType="logoGCPMono"
iconSize="xxl"
titleSize="s"
collapsible={true}
initialIsOpen={false}
background="dark">
<EuiText size="s">
<p>
This is a <EuiCode>dark</EuiCode> <EuiCode>collapsible</EuiCode> group
that is initally set to closed,{' '}
<EuiCode>iconSize=&quot;xxl&quot;</EuiCode> and{' '}
<EuiCode>titleSize=&quot;s&quot;</EuiCode>.
</p>
</EuiText>
</EuiCollapsibleNavGroup>
</>
);
2 changes: 2 additions & 0 deletions src/components/collapsible_nav/_index.scss
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
@import 'variables';

@import 'collapsible_nav_group/index';
@import 'collapsible_nav';
12 changes: 12 additions & 0 deletions src/components/collapsible_nav/_variables.scss
Original file line number Diff line number Diff line change
@@ -1,2 +1,14 @@
// Sizing
$euiCollapsibleNavWidth: $euiSize * 20; // ~ 320px

$euiCollapsibleNavGroupLightBackgroundColor: $euiPageBackgroundColor;

$euiCollapsibleNavGroupDarkBackgroundColor: lightOrDarkTheme(
shade($euiColorDarkestShade, 20%),
shade($euiColorLightestShade, 50%),
);

$euiCollapsibleNavGroupDarkHighContrastColor: makeGraphicContrastColor(
$euiColorPrimary,
$euiCollapsibleNavGroupDarkBackgroundColor
);
Loading