- Added loader for spells list
This commit is contained in:
@@ -1,28 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="srs">
|
<div id="srs">
|
||||||
|
|
||||||
<header>
|
<header>
|
||||||
<navigation/>
|
<navbar/>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<router-view/>
|
<router-view/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
import navbar from "./components/global/navbar/navbar";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'app',
|
name: 'app'
|
||||||
components: {
|
|
||||||
'navigation': navbar
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ var {
|
|||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
// MISC.
|
|
||||||
hr {
|
hr {
|
||||||
border: none;
|
border: none;
|
||||||
border-top-style: solid;
|
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"
|
@cancelAdd="cancelAdd"
|
||||||
@addSpell="addSpell"/>
|
@addSpell="addSpell"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
v-else
|
||||||
|
class="loader-wrapper">
|
||||||
|
<loader/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -74,7 +79,6 @@ import AddSpellCard from "./add-spell-card"
|
|||||||
// API
|
// API
|
||||||
import { RepositoryFactory } from "~/api/repositories"
|
import { RepositoryFactory } from "~/api/repositories"
|
||||||
const Spells = RepositoryFactory.get('spells')
|
const Spells = RepositoryFactory.get('spells')
|
||||||
// const Schools = RepositoryFactory.get('schools')
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'spellslist',
|
name: 'spellslist',
|
||||||
@@ -184,5 +188,8 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
.loader-wrapper {
|
||||||
|
margin-top: 3rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
</style>
|
</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 VueRouter from 'vue-router'
|
||||||
import App from './app.vue'
|
import App from './app.vue'
|
||||||
|
|
||||||
|
import Globals from './global-components.js'
|
||||||
|
Globals.forEach(component => {
|
||||||
|
Vue.component(component.name, component)
|
||||||
|
});
|
||||||
|
|
||||||
// Auth
|
// Auth
|
||||||
require('dotenv').config()
|
require('dotenv').config()
|
||||||
|
|
||||||
// Router
|
|
||||||
import routes from './routes'
|
|
||||||
Vue.use(VueRouter)
|
|
||||||
|
|
||||||
// Jquery
|
// Jquery
|
||||||
import jquery from 'jquery'
|
import jquery from 'jquery'
|
||||||
window.$ = jquery
|
window.$ = jquery
|
||||||
window.jquery = jquery
|
window.jquery = jquery
|
||||||
|
|
||||||
// Global styles
|
// Styles
|
||||||
import './assets/scss/_global.scss'
|
import './assets/scss/_global.scss'
|
||||||
|
|
||||||
// Bootstrap
|
|
||||||
import 'bootstrap/dist/css/bootstrap.css'
|
import 'bootstrap/dist/css/bootstrap.css'
|
||||||
import 'bootstrap-vue/dist/bootstrap-vue.css'
|
import 'bootstrap-vue/dist/bootstrap-vue.css'
|
||||||
import 'bootstrap/dist/js/bootstrap.js'
|
import 'bootstrap/dist/js/bootstrap.js'
|
||||||
|
|
||||||
|
// Plugins
|
||||||
import { BootstrapVue } from 'bootstrap-vue'
|
import { BootstrapVue } from 'bootstrap-vue'
|
||||||
Vue.use(BootstrapVue)
|
Vue.use(BootstrapVue)
|
||||||
|
|
||||||
// Masonry
|
|
||||||
import { VueMasonryPlugin } from 'vue-masonry';
|
import { VueMasonryPlugin } from 'vue-masonry';
|
||||||
Vue.use(VueMasonryPlugin)
|
Vue.use(VueMasonryPlugin)
|
||||||
|
|
||||||
// Clipboard plugin
|
|
||||||
import clipboard from 'v-clipboard'
|
import clipboard from 'v-clipboard'
|
||||||
Vue.use(clipboard)
|
Vue.use(clipboard)
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
// FUNCTIONS
|
||||||
|
|
||||||
var filter = function(text, length, clamp){
|
var filter = function(text, length, clamp){
|
||||||
clamp = clamp || '...';
|
clamp = clamp || '...';
|
||||||
var node = document.createElement('div');
|
var node = document.createElement('div');
|
||||||
@@ -44,6 +42,9 @@ var filter = function(text, length, clamp){
|
|||||||
};
|
};
|
||||||
Vue.filter('truncate', filter);
|
Vue.filter('truncate', filter);
|
||||||
|
|
||||||
|
// Router
|
||||||
|
import routes from './routes'
|
||||||
|
Vue.use(VueRouter)
|
||||||
const router = new VueRouter({
|
const router = new VueRouter({
|
||||||
mode: 'history',
|
mode: 'history',
|
||||||
routes,
|
routes,
|
||||||
@@ -51,9 +52,9 @@ const router = new VueRouter({
|
|||||||
linkExactActiveClass: "active",
|
linkExactActiveClass: "active",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Mount Vue
|
||||||
const app = new Vue({
|
const app = new Vue({
|
||||||
render: h => h(App),
|
render: h => h(App),
|
||||||
router
|
router
|
||||||
})
|
})
|
||||||
|
|
||||||
app.$mount('#srs')
|
app.$mount('#srs')
|
||||||
|
|||||||
Reference in New Issue
Block a user