analysis-charts-tabs.vue 955 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <script setup lang="ts">
  2. import type { TabOption } from '@vben/types';
  3. import { computed } from 'vue';
  4. import { Tabs, TabsContent, TabsList, TabsTrigger } from '@vben-core/shadcn-ui';
  5. interface Props {
  6. tabs: TabOption[];
  7. }
  8. defineOptions({
  9. name: 'AnalysisChartsTabs',
  10. });
  11. const props = withDefaults(defineProps<Props>(), {
  12. tabs: () => [],
  13. });
  14. const defaultValue = computed(() => {
  15. return props.tabs?.[0]?.value;
  16. });
  17. </script>
  18. <template>
  19. <div class="card-box w-full px-4 pb-5 pt-3 shadow">
  20. <Tabs :default-value="defaultValue">
  21. <TabsList>
  22. <template v-for="tab in tabs" :key="tab.label">
  23. <TabsTrigger :value="tab.value"> {{ tab.label }} </TabsTrigger>
  24. </template>
  25. </TabsList>
  26. <template v-for="tab in tabs" :key="tab.label">
  27. <TabsContent :value="tab.value" class="pt-4">
  28. <slot :name="tab.value"></slot>
  29. </TabsContent>
  30. </template>
  31. </Tabs>
  32. </div>
  33. </template>