TF-888 Apply new design for vacation on desktop

This commit is contained in:
dab246
2022-09-09 19:11:52 +07:00
committed by Dat H. Pham
parent 6e4d160389
commit 67865fd1a2
14 changed files with 518 additions and 479 deletions
+10 -1
View File
@@ -1,3 +1,12 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.4902 3.17C11.1102 1.61 8.89024 1.61 8.51024 3.17C8.45351 3.40442 8.34223 3.62212 8.18546 3.80541C8.02869 3.9887 7.83087 4.13238 7.60808 4.22477C7.3853 4.31716 7.14384 4.35564 6.90338 4.33709C6.66291 4.31854 6.43022 4.24347 6.22424 4.118C4.85224 3.282 3.28224 4.852 4.11824 6.224C4.65824 7.11 4.17924 8.266 3.17124 8.511C1.61024 8.89 1.61024 11.111 3.17124 11.489C3.40572 11.5458 3.62346 11.6572 3.80675 11.8141C3.99004 11.971 4.13368 12.1689 4.22598 12.3918C4.31828 12.6147 4.35663 12.8563 4.33791 13.0968C4.31919 13.3373 4.24392 13.5701 4.11824 13.776C3.28224 15.148 4.85224 16.718 6.22424 15.882C6.43018 15.7563 6.66289 15.6811 6.90342 15.6623C7.14396 15.6436 7.38551 15.682 7.60842 15.7743C7.83132 15.8666 8.02928 16.0102 8.18617 16.1935C8.34305 16.3768 8.45443 16.5945 8.51124 16.829C8.89024 18.39 11.1112 18.39 11.4892 16.829C11.5462 16.5946 11.6577 16.377 11.8146 16.1939C11.9716 16.0107 12.1695 15.8672 12.3923 15.7749C12.6152 15.6826 12.8566 15.6442 13.0971 15.6628C13.3376 15.6815 13.5702 15.7565 13.7762 15.882C15.1482 16.718 16.7182 15.148 15.8822 13.776C15.7568 13.57 15.6817 13.3373 15.6631 13.0969C15.6445 12.8564 15.6829 12.6149 15.7751 12.3921C15.8674 12.1692 16.011 11.9713 16.1941 11.8144C16.3773 11.6575 16.5949 11.546 16.8292 11.489C18.3902 11.11 18.3902 8.889 16.8292 8.511C16.5948 8.45419 16.377 8.34281 16.1937 8.18593C16.0104 8.02904 15.8668 7.83109 15.7745 7.60818C15.6822 7.38527 15.6438 7.14372 15.6626 6.90318C15.6813 6.66265 15.7566 6.42994 15.8822 6.224C16.7182 4.852 15.1482 3.282 13.7762 4.118C13.5703 4.24368 13.3376 4.31895 13.0971 4.33767C12.8565 4.35639 12.615 4.31804 12.3921 4.22574C12.1692 4.13344 11.9712 3.9898 11.8143 3.80651C11.6574 3.62323 11.546 3.40548 11.4892 3.171L11.4902 3.17ZM10.0002 13C10.7959 13 11.559 12.6839 12.1216 12.1213C12.6842 11.5587 13.0002 10.7956 13.0002 10C13.0002 9.20435 12.6842 8.44129 12.1216 7.87868C11.559 7.31607 10.7959 7 10.0002 7C9.20459 7 8.44153 7.31607 7.87892 7.87868C7.31631 8.44129 7.00024 9.20435 7.00024 10C7.00024 10.7956 7.31631 11.5587 7.87892 12.1213C8.44153 12.6839 9.20459 13 10.0002 13V13Z" stroke="#007AFF" stroke-width="1.5"/>
<defs>
<clipPath id="clip0_5284_257035">
<rect width="20" height="20" fill="white" />
</clipPath>
</defs>
<g clip-path="url(#clip0_5284_257035)">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M5.37727 12.4616C5.65411 12.5012 5.79253 12.5209 5.91118 12.4977C6.02302 12.4758 6.10938 12.4375 6.20075 12.3694C6.29769 12.2972 6.38373 12.17 6.55581 11.9157C6.75036 11.6282 6.97269 11.324 7.21968 11.008C7.25054 10.9685 7.28178 10.9288 7.3134 10.889C7.60327 10.5238 7.7482 10.3413 7.78042 10.1659C7.8097 10.0064 7.78799 9.85732 7.71447 9.71285C7.63358 9.55393 7.45182 9.42669 7.08828 9.17222L4.72681 7.51919C4.44485 7.32181 4.35004 6.94766 4.50398 6.63982C4.64402 6.3598 4.95414 6.20814 5.26114 6.26954L9.73401 7.16408C10.0629 7.22987 10.2274 7.26276 10.3857 7.24728C10.5259 7.23357 10.662 7.19236 10.7863 7.126C10.9266 7.05105 11.0452 6.93246 11.2824 6.69527L12.3172 5.66041C13.712 4.26568 15.2949 3.58729 15.8528 4.14518C16.4107 4.70307 15.7323 6.28598 14.3376 7.68071L13.3027 8.71555C13.0655 8.95274 12.9469 9.07134 12.872 9.21168C12.8056 9.33592 12.7644 9.47203 12.7507 9.61221C12.7352 9.77056 12.7681 9.93502 12.8339 10.2639L13.7285 14.7368C13.7899 15.0439 13.6382 15.354 13.3581 15.4941C13.0503 15.648 12.6762 15.5531 12.4788 15.2712L10.8257 12.9097C10.5713 12.5461 10.444 12.3644 10.2851 12.2835C10.1406 12.21 9.99153 12.1883 9.8321 12.2175C9.65671 12.2498 9.47412 12.3947 9.10895 12.6846C9.06911 12.7162 9.02945 12.7474 8.98997 12.7783C8.67399 13.0253 8.36979 13.2476 8.08228 13.4421C7.82797 13.6142 7.70082 13.7003 7.62857 13.7972C7.56045 13.8886 7.5222 13.9749 7.50029 14.0868C7.47705 14.2054 7.49682 14.3438 7.53637 14.6207L7.71299 15.857C7.74691 16.0944 7.60618 16.3221 7.37866 16.398C7.16396 16.4695 6.92804 16.3868 6.8051 16.1968L5.75803 14.5786C5.70836 14.5018 5.68353 14.4635 5.65432 14.4288C5.62837 14.3981 5.59987 14.3696 5.56912 14.3436C5.53451 14.3144 5.49613 14.2896 5.41938 14.2399L3.80117 13.1929C3.61117 13.0699 3.52842 12.834 3.59998 12.6193C3.67582 12.3918 3.90352 12.2511 4.14094 12.285L5.37727 12.4616ZM4.34298 10.8708C3.42209 10.7392 2.53889 11.285 2.24472 12.1676C1.96713 13.0003 2.28813 13.9154 3.0251 14.3922L4.5919 15.4061L5.60571 16.9729C6.08258 17.7098 6.99765 18.0308 7.83041 17.7532C8.71291 17.4591 9.25876 16.5759 9.1272 15.655L8.97147 14.5649C9.24331 14.3781 9.52393 14.1723 9.81027 13.9501L11.3085 16.0904C11.9119 16.9525 13.0558 17.2424 13.997 16.7718C14.8533 16.3437 15.3171 15.3954 15.1293 14.4567L14.2047 9.83383L15.3477 8.69087C16.1407 7.89789 16.7784 7.00674 17.1405 6.16187C17.3198 5.74336 17.4619 5.26601 17.4755 4.77668C17.4893 4.2832 17.3697 3.64176 16.8629 3.13503C16.3562 2.6283 15.7148 2.50865 15.2213 2.52242C14.7319 2.53608 14.2546 2.67814 13.8361 2.8575C12.9912 3.21958 12.1001 3.85728 11.3071 4.65026L10.1641 5.79324L5.5413 4.86871C4.60263 4.68098 3.65444 5.14469 3.22627 6.00085C2.75558 6.94206 3.04547 8.08604 3.90758 8.68952L6.04782 10.1877C5.82565 10.474 5.61988 10.7547 5.43309 11.0265L4.34298 10.8708Z"
fill="#007AFF" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

@@ -120,7 +120,7 @@ extension AppColor on Color {
static const colorBgMenuItemDropDownSelected = Color(0x80DEE2E7);
static const colorButtonCancelDialog = Color(0x0D000000);
static const colorShadowComposerButton = Color(0x99007AFF);
static const colorBackgroundTagFilter = Color(0x6D7885);
static const colorBackgroundTagFilter = Color(0xFF6D7885);
static const colorDefaultRichTextButton = Color(0xFF99A2AD);
static const colorFocusRichTextButton = Color(0x146D7885);
static const colorStyleBlockQuote = Color(0xFFEEEEEE);
@@ -141,6 +141,8 @@ extension AppColor on Color {
static const colorVacationNotificationMessageBackground = Color(0x2999A2AD);
static const colorDeletePermanentlyButton = Color(0xffE64646);
static const colorDefaultButton = Color(0xff9AA1AD);
static const colorVacationSettingExplanation = Color(0xFF686E76);
static const colorBackgroundVacationSettingField = Color(0xFFF2F3F5);
static const mapGradientColor = [
[Color(0xFF21D4FD), Color(0xFFB721FF)],
@@ -13,6 +13,11 @@ abstract class InputDecorationBuilder {
OutlineInputBorder? focusBorder;
String? errorText;
TextStyle? errorTextStyle;
Color? fillColor;
void setFillColor(Color? newColor) {
fillColor = newColor;
}
void setPrefixText(String? newPrefixText) {
prefixText = newPrefixText;
@@ -74,7 +79,7 @@ abstract class InputDecorationBuilder {
errorText: errorText,
errorStyle: errorTextStyle,
enabledBorder: enabledBorder,
focusedBorder: focusBorder
focusedBorder: focusBorder,
);
}
}
@@ -1,10 +1,7 @@
import 'package:core/presentation/extensions/color_extension.dart';
import 'package:core/presentation/resources/image_paths.dart';
import 'package:core/presentation/utils/style_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/extensions/datetime_extension.dart';
typedef OnTapActionCallback<T> = Function(T? value);
@@ -18,9 +15,12 @@ class BorderButtonField<T> extends StatelessWidget {
final MouseCursor? mouseCursor;
final String? hintText;
final bool isEmpty;
final Color? backgroundColor;
final String? label;
const BorderButtonField({
super.key,
this.label,
this.value,
this.tapActionCallback,
this.icon,
@@ -28,13 +28,12 @@ class BorderButtonField<T> extends StatelessWidget {
this.mouseCursor,
this.hintText,
this.isEmpty = false,
this.backgroundColor,
});
@override
Widget build(BuildContext context) {
final _imagePaths = Get.find<ImagePaths>();
return InkWell(
final buttonField = InkWell(
onTap: () => tapActionCallback?.call(value),
mouseCursor: mouseCursor,
child: Container(
@@ -43,9 +42,9 @@ class BorderButtonField<T> extends StatelessWidget {
borderRadius: BorderRadius.circular(10),
border: Border.all(
color: _getBorderColor(),
width: 1),
color: Colors.white),
padding: const EdgeInsets.only(left: 12, right: 10),
width: 0.5),
color: backgroundColor ?? Colors.white),
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Row(children: [
Expanded(child: Text(
_getName(context, value),
@@ -54,10 +53,22 @@ class BorderButtonField<T> extends StatelessWidget {
softWrap: CommonTextStyle.defaultSoftWrap,
overflow: CommonTextStyle.defaultTextOverFlow,
)),
icon ?? SvgPicture.asset(_imagePaths.icDropDown)
if (icon != null) icon!
]),
),
);
if (label != null) {
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text(label!, style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.normal,
color: AppColor.colorContentEmail)),
const SizedBox(height: 8),
buttonField
]);
} else {
return buttonField;
}
}
TextStyle? _getTextStyle(T? value) {
@@ -0,0 +1,53 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
class TextInputDecorationBuilder extends InputDecorationBuilder {
@override
InputDecoration build() {
return InputDecoration(
enabledBorder: enabledBorder ?? const OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(
width: 0.5,
color: AppColor.colorInputBorderCreateMailbox)),
focusedBorder: enabledBorder ?? const OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(
width: 0.5,
color: AppColor.colorTextButton)),
errorBorder: errorBorder ?? const OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(
width: 0.5,
color: AppColor.colorInputBorderErrorVerifyName)),
focusedErrorBorder: errorBorder ?? const OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(10)),
borderSide: BorderSide(
width: 0.5,
color: AppColor.colorInputBorderErrorVerifyName)),
prefixText: prefixText,
labelText: labelText,
floatingLabelBehavior: FloatingLabelBehavior.never,
labelStyle: labelStyle ?? const TextStyle(
color: Colors.black,
fontSize: 16),
hintText: hintText,
isDense: true,
hintStyle: hintStyle ?? const TextStyle(
color: AppColor.loginTextFieldHintColor,
fontSize: 16),
contentPadding: contentPadding ?? const EdgeInsets.symmetric(
horizontal: 12,
vertical: 12),
errorText: errorText,
errorStyle: errorTextStyle ?? const TextStyle(
color: AppColor.colorInputBorderErrorVerifyName,
fontSize: 13),
filled: true,
fillColor: errorText?.isNotEmpty == true
? AppColor.colorInputBackgroundErrorVerifyName
: fillColor ?? AppColor.colorInputBackgroundCreateMailbox);
}
}
@@ -0,0 +1,69 @@
import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:tmail_ui_user/features/base/widget/text_input_decoration_builder.dart';
typedef OnChangeInputAction = Function(String? value);
class TextInputFieldBuilder extends StatelessWidget {
final String? label;
final String? error;
final String? hint;
final TextEditingController? editingController;
final FocusNode? focusNode;
final TextInputType? inputType;
final bool isMandatory;
final int? minLines;
final int? maxLines;
final Color? backgroundColor;
final OnChangeInputAction? onChangeInputAction;
const TextInputFieldBuilder({
Key? key,
this.label,
this.hint,
this.error,
this.isMandatory = false,
this.editingController,
this.focusNode,
this.inputType,
this.minLines,
this.maxLines,
this.backgroundColor,
this.onChangeInputAction,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
if (label != null)
...[
Text(isMandatory ? '${label!}*' : label!,
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.normal,
color: AppColor.colorContentEmail)),
const SizedBox(height: 8)
],
(TextFieldBuilder()
..onChange((value) => onChangeInputAction?.call(value))
..textInputAction(TextInputAction.next)
..addController(editingController ?? TextEditingController())
..addFocusNode(focusNode)
..textStyle(const TextStyle(color: Colors.black, fontSize: 16))
..keyboardType(inputType ?? TextInputType.text)
..minLines(minLines)
..maxLines(maxLines)
..textDecoration((TextInputDecorationBuilder()
..setContentPadding(const EdgeInsets.symmetric(
vertical: BuildUtils.isWeb ? 16 : 12,
horizontal: 12))
..setHintText(hint)
..setFillColor(backgroundColor)
..setErrorText(error))
.build()))
.build()
]);
}
}
@@ -23,8 +23,7 @@ extension TimeOfDayExtension on TimeOfDay? {
String formatTime(BuildContext context) {
if (this != null) {
return MaterialLocalizations.of(context)
.formatTimeOfDay(this!, alwaysUse24HourFormat: true);
return MaterialLocalizations.of(context).formatTimeOfDay(this!);
}
return '';
}
@@ -24,6 +24,7 @@ extension VacationResponseExtension on VacationResponse {
? TimeOfDay.fromDateTime(toDate!.value.toUtc())
: null,
messageBody: textBody ?? htmlBody,
subject: subject,
vacationStopEnabled: toDate != null
);
}
@@ -13,8 +13,8 @@ class ManageAccountMenuController extends BaseController {
final listAccountMenuItem = RxList<AccountMenuItem>([
AccountMenuItem.profiles,
AccountMenuItem.languageAndRegion,
AccountMenuItem.vacation,
AccountMenuItem.languageAndRegion,
]);
void _initWorker() {
@@ -43,8 +43,8 @@ class ManageAccountMenuController extends BaseController {
if (dashBoardController.checkAvailableForwardInSession()) {
listAccountMenuItem.add(AccountMenuItem.forward);
}
listAccountMenuItem.add(AccountMenuItem.languageAndRegion);
listAccountMenuItem.add(AccountMenuItem.vacation);
listAccountMenuItem.add(AccountMenuItem.languageAndRegion);
}
@override
@@ -13,6 +13,7 @@ class VacationPresentation with EquatableMixin {
final DateTime? endDate;
final TimeOfDay? endTime;
final String? messageBody;
final String? subject;
final bool vacationStopEnabled;
VacationPresentation({
@@ -22,6 +23,7 @@ class VacationPresentation with EquatableMixin {
this.endDate,
this.endTime,
this.messageBody,
this.subject,
this.vacationStopEnabled = false,
});
@@ -36,6 +38,7 @@ class VacationPresentation with EquatableMixin {
DateTime? endDate,
TimeOfDay? endTime,
String? messageBody,
String? subject,
bool? vacationStopEnabled,
}) {
return VacationPresentation(
@@ -45,6 +48,7 @@ class VacationPresentation with EquatableMixin {
endDate: endDate ?? this.endDate,
endTime: endTime ?? this.endTime,
messageBody: messageBody ?? this.messageBody,
subject: subject ?? this.subject,
vacationStopEnabled: vacationStopEnabled ?? this.vacationStopEnabled
);
}
@@ -71,7 +75,8 @@ class VacationPresentation with EquatableMixin {
endDate,
endTime,
vacationStopEnabled,
messageBody
messageBody,
subject,
];
}
@@ -81,7 +86,8 @@ extension VacationPresentationExtension on VacationPresentation {
isEnabled: isEnabled,
fromDate: fromDate != null ? UTCDate(fromDate!) : null,
toDate: toDate != null ? UTCDate(toDate!) : null,
textBody: messageBody
textBody: messageBody,
subject: subject,
);
}
}
@@ -32,7 +32,8 @@ class VacationController extends BaseController {
final vacationPresentation = VacationPresentation.initialize().obs;
final errorMessageBody = Rxn<String>();
final TextEditingController messageBodyEditorController = TextEditingController();
final messageTextController = TextEditingController();
final subjectTextController = TextEditingController();
VacationResponse? currentVacation;
late Worker vacationWorker;
@@ -78,7 +79,8 @@ class VacationController extends BaseController {
currentVacation = vacation;
final newVacationPresentation = currentVacation?.toVacationPresentation();
vacationPresentation.value = newVacationPresentation ?? VacationPresentation.initialize();
messageBodyEditorController.text = newVacationPresentation?.messageBody ?? '';
messageTextController.text = newVacationPresentation?.messageBody ?? '';
subjectTextController.text = newVacationPresentation?.subject ?? '';
}
});
}
@@ -98,7 +100,8 @@ class VacationController extends BaseController {
if (currentVacation != null) {
final newVacationPresentation = currentVacation!.toVacationPresentation();
vacationPresentation.value = newVacationPresentation;
messageBodyEditorController.text = newVacationPresentation.messageBody ?? '';
messageTextController.text = newVacationPresentation.messageBody ?? '';
subjectTextController.text = newVacationPresentation.subject ?? '';
}
}
}
@@ -177,7 +180,7 @@ class VacationController extends BaseController {
textButtonTheme: TextButtonThemeData(
style: TextButton.styleFrom(primary: AppColor.primaryColor))),
child: MediaQuery(
data: const MediaQueryData(alwaysUse24HourFormat: true),
data: const MediaQueryData(alwaysUse24HourFormat: false),
child: child!),
);
}
@@ -236,7 +239,7 @@ class VacationController extends BaseController {
return;
}
final messageBody = messageBodyEditorController.text;
final messageBody = messageTextController.text;
if (messageBody.isEmpty) {
_appToast.showToastWithIcon(
context,
@@ -246,7 +249,11 @@ class VacationController extends BaseController {
return;
}
final newVacationPresentation = vacationPresentation.value.copyWidth(messageBody: messageBody);
final subjectVacation = subjectTextController.text;
final newVacationPresentation = vacationPresentation.value.copyWidth(
messageBody: messageBody,
subject: subjectVacation);
log('VacationController::saveVacation(): newVacationPresentation: $newVacationPresentation');
final newVacationResponse = newVacationPresentation.toVacationResponse();
log('VacationController::saveVacation(): newVacationResponse: $newVacationResponse');
@@ -281,7 +288,8 @@ class VacationController extends BaseController {
if (currentVacation != null) {
final newVacationPresentation = currentVacation!.toVacationPresentation();
vacationPresentation.value = newVacationPresentation;
messageBodyEditorController.text = newVacationPresentation.messageBody ?? '';
messageTextController.text = newVacationPresentation.messageBody ?? '';
subjectTextController.text = newVacationPresentation.subject ?? '';
}
_accountDashBoardController.updateVacationResponse(currentVacation);
@@ -290,7 +298,8 @@ class VacationController extends BaseController {
@override
void onClose() {
messageBodyEditorController.dispose();
messageTextController.dispose();
subjectTextController.dispose();
vacationWorker.dispose();
super.onClose();
}
@@ -4,11 +4,11 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:tmail_ui_user/features/base/widget/border_button_field.dart';
import 'package:tmail_ui_user/features/base/widget/text_input_field_builder.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/menu/settings_utils.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/date_type.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/model/vacation/vacation_responder_status.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/vacation_controller.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_input_decoration_builder.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
class VacationView extends GetWidget<VacationController> {
@@ -39,448 +39,260 @@ class VacationView extends GetWidget<VacationController> {
color: Colors.white)
: null,
padding: SettingsUtils.getMarginViewForSettingDetails(context, _responsiveUtils),
child: ResponsiveWidget(
responsiveUtils: _responsiveUtils,
desktop: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(children: [
Container(
width: 200,
color: Colors.white,
child: Text(
AppLocalizations.of(context).vacationResponder,
style: const TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black))),
const SizedBox(width: 16),
Obx(() {
return Row(
children: [
Material(
color: Colors.transparent,
child: InkWell(
onTap: () {
controller.updateVacationPresentation(newStatus: VacationResponderStatus.deactivated);
},
child: Text(AppLocalizations.of(context).deactivated,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 1.0 : 0.3))),
),
),
Padding(
padding: const EdgeInsets.only(top: 3, right: 16, left: 16),
child: InkWell(
onTap: () {
final newStatus = controller.isVacationDeactivated
? VacationResponderStatus.activated
: VacationResponderStatus.deactivated;
controller.updateVacationPresentation(newStatus: newStatus);
},
child: SvgPicture.asset(
controller.isVacationDeactivated
? _imagePaths.icSwitchOff
: _imagePaths.icSwitchOn,
fit: BoxFit.fill,
width: 24,
height: 24)),
),
Material(
color: Colors.transparent,
child: InkWell(
onTap: () {
controller.updateVacationPresentation(newStatus: VacationResponderStatus.activated);
},
child: Text(AppLocalizations.of(context).activated,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.3 : 1.0))),
),
)
]);
})
]),
const SizedBox(height: 16),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Row(children: [
Container(
width: 200,
color: Colors.white,
child: Text(
AppLocalizations.of(context).startDate,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0)))),
const SizedBox(width: 16),
Expanded(child: Obx(() => BorderButtonField<DateTime>(
value: controller.vacationPresentation.value.startDate,
mouseCursor: SystemMouseCursors.text,
isEmpty: !controller.isVacationDeactivated &&
controller.vacationPresentation.value.startDateIsNull,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).startDate,
icon: SvgPicture.asset(_imagePaths.icCalendar),
tapActionCallback: (value) =>
controller.selectDate(context, DateType.start, value)))),
const SizedBox(width: 16),
Expanded(child: Obx(() => BorderButtonField<TimeOfDay>(
value: controller.vacationPresentation.value.startTime,
mouseCursor: SystemMouseCursors.text,
isEmpty: !controller.isVacationDeactivated &&
controller.vacationPresentation.value.starTimeIsNull,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).noStartTime,
icon: SvgPicture.asset(_imagePaths.icClock),
tapActionCallback: (value) =>
controller.selectTime(context, DateType.start, value)))),
]),
)),
const SizedBox(height: 16),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Container(
width: 200,
color: Colors.white,
child: CheckboxListTile(
contentPadding: EdgeInsets.zero,
activeColor: AppColor.primaryColor.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0),
controlAffinity: ListTileControlAffinity.leading,
value: controller.vacationPresentation.value.vacationStopEnabled,
onChanged: (value) =>
controller.updateVacationPresentation(vacationStopEnabled: value),
title: Text(AppLocalizations.of(context).vacationStopsAt,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0))),
),
),
)),
Obx(() => AbsorbPointer(
absorbing: !controller.canChangeEndDate,
child: Row(children: [
Container(
width: 200,
color: Colors.white,
child: Text(
AppLocalizations.of(context).endDate,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
!controller.canChangeEndDate ? 0.5 : 1.0)))),
const SizedBox(width: 16),
Expanded(child: Obx(() => BorderButtonField<DateTime>(
value: controller.vacationPresentation.value.endDate,
mouseCursor: SystemMouseCursors.text,
isEmpty: controller.canChangeEndDate &&
controller.vacationPresentation.value.endDateIsNull,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
!controller.canChangeEndDate ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).noEndDate,
icon: SvgPicture.asset(_imagePaths.icCalendar),
tapActionCallback: (value) =>
controller.selectDate(context, DateType.end, value)))),
const SizedBox(width: 16),
Expanded(child: Obx(() => BorderButtonField<TimeOfDay>(
value: controller.vacationPresentation.value.endTime,
mouseCursor: SystemMouseCursors.text,
isEmpty: controller.canChangeEndDate &&
controller.vacationPresentation.value.endTimeIsNull,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
!controller.canChangeEndDate ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).noEndTime,
icon: SvgPicture.asset(_imagePaths.icClock),
tapActionCallback: (value) =>
controller.selectTime(context, DateType.end, value)))),
])
)),
const SizedBox(height: 16),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Row(crossAxisAlignment: CrossAxisAlignment.start, children: [
Container(
width: 200,
color: Colors.white,
child: Text(
AppLocalizations.of(context).messageBody,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0)))),
const SizedBox(width: 16),
Expanded(child: _buildMessageBodyWidget(
context,
controller.isVacationDeactivated ? 0.5 : 1.0))
]),
)),
const SizedBox(height: 16),
Align(
alignment: Alignment.centerRight,
child: buildTextButton(
AppLocalizations.of(context).save,
width: 128,
height: 44,
radius: 10,
onTap: () => controller.saveVacation(context)),
)
]
),
),
mobile: SingleChildScrollView(
child: Column(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text(
AppLocalizations.of(context).vacationResponder,
style: const TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black)),
const SizedBox(height: 10),
if (_responsiveUtils.isWebDesktop(context))
...[
Text(AppLocalizations.of(context).vacation,
style: const TextStyle(
fontSize: 20,
fontWeight: FontWeight.w500,
color: Colors.black)),
const SizedBox(height: 8)
],
Text(AppLocalizations.of(context).vacationSettingExplanation,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: AppColor.colorVacationSettingExplanation)),
const SizedBox(height: 24),
Row(children: [
Obx(() {
return Row(
children: [
Material(
color: Colors.transparent,
child: InkWell(
onTap: () {
controller.updateVacationPresentation(newStatus: VacationResponderStatus.deactivated);
},
child: Text(AppLocalizations.of(context).deactivated,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 1.0 : 0.3))),
),
),
Padding(
padding: const EdgeInsets.only(top: 3, right: 16, left: 16),
child: InkWell(
onTap: () {
final newStatus = controller.isVacationDeactivated
? VacationResponderStatus.activated
: VacationResponderStatus.deactivated;
controller.updateVacationPresentation(newStatus: newStatus);
},
child: SvgPicture.asset(
controller.isVacationDeactivated
? _imagePaths.icSwitchOff
: _imagePaths.icSwitchOn,
fit: BoxFit.fill,
width: 24,
height: 24)),
),
Material(
color: Colors.transparent,
child: InkWell(
onTap: () {
controller.updateVacationPresentation(newStatus: VacationResponderStatus.activated);
},
child: Text(AppLocalizations.of(context).activated,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.3 : 1.0))),
),
)
]);
})
return InkWell(
onTap: () {
final newStatus = controller.isVacationDeactivated
? VacationResponderStatus.activated
: VacationResponderStatus.deactivated;
controller.updateVacationPresentation(newStatus: newStatus);
},
child: SvgPicture.asset(
controller.isVacationDeactivated
? _imagePaths.icSwitchOff
: _imagePaths.icSwitchOn,
fit: BoxFit.fill,
width: 24,
height: 24)
);
}),
const SizedBox(width: 16),
Expanded(
child: Text(AppLocalizations.of(context).vacationSettingToggleButtonAutoReply,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black)
),
)
]),
const SizedBox(height: 16),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text(
AppLocalizations.of(context).startDate,
style: TextStyle(
fontSize: 15,
const SizedBox(height: 28),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 14),
child: Column(children: [
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Opacity(
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
child: _responsiveUtils.isPortraitMobile(context)
? Column(children: [
BorderButtonField<DateTime>(
label: AppLocalizations.of(context).startDate,
value: controller.vacationPresentation.value.startDate,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: !controller.isVacationDeactivated &&
controller.vacationPresentation.value.startDateIsNull,
hintText: AppLocalizations.of(context).startDate,
tapActionCallback: (value) =>
controller.selectDate(context, DateType.start, value)),
const SizedBox(height: 18),
BorderButtonField<TimeOfDay>(
label: AppLocalizations.of(context).startTime,
value: controller.vacationPresentation.value.startTime,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: !controller.isVacationDeactivated &&
controller.vacationPresentation.value.starTimeIsNull,
hintText: AppLocalizations.of(context).noStartTime,
tapActionCallback: (value) =>
controller.selectTime(context, DateType.start, value)),
])
: Row(children: [
Expanded(child: BorderButtonField<DateTime>(
label: AppLocalizations.of(context).startDate,
value: controller.vacationPresentation.value.startDate,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: !controller.isVacationDeactivated &&
controller.vacationPresentation.value.startDateIsNull,
hintText: AppLocalizations.of(context).startDate,
tapActionCallback: (value) =>
controller.selectDate(context, DateType.start, value))),
const SizedBox(width: 24),
Expanded(child: BorderButtonField<TimeOfDay>(
label: AppLocalizations.of(context).startTime,
value: controller.vacationPresentation.value.startTime,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: !controller.isVacationDeactivated &&
controller.vacationPresentation.value.starTimeIsNull,
hintText: AppLocalizations.of(context).noStartTime,
tapActionCallback: (value) =>
controller.selectTime(context, DateType.start, value))),
]),
),
)),
const SizedBox(height: 24),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Opacity(
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
child: Row(children: [
Obx(() => InkWell(
onTap: () {
final value = !controller.vacationPresentation.value.vacationStopEnabled;
controller.updateVacationPresentation(vacationStopEnabled: value);
},
child: SvgPicture.asset(
controller.vacationPresentation.value.vacationStopEnabled
? _imagePaths.icSwitchOn
: _imagePaths.icSwitchOff,
fit: BoxFit.fill,
width: 24,
height: 24)
)
),
const SizedBox(width: 16),
Expanded(
child: Text(AppLocalizations.of(context).vacationStopsAt,
style: const TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black)
),
)
]),
)
)),
const SizedBox(height: 24),
Obx(() => AbsorbPointer(
absorbing: !controller.canChangeEndDate,
child: Opacity(
opacity: !controller.canChangeEndDate ? 0.3 : 1.0,
child: _responsiveUtils.isPortraitMobile(context)
? Column(children: [
BorderButtonField<DateTime>(
label: AppLocalizations.of(context).endDate,
value: controller.vacationPresentation.value.endDate,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: controller.canChangeEndDate &&
controller.vacationPresentation.value.endDateIsNull,
hintText: AppLocalizations.of(context).noEndDate,
tapActionCallback: (value) =>
controller.selectDate(context, DateType.end, value)),
const SizedBox(height: 18),
BorderButtonField<TimeOfDay>(
label: AppLocalizations.of(context).endTime,
value: controller.vacationPresentation.value.endTime,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: controller.canChangeEndDate &&
controller.vacationPresentation.value.endTimeIsNull,
hintText: AppLocalizations.of(context).noEndTime,
tapActionCallback: (value) =>
controller.selectTime(context, DateType.end, value)),
])
: Row(children: [
Expanded(child: BorderButtonField<DateTime>(
label: AppLocalizations.of(context).endDate,
value: controller.vacationPresentation.value.endDate,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: controller.canChangeEndDate &&
controller.vacationPresentation.value.endDateIsNull,
hintText: AppLocalizations.of(context).noEndDate,
tapActionCallback: (value) =>
controller.selectDate(context, DateType.end, value))),
const SizedBox(width: 24),
Expanded(child: BorderButtonField<TimeOfDay>(
label: AppLocalizations.of(context).endTime,
value: controller.vacationPresentation.value.endTime,
mouseCursor: SystemMouseCursors.text,
backgroundColor: AppColor.colorBackgroundVacationSettingField,
isEmpty: controller.canChangeEndDate &&
controller.vacationPresentation.value.endTimeIsNull,
hintText: AppLocalizations.of(context).noEndTime,
tapActionCallback: (value) =>
controller.selectTime(context, DateType.end, value))),
]),
)
)),
const SizedBox(height: 24),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: _responsiveUtils.isPortraitMobile(context)
? Opacity(
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
child: TextInputFieldBuilder(
label: AppLocalizations.of(context).subject,
hint: AppLocalizations.of(context).hintSubjectInputVacationSetting,
editingController: controller.subjectTextController),
)
: Row(children: [
Expanded(child: Opacity(
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
child: TextInputFieldBuilder(
label: AppLocalizations.of(context).subject,
hint: AppLocalizations.of(context).hintSubjectInputVacationSetting,
editingController: controller.subjectTextController),
)),
const SizedBox(width: 24),
const Expanded(child: SizedBox.shrink())
])
)),
const SizedBox(height: 24),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Opacity(
opacity: controller.isVacationDeactivated ? 0.3 : 1.0,
child: TextInputFieldBuilder(
label: AppLocalizations.of(context).message,
hint: AppLocalizations.of(context).hintMessageBodyVacation,
minLines: 10,
maxLines: null,
inputType: TextInputType.multiline,
backgroundColor: Colors.white,
error: controller.isVacationDeactivated
? null
: controller.errorMessageBody.value,
onChangeInputAction: (value) => controller.updateMessageBody(context, value),
editingController: controller.messageTextController),
),
)),
const SizedBox(height: 24),
Align(
alignment: Alignment.centerRight,
child: buildTextButton(
AppLocalizations.of(context).saveChanges,
textStyle: const TextStyle(
color: Colors.white,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0))),
const SizedBox(height: 16),
Row(children: [
Expanded(child: Obx(() => BorderButtonField<DateTime>(
value: controller.vacationPresentation.value.startDate,
mouseCursor: SystemMouseCursors.text,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).startDate,
icon: SvgPicture.asset(_imagePaths.icCalendar),
tapActionCallback: (value) =>
controller.selectDate(context, DateType.start, value)))),
const SizedBox(width: 16),
Expanded(child: Obx(() => BorderButtonField<TimeOfDay>(
value: controller.vacationPresentation.value.startTime,
mouseCursor: SystemMouseCursors.text,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).noStartTime,
icon: SvgPicture.asset(_imagePaths.icClock),
tapActionCallback: (value) =>
controller.selectTime(context, DateType.start, value))))
]),
fontSize: 16
),
width: 156,
height: 44,
radius: 10,
onTap: () => controller.saveVacation(context)),
)
]),
)),
const SizedBox(height: 16),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: CheckboxListTile(
contentPadding: EdgeInsets.zero,
activeColor: AppColor.primaryColor.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0),
controlAffinity: ListTileControlAffinity.leading,
value: controller.vacationPresentation.value.vacationStopEnabled,
onChanged: (value) =>
controller.updateVacationPresentation(vacationStopEnabled: value),
title: Text(AppLocalizations.of(context).vacationStopsAt,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0))),
),
)),
Obx(() => AbsorbPointer(
absorbing: !controller.canChangeEndDate,
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text(
AppLocalizations.of(context).endDate,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
!controller.canChangeEndDate ? 0.5 : 1.0))),
const SizedBox(height: 16),
Row(children: [
Expanded(child: Obx(() => BorderButtonField<DateTime>(
value: controller.vacationPresentation.value.endDate,
mouseCursor: SystemMouseCursors.text,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
!controller.canChangeEndDate ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).noEndDate,
icon: SvgPicture.asset(_imagePaths.icCalendar),
tapActionCallback: (value) =>
controller.selectDate(context, DateType.end, value)))),
const SizedBox(width: 16),
Expanded(child: Obx(() => BorderButtonField<TimeOfDay>(
value: controller.vacationPresentation.value.endTime,
mouseCursor: SystemMouseCursors.text,
textStyle: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
!controller.canChangeEndDate ? 0.5 : 1.0)),
hintText: AppLocalizations.of(context).noEndTime,
icon: SvgPicture.asset(_imagePaths.icClock),
tapActionCallback: (value) =>
controller.selectTime(context, DateType.end, value))))
]),
])
)),
const SizedBox(height: 16),
Obx(() => AbsorbPointer(
absorbing: controller.isVacationDeactivated,
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text(
AppLocalizations.of(context).messageBody,
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(
controller.isVacationDeactivated ? 0.5 : 1.0))),
const SizedBox(height: 16),
_buildMessageBodyWidget(
context,
controller.isVacationDeactivated ? 0.5 : 1.0)
]),
)),
const SizedBox(height: 16),
Align(
alignment: Alignment.centerRight,
child: buildTextButton(
AppLocalizations.of(context).save,
width: 128,
height: 44,
radius: 10,
onTap: () => controller.saveVacation(context)),
)
]
),
),
),
),
),
);
}
Widget _buildMessageBodyWidget(BuildContext context, double opacity) {
return Obx(() {
return (TextFieldBuilder()
..key(const Key('message_body_editor'))
..cursorColor(Colors.black)
..addController(controller.messageBodyEditorController)
..textStyle(TextStyle(
fontWeight: FontWeight.normal,
color: Colors.black.withOpacity(opacity),
fontSize: 16))
..textDecoration((VacationInputDecorationBuilder()
..setContentPadding(const EdgeInsets.symmetric(
vertical: BuildUtils.isWeb ? 16 : 12,
horizontal: 12))
..setHintStyle(TextStyle(
color: AppColor.colorHintInputCreateMailbox.withOpacity(opacity),
fontSize: 16))
..setErrorText(controller.isVacationDeactivated
? null
: controller.errorMessageBody.value)
..setHintText(AppLocalizations
.of(context)
.hintMessageBodyVacation))
.build())
..onChange((value) => controller.updateMessageBody(context, value))
..minLines(10)
..maxLines(null))
.build();
});
}
}
+40 -10
View File
@@ -1,5 +1,5 @@
{
"@@last_modified": "2022-09-09T11:02:43.750933",
"@@last_modified": "2022-09-09T19:10:45.099202",
"initializing_data": "Initializing data...",
"@initializing_data": {
"type": "text",
@@ -1906,12 +1906,6 @@
"placeholders_order": [],
"placeholders": {}
},
"vacationResponder": "Vacation responder",
"@vacationResponder": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"activated": "Activated",
"@activated": {
"type": "text",
@@ -1942,13 +1936,13 @@
"placeholders_order": [],
"placeholders": {}
},
"messageBody": "Message body",
"@messageBody": {
"message": "Message",
"@message": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"hintMessageBodyVacation": "Start writing your vacation message here",
"hintMessageBodyVacation": "Vacation messages",
"@hintMessageBodyVacation": {
"type": "text",
"placeholders_order": [],
@@ -2131,5 +2125,41 @@
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"vacationSettingExplanation": "Sends an automated reply to incoming messages.",
"@vacationSettingExplanation": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"vacationSettingToggleButtonAutoReply": "Automatically reply to messages when they are received.",
"@vacationSettingToggleButtonAutoReply": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"startTime": "Start time",
"@startTime": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"endTime": "End time",
"@endTime": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"hintSubjectInputVacationSetting": "Enter subject",
"@hintSubjectInputVacationSetting": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
},
"saveChanges": "Save changes",
"@saveChanges": {
"type": "text",
"placeholders_order": [],
"placeholders": {}
}
}
+44 -11
View File
@@ -1960,13 +1960,6 @@ class AppLocalizations {
);
}
String get vacationResponder {
return Intl.message(
'Vacation responder',
name: 'vacationResponder',
);
}
String get activated {
return Intl.message(
'Activated',
@@ -2002,16 +1995,16 @@ class AppLocalizations {
);
}
String get messageBody {
String get message {
return Intl.message(
'Message body',
name: 'messageBody',
'Message',
name: 'message',
);
}
String get hintMessageBodyVacation {
return Intl.message(
'Start writing your vacation message here',
'Vacation messages',
name: 'hintMessageBodyVacation',
);
}
@@ -2197,4 +2190,44 @@ class AppLocalizations {
'You have not filled in the information completely.',
name: 'toastErrorMessageWhenCreateNewRule');
}
String get vacationSettingExplanation {
return Intl.message(
'Sends an automated reply to incoming messages.',
name: 'vacationSettingExplanation');
}
String get vacationSettingToggleButtonAutoReply {
return Intl.message(
'Automatically reply to messages when they are received.',
name: 'vacationSettingToggleButtonAutoReply');
}
String get startTime {
return Intl.message(
'Start time',
name: 'startTime',
);
}
String get endTime {
return Intl.message(
'End time',
name: 'endTime',
);
}
String get hintSubjectInputVacationSetting {
return Intl.message(
'Enter subject',
name: 'hintSubjectInputVacationSetting',
);
}
String get saveChanges {
return Intl.message(
'Save changes',
name: 'saveChanges',
);
}
}