- Added loader for spells list
This commit is contained in:
@@ -1,28 +1,14 @@
|
||||
<template>
|
||||
<div id="srs">
|
||||
|
||||
<header>
|
||||
<navigation/>
|
||||
<navbar/>
|
||||
</header>
|
||||
|
||||
<router-view/>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import navbar from "./components/global/navbar/navbar";
|
||||
|
||||
export default {
|
||||
name: 'app',
|
||||
components: {
|
||||
'navigation': navbar
|
||||
}
|
||||
name: 'app'
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
</style>
|
||||
|
||||
@@ -44,7 +44,6 @@ var {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
// MISC.
|
||||
hr {
|
||||
border: none;
|
||||
border-top-style: solid;
|
||||
|
||||
110
client/src/components/global/loader.vue
Normal file
110
client/src/components/global/loader.vue
Normal file
@@ -0,0 +1,110 @@
|
||||
<template>
|
||||
<div class="lds-roller">
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'loader',
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.lds-roller {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
div {
|
||||
animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
|
||||
transform-origin: 40px 40px;
|
||||
&:after {
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
width: 7px;
|
||||
height: 7px;
|
||||
border-radius: 50%;
|
||||
background: var(--primary);
|
||||
margin: -4px 0 0 -4px;
|
||||
}
|
||||
&:nth-child(1) {
|
||||
animation-delay: -0.036s;
|
||||
&:after {
|
||||
top: 63px;
|
||||
left: 63px;
|
||||
}
|
||||
}
|
||||
&:nth-child(2) {
|
||||
animation-delay: -0.072s;
|
||||
&:after {
|
||||
top: 68px;
|
||||
left: 56px;
|
||||
}
|
||||
}
|
||||
&:nth-child(3) {
|
||||
animation-delay: -0.108s;
|
||||
&:after {
|
||||
top: 71px;
|
||||
left: 48px;
|
||||
}
|
||||
}
|
||||
&:nth-child(4) {
|
||||
animation-delay: -0.144s;
|
||||
&:after {
|
||||
top: 72px;
|
||||
left: 40px;
|
||||
}
|
||||
}
|
||||
&:nth-child(5) {
|
||||
animation-delay: -0.18s;
|
||||
&:after {
|
||||
top: 71px;
|
||||
left: 32px;
|
||||
}
|
||||
}
|
||||
&:nth-child(6) {
|
||||
animation-delay: -0.216s;
|
||||
&:after {
|
||||
top: 68px;
|
||||
left: 24px;
|
||||
}
|
||||
}
|
||||
&:nth-child(7) {
|
||||
animation-delay: -0.252s;
|
||||
&:after {
|
||||
top: 63px;
|
||||
left: 17px;
|
||||
}
|
||||
}
|
||||
&:nth-child(8) {
|
||||
animation-delay: -0.288s;
|
||||
&:after {
|
||||
top: 56px;
|
||||
left: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@keyframes lds-roller {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -62,6 +62,11 @@
|
||||
@cancelAdd="cancelAdd"
|
||||
@addSpell="addSpell"/>
|
||||
</div>
|
||||
<div
|
||||
v-else
|
||||
class="loader-wrapper">
|
||||
<loader/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -74,7 +79,6 @@ import AddSpellCard from "./add-spell-card"
|
||||
// API
|
||||
import { RepositoryFactory } from "~/api/repositories"
|
||||
const Spells = RepositoryFactory.get('spells')
|
||||
// const Schools = RepositoryFactory.get('schools')
|
||||
|
||||
export default {
|
||||
name: 'spellslist',
|
||||
@@ -184,5 +188,8 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
.loader-wrapper {
|
||||
margin-top: 3rem;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
7
client/src/global-components.js
Normal file
7
client/src/global-components.js
Normal file
@@ -0,0 +1,7 @@
|
||||
import Navbar from './components/global/navbar/navbar'
|
||||
import Loader from './components/global/loader'
|
||||
|
||||
export default [
|
||||
Navbar,
|
||||
Loader
|
||||
]
|
||||
@@ -3,38 +3,36 @@ import Vue from 'vue'
|
||||
import VueRouter from 'vue-router'
|
||||
import App from './app.vue'
|
||||
|
||||
import Globals from './global-components.js'
|
||||
Globals.forEach(component => {
|
||||
Vue.component(component.name, component)
|
||||
});
|
||||
|
||||
// Auth
|
||||
require('dotenv').config()
|
||||
|
||||
// Router
|
||||
import routes from './routes'
|
||||
Vue.use(VueRouter)
|
||||
|
||||
// Jquery
|
||||
import jquery from 'jquery'
|
||||
window.$ = jquery
|
||||
window.jquery = jquery
|
||||
|
||||
// Global styles
|
||||
// Styles
|
||||
import './assets/scss/_global.scss'
|
||||
|
||||
// Bootstrap
|
||||
import 'bootstrap/dist/css/bootstrap.css'
|
||||
import 'bootstrap-vue/dist/bootstrap-vue.css'
|
||||
import 'bootstrap/dist/js/bootstrap.js'
|
||||
|
||||
// Plugins
|
||||
import { BootstrapVue } from 'bootstrap-vue'
|
||||
Vue.use(BootstrapVue)
|
||||
|
||||
// Masonry
|
||||
import { VueMasonryPlugin } from 'vue-masonry';
|
||||
Vue.use(VueMasonryPlugin)
|
||||
|
||||
// Clipboard plugin
|
||||
import clipboard from 'v-clipboard'
|
||||
Vue.use(clipboard)
|
||||
|
||||
Vue.config.productionTip = false
|
||||
|
||||
// FUNCTIONS
|
||||
var filter = function(text, length, clamp){
|
||||
clamp = clamp || '...';
|
||||
var node = document.createElement('div');
|
||||
@@ -44,6 +42,9 @@ var filter = function(text, length, clamp){
|
||||
};
|
||||
Vue.filter('truncate', filter);
|
||||
|
||||
// Router
|
||||
import routes from './routes'
|
||||
Vue.use(VueRouter)
|
||||
const router = new VueRouter({
|
||||
mode: 'history',
|
||||
routes,
|
||||
@@ -51,9 +52,9 @@ const router = new VueRouter({
|
||||
linkExactActiveClass: "active",
|
||||
});
|
||||
|
||||
// Mount Vue
|
||||
const app = new Vue({
|
||||
render: h => h(App),
|
||||
router
|
||||
})
|
||||
|
||||
app.$mount('#srs')
|
||||
|
||||
Reference in New Issue
Block a user