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.
Message
We can add a message box with color with Buefy.
We can add it with the b-message
component:
<template>
<div id="app">
<b-message title="Default" v-model="isActive">Lorem ipsum dolor sit amet</b-message>
</div>
</template>
<script>
export default {
name: "App",
data(){
return {
isActive: true
}
}
};
</script>
title
has the title.
v-model
lets us control the open and close state.
The default slot has the content.
The color scheme can be changed with the type
prop:
<template>
<div id="app">
<b-message type="is-success" title="Default" v-model="isActive">Lorem ipsum dolor sit amet</b-message>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isActive: true
};
}
};
</script>
We can add an icon with the has-icon
prop:
<template>
<div id="app">
<b-message
type="is-success"
has-icon
title="Default"
icon="address-book"
icon-pack="fa"
v-model="isActive"
>Lorem ipsum dolor sit amet</b-message>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isActive: true
};
}
};
</script>
We add the icon
, icon-pack
, and has-icon
props to show the icon.
icon-pack
is the icon pack name.
'fa'
is Font Awesome.
icon
has the icon class name.
In public/index.html
, we add:
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN"
crossorigin="anonymous"
/>
to the head
tag to make the Font Awesome icons available.
The title
prop is optional, so we can remove it to show a message box without the header:
<template>
<div id="app">
<b-message v-model="isActive">Lorem ipsum dolor sit amet</b-message>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isActive: true
};
}
};
</script>
The size
prop changes the size:
<template>
<div id="app">
<b-message size="is-large" v-model="isActive">Lorem ipsum dolor sit amet</b-message>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isActive: true
};
}
};
</script>
The auto-close
prop makes it close automatically:
<template>
<div id="app">
<b-message auto-close v-model="isActive">Lorem ipsum dolor sit amet</b-message>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isActive: true
};
}
};
</script>
The duration that it’s visible can be set with the duration
prop:
<template>
<div id="app">
<b-message :duration="2000" auto-close v-model="isActive">Lorem ipsum dolor sit amet</b-message>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isActive: true
};
}
};
</script>
The number is in milliseconds.
Conclusion
We can add a message box with Buefy’s b-message
component.