tab-bar-item.wxml 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <import src="../common/template/icon.wxml" />
  2. <wxs src="../common/utils.wxs" module="_" />
  3. <view
  4. style="{{_._style([style, customStyle])}}"
  5. class="{{_.cls(classPrefix, [['split', split], ['text-only', !icon], ['crowded', crowded], shape])}} class {{prefix}}-class"
  6. >
  7. <view
  8. class="{{_.cls(classPrefix + '__content', [['checked', isChecked], theme])}}"
  9. hover-class="{{classPrefix}}__content--active"
  10. hover-stay-time="{{200}}"
  11. bindtap="toggle"
  12. aria-selected="{{(!hasChildren || !isSpread) && isChecked ? true : false}}"
  13. aria-expanded="{{hasChildren && isSpread ? true : ''}}"
  14. aria-role="{{hasChildren ? 'button' : 'tab'}}"
  15. aria-label="{{ ariaLabel || (badgeProps.dot || badgeProps.count ? _.getBadgeAriaLabel({ ...badgeProps }) : '') }}"
  16. >
  17. <view
  18. class="{{classPrefix}}__icon"
  19. style="height: {{iconOnly ? 24 : 20}}px"
  20. aria-hidden="{{ badgeProps.dot || badgeProps.count }}"
  21. >
  22. <t-badge
  23. wx:if="{{badgeProps.dot || badgeProps.count}}"
  24. count="{{badgeProps.count || 0}}"
  25. max-count="{{badgeProps.maxCount || 99}}"
  26. dot="{{badgeProps.dot || false}}"
  27. content="{{badgeProps.content || ''}}"
  28. size="{{badgeProps.size || 'medium'}}"
  29. visible="{{badgeProps.visible}}"
  30. offset="{{badgeProps.offset || [0,0]}}"
  31. t-class-count="{{prefix + '-badge-class'}}"
  32. >
  33. <template is="icon" data="{{ size: iconOnly ? 24 : 20, ..._icon }}" />
  34. </t-badge>
  35. <template wx:elif="{{!!icon}}" is="icon" data="{{ ariaHidden: !iconOnly, size: iconOnly ? 24 : 20, ..._icon }}" />
  36. <slot name="icon" />
  37. </view>
  38. <view class="{{_.cls(classPrefix + '__text', [['small', !!icon]])}}">
  39. <t-icon wx:if="{{hasChildren}}" name="view-list" size="32rpx" t-class="{{classPrefix}}__icon-menu" />
  40. <slot />
  41. </view>
  42. </view>
  43. <view class="{{classPrefix}}__spread" wx:if="{{hasChildren && isSpread}}">
  44. <view
  45. class="{{classPrefix}}__spread-item"
  46. hover-class="{{classPrefix}}__spread-item--active"
  47. hover-stay-time="{{200}}"
  48. wx:for="{{subTabBar}}"
  49. wx:for-item="child"
  50. wx:for-index="index"
  51. wx:key="value"
  52. bind:tap="selectChild"
  53. data-value="{{child.value || index}}"
  54. aria-role="tab"
  55. >
  56. <view class="{{classPrefix}}__spread-item-split" wx:if="{{index !== 0}}" />
  57. <view class="{{classPrefix}}__spread-item-text" data-value="{{child.value || index}}">{{ child.label }}</view>
  58. </view>
  59. </view>
  60. </view>