tab-bar-item.wxml 2.3 KB

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