Skip to content

Button Group

Collection of buttons consisting of at least 2 buttons in single line

Button Group is a collection of buttons consisting of at least 2 buttons in single line. Therefore, the Button Group is very dependent on the Button component. But it should be underlined that not all props on the Button can work here.

Usage

Simple Button

preview
vue
<template>
  <p-button-group>
    <p-button>Button Text</p-button>
    <p-button>Button Text</p-button>
  </p-button-group>
</template>

Button with Addon

Place one add-on on either side of a Button. You may also make Button all addon.

Addon Left

preview
vue
<template>
  <p-button-group>
    <p-button icon color="info"><IconChevronLeft /></p-button>
    <p-button color="info">Button Text</p-button>
  </p-button-group>
</template>

<script setup>
  import IconChevronLeft from '@privyid/persona-icon/vue/chevron-left/20.vue'
</script>

Addon Right

In the button group, to simplify several actions in one button, it can be combined with the Dropdown component.

preview
vue
<template>
  <p-button-group>
    <p-button color="info">Button Text</p-button>
    <p-dropdown
      color="info"
      no-caret
      icon>
      <template #button-content>
        <IconChevronDown />
      </template>
      <p-dropdown-item>Action</p-dropdown-item>
      <p-dropdown-item>Another action</p-dropdown-item>
      <p-dropdown-item>Something else here</p-dropdown-item>
    </p-dropdown>
  </p-button-group>
</template>

<script setup>
  import IconChevronDown from '@privyid/persona-icon/vue/chevron-down/20.vue'
</script>

All Addon

Button Group all addon is group a series of buttons with only icon

preview
vue
<template>
  <p-button-group>
    <p-button icon><IconChevronLeft /></p-button>
    <p-button icon><IconChevronRight /></p-button>
  </p-button-group>
</template>

<script setup>
  import IconChevronLeft from '@privyid/persona-icon/vue/chevron-left/20.vue'
  import IconChevronRight from '@privyid/persona-icon/vue/chevron-right/20.vue'
</script>

Variants

Button Group just available in 2 variants: solid and outline. You can make these variants by applying variant to each button in a group.

preview
vue
<template>
  <p-button-group>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
  </p-button-group>
  <p-button-group>
    <p-button color="info" variant="outline">Button Text</p-button>
    <p-button color="info" variant="outline">Button Text</p-button>
    <p-button color="info" variant="outline">Button Text</p-button>
  </p-button-group>
</template>

Color

You can change color of Button Group by applying color to every Button in a group.

preview
vue
<template>
  <p-button-group>
    <p-button color="primary">Button Text</p-button>
    <p-button color="primary">Button Text</p-button>
    <p-button color="primary">Button Text</p-button>
  </p-button-group>
  <p-button-group>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
  </p-button-group>
  <p-button-group>
    <p-button color="success">Button Text</p-button>
    <p-button color="success">Button Text</p-button>
    <p-button color="success">Button Text</p-button>
  </p-button-group>
  <p-button-group>
    <p-button color="warning">Button Text</p-button>
    <p-button color="warning">Button Text</p-button>
    <p-button color="warning">Button Text</p-button>
  </p-button-group>
  <p-button-group>
    <p-button color="danger">Button Text</p-button>
    <p-button color="danger">Button Text</p-button>
    <p-button color="danger">Button Text</p-button>
  </p-button-group>
</template>

Sizing

Instead of applying button sizing prop to every button in a group, you just can add size in Button Group. There are 4 sizes available: xs, sm, md and lg. Default is md

preview
vue
<template>
  <p-button-group size="xs">
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
  </p-button-group>
  <p-button-group size="sm">
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
  </p-button-group>
  <p-button-group size="md">
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
  </p-button-group>
  <p-button-group size="lg">
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
    <p-button color="info">Button Text</p-button>
  </p-button-group>
</template>

Pill mode

You just add pill in Button Group to make button more rounded. Prop pill of every single Button will not working in Button Group

preview
vue
<template>
  <div>
    <p-button-group pill>
      <p-button color="info">Button Text</p-button>
      <p-button color="info">Button Text</p-button>
      <p-button color="info">Button Text</p-button>
    </p-button-group>
  </div>
  <div>
    <p-button-group pill>
      <p-button color="info" variant="outline">Button Text</p-button>
      <p-button color="info" variant="outline">Button Text</p-button>
      <p-button color="info" variant="outline">Button Text</p-button>
    </p-button-group>
  </div>
  <div>
</template>

API

Props

PropsTypeDefaultDescription
sizeStringmdSize of button group, valid value is xs, sm, md and lg
pillBooleanfalseEnable pill mode

Slots

NameDescription
defaultContent (in the form of— button) to place in button group

Events

NameArgumentsDescription
There no event here

See Also

Released under the MIT License.