[CL] add `hideIfEmpty` input to bit-nav-group (#12046)
This commit is contained in:
parent
234a832fc4
commit
365c7dd65e
|
@ -1,5 +1,6 @@
|
||||||
<!-- This a higher order component that composes `NavItemComponent` -->
|
<!-- This a higher order component that composes `NavItemComponent` -->
|
||||||
<bit-nav-item
|
<ng-container *ngIf="!hideIfEmpty || nestedNavComponents.length > 0">
|
||||||
|
<bit-nav-item
|
||||||
[text]="text"
|
[text]="text"
|
||||||
[icon]="icon"
|
[icon]="icon"
|
||||||
[route]="route"
|
[route]="route"
|
||||||
|
@ -10,7 +11,7 @@
|
||||||
(mainContentClicked)="handleMainContentClicked()"
|
(mainContentClicked)="handleMainContentClicked()"
|
||||||
[ariaLabel]="ariaLabel"
|
[ariaLabel]="ariaLabel"
|
||||||
[hideActiveStyles]="parentHideActiveStyles"
|
[hideActiveStyles]="parentHideActiveStyles"
|
||||||
>
|
>
|
||||||
<ng-template #button>
|
<ng-template #button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
|
@ -39,10 +40,10 @@
|
||||||
<ng-container *ngTemplateOutlet="button"></ng-container>
|
<ng-container *ngTemplateOutlet="button"></ng-container>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</bit-nav-item>
|
</bit-nav-item>
|
||||||
|
|
||||||
<!-- [attr.aria-controls] of the above button expects a unique ID on the controlled element -->
|
<!-- [attr.aria-controls] of the above button expects a unique ID on the controlled element -->
|
||||||
<ng-container *ngIf="sideNavService.open$ | async">
|
<ng-container *ngIf="sideNavService.open$ | async">
|
||||||
<div
|
<div
|
||||||
*ngIf="open"
|
*ngIf="open"
|
||||||
[attr.id]="contentId"
|
[attr.id]="contentId"
|
||||||
|
@ -51,4 +52,5 @@
|
||||||
>
|
>
|
||||||
<ng-content></ng-content>
|
<ng-content></ng-content>
|
||||||
</div>
|
</div>
|
||||||
|
</ng-container>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
|
@ -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>();
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue