Skip to content

ButtonGroup ​

Group a series of buttons together on a single line with the button group.

WARNING

When using tooltips or popovers on elements within a btn-group, make sure they're appended to body.

Example ​

Wrap a series of <btn> in <btn-group>.

vue
<template>
  <BtnGroup>
    <Btn>Left</Btn>
    <Btn>Middle</Btn>
    <Btn>Right</Btn>
  </BtnGroup>
</template>

<script setup>
import { Btn, BtnGroup } from 'uiv';
</script>

Button toolbar ​

Combine sets of <btn-group> into a <btn-toolbar> for more complex components.

vue
<template>
  <BtnToolbar>
    <BtnGroup>
      <Btn>1</Btn>
      <Btn>2</Btn>
      <Btn>3</Btn>
      <Btn>4</Btn>
    </BtnGroup>
    <BtnGroup>
      <Btn>5</Btn>
      <Btn>6</Btn>
      <Btn>7</Btn>
    </BtnGroup>
    <BtnGroup>
      <Btn>8</Btn>
    </BtnGroup>
  </BtnToolbar>
</template>

<script setup>
import { Btn, BtnGroup, BtnToolbar } from 'uiv';
</script>

Sizing ​

Instead of applying button sizing classes to every button in a group, just add size to each <btn-group>, including when nesting multiple groups.

vue
<template>
  <p>
    <BtnGroup size="lg">
      <Btn>Left</Btn>
      <Btn>Middle</Btn>
      <Btn>Right</Btn>
    </BtnGroup>
  </p>
  <p>
    <BtnGroup>
      <Btn>Left</Btn>
      <Btn>Middle</Btn>
      <Btn>Right</Btn>
    </BtnGroup>
  </p>
  <p>
    <BtnGroup size="sm">
      <Btn>Left</Btn>
      <Btn>Middle</Btn>
      <Btn>Right</Btn>
    </BtnGroup>
  </p>
  <p>
    <BtnGroup size="xs">
      <Btn>Left</Btn>
      <Btn>Middle</Btn>
      <Btn>Right</Btn>
    </BtnGroup>
  </p>
</template>

<script setup>
import { Btn, BtnGroup } from 'uiv';
</script>

Nesting ​

btn-group class will be automatically added to <dropdown> when you want dropdown menus mixed with a series of buttons.

vue
<template>
  <BtnGroup>
    <Btn>Left</Btn>
    <Btn>Middle</Btn>
    <Dropdown>
      <Btn class="dropdown-toggle">Dropdown <span class="caret"></span></Btn>
      <template #dropdown>
        <li><a role="button">Action</a></li>
        <li><a role="button">Another action</a></li>
        <li><a role="button">Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a role="button">Separated link</a></li>
      </template>
    </Dropdown>
    <Btn>Right</Btn>
  </BtnGroup>
</template>

<script setup>
import { Btn, BtnGroup, Dropdown } from 'uiv';
</script>

Vertical ​

Make a set of buttons appear vertically stacked rather than horizontally by adding vertical.

WARNING

Split button dropdowns are not supported here.

vue
<template>
  <BtnGroup vertical>
    <Btn>Top</Btn>
    <Btn>Center</Btn>
    <Dropdown>
      <Btn class="dropdown-toggle">Dropdown <span class="caret"></span></Btn>
      <template #dropdown>
        <li><a role="button">Action</a></li>
        <li><a role="button">Another action</a></li>
        <li><a role="button">Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a role="button">Separated link</a></li>
      </template>
    </Dropdown>
    <Btn>Bottom</Btn>
  </BtnGroup>
</template>

<script setup>
import { Btn, BtnGroup, Dropdown } from 'uiv';
</script>

Justified ​

Make a group of buttons stretch at equal sizes to span the entire width of its parent by adding justified. Also works with button dropdowns within the button group.

WARNING

Due to Bootstrap limitation, justified prop on <btn> is needed while it is render as button.

vue
<template>
  <BtnGroup justified>
    <Btn href="javascript:;">Left</Btn>
    <Btn href="javascript:;">Middle</Btn>
    <Btn href="javascript:;">Right</Btn>
  </BtnGroup>
  <br />
  <BtnGroup justified>
    <Btn justified>Left</Btn>
    <Btn justified>Middle</Btn>
    <Dropdown>
      <Btn class="dropdown-toggle">Dropdown <span class="caret"></span></Btn>
      <template #dropdown>
        <li><a role="button">Action</a></li>
        <li><a role="button">Another action</a></li>
        <li><a role="button">Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a role="button">Separated link</a></li>
      </template>
    </Dropdown>
  </BtnGroup>
</template>

<script setup>
import { Btn, BtnGroup, Dropdown } from 'uiv';
</script>

API Reference ​

BtnGroup ​

Props ​

NameTypeDefaultRequiredDescription
sizeStringOptional button sizes. Supported: lg, sm, xs.
verticalBooleanfalseApply vertical style.
justifiedBooleanfalseApply justified style.

Slots ​

NameDescription
defaultThe button group body.

BtnToolbar ​

This component has no props.

Released under the MIT License.