diff --git a/CodeEdit/Features/UtilityArea/ViewModels/UtilityAreaViewModel.swift b/CodeEdit/Features/UtilityArea/ViewModels/UtilityAreaViewModel.swift index 671ccf3278..37699164be 100644 --- a/CodeEdit/Features/UtilityArea/ViewModels/UtilityAreaViewModel.swift +++ b/CodeEdit/Features/UtilityArea/ViewModels/UtilityAreaViewModel.swift @@ -52,8 +52,6 @@ class UtilityAreaViewModel: ObservableObject { } func togglePanel() { - withAnimation { - self.isCollapsed.toggle() - } + self.isCollapsed.toggle() } } diff --git a/CodeEdit/Features/UtilityArea/Views/UtilityAreaView.swift b/CodeEdit/Features/UtilityArea/Views/UtilityAreaView.swift index bd897f902a..b03adbf3df 100644 --- a/CodeEdit/Features/UtilityArea/Views/UtilityAreaView.swift +++ b/CodeEdit/Features/UtilityArea/Views/UtilityAreaView.swift @@ -24,21 +24,26 @@ struct UtilityAreaView: View { @State var selection: UtilityAreaTab? = .terminal var body: some View { - VStack(spacing: 0) { - if let selection { - selection - } else { - Text("Tab not found") - .frame(maxWidth: .infinity, maxHeight: .infinity) + GeometryReader { geometry in + VStack(spacing: 0) { + if let selection { + selection + } else { + Text("Tab not found") + .frame(maxWidth: .infinity, maxHeight: .infinity) + } } - } - .safeAreaInset(edge: .leading, spacing: 0) { - HStack(spacing: 0) { - AreaTabBar(items: $utilityAreaViewModel.tabItems, selection: $selection, position: .side) - Divider() - .overlay(Color(nsColor: colorScheme == .dark ? .black : .clear)) + .offset(y: utilityAreaViewModel.isCollapsed ? geometry.size.height : 0) + .safeAreaInset(edge: .leading, spacing: 0) { + HStack(spacing: 0) { + AreaTabBar(items: $utilityAreaViewModel.tabItems, selection: $selection, position: .side) + .offset(y: utilityAreaViewModel.isCollapsed ? geometry.size.height : 0) + Divider() + .overlay(Color(nsColor: colorScheme == .dark ? .black : .clear)) + } } } + .animation(.snappy, value: utilityAreaViewModel.isCollapsed) .overlay(alignment: .bottomTrailing) { HStack(spacing: 5) { Divider()