From 5a047b9d2dfde3c623fb6358e39c7042a28023e2 Mon Sep 17 00:00:00 2001 From: Mathias Mogensen <42929161+Xazin@users.noreply.github.com> Date: Thu, 31 Oct 2024 04:25:26 +0100 Subject: [PATCH] fix: add referenced page hint (#6679) --- .../document_inline_sub_page_test.dart | 12 ------ .../mention/mention_page_block.dart | 39 +++++++++++++------ .../flowy_icons/16x/referenced_page.svg | 4 ++ 3 files changed, 32 insertions(+), 23 deletions(-) create mode 100644 frontend/resources/flowy_icons/16x/referenced_page.svg diff --git a/frontend/appflowy_flutter/integration_test/desktop/document/document_inline_sub_page_test.dart b/frontend/appflowy_flutter/integration_test/desktop/document/document_inline_sub_page_test.dart index c2083009c2..ef9ef73b3c 100644 --- a/frontend/appflowy_flutter/integration_test/desktop/document/document_inline_sub_page_test.dart +++ b/frontend/appflowy_flutter/integration_test/desktop/document/document_inline_sub_page_test.dart @@ -1,6 +1,5 @@ import 'dart:io'; -import 'package:appflowy/generated/flowy_svgs.g.dart'; import 'package:appflowy/generated/locale_keys.g.dart'; import 'package:appflowy/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart'; import 'package:appflowy/workspace/presentation/home/menu/view/view_action_type.dart'; @@ -51,7 +50,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); // Delete from editor await tester.editor.updateSelection( @@ -125,7 +123,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); // Cut from editor await tester.editor.updateSelection( @@ -151,7 +148,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); // Cut again await tester.editor.updateSelection( @@ -195,7 +191,6 @@ void main() { await tester.pumpAndSettle(); expect(find.text(_createdPageName), findsNWidgets(2)); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); }); testWidgets( 'Cut+paste in same docuemnt and then paste again in same document', @@ -214,7 +209,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); // Cut from editor await tester.editor.updateSelection( @@ -240,7 +234,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); // Paste again await tester.simulateKeyEvent( @@ -252,7 +245,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsNWidgets(2)); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsNWidgets(2)); expect(find.text('$_createdPageName (copy)'), findsNWidgets(2)); }); @@ -271,7 +263,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); final headingText = LocaleKeys.document_slashMenu_name_heading1.tr(); final paragraphText = LocaleKeys.document_slashMenu_name_text.tr(); @@ -283,7 +274,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); // Turn into paragraph await tester.editor.openTurnIntoMenu([0]); @@ -292,7 +282,6 @@ void main() { expect(find.text(_createdPageName), findsNWidgets(2)); expect(find.byType(MentionSubPageBlock), findsOneWidget); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsOneWidget); }); testWidgets('Duplicate a block containing two sub page mentions', @@ -331,7 +320,6 @@ void main() { expect(find.text(_createdPageName), findsOneWidget); expect(find.text("$_createdPageName (copy)"), findsOneWidget); expect(find.byType(MentionSubPageBlock), findsNWidgets(2)); - expect(find.byFlowySvg(FlowySvgs.child_page_s), findsNWidgets(2)); // Duplicate node from block action menu await tester.editor.hoverAndClickOptionMenuButton([0]); diff --git a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart index 8e45b5f11d..7535d38852 100644 --- a/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart +++ b/frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart @@ -11,6 +11,7 @@ import 'package:appflowy/startup/startup.dart'; import 'package:appflowy/workspace/application/action_navigation/action_navigation_bloc.dart'; import 'package:appflowy/workspace/application/action_navigation/navigation_action.dart'; import 'package:appflowy/workspace/application/view/prelude.dart'; +import 'package:appflowy/workspace/application/view/view_ext.dart'; import 'package:appflowy/workspace/presentation/home/menu/menu_shared_state.dart'; import 'package:appflowy_backend/protobuf/flowy-folder/protobuf.dart'; import 'package:appflowy_editor/appflowy_editor.dart' @@ -408,7 +409,7 @@ class _MentionPageBlockContent extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ ..._buildPrefixIcons(context, view, content, isChildPage), - const HSpace(2), + const HSpace(4), Flexible( child: FlowyText( text, @@ -465,17 +466,33 @@ class _MentionPageBlockContent extends StatelessWidget { } else if (shouldDisplayViewName) { return [ const HSpace(4), - view.icon.value.isNotEmpty - ? FlowyText.emoji( - view.icon.value, - fontSize: emojiSize, - lineHeight: textStyle?.height, - optimizeEmojiAlign: true, - ) - : FlowySvg( - isChildPage ? FlowySvgs.child_page_s : FlowySvgs.link_to_page_s, - size: Size.square(iconSize + 2.0), + Stack( + children: [ + view.icon.value.isNotEmpty + ? FlowyText.emoji( + view.icon.value, + fontSize: emojiSize, + lineHeight: textStyle?.height, + optimizeEmojiAlign: true, + color: AFThemeExtension.of(context).strongText, + ) + : FlowySvg( + view.layout.icon, + size: Size.square(iconSize + 2.0), + color: AFThemeExtension.of(context).strongText, + ), + if (!isChildPage) ...[ + const Positioned( + right: 0, + bottom: 0, + child: FlowySvg( + FlowySvgs.referenced_page_s, + blendMode: BlendMode.dstIn, + ), ), + ], + ], + ), ]; } diff --git a/frontend/resources/flowy_icons/16x/referenced_page.svg b/frontend/resources/flowy_icons/16x/referenced_page.svg new file mode 100644 index 0000000000..802212ac98 --- /dev/null +++ b/frontend/resources/flowy_icons/16x/referenced_page.svg @@ -0,0 +1,4 @@ + + + +