You can set the
defaultFieldLabelPosition constructor option to override the default style
Field General
All generic form controls, designed for consistency
Buval supports the following native HTML form elements: <form> <button> <input> <textarea> and <label>.
The following CSS classes are supported:
labelinputtextareaselectcheckboxradiobuttonhelp
To maintain the design evenly balanced, Buval provides a very useful control container with which you can wrap the form controls.
When combining several controls in a form, use the field class as a container, to keep the spacing consistent.
Complete form example
This username is available
This email is invalid
<div class="field">
<label class="label">Name</label>
<div class="control">
<input class="input" type="text" placeholder="Text input">
</div>
</div>
<div class="field">
<label class="label">Username</label>
<div class="control has-icons-left has-icons-right">
<input class="input is-success" type="text" placeholder="Text input" value="buval">
<span class="icon is-small is-left">
<i class="fas fa-user"/>
</span>
<span class="icon is-small is-right">
<i class="fas fa-check"/>
</span>
</div>
<p class="help is-success">This username is available</p>
</div>
<div class="field">
<label class="label">Email</label>
<div class="control has-icons-left has-icons-right">
<input class="input is-danger" type="email" placeholder="Email input" value="hello@">
<span class="icon is-small is-left">
<i class="fas fa-envelope"/>
</span>
<span class="icon is-small is-right">
<i class="fas fa-exclamation-triangle"/>
</span>
</div>
<p class="help is-danger">This email is invalid</p>
</div>
<div class="field">
<label class="label">Subject</label>
<div class="control">
<div class="select">
<select>
<option>Select dropdown</option>
<option>With options</option>
</select>
</div>
</div>
</div>
<div class="field">
<label class="label">Message</label>
<div class="control">
<textarea class="textarea" placeholder="Textarea"></textarea>
</div>
</div>
<div class="field">
<div class="control">
<label class="checkbox">
<input type="checkbox">
I agree to the <a href="#">terms and conditions</a>
</label>
</div>
</div>
<div class="field">
<div class="control">
<label class="radio">
<input type="radio" name="question">
Yes
</label>
<label class="radio">
<input type="radio" name="question">
No
</label>
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-primary">Submit</button>
</div>
<div class="control">
<button class="button is-primary is-light">Cancel</button>
</div>
</div>
Form field
The field container is a simple container for:
labelcontrolhelptextThis is a help text
This container allows form fields to be spaced consistently.
<div class="field">
<label class="label">Label</label>
<div class="control">
<input class="input" type="text" placeholder="Text input">
</div>
<p class="help">This is a help text</p>
</div>
<p>This container allows form fields to be <strong>spaced consistently</strong>.</p>
<div class="field">
<label class="label">Name</label>
<div class="control">
<input class="input" type="text" placeholder="e.g Alex Smith">
</div>
</div>
<div class="field">
<label class="label">Email</label>
<div class="control">
<input class="input" type="email" placeholder="e.g. alexsmith@gmail.com">
</div>
</div>
Form control
The Buval control is a versatile block container meant to enhance single form controls.
Because it has the same height as the element that it wraps, it can only contain the following Buval elements:
inputselectbuttoniconThis container gives the ability to:
<div class="control">
<input class="input" type="text" placeholder="Text input">
</div>
<div class="control">
<div class="select">
<select>
<option>Select dropdown</option>
<option>With options</option>
</select>
</div>
</div>
<div class="control">
<button class="button is-primary">Submit</button>
</div>
With icons
You can append one of 2 modifiers on a control:
has-icons-lefthas-icons-rightYou also need to add a modifier on the icon:
icon is-left if has-icons-left is usedicon is-right if has-icons-right is usedThe size of the input will define the size of the icon container.
<div class="field">
<p class="control has-icons-left has-icons-right">
<input class="input" type="email" placeholder="Email">
<span class="icon is-small is-left">
<i class="fas fa-envelope"></i>
</span>
<span class="icon is-small is-right">
<i class="fas fa-check"></i>
</span>
</p>
</div>
<div class="field">
<p class="control has-icons-left">
<input class="input" type="password" placeholder="Password">
<span class="icon is-small is-left">
<i class="fas fa-lock"></i>
</span>
</p>
</div>
<div class="field">
<p class="control">
<button class="button is-success">
Login
</button>
</p>
</div>
Form addons
#1: If you want to attach controls together, use the has-addons modifier on the field container:
#2: You can attach inputs, buttons, and dropdowns only. It can be useful to append a static button.
#3:
Use the is-expanded modifier on the element you want to fill up the remaining space (in this case, the input):
#4:
If you want a full width select dropdown, pair control is-expanded with select is-fullwidth.
Use the has-addons-centered or the has-addons-right modifiers to alter the alignment.
#1
<div class="field has-addons">
<div class="control">
<input class="input" type="text" placeholder="Find a repository">
</div>
<div class="control">
<a class="button is-info">
Search
</a>
</div>
</div>
#2
<div class="field has-addons">
<p class="control">
<input class="input" type="text" placeholder="Your email">
</p>
<p class="control">
<a class="button is-static">
@gmail.com
</a>
</p>
</div>
#3
<div class="field has-addons">
<p class="control">
<span class="select">
<select>
<option>$</option>
<option>£</option>
<option>€</option>
</select>
</span>
</p>
<p class="control">
<input class="input" type="text" placeholder="Amount of money">
</p>
<p class="control">
<a class="button">
Transfer
</a>
</p>
</div>
<div class="field has-addons">
<p class="control">
<span class="select">
<select>
<option>$</option>
<option>£</option>
<option>€</option>
</select>
</span>
</p>
<p class="control is-expanded">
<input class="input" type="text" placeholder="Amount of money">
</p>
<p class="control">
<a class="button">
Transfer
</a>
</p>
</div>
#4
<div class="field has-addons">
<div class="control is-expanded">
<div class="select is-fullwidth">
<select name="country">
<option value="Argentina">Argentina</option>
<option value="Bolivia">Bolivia</option>
<option value="Brazil">Brazil</option>
<option value="Chile">Chile</option>
<option value="Colombia">Colombia</option>
<option value="Ecuador">Ecuador</option>
<option value="Guyana">Guyana</option>
<option value="Paraguay">Paraguay</option>
<option value="Peru">Peru</option>
<option value="Suriname">Suriname</option>
<option value="Uruguay">Uruguay</option>
<option value="Venezuela">Venezuela</option>
</select>
</div>
</div>
<div class="control">
<button type="submit" class="button is-primary">Choose</button>
</div>
</div>
Form group
#1: If you want to group controls together, use the is-grouped modifier on the field container.
#2: Use the is-grouped-centered or the is-grouped-right modifiers to alter the alignment.
#3: Add the is-expanded modifier on the control element you want to fill up the remaining space with.
#4: Add the is-grouped-multiline modifier to allow controls to fill up multiple lines. This is ideal for a long list of controls.
#1
<div class="field is-grouped">
<p class="control">
<a class="button is-primary">
Submit
</a>
</p>
<p class="control">
<a class="button is-light">
Cancel
</a>
</p>
</div>
#2
<div class="field is-grouped is-grouped-centered">
<p class="control">
<a class="button is-primary">
Submit
</a>
</p>
<p class="control">
<a class="button is-light">
Cancel
</a>
</p>
</div>
<div class="field is-grouped is-grouped-right">
<p class="control">
<a class="button is-primary">
Submit
</a>
</p>
<p class="control">
<a class="button is-light">
Cancel
</a>
</p>
</div>
#3
<div class="field is-grouped">
<p class="control is-expanded">
<input class="input" type="text" placeholder="Find a repository">
</p>
<p class="control">
<a class="button is-info">
Search
</a>
</p>
</div>
#4
<div class="field is-grouped is-grouped-multiline">
<p class="control"><a class="button">One</a></p>
<p class="control"><a class="button">Two</a></p>
<p class="control"><a class="button">Three</a></p>
<p class="control"><a class="button">Four</a></p>
<p class="control"><a class="button">Five</a></p>
<p class="control"><a class="button">Six</a></p>
<p class="control"><a class="button">Seven</a></p>
<p class="control"><a class="button">Eight</a></p>
<p class="control"><a class="button">Nine</a></p>
<p class="control"><a class="button">Ten</a></p>
<p class="control"><a class="button">Eleven</a></p>
<p class="control"><a class="button">Eleven</a></p>
<p class="control"><a class="button">Thirteen</a></p>
</div>
Horizontal form
If you want a horizontal form control, use the is-horizontal modifier on the field container, in which you include:
field-label for the side labelfield-body for the input/select/textarea containerYou can use is-grouped or has-addons for the child elements.
To preserve the vertical alignment of labels with each type and size of control, the field-label comes with 4 size modifiers:
is-smallis-normal for any input or buttonis-mediumis-largeThis field is required
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label">From</label>
</div>
<div class="field-body">
<div class="field">
<p class="control is-expanded has-icons-left">
<input class="input" type="text" placeholder="Name">
<span class="icon is-small is-left">
<i class="fas fa-user"></i>
</span>
</p>
</div>
<div class="field">
<p class="control is-expanded has-icons-left has-icons-right">
<input class="input is-success" type="email" placeholder="Email" value="alex@smith.com">
<span class="icon is-small is-left">
<i class="fas fa-envelope"></i>
</span>
<span class="icon is-small is-right">
<i class="fas fa-check"></i>
</span>
</p>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label"></div>
<div class="field-body">
<div class="field is-expanded">
<div class="field has-addons">
<p class="control">
<a class="button is-static">+62</a>
</p>
<p class="control is-expanded">
<input class="input" type="tel" placeholder="Your phone number">
</p>
</div>
<p class="help">Do not enter the first zero</p>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label">Department</label>
</div>
<div class="field-body">
<div class="field is-narrow">
<div class="control">
<div class="select is-fullwidth">
<select>
<option>Business development</option>
<option>Marketing</option>
<option>Sales</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label">
<label class="label">Already a member?</label>
</div>
<div class="field-body">
<div class="field is-narrow">
<div class="control">
<label class="radio">
<input type="radio" name="member">
Yes
</label>
<label class="radio">
<input type="radio" name="member">
No
</label>
</div>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label">Subject</label>
</div>
<div class="field-body">
<div class="field">
<div class="control">
<input class="input is-danger" type="text" placeholder="e.g. Partnership opportunity">
</div>
<p class="help is-danger">
This field is required
</p>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label">Question</label>
</div>
<div class="field-body">
<div class="field">
<div class="control">
<textarea class="textarea" placeholder="Explain how we can help you"></textarea>
</div>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label">
<!-- Left empty for spacing -->
</div>
<div class="field-body">
<div class="field">
<div class="control">
<button class="button is-primary">
Send message
</button>
</div>
</div>
</div>
</div>
Disabled form
You can disable part or a whole form by wrapping a set of controls in a fieldset with a disabled HTML attribute.
<fieldset disabled>
<div class="field">
<label class="label">Name</label>
<div class="control">
<input class="input" type="text" placeholder="e.g Kesya Novela">
</div>
</div>
<div class="field">
<label class="label">Email</label>
<div class="control">
<input class="input" type="email" placeholder="e.g. kesyanovela@gmail.com">
</div>
</div>
</fieldset>
Variables #
You can use these variables to customize, Simply set one or multiple of these variables before importing Buval. Learn how.
Name | Type | Default |
|---|---|---|
$control-radius | size | $radius |
$control-radius-small | size | $radius-small |
$control-padding-vertical | size | calc(0.5em - #{$control-border-width}) |
$control-padding-horizontal | size | calc(0.75em - #{$control-border-width}) |
$label-color | color | $grey-darker |
$label-weight | font-weight | $weight-bold |
$help-size | size | $size-small |
$floating-in-height | size | 3.25em |