Compare commits

...

1 commit

Author SHA1 Message Date
Michael Mayer
bdc1336116 Upgrade to Vuetify 2.1.10 #132
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
2019-11-17 08:16:51 +01:00
15 changed files with 247 additions and 215 deletions

View file

@ -11935,9 +11935,9 @@
"integrity": "sha512-QHZWYOL325Zo+2K7VBNEJTZ496Kd8Z31p85aQJFldKudUUGBmgw4zu4ghl4CyqPwjRCmqZ9lDdx4FSdMnu4fGg=="
},
"vuetify": {
"version": "1.5.21",
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.5.21.tgz",
"integrity": "sha512-x0F2mNoWMXVA2ntrmvfjJFU2elaq2WK1tD9wOBu447xUHdZqswziFD82pNtmWRy3TjEXsLj/ZNO8e5dZig+Iqg=="
"version": "2.1.10",
"resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.1.10.tgz",
"integrity": "sha512-hFc6XNYc2YE3HisxCH5VezRFtGQ2RwTvBy7eN+b67UuiGIhvEUR9h3uO4NUuulmvKPKJ4rONN+L9sVszgMBlJQ=="
},
"watchpack": {
"version": "1.6.0",

View file

@ -105,7 +105,7 @@
"vue2-filters": "^0.6.1",
"vue2-leaflet": "^2.2.1",
"vuelidate": "^0.7.4",
"vuetify": "^1.5.21",
"vuetify": "^2.1.10",
"webpack": "^4.41.2",
"webpack-bundle-analyzer": "^3.6.0",
"webpack-cli": "^3.3.10",

View file

@ -1,5 +1,6 @@
import Api from "common/api";
import Notify from "common/notify";
// import Colors from "vuetify/lib/util/colors";
import Config from "common/config";
import Clipboard from "common/clipboard";
import Components from "component/components";
@ -11,7 +12,7 @@ import PhotoPrism from "photoprism.vue";
import Router from "vue-router";
import Routes from "routes";
import Session from "session";
import { Settings } from "luxon";
import {Settings} from "luxon";
import Socket from "common/websocket";
import Translations from "./i18n/translations.json";
import Viewer from "common/viewer";
@ -38,20 +39,40 @@ Vue.prototype.$socket = Socket;
Vue.prototype.$config = config;
Vue.prototype.$clipboard = clipboard;
// Register Vuetify
Vue.use(Vuetify, {
theme: {
primary: "#FFD600",
secondary: "#b0bec5",
accent: "#00B8D4",
error: "#E57373",
info: "#00B8D4",
success: "#00BFA5",
warning: "#FFD600",
delete: "#E57373",
love: "#EF5350",
// Configure Vuetify
const vueOpts = {
icons: {
iconfont: "mdiSvg",
},
});
theme: {
themes: {
light: {
primary: "#FFD600",
secondary: "#b0bec5",
accent: "#00B8D4",
error: "#E57373",
info: "#00B8D4",
success: "#00BFA5",
warning: "#FFD600",
delete: "#E57373",
love: "#EF5350",
},
dark: {
primary: "#FFD600",
secondary: "#b0bec5",
accent: "#00B8D4",
error: "#E57373",
info: "#00B8D4",
success: "#00BFA5",
warning: "#FFD600",
delete: "#E57373",
love: "#EF5350",
},
},
},
};
Vue.use(Vuetify);
Vue.config.language = "en";
Settings.defaultLocale = Vue.config.language;
@ -75,22 +96,22 @@ const router = new Router({
});
router.beforeEach((to, from, next) => {
if(to.matched.some(record => record.meta.admin)) {
if (to.matched.some(record => record.meta.admin)) {
if (isPublic || Session.isAdmin()) {
next();
} else {
next({
name: "login",
params: { nextUrl: to.fullPath },
params: {nextUrl: to.fullPath},
});
}
} else if(to.matched.some(record => record.meta.auth)) {
} else if (to.matched.some(record => record.meta.auth)) {
if (isPublic || Session.isUser()) {
next();
} else {
next({
name: "login",
params: { nextUrl: to.fullPath },
params: {nextUrl: to.fullPath},
});
}
} else {
@ -99,9 +120,9 @@ router.beforeEach((to, from, next) => {
});
// Run app
/* eslint-disable no-unused-vars */
const app = new Vue({
new Vue({
el: "#photoprism",
vuetify: new Vuetify(vueOpts),
router,
render: h => h(PhotoPrism),
});
}).$mount("#photoprism");

View file

@ -1,13 +1,13 @@
<template>
<div id="p-navigation">
<v-toolbar dark scroll-off-screen color="grey darken-3" class="hidden-lg-and-up p-navigation-small"
<v-app-bar dark scroll-off-screen color="grey darken-3" class="hidden-lg-and-up p-navigation-small"
@click.stop="showNavigation()">
<v-toolbar-side-icon class="p-navigation-show"></v-toolbar-side-icon>
<v-app-bar-nav-icon class="p-navigation-show"></v-app-bar-nav-icon>
<v-toolbar-title class="p-navigation-title">{{ $router.currentRoute.meta.area }}</v-toolbar-title>
<v-spacer></v-spacer>
</v-toolbar>
</v-app-bar>
<v-navigation-drawer
v-model="drawer"
:mini-variant="mini"
@ -15,116 +15,114 @@
width="270"
fixed dark app
>
<v-toolbar flat>
<v-list>
<v-list-tile class="p-navigation-logo">
<v-list-tile-avatar>
<img src="/static/img/logo.png">
</v-list-tile-avatar>
<v-list-tile-content>
<v-list-tile-title class="title">
PhotoPrism
</v-list-tile-title>
</v-list-tile-content>
<v-list-tile-action class="hidden-md-and-down">
<v-btn icon @click.stop="mini = !mini" class="p-navigation-minimize">
<v-icon>chevron_left</v-icon>
</v-btn>
</v-list-tile-action>
</v-list-tile>
</v-list>
</v-toolbar>
<v-list-item class="p-navigation-logo" color="black">
<v-list-item-avatar>
<v-img src="/static/img/logo.png"></v-img>
</v-list-item-avatar>
<v-list-item-title class="title">
PhotoPrism
</v-list-item-title>
<v-list class="pt-3">
<v-list-tile v-if="mini" @click.stop="mini = !mini" class="p-navigation-expand">
<v-list-tile-action>
<v-btn
icon
@click.stop="mini = !mini" class="p-navigation-minimize"
>
<v-icon>chevron_left</v-icon>
</v-btn>
</v-list-item>
<v-divider></v-divider>
<v-list flat class="pt-3">
<v-list-item v-if="mini" @click.stop="mini = !mini" class="p-navigation-expand">
<v-list-item-icon>
<v-icon>chevron_right</v-icon>
</v-list-tile-action>
</v-list-tile>
</v-list-item-icon>
</v-list-item>
<v-list-tile v-if="mini" to="/photos" @click="" class="p-navigation-photos">
<v-list-tile-action>
<v-list-item v-if="mini" to="/photos" @click="" class="p-navigation-photos">
<v-list-item-icon>
<v-icon>photo</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Photos</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Photos</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-group v-if="!mini" prepend-icon="photo" no-action>
<v-list-tile slot="activator" to="/photos" @click.stop="" class="p-navigation-photos">
<v-list-tile-content>
<v-list-tile-title>Photos</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item slot="activator" to="/photos" @click.stop="" class="p-navigation-photos">
<v-list-item-content>
<v-list-item-title>Photos</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile :to="{name: 'photos', query: { q: 'mono:true' }}" :exact="true" @click="">
<v-list-tile-content>
<v-list-tile-title>Monochrome</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item :to="{name: 'photos', query: { q: 'mono:true' }}" :exact="true" @click="">
<v-list-item-content>
<v-list-item-title>Monochrome</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile :to="{name: 'photos', query: { q: 'chroma:50' }}" :exact="true" @click="">
<v-list-tile-content>
<v-list-tile-title>Vibrant</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item :to="{name: 'photos', query: { q: 'chroma:50' }}" :exact="true" @click="">
<v-list-item-content>
<v-list-item-title>Vibrant</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list-group>
<v-list-tile v-if="mini" to="/albums" @click="">
<v-list-tile-action>
<v-list-item v-if="mini" to="/albums" @click="">
<v-list-item-icon>
<v-icon>folder</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Albums</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Albums</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-group v-if="!mini" prepend-icon="folder" no-action>
<v-list-tile slot="activator" to="/albums" @click="">
<v-list-tile-content>
<v-list-tile-title>Albums</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item slot="activator" to="/albums" @click="">
<v-list-item-content>
<v-list-item-title>Albums</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile @click.stop="$notify.warning('Work in progress')">
<v-list-tile-content>
<v-list-tile-title>Work in progress...</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item @click.stop="$notify.warning('Work in progress')">
<v-list-item-content>
<v-list-item-title>Work in progress...</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list-group>
<v-list-tile to="/favorites" @click="" class="p-navigation-favorites">
<v-list-tile-action>
<v-list-item to="/favorites" @click="" class="p-navigation-favorites">
<v-list-item-icon>
<v-icon>favorite</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Favorites</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Favorites</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile to="/places" @click="" class="p-navigation-places">
<v-list-tile-action>
<v-list-item to="/places" @click="" class="p-navigation-places">
<v-list-item-icon>
<v-icon>place</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Places</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Places</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile to="/labels" @click="" class="p-navigation-labels">
<v-list-tile-action>
<v-list-item to="/labels" @click="" class="p-navigation-labels">
<v-list-item-icon>
<v-icon>label</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Labels</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Labels</v-list-item-title>
</v-list-item-content>
</v-list-item>
<!-- v-list-tile to="/events" @click="" class="p-navigation-events">
<v-list-tile-action>
@ -146,45 +144,45 @@
</v-list-tile-content>
</v-list-tile -->
<v-list-tile to="/library" @click="" class="p-navigation-library" v-if="session.auth || isPublic">
<v-list-tile-action>
<v-list-item to="/library" @click="" class="p-navigation-library" v-if="session.auth || isPublic">
<v-list-item-icon>
<v-icon>camera_roll</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Library</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Library</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile to="/settings" @click="" class="p-navigation-settings" v-if="session.auth || isPublic">
<v-list-tile-action>
<v-list-item to="/settings" @click="" class="p-navigation-settings" v-if="session.auth || isPublic">
<v-list-item-icon>
<v-icon>settings</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Settings</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Settings</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile @click="logout" class="p-navigation-logout" v-if="!isPublic && session.auth">
<v-list-tile-action>
<v-list-item @click="logout" class="p-navigation-logout" v-if="!isPublic && session.auth">
<v-list-item-icon>
<v-icon>power_settings_new</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Logout</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Logout</v-list-item-title>
</v-list-item-content>
</v-list-item>
<v-list-tile to="/login" @click="" class="p-navigation-login" v-if="!isPublic && !session.auth">
<v-list-tile-action>
<v-list-item to="/login" @click="" class="p-navigation-login" v-if="!isPublic && !session.auth">
<v-list-item-icon>
<v-icon>lock</v-icon>
</v-list-tile-action>
</v-list-item-icon>
<v-list-tile-content>
<v-list-tile-title>Login</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
<v-list-item-content>
<v-list-item-title>Login</v-list-item-title>
</v-list-item-content>
</v-list-item>
</v-list>
</v-navigation-drawer>
</div>

View file

@ -12,7 +12,7 @@
<v-btn
:class="textColor + ' pr-0'"
icon
flat
text
@click="close"
>
<v-icon>close</v-icon>

View file

@ -8,12 +8,17 @@
</div>
</v-card-title>
</v-card>
<v-layout row wrap>
<v-flex
<v-row row wrap>
<v-col
v-for="(photo, index) in photos"
:key="index"
class="p-photo"
xs12 sm6 md4 lg3 d-flex
cols="12"
sm="6"
md="4"
lg="3"
xl="2"
d-flex
>
<v-hover>
<v-card tile slot-scope="{ hover }"
@ -28,7 +33,7 @@
@click="openPhoto(index)"
>
<v-layout
<v-row
slot="placeholder"
fill-height
align-center
@ -36,9 +41,9 @@
ma-0
>
<v-progress-circular indeterminate color="grey lighten-5"></v-progress-circular>
</v-layout>
</v-row>
<v-btn v-if="hover || $clipboard.has(photo)" :flat="!hover" :ripple="false"
<v-btn v-if="hover || $clipboard.has(photo)" :text="!hover" :ripple="false"
icon large absolute
class="p-photo-select"
@click.stop.prevent="$clipboard.toggle(photo)">
@ -46,7 +51,7 @@
<v-icon v-else color="grey lighten-3">radio_button_off</v-icon>
</v-btn>
<v-btn v-if="hover || photo.PhotoFavorite" :flat="!hover" :ripple="false"
<v-btn v-if="hover || photo.PhotoFavorite" :text="!hover" :ripple="false"
icon large absolute
class="p-photo-like"
@click.stop.prevent="photo.toggleLike()">
@ -78,8 +83,8 @@
</v-card-title>
</v-card>
</v-hover>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-container>
</template>
<script>

View file

@ -22,7 +22,7 @@
<td>{{ props.item.TakenAt | luxon:format('dd/MM/yyyy hh:mm:ss') }}</td>
<td @click="openLocation(props.index)" class="p-pointer">{{ props.item.LocCountry }}</td>
<td>{{ props.item.CameraMake }} {{ props.item.CameraModel }}</td>
<td><v-btn icon small flat :ripple="false"
<td><v-btn icon small text :ripple="false"
class="p-photo-like"
@click.stop.prevent="props.item.toggleLike()">
<v-icon v-if="props.item.PhotoFavorite" color="pink lighten-3">favorite</v-icon>

View file

@ -8,13 +8,17 @@
</div>
</v-card-title>
</v-card>
<v-layout row wrap>
<v-flex
<v-row wrap>
<v-col
v-for="(photo, index) in photos"
:key="index"
v-bind:class="{ selected: $clipboard.has(photo) }"
class="p-photo"
xs4 sm3 md2 lg1 d-flex
cols="4"
sm="3"
md="2"
lg="1"
d-flex
>
<v-hover>
<v-card tile slot-scope="{ hover }"
@ -26,7 +30,7 @@
style="cursor: pointer"
@click="openPhoto(index)"
>
<v-layout
<v-row
slot="placeholder"
fill-height
align-center
@ -35,9 +39,9 @@
>
<v-progress-circular indeterminate
color="grey lighten-5"></v-progress-circular>
</v-layout>
</v-row>
<v-btn v-if="hover || $clipboard.has(photo)" :flat="!hover" :ripple="false"
<v-btn v-if="hover || $clipboard.has(photo)" :text="!hover" :ripple="false"
icon small absolute
class="p-photo-select"
@click.stop.prevent="$clipboard.toggle(photo)">
@ -45,7 +49,7 @@
<v-icon v-else color="grey lighten-3">radio_button_off</v-icon>
</v-btn>
<v-btn v-if="hover || photo.PhotoFavorite" :flat="!hover" :ripple="false"
<v-btn v-if="hover || photo.PhotoFavorite" :text="!hover" :ripple="false"
icon small absolute
class="p-photo-like"
@click.stop.prevent="photo.toggleLike()">
@ -56,8 +60,8 @@
</v-card>
</v-hover>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-container>
</template>
<script>

View file

@ -45,8 +45,8 @@
color="blue-grey lighten-5"
v-show="searchExpanded">
<v-card-text>
<v-layout row wrap>
<v-flex xs12 sm6 md3 pa-2 class="p-countries-select">
<v-row wrap>
<v-col xs12 sm6 md3 pa-2 class="p-countries-select">
<v-select @change="dropdownChange"
label="Country"
flat solo hide-details
@ -56,8 +56,8 @@
v-model="filter.country"
:items="options.countries">
</v-select>
</v-flex>
<v-flex xs12 sm6 md3 pa-2 class="p-camera-select">
</v-col>
<v-col xs12 sm6 md3 pa-2 class="p-camera-select">
<v-select @change="dropdownChange"
label="Camera"
flat solo hide-details
@ -67,8 +67,8 @@
v-model="filter.camera"
:items="options.cameras">
</v-select>
</v-flex>
<v-flex xs12 sm6 md3 pa-2 class="p-view-select">
</v-col>
<v-col xs12 sm6 md3 pa-2 class="p-view-select">
<v-select @change="dropdownChange"
label="View"
flat solo hide-details
@ -77,8 +77,8 @@
:items="options.views"
id="viewSelect">
</v-select>
</v-flex>
<v-flex xs12 sm6 md3 pa-2 class="p-time-select">
</v-col>
<v-col xs12 sm6 md3 pa-2 class="p-time-select">
<v-select @change="dropdownChange"
label="Sort By"
flat solo hide-details
@ -86,8 +86,8 @@
v-model="filter.order"
:items="options.sorting">
</v-select>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-card-text>
</v-card>
</v-form>

View file

@ -8,13 +8,17 @@
</div>
</v-card-title>
</v-card>
<v-layout row wrap>
<v-flex
<v-row wrap>
<v-col
v-for="(photo, index) in photos"
:key="index"
v-bind:class="{ selected: $clipboard.has(photo) }"
class="p-photo"
xs12 sm6 md3 lg2 d-flex
cols="12"
sm="6"
md="3"
lg="2"
d-flex
>
<v-hover>
<v-card tile slot-scope="{ hover }"
@ -26,7 +30,7 @@
style="cursor: pointer"
@click="openPhoto(index)"
>
<v-layout
<v-row
slot="placeholder"
fill-height
align-center
@ -35,9 +39,9 @@
>
<v-progress-circular indeterminate
color="grey lighten-5"></v-progress-circular>
</v-layout>
</v-row>
<v-btn v-if="hover || $clipboard.has(photo)" :flat="!hover" :ripple="false"
<v-btn v-if="hover || $clipboard.has(photo)" :text="!hover" :ripple="false"
icon large absolute
class="p-photo-select"
@click.stop.prevent="$clipboard.toggle(photo)">
@ -45,7 +49,7 @@
<v-icon v-else-if="!$clipboard.has(photo)" color="grey lighten-3">radio_button_off</v-icon>
</v-btn>
<v-btn v-if="hover || photo.PhotoFavorite" :flat="!hover" :ripple="false"
<v-btn v-if="hover || photo.PhotoFavorite" :text="!hover" :ripple="false"
icon large absolute
class="p-photo-like"
@click.stop.prevent="photo.toggleLike()">
@ -56,8 +60,8 @@
</v-card>
</v-hover>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-container>
</template>
<script>

View file

@ -2,22 +2,22 @@
<v-dialog v-model="show" persistent max-width="350" class="p-photo-delete-dialog" @keydown.esc="cancel">
<v-card raised elevation="24">
<v-container fluid class="pb-2 pr-2 pl-2">
<v-layout row wrap>
<v-flex xs3 text-xs-center>
<v-row wrap>
<v-col xs3 text-xs-center>
<v-icon size="54" color="grey lighten-1">delete_outline</v-icon>
</v-flex>
<v-flex xs9 text-xs-left align-self-center>
</v-col>
<v-col xs9 text-xs-left align-self-center>
<div class="subheading pr-1">Are you sure you want to delete these photos?</div>
</v-flex>
<v-flex xs12 text-xs-right class="pt-3">
</v-col>
<v-col xs12 text-xs-right class="pt-3">
<v-btn @click.stop="cancel" depressed color="grey lighten-3" class="p-photo-dialog-cancel">
Cancel
</v-btn>
<v-btn color="blue-grey lighten-2" depressed dark @click.stop="confirm"
class="p-photo-dialog-confirm">Delete
</v-btn>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-container>
</v-card>
</v-dialog>

View file

@ -36,8 +36,8 @@
</div>
</v-card-title>
</v-card>
<v-layout row wrap>
<v-flex
<v-row row wrap>
<v-col
v-for="(album, index) in results"
:key="index"
class="p-album"
@ -52,7 +52,7 @@
class="grey lighten-2"
@click.prevent="openAlbum(index)"
>
<v-layout
<v-row
slot="placeholder"
fill-height
align-center
@ -60,7 +60,7 @@
ma-0
>
<v-progress-circular indeterminate color="grey lighten-5"></v-progress-circular>
</v-layout>
</v-row>
</v-img>
<v-card-actions>
@ -74,8 +74,8 @@
</v-card-actions>
</v-card>
</v-hover>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-container>
</v-container>
</div>

View file

@ -7,8 +7,8 @@
</v-toolbar>
<v-container>
<v-layout wrap>
<v-flex
<v-row wrap>
<v-col
xs12
class="mb-3"
>
@ -21,9 +21,9 @@
color="primary"
></v-calendar>
</v-sheet>
</v-flex>
</v-col>
<v-flex
<v-col
sm4
xs12
class="text-sm-left text-xs-center"
@ -37,8 +37,8 @@
</v-icon>
Prev
</v-btn>
</v-flex>
<v-flex
</v-col>
<v-col
sm4
xs12
class="text-xs-center"
@ -48,8 +48,8 @@
:items="typeOptions"
label="Type"
></v-select>
</v-flex>
<v-flex
</v-col>
<v-col
sm4
xs12
class="text-sm-right text-xs-center"
@ -63,8 +63,8 @@
keyboard_arrow_right
</v-icon>
</v-btn>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-container>
</div>
</template>

View file

@ -32,8 +32,8 @@
</div>
</v-card-title>
</v-card>
<v-layout row wrap>
<v-flex
<v-row wrap>
<v-col
v-for="(label, index) in results"
:key="index"
class="p-label"
@ -48,7 +48,7 @@
class="grey lighten-2"
@click.prevent="openLabel(index)"
>
<v-layout
<v-row
slot="placeholder"
fill-height
align-center
@ -56,7 +56,7 @@
ma-0
>
<v-progress-circular indeterminate color="grey lighten-5"></v-progress-circular>
</v-layout>
</v-row>
</v-img>
<v-card-actions>
@ -70,8 +70,8 @@
</v-card-actions>
</v-card>
</v-hover>
</v-flex>
</v-layout>
</v-col>
</v-row>
</v-container>
</v-container>
</div>

View file

@ -2,8 +2,8 @@
<div class="p-tab p-tab-general">
<v-container fluid>
<v-form ref="form" class="p-form-settings" lazy-validation @submit.prevent="save" dense>
<v-layout wrap align-center>
<v-flex xs12 sm6 class="pr-3">
<v-row wrap align-center>
<v-col xs12 sm6 class="pr-3">
<v-select
:items="languages"
label="Language"
@ -11,9 +11,9 @@
v-model="settings.language"
flat
></v-select>
</v-flex>
</v-col>
<v-flex xs12 sm6 class="pr-3">
<v-col xs12 sm6 class="pr-3">
<v-select
:items="themes"
label="Theme"
@ -21,8 +21,8 @@
v-model="settings.theme"
flat
></v-select>
</v-flex>
</v-layout>
</v-col>
</v-row>
<v-btn color="blue-grey"
class="white--text ml-0 mt-2"