Merge branch 'fix-tab-scroll' into 'develop'

Fix tab scroll

See merge request pleroma/pleroma-fe!426
This commit is contained in:
Shpuld Shpludson 2018-12-16 07:56:29 +00:00
commit ada4bd0d98
2 changed files with 40 additions and 24 deletions

View File

@ -18,12 +18,18 @@ export default Vue.component('tab-switcher', {
const tabs = this.$slots.default const tabs = this.$slots.default
.filter(slot => slot.data) .filter(slot => slot.data)
.map((slot, index) => { .map((slot, index) => {
const classes = ['tab'] const classesTab = ['tab']
const classesWrapper = ['tab-wrapper']
if (index === this.active) { 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 = this.$slots.default.filter(_=>_.data).map(( slot, index ) => { const contents = this.$slots.default.filter(_=>_.data).map(( slot, index ) => {
const active = index === this.active const active = index === this.active

View File

@ -9,31 +9,37 @@
.tabs { .tabs {
display: flex; display: flex;
position: relative; position: relative;
justify-content: center;
width: 100%; width: 100%;
overflow-y: hidden; overflow-y: hidden;
overflow-x: auto; overflow-x: auto;
padding-top: 5px; padding-top: 5px;
height: 32px;
box-sizing: border-box; box-sizing: border-box;
&::after, &::before { &::after, &::before {
display: block; display: block;
content: ''; content: '';
flex: 1 1 auto; flex: 1 1 auto;
}
.tab, &::after, &::before {
border-bottom: 1px solid; border-bottom: 1px solid;
border-bottom-color: $fallback--border; border-bottom-color: $fallback--border;
border-bottom-color: var(--border, $fallback--border); border-bottom-color: var(--border, $fallback--border);
} }
.tab-wrapper {
height: 28px;
overflow: hidden;
position: relative;
display: flex;
flex: 0 0 auto;
.tab { .tab {
width: 100%;
min-width: 1px;
position: relative; position: relative;
border-bottom-left-radius: 0; border-bottom-left-radius: 0;
border-bottom-right-radius: 0; border-bottom-right-radius: 0;
padding: 5px 1em 99px; padding: 6px 1em;
padding-bottom: 99px;
margin-bottom: 6px - 99px;
white-space: nowrap; white-space: nowrap;
&:not(.active) { &:not(.active) {
@ -42,24 +48,28 @@
&:hover { &:hover {
z-index: 6; z-index: 6;
} }
}
&.active {
background: transparent;
z-index: 5;
}
}
&:not(.active) {
&::after { &::after {
content: ''; content: '';
position: absolute; position: absolute;
left: 0; left: 0;
right: 0; right: 0;
top: 26px; bottom: 0;
z-index: 7;
border-bottom: 1px solid; border-bottom: 1px solid;
border-bottom-color: $fallback--border; border-bottom-color: $fallback--border;
border-bottom-color: var(--border, $fallback--border); border-bottom-color: var(--border, $fallback--border);
} }
} }
}
&.active {
background: transparent;
border-bottom: none;
z-index: 5;
}
}
} }
} }