From 4011f49a165bf696c63f61879ab04736e3c394c5 Mon Sep 17 00:00:00 2001 From: dab246 Date: Tue, 25 Jul 2023 19:57:07 +0700 Subject: [PATCH] TF-2040 Create CalendarDateIconWidget (cherry picked from commit ebe81b9eb18c4b2a963d4a1544efd009ae59aec1) --- .../calendar_date_icon_widget_styles.dart | 10 ++ .../widgets/calendar_date_icon_widget.dart | 92 +++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100644 lib/features/email/presentation/styles/calendar_date_icon_widget_styles.dart create mode 100644 lib/features/email/presentation/widgets/calendar_date_icon_widget.dart diff --git a/lib/features/email/presentation/styles/calendar_date_icon_widget_styles.dart b/lib/features/email/presentation/styles/calendar_date_icon_widget_styles.dart new file mode 100644 index 000000000..73d502def --- /dev/null +++ b/lib/features/email/presentation/styles/calendar_date_icon_widget_styles.dart @@ -0,0 +1,10 @@ + +class CalendarIconWidgetStyles { + static const double borderRadius = 8; + static const double headerVerticalContentPadding = 4; + static const double headerHorizontalContentPadding = 8; + static const double headerTextSize = 14; + static const double bodyDayTextSize = 40; + static const double bodyWeekDayTextSize = 14; + static const double bodyContentPadding = 8; +} \ No newline at end of file diff --git a/lib/features/email/presentation/widgets/calendar_date_icon_widget.dart b/lib/features/email/presentation/widgets/calendar_date_icon_widget.dart new file mode 100644 index 000000000..4b628f4a2 --- /dev/null +++ b/lib/features/email/presentation/widgets/calendar_date_icon_widget.dart @@ -0,0 +1,92 @@ + +import 'package:core/presentation/extensions/color_extension.dart'; +import 'package:flutter/material.dart'; +import 'package:jmap_dart_client/jmap/mail/calendar/calendar_event.dart'; +import 'package:tmail_ui_user/features/email/presentation/extensions/calendar_event_extension.dart'; +import 'package:tmail_ui_user/features/email/presentation/styles/calendar_date_icon_widget_styles.dart'; + +class CalendarDateIconWidget extends StatelessWidget { + + final CalendarEvent calendarEvent; + final double width; + + const CalendarDateIconWidget({ + super.key, + required this.calendarEvent, + this.width = 100 + }); + + @override + Widget build(BuildContext context) { + return Container( + clipBehavior: Clip.antiAlias, + width: width, + decoration: const ShapeDecoration( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(CalendarIconWidgetStyles.borderRadius))), + color: Colors.white, + shadows: [ + BoxShadow( + color: AppColor.colorShadowBgContentEmail, + blurRadius: 80, + offset: Offset(0, 1), + spreadRadius: 0, + ), + BoxShadow( + color: AppColor.colorShadowCalendarDateIcon, + blurRadius: 3, + offset: Offset(0, 1), + spreadRadius: 1, + ) + ], + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + color: AppColor.primaryColor, + padding: const EdgeInsetsDirectional.symmetric( + vertical: CalendarIconWidgetStyles.headerVerticalContentPadding, + horizontal: CalendarIconWidgetStyles.headerHorizontalContentPadding + ), + width: width, + child: Text( + calendarEvent.monthStartDateAsString, + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: CalendarIconWidgetStyles.headerTextSize, + fontWeight: FontWeight.w400, + color: Colors.white + ), + ), + ), + Padding( + padding: const EdgeInsets.all(CalendarIconWidgetStyles.bodyContentPadding), + child: Text( + calendarEvent.dayStartDateAsString, + style: const TextStyle( + fontSize: CalendarIconWidgetStyles.bodyDayTextSize, + fontWeight: FontWeight.w700, + color: Colors.black + ), + ), + ), + const Padding( + padding: EdgeInsets.symmetric(horizontal: CalendarIconWidgetStyles.bodyContentPadding), + child: Divider(color: AppColor.colorCalendarEventInformationStroke, height: 2) + ), + Padding( + padding: const EdgeInsets.all(CalendarIconWidgetStyles.bodyContentPadding), + child: Text( + calendarEvent.weekDayStartDateAsString, + style: const TextStyle( + fontSize: CalendarIconWidgetStyles.bodyWeekDayTextSize, + fontWeight: FontWeight.w400, + color: Colors.black + ), + ), + ), + ], + ), + ); + } +} \ No newline at end of file