Button Group
The igx-buttongroup component in Ignite UI for Angular provides a button group functionality with horizontal/vertical alignment and single/multiple selection along with toggling. The igx-buttongroup component makes use of the igxButton directive.
Button Group Demo
Dependencies
The Button Group is exported as an NgModule
, thus you will need to import the IgxButtonGroupModule
inside your AppModule
:
// app.module.ts
import { IgxButtonGroupModule } from 'igniteui-angular';
@NgModule({
imports: [
...
IgxButtonGroupModule,
...
]
})
export class AppModule {}
Usage
Use igx-buttongroup
to organize buttons into an Angular styled button group.
Alignment
Use the alignment
input to set the orientation of the buttons in the button group.
//sample.component.ts
import { ButtonGroupAlignment } from "igniteui-angular";
...
public alignment = ButtonGroupAlignment.vertical;
...
<!-- sample.component.html -->
<igx-buttongroup [alignment]="alignment">
<button igxButton>Sofia</button>
<button igxButton>London</button>
<button igxButton [selected]="true">New York</button>
<button igxButton>Tokyo</button>
</igx-buttongroup>
// sample.component.scss
igx-buttongroup{
display: inline-block;
width: 200px;
}
Multiple selection
Use the the multiSelection
input to enable the multiple selection in the button group.
<!-- sample.component.html -->
<igx-buttongroup [multiSelection]="true">
<button igxButton>
<igx-icon>format_bold</igx-icon>
</button>
<button igxButton>
<igx-icon>format_italic</igx-icon>
</button>
<button igxButton>
<igx-icon>format_underlined</igx-icon>
</button>
</igx-buttongroup>
Display Density
Use the displayDensity
input to set the display density for the button group. This will set the style for the buttons in the group to cosy, compact or comfortable (default value) accordingly.
Note
The display density of a button within a button group is not changed if it is explicitly specified.
// sample.component.ts
...
public displayDensity = "comfortable";
public displayDensities;
public ngOnInit() {
this.displayDensities = [
{ label: "compact", selected: this.displayDensity === "compact", togglable: true },
{ label: "cosy", selected: this.displayDensity === "cosy", togglable: true },
{ label: "comfortable", selected: this.displayDensity === "comfortable", togglable: true }
];
}
public selectDensity(event) {
this.displayDensity = this.displayDensities[event.index].label;
}
...
<!-- sample.component.html -->
<article class="sample-column">
<igx-buttongroup [multiSelection]="false" [values]="displayDensities" (onSelect)="selectDensity($event)"
[displayDensity]="displayDensity">
</igx-buttongroup>
</article>
Custom toggle buttons
Use the values
input to set an array of customized buttons in the button group.
// sample.component.ts
interface IButton {
ripple?: string;
label?: string;
disabled?: boolean;
togglable?: boolean;
selected?: boolean;
color?: string;
icon?: string;
}
class ToggleButton {
private ripple: string;
private label: string;
private disabled: boolean;
private togglable: boolean;
private selected: boolean;
private color: string;
private icon: string;
constructor(obj?: IButton) {
this.ripple = obj.ripple || "gray";
this.label = obj.label;
this.selected = obj.selected || false;
this.togglable = obj.togglable || true;
this.disabled = obj.disabled || false;
this.color = obj.color;
this.icon = obj.icon;
}
}
...
public bordersButtons: ToggleButton[];
public ngOnInit() {
this.bordersButtons = [
new ToggleButton({
icon: "border_top",
selected: true
}),
new ToggleButton({
icon: "border_right",
selected: false
}),
new ToggleButton({
icon: "border_bottom",
selected: false
}),
new ToggleButton({
icon: "border_left",
selected: false
})
];
}
...
<!-- sample.component.html -->
<igx-buttongroup [multiSelection]="true" [values]="borders"></igx-buttongroup>
API References
Additional Resources
Our community is active and always welcoming to new ideas.