TF-2560 Fix cannot close composer when recipient input focused
Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
@@ -157,47 +157,45 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
margin: ComposerStyle.mobileSubjectMargin,
|
margin: ComposerStyle.mobileSubjectMargin,
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: LayoutBuilder(builder: (context, constraints) {
|
child: Stack(
|
||||||
return Stack(
|
children: [
|
||||||
children: [
|
Padding(
|
||||||
Padding(
|
padding: ComposerStyle.mobileEditorPadding,
|
||||||
padding: ComposerStyle.mobileEditorPadding,
|
child: Obx(() => WebEditorView(
|
||||||
child: Obx(() => WebEditorView(
|
editorController: controller.richTextWebController.editorController,
|
||||||
editorController: controller.richTextWebController.editorController,
|
arguments: controller.composerArguments.value,
|
||||||
arguments: controller.composerArguments.value,
|
contentViewState: controller.emailContentsViewState.value,
|
||||||
contentViewState: controller.emailContentsViewState.value,
|
currentWebContent: controller.textEditorWeb,
|
||||||
currentWebContent: controller.textEditorWeb,
|
onInitial: controller.handleInitHtmlEditorWeb,
|
||||||
onInitial: controller.handleInitHtmlEditorWeb,
|
onChangeContent: controller.onChangeTextEditorWeb,
|
||||||
onChangeContent: controller.onChangeTextEditorWeb,
|
onFocus: controller.handleOnFocusHtmlEditorWeb,
|
||||||
onFocus: controller.handleOnFocusHtmlEditorWeb,
|
onUnFocus: controller.handleOnUnFocusHtmlEditorWeb,
|
||||||
onUnFocus: controller.handleOnUnFocusHtmlEditorWeb,
|
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
|
||||||
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
|
onEditorSettings: controller.richTextWebController.onEditorSettingsChange,
|
||||||
onEditorSettings: controller.richTextWebController.onEditorSettingsChange,
|
onImageUploadSuccessAction: (fileUpload) => controller.handleImageUploadSuccess(context, fileUpload),
|
||||||
onImageUploadSuccessAction: (fileUpload) => controller.handleImageUploadSuccess(context, fileUpload),
|
onImageUploadFailureAction: (fileUpload, base64Str, uploadError) {
|
||||||
onImageUploadFailureAction: (fileUpload, base64Str, uploadError) {
|
return controller.handleImageUploadFailure(
|
||||||
return controller.handleImageUploadFailure(
|
context: context,
|
||||||
context: context,
|
uploadError: uploadError,
|
||||||
uploadError: uploadError,
|
fileUpload: fileUpload,
|
||||||
fileUpload: fileUpload,
|
base64Str: base64Str,
|
||||||
base64Str: base64Str,
|
);
|
||||||
);
|
},
|
||||||
},
|
onEditorTextSizeChanged: controller.richTextWebController.onEditorTextSizeChanged,
|
||||||
onEditorTextSizeChanged: controller.richTextWebController.onEditorTextSizeChanged,
|
width: constraints.maxWidth,
|
||||||
width: constraints.maxWidth,
|
height: constraints.maxHeight,
|
||||||
height: constraints.maxHeight,
|
)),
|
||||||
)),
|
),
|
||||||
),
|
Align(
|
||||||
Align(
|
alignment: AlignmentDirectional.topCenter,
|
||||||
alignment: AlignmentDirectional.topCenter,
|
child: Obx(() => InsertImageLoadingBarWidget(
|
||||||
child: Obx(() => InsertImageLoadingBarWidget(
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
viewState: controller.viewState.value,
|
||||||
viewState: controller.viewState.value,
|
padding: ComposerStyle.insertImageLoadingBarPadding,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
)),
|
||||||
)),
|
),
|
||||||
),
|
],
|
||||||
],
|
),
|
||||||
);
|
|
||||||
}),
|
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
||||||
@@ -217,8 +215,8 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
richTextWebController: controller.richTextWebController,
|
richTextWebController: controller.richTextWebController,
|
||||||
padding: ComposerStyle.richToolbarPadding,
|
padding: ComposerStyle.richToolbarPadding,
|
||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
color: ComposerStyle.richToolbarColor,
|
color: ComposerStyle.richToolbarColor,
|
||||||
boxShadow: ComposerStyle.richToolbarShadow
|
boxShadow: ComposerStyle.richToolbarShadow
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@@ -351,93 +349,91 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
),
|
),
|
||||||
color: ComposerStyle.backgroundEditorColor
|
color: ComposerStyle.backgroundEditorColor
|
||||||
),
|
),
|
||||||
child: LayoutBuilder(builder: (context, constraints) {
|
child: Stack(
|
||||||
return Stack(
|
children: [
|
||||||
children: [
|
Column(
|
||||||
Column(
|
children: [
|
||||||
children: [
|
Expanded(
|
||||||
Expanded(
|
child: Padding(
|
||||||
child: Padding(
|
padding: ComposerStyle.desktopEditorPadding,
|
||||||
padding: ComposerStyle.desktopEditorPadding,
|
child: Obx(() {
|
||||||
child: Obx(() {
|
return Stack(
|
||||||
return Stack(
|
children: [
|
||||||
children: [
|
WebEditorView(
|
||||||
WebEditorView(
|
editorController: controller.richTextWebController.editorController,
|
||||||
editorController: controller.richTextWebController.editorController,
|
arguments: controller.composerArguments.value,
|
||||||
arguments: controller.composerArguments.value,
|
contentViewState: controller.emailContentsViewState.value,
|
||||||
contentViewState: controller.emailContentsViewState.value,
|
currentWebContent: controller.textEditorWeb,
|
||||||
currentWebContent: controller.textEditorWeb,
|
onInitial: controller.handleInitHtmlEditorWeb,
|
||||||
onInitial: controller.handleInitHtmlEditorWeb,
|
onChangeContent: controller.onChangeTextEditorWeb,
|
||||||
onChangeContent: controller.onChangeTextEditorWeb,
|
onFocus: controller.handleOnFocusHtmlEditorWeb,
|
||||||
onFocus: controller.handleOnFocusHtmlEditorWeb,
|
onUnFocus: controller.handleOnUnFocusHtmlEditorWeb,
|
||||||
onUnFocus: controller.handleOnUnFocusHtmlEditorWeb,
|
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
|
||||||
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
|
onEditorSettings: controller.richTextWebController.onEditorSettingsChange,
|
||||||
onEditorSettings: controller.richTextWebController.onEditorSettingsChange,
|
onImageUploadSuccessAction: (fileUpload) => controller.handleImageUploadSuccess(context, fileUpload),
|
||||||
onImageUploadSuccessAction: (fileUpload) => controller.handleImageUploadSuccess(context, fileUpload),
|
onImageUploadFailureAction: (fileUpload, base64Str, uploadError) {
|
||||||
onImageUploadFailureAction: (fileUpload, base64Str, uploadError) {
|
return controller.handleImageUploadFailure(
|
||||||
return controller.handleImageUploadFailure(
|
context: context,
|
||||||
context: context,
|
uploadError: uploadError,
|
||||||
uploadError: uploadError,
|
fileUpload: fileUpload,
|
||||||
fileUpload: fileUpload,
|
base64Str: base64Str,
|
||||||
base64Str: base64Str,
|
);
|
||||||
);
|
},
|
||||||
},
|
onEditorTextSizeChanged: controller.richTextWebController.onEditorTextSizeChanged,
|
||||||
onEditorTextSizeChanged: controller.richTextWebController.onEditorTextSizeChanged,
|
width: constraints.maxWidth,
|
||||||
width: constraints.maxWidth,
|
height: constraints.maxHeight,
|
||||||
height: constraints.maxHeight,
|
),
|
||||||
),
|
if (controller.mailboxDashBoardController.isDraggableAppActive)
|
||||||
if (controller.mailboxDashBoardController.isDraggableAppActive)
|
PointerInterceptor(
|
||||||
PointerInterceptor(
|
child: DropZoneWidget(
|
||||||
child: DropZoneWidget(
|
width: constraints.maxWidth,
|
||||||
width: constraints.maxWidth,
|
height: constraints.maxHeight,
|
||||||
height: constraints.maxHeight,
|
addAttachmentFromDropZone: controller.addAttachmentFromDropZone,
|
||||||
addAttachmentFromDropZone: controller.addAttachmentFromDropZone,
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
],
|
)
|
||||||
);
|
],
|
||||||
}),
|
);
|
||||||
),
|
}),
|
||||||
),
|
),
|
||||||
Obx(() {
|
),
|
||||||
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
Obx(() {
|
||||||
return AttachmentComposerWidget(
|
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
||||||
listFileUploaded: controller.uploadController.listUploadAttachments,
|
return AttachmentComposerWidget(
|
||||||
isCollapsed: controller.isAttachmentCollapsed,
|
listFileUploaded: controller.uploadController.listUploadAttachments,
|
||||||
onDeleteAttachmentAction: (fileState) => controller.deleteAttachmentUploaded(fileState.uploadTaskId),
|
isCollapsed: controller.isAttachmentCollapsed,
|
||||||
onToggleExpandAttachmentAction: (isCollapsed) => controller.isAttachmentCollapsed = isCollapsed,
|
onDeleteAttachmentAction: (fileState) => controller.deleteAttachmentUploaded(fileState.uploadTaskId),
|
||||||
);
|
onToggleExpandAttachmentAction: (isCollapsed) => controller.isAttachmentCollapsed = isCollapsed,
|
||||||
} else {
|
);
|
||||||
return const SizedBox.shrink();
|
} else {
|
||||||
}
|
return const SizedBox.shrink();
|
||||||
}),
|
}
|
||||||
Obx(() {
|
}),
|
||||||
if (controller.richTextWebController.isFormattingOptionsEnabled) {
|
Obx(() {
|
||||||
return ToolbarRichTextWebBuilder(
|
if (controller.richTextWebController.isFormattingOptionsEnabled) {
|
||||||
richTextWebController: controller.richTextWebController,
|
return ToolbarRichTextWebBuilder(
|
||||||
padding: ComposerStyle.richToolbarPadding,
|
richTextWebController: controller.richTextWebController,
|
||||||
decoration: const BoxDecoration(
|
padding: ComposerStyle.richToolbarPadding,
|
||||||
color: ComposerStyle.richToolbarColor,
|
decoration: const BoxDecoration(
|
||||||
boxShadow: ComposerStyle.richToolbarShadow
|
color: ComposerStyle.richToolbarColor,
|
||||||
),
|
boxShadow: ComposerStyle.richToolbarShadow
|
||||||
);
|
),
|
||||||
} else {
|
);
|
||||||
return const SizedBox.shrink();
|
} else {
|
||||||
}
|
return const SizedBox.shrink();
|
||||||
})
|
}
|
||||||
],
|
})
|
||||||
),
|
],
|
||||||
Align(
|
),
|
||||||
alignment: AlignmentDirectional.topCenter,
|
Align(
|
||||||
child: Obx(() => InsertImageLoadingBarWidget(
|
alignment: AlignmentDirectional.topCenter,
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
child: Obx(() => InsertImageLoadingBarWidget(
|
||||||
viewState: controller.viewState.value,
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
viewState: controller.viewState.value,
|
||||||
)),
|
padding: ComposerStyle.insertImageLoadingBarPadding,
|
||||||
),
|
)),
|
||||||
],
|
),
|
||||||
);
|
],
|
||||||
}),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Obx(() => BottomBarComposerWidget(
|
Obx(() => BottomBarComposerWidget(
|
||||||
@@ -584,79 +580,77 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
),
|
),
|
||||||
color: ComposerStyle.backgroundEditorColor
|
color: ComposerStyle.backgroundEditorColor
|
||||||
),
|
),
|
||||||
child: LayoutBuilder(builder: (context, constraints) {
|
child: Stack(
|
||||||
return Stack(
|
children: [
|
||||||
children: [
|
Column(
|
||||||
Column(
|
children: [
|
||||||
children: [
|
Expanded(
|
||||||
Expanded(
|
child: Padding(
|
||||||
child: Padding(
|
padding: ComposerStyle.tabletEditorPadding,
|
||||||
padding: ComposerStyle.tabletEditorPadding,
|
child: Obx(() => WebEditorView(
|
||||||
child: Obx(() => WebEditorView(
|
editorController: controller.richTextWebController.editorController,
|
||||||
editorController: controller.richTextWebController.editorController,
|
arguments: controller.composerArguments.value,
|
||||||
arguments: controller.composerArguments.value,
|
contentViewState: controller.emailContentsViewState.value,
|
||||||
contentViewState: controller.emailContentsViewState.value,
|
currentWebContent: controller.textEditorWeb,
|
||||||
currentWebContent: controller.textEditorWeb,
|
onInitial: controller.handleInitHtmlEditorWeb,
|
||||||
onInitial: controller.handleInitHtmlEditorWeb,
|
onChangeContent: controller.onChangeTextEditorWeb,
|
||||||
onChangeContent: controller.onChangeTextEditorWeb,
|
onFocus: controller.handleOnFocusHtmlEditorWeb,
|
||||||
onFocus: controller.handleOnFocusHtmlEditorWeb,
|
onUnFocus: controller.handleOnUnFocusHtmlEditorWeb,
|
||||||
onUnFocus: controller.handleOnUnFocusHtmlEditorWeb,
|
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
|
||||||
onMouseDown: controller.handleOnMouseDownHtmlEditorWeb,
|
onEditorSettings: controller.richTextWebController.onEditorSettingsChange,
|
||||||
onEditorSettings: controller.richTextWebController.onEditorSettingsChange,
|
onImageUploadSuccessAction: (fileUpload) => controller.handleImageUploadSuccess(context, fileUpload),
|
||||||
onImageUploadSuccessAction: (fileUpload) => controller.handleImageUploadSuccess(context, fileUpload),
|
onImageUploadFailureAction: (fileUpload, base64Str, uploadError) {
|
||||||
onImageUploadFailureAction: (fileUpload, base64Str, uploadError) {
|
return controller.handleImageUploadFailure(
|
||||||
return controller.handleImageUploadFailure(
|
context: context,
|
||||||
context: context,
|
uploadError: uploadError,
|
||||||
uploadError: uploadError,
|
fileUpload: fileUpload,
|
||||||
fileUpload: fileUpload,
|
base64Str: base64Str,
|
||||||
base64Str: base64Str,
|
);
|
||||||
);
|
},
|
||||||
},
|
onEditorTextSizeChanged: controller.richTextWebController.onEditorTextSizeChanged,
|
||||||
onEditorTextSizeChanged: controller.richTextWebController.onEditorTextSizeChanged,
|
width: constraints.maxWidth,
|
||||||
width: constraints.maxWidth,
|
height: constraints.maxHeight,
|
||||||
height: constraints.maxHeight,
|
)),
|
||||||
)),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Obx(() {
|
),
|
||||||
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
Obx(() {
|
||||||
return AttachmentComposerWidget(
|
if (controller.uploadController.listUploadAttachments.isNotEmpty) {
|
||||||
listFileUploaded: controller.uploadController.listUploadAttachments,
|
return AttachmentComposerWidget(
|
||||||
isCollapsed: controller.isAttachmentCollapsed,
|
listFileUploaded: controller.uploadController.listUploadAttachments,
|
||||||
onDeleteAttachmentAction: (fileState) => controller.deleteAttachmentUploaded(fileState.uploadTaskId),
|
isCollapsed: controller.isAttachmentCollapsed,
|
||||||
onToggleExpandAttachmentAction: (isCollapsed) => controller.isAttachmentCollapsed = isCollapsed,
|
onDeleteAttachmentAction: (fileState) => controller.deleteAttachmentUploaded(fileState.uploadTaskId),
|
||||||
);
|
onToggleExpandAttachmentAction: (isCollapsed) => controller.isAttachmentCollapsed = isCollapsed,
|
||||||
} else {
|
);
|
||||||
return const SizedBox.shrink();
|
} else {
|
||||||
}
|
return const SizedBox.shrink();
|
||||||
}),
|
}
|
||||||
Obx(() {
|
}),
|
||||||
if (controller.richTextWebController.isFormattingOptionsEnabled) {
|
Obx(() {
|
||||||
return ToolbarRichTextWebBuilder(
|
if (controller.richTextWebController.isFormattingOptionsEnabled) {
|
||||||
richTextWebController: controller.richTextWebController,
|
return ToolbarRichTextWebBuilder(
|
||||||
padding: ComposerStyle.richToolbarPadding,
|
richTextWebController: controller.richTextWebController,
|
||||||
decoration: const BoxDecoration(
|
padding: ComposerStyle.richToolbarPadding,
|
||||||
|
decoration: const BoxDecoration(
|
||||||
color: ComposerStyle.richToolbarColor,
|
color: ComposerStyle.richToolbarColor,
|
||||||
boxShadow: ComposerStyle.richToolbarShadow
|
boxShadow: ComposerStyle.richToolbarShadow
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: AlignmentDirectional.topCenter,
|
alignment: AlignmentDirectional.topCenter,
|
||||||
child: Obx(() => InsertImageLoadingBarWidget(
|
child: Obx(() => InsertImageLoadingBarWidget(
|
||||||
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
uploadInlineViewState: controller.uploadController.uploadInlineViewState.value,
|
||||||
viewState: controller.viewState.value,
|
viewState: controller.viewState.value,
|
||||||
padding: ComposerStyle.insertImageLoadingBarPadding,
|
padding: ComposerStyle.insertImageLoadingBarPadding,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
),
|
||||||
}),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Obx(() => BottomBarComposerWidget(
|
Obx(() => BottomBarComposerWidget(
|
||||||
|
|||||||
Reference in New Issue
Block a user