Skip to content
This repository was archived by the owner on Feb 21, 2022. It is now read-only.

Commit 599a948

Browse files
committed
Added possibility to scroll horizontal themes
1 parent 1651089 commit 599a948

1 file changed

Lines changed: 54 additions & 23 deletions

File tree

src/components/LoginSettings.vue

Lines changed: 54 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,66 @@
11
<template lang='pug'>
2-
.login-settings(ref='body')
2+
.login-settings(
3+
)
34
h1 {{ $t('settings.title') }}:
4-
.settings-themes-item(
5-
@click='changeTheme(theme)'
6-
v-for='(theme, i) in themes' :key='i'
7-
:style='`background: url(${setImage(theme.name.toLowerCase())}) no-repeat center/cover`'
8-
)
9-
h4 {{theme.name}}
10-
.settings-themes-item(
11-
@click='changeTheme(background, true)'
12-
v-for='(background, index) in backgrounds'
13-
:key='`${index}-background`' :style='`background: url(${backgrounds[index]}) no-repeat center/cover`'
14-
)
5+
.settings-themes-body(ref='listener')
6+
.settings-themes-items(ref='body' :style='`transform: translateX(${offset}px)`')
7+
.settings-themes-item(
8+
@click='changeTheme(theme)'
9+
v-for='(theme, i) in themes' :key='i'
10+
:style='`background: url(${setImage(theme.name.toLowerCase())}) no-repeat center/cover`'
11+
)
12+
h4 {{ theme.name }}
13+
.settings-themes-item(
14+
@click='changeTheme(background, true)'
15+
v-for='(background, index) in backgrounds'
16+
:key='`${index}-background`' :style='`background: url(${backgrounds[index]}) no-repeat center/cover`'
17+
)
1518
</template>
1619

1720
<script>
1821
import { backgrounds } from '@/lightdm'
1922
import { mapState, mapGetters, mapActions } from 'vuex'
2023
2124
export default {
22-
name: 'LoginComponent',
25+
name: 'LoginSettings',
2326
data() {
2427
return {
25-
backgrounds: backgrounds()
28+
backgrounds: backgrounds(),
29+
offset: 0
2630
}
2731
},
2832
computed: {
2933
...mapState('settings', ['themes', 'loginPosition']),
3034
...mapGetters('settings', { theme: 'getCurrentTheme' }),
3135
},
3236
mounted() {
33-
const block = this.$refs.body || document.querySelector('.login-settings')
37+
if (['left', 'right'].includes(this.loginPosition)) {
38+
return
39+
}
40+
const listener = this.$refs.listener
41+
const block = this.$refs.body
3442
35-
console.log(this.$refs.body, 'this.$refs.body')
36-
block.addEventListener('scroll', this.handleScroll, { passive: false })
43+
listener.addEventListener('wheel', this.handleWheel, { passive: false })
3744
},
38-
destroyed () {
39-
const block = document.querySelector('.login-settings')
40-
block.removeEventListener('scroll', this.handleScroll)
45+
beforeDestroy() {
46+
const listener = this.$refs.listener
47+
listener.removeEventListener('wheel', this.handleWheel)
4148
},
4249
methods: {
43-
handleScroll(event) {
44-
console.log(event)
50+
handleWheel(event) {
51+
const block = this.$refs.body
52+
const { wheelDeltaY } = event
53+
let step = 20
54+
const maxOffset = block.scrollWidth - block.clientWidth
55+
56+
wheelDeltaY > 0 ? step *= 1 : step *= -1
57+
if (
58+
(step > 0 && this.offset + step < step) ||
59+
(step < 0 && Math.abs(this.offset + step) < maxOffset)
60+
) {
61+
this.offset +=step
62+
}
63+
4564
event.stopPropagation()
4665
event.preventDefault()
4766
},
@@ -67,4 +86,16 @@ export default {
6786
}
6887
</script>
6988

70-
<style lang="stylus"></style>
89+
<style lang="stylus">
90+
.settings-themes-body
91+
width 100%
92+
height 100%
93+
position relative
94+
overflow hidden
95+
96+
.settings-themes-items
97+
width 100%
98+
height 100%
99+
position absolute
100+
display flex
101+
</style>

0 commit comments

Comments
 (0)