aboutsummaryrefslogtreecommitdiff
path: root/src/components/tab_switcher/tab_switcher.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/tab_switcher/tab_switcher.js')
-rw-r--r--src/components/tab_switcher/tab_switcher.js34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/components/tab_switcher/tab_switcher.js b/src/components/tab_switcher/tab_switcher.js
index 7891cb78..9c1da354 100644
--- a/src/components/tab_switcher/tab_switcher.js
+++ b/src/components/tab_switcher/tab_switcher.js
@@ -1,4 +1,5 @@
import Vue from 'vue'
+import { mapState } from 'vuex'
import './tab_switcher.scss'
@@ -44,7 +45,13 @@ export default Vue.component('tab-switcher', {
} else {
return this.active
}
- }
+ },
+ settingsModalVisible () {
+ return this.settingsModalState === 'visible'
+ },
+ ...mapState({
+ settingsModalState: state => state.interface.settingsModalState
+ })
},
beforeUpdate () {
const currentSlot = this.$slots.default[this.active]
@@ -53,16 +60,19 @@ export default Vue.component('tab-switcher', {
}
},
methods: {
- activateTab (index) {
+ clickTab (index) {
return (e) => {
e.preventDefault()
- if (typeof this.onSwitch === 'function') {
- this.onSwitch.call(null, this.$slots.default[index].key)
- }
- this.active = index
- if (this.scrollableTabs) {
- this.$refs.contents.scrollTop = 0
- }
+ this.setTab(index)
+ }
+ },
+ setTab (index) {
+ if (typeof this.onSwitch === 'function') {
+ this.onSwitch.call(null, this.$slots.default[index].key)
+ }
+ this.active = index
+ if (this.scrollableTabs) {
+ this.$refs.contents.scrollTop = 0
}
}
},
@@ -81,7 +91,7 @@ export default Vue.component('tab-switcher', {
<div class={classesWrapper.join(' ')}>
<button
disabled={slot.data.attrs.disabled}
- onClick={this.activateTab(index)}
+ onClick={this.clickTab(index)}
class={classesTab.join(' ')}>
<img src={slot.data.attrs.image} title={slot.data.attrs['image-tooltip']}/>
{slot.data.attrs.label ? '' : slot.data.attrs.label}
@@ -93,7 +103,7 @@ export default Vue.component('tab-switcher', {
<div class={classesWrapper.join(' ')}>
<button
disabled={slot.data.attrs.disabled}
- onClick={this.activateTab(index)}
+ onClick={this.clickTab(index)}
class={classesTab.join(' ')}
type="button"
>
@@ -134,7 +144,7 @@ export default Vue.component('tab-switcher', {
<div class="tabs">
{tabs}
</div>
- <div ref="contents" class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}>
+ <div ref="contents" class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')} v-body-scroll-lock={this.settingsModalVisible}>
{contents}
</div>
</div>