ListView.vue 619 B

12345678910111213141516171819202122
  1. <template>
  2. <div class="filter" ref="filterEl">
  3. <slot name="filter"></slot>
  4. </div>
  5. <slot></slot>
  6. </template>
  7. <script setup>
  8. import { ref, provide, computed } from 'vue'
  9. import { useElementBounding, useWindowSize } from '@vueuse/core'
  10. const filterEl = ref(null)
  11. const { height: filterHeight } = useElementBounding(filterEl)
  12. const { height: windowHeight } = useWindowSize()
  13. const tableHeight = computed(() => windowHeight.value - 145 - filterHeight.value)
  14. provide('tableHeight', tableHeight)
  15. </script>
  16. <style lang="less" scoped>
  17. .filter {
  18. :deep(> *) {
  19. margin-bottom: 10px;
  20. }
  21. }
  22. </style>