create icon open advanced_search_filter_overlay for web
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import 'package:core/core.dart';
|
import 'package:core/core.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_portal/flutter_portal.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
@@ -12,6 +13,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/base_mailb
|
|||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/composer_overlay_state.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||||
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/advanced_search_filter_overlay.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/icon_open_advanced_search_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/icon_open_advanced_search_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/email_quick_search_item_tile_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/recent_search_item_tile_widget.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/recent_search_item_tile_widget.dart';
|
||||||
@@ -49,7 +51,8 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
desktop: const SizedBox.shrink(),
|
desktop: const SizedBox.shrink(),
|
||||||
),
|
),
|
||||||
drawerEnableOpenDragGesture: responsiveUtils.isMobile(context) || responsiveUtils.isTablet(context),
|
drawerEnableOpenDragGesture: responsiveUtils.isMobile(context) || responsiveUtils.isTablet(context),
|
||||||
body: Stack(children: [
|
body: Portal(
|
||||||
|
child: Stack(children: [
|
||||||
ResponsiveWidget(
|
ResponsiveWidget(
|
||||||
responsiveUtils: responsiveUtils,
|
responsiveUtils: responsiveUtils,
|
||||||
desktop: Column(children: [
|
desktop: Column(children: [
|
||||||
@@ -109,6 +112,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
? const SizedBox.shrink()
|
? const SizedBox.shrink()
|
||||||
: Align(alignment: Alignment.bottomCenter, child: buildNetworkConnectionWidget(context))),
|
: Align(alignment: Alignment.bottomCenter, child: buildNetworkConnectionWidget(context))),
|
||||||
]),
|
]),
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -412,11 +416,24 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
borderRadius: BorderRadius.all(Radius.circular(10)),
|
borderRadius: BorderRadius.all(Radius.circular(10)),
|
||||||
color: AppColor.colorBgSearchBar),
|
color: AppColor.colorBgSearchBar),
|
||||||
height: 45,
|
height: 45,
|
||||||
|
child: PortalTarget(
|
||||||
|
visible: controller.searchController.isAdvancedSearchViewOpen.isTrue,
|
||||||
|
anchor: const Aligned(
|
||||||
|
follower: Alignment.topLeft,
|
||||||
|
target: Alignment.bottomLeft,
|
||||||
|
widthFactor: 1,
|
||||||
|
backup: Aligned(
|
||||||
|
follower: Alignment.bottomLeft,
|
||||||
|
target: Alignment.topLeft,
|
||||||
|
widthFactor: 1,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
portalFollower:const AdvancedSearchFilterOverlay(),
|
||||||
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
child: QuickSearchInputForm<PresentationEmail, RecentSearch>(
|
||||||
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
textFieldConfiguration: QuickSearchTextFieldConfiguration(
|
||||||
controller: searchController.searchInputController,
|
controller: controller.searchController.searchInputController,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
focusNode: searchController.searchFocus,
|
focusNode: controller.searchController.searchFocus,
|
||||||
textInputAction: TextInputAction.done,
|
textInputAction: TextInputAction.done,
|
||||||
onSubmitted: (keyword) {
|
onSubmitted: (keyword) {
|
||||||
if (keyword.trim().isNotEmpty) {
|
if (keyword.trim().isNotEmpty) {
|
||||||
@@ -426,7 +443,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
},
|
},
|
||||||
onChanged: (query) {
|
onChanged: (query) {
|
||||||
log('MailboxDashBoardView::_buildSearchForm(): onChanged: $query');
|
log('MailboxDashBoardView::_buildSearchForm(): onChanged: $query');
|
||||||
searchController.onChangeTextSearch(query);
|
controller.searchController.onChangeTextSearch(query);
|
||||||
},
|
},
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
@@ -448,9 +465,9 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
height: 16,
|
height: 16,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
final keyword = searchController.searchInputController.text;
|
final keyword = controller.searchController.searchInputController.text;
|
||||||
if (keyword.trim().isNotEmpty) {
|
if (keyword.trim().isNotEmpty) {
|
||||||
searchController.saveRecentSearch(RecentSearch.now(keyword));
|
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||||
}
|
}
|
||||||
controller.searchEmail(context, keyword);
|
controller.searchEmail(context, keyword);
|
||||||
}),
|
}),
|
||||||
@@ -461,7 +478,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
height: 16,
|
height: 16,
|
||||||
fit: BoxFit.fill),
|
fit: BoxFit.fill),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
searchController.clearTextSearch();
|
controller.searchController.clearTextSearch();
|
||||||
}),
|
}),
|
||||||
rightButton: IconOpenAdvancedSearchWidget(context)
|
rightButton: IconOpenAdvancedSearchWidget(context)
|
||||||
),
|
),
|
||||||
@@ -487,7 +504,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
},
|
},
|
||||||
buttonActionCallback: (filterAction) {
|
buttonActionCallback: (filterAction) {
|
||||||
if (filterAction is QuickSearchFilter) {
|
if (filterAction is QuickSearchFilter) {
|
||||||
controller.selectQuickSearchFilter(
|
controller.searchController.selectQuickSearchFilter(
|
||||||
quickSearchFilter: filterAction,
|
quickSearchFilter: filterAction,
|
||||||
fromSuggestionBox: true,
|
fromSuggestionBox: true,
|
||||||
);
|
);
|
||||||
@@ -511,7 +528,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (keyword.trim().isNotEmpty) {
|
if (keyword.trim().isNotEmpty) {
|
||||||
searchController.saveRecentSearch(RecentSearch.now(keyword));
|
controller.searchController.saveRecentSearch(RecentSearch.now(keyword));
|
||||||
}
|
}
|
||||||
controller.searchEmail(context, keyword);
|
controller.searchEmail(context, keyword);
|
||||||
},
|
},
|
||||||
@@ -543,17 +560,17 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
child: loadingWidget,
|
child: loadingWidget,
|
||||||
),
|
),
|
||||||
fetchRecentActionCallback: (pattern) async {
|
fetchRecentActionCallback: (pattern) async {
|
||||||
return searchController.getAllRecentSearchAction(pattern);
|
return controller.searchController.getAllRecentSearchAction(pattern);
|
||||||
},
|
},
|
||||||
itemRecentBuilder: (context, recent) {
|
itemRecentBuilder: (context, recent) {
|
||||||
return RecentSearchItemTileWidget(recent);
|
return RecentSearchItemTileWidget(recent);
|
||||||
},
|
},
|
||||||
onRecentSelected: (recent) {
|
onRecentSelected: (recent) {
|
||||||
searchController.searchInputController.text = recent.value;
|
controller.searchController.searchInputController.text = recent.value;
|
||||||
controller.searchEmail(context, recent.value);
|
controller.searchEmail(context, recent.value);
|
||||||
},
|
},
|
||||||
suggestionsCallback: (pattern) async {
|
suggestionsCallback: (pattern) async {
|
||||||
return controller.quickSearchEmails();
|
return controller.searchController.quickSearchEmails();
|
||||||
},
|
},
|
||||||
itemBuilder: (context, email) {
|
itemBuilder: (context, email) {
|
||||||
return EmailQuickSearchItemTileWidget(
|
return EmailQuickSearchItemTileWidget(
|
||||||
@@ -563,6 +580,7 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
|
|||||||
controller.dispatchAction(
|
controller.dispatchAction(
|
||||||
OpenEmailDetailedAction(context, presentationEmail));
|
OpenEmailDetailedAction(context, presentationEmail));
|
||||||
}),
|
}),
|
||||||
|
),
|
||||||
)),
|
)),
|
||||||
const SizedBox(width: 16),
|
const SizedBox(width: 16),
|
||||||
]
|
]
|
||||||
|
|||||||
+3
-2
@@ -14,7 +14,6 @@ class IconOpenAdvancedSearchWidget extends StatelessWidget {
|
|||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
final _imagePaths = Get.find<ImagePaths>();
|
final _imagePaths = Get.find<ImagePaths>();
|
||||||
final _responsiveUtils = Get.find<ResponsiveUtils>();
|
|
||||||
final controller = Get.find<SearchController>();
|
final controller = Get.find<SearchController>();
|
||||||
final BuildContext _parentContext;
|
final BuildContext _parentContext;
|
||||||
|
|
||||||
@@ -30,7 +29,9 @@ class IconOpenAdvancedSearchWidget extends StatelessWidget {
|
|||||||
: AppColor.colorFilterMessageDisabled,
|
: AppColor.colorFilterMessageDisabled,
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16),
|
height: 16),
|
||||||
onTap: _responsiveUtils.isMobile(context) ? () {controller.showAdvancedFilterView(_parentContext);} : null),
|
onTap: () {
|
||||||
|
controller.showAdvancedFilterView(_parentContext);
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user