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.
Tab Size
We can change the tab size with the size
prop.
To do that, we write:
<template>
<div id="app">
<b-tabs size="is-small" class="block">
<b-tab-item label="Pictures"></b-tab-item>
<b-tab-item label="Music"></b-tab-item>
<b-tab-item label="Videos"></b-tab-item>
</b-tabs>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
is-small
makes the tabs extra small. We can also set it to is-medium
or is-large
.
Types
We can change the shape of the tab with the type
prop. For example, we can write:
<template>
<div id="app">
<b-tabs type="is-toggle">
<b-tab-item label="Pictures"></b-tab-item>
<b-tab-item label="Music"></b-tab-item>
<b-tab-item label="Videos"></b-tab-item>
</b-tabs>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
is-toggle
changes it to a toggle button.
is-boxed
is the default type which looks like tabs.
is-toggle-rounded
make the buttons rounded.
Expanded
The expanded
prop makes the tabs expanded to fill the width of the screen:
<template>
<div id="app">
<b-tabs expanded>
<b-tab-item label="Pictures"></b-tab-item>
<b-tab-item label="Music"></b-tab-item>
<b-tab-item label="Videos"></b-tab-item>
</b-tabs>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Custom Headers
We can populate the header
slot to customize the header of the tab item.
For example, we can write:
<template>
<div id="app">
<b-tabs expanded>
<b-tab-item>
<template slot="header">
<b>Pictures</b>
</template>
</b-tab-item>
<b-tab-item label="Music"></b-tab-item>
<b-tab-item label="Videos"></b-tab-item>
</b-tabs>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Now the Pictures tab is bolded.
Vertical Tabs
We can make the tabs vertical with the vertical
prop:
<template>
<div id="app">
<b-tabs expanded vertical>
<b-tab-item label="Pictures">pictures</b-tab-item>
<b-tab-item label="Music">music</b-tab-item>
<b-tab-item label="Videos">videos</b-tab-item>
</b-tabs>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
Tags
Tags are labels we can insert anywhere.
For example, we can write:
<template>
<div id="app">
<div class="field">
<b-tag>Tag 1</b-tag>
</div>
<div class="field">
<b-tag rounded>Tag 2</b-tag>
</div>
</div>
</template>
<script>
export default {
name: "App"
};
</script>
We can add tags with the b-tag
component and the tag text in between the tags.
Closable Tags
We can make a tag closeable with the closeable
tag:
<template>
<div id="app">
<div class="field">
<b-tag
v-if="isTagActive"
type="is-primary"
closable
@close="isTagActive = false"
>closable tag</b-tag>
</div>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isTagActive: true
};
}
};
</script>
The close
event should be emitted when we click the close button that’s displayed.
This way, we can use a reactive property to control when the tag is displayed.
Conclusion
We can customize our tabs and create tags with Buefy.