tab-bar-item.wxml 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. wx:if="{{icon}}"
  19. class="{{classPrefix}}__icon"
  20. style="height: {{iconOnly ? 24 : 20}}px"
  21. aria-hidden="{{ badgeProps.dot || badgeProps.count }}"
  22. >
  23. <t-badge
  24. wx:if="{{badgeProps.dot || badgeProps.count}}"
  25. count="{{badgeProps.count || 0}}"
  26. max-count="{{badgeProps.maxCount || 99}}"
  27. dot="{{badgeProps.dot || false}}"
  28. content="{{badgeProps.content || ''}}"
  29. size="{{badgeProps.size || 'medium'}}"
  30. visible="{{badgeProps.visible}}"
  31. offset="{{badgeProps.offset || [0,0]}}"
  32. t-class-count="{{prefix + '-badge-class'}}"
  33. >
  34. <template is="icon" data="{{ size: iconOnly ? 24 : 20, ..._icon }}" />
  35. </t-badge>
  36. <template wx:else is="icon" data="{{ ariaHidden: !iconOnly, size: iconOnly ? 24 : 20, ..._icon }}" />
  37. <slot name="icon" />
  38. </view>
  39. <view class="{{_.cls(classPrefix + '__text', [['small', !!icon]])}}">
  40. <t-icon wx:if="{{hasChildren}}" name="view-list" size="16" t-class="{{classPrefix}}__icon-menu" />
  41. <slot />
  42. </view>
  43. </view>
  44. <view class="{{classPrefix}}__spread" wx:if="{{hasChildren && isSpread}}">
  45. <view
  46. class="{{classPrefix}}__spread-item"
  47. hover-class="{{classPrefix}}__spread-item--active"
  48. hover-stay-time="{{200}}"
  49. wx:for="{{subTabBar}}"
  50. wx:for-item="child"
  51. wx:for-index="index"
  52. wx:key="index"
  53. bind:tap="selectChild"
  54. data-value="{{child.value || index}}"
  55. aria-role="tab"
  56. >
  57. <view class="{{classPrefix}}__spread-item-split" wx:if="{{index !== 0}}" />
  58. <view class="{{classPrefix}}__spread-item-text" data-value="{{child.value || index}}">{{ child.label }}</view>
  59. </view>
  60. </view>
  61. </view>