TF-3002 [WEB] Add To/Folder search filters
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class BannerDeleteAllSpamEmailsStyles {
|
||||
@@ -7,9 +9,6 @@ class BannerDeleteAllSpamEmailsStyles {
|
||||
static const double buttonBorderRadius = 20;
|
||||
static const double horizontalPadding = 16;
|
||||
static const double verticalPadding = 10;
|
||||
static const double webEndMargin = 16;
|
||||
static const double webTopMargin = 8;
|
||||
static const double mobileMargin = 16;
|
||||
static const double labelTextSize = 13;
|
||||
static const double buttonTextSize = 17;
|
||||
static const double iconSize = 20;
|
||||
@@ -18,4 +17,25 @@ class BannerDeleteAllSpamEmailsStyles {
|
||||
static const Color borderStrokeColor = AppColor.colorBorderBodyThread;
|
||||
static const Color labelTextColor = AppColor.colorSubtitle;
|
||||
static const Color buttonTextColor = AppColor.toastErrorBackgroundColor;
|
||||
|
||||
static EdgeInsetsGeometry getBannerMargin(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils
|
||||
) {
|
||||
if (PlatformInfo.isWeb) {
|
||||
if (responsiveUtils.isDesktop(context)) {
|
||||
return const EdgeInsetsDirectional.only(end: 16, bottom: 8);
|
||||
} else if (responsiveUtils.isTablet(context)) {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 24, end: 24);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 12, end: 12);
|
||||
}
|
||||
} else {
|
||||
if (responsiveUtils.isPortraitTablet(context)) {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 32, end: 32);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 16, end: 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class BannerEmptyTrashStyles {
|
||||
@@ -7,9 +9,6 @@ class BannerEmptyTrashStyles {
|
||||
static const double buttonBorderRadius = 20;
|
||||
static const double horizontalPadding = 16;
|
||||
static const double verticalPadding = 10;
|
||||
static const double webEndMargin = 16;
|
||||
static const double webTopMargin = 8;
|
||||
static const double mobileMargin = 16;
|
||||
static const double labelTextSize = 13;
|
||||
static const double buttonTextSize = 17;
|
||||
static const double iconSize = 20;
|
||||
@@ -18,4 +17,25 @@ class BannerEmptyTrashStyles {
|
||||
static const Color borderStrokeColor = AppColor.colorBorderBodyThread;
|
||||
static const Color labelTextColor = AppColor.colorSubtitle;
|
||||
static const Color buttonTextColor = AppColor.toastErrorBackgroundColor;
|
||||
|
||||
static EdgeInsetsGeometry getBannerMargin(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils
|
||||
) {
|
||||
if (PlatformInfo.isWeb) {
|
||||
if (responsiveUtils.isDesktop(context)) {
|
||||
return const EdgeInsetsDirectional.only(end: 16, bottom: 8);
|
||||
} else if (responsiveUtils.isTablet(context)) {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 24, end: 24);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 12, end: 12);
|
||||
}
|
||||
} else {
|
||||
if (responsiveUtils.isPortraitTablet(context)) {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 32, end: 32);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(bottom: 8, start: 16, end: 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+7
-4
@@ -3,11 +3,14 @@ import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class SpamReportBannerWebStyles {
|
||||
static const double horizontalMargin = 16;
|
||||
static const double verticalMargin = 16;
|
||||
static const double verticalPadding = 8;
|
||||
static const double horizontalPadding = 16;
|
||||
static const double borderRadius = 12;
|
||||
static Color backgroundColor = AppColor.colorSpamReportBannerBackground.withOpacity(0.12);
|
||||
static const Color strokeBorderColor = AppColor.colorSpamReportBannerStrokeBorder;
|
||||
|
||||
static const EdgeInsetsGeometry bannerPadding = EdgeInsetsDirectional.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: 8);
|
||||
static const EdgeInsetsGeometry bannerMargin = EdgeInsetsDirectional.only(
|
||||
end: 16,
|
||||
bottom: 8);
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:core/utils/platform_info.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ThreadViewStyle {
|
||||
static EdgeInsetsGeometry getBannerMargin(
|
||||
BuildContext context,
|
||||
ResponsiveUtils responsiveUtils
|
||||
) {
|
||||
if (PlatformInfo.isWeb) {
|
||||
if (responsiveUtils.isMobile(context) || responsiveUtils.isTabletLarge(context)) {
|
||||
return const EdgeInsetsDirectional.only(start: 12, end: 12, bottom: 8);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(start: 24, end: 24, bottom: 8);
|
||||
}
|
||||
} else {
|
||||
if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeTablet(context)) {
|
||||
return const EdgeInsetsDirectional.only(start: 16, end: 16, bottom: 8);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(start: 32, end: 32, bottom: 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,10 +22,9 @@ import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.d
|
||||
import 'package:tmail_ui_user/features/thread/domain/state/search_email_state.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/delete_action_type.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/model/loading_more_status.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_delete_all_spam_emails_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_empty_trash_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/item_email_tile_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/scroll_to_top_button_widget_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/thread_view_style.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/thread_controller.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/app_bar/app_bar_thread_widget.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/widgets/banner_delete_all_spam_emails_widget.dart';
|
||||
@@ -112,22 +111,26 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
SearchBarView(
|
||||
key: const Key('email_search_bar_view'),
|
||||
imagePaths: controller.imagePaths,
|
||||
margin: _getBannerMargin(context, controller.responsiveUtils),
|
||||
margin: ThreadViewStyle.getBannerMargin(
|
||||
context,
|
||||
controller.responsiveUtils),
|
||||
hintTextSearch: AppLocalizations.of(context).search_emails,
|
||||
onOpenSearchViewAction: controller.goToSearchView
|
||||
),
|
||||
SpamReportBannerWidget(
|
||||
spamReportController: controller.mailboxDashBoardController.spamReportController,
|
||||
margin: _getBannerMargin(context, controller.responsiveUtils),
|
||||
),
|
||||
QuotasBannerWidget(
|
||||
margin: _getBannerMargin(context, controller.responsiveUtils),
|
||||
margin: ThreadViewStyle.getBannerMargin(
|
||||
context,
|
||||
controller.responsiveUtils),
|
||||
),
|
||||
QuotasBannerWidget(),
|
||||
Obx(() {
|
||||
final vacation = controller.mailboxDashBoardController.vacationResponse.value;
|
||||
if (vacation?.vacationResponderIsValid == true) {
|
||||
return VacationNotificationMessageWidget(
|
||||
margin: _getBannerMargin(context, controller.responsiveUtils),
|
||||
margin: ThreadViewStyle.getBannerMargin(
|
||||
context,
|
||||
controller.responsiveUtils),
|
||||
vacationResponse: vacation!,
|
||||
actionGotoVacationSetting: controller.mailboxDashBoardController.goToVacationSetting,
|
||||
actionEndNow: controller.mailboxDashBoardController.disableVacationResponder
|
||||
@@ -145,13 +148,10 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
Obx(() {
|
||||
final presentationMailbox = controller.mailboxDashBoardController.selectedMailbox.value;
|
||||
if (controller.mailboxDashBoardController.isEmptyTrashBannerEnabledOnMobile(context, presentationMailbox)) {
|
||||
return Padding(
|
||||
padding: const EdgeInsetsDirectional.symmetric(
|
||||
horizontal: BannerEmptyTrashStyles.mobileMargin
|
||||
),
|
||||
child: BannerEmptyTrashWidget(
|
||||
onTapAction: () => controller.deleteSelectionEmailsPermanently(context, DeleteActionType.all)
|
||||
),
|
||||
return BannerEmptyTrashWidget(
|
||||
onTapAction: () => controller.deleteSelectionEmailsPermanently(
|
||||
context,
|
||||
DeleteActionType.all)
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
@@ -160,13 +160,8 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
Obx(() {
|
||||
final presentationMailbox = controller.mailboxDashBoardController.selectedMailbox.value;
|
||||
if (controller.mailboxDashBoardController.isEmptySpamBannerEnabledOnMobile(context, presentationMailbox)) {
|
||||
return Padding(
|
||||
padding: const EdgeInsetsDirectional.symmetric(
|
||||
horizontal: BannerDeleteAllSpamEmailsStyles.mobileMargin
|
||||
),
|
||||
child: BannerDeleteAllSpamEmailsWidget(
|
||||
onTapAction: () => controller.mailboxDashBoardController.openDialogEmptySpamFolder(context)
|
||||
),
|
||||
return BannerDeleteAllSpamEmailsWidget(
|
||||
onTapAction: () => controller.mailboxDashBoardController.openDialogEmptySpamFolder(context)
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
@@ -222,22 +217,6 @@ class ThreadView extends GetWidget<ThreadController>
|
||||
);
|
||||
}
|
||||
|
||||
EdgeInsetsGeometry _getBannerMargin(BuildContext context, ResponsiveUtils responsiveUtils) {
|
||||
if (PlatformInfo.isWeb) {
|
||||
if (responsiveUtils.isMobile(context) || responsiveUtils.isTabletLarge(context)) {
|
||||
return const EdgeInsetsDirectional.only(start: 12, end: 12, bottom: 8);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(start: 24, end: 24, bottom: 8);
|
||||
}
|
||||
} else {
|
||||
if (responsiveUtils.isPortraitMobile(context) || responsiveUtils.isLandscapeTablet(context)) {
|
||||
return const EdgeInsetsDirectional.only(start: 16, end: 16, bottom: 8);
|
||||
} else {
|
||||
return const EdgeInsetsDirectional.only(start: 32, end: 32, bottom: 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool _supportVerticalDivider(BuildContext context) {
|
||||
if (PlatformInfo.isWeb) {
|
||||
return controller.responsiveUtils.isTabletLarge(context);
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_delete_all_spam_emails_styles.dart';
|
||||
import 'package:tmail_ui_user/features/thread/presentation/styles/banner_empty_trash_styles.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
|
||||
class BannerDeleteAllSpamEmailsWidget extends StatelessWidget {
|
||||
@@ -15,6 +17,8 @@ class BannerDeleteAllSpamEmailsWidget extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final imagePaths = Get.find<ImagePaths>();
|
||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
return Container(
|
||||
decoration: const ShapeDecoration(
|
||||
color: BannerDeleteAllSpamEmailsStyles.backgroundColor,
|
||||
@@ -26,6 +30,7 @@ class BannerDeleteAllSpamEmailsWidget extends StatelessWidget {
|
||||
borderRadius: BorderRadius.all(Radius.circular(BannerDeleteAllSpamEmailsStyles.borderRadius)),
|
||||
),
|
||||
),
|
||||
margin: BannerEmptyTrashStyles.getBannerMargin(context, responsiveUtils),
|
||||
child: Material(
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/utils/responsive_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
@@ -15,6 +16,8 @@ class BannerEmptyTrashWidget extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final imagePaths = Get.find<ImagePaths>();
|
||||
final responsiveUtils = Get.find<ResponsiveUtils>();
|
||||
|
||||
return Container(
|
||||
decoration: const ShapeDecoration(
|
||||
color: BannerEmptyTrashStyles.backgroundColor,
|
||||
@@ -26,6 +29,7 @@ class BannerEmptyTrashWidget extends StatelessWidget {
|
||||
borderRadius: BorderRadius.all(Radius.circular(BannerEmptyTrashStyles.borderRadius)),
|
||||
),
|
||||
),
|
||||
margin: BannerEmptyTrashStyles.getBannerMargin(context, responsiveUtils),
|
||||
child: Material(
|
||||
color: Colors.transparent,
|
||||
child: InkWell(
|
||||
|
||||
+3
-11
@@ -21,20 +21,12 @@ class SpamReportBannerWebWidget extends StatelessWidget {
|
||||
return Obx(() {
|
||||
if (spamReportController.spamReportState.value == SpamReportState.disabled
|
||||
|| spamReportController.presentationSpamMailbox.value == null) {
|
||||
return const SizedBox(
|
||||
height: 8,
|
||||
);
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return Container(
|
||||
margin: const EdgeInsetsDirectional.only(
|
||||
end: SpamReportBannerWebStyles.horizontalMargin,
|
||||
top: SpamReportBannerWebStyles.verticalMargin,
|
||||
),
|
||||
margin: SpamReportBannerWebStyles.bannerMargin,
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsetsDirectional.symmetric(
|
||||
horizontal: SpamReportBannerWebStyles.horizontalPadding,
|
||||
vertical: SpamReportBannerWebStyles.verticalPadding,
|
||||
),
|
||||
padding: SpamReportBannerWebStyles.bannerPadding,
|
||||
decoration: ShapeDecoration(
|
||||
color: SpamReportBannerWebStyles.backgroundColor,
|
||||
shape: const RoundedRectangleBorder(
|
||||
|
||||
Reference in New Issue
Block a user