TF-4013 Collapse all recipients fields when unfocus
(cherry picked from commit cd2c2db33a242d22a06265dca5fa4601753957ab)
This commit is contained in:
@@ -7,8 +7,8 @@ import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/extensions/email_address_extension.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/default_field/default_autocomplete_input_field_widget.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/default_field/default_draggable_tag_widget.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/model/draggable_email_address.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/widgets/draggable_recipient_tag_widget.dart';
|
||||
import 'package:tmail_ui_user/features/base/model/filter_filter.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/styles/autocomplete_tag_item_web_style.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/advanced_search/avatar_tag_item_widget.dart';
|
||||
@@ -71,11 +71,11 @@ class DefaultAutocompleteTagItemWidget extends StatelessWidget {
|
||||
emailAddress: currentEmailAddress,
|
||||
filterField: field,
|
||||
),
|
||||
feedback: DraggableRecipientTagWidget(
|
||||
feedback: DefaultDraggableTagWidget(
|
||||
emailAddress: currentEmailAddress,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 4),
|
||||
),
|
||||
childWhenDragging: DraggableRecipientTagWidget(
|
||||
childWhenDragging: DefaultDraggableTagWidget(
|
||||
emailAddress: currentEmailAddress,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 4),
|
||||
),
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/extensions/string_extension.dart';
|
||||
import 'package:core/presentation/resources/image_paths.dart';
|
||||
import 'package:core/presentation/views/avatar/gradient_circle_avatar_icon.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/extensions/email_address_extension.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/default_field/default_draggable_tag_widget_style.dart';
|
||||
|
||||
class DefaultDraggableTagWidget extends StatelessWidget {
|
||||
final EmailAddress emailAddress;
|
||||
final EdgeInsetsGeometry? padding;
|
||||
|
||||
final _imagePaths = Get.find<ImagePaths>();
|
||||
|
||||
DefaultDraggableTagWidget({
|
||||
super.key,
|
||||
required this.emailAddress,
|
||||
this.padding,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MouseRegion(
|
||||
cursor: SystemMouseCursors.grab,
|
||||
child: Container(
|
||||
decoration: const ShapeDecoration(
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.all(
|
||||
Radius.circular(DefaultDraggableTagWidgetStyle.radius),
|
||||
),
|
||||
),
|
||||
color: DefaultDraggableTagWidgetStyle.backgroundColor,
|
||||
),
|
||||
padding: padding ?? DefaultDraggableTagWidgetStyle.padding,
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
if (emailAddress.emailAddress.isNotEmpty)
|
||||
GradientCircleAvatarIcon(
|
||||
colors: emailAddress.avatarColors,
|
||||
label: emailAddress.emailAddress.firstCharacterToUpperCase,
|
||||
labelFontSize:
|
||||
DefaultDraggableTagWidgetStyle.avatarLabelFontSize,
|
||||
iconSize: DefaultDraggableTagWidgetStyle.avatarIconSize,
|
||||
),
|
||||
Padding(
|
||||
padding: DefaultDraggableTagWidgetStyle.labelPadding,
|
||||
child: DefaultTextStyle(
|
||||
style: DefaultDraggableTagWidgetStyle.labelTextStyle,
|
||||
child: Text(emailAddress.asString()),
|
||||
),
|
||||
),
|
||||
SvgPicture.asset(
|
||||
_imagePaths.icClose,
|
||||
colorFilter:
|
||||
DefaultDraggableTagWidgetStyle.deleteIconColor.asFilter(),
|
||||
fit: BoxFit.fill,
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
import 'package:core/presentation/extensions/color_extension.dart';
|
||||
import 'package:core/presentation/utils/theme_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class DefaultDraggableTagWidgetStyle {
|
||||
static const double radius = 10;
|
||||
static const double avatarIconSize = 24;
|
||||
static const double avatarLabelFontSize = 12;
|
||||
|
||||
static const Color deleteIconColor = Colors.white;
|
||||
static const Color backgroundColor = AppColor.primaryColor;
|
||||
|
||||
static const EdgeInsetsGeometry padding = EdgeInsets.symmetric(horizontal: 6, vertical: 3);
|
||||
static const EdgeInsetsGeometry labelPadding = EdgeInsets.symmetric(horizontal: 8);
|
||||
|
||||
static TextStyle labelTextStyle = ThemeUtils.defaultTextStyleInterFont.copyWith(
|
||||
color: Colors.white,
|
||||
fontSize: 17,
|
||||
fontWeight: FontWeight.normal
|
||||
);
|
||||
}
|
||||
@@ -149,20 +149,26 @@ class _SmartInteractionWidgetState extends State<SmartInteractionWidget> {
|
||||
_lastPointerEventOffset = event.position;
|
||||
}
|
||||
},
|
||||
child: MouseRegion(
|
||||
cursor: SystemMouseCursors.click,
|
||||
child: GestureDetector(
|
||||
onDoubleTap: _handleDoubleTap,
|
||||
onTap: _handleOnTapAction,
|
||||
child: widget.child,
|
||||
),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return MouseRegion(
|
||||
cursor: SystemMouseCursors.click,
|
||||
child: GestureDetector(
|
||||
key: _childKey,
|
||||
behavior: HitTestBehavior.opaque,
|
||||
onDoubleTap: _handleDoubleTap,
|
||||
onTap: _handleOnTapAction,
|
||||
child: widget.child,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return GestureDetector(
|
||||
key: _childKey,
|
||||
behavior: HitTestBehavior.opaque,
|
||||
onDoubleTap: _handleDoubleTap,
|
||||
onTap: _handleOnTapAction,
|
||||
child: widget.child,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
return GestureDetector(
|
||||
|
||||
Reference in New Issue
Block a user