Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,19 @@ const sectionStyles = {
paddingBlock: euiTheme.size.xs,
paddingInline: euiTheme.size.s,
}),
euiCollapsibleNavItem: ({ euiTheme }: Theme) => css`
.euiAccordion__childWrapper {
transition: none; // Remove the transition as it does not play well with dynamic links added to the accordion
euiCollapsibleNavSection: ({ euiTheme }: Theme) => css`
.euiCollapsibleNavAccordion.isSelected {
.euiAccordion__triggerWrapper,
.euiCollapsibleNavLink {
background-color: ${euiTheme.colors.backgroundLightPrimary};
}
}

.euiAccordion__children .euiCollapsibleNavItem__items {
padding-inline-start: ${euiTheme.size.m};
margin-inline-start: ${euiTheme.size.m};
}

&:only-child .euiCollapsibleNavItem__icon {
transform: scale(1.33);
}
Expand All @@ -60,15 +65,19 @@ const sectionStyles = {
:hover {
background-color: ${euiTheme.colors.backgroundBaseInteractiveHover};
}

&.isSelected {
background-color: ${euiTheme.colors.backgroundLightPrimary};
:hover {
background-color: ${euiTheme.colors.backgroundLightPrimary};
}
}
}

`,
euiAccordionChildWrapper: ({ euiTheme }: Theme) => css`
.euiAccordion__childWrapper {
background-color: ${euiTheme.colors.backgroundBasePlain};
transition: none; // Remove the transition as it does not play well with dynamic links added to the accordion
}
`,
};
Expand Down Expand Up @@ -461,7 +470,8 @@ function nodeToEuiCollapsibleNavProps(
path,
isSelected,
onClick,
css: sectionStyles.euiCollapsibleNavSubItem,
css: [sectionStyles.euiCollapsibleNavSubItem, sectionStyles.euiAccordionChildWrapper],
className: classnames([isSelected ? 'isSelected' : undefined]),
icon: navNode.icon,
// @ts-expect-error title accepts JSX elements and they render correctly but the type definition expects a string
title: navNode.withBadge ? <SubItemTitle item={navNode} /> : navNode.title,
Expand Down Expand Up @@ -609,12 +619,12 @@ export const NavigationSectionUI: FC<Props> = React.memo(({ navNode: _navNode })
{items ? (
<EuiCollapsibleNavItem
{...rest}
css={sectionStyles.euiCollapsibleNavItem}
css={[sectionStyles.euiCollapsibleNavSection, sectionStyles.euiAccordionChildWrapper]}
items={items}
accordionProps={getAccordionProps(navNode.path)}
/>
) : (
<EuiCollapsibleNavItem {...props} css={sectionStyles.euiCollapsibleNavItem} />
<EuiCollapsibleNavItem {...props} css={sectionStyles.euiCollapsibleNavSection} />
)}
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,15 @@ const NavigationWrapper: FC<Props & Omit<Partial<EuiCollapsibleNavBetaProps>, 'c
{props.clickActionText ?? 'Click me'}
</EuiButton>
) : (
<p>Hello world</p>
<>
<h1>Solution side nav</h1>
<br />
<p>There should be multiple &quot;selected&quot; nodes in the side nav:</p>
<ul>
<li>* Item 03 &raquo; Item 22</li>
<li>* Footer parent 1 &raquo; Item 35</li>
</ul>
</>
)}
</EuiPageTemplate.Section>
</EuiPageTemplate>
Expand Down Expand Up @@ -456,49 +464,35 @@ const generalLayoutNavTree: NavigationTreeDefinitionUI = {
path: '',
children: [
{
id: 'footer-section5',
title: 'Parent item, closed',
id: 'footer-section6',
title: 'Footer parent 1',
path: '',
renderAs: 'accordion',
spaceBefore: null,
icon: 'iInCircle',
defaultIsCollapsed: false,
children: [
{
id: 'item29',
id: 'item33',
path: '',
title: 'Item 29',
title: 'Item 33',
href: '/app/kibana',
icon: 'iInCircle',
},
{
id: 'item30',
id: 'item34',
path: '',
title: 'Item 30',
title: 'Item 34',
href: '/app/kibana',
icon: 'iInCircle',
},
{
id: 'item31',
id: 'item35',
path: '',
title: 'Item 31',
title: 'Item 35',
href: '/app/kibana',
icon: 'iInCircle',
},
{
id: 'sub-accordion',
icon: 'iInCircle',
title: 'Sub-Accordion',
path: '',
renderAs: 'accordion',
children: [
{
id: 'sub1',
path: '',
title: 'Item 32',
href: '/app/kibana',
icon: 'iInCircle',
},
],
openInNewTab: true,
},
],
},
Expand All @@ -510,35 +504,49 @@ const generalLayoutNavTree: NavigationTreeDefinitionUI = {
href: '/app/kibana',
},
{
id: 'footer-section6',
title: 'Parent item, opened',
id: 'footer-section5',
title: 'Footer parent 2',
path: '',
renderAs: 'accordion',
spaceBefore: null,
icon: 'iInCircle',
defaultIsCollapsed: false,
children: [
{
id: 'item33',
id: 'item29',
path: '',
title: 'Item 33',
title: 'Item 29',
href: '/app/kibana',
icon: 'iInCircle',
},
{
id: 'item34',
id: 'item30',
path: '',
title: 'Item 34',
title: 'Item 30',
href: '/app/kibana',
icon: 'iInCircle',
},
{
id: 'item35',
id: 'item31',
path: '',
title: 'Item 35',
title: 'Item 31',
href: '/app/kibana',
icon: 'iInCircle',
openInNewTab: true,
},
{
id: 'sub-accordion',
icon: 'iInCircle',
title: 'Sub-Accordion',
path: '',
renderAs: 'accordion',
children: [
{
id: 'sub1',
path: '',
title: 'Item 32',
href: '/app/kibana',
icon: 'iInCircle',
},
],
},
],
},
Expand Down Expand Up @@ -585,6 +593,11 @@ export const GeneralLayoutStructure = (args: NavigationServices) => {
{ id: '', path: 'example_project.root-section1.item03.child-section4' },
{ id: '', path: 'example_project.root-section1.item03.child-section4.sub3' },
],
[
{ id: '', path: 'example_project_footer' },
{ id: '', path: 'example_project_footer.footer-section6' },
{ id: '', path: 'example_project_footer.footer-section6.item35' },
],
]);

return (
Expand Down
Loading