Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs.
<div> <b-input-group size="lg" prepend="$" append=".00"> <b-form-input></b-form-input> </b-input-group> <b-input-group class="mt-3"> <template #append> <b-input-group-text><strong class="text-danger">!</strong></b-input-group-text> </template> <b-form-input></b-form-input> </b-input-group> <b-input-group prepend="Username" class="mt-3"> <b-form-input></b-form-input> <b-input-group-append> <b-button variant="outline-success">Button</b-button> <b-button variant="info">Button</b-button> </b-input-group-append> </b-input-group> </div>Usage
You can attach addons using either props, named slots and/or sub-components.
Usingprepend
and append
props
Values will be internally wrapped by a <b-input-group-text>
to display correctly.
<div> <b-input-group prepend="$" append=".00"> <b-form-input></b-form-input> </b-input-group> <b-input-group prepend="0" append="100" class="mt-3"> <b-form-input type="range" min="0" max="100"></b-form-input> </b-input-group> </div>Using named slots
if you want better control over addons, you can use prepend
and append
slots instead.
The slot content will automatically be wrapped by <b-input-group-prepend>
or <b-input-group-append>
to display correctly.
<div> <b-input-group> <template #prepend> <b-input-group-text >Username</b-input-group-text> </template> <b-form-input></b-form-input> <template #append> <b-dropdown text="Dropdown" variant="success"> <b-dropdown-item>Action A</b-dropdown-item> <b-dropdown-item>Action B</b-dropdown-item> </b-dropdown> </template> </b-input-group> </div>Using sub-components
Use the <b-input-group-prepend>
or <b-input-group-append>
to add arbitrary addons wherever you like, and use these components to group buttons in your input group. Single buttons must always be wrapped in these components for proper styling.
<div> <b-input-group> <b-input-group-prepend> <b-button variant="outline-info">Button</b-button> </b-input-group-prepend> <b-form-input type="number" min="0.00"></b-form-input> <b-input-group-append> <b-button variant="outline-secondary">Button</b-button> <b-button variant="outline-primary">Button</b-button> <b-input-group-text> <b-icon icon="x" /> </b-input-group-text> </b-input-group-append> </b-input-group> </div>
Set the is-text
prop on <b-input-group-prepend>
or <b-input-group-append>
if the content is textual in nature to apply proper styling. Alternatively, place the <b-input-group-text>
subcomponent inside of the <b-input-group-prepend>
or <b-input-group-append>
. This also applies when you want to use on of BootstrapVue's icons.
The following are the form controls supported as the input-group's main input element:
<b-form-input>
<b-form-textarea>
<b-form-select>
<b-form-file>
<b-form-rating>
<b-form-tags>
<b-form-spinbutton>
<b-form-datepicker>
<b-form-timepicker>
Notes:
<b-form-file>
input when it is placed in a <b-input-group>
which has a size
specified.<b-form-input type="range">
is placed in a <b-input-group>
.<b-form-spinbutton>
, <b-form-rating>
, <b-form-tags>
, etc.) require BootstrapVue's custom SCSS/CSS.Place any checkbox or radio within an input group's addon instead of text.
Note: Bootstrap v4.x recommends using native radio and checkbox inputs over custom radios and checkboxes, but it is possible to use as <b-form-radio>
and <b-form-checkbox>
with a few utility classes applied.
<div> <b-input-group class="mb-2"> <b-input-group-prepend is-text> <input type="checkbox" aria-label="Checkbox for following text input"> </b-input-group-prepend> <b-form-input aria-label="Text input with checkbox"></b-form-input> </b-input-group> <b-input-group> <b-input-group-prepend is-text> <input type="radio" aria-label="Radio for following text input"> </b-input-group-prepend> <b-form-input aria-label="Text input with radio input"></b-form-input> </b-input-group> </div>Custom radio, checkbox, and switch addons
Using <b-form-checkbox>
and <b-form-radio>
components as addons, using Bootstrap utility classes for additional styling to get them to "fit" in the addon:
<div> <b-input-group class="mb-2"> <b-input-group-prepend is-text> <b-form-checkbox class="mr-n2"> <span class="sr-only">Checkbox for following text input</span> </b-form-checkbox> </b-input-group-prepend> <b-form-input aria-label="Text input with checkbox"></b-form-input> </b-input-group> <b-input-group class="mb-2"> <b-input-group-prepend is-text> <b-form-radio class="mr-n2"> <span class="sr-only">Radio for following text input</span> </b-form-radio> </b-input-group-prepend> <b-form-input aria-label="Text input with radio input"></b-form-input> </b-input-group> <b-input-group> <b-input-group-prepend is-text> <b-form-checkbox switch class="mr-n2"> <span class="sr-only">Switch for following text input</span> </b-form-checkbox> </b-input-group-prepend> <b-form-input aria-label="Text input with switch"></b-form-input> </b-input-group> </div>
In the above example, we have use the .sr-only
class on a <span>
to visually hide the custom control's label content (while making them still accessible to screen reader users), and used the utility class .mr-n2
to add a negative right margin to compensate for the "gutter" space between the control and the hidden label.
<div> <b-input-group prepend="First and last name" class="mb-2"> <b-form-input aria-label="First name"></b-form-input> <b-form-input aria-label="Last name"></b-form-input> </b-input-group> </div>Multiple addons
Multiple add-ons are supported and can be mixed with checkbox and radio input versions.
<div> <b-input-group prepend="Item"> <b-input-group-prepend is-text> <input type="checkbox" aria-label="Checkbox for following text input"> </b-input-group-prepend> <b-input-group-prepend is-text><b>$</b></b-input-group-prepend> <b-form-input type="number" aria-label="Text input with checkbox"></b-form-input> </b-input-group> </div>Dropdown addons
<div> <b-input-group> <template #prepend> <b-dropdown text="Dropdown" variant="info"> <b-dropdown-item>Action A</b-dropdown-item> <b-dropdown-item>Action B</b-dropdown-item> </b-dropdown> </template> <b-form-input></b-form-input> <template #append> <b-dropdown text="Dropdown" variant="outline-secondary" v-for="i in 2" :key="i"> <b-dropdown-item>Action C</b-dropdown-item> <b-dropdown-item>Action D</b-dropdown-item> </b-dropdown> </template> </b-input-group> </div>Control sizing
Set height using the size
prop to sm
or lg
for small or large respectively. There is no need to set size on the individual inputs or buttons. Note however, you will be required to also set the size on dropdowns.
<div> <b-input-group v-for="size in ['sm','','lg']" :key="size" :size="size" class="mb-3" prepend="Label" > <b-form-input></b-form-input> <b-input-group-append> <b-button size="sm" text="Button" variant="success">Button</b-button> </b-input-group-append> </b-input-group> </div>
To control width, place the input inside standard Bootstrap grid column.
Sizing custom radio, checkbox and switch addonsIf using <b-form-radio>
or <b-form-checkbox>
as addons, additional utility classes may be required to make everything fit correctly, depending on the size chosen:
<div> <b-input-group size="sm" prepend="Small" class="mb-2"> <b-form-input aria-label="Small text input with custom switch"></b-form-input> <b-input-group-append is-text> <b-form-checkbox switch class="mr-n2 mb-n1"> <span class="sr-only">Checkbox for previous text input</span> </b-form-checkbox> </b-input-group-append> </b-input-group> <b-input-group size="lg" prepend="Large" class="mb-2"> <b-form-input aria-label="Large text input with switch"></b-form-input> <b-input-group-append is-text> <b-form-checkbox switch class="mr-n2"> <span class="sr-only">Switch for previous text input</span> </b-form-checkbox> </b-input-group-append> </b-input-group> </div>
Specifically, when using the sm
size on <b-input-group>
you will need to add a negative bottom margin, via the use of the .mb-n1
utility class.
Bootstrap v4 currently does not support contextual state styling (i.e. valid or invalid) of input groups. However, the inputs inside the input group do support contextual state.
Component reference PropertiesAll property default values are globally configurable.
Property
Type
Default
Description
append
String
Text to append to the input group append-html
String
HTML string to append to the input group. Has precedence over 'append' prop id
String
Used to set the `id` attribute on the rendered content, and used as the base to generate any additional element IDs as needed prepend
String
Text to prepend to the input group prepend-html
String
HTML string to prepend to the input group. Has precedence over 'prepend' prop size
String
Set the size of the component's appearance. 'sm', 'md' (default), or 'lg' tag
String
'div'
Specify the HTML tag to render instead of the default tag
Caution: Props that support HTML strings (*-html
) can be vulnerable to Cross Site Scripting (XSS) attacks when passed raw user supplied values. You must properly sanitize the user input first!
Name
Description
append
Append attachment default
Content to place in the input group prepend
Prepend attachment
Properties
All property default values are globally configurable.
Property
Type
Default
Description
id
String
Used to set the `id` attribute on the rendered content, and used as the base to generate any additional element IDs as needed is-text
Boolean
false
When 'true', wraps the content in a b-input-group-text component tag
String
'div'
Specify the HTML tag to render instead of the default tag Slots
Name
Description
default
Content to place in the input group prepend
Properties
All property default values are globally configurable.
Property
Type
Default
Description
id
String
Used to set the `id` attribute on the rendered content, and used as the base to generate any additional element IDs as needed is-text
Boolean
false
When 'true', wraps the content in a b-input-group-text component tag
String
'div'
Specify the HTML tag to render instead of the default tag Slots
Name
Description
default
Content to place in the input group append
Properties
All property default values are globally configurable.
Property
Type
Default
Description
tag
String
'div'
Specify the HTML tag to render instead of the default tag Slots
Name
Description
default
Content to place in the input group text
Properties
All property default values are globally configurable.
Property
Type
Default
Description
append
Boolean
false
When set to 'true' sets the addon as being appended. defaults to 'false' which is prepended id
String
Used to set the `id` attribute on the rendered content, and used as the base to generate any additional element IDs as needed is-text
Boolean
false
When 'true', wraps the content in a b-input-group-text component tag
String
'div'
Specify the HTML tag to render instead of the default tag Slots
Name
Description
default
Content to place in the input group addon Importing individual components
You can import individual components into your project via the following named exports:
Component
Named Export
Import Path
<b-input-group>
BInputGroup
bootstrap-vue
<b-input-group-prepend>
BInputGroupPrepend
bootstrap-vue
<b-input-group-append>
BInputGroupAppend
bootstrap-vue
<b-input-group-text>
BInputGroupText
bootstrap-vue
<b-input-group-addon>
BInputGroupAddon
bootstrap-vue
Example:
import { BInputGroup } from 'bootstrap-vue' Vue.component('b-input-group', BInputGroup)Importing as a Vue.js plugin
This plugin includes all of the above listed individual components. Plugins also include any component aliases.
Named Export
Import Path
InputGroupPlugin
bootstrap-vue
Example:
import { InputGroupPlugin } from 'bootstrap-vue' Vue.use(InputGroupPlugin)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4