feat: enable link to database in slash menu (#6673)

* feat: enable link to database in slash menu

* test: add link to page test

* test: remove improper test
This commit is contained in:
Lucas 2024-10-31 14:12:19 +08:00 committed by GitHub
parent e6357a9d6c
commit 74c757d0c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 49 additions and 20 deletions

View File

@ -11,9 +11,10 @@ import 'package:flutter/material.dart';
InlineActionsMenuService? _actionsMenuService; InlineActionsMenuService? _actionsMenuService;
Future<void> showLinkToPageMenu( Future<void> showLinkToPageMenu(
EditorState editorState, EditorState editorState,
SelectionMenuService menuService, SelectionMenuService menuService, {
ViewLayoutPB pageType, ViewLayoutPB? pageType,
) async { bool? insertPage,
}) async {
keepEditorFocusNotifier.increase(); keepEditorFocusNotifier.increase();
menuService.dismiss(); menuService.dismiss();
@ -31,7 +32,7 @@ Future<void> showLinkToPageMenu(
currentViewId: '', currentViewId: '',
viewLayout: pageType, viewLayout: pageType,
customTitle: titleFromPageType(pageType), customTitle: titleFromPageType(pageType),
insertPage: pageType != ViewLayoutPB.Document, insertPage: insertPage ?? pageType != ViewLayoutPB.Document,
limitResults: 15, limitResults: 15,
), ),
], ],
@ -63,7 +64,7 @@ Future<void> showLinkToPageMenu(
} }
} }
String titleFromPageType(ViewLayoutPB layout) => switch (layout) { String titleFromPageType(ViewLayoutPB? layout) => switch (layout) {
ViewLayoutPB.Grid => LocaleKeys.inlineActions_gridReference.tr(), ViewLayoutPB.Grid => LocaleKeys.inlineActions_gridReference.tr(),
ViewLayoutPB.Document => LocaleKeys.inlineActions_docReference.tr(), ViewLayoutPB.Document => LocaleKeys.inlineActions_docReference.tr(),
ViewLayoutPB.Board => LocaleKeys.inlineActions_boardReference.tr(), ViewLayoutPB.Board => LocaleKeys.inlineActions_boardReference.tr(),

View File

@ -16,8 +16,11 @@ SelectionMenuItem referencedDocumentMenuItem = SelectionMenuItem(
style: style, style: style,
), ),
keywords: ['page', 'notes', 'referenced page', 'referenced document'], keywords: ['page', 'notes', 'referenced page', 'referenced document'],
handler: (editorState, menuService, context) => handler: (editorState, menuService, context) => showLinkToPageMenu(
showLinkToPageMenu(editorState, menuService, ViewLayoutPB.Document), editorState,
menuService,
pageType: ViewLayoutPB.Document,
),
); );
// Database References // Database References
@ -30,8 +33,11 @@ SelectionMenuItem referencedGridMenuItem = SelectionMenuItem(
style: style, style: style,
), ),
keywords: ['referenced', 'grid', 'database'], keywords: ['referenced', 'grid', 'database'],
handler: (editorState, menuService, context) => handler: (editorState, menuService, context) => showLinkToPageMenu(
showLinkToPageMenu(editorState, menuService, ViewLayoutPB.Grid), editorState,
menuService,
pageType: ViewLayoutPB.Grid,
),
); );
SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem( SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem(
@ -42,8 +48,11 @@ SelectionMenuItem referencedBoardMenuItem = SelectionMenuItem(
style: style, style: style,
), ),
keywords: ['referenced', 'board', 'kanban'], keywords: ['referenced', 'board', 'kanban'],
handler: (editorState, menuService, context) => handler: (editorState, menuService, context) => showLinkToPageMenu(
showLinkToPageMenu(editorState, menuService, ViewLayoutPB.Board), editorState,
menuService,
pageType: ViewLayoutPB.Board,
),
); );
SelectionMenuItem referencedCalendarMenuItem = SelectionMenuItem( SelectionMenuItem referencedCalendarMenuItem = SelectionMenuItem(
@ -54,6 +63,9 @@ SelectionMenuItem referencedCalendarMenuItem = SelectionMenuItem(
style: style, style: style,
), ),
keywords: ['referenced', 'calendar', 'database'], keywords: ['referenced', 'calendar', 'database'],
handler: (editorState, menuService, context) => handler: (editorState, menuService, context) => showLinkToPageMenu(
showLinkToPageMenu(editorState, menuService, ViewLayoutPB.Calendar), editorState,
menuService,
pageType: ViewLayoutPB.Calendar,
),
); );

View File

@ -326,12 +326,19 @@ final referencedDocSlashMenuItem = SelectionMenuItem(
'notes', 'notes',
'referenced page', 'referenced page',
'referenced document', 'referenced document',
'referenced database',
'link to database',
'link to document',
'link to page', 'link to page',
'link to grid',
'link to board',
'link to calendar',
], ],
handler: (editorState, menuService, context) => showLinkToPageMenu( handler: (editorState, menuService, context) => showLinkToPageMenu(
editorState, editorState,
menuService, menuService,
ViewLayoutPB.Document, // enable database and document references
insertPage: false,
), ),
); );
@ -345,8 +352,11 @@ SelectionMenuItem referencedGridSlashMenuItem = SelectionMenuItem(
style: style, style: style,
), ),
keywords: ['referenced', 'grid', 'database', 'linked'], keywords: ['referenced', 'grid', 'database', 'linked'],
handler: (editorState, menuService, context) => handler: (editorState, menuService, context) => showLinkToPageMenu(
showLinkToPageMenu(editorState, menuService, ViewLayoutPB.Grid), editorState,
menuService,
pageType: ViewLayoutPB.Grid,
),
); );
SelectionMenuItem referencedKanbanSlashMenuItem = SelectionMenuItem( SelectionMenuItem referencedKanbanSlashMenuItem = SelectionMenuItem(
@ -358,8 +368,11 @@ SelectionMenuItem referencedKanbanSlashMenuItem = SelectionMenuItem(
style: style, style: style,
), ),
keywords: ['referenced', 'board', 'kanban', 'linked'], keywords: ['referenced', 'board', 'kanban', 'linked'],
handler: (editorState, menuService, context) => handler: (editorState, menuService, context) => showLinkToPageMenu(
showLinkToPageMenu(editorState, menuService, ViewLayoutPB.Board), editorState,
menuService,
pageType: ViewLayoutPB.Board,
),
); );
SelectionMenuItem referencedCalendarSlashMenuItem = SelectionMenuItem( SelectionMenuItem referencedCalendarSlashMenuItem = SelectionMenuItem(
@ -371,8 +384,11 @@ SelectionMenuItem referencedCalendarSlashMenuItem = SelectionMenuItem(
style: style, style: style,
), ),
keywords: ['referenced', 'calendar', 'database', 'linked'], keywords: ['referenced', 'calendar', 'database', 'linked'],
handler: (editorState, menuService, context) => handler: (editorState, menuService, context) => showLinkToPageMenu(
showLinkToPageMenu(editorState, menuService, ViewLayoutPB.Calendar), editorState,
menuService,
pageType: ViewLayoutPB.Calendar,
),
); );
// callout menu item // callout menu item