aboutsummaryrefslogtreecommitdiff
path: root/src/components/tab_switcher
diff options
context:
space:
mode:
authorMaxim Filippov <colixer@gmail.com>2018-12-17 02:39:37 +0300
committerMaxim Filippov <colixer@gmail.com>2018-12-17 02:39:37 +0300
commit2211c533ddf7a05723afb2e2a8664b9b49c9648d (patch)
treed5bcfbdb55536db01bc0bfda38991db8f159a3e9 /src/components/tab_switcher
parent5fc0fe28e45882da0fab635e839a2977104d2f46 (diff)
parentada4bd0d9874d98213cf79ccd9f7cddda36d1b6c (diff)
Merge branch 'develop' into feature/new-user-routes
Diffstat (limited to 'src/components/tab_switcher')
-rw-r--r--src/components/tab_switcher/tab_switcher.jsx25
-rw-r--r--src/components/tab_switcher/tab_switcher.scss72
2 files changed, 69 insertions, 28 deletions
diff --git a/src/components/tab_switcher/tab_switcher.jsx b/src/components/tab_switcher/tab_switcher.jsx
index 3fff38f6..2f362c4d 100644
--- a/src/components/tab_switcher/tab_switcher.jsx
+++ b/src/components/tab_switcher/tab_switcher.jsx
@@ -18,18 +18,27 @@ export default Vue.component('tab-switcher', {
const tabs = this.$slots.default
.filter(slot => slot.data)
.map((slot, index) => {
- const classes = ['tab']
+ const classesTab = ['tab']
+ const classesWrapper = ['tab-wrapper']
if (index === this.active) {
- classes.push('active')
+ classesTab.push('active')
+ classesWrapper.push('active')
}
- return (<button onClick={this.activateTab(index)} class={ classes.join(' ') }>{slot.data.attrs.label}</button>)
+ return (
+ <div class={ classesWrapper.join(' ')}>
+ <button onClick={this.activateTab(index)} class={ classesTab.join(' ') }>{slot.data.attrs.label}</button>
+ </div>
+ )
});
- const contents = (
- <div>
- {this.$slots.default.filter(slot => slot.data)[this.active]}
- </div>
- );
+ const contents = this.$slots.default.filter(_=>_.data).map(( slot, index ) => {
+ const active = index === this.active
+ return (
+ <div class={active ? 'active' : 'hidden'}>
+ {slot}
+ </div>
+ )
+ });
return (
<div class="tab-switcher">
<div class="tabs">
diff --git a/src/components/tab_switcher/tab_switcher.scss b/src/components/tab_switcher/tab_switcher.scss
index 374a19c5..428335c0 100644
--- a/src/components/tab_switcher/tab_switcher.scss
+++ b/src/components/tab_switcher/tab_switcher.scss
@@ -1,43 +1,75 @@
@import '../../_variables.scss';
.tab-switcher {
+ .contents {
+ .hidden {
+ display: none;
+ }
+ }
.tabs {
display: flex;
position: relative;
- justify-content: center;
width: 100%;
- overflow: hidden;
+ overflow-y: hidden;
+ overflow-x: auto;
padding-top: 5px;
+ box-sizing: border-box;
&::after, &::before {
display: block;
content: '';
flex: 1 1 auto;
- }
-
- .tab, &::after, &::before {
border-bottom: 1px solid;
- border-bottom-color: $fallback--btn;
- border-bottom-color: var(--btn, $fallback--btn);
+ border-bottom-color: $fallback--border;
+ border-bottom-color: var(--border, $fallback--border);
}
- .tab {
- border-bottom-left-radius: 0;
- border-bottom-right-radius: 0;
- padding: .3em 1em;
+ .tab-wrapper {
+ height: 28px;
+ overflow: hidden;
+ position: relative;
+ display: flex;
+ flex: 0 0 auto;
- &:not(.active) {
- border-bottom: 1px solid;
- border-bottom-color: $fallback--btn;
- border-bottom-color: var(--btn, $fallback--btn);
- z-index: 4;
+ .tab {
+ width: 100%;
+ min-width: 1px;
+ position: relative;
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ padding: 6px 1em;
+ padding-bottom: 99px;
+ margin-bottom: 6px - 99px;
+ white-space: nowrap;
+
+ &:not(.active) {
+ z-index: 4;
+
+ &:hover {
+ z-index: 6;
+ }
+ }
+
+ &.active {
+ background: transparent;
+ z-index: 5;
+ }
}
- &.active {
- background: transparent;
- border-bottom: none;
- z-index: 5;
+ &:not(.active) {
+ &::after {
+ content: '';
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 7;
+ border-bottom: 1px solid;
+ border-bottom-color: $fallback--border;
+ border-bottom-color: var(--border, $fallback--border);
+ }
}
}
+
}
}