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;
Future<void> showLinkToPageMenu(
EditorState editorState,
SelectionMenuService menuService,
ViewLayoutPB pageType,
) async {
SelectionMenuService menuService, {
ViewLayoutPB? pageType,
bool? insertPage,
}) async {
keepEditorFocusNotifier.increase();
menuService.dismiss();
@ -31,7 +32,7 @@ Future<void> showLinkToPageMenu(
currentViewId: '',
viewLayout: pageType,
customTitle: titleFromPageType(pageType),
insertPage: pageType != ViewLayoutPB.Document,
insertPage: insertPage ?? pageType != ViewLayoutPB.Document,
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.Document => LocaleKeys.inlineActions_docReference.tr(),
ViewLayoutPB.Board => LocaleKeys.inlineActions_boardReference.tr(),

View File

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

View File

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