1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-11 22:03:36 +00:00

[CL] add hideIfEmpty input to bit-nav-group (#12046)

This commit is contained in:
Thomas Rittson
2024-11-21 04:06:07 +10:00
committed by GitHub
parent 234a832fc4
commit 365c7dd65e
3 changed files with 81 additions and 48 deletions

View File

@@ -1,4 +1,5 @@
<!-- This a higher order component that composes `NavItemComponent` --> <!-- This a higher order component that composes `NavItemComponent` -->
<ng-container *ngIf="!hideIfEmpty || nestedNavComponents.length > 0">
<bit-nav-item <bit-nav-item
[text]="text" [text]="text"
[icon]="icon" [icon]="icon"
@@ -52,3 +53,4 @@
<ng-content></ng-content> <ng-content></ng-content>
</div> </div>
</ng-container> </ng-container>
</ng-container>

View File

@@ -1,5 +1,6 @@
import { import {
AfterContentInit, AfterContentInit,
booleanAttribute,
Component, Component,
ContentChildren, ContentChildren,
EventEmitter, EventEmitter,
@@ -40,6 +41,12 @@ export class NavGroupComponent extends NavBaseComponent implements AfterContentI
@Input() @Input()
open = false; open = false;
/**
* Automatically hide the nav group if there are no child buttons
*/
@Input({ transform: booleanAttribute })
hideIfEmpty = false;
@Output() @Output()
openChange = new EventEmitter<boolean>(); openChange = new EventEmitter<boolean>();

View File

@@ -88,6 +88,30 @@ export const Default: StoryObj<NavGroupComponent> = {
}), }),
}; };
export const HideEmptyGroups: StoryObj<NavGroupComponent & { renderChildren: boolean }> = {
args: {
hideIfEmpty: true,
renderChildren: false,
},
render: (args) => ({
props: args,
template: /*html*/ `
<bit-side-nav>
<bit-nav-group text="Hello World (Anchor)" [route]="['a']" icon="bwi-filter" [hideIfEmpty]="hideIfEmpty">
<bit-nav-item text="Child A" route="a" icon="bwi-filter" *ngIf="renderChildren"></bit-nav-item>
<bit-nav-item text="Child B" route="b" *ngIf="renderChildren"></bit-nav-item>
<bit-nav-item text="Child C" route="c" icon="bwi-filter" *ngIf="renderChildren"></bit-nav-item>
</bit-nav-group>
<bit-nav-group text="Lorem Ipsum (Button)" icon="bwi-filter">
<bit-nav-item text="Child A" icon="bwi-filter"></bit-nav-item>
<bit-nav-item text="Child B"></bit-nav-item>
<bit-nav-item text="Child C" icon="bwi-filter"></bit-nav-item>
</bit-nav-group>
</bit-side-nav>
`,
}),
};
export const Tree: StoryObj<NavGroupComponent> = { export const Tree: StoryObj<NavGroupComponent> = {
render: (args) => ({ render: (args) => ({
props: args, props: args,