|
1 |
| -<template src="./template.html"></template> |
| 1 | +<template> |
| 2 | + <view class="nut-tabs" :class="[direction]" ref="container" id="container"> |
| 3 | + <template v-if="sticky"> |
| 4 | + <nut-sticky :top="top" :container="container" @scroll="onStickyScroll"> |
| 5 | + <view |
| 6 | + class="nut-tabs__titles" |
| 7 | + :class="{ [type]: type, scrollable: titleScroll, [size]: size }" |
| 8 | + :style="tabsNavStyle" |
| 9 | + > |
| 10 | + <slot v-if="$slots.titles" name="titles"></slot> |
| 11 | + <template v-else> |
| 12 | + <view |
| 13 | + class="nut-tabs__titles-item" |
| 14 | + :style="titleStyle" |
| 15 | + @click="tabChange(item, index)" |
| 16 | + :class="{ active: item.paneKey == modelValue, disabled: item.disabled }" |
| 17 | + v-for="(item, index) in titles" |
| 18 | + :key="item.paneKey" |
| 19 | + > |
| 20 | + <view class="nut-tabs__titles-item__line" :style="tabsActiveStyle" v-if="type == 'line'"></view> |
| 21 | + <view class="nut-tabs__titles-item__smile" :style="tabsActiveStyle" v-if="type == 'smile'"> |
| 22 | + <nut-icon :color="color" name="joy-smile" /> |
| 23 | + </view> |
| 24 | + <view class="nut-tabs__titles-item__text" :class="{ ellipsis: ellipsis }">{{ item.title }} </view> |
| 25 | + </view> |
| 26 | + </template> |
| 27 | + </view> |
| 28 | + </nut-sticky> |
| 29 | + </template> |
| 30 | + <template v-else> |
| 31 | + <view |
| 32 | + class="nut-tabs__titles" |
| 33 | + :class="{ [type]: type, scrollable: titleScroll, [size]: size }" |
| 34 | + :style="tabsNavStyle" |
| 35 | + > |
| 36 | + <slot v-if="$slots.titles" name="titles"></slot> |
| 37 | + <template v-else> |
| 38 | + <view |
| 39 | + class="nut-tabs__titles-item" |
| 40 | + :style="titleStyle" |
| 41 | + @click="tabChange(item, index)" |
| 42 | + :class="{ active: item.paneKey == modelValue, disabled: item.disabled }" |
| 43 | + v-for="(item, index) in titles" |
| 44 | + :key="item.paneKey" |
| 45 | + > |
| 46 | + <view class="nut-tabs__titles-item__line" :style="tabsActiveStyle" v-if="type == 'line'"></view> |
| 47 | + <view class="nut-tabs__titles-item__smile" :style="tabsActiveStyle" v-if="type == 'smile'"> |
| 48 | + <nut-icon :color="color" name="joy-smile" /> |
| 49 | + </view> |
| 50 | + <view class="nut-tabs__titles-item__text" :class="{ ellipsis: ellipsis }">{{ item.title }} </view> |
| 51 | + </view> |
| 52 | + </template> |
| 53 | + </view> |
| 54 | + </template> |
| 55 | + <view class="nut-tabs__content" :style="contentStyle"> |
| 56 | + <slot name="default"></slot> |
| 57 | + </view> |
| 58 | + </view> |
| 59 | +</template> |
2 | 60 | <script lang="ts">
|
3 | 61 | import { createComponent } from '@/packages/utils/create';
|
4 | 62 | import { component } from './common';
|
|
0 commit comments