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.