tabs.uvue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <template>
  2. <cl-page>
  3. <view class="p-3">
  4. <demo-item :label="t('基础用法')">
  5. <cl-tabs v-model="form.val1" :list="list"></cl-tabs>
  6. </demo-item>
  7. <demo-item :label="t('显示滑块')">
  8. <cl-tabs
  9. v-model="form.val2"
  10. :list="list"
  11. show-slider
  12. :pt="{ className: isPad ? '!p-2' : '' }"
  13. ></cl-tabs>
  14. <cl-list border :pt="{ className: 'mt-3' }">
  15. <cl-list-item :label="t('添加间距')">
  16. <cl-switch v-model="isPad"></cl-switch>
  17. </cl-list-item>
  18. </cl-list>
  19. </demo-item>
  20. <demo-item :label="t('横向填充')">
  21. <demo-tips>{{ t("适用于标签数量不多的情况") }}</demo-tips>
  22. <cl-tabs v-model="form.val3" :list="list2" fill></cl-tabs>
  23. </demo-item>
  24. <demo-item :label="t('居中')">
  25. <view class="flex flex-row justify-center">
  26. <cl-tabs v-model="form.val4" :list="list2"></cl-tabs>
  27. </view>
  28. </demo-item>
  29. <demo-item :label="t('单个禁用')">
  30. <cl-tabs v-model="form.val5" :list="list3"></cl-tabs>
  31. </demo-item>
  32. <demo-item :label="t('自定义')">
  33. <cl-tabs
  34. v-model="form.val6"
  35. :list="list"
  36. :show-line="isShowLine"
  37. :disabled="isDisabled"
  38. :color="isColor ? 'red' : ''"
  39. :un-color="isColor ? '#ccc' : ''"
  40. ></cl-tabs>
  41. <cl-list border :pt="{ className: 'mt-3' }">
  42. <cl-list-item :label="t('显示下划线')">
  43. <cl-switch v-model="isShowLine"></cl-switch>
  44. </cl-list-item>
  45. <cl-list-item :label="t('禁用')">
  46. <cl-switch v-model="isDisabled"></cl-switch>
  47. </cl-list-item>
  48. <cl-list-item :label="t('自定义颜色')">
  49. <cl-switch v-model="isColor"></cl-switch>
  50. </cl-list-item>
  51. </cl-list>
  52. </demo-item>
  53. </view>
  54. </cl-page>
  55. </template>
  56. <script lang="ts" setup>
  57. import { t } from "@/locale";
  58. import DemoItem from "../components/item.uvue";
  59. import DemoTips from "../components/tips.uvue";
  60. import { reactive, ref } from "vue";
  61. import type { ClTabsItem } from "@/uni_modules/cool-ui";
  62. type Form = {
  63. val1: string;
  64. val2: string;
  65. val3: string;
  66. val4: string;
  67. val5: string;
  68. val6: string;
  69. };
  70. const form = reactive<Form>({
  71. val1: "1",
  72. val2: "2",
  73. val3: "1",
  74. val4: "1",
  75. val5: "2",
  76. val6: "1"
  77. });
  78. const list = ref<ClTabsItem[]>([
  79. {
  80. label: "Vue",
  81. value: "1"
  82. },
  83. {
  84. label: "React",
  85. value: "2"
  86. },
  87. {
  88. label: "Angular",
  89. value: "3"
  90. },
  91. {
  92. label: "Svelte",
  93. value: "4"
  94. },
  95. {
  96. label: "Jquery",
  97. value: "5"
  98. },
  99. {
  100. label: "Vuex",
  101. value: "6"
  102. },
  103. {
  104. label: "Vue Router",
  105. value: "7"
  106. },
  107. {
  108. label: "Pinia",
  109. value: "8"
  110. }
  111. ]);
  112. const list2 = ref<ClTabsItem[]>([
  113. {
  114. label: "Vue",
  115. value: "1"
  116. },
  117. {
  118. label: "React",
  119. value: "2"
  120. },
  121. {
  122. label: "Angular",
  123. value: "3"
  124. },
  125. {
  126. label: "Svelte",
  127. value: "4"
  128. }
  129. ]);
  130. const list3 = ref<ClTabsItem[]>([
  131. {
  132. label: "Vue",
  133. value: "1"
  134. },
  135. {
  136. label: "React",
  137. value: "2"
  138. },
  139. {
  140. label: "Angular",
  141. value: "3",
  142. disabled: true
  143. },
  144. {
  145. label: "Svelte",
  146. value: "4"
  147. }
  148. ]);
  149. const isShowLine = ref(true);
  150. const isDisabled = ref(false);
  151. const isColor = ref(false);
  152. const isPad = ref(false);
  153. </script>