<import src="../common/template/badge.wxml" />
|
<import src="../common/template/icon.wxml" />
|
<wxs src="./tabs.wxs" module="filters" />
|
<wxs src="../common/utils.wxs" module="_" />
|
|
<view style="{{_._style([style, customStyle])}}" class="{{_.cls(classPrefix, [placement])}} class {{prefix}}-class">
|
<t-sticky
|
t-class="{{_.cls(classPrefix + '__sticky', [placement])}}"
|
disabled="{{ !sticky }}"
|
z-index="{{ stickyProps.zIndex || '1' }}"
|
offset-top="{{ stickyProps.offsetTop || 0 }}"
|
container="{{ stickyProps.container }}"
|
bind:scroll="onTouchScroll"
|
>
|
<view class="{{_.cls(classPrefix + '__wrapper', [theme])}}">
|
<scroll-view
|
class="{{_.cls(classPrefix + '__scroll', [placement, ['split', split]])}}"
|
enhanced
|
enable-flex
|
scroll-left="{{offset}}"
|
scroll-x="{{true}}"
|
scroll-anchoring
|
scroll-with-animation
|
enable-passive
|
show-scrollbar="{{false}}"
|
type="list"
|
bind:scroll="onScroll"
|
>
|
<view class="{{_.cls(classPrefix + '__nav', [placement])}}" aria-role="tablist">
|
<view
|
wx:for="{{tabs}}"
|
wx:key="index"
|
data-index="{{index}}"
|
class="{{_.cls(classPrefix + '__item', [theme, ['evenly', spaceEvenly], placement, ['disabled', item.disabled], ['active', currentIndex === index]])}} {{currentIndex === index ? prefix + '-class-active' : ''}} {{prefix}}-class-item"
|
bind:tap="onTabTap"
|
aria-role="tab"
|
aria-controls="{{tabID + '_panel_' + index}}"
|
aria-selected="{{currentIndex === index}}"
|
aria-disabled="{{item.disabled}}"
|
aria-label="{{ ariaLabel || (item.badgeProps.dot || item.badgeProps.count ? item.label + _.getBadgeAriaLabel({ ...item.badgeProps }) : '') }}"
|
>
|
<view
|
class="{{_.cls(classPrefix + '__item-inner', [theme, ['active', currentIndex === index]])}}"
|
aria-hidden="{{ item.badgeProps.dot || item.badgeProps.count }}"
|
>
|
<template wx:if="{{item.icon}}" is="icon" data="{{ class: classPrefix + '__icon', ...item.icon }}" />
|
<block wx:if="{{item.badgeProps}}">
|
<template is="badge" data="{{ ...item.badgeProps, content: item.label }}" />
|
</block>
|
<block wx:else>{{item.label}}</block>
|
</view>
|
<view wx:if="{{theme == 'card' && currentIndex - 1 == index}}" class="{{classPrefix}}__item-prefix" />
|
<view wx:if="{{theme == 'card' && currentIndex + 1 == index}}" class="{{classPrefix}}__item-suffix" />
|
</view>
|
<view
|
wx:if="{{theme == 'line' && showBottomLine}}"
|
class="{{_.cls(classPrefix + '__track', [placement])}} {{prefix}}-class-track"
|
style="{{trackStyle}}"
|
/>
|
</view>
|
</scroll-view>
|
</view>
|
</t-sticky>
|
<slot name="middle" />
|
<view
|
class="{{_.cls(classPrefix + '__content', [['animated', animation]])}}"
|
bind:touchstart="onTouchStart"
|
bind:touchmove="onTouchMove"
|
bind:touchend="onTouchEnd"
|
bind:touchcancel="onTouchEnd"
|
>
|
<view
|
class="{{classPrefix}}__content-inner {{prefix}}-class-content"
|
style="{{ filters.animate({duration: animation.duration, currentIndex:currentIndex}) }}"
|
>
|
<slot />
|
</view>
|
</view>
|
</view>
|