for my model, I'm trying to change the color of the paging buttons at the bottom of the data table, but how is this implemented in vuetify. Is there a way to change the color of the buttons and background color of the footer?
<div id="app">
<v-app id="inspire">
<div>
<v-data-table
:headers="headers"
:items="desserts"
:page.sync="page"
:items-per-page=2
hide-default-footer
class="elevation-1"
#page-count="pageCount = $event"
></v-data-table>
<div class="text-center pt-2">
<v-pagination
v-model="page"
:length="pageCount"
></v-pagination>
</div>
</div>
</v-app>
</div>
To change the background of the v-pagination, add a color class to it:
<v-pagination
...
class="red"
/>
To change the color of the active page button, add the color prop to it:
<v-pagination
...
class="red"
color="green"
/>
To change the colors of the previous and next buttons, you may manually add style to the v-pagination__navigation and v-pagination__item classes since there are currently no available props to do it:
<v-pagination
...
class="red"
color="green my-pagination"
/>
.my-pagination {
/* For previous and next buttons */
& .v-pagination__navigation {
background: blue !important;
}
/* For page buttons except the active one */
& .v-pagination__item:not(.v-pagination__item--active) {
background: yellow !important;
}
}
Here's a sample demo at codesandbox:
Related
Here is the snippet from the template for my view:
<v-card>
<v-card-text>
<v-treeview selectable hoverable :items="items" :open.sync="open">
<template v-slot:prepend="{ item }">
<v-icon>{{item.icon}}</v-icon>
</template>
<template v-slot:label="{ item }">
<v-badge :content="item.count">{{item.name}}</v-badge>
</template>
</v-treeview>
</v-card-text>
</v-card>
The badge is clipped vertically.
Is there a way to prevent clipping?
Found an easy solution. Add the following to the vue file.
<style lang="scss">
.v-treeview-node__content {
line-height: 4;
}
</style>
<v-badge :content="item.count" inline>{{item.name}}</v-badge>
Adding inline prop to v-badge solves the problem. Please have a look here.
My component separated to two parts (leftPanel and rightPanel).
When the app start, only leftPanel will be shown, and take up the whole screen width (using xs12).
If user click the button, the left panel will be shown, and rightPanel will resize to xs6 to take up half of the screen.
The functionality here is working well, but I would like to add animation(transition) when the panels size are changing.
I tried to add with different css, but none of them are showing animation.
<template>
<v-container grid-list-sm fluid>
<transition name="MyPanel">
<v-layout align-space-around row fill-height>
<v-flex id="leftPanel" :xs6="!showRightPanel" :xs12="showRightPanel">
<v-layout align-space-around column fill-height>
<v-flex xs12>
<v-btn v-if="extendable" #click="openRightPanel"> show more information </v-btn>
</v-flex>
</v-layout>
</v-flex>
<v-flex id="rightPanel" v-if="showRelatedCard" xs6>
<v-layout align-space-around column fill-height>
...
</v-layout>
</v-flex>
</v-layout>
</transition>
</v-container>
</template>
<script>
export default {
...
data() {
return {
showRightPanel : false
}
},
methods: {
removeLargeImage() {
this.showRightPanel = !this.showRightPanel;
}
}
};
</script>
<style scoped>
...
</style>
If you're using an v-if statement it is not possible to solve with CSS. As the element isn't rendered at all. Setting the width initially to 0 or using v-show you probably could solve it with CSS, but I would recommend to look to the vue-transitions: https://v2.vuejs.org/v2/guide/transitions.html
Maybe also to https://vuetifyjs.com/en/styles/transitions with I wonder if you could solve yout problem with the vuetify transitions
<style scoped>
.toolb{
position:absolute
top:0px;
}
</style>
<script>
export default {
data () {
return {
sideNav: false
}
}
}
</script>
<template>
<v-app>
<v-navigation-drawer v-model="sideNav">
<v-list>
<v-list-tile>
<v-list-tile-action>
<v-icon>supervisor_account</v-icon>
</v-list-tile-action>
<v-list-tile-content>View Meetups</v-list-tile-content>
</v-list-tile>
</v-list>
</v-navigation-drawer>
<v-toolbar dark class="primary toolb">
<v-toolbar-side-icon
#click.stop="sideNav = !sideNav"
class="hidden-sm-and-up "></v-toolbar-side-icon>
<v-toolbar-title>DevMeetup</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-xs-only">
<v-btn flat>
<v-icon left dark>supervisor_account</v-icon>
View Meetups
</v-btn>
</v-toolbar-items>
</v-toolbar>
<main>
</main>
</v-app>
</template>
to make toolbar on top i have to use css style ' position
:absloute ; top:0px;' that affect my all other components because i have to use again in all components style ' position
:absloute ; top:50px or 40 px;' and those components are not behaving like they should so please tell how can i fix it ? without using css style only vuetify
.where i study vuetify ,my teacher was using as it is code and its working fine without css ??? only using vuetify in this component .
but if i use v-content to parent of my v-container than i am getting another problem that is navigation-drawer is on top after that toolbar is appearing
I'm trying to replicate the layout of a Flexible toolbar and card toolbar as shown in https://vuetifyjs.com/en/components/toolbars#example-flexible-and-card, but I want the card content grow up to full screen height, and then scroll its content.
I could make it scroll here https://codepen.io/anon/pen/rvwNbr, but I had to set a fixed max-height in pixels:
<v-card-text style="max-height: 250px; overflow-y: scroll">
what I wanted is that the card could grow up to full height before starts scrolling. then, I tried wraping the external v-card in a v-content with "fill-height" attribute, according to https://vuetifyjs.com/en/layout/grid but it didn't work
any suggestions?
This isn't the best solution for sure but it might nudge you in the right direction.
A solution using all flexboxes would be way better but I can't seem to get it to work with flexboxes..
<template>
<v-app id="inspire">
<v-card flat class="fill-height">
<v-toolbar color="primary" dark extended flat>
<v-app-bar-nav-icon></v-app-bar-nav-icon>
</v-toolbar>
<v-card class="mx-auto card--flex-toolbar" max-width="700">
<v-toolbar flat>
<v-toolbar-title class="grey--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn icon>
<v-icon>mdi-magnify</v-icon>
</v-btn>
</v-toolbar>
<v-divider></v-divider>
<v-card-text class="card-body">
<p v-for="p in 30" :key="p">article paragraph {{ p }}....</p>
</v-card-text>
</v-card>
</v-card>
</v-app>
</template>
<script>
export default {};
</script>
<style>
.card--flex-toolbar {
margin-top: -62px;
}
.card-body {
overflow-y: auto;
max-height: 85vh;
}
</style>
Check out the layout.vue in the codesandbox here. The v-card-text will go down to the bottom of the screen and then starts scrolling the content. Feel free to change the value in the v-for loop and watch the card grow/shrink.
In plain Bootstrap 3 I would do something like
<div class="panel">
<div class="panel-body bg-info">
Contents
</div>
</div>
But in React Bootstrap we don't have a separate panel body. Is there a way to set the background color?
You have to set a custom style for the panel :
render() {
return (
var color = {
backgroundColor: red,
}
<Panel header={header} eventKey={i} style={color}>
</Panel>
);
}