TF-2057 Add calendar event detail widget
(cherry picked from commit a695a3bc57213db07623022e494679563dbe1521)
This commit is contained in:
@@ -29,6 +29,7 @@ import 'package:tmail_ui_user/features/email/presentation/widgets/app_bar_mail_w
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/attachment_file_tile_builder.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/bottom_bar_mail_widget_builder.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_action_banner_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_detail_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/calendar_event_information_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/email_action_cupertino_action_sheet_action_builder.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/information_sender_and_receiver_builder.dart';
|
||||
@@ -302,6 +303,15 @@ class EmailView extends GetWidget<SingleEmailController> with AppLoaderMixin {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
Obx(() {
|
||||
if (controller.calendarEvent.value != null) {
|
||||
return CalendarEventDetailWidget(
|
||||
calendarEvent: controller.calendarEvent.value!
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
}),
|
||||
if (PlatformInfo.isWeb)
|
||||
Expanded(child: Padding(
|
||||
padding: const EdgeInsetsDirectional.only(start: 16, bottom: 16),
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
|
||||
class CalendarEventDetailWidgetStyles {
|
||||
static const double textSize = 24;
|
||||
static const double borderRadius = 16;
|
||||
static const double verticalMargin = 12;
|
||||
static const double horizontalMargin = 16;
|
||||
static const double contentPadding = 16;
|
||||
static const double fieldTopPadding = 16;
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
|
||||
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_event_detail_widget_styles.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_attendee_detail_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_description_detail_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_location_detail_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_time_detail_widget.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/widgets/calendar_event/event_title_widget.dart';
|
||||
|
||||
class CalendarEventDetailWidget extends StatelessWidget {
|
||||
|
||||
final CalendarEvent calendarEvent;
|
||||
|
||||
const CalendarEventDetailWidget({
|
||||
super.key,
|
||||
required this.calendarEvent
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
clipBehavior: Clip.antiAlias,
|
||||
decoration: const ShapeDecoration(
|
||||
color: Colors.white,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
width: 0.5,
|
||||
color: AppColor.colorCalendarEventInformationStroke,
|
||||
),
|
||||
borderRadius: BorderRadius.all(Radius.circular(CalendarEventDetailWidgetStyles.borderRadius)),
|
||||
),
|
||||
),
|
||||
margin: const EdgeInsetsDirectional.symmetric(
|
||||
vertical: CalendarEventDetailWidgetStyles.verticalMargin,
|
||||
horizontal: CalendarEventDetailWidgetStyles.horizontalMargin),
|
||||
padding: const EdgeInsets.all(CalendarEventDetailWidgetStyles.contentPadding),
|
||||
width: double.infinity,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
if (calendarEvent.title?.isNotEmpty == true)
|
||||
EventTitleWidget(title: calendarEvent.title!),
|
||||
if (calendarEvent.description?.isNotEmpty == true)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
|
||||
child: EventDescriptionDetailWidget(description: calendarEvent.description!)
|
||||
),
|
||||
if (calendarEvent.dateTimeEventAsString.isNotEmpty)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
|
||||
child: EventTimeWidgetWidget(timeEvent: calendarEvent.dateTimeEventAsString),
|
||||
),
|
||||
if (calendarEvent.location?.isNotEmpty == true)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
|
||||
child: EventLocationDetailWidget(locationEvent: calendarEvent.location!),
|
||||
),
|
||||
if (calendarEvent.participants?.isNotEmpty == true && calendarEvent.organizer != null)
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: CalendarEventDetailWidgetStyles.fieldTopPadding),
|
||||
child: EventAttendeeDetailWidget(
|
||||
attendees: calendarEvent.participants!,
|
||||
organizer: calendarEvent.organizer!,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user