diff --git a/assets/images/ic_arrow_bottom.svg b/assets/images/ic_arrow_bottom.svg
new file mode 100644
index 000000000..20bc50dc4
--- /dev/null
+++ b/assets/images/ic_arrow_bottom.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/ic_arrow_left.svg b/assets/images/ic_arrow_left.svg
new file mode 100644
index 000000000..2859a8d7c
--- /dev/null
+++ b/assets/images/ic_arrow_left.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/images/ic_arrow_right.svg b/assets/images/ic_arrow_right.svg
new file mode 100644
index 000000000..3b2c446e4
--- /dev/null
+++ b/assets/images/ic_arrow_right.svg
@@ -0,0 +1,5 @@
+
diff --git a/core/lib/presentation/resources/image_paths.dart b/core/lib/presentation/resources/image_paths.dart
index f21ac42af..a58751a4b 100644
--- a/core/lib/presentation/resources/image_paths.dart
+++ b/core/lib/presentation/resources/image_paths.dart
@@ -190,6 +190,9 @@ class ImagePaths {
String get icDelivering => _getImagePath('ic_delivering.svg');
String get icError => _getImagePath('ic_error.svg');
String get icConnectedInternet => _getImagePath('ic_connected_internet.svg');
+ String get icArrowBottom => _getImagePath('ic_arrow_bottom.svg');
+ String get icArrowLeft => _getImagePath('ic_arrow_left.svg');
+ String get icArrowRight => _getImagePath('ic_arrow_right.svg');
String _getImagePath(String imageName) {
return AssetsPaths.images + imageName;
diff --git a/lib/features/composer/presentation/widgets/attachment_file_composer_builder.dart b/lib/features/composer/presentation/widgets/attachment_file_composer_builder.dart
index ed74e2dac..42dea8210 100644
--- a/lib/features/composer/presentation/widgets/attachment_file_composer_builder.dart
+++ b/lib/features/composer/presentation/widgets/attachment_file_composer_builder.dart
@@ -5,6 +5,7 @@ import 'package:core/presentation/utils/style_utils.dart';
import 'package:core/presentation/views/button/icon_button_web.dart';
import 'package:core/utils/direction_utils.dart';
import 'package:core/utils/platform_info.dart';
+import 'package:extended_text/extended_text.dart';
import 'package:filesize/filesize.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -73,15 +74,29 @@ class AttachmentFileComposerBuilder extends StatelessWidget with AppLoaderMixin
0.0),
child: Padding(
padding: const EdgeInsetsDirectional.only(end: PlatformInfo.isWeb ? 20 : 16),
- child: Text(
+ child: ExtendedText(
fileState.fileName,
maxLines: 1,
- softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
+ softWrap: CommonTextStyle.defaultSoftWrap,
+ overflowWidget: TextOverflowWidget(
+ position: Directionality.maybeOf(context) == TextDirection.rtl
+ ? TextOverflowPosition.start
+ : TextOverflowPosition.end,
+ child: const Text(
+ '...',
+ style: TextStyle(
+ fontSize: 12,
+ color: Colors.black,
+ fontWeight: FontWeight.w500
+ ),
+ ),
+ ),
style: const TextStyle(
- fontSize: 14,
- color: Colors.black,
- fontWeight: FontWeight.w500),
+ fontSize: 14,
+ color: Colors.black,
+ fontWeight: FontWeight.w500
+ ),
),
)
),
diff --git a/lib/features/destination_picker/presentation/widgets/top_bar_destination_picker_builder.dart b/lib/features/destination_picker/presentation/widgets/top_bar_destination_picker_builder.dart
index b6b11f9bd..192efc65c 100644
--- a/lib/features/destination_picker/presentation/widgets/top_bar_destination_picker_builder.dart
+++ b/lib/features/destination_picker/presentation/widgets/top_bar_destination_picker_builder.dart
@@ -7,7 +7,6 @@ import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/destination_picker/presentation/model/destination_screen_type.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/model/mailbox_actions.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
-import 'package:tmail_ui_user/main/utils/app_utils.dart';
typedef OnCreateNewMailboxAction = Function();
typedef OnOpenCreateNewMailboxScreenAction = Function();
@@ -62,12 +61,9 @@ class TopBarDestinationPickerBuilder extends StatelessWidget {
fontWeight: FontWeight.w700))),
if (_destinationScreenType == DestinationScreenType.destinationPicker)
Padding(
- padding: EdgeInsets.only(
- left: AppUtils.isDirectionRTL(context) ? 0 : 8,
- right: AppUtils.isDirectionRTL(context) ? 8 : 0,
- ),
+ padding: const EdgeInsetsDirectional.only(start: 8),
child: Align(
- alignment: Alignment.centerLeft,
+ alignment: AlignmentDirectional.centerStart,
child: buildIconWeb(
iconSize: 24,
colorSelected: Colors.white,
@@ -80,12 +76,9 @@ class TopBarDestinationPickerBuilder extends StatelessWidget {
)
else
Padding(
- padding: EdgeInsets.only(
- left: AppUtils.isDirectionRTL(context) ? 0 : 8,
- right: AppUtils.isDirectionRTL(context) ? 8 : 0,
- ),
+ padding: const EdgeInsetsDirectional.only(start: 8),
child: Align(
- alignment: Alignment.centerLeft,
+ alignment: AlignmentDirectional.centerStart,
child: Material(
color: Colors.transparent,
child: InkWell(
diff --git a/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart b/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart
index cd0547fa9..a20125a3a 100644
--- a/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart
+++ b/lib/features/email/presentation/widgets/attachment_file_tile_builder.dart
@@ -1,10 +1,14 @@
-import 'package:core/core.dart';
+import 'package:core/presentation/extensions/color_extension.dart';
+import 'package:core/presentation/resources/image_paths.dart';
+import 'package:core/presentation/utils/responsive_utils.dart';
+import 'package:core/presentation/utils/style_utils.dart';
+import 'package:extended_text/extended_text.dart';
import 'package:filesize/filesize.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
-import 'package:model/model.dart';
+import 'package:model/email/attachment.dart';
import 'package:tmail_ui_user/features/email/presentation/extensions/attachment_extension.dart';
typedef OnDownloadAttachmentFileActionClick = void Function(Attachment attachment);
@@ -52,30 +56,44 @@ class AttachmentFileTileBuilder extends StatelessWidget{
fit: BoxFit.fill),
const SizedBox(width: 8),
Expanded(child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text(
- _attachment.name ?? '',
- maxLines: 1,
- overflow: CommonTextStyle.defaultTextOverFlow,
- softWrap: CommonTextStyle.defaultSoftWrap,
- style: const TextStyle(
- fontSize: 14,
- color: AppColor.attachmentFileNameColor,
- fontWeight: FontWeight.normal),
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ ExtendedText(
+ (_attachment.name ?? ''),
+ maxLines: 1,
+ overflow: CommonTextStyle.defaultTextOverFlow,
+ softWrap: CommonTextStyle.defaultSoftWrap,
+ overflowWidget: TextOverflowWidget(
+ position: Directionality.maybeOf(context) == TextDirection.rtl
+ ? TextOverflowPosition.start
+ : TextOverflowPosition.end,
+ child: const Text(
+ "...",
+ style: TextStyle(
+ fontSize: 12,
+ color: AppColor.attachmentFileNameColor,
+ fontWeight: FontWeight.normal
+ ),
),
- const SizedBox(height: 4),
- Text(
- filesize(_attachment.size?.value),
- maxLines: 1,
- overflow: CommonTextStyle.defaultTextOverFlow,
- softWrap: CommonTextStyle.defaultSoftWrap,
- style: const TextStyle(
- fontSize: 12,
- color: AppColor.attachmentFileSizeColor,
- fontWeight: FontWeight.normal),
- )
- ]
+ ),
+ style: const TextStyle(
+ fontSize: 14,
+ color: AppColor.attachmentFileNameColor,
+ fontWeight: FontWeight.normal
+ ),
+ ),
+ const SizedBox(height: 4),
+ Text(
+ filesize(_attachment.size?.value),
+ maxLines: 1,
+ overflow: CommonTextStyle.defaultTextOverFlow,
+ softWrap: CommonTextStyle.defaultSoftWrap,
+ style: const TextStyle(
+ fontSize: 12,
+ color: AppColor.attachmentFileSizeColor,
+ fontWeight: FontWeight.normal),
+ )
+ ]
))
]),
),
diff --git a/lib/features/mailbox/presentation/mailbox_view.dart b/lib/features/mailbox/presentation/mailbox_view.dart
index f06a2cbf3..3bf532c8e 100644
--- a/lib/features/mailbox/presentation/mailbox_view.dart
+++ b/lib/features/mailbox/presentation/mailbox_view.dart
@@ -270,8 +270,8 @@ class MailboxView extends BaseMailboxView {
splashRadius: 15,
icon: SvgPicture.asset(
categories.getExpandMode(controller.mailboxCategoriesExpandMode.value) == ExpandMode.EXPAND
- ? imagePaths.icExpandFolder
- : DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icBack : imagePaths.icCollapseFolder,
+ ? imagePaths.icArrowBottom
+ : DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icArrowLeft : imagePaths.icArrowRight,
colorFilter: AppColor.primaryColor.asFilter(),
fit: BoxFit.fill),
tooltip: AppLocalizations.of(context).collapse,
diff --git a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart
index 7e4426894..cdcf0e33b 100644
--- a/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart
+++ b/lib/features/mailbox/presentation/mixin/mailbox_widget_mixin.dart
@@ -300,8 +300,8 @@ mixin MailboxWidgetMixin {
minSize: 12,
icon: SvgPicture.asset(
expandMode == ExpandMode.EXPAND
- ? imagePaths.icExpandFolder
- : DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icBack : imagePaths.icCollapseFolder,
+ ? imagePaths.icArrowBottom
+ : DirectionUtils.isDirectionRTLByLanguage(context) ? imagePaths.icArrowLeft : imagePaths.icArrowRight,
colorFilter: AppColor.primaryColor.asFilter(),
fit: BoxFit.fill
),
@@ -359,7 +359,7 @@ mixin MailboxWidgetMixin {
MailboxController controller
) {
return Padding(
- padding: const EdgeInsetsDirectional.only(start: 32, bottom: 8, end: 4),
+ padding: const EdgeInsetsDirectional.only(start: 32, end: 4),
child: Row(children: [
SvgPicture.asset(
imagePaths.icAppDashboard,
diff --git a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart
index 9d56e4c87..d98054b4f 100644
--- a/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart
+++ b/lib/features/mailbox/presentation/widgets/mailbox_folder_tile_builder.dart
@@ -107,9 +107,6 @@ class MailBoxFolderTileBuilder {
color: backgroundColorItem),
padding: const EdgeInsets.all(8),
child: Row(
- crossAxisAlignment: _mailboxNode.item.isTeamMailboxes
- ? CrossAxisAlignment.start
- : CrossAxisAlignment.end,
children: [
_buildLeadingMailboxItem(context),
const SizedBox(width: 4),
@@ -138,9 +135,6 @@ class MailBoxFolderTileBuilder {
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
- crossAxisAlignment: _mailboxNode.item.isTeamMailboxes
- ? CrossAxisAlignment.start
- : CrossAxisAlignment.center,
children: [
_buildLeadingMailboxItem(context),
const SizedBox(width: 8),
@@ -194,16 +188,16 @@ class MailBoxFolderTileBuilder {
buildIconWeb(
icon: SvgPicture.asset(
_mailboxNode.expandMode == ExpandMode.EXPAND
- ? _imagePaths.icExpandFolder
- : DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icBack : _imagePaths.icCollapseFolder,
+ ? _imagePaths.icArrowBottom
+ : DirectionUtils.isDirectionRTLByLanguage(context) ? _imagePaths.icArrowLeft : _imagePaths.icArrowRight,
colorFilter: _mailboxNode.item.allowedToDisplay
? AppColor.primaryColor.asFilter()
: AppColor.colorIconUnSubscribedMailbox.asFilter(),
- fit: BoxFit.fill
+ fit: BoxFit.fill,
),
- minSize: 12,
- splashRadius: 10,
+ splashRadius: 12,
iconPadding: EdgeInsets.zero,
+ minSize: 15,
tooltip: _mailboxNode.expandMode == ExpandMode.EXPAND
? AppLocalizations.of(_context).collapse
: AppLocalizations.of(_context).expand,
@@ -288,10 +282,8 @@ class MailBoxFolderTileBuilder {
Widget _buildTitleFolderItem(BuildContext context, {bool showTrailingItem = true}) {
return Column(
- crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
- crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(
child: TextOverflowBuilder(
diff --git a/pubspec.lock b/pubspec.lock
index 9bf2d5636..8894259f1 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -385,6 +385,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.5"
+ extended_text:
+ dependency: "direct main"
+ description:
+ name: extended_text
+ sha256: "3f555a60f63ff51d5080f5eed89e65bc18f17b69e01f4e16cadfd0cb3b49f42a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.0.1"
+ extended_text_library:
+ dependency: transitive
+ description:
+ name: extended_text_library
+ sha256: "6d06b0ac53a09989e9864549f133c19c676d1456c5ee9470e2483f3cb1900f6e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "10.0.0"
external_app_launcher:
dependency: "direct main"
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 625a53aed..d54c4f7b9 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -199,6 +199,8 @@ dependencies:
flutter_keyboard_visibility: 5.4.1
+ extended_text: 10.0.1
+
dev_dependencies:
flutter_test:
sdk: flutter