Categories
Buefy

Buefy — Form Input

Spread the love

Buefy is a UI framework that’s based on Bulma.

In this article, we’ll look at how to use Buefy in our Vue app.

Input

We can add input boxes with the b-input component.

For example, we can write:

<template>  
  <b-field label="Name">  
    <b-input v-model="name"></b-input>  
  </b-field>  
</template>  
<script>  
export default {  
  data() {  
    return {  
      name: ""  
    };  
  }  
};  
</script>

It binds the inputted value with v-model .

We can style it in various ways.

The type sets the border-style:

<template>  
  <b-field label="Name" type="is-danger">  
    <b-input v-model="name"></b-input>  
  </b-field>  
</template>  
<script>  
export default {  
  data() {  
    return {  
      name: ""  
    };  
  }  
};  
</script>

is-danger makes the border red.

rounded makes the input rounded:

<template>  
  <b-field label="Name">  
    <b-input v-model="name" rounded></b-input>  
  </b-field>  
</template>  
<script>  
export default {  
  data() {  
    return {  
      name: ""  
    };  
  }  
};  
</script>

disabled makes it disabled:

<template>  
  <b-field label="Name">  
    <b-input v-model="name" disabled></b-input>  
  </b-field>  
</template>  
<script>  
export default {  
  data() {  
    return {  
      name: ""  
    };  
  }  
};  
</script>

loading makes it display a loading indicator:

<template>  
  <b-field label="Name">  
    <b-input v-model="name" loading></b-input>  
  </b-field>  
</template>  
<script>  
export default {  
  data() {  
    return {  
      name: ""  
    };  
  }  
};  
</script>

Icons

We can add icons to our form fields.

To do that, we set the icon-pack and icon props to add it:

<template>  
  <b-field label="search">  
    <b-input v-model="name" icon-pack="fa" icon="search">></b-input>  
  </b-field>  
</template>  
<script>  
export default {  
  data() {  
    return {  
      name: ""  
    };  
  }  
};  
</script>

fa stands for Font Awesome.

icon has the icon class name.

To make the icon display, we added the icon CSS to the index.html file’s head tag:

<link  
      rel="stylesheet"  
      href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"  
      integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"  
      crossorigin="anonymous"  
    />

Validation

We can add form validation.

For example, we write:

<template>  
  <div>  
    <b-field label="Email" type="is-danger" message="This email is invalid">  
      <b-input value="john@" maxlength="30"></b-input>  
    </b-field>  
  </div>  
</template>  
<script>  
export default {  
  data() {  
    return {};  
  }  
};  
</script>

We set the type and messge to display the styles and messages.

Password

The password-reveal prop to add a button to reveal the password:

<template>  
  <div>  
    <b-field>  
      <b-input type="password" placeholder="Password input" password-reveal></b-input>  
    </b-field>  
  </div>  
</template>  
<script>  
export default {  
  data() {  
    return {};  
  }  
};  
</script>

Size

The size prop sets the size of the input:

<template>  
  <div>  
    <b-field>  
      <b-input placeholder="Medium" size="is-medium"></b-input>  
    </b-field>  
  </div>  
</template>  
<script>  
export default {  
  data() {  
    return {};  
  }  
};  
</script>

Conclusion

We can add form input boxes with the b-input component that comes with Buefy.

By John Au-Yeung

Web developer specializing in React, Vue, and front end development.

Leave a Reply

Your email address will not be published. Required fields are marked *