From 91c4c772b5bf8f1af8f80dcd2cee38889a24a45d Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Wed, 16 Apr 2025 13:08:38 +0300 Subject: [PATCH] SP-1330. --- .../all_spaces/widgets/sidebar_widget.dart | 66 ++++++++++++++++--- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/lib/pages/spaces_management/all_spaces/widgets/sidebar_widget.dart b/lib/pages/spaces_management/all_spaces/widgets/sidebar_widget.dart index 3eb1c001..34cb9a70 100644 --- a/lib/pages/spaces_management/all_spaces/widgets/sidebar_widget.dart +++ b/lib/pages/spaces_management/all_spaces/widgets/sidebar_widget.dart @@ -11,6 +11,8 @@ import 'package:syncrow_web/pages/spaces_management/all_spaces/widgets/space_til import 'package:syncrow_web/pages/spaces_management/create_community/view/create_community_dialog.dart'; import 'package:syncrow_web/pages/spaces_management/structure_selector/bloc/center_body_bloc.dart'; import 'package:syncrow_web/pages/spaces_management/structure_selector/bloc/center_body_event.dart'; +import 'package:syncrow_web/utils/color_manager.dart'; +import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/style.dart'; class SidebarWidget extends StatefulWidget { @@ -30,6 +32,8 @@ class SidebarWidget extends StatefulWidget { } class _SidebarWidgetState extends State { + late final ScrollController _scrollController; + String _searchQuery = ''; String? _selectedSpaceUuid; String? _selectedId; @@ -37,9 +41,16 @@ class _SidebarWidgetState extends State { @override void initState() { _selectedId = widget.selectedSpaceUuid; + _scrollController = ScrollController(); super.initState(); } + @override + void dispose() { + _scrollController.dispose(); + super.dispose(); + } + @override void didUpdateWidget(covariant SidebarWidget oldWidget) { if (widget.selectedSpaceUuid != oldWidget.selectedSpaceUuid) { @@ -86,12 +97,14 @@ class _SidebarWidgetState extends State { return isSpaceSelected || anySubSpaceIsSelected; } + static const _width = 300.0; + @override Widget build(BuildContext context) { final filteredCommunities = _filteredCommunities(); return Container( - width: 300, + width: _width, decoration: subSectionContainerDecoration, child: Column( mainAxisSize: MainAxisSize.min, @@ -103,10 +116,42 @@ class _SidebarWidgetState extends State { ), const SizedBox(height: 16), Expanded( - child: ListView( - children: filteredCommunities - .map((community) => _buildCommunityTile(context, community)) - .toList(), + child: Visibility( + visible: filteredCommunities.isNotEmpty, + replacement: Center( + child: Text( + 'No results found', + textAlign: TextAlign.center, + style: context.textTheme.bodySmall?.copyWith( + color: ColorsManager.lightGreyColor, + fontWeight: FontWeight.w400, + ), + ), + ), + child: ListView( + shrinkWrap: true, + scrollDirection: Axis.horizontal, + children: [ + SizedBox( + width: context.screenWidth * 0.5, + child: Scrollbar( + scrollbarOrientation: ScrollbarOrientation.left, + thumbVisibility: true, + controller: _scrollController, + child: ListView.builder( + padding: const EdgeInsetsDirectional.only(start: 16), + shrinkWrap: true, + itemCount: filteredCommunities.length, + controller: _scrollController, + itemBuilder: (context, index) => _buildCommunityTile( + context, + filteredCommunities[index], + ), + ), + ), + ), + ], + ), ), ), ], @@ -134,11 +179,12 @@ class _SidebarWidgetState extends State { }, onExpansionChanged: (title, expanded) {}, children: community.spaces - .where((space) { - final isDeleted = space.status != SpaceStatus.deleted; - final isParentDeleted = space.status != SpaceStatus.parentDeleted; - return (isDeleted || isParentDeleted); - }) + .where( + (space) => { + SpaceStatus.deleted, + SpaceStatus.parentDeleted, + }.contains(space.status), + ) .map((space) => _buildSpaceTile(space: space, community: community)) .toList(), );