diff --git a/lib/features/destination_picker/presentation/destination_picker_view.dart b/lib/features/destination_picker/presentation/destination_picker_view.dart index 7dcaae7e2..eb36eb73b 100644 --- a/lib/features/destination_picker/presentation/destination_picker_view.dart +++ b/lib/features/destination_picker/presentation/destination_picker_view.dart @@ -348,7 +348,8 @@ class DestinationPickerView extends GetWidget categories, controller, toggleMailboxCategories: controller.toggleMailboxCategories, - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8) + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + isArrangeLTR: false, ), AnimatedContainer( duration: const Duration(milliseconds: 400), diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart index c782456e1..7b1cdb0c3 100644 --- a/lib/features/mailbox/presentation/mailbox_view.dart +++ b/lib/features/mailbox/presentation/mailbox_view.dart @@ -1,5 +1,4 @@ import 'package:core/core.dart'; -import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:get/get.dart'; @@ -331,38 +330,6 @@ class MailboxView extends BaseMailboxView { ); } - Widget _buildHeaderMailboxCategory(BuildContext context, MailboxCategories categories) { - return Padding( - padding: EdgeInsetsDirectional.only( - start: 12, - end: controller.responsiveUtils.isLandscapeMobile(context) ? 8 : 28), - child: Row(children: [ - TMailButtonWidget.fromIcon( - icon: categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND - ? controller.imagePaths.icArrowBottom - : DirectionUtils.isDirectionRTLByLanguage(context) - ? controller.imagePaths.icArrowLeft - : controller.imagePaths.icArrowRight, - tooltipMessage: AppLocalizations.of(context).collapse, - backgroundColor: Colors.transparent, - padding: const EdgeInsets.all(5), - iconColor: Colors.black, - iconSize: 20, - onTapActionCallback: () => controller.toggleMailboxCategories(categories) - ), - Expanded( - child: Text( - categories.getTitle(context), - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: ThemeUtils.textStyleBodyBody3( - color: Colors.black, - ) - ) - ), - ])); - } - Widget _buildBodyMailboxCategory(BuildContext context, MailboxCategories categories, MailboxNode mailboxNode) { final lastNode = mailboxNode.childrenItems?.last; @@ -382,7 +349,18 @@ class MailboxView extends BaseMailboxView { return _buildBodyMailboxCategory(context, categories, mailboxNode); } return Column(children: [ - _buildHeaderMailboxCategory(context, categories), + buildHeaderMailboxCategory( + context, + controller.responsiveUtils, + controller.imagePaths, + categories, + controller, + toggleMailboxCategories: controller.toggleMailboxCategories, + padding: EdgeInsetsDirectional.only( + start: 16, + end: controller.responsiveUtils.isLandscapeMobile(context) ? 8 : 28), + isArrangeLTR: false, + ), AnimatedContainer( duration: const Duration(milliseconds: 400), child: categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND diff --git a/lib/features/mailbox/presentation/mailbox_view_web.dart b/lib/features/mailbox/presentation/mailbox_view_web.dart index baaec6b92..86ab08233 100644 --- a/lib/features/mailbox/presentation/mailbox_view_web.dart +++ b/lib/features/mailbox/presentation/mailbox_view_web.dart @@ -323,7 +323,8 @@ class MailboxView extends BaseMailboxView { toggleMailboxCategories: controller.toggleMailboxCategories, padding: controller.responsiveUtils.isDesktop(context) ? null - : const EdgeInsetsDirectional.only(start: 16) + : const EdgeInsetsDirectional.only(start: 16), + isArrangeLTR: false, ), AnimatedContainer( duration: const Duration(milliseconds: 400), diff --git a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart index 00ec00c11..a4f2f5ff1 100644 --- a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart +++ b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart @@ -340,30 +340,40 @@ mixin MailboxWidgetMixin { BaseMailboxController baseMailboxController, { required Function(MailboxCategories categories) toggleMailboxCategories, - EdgeInsetsGeometry? padding + EdgeInsetsGeometry? padding, + bool isArrangeLTR = true, } ) { - return Padding( - padding: padding ?? EdgeInsets.zero, - child: Row(children: [ - Obx(() { - final expandMode = categories.getExpandMode(baseMailboxController.mailboxCategoriesExpandMode.value); - return TMailButtonWidget.fromIcon( - icon: expandMode == ExpandMode.EXPAND - ? imagePaths.icArrowBottom - : DirectionUtils.isDirectionRTLByLanguage(context) - ? imagePaths.icArrowLeft - : imagePaths.icArrowRight, - iconColor: Colors.black, - iconSize: 20, - backgroundColor: Colors.transparent, - padding: const EdgeInsets.all(5), - tooltipMessage: expandMode == ExpandMode.EXPAND - ? AppLocalizations.of(context).collapse - : AppLocalizations.of(context).expand, - onTapActionCallback: () => toggleMailboxCategories(categories) - ); - }), + final item = Row(children: [ + if (!isArrangeLTR) + Flexible( + child: Text( + categories.getTitle(context), + maxLines: 1, + overflow: CommonTextStyle.defaultTextOverFlow, + softWrap: CommonTextStyle.defaultSoftWrap, + style: ThemeUtils.textStyleBodyBody3(color: Colors.black), + ), + ), + Obx(() { + final expandMode = categories.getExpandMode(baseMailboxController.mailboxCategoriesExpandMode.value); + return TMailButtonWidget.fromIcon( + icon: expandMode == ExpandMode.EXPAND + ? imagePaths.icArrowBottom + : DirectionUtils.isDirectionRTLByLanguage(context) + ? imagePaths.icArrowLeft + : imagePaths.icArrowRight, + iconColor: Colors.black, + iconSize: 20, + backgroundColor: Colors.transparent, + padding: const EdgeInsets.all(5), + tooltipMessage: expandMode == ExpandMode.EXPAND + ? AppLocalizations.of(context).collapse + : AppLocalizations.of(context).expand, + onTapActionCallback: () => toggleMailboxCategories(categories) + ); + }), + if (isArrangeLTR) Expanded(child: Text( categories.getTitle(context), maxLines: 1, @@ -371,7 +381,12 @@ mixin MailboxWidgetMixin { softWrap: CommonTextStyle.defaultSoftWrap, style: ThemeUtils.textStyleBodyBody3(color: Colors.black) )), - ]) - ); + ]); + + if (padding != null) { + return Padding(padding: padding, child: item); + } else { + return item; + } } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/styles/count_of_emails_styles.dart b/lib/features/mailbox/presentation/styles/count_of_emails_styles.dart deleted file mode 100644 index 494f62acf..000000000 --- a/lib/features/mailbox/presentation/styles/count_of_emails_styles.dart +++ /dev/null @@ -1,8 +0,0 @@ - -import 'package:flutter/material.dart'; - -class CountOfEmailsStyles { - static const Color textColor = Colors.black; - static const double textSize = 13; - static const FontWeight textFontWeight = FontWeight.w400; -} \ No newline at end of file diff --git a/lib/features/mailbox/presentation/styles/leading_mailbox_item_widget_styles.dart b/lib/features/mailbox/presentation/styles/leading_mailbox_item_widget_styles.dart index 186877a06..fa72b9fee 100644 --- a/lib/features/mailbox/presentation/styles/leading_mailbox_item_widget_styles.dart +++ b/lib/features/mailbox/presentation/styles/leading_mailbox_item_widget_styles.dart @@ -1,17 +1,8 @@ -import 'package:core/presentation/extensions/color_extension.dart'; import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; class LeadingMailboxItemWidgetStyles { - static const double expandIconSize = 15; - static const double expandIconSplashRadius = 12; - - static const Color displayColor = Colors.black; - static const Color normalColor = AppColor.colorIconUnSubscribedMailbox; - - static const EdgeInsetsGeometry expandIconPadding = EdgeInsetsDirectional.only(start: 8); - static Matrix4 mailboxIconTransform(BuildContext context) => Matrix4.translationValues( DirectionUtils.isDirectionRTLByLanguage(context) ? 0.0 : -4.0, 0.0, diff --git a/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart b/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart index ca551b0bf..280bbf20f 100644 --- a/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart +++ b/lib/features/mailbox/presentation/styles/mailbox_item_widget_styles.dart @@ -3,5 +3,6 @@ class MailboxItemWidgetStyles { static const double selectionIconSize = 20; static const double space = 4; static const double padding = 8; + static const double itemPadding = 10; static const double borderRadius = 8; } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/widgets/count_of_emails_widget.dart b/lib/features/mailbox/presentation/widgets/count_of_emails_widget.dart index edf0f1dcb..b15004197 100644 --- a/lib/features/mailbox/presentation/widgets/count_of_emails_widget.dart +++ b/lib/features/mailbox/presentation/widgets/count_of_emails_widget.dart @@ -1,7 +1,6 @@ import 'package:core/presentation/utils/style_utils.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:tmail_ui_user/features/mailbox/presentation/styles/count_of_emails_styles.dart'; +import 'package:flutter/material.dart'; class CountOfEmailsWidget extends StatelessWidget { @@ -16,10 +15,8 @@ class CountOfEmailsWidget extends StatelessWidget { maxLines: 1, overflow: CommonTextStyle.defaultTextOverFlow, softWrap: CommonTextStyle.defaultSoftWrap, - style: const TextStyle( - fontSize: CountOfEmailsStyles.textSize, - color: CountOfEmailsStyles.textColor, - fontWeight: CountOfEmailsStyles.textFontWeight + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: Colors.black, ), ); } diff --git a/lib/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart b/lib/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart index 998224b01..79f05ddf7 100644 --- a/lib/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart +++ b/lib/features/mailbox/presentation/widgets/label_mailbox_item_widget.dart @@ -1,3 +1,4 @@ +import 'package:core/presentation/resources/image_paths.dart'; import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/text/text_overflow_builder.dart'; import 'package:flutter/material.dart'; @@ -7,80 +8,128 @@ import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.d import 'package:tmail_ui_user/features/mailbox/presentation/styles/label_mailbox_item_widget_styles.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/empty_mailbox_popup_dialog_widget.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_expand_button.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/trailing_mailbox_item_widget.dart'; class LabelMailboxItemWidget extends StatelessWidget { final ResponsiveUtils responsiveUtils; + final ImagePaths imagePaths; final MailboxNode mailboxNode; final bool showTrailing; final bool isItemHovered; final bool isSelected; final OnClickOpenMenuMailboxNodeAction? onMenuActionClick; final OnEmptyMailboxActionCallback? onEmptyMailboxActionCallback; + final OnClickExpandMailboxNodeAction? onClickExpandMailboxNodeAction; const LabelMailboxItemWidget({ super.key, required this.mailboxNode, required this.responsiveUtils, + required this.imagePaths, this.showTrailing = true, this.isItemHovered = false, this.isSelected = false, this.onMenuActionClick, this.onEmptyMailboxActionCallback, + this.onClickExpandMailboxNodeAction, }); @override Widget build(BuildContext context) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, + final displayNameWidget = TextOverflowBuilder( + mailboxNode.item.getDisplayName(context), + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + fontSize: LabelMailboxItemWidgetStyles.labelFolderTextSize, + color: LabelMailboxItemWidgetStyles.labelFolderTextColor, + fontWeight: _mailboxNameTextFontWeight, + ), + ); + + final nameWithExpandIcon = Row( children: [ - if (showTrailing) - Row( - children: [ - Expanded( - child: TextOverflowBuilder( - mailboxNode.item.getDisplayName(context), - style: Theme.of(context).textTheme.bodyMedium?.copyWith( - fontSize: LabelMailboxItemWidgetStyles.labelFolderTextSize, - color: LabelMailboxItemWidgetStyles.labelFolderTextColor, - fontWeight: _mailboxNameTextFontWeight - ), - ), - ), - if (responsiveUtils.isWebDesktop(context) && mailboxNode.item.allowedHasEmptyAction) - EmptyMailboxPopupDialogWidget( - mailboxNode: mailboxNode, - onEmptyMailboxActionCallback: (mailboxNode) => onEmptyMailboxActionCallback?.call(mailboxNode), - ), - TrailingMailboxItemWidget( - mailboxNode: mailboxNode, - isItemHovered: isItemHovered, - onMenuActionClick: onMenuActionClick - ) - ], - ) + if (mailboxNode.hasChildren()) + Flexible(child: displayNameWidget) else - TextOverflowBuilder( - mailboxNode.item.getDisplayName(context), - style: Theme.of(context).textTheme.bodyMedium?.copyWith( - fontSize: LabelMailboxItemWidgetStyles.labelFolderTextSize, - color: LabelMailboxItemWidgetStyles.labelFolderTextColor, - fontWeight: _mailboxNameTextFontWeight + Flexible( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 3), + child: displayNameWidget, ), ), - if (mailboxNode.item.isTeamMailboxes) + if (mailboxNode.hasChildren()) + MailboxExpandButton( + mailboxNode: mailboxNode, + imagePaths: imagePaths, + onExpandFolderActionClick: onClickExpandMailboxNodeAction, + ), + ], + ); + + if (!showTrailing) { + if (mailboxNode.item.isTeamMailboxes) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + nameWithExpandIcon, + TextOverflowBuilder( + mailboxNode.item.emailTeamMailBoxes, + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + fontSize: LabelMailboxItemWidgetStyles.labelFolderTextSize, + color: LabelMailboxItemWidgetStyles.teamMailboxEmailTextColor, + fontWeight: LabelMailboxItemWidgetStyles.labelFolderTextFontWeight, + ), + ), + ], + ); + } else { + return nameWithExpandIcon; + } + } + + final trailingWidget = TrailingMailboxItemWidget( + mailboxNode: mailboxNode, + responsiveUtils: responsiveUtils, + imagePaths: imagePaths, + isItemHovered: isItemHovered, + onMenuActionClick: onMenuActionClick, + ); + + final childWidget = Row( + children: [ + Expanded(child: nameWithExpandIcon), + if (responsiveUtils.isWebDesktop(context) && + mailboxNode.item.allowedHasEmptyAction) + EmptyMailboxPopupDialogWidget( + mailboxNode: mailboxNode, + onEmptyMailboxActionCallback: (mailboxNode) => + onEmptyMailboxActionCallback?.call(mailboxNode), + ), + trailingWidget, + ], + ); + + if (mailboxNode.item.isTeamMailboxes) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + childWidget, TextOverflowBuilder( mailboxNode.item.emailTeamMailBoxes, style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: LabelMailboxItemWidgetStyles.labelFolderTextSize, color: LabelMailboxItemWidgetStyles.teamMailboxEmailTextColor, - fontWeight: LabelMailboxItemWidgetStyles.labelFolderTextFontWeight + fontWeight: LabelMailboxItemWidgetStyles.labelFolderTextFontWeight, ), - ) - ], - ); + ), + ], + ); + } else { + return childWidget; + } } FontWeight get _mailboxNameTextFontWeight { diff --git a/lib/features/mailbox/presentation/widgets/leading_mailbox_item_widget.dart b/lib/features/mailbox/presentation/widgets/leading_mailbox_item_widget.dart index 7f7dbd33b..f7b19ac69 100644 --- a/lib/features/mailbox/presentation/widgets/leading_mailbox_item_widget.dart +++ b/lib/features/mailbox/presentation/widgets/leading_mailbox_item_widget.dart @@ -1,16 +1,11 @@ import 'package:core/presentation/resources/image_paths.dart'; -import 'package:core/presentation/views/button/tmail_button_widget.dart'; -import 'package:core/utils/direction_utils.dart'; import 'package:flutter/material.dart'; -import 'package:model/extensions/presentation_mailbox_extension.dart'; -import 'package:model/mailbox/expand_mode.dart'; import 'package:model/mailbox/select_mode.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/styles/leading_mailbox_item_widget_styles.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/widgets/mailbox_icon_widget.dart'; -import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; class LeadingMailboxItemWidget extends StatelessWidget { @@ -18,63 +13,25 @@ class LeadingMailboxItemWidget extends StatelessWidget { final MailboxNode mailboxNode; final SelectMode selectionMode; final OnSelectMailboxNodeAction? onSelectMailboxFolderClick; - final OnClickExpandMailboxNodeAction? onExpandFolderActionClick; const LeadingMailboxItemWidget({ super.key, required this.imagePaths, required this.mailboxNode, this.selectionMode = SelectMode.INACTIVE, - this.onExpandFolderActionClick, this.onSelectMailboxFolderClick, }); @override Widget build(BuildContext context) { - return Row(children: [ - Visibility.maintain( - visible: mailboxNode.hasChildren(), - child: TMailButtonWidget.fromIcon( - icon: _getExpandIcon(context, imagePaths), - iconColor: _expandIconColor, - iconSize: 20, - padding: const EdgeInsets.all(5), - backgroundColor: Colors.transparent, - tooltipMessage: _getExpandTooltipMessage(context), - onTapActionCallback: () => onExpandFolderActionClick?.call(mailboxNode) - ), - ), - Transform( - transform: LeadingMailboxItemWidgetStyles.mailboxIconTransform(context), - child: MailboxIconWidget( - imagePaths: imagePaths, - mailboxNode: mailboxNode, - selectionMode: selectionMode, - onSelectMailboxFolderClick: onSelectMailboxFolderClick - ) - ), - ]); - } - - String _getExpandIcon(BuildContext context, ImagePaths imagePaths) { - if (mailboxNode.expandMode == ExpandMode.EXPAND) { - return imagePaths.icArrowBottom; - } else { - return DirectionUtils.isDirectionRTLByLanguage(context) - ? imagePaths.icArrowLeft - : imagePaths.icArrowRight; - } - } - - Color get _expandIconColor { - return mailboxNode.item.allowedToDisplay - ? LeadingMailboxItemWidgetStyles.displayColor - : LeadingMailboxItemWidgetStyles.normalColor; - } - - String _getExpandTooltipMessage(BuildContext context) { - return mailboxNode.expandMode == ExpandMode.EXPAND - ? AppLocalizations.of(context).collapse - : AppLocalizations.of(context).expand; + return Transform( + transform: LeadingMailboxItemWidgetStyles.mailboxIconTransform(context), + child: MailboxIconWidget( + imagePaths: imagePaths, + mailboxNode: mailboxNode, + selectionMode: selectionMode, + onSelectMailboxFolderClick: onSelectMailboxFolderClick + ) + ); } } \ No newline at end of file diff --git a/lib/features/mailbox/presentation/widgets/mailbox_expand_button.dart b/lib/features/mailbox/presentation/widgets/mailbox_expand_button.dart new file mode 100644 index 000000000..860718157 --- /dev/null +++ b/lib/features/mailbox/presentation/widgets/mailbox_expand_button.dart @@ -0,0 +1,58 @@ +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/resources/image_paths.dart'; +import 'package:core/presentation/views/button/tmail_button_widget.dart'; +import 'package:core/utils/direction_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:model/extensions/presentation_mailbox_extension.dart'; +import 'package:model/mailbox/expand_mode.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; +import 'package:tmail_ui_user/features/mailbox/presentation/utils/mailbox_method_action_define.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +class MailboxExpandButton extends StatelessWidget { + final MailboxNode mailboxNode; + final ImagePaths imagePaths; + final OnClickExpandMailboxNodeAction? onExpandFolderActionClick; + + const MailboxExpandButton({ + super.key, + required this.mailboxNode, + required this.imagePaths, + required this.onExpandFolderActionClick, + }); + + @override + Widget build(BuildContext context) { + return TMailButtonWidget.fromIcon( + icon: _getExpandIcon(context, imagePaths), + iconColor: _expandIconColor, + iconSize: 20, + padding: const EdgeInsets.all(5), + backgroundColor: Colors.transparent, + tooltipMessage: _getExpandTooltipMessage(context), + onTapActionCallback: () => onExpandFolderActionClick?.call(mailboxNode), + ); + } + + String _getExpandIcon(BuildContext context, ImagePaths imagePaths) { + if (mailboxNode.expandMode == ExpandMode.EXPAND) { + return imagePaths.icArrowBottom; + } else { + return DirectionUtils.isDirectionRTLByLanguage(context) + ? imagePaths.icArrowLeft + : imagePaths.icArrowRight; + } + } + + Color get _expandIconColor { + return mailboxNode.item.allowedToDisplay + ? Colors.black + : AppColor.steelGray200; + } + + String _getExpandTooltipMessage(BuildContext context) { + return mailboxNode.expandMode == ExpandMode.EXPAND + ? AppLocalizations.of(context).collapse + : AppLocalizations.of(context).expand; + } +} diff --git a/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart b/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart index bcf9d7bcd..ce1c21a03 100644 --- a/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart +++ b/lib/features/mailbox/presentation/widgets/mailbox_item_widget.dart @@ -77,7 +77,7 @@ class _MailboxItemWidgetState extends State { color: backgroundColorItem ), padding: const EdgeInsetsDirectional.symmetric( - horizontal: MailboxItemWidgetStyles.padding, + horizontal: MailboxItemWidgetStyles.itemPadding, vertical: MailboxItemWidgetStyles.space, ), child: Row( @@ -91,17 +91,18 @@ class _MailboxItemWidgetState extends State { mailboxNode: widget.mailboxNode, selectionMode: widget.selectionMode, onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - onExpandFolderActionClick: widget.onExpandFolderActionClick, ), const SizedBox(width: MailboxItemWidgetStyles.space), Expanded( child: LabelMailboxItemWidget( responsiveUtils: _responsiveUtils, mailboxNode: widget.mailboxNode, + imagePaths: _imagePaths, isItemHovered: _isItemHovered, isSelected: _isSelected, onMenuActionClick: widget.onMenuActionClick, - onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback + onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback, + onClickExpandMailboxNodeAction: widget.onExpandFolderActionClick, ) ), ] @@ -123,7 +124,7 @@ class _MailboxItemWidgetState extends State { color: backgroundColorItem ), padding: const EdgeInsetsDirectional.symmetric( - horizontal: MailboxItemWidgetStyles.padding, + horizontal: MailboxItemWidgetStyles.itemPadding, vertical: MailboxItemWidgetStyles.space, ), child: Row( @@ -133,17 +134,18 @@ class _MailboxItemWidgetState extends State { mailboxNode: widget.mailboxNode, selectionMode: widget.selectionMode, onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - onExpandFolderActionClick: widget.onExpandFolderActionClick, ), const SizedBox(width: MailboxItemWidgetStyles.space), Expanded( child: LabelMailboxItemWidget( responsiveUtils: _responsiveUtils, mailboxNode: widget.mailboxNode, + imagePaths: _imagePaths, isItemHovered: _isItemHovered, isSelected: _isSelected, onMenuActionClick: widget.onMenuActionClick, - onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback + onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback, + onClickExpandMailboxNodeAction: widget.onExpandFolderActionClick, ) ), ] @@ -165,42 +167,37 @@ class _MailboxItemWidgetState extends State { color: backgroundColorItem ), padding: const EdgeInsetsDirectional.symmetric( - horizontal: MailboxItemWidgetStyles.padding, + horizontal: MailboxItemWidgetStyles.itemPadding, vertical: MailboxItemWidgetStyles.space, ), - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, + child: Row( children: [ - Row( - children: [ - LeadingMailboxItemWidget( - imagePaths: _imagePaths, - mailboxNode: widget.mailboxNode, - selectionMode: widget.selectionMode, - onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - onExpandFolderActionClick: widget.onExpandFolderActionClick, - ), - const SizedBox(width: MailboxItemWidgetStyles.padding), - Expanded( - child: LabelMailboxItemWidget( - responsiveUtils: _responsiveUtils, - mailboxNode: widget.mailboxNode, - isItemHovered: _isItemHovered, - isSelected: _isSelected, - onMenuActionClick: widget.onMenuActionClick, - onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback - ) - ), - if (_isSelectActionNoValid) - SvgPicture.asset( - _imagePaths.icSelectedSB, - width: MailboxItemWidgetStyles.selectionIconSize, - height: MailboxItemWidgetStyles.selectionIconSize, - fit: BoxFit.fill - ) - ] + LeadingMailboxItemWidget( + imagePaths: _imagePaths, + mailboxNode: widget.mailboxNode, + selectionMode: widget.selectionMode, + onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, ), + const SizedBox(width: MailboxItemWidgetStyles.padding), + Expanded( + child: LabelMailboxItemWidget( + responsiveUtils: _responsiveUtils, + mailboxNode: widget.mailboxNode, + imagePaths: _imagePaths, + isItemHovered: _isItemHovered, + isSelected: _isSelected, + onMenuActionClick: widget.onMenuActionClick, + onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback, + onClickExpandMailboxNodeAction: widget.onExpandFolderActionClick, + ) + ), + if (_isSelectActionNoValid) + SvgPicture.asset( + _imagePaths.icSelectedSB, + width: MailboxItemWidgetStyles.selectionIconSize, + height: MailboxItemWidgetStyles.selectionIconSize, + fit: BoxFit.fill + ) ] ), ), @@ -222,7 +219,7 @@ class _MailboxItemWidgetState extends State { hoverColor: AppColor.colorMailboxHovered, child: Container( padding: const EdgeInsetsDirectional.symmetric( - horizontal: MailboxItemWidgetStyles.padding, + horizontal: MailboxItemWidgetStyles.itemPadding, vertical: MailboxItemWidgetStyles.space, ), color: widget.mailboxNode.isSelected @@ -235,18 +232,19 @@ class _MailboxItemWidgetState extends State { mailboxNode: widget.mailboxNode, selectionMode: widget.selectionMode, onSelectMailboxFolderClick: widget.onSelectMailboxFolderClick, - onExpandFolderActionClick: widget.onExpandFolderActionClick, ), const SizedBox(width: MailboxItemWidgetStyles.padding), Expanded( child: LabelMailboxItemWidget( responsiveUtils: _responsiveUtils, mailboxNode: widget.mailboxNode, + imagePaths: _imagePaths, showTrailing: false, isSelected: _isSelected, isItemHovered: _isItemHovered, onMenuActionClick: widget.onMenuActionClick, - onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback + onEmptyMailboxActionCallback: widget.onEmptyMailboxActionCallback, + onClickExpandMailboxNodeAction: widget.onExpandFolderActionClick, ) ), if (_isSelectActionNoValid) @@ -256,7 +254,6 @@ class _MailboxItemWidgetState extends State { height: MailboxItemWidgetStyles.selectionIconSize, fit: BoxFit.fill ), - const SizedBox(width: MailboxItemWidgetStyles.padding), ] ) ), diff --git a/lib/features/mailbox/presentation/widgets/trailing_mailbox_item_widget.dart b/lib/features/mailbox/presentation/widgets/trailing_mailbox_item_widget.dart index 3c3498d67..d3088998e 100644 --- a/lib/features/mailbox/presentation/widgets/trailing_mailbox_item_widget.dart +++ b/lib/features/mailbox/presentation/widgets/trailing_mailbox_item_widget.dart @@ -4,7 +4,6 @@ import 'package:core/presentation/utils/responsive_utils.dart'; import 'package:core/presentation/views/button/tmail_button_widget.dart'; import 'package:core/utils/platform_info.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; import 'package:model/extensions/presentation_mailbox_extension.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_node.dart'; import 'package:tmail_ui_user/features/mailbox/presentation/styles/trailing_mailbox_item_widget_styles.dart'; @@ -14,15 +13,16 @@ import 'package:tmail_ui_user/features/mailbox/presentation/widgets/count_of_ema class TrailingMailboxItemWidget extends StatelessWidget { final MailboxNode mailboxNode; + final ImagePaths imagePaths; + final ResponsiveUtils responsiveUtils; final bool isItemHovered; final OnClickOpenMenuMailboxNodeAction? onMenuActionClick; - final _imagePaths = Get.find(); - final _responsiveUtils = Get.find(); - - TrailingMailboxItemWidget({ + const TrailingMailboxItemWidget({ super.key, required this.mailboxNode, + required this.imagePaths, + required this.responsiveUtils, this.isItemHovered = false, this.onMenuActionClick, }); @@ -32,16 +32,16 @@ class TrailingMailboxItemWidget extends StatelessWidget { if (PlatformInfo.isWeb) { if (isItemHovered) { return TMailButtonWidget.fromIcon( - margin: _responsiveUtils.isDesktop(context) && mailboxNode.item.allowedHasEmptyAction + margin: responsiveUtils.isDesktop(context) && mailboxNode.item.allowedHasEmptyAction ? EdgeInsets.zero : TrailingMailboxItemWidgetStyles.menuIconMargin, - icon: _imagePaths.icComposerMenu, + icon: imagePaths.icComposerMenu, iconSize: TrailingMailboxItemWidgetStyles.menuIconSize, padding: TrailingMailboxItemWidgetStyles.menuIconPadding, backgroundColor: TrailingMailboxItemWidgetStyles.menuIconBackgroundColor, onTapActionAtPositionCallback: (position) => onMenuActionClick?.call(position, mailboxNode), ); - } else if (_responsiveUtils.isDesktop(context) && mailboxNode.item.allowedHasEmptyAction) { + } else if (responsiveUtils.isDesktop(context) && mailboxNode.item.allowedHasEmptyAction) { return const SizedBox(); } else if (mailboxNode.item.allowedToDisplayCountOfUnreadEmails) { return Padding(