Files
workavia-mail-front/lib/features/mailbox/presentation/widgets/mailbox_expand_button.dart
T

59 lines
2.1 KiB
Dart

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;
}
}