useLeftSidebarCollapse.ts 849 B

1234567891011121314151617181920212223242526272829303132
  1. import { ref } from 'vue'
  2. const isCollapsed = ref(false)
  3. function syncCollapsedFromDom() {
  4. if (typeof document === 'undefined') return
  5. const leftWindow = document.querySelector('uni-left-window')
  6. isCollapsed.value = leftWindow?.classList.contains('collapsed') ?? false
  7. }
  8. function toggleLeftSidebar() {
  9. isCollapsed.value = !isCollapsed.value
  10. const leftWindow = document.querySelector('uni-left-window')
  11. const content = document.querySelector('uni-content')
  12. if (!leftWindow || !content) return
  13. if (isCollapsed.value) {
  14. leftWindow.classList.add('collapsed')
  15. content.classList.add('collapsed')
  16. } else {
  17. leftWindow.classList.remove('collapsed')
  18. content.classList.remove('collapsed')
  19. }
  20. }
  21. export function useLeftSidebarCollapse() {
  22. return {
  23. isCollapsed,
  24. toggleLeftSidebar,
  25. syncCollapsedFromDom,
  26. }
  27. }