mirror of
https://github.com/Hopiu/vue-material.git
synced 2026-03-16 22:10:27 +00:00
add swipe on Tabs header (#430)
* implement scroll on Tabs header * update let to const on calculateIndicatorPos method * rename prop to md-scrollable-navigation * update docs * fix style * update style * make navigation scrollable by default * remove unused prop
This commit is contained in:
parent
f268648174
commit
f80f1b5aa6
3 changed files with 49 additions and 4 deletions
|
|
@ -177,7 +177,23 @@
|
|||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="pictures" md-label="Pictures" md-tooltip="This is the pictures tab!">
|
||||
<md-tab id="pictures" md-label="Pictures">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="playlists" md-label="Playlists">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="albums" md-label="Albums">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="settings" md-label="Settings">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="account" md-label="Account">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
</md-tabs>
|
||||
|
|
@ -199,7 +215,23 @@
|
|||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="pictures" md-label="Pictures" md-tooltip="This is the pictures tab!">
|
||||
<md-tab id="pictures" md-label="Pictures" md-tooltip=">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="playlists" md-label="Playlists">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="albums" md-label="Albums">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="settings" md-label="Settings">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
|
||||
<md-tab id="account" md-label="Account">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Deserunt dolorum quas.</p>
|
||||
</md-tab>
|
||||
</md-tabs>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
@import '../../core/stylesheets/variables.scss';
|
||||
@import '../../core/stylesheets/mixins.scss';
|
||||
|
||||
$tab-width: 72px;
|
||||
$tab-max-width: 264px;
|
||||
|
|
@ -26,6 +27,7 @@ $tab-max-width: 264px;
|
|||
z-index: 1;
|
||||
display: flex;
|
||||
transition: $swift-ease-out;
|
||||
overflow: hidden;
|
||||
|
||||
&.md-has-icon.md-has-label {
|
||||
min-height: 72px;
|
||||
|
|
@ -50,12 +52,20 @@ $tab-max-width: 264px;
|
|||
}
|
||||
}
|
||||
|
||||
.md-tabs-navigation-container {
|
||||
display: flex;
|
||||
overflow-x: scroll;
|
||||
|
||||
@include layout-small-and-up {
|
||||
margin-bottom: -15px;
|
||||
}
|
||||
}
|
||||
|
||||
.md-tab-header {
|
||||
min-width: $tab-width;
|
||||
max-width: $tab-max-width;
|
||||
margin: 0;
|
||||
padding: 0 12px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
border: 0;
|
||||
|
|
@ -65,6 +75,7 @@ $tab-max-width: 264px;
|
|||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
text-transform: uppercase;
|
||||
flex-shrink: 0;
|
||||
|
||||
&.md-disabled {
|
||||
cursor: default;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<div class="md-tabs" :class="[themeClass, tabClasses]">
|
||||
<md-whiteframe md-tag="nav" class="md-tabs-navigation" :md-elevation="mdElevation" :class="navigationClasses" ref="tabNavigation">
|
||||
<div class="md-tabs-navigation-container" ref="tabsContainer" @scroll="calculateIndicatorPos">
|
||||
<button
|
||||
v-for="header in tabList"
|
||||
:key="header.id"
|
||||
|
|
@ -21,6 +22,7 @@
|
|||
</button>
|
||||
|
||||
<span class="md-tab-indicator" :class="indicatorClasses" ref="indicator"></span>
|
||||
</div>
|
||||
</md-whiteframe>
|
||||
|
||||
<div class="md-tabs-content" ref="tabContent" :style="{ height: contentHeight }">
|
||||
|
|
@ -141,7 +143,7 @@
|
|||
if (this.$refs.tabHeader && this.$refs.tabHeader[this.activeTabNumber]) {
|
||||
const tabsWidth = this.$el.offsetWidth;
|
||||
const activeTab = this.$refs.tabHeader[this.activeTabNumber];
|
||||
const left = activeTab.offsetLeft;
|
||||
const left = activeTab.offsetLeft - this.$refs.tabsContainer.scrollLeft;
|
||||
const right = tabsWidth - left - activeTab.offsetWidth;
|
||||
|
||||
this.$refs.indicator.style.left = left + 'px';
|
||||
|
|
|
|||
Loading…
Reference in a new issue