diff --git a/src/utils/resize.ts b/src/utils/resize.ts new file mode 100644 index 00000000..7b87e539 --- /dev/null +++ b/src/utils/resize.ts @@ -0,0 +1,67 @@ + +import { ref } from 'vue' +export default function() { + const chart = ref() + const sidebarElm = ref() + + const chartResizeHandler = () => { + if (chart.value) { + chart.value.resize() + } + } + + const sidebarResizeHandler = (e: TransitionEvent) => { + if (e.propertyName === 'width') { + chartResizeHandler() + } + } + + const initResizeEvent = () => { + window.addEventListener('resize', chartResizeHandler) + } + + const destroyResizeEvent = () => { + window.removeEventListener('resize', chartResizeHandler) + } + + const initSidebarResizeEvent = () => { + sidebarElm.value = document.getElementsByClassName('sidebar-container')[0] + if (sidebarElm.value) { + sidebarElm.value.addEventListener('transitionend', sidebarResizeHandler as EventListener) + } + } + + const destroySidebarResizeEvent = () => { + if (sidebarElm.value) { + sidebarElm.value.removeEventListener('transitionend', sidebarResizeHandler as EventListener) + } + } + + const mounted = () => { + initResizeEvent() + initSidebarResizeEvent() + } + + const beforeDestroy = () => { + destroyResizeEvent() + destroySidebarResizeEvent() + } + + const activated = () => { + initResizeEvent() + initSidebarResizeEvent() + } + + const deactivated = () => { + destroyResizeEvent() + destroySidebarResizeEvent() + } + + return { + chart, + mounted, + beforeDestroy, + activated, + deactivated + } +} diff --git a/src/views/dashboard/components/BarChart.vue b/src/views/dashboard/components/BarChart.vue index d4513411..0bfa09fc 100644 --- a/src/views/dashboard/components/BarChart.vue +++ b/src/views/dashboard/components/BarChart.vue @@ -8,8 +8,9 @@