index.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <div
  3. class="chart-item"
  4. v-for="item in groupData.groupList"
  5. :class="animationsClass(item.styles.animations)"
  6. :key="item.id"
  7. :style="{
  8. ...getComponentAttrStyle(item.attr, groupIndex),
  9. ...getFilterStyle(item.styles),
  10. ...getTransformStyle(item.styles)
  11. }"
  12. >
  13. <component
  14. :is="item.chartConfig.chartKey"
  15. :chartConfig="item"
  16. :themeSetting="themeSetting"
  17. :themeColor="themeColor"
  18. :style="{ ...getSizeStyle(item.attr) }"
  19. ></component>
  20. </div>
  21. </template>
  22. <script setup lang="ts">
  23. import { PropType } from 'vue'
  24. import { CreateComponentGroupType } from '@/packages/index.d'
  25. import { animationsClass, getFilterStyle, getTransformStyle } from '@/utils'
  26. import { getSizeStyle, getComponentAttrStyle } from '../../utils'
  27. const props = defineProps({
  28. groupData: {
  29. type: Object as PropType<CreateComponentGroupType>,
  30. required: true
  31. },
  32. themeSetting: {
  33. type: Object,
  34. required: true
  35. },
  36. themeColor: {
  37. type: Object,
  38. required: true
  39. },
  40. groupIndex: {
  41. type: Number,
  42. required: true
  43. }
  44. })
  45. </script>
  46. <style lang="scss" scoped>
  47. .chart-item {
  48. position: absolute;
  49. }
  50. </style>