city-casereport/miniprogram_npm/tdesign-miniprogram/tabs/tabs.wxml

79 lines
3.3 KiB
Plaintext
Raw Normal View History

2023-12-06 14:22:42 +08:00
<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}}"
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>