auto-height-demo.vue 1020 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <script lang="ts" setup>
  2. import { ref } from 'vue';
  3. import { useVbenDrawer } from '@vben/common-ui';
  4. import { Button, message } from 'ant-design-vue';
  5. const list = ref<number[]>([]);
  6. const [Drawer, drawerApi] = useVbenDrawer({
  7. onCancel() {
  8. drawerApi.close();
  9. },
  10. onConfirm() {
  11. message.info('onConfirm');
  12. // drawerApi.close();
  13. },
  14. onOpenChange(isOpen) {
  15. if (isOpen) {
  16. handleUpdate(10);
  17. }
  18. },
  19. });
  20. function handleUpdate(len: number) {
  21. drawerApi.setState({ loading: true });
  22. setTimeout(() => {
  23. list.value = Array.from({ length: len }, (_v, k) => k + 1);
  24. drawerApi.setState({ loading: false });
  25. }, 2000);
  26. }
  27. </script>
  28. <template>
  29. <Drawer title="自动计算高度">
  30. <div
  31. v-for="item in list"
  32. :key="item"
  33. class="even:bg-heavy bg-muted flex-center h-[220px] w-full"
  34. >
  35. {{ item }}
  36. </div>
  37. <template #prepend-footer>
  38. <Button type="link" @click="handleUpdate(6)">点击更新数据</Button>
  39. </template>
  40. </Drawer>
  41. </template>