ToggleButtonGroup
ToggleButtonGroup component is used to create a group of toggle buttons.
basic-demo
Usage#
import { ToggleButtonGroup } from '@primereact/ui/togglebuttongroup';<ToggleButtonGroup></ToggleButtonGroup>Examples#
Controlled#
Use value and onValueChange properties to control the state of the ToggleButton.Group.
controlled-demo
'use client';
import type { ToggleButtonGroupValueChangeEvent } from '@primereact/types/shared/togglebutton';
import { ToggleButton } from '@primereact/ui/togglebutton';
import { ToggleButtonGroup } from '@primereact/ui/togglebuttongroup';
import * as React from 'react';
export default function ControlledDemo() {
const [value, setValue] = React.useState<string[]>([]);
return (
<div className="flex items-center justify-center">
<ToggleButtonGroup
allowEmpty={false}
value={value}
onValueChange={(e: ToggleButtonGroupValueChangeEvent) => setValue(e.value as string[])}
>
<ToggleButton.Root value="left">
<ToggleButton.Indicator>
<i className="pi pi-align-left" />
</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="center">
<ToggleButton.Indicator>
<i className="pi pi-align-center" />
</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="right">
<ToggleButton.Indicator>
<i className="pi pi-align-right" />
</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="justify">
<ToggleButton.Indicator>
<i className="pi pi-align-justify" />
</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
</div>
);
}
Multiple#
ToggleButton.Group allows selecting only one item by default and setting multiple option enables choosing more than one item. In multiple case, model property should be an array.
multiple-demo
import { ToggleButton } from '@primereact/ui/togglebutton';
import { ToggleButtonGroup } from '@primereact/ui/togglebuttongroup';
export default function MultipleDemo() {
return (
<div className="flex items-center justify-center">
<ToggleButtonGroup multiple>
<ToggleButton.Root value="bold">
<ToggleButton.Indicator>Bold</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="italic">
<ToggleButton.Indicator>Italic</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="underline">
<ToggleButton.Indicator>Underline</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
</div>
);
}
Sizes#
ToggleButton.Group provides small and large sizes as alternatives to the base by using the size property.
sizes-demo
import { ToggleButton } from '@primereact/ui/togglebutton';
import { ToggleButtonGroup } from '@primereact/ui/togglebuttongroup';
export default function SizesDemo() {
return (
<div className="flex flex-col gap-4 items-center justify-center">
<ToggleButtonGroup size="small" multiple>
<ToggleButton.Root value="bold">
<ToggleButton.Indicator>Bold</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="italic">
<ToggleButton.Indicator>Italic</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="underline">
<ToggleButton.Indicator>Underline</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
<ToggleButtonGroup size="normal" multiple>
<ToggleButton.Root value="bold">
<ToggleButton.Indicator>Bold</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="italic">
<ToggleButton.Indicator>Italic</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="underline">
<ToggleButton.Indicator>Underline</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
<ToggleButtonGroup size="large" multiple>
<ToggleButton.Root value="bold">
<ToggleButton.Indicator>Bold</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="italic">
<ToggleButton.Indicator>Italic</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="underline">
<ToggleButton.Indicator>Underline</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
</div>
);
}
Invalid#
Invalid state is displayed using the invalid prop to indicate a failed validation. This style is useful when integrating with form validation libraries.
invalid-demo
'use client';
import type { ToggleButtonGroupValueChangeEvent } from '@primereact/types/shared/togglebuttongroup';
import { ToggleButton } from '@primereact/ui/togglebutton';
import { ToggleButtonGroup } from '@primereact/ui/togglebuttongroup';
import * as React from 'react';
export default function InvalidDemo() {
const [value, setValue] = React.useState<string[] | null>(null);
return (
<div className="flex items-center justify-center">
<ToggleButtonGroup
value={value}
onValueChange={(e: ToggleButtonGroupValueChangeEvent) => setValue(e.value as string[])}
invalid={value === null}
>
<ToggleButton.Root value="monthly">
<ToggleButton.Indicator>Monthly</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="yearly">
<ToggleButton.Indicator>Yearly</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
</div>
);
}
Disabled#
When disabled is present, the element cannot be edited and focused entirely. Certain options can also be disabled using their disabled properties.
disabled-demo
import { ToggleButton } from '@primereact/ui/togglebutton';
import { ToggleButtonGroup } from '@primereact/ui/togglebuttongroup';
export default function DisabledDemo() {
return (
<div className="flex items-center gap-4 justify-center">
<ToggleButtonGroup disabled>
<ToggleButton.Root value="off">
<ToggleButton.Indicator>Off</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="on">
<ToggleButton.Indicator>On</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
<ToggleButtonGroup>
<ToggleButton.Root value="option1">
<ToggleButton.Indicator>Option 1</ToggleButton.Indicator>
</ToggleButton.Root>
<ToggleButton.Root value="option2" disabled>
<ToggleButton.Indicator>Option 2</ToggleButton.Indicator>
</ToggleButton.Root>
</ToggleButtonGroup>
</div>
);
}