TF-3758 Update mailbox view on mobile web responsive

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-05-30 16:57:07 +07:00
committed by Dat H. Pham
parent 6c7602ebe6
commit 15c0d58c7c
26 changed files with 695 additions and 898 deletions
@@ -17,7 +17,7 @@ class CountOfEmailsWidget extends StatelessWidget {
overflow: TextOverflow.ellipsis,
style: PlatformInfo.isMobile
? ThemeUtils.textStyleInter400()
: Theme.of(context).textTheme.bodyMedium?.copyWith(
: Theme.of(context).textTheme.bodySmall?.copyWith(
color: Colors.black,
),
);
@@ -72,7 +72,6 @@ class FolderWidget extends StatelessWidget {
borderRadius: BorderRadius.all(
Radius.circular(borderRadius ?? MailboxItemWidgetStyles.borderRadius),
),
hoverColor: AppColor.blue100,
child: item,
),
);
@@ -4,7 +4,6 @@ import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:model/mailbox/expand_mode.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/expand_mode_extension.dart';
@@ -36,6 +35,8 @@ class FoldersBarWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
final isDesktop = responsiveUtils.isDesktop(context);
Widget searchBarIcon = TMailButtonWidget.fromIcon(
icon: imagePaths.icSearchBar,
backgroundColor: Colors.transparent,
@@ -45,7 +46,7 @@ class FoldersBarWidget extends StatelessWidget {
onTapActionCallback: onOpenSearchFolder,
);
if (responsiveUtils.isWebDesktop(context)) {
if (isDesktop) {
searchBarIcon = Transform(
transform: Matrix4.translationValues(8, 0, 0),
child: searchBarIcon,
@@ -62,7 +63,7 @@ class FoldersBarWidget extends StatelessWidget {
onTapActionCallback: onAddNewFolder,
);
if (responsiveUtils.isWebDesktop(context)) {
if (isDesktop) {
newFolderIcon = Transform(
transform: Matrix4.translationValues(8, 0, 0),
child: newFolderIcon,
@@ -78,8 +79,8 @@ class FoldersBarWidget extends StatelessWidget {
return Container(
padding: padding ?? EdgeInsetsDirectional.only(
start: responsiveUtils.isWebDesktop(context) ? 10 : 26,
end: responsiveUtils.isWebDesktop(context) ? 0 : 8,
start: isDesktop ? 10 : 26,
end: isDesktop ? 0 : 8,
),
height: height ?? 48,
child: Row(
@@ -94,9 +95,12 @@ class FoldersBarWidget extends StatelessWidget {
DirectionUtils.isDirectionRTLByLanguage(context),
),
iconColor: Colors.black,
iconSize: PlatformInfo.isMobile ? 17 : 20,
iconSize: 17,
margin: isDesktop
? const EdgeInsetsDirectional.only(start: 8)
: null,
backgroundColor: Colors.transparent,
padding: EdgeInsets.all(PlatformInfo.isMobile ? 3 : 5),
padding: const EdgeInsets.all(3),
tooltipMessage: expandMode!.getTooltipMessage(AppLocalizations.of(context)),
onTapActionCallback: () => onToggleExpandFolder?.call(),
)
@@ -3,7 +3,6 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:core/presentation/views/text/text_overflow_builder.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/presentation_mailbox_extension.dart';
@@ -72,7 +71,8 @@ class _LabelMailboxItemWidgetState extends State<LabelMailboxItemWidget> {
itemKey: widget.itemKey,
mailboxNode: widget.mailboxNode,
imagePaths: widget.imagePaths,
onExpandFolderActionClick: widget.onClickExpandMailboxNodeAction,
responsiveUtils: widget.responsiveUtils,
onExpandFolderActionClick: onClickExpandMailboxNodeAction,
),
],
);
@@ -163,13 +163,13 @@ class _LabelMailboxItemWidgetState extends State<LabelMailboxItemWidget> {
TextStyle get _displayNameTextStyle {
if (isSelected) {
return ThemeUtils.textStyleInter700(
color: PlatformInfo.isMobile ? AppColor.iconFolder : null,
color: responsiveUtils.isDesktop(context) ? null : AppColor.iconFolder,
fontSize: 14,
);
} else {
return PlatformInfo.isMobile
? ThemeUtils.textStyleInter500()
: ThemeUtils.textStyleBodyBody3(color: Colors.black);
return responsiveUtils.isWebDesktop(context)
? ThemeUtils.textStyleBodyBody3(color: Colors.black)
: ThemeUtils.textStyleInter500();
}
}
}
@@ -2,7 +2,6 @@ import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/theme_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
@@ -79,12 +78,10 @@ class _MailboxCategoryWidgetState extends State<MailboxCategoryWidget> {
DirectionUtils.isDirectionRTLByLanguage(context),
),
iconColor: Colors.black,
iconSize: PlatformInfo.isMobile ? 17 : 20,
iconSize: 17,
backgroundColor: Colors.transparent,
margin: PlatformInfo.isMobile
? const EdgeInsetsDirectional.only(start: 8)
: null,
padding: EdgeInsets.all(PlatformInfo.isMobile ? 3 : 5),
margin: const EdgeInsetsDirectional.only(start: 8),
padding: const EdgeInsets.all(3),
tooltipMessage: widget.expandMode.getTooltipMessage(AppLocalizations.of(context)),
onTapActionCallback: () =>
widget.onToggleMailboxCategories(widget.categories, _key)),
@@ -1,8 +1,8 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/responsive_utils.dart';
import 'package:core/presentation/views/button/tmail_button_widget.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
import 'package:flutter/material.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/extensions/expand_mode_extension.dart';
@@ -14,6 +14,7 @@ class MailboxExpandButton extends StatelessWidget {
final GlobalKey itemKey;
final MailboxNode mailboxNode;
final ImagePaths imagePaths;
final ResponsiveUtils responsiveUtils;
final OnClickExpandMailboxNodeAction? onExpandFolderActionClick;
const MailboxExpandButton({
@@ -21,6 +22,7 @@ class MailboxExpandButton extends StatelessWidget {
required this.itemKey,
required this.mailboxNode,
required this.imagePaths,
required this.responsiveUtils,
required this.onExpandFolderActionClick,
});
@@ -32,11 +34,9 @@ class MailboxExpandButton extends StatelessWidget {
DirectionUtils.isDirectionRTLByLanguage(context),
),
iconColor: _expandIconColor,
iconSize: PlatformInfo.isMobile ? 17 : 20,
margin: PlatformInfo.isMobile
? const EdgeInsetsDirectional.only(start: 8)
: null,
padding: EdgeInsets.all(PlatformInfo.isMobile ? 3 : 5),
iconSize: 17,
margin: const EdgeInsetsDirectional.only(start: 8),
padding: const EdgeInsets.all(3),
backgroundColor: Colors.transparent,
tooltipMessage: mailboxNode.expandMode.getTooltipMessage(AppLocalizations.of(context)),
onTapActionCallback: () => onExpandFolderActionClick?.call(mailboxNode, itemKey),
@@ -142,11 +142,17 @@ class _MailboxItemWidgetState extends State<MailboxItemWidget> {
),
height: widget.mailboxNode.item.isTeamMailboxes
? MailboxItemWidgetStyles.teamMailboxHeight
: MailboxItemWidgetStyles.height,
: MailboxItemWidgetStyles.mobileHeight,
child: Row(
children: [
if (_isIconDisplayed)
MailboxIconWidget(icon: _iconMailbox),
MailboxIconWidget(
icon: _iconMailbox,
padding: const EdgeInsetsDirectional.only(
end: MailboxItemWidgetStyles.mobileLabelIconSpace,
),
color: AppColor.iconFolder,
),
Expanded(
child: LabelMailboxItemWidget(
itemKey: _key,
@@ -36,8 +36,12 @@ class TrailingMailboxItemWidget extends StatelessWidget {
? EdgeInsets.zero
: TrailingMailboxItemWidgetStyles.menuIconMargin,
icon: imagePaths.icMoreVertical,
iconSize: TrailingMailboxItemWidgetStyles.menuIconSize,
padding: TrailingMailboxItemWidgetStyles.menuIconPadding,
iconSize: mailboxNode.item.isTeamMailboxes
? 17
: TrailingMailboxItemWidgetStyles.menuIconSize,
padding: mailboxNode.item.isTeamMailboxes
? const EdgeInsets.all(3)
: TrailingMailboxItemWidgetStyles.menuIconPadding,
backgroundColor: TrailingMailboxItemWidgetStyles.menuIconBackgroundColor,
onTapActionAtPositionCallback: (position) => onMenuActionClick?.call(position, mailboxNode),
);