diff --git a/lib/features/email_recovery/presentation/styles/list_button_widget_styles.dart b/lib/features/email_recovery/presentation/styles/list_button_widget_styles.dart new file mode 100644 index 000000000..aba5bdc70 --- /dev/null +++ b/lib/features/email_recovery/presentation/styles/list_button_widget_styles.dart @@ -0,0 +1,4 @@ +class ListButtonWidgetStyles { + static const double space = 12.0; + static const double mobileSpace = 16.0; +} \ No newline at end of file diff --git a/lib/features/email_recovery/presentation/styles/text_action_button_widget_styles.dart b/lib/features/email_recovery/presentation/styles/text_action_button_widget_styles.dart new file mode 100644 index 000000000..a28f4c70f --- /dev/null +++ b/lib/features/email_recovery/presentation/styles/text_action_button_widget_styles.dart @@ -0,0 +1,5 @@ +class TextActionButtonWidgetStyles { + static const double radius = 10.0; + static const double height = 44.0; + static const double fontSize = 17.0; +} \ No newline at end of file diff --git a/lib/features/email_recovery/presentation/widgets/check_box_has_attachment_widget.dart b/lib/features/email_recovery/presentation/widgets/check_box_has_attachment_widget.dart new file mode 100644 index 000000000..f704dd7d8 --- /dev/null +++ b/lib/features/email_recovery/presentation/widgets/check_box_has_attachment_widget.dart @@ -0,0 +1,42 @@ +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/views/checkbox/labeled_checkbox.dart'; +import 'package:flutter/material.dart'; +import 'package:tmail_ui_user/features/base/isolate/background_isolate_binary_messenger/background_isolate_binary_messenger_mobile.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +typedef OnChangedHasAttachment = void Function(bool? value); + +class CheckBoxHasAttachmentWidget extends StatelessWidget { + final bool hasAttachmentValue; + final FocusNode? currentFocusNode; + final FocusNode? nextFocusNode; + final OnChangedHasAttachment? onChanged; + + const CheckBoxHasAttachmentWidget({ + super.key, + required this.hasAttachmentValue, + this.currentFocusNode, + this.nextFocusNode, + this.onChanged, + }); + + @override + Widget build(BuildContext context) { + return RawKeyboardListener( + focusNode: FocusNode(), + onKey: (event) { + if (event.logicalKey == LogicalKeyboardKey.tab) { + nextFocusNode?.requestFocus(); + } + }, + child: LabeledCheckbox( + label: AppLocalizations.of(context).hasAttachment, + focusNode: currentFocusNode, + contentPadding: EdgeInsets.zero, + value: hasAttachmentValue, + activeColor: AppColor.primaryColor, + onChanged: onChanged, + ) + ); + } +} \ No newline at end of file diff --git a/lib/features/email_recovery/presentation/widgets/list_button_widget.dart b/lib/features/email_recovery/presentation/widgets/list_button_widget.dart new file mode 100644 index 000000000..f41535183 --- /dev/null +++ b/lib/features/email_recovery/presentation/widgets/list_button_widget.dart @@ -0,0 +1,47 @@ +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:core/presentation/utils/responsive_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:tmail_ui_user/features/email_recovery/presentation/styles/list_button_widget_styles.dart'; +import 'package:tmail_ui_user/features/email_recovery/presentation/widgets/text_action_button_widget.dart'; +import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; + +class ListButtonWidget extends StatelessWidget { + final VoidCallback onCancel; + final VoidCallback onRestore; + final ResponsiveUtils responsiveUtils; + + const ListButtonWidget({ + super.key, + required this.onCancel, + required this.onRestore, + required this.responsiveUtils, + }); + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Expanded( + child: TextActionButtonWidget( + colorButton: AppColor.colorBgSearchBar, + colorText: AppColor.primaryColor, + text: AppLocalizations.of(context).cancel, + onAction: onCancel + ), + ), + SizedBox(width: responsiveUtils.isMobile(context) + ? ListButtonWidgetStyles.mobileSpace + : ListButtonWidgetStyles.space + ), + Expanded( + child: TextActionButtonWidget( + colorButton: AppColor.primaryColor, + colorText: Colors.white, + text: AppLocalizations.of(context).restore, + onAction: onRestore + ) + ) + ], + ); + } +} \ No newline at end of file diff --git a/lib/features/email_recovery/presentation/widgets/text_action_button_widget.dart b/lib/features/email_recovery/presentation/widgets/text_action_button_widget.dart new file mode 100644 index 000000000..3934ecf80 --- /dev/null +++ b/lib/features/email_recovery/presentation/widgets/text_action_button_widget.dart @@ -0,0 +1,37 @@ +import 'package:core/presentation/views/button/icon_button_web.dart'; +import 'package:flutter/material.dart'; +import 'package:tmail_ui_user/features/email_recovery/presentation/styles/text_action_button_widget_styles.dart'; + +class TextActionButtonWidget extends StatelessWidget { + final Color colorButton; + final Color colorText; + final String text; + final VoidCallback onAction; + final double? minWidth; + + const TextActionButtonWidget({ + super.key, + required this.colorButton, + required this.colorText, + required this.text, + required this.onAction, + this.minWidth, + }); + + @override + Widget build(BuildContext context) { + return buildButtonWrapText( + text, + radius: TextActionButtonWidgetStyles.radius, + height: TextActionButtonWidgetStyles.height, + minWidth: minWidth, + textStyle: TextStyle( + fontSize: TextActionButtonWidgetStyles.fontSize, + color: colorText, + fontWeight: FontWeight.w500 + ), + bgColor: colorButton, + onTap: onAction + ); + } +} \ No newline at end of file