diff --git a/frontend/appflowy_flutter/integration_test/util/common_operations.dart b/frontend/appflowy_flutter/integration_test/util/common_operations.dart index 193d7f88a0..23fdfb8317 100644 --- a/frontend/appflowy_flutter/integration_test/util/common_operations.dart +++ b/frontend/appflowy_flutter/integration_test/util/common_operations.dart @@ -279,6 +279,7 @@ extension CommonOperations on WidgetTester { // create a new page await tapAddViewButton(name: parentName ?? gettingStarted); await tapButtonWithName(layout.menuName); + await tapOKButton(); await pumpAndSettle(); // hover on it and change it's name diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart index 3a6df0be80..e4258d9fe6 100644 --- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart +++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/folder/personal_folder.dart @@ -5,6 +5,7 @@ import 'package:appflowy/workspace/application/menu/menu_bloc.dart'; import 'package:appflowy/workspace/application/sidebar/folder/folder_bloc.dart'; import 'package:appflowy/workspace/application/tabs/tabs_bloc.dart'; import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart'; +import 'package:appflowy/workspace/presentation/widgets/dialogs.dart'; import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; @@ -117,13 +118,22 @@ class _PersonalFolderHeaderState extends State { width: iconSize, icon: const FlowySvg(FlowySvgs.add_s), onPressed: () { - context.read().add( - MenuEvent.createApp( - LocaleKeys.menuAppHeader_defaultNewPageName.tr(), - index: 0, - ), - ); - widget.onAdded(); + NavigatorTextFieldDialog( + title: LocaleKeys.newPageText.tr(), + value: '', + confirm: (value) { + if (value.isNotEmpty) { + context.read().add( + MenuEvent.createApp( + value, + index: 0, + ), + ); + + widget.onAdded(); + } + }, + ).show(context); }, ), ] diff --git a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart index 742ceba2a8..992c8f5105 100644 --- a/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart +++ b/frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart @@ -12,9 +12,9 @@ import 'package:appflowy/workspace/presentation/home/menu/view/view_action_type. import 'package:appflowy/workspace/presentation/home/menu/view/view_add_button.dart'; import 'package:appflowy/workspace/presentation/home/menu/view/view_more_action_button.dart'; import 'package:appflowy/workspace/presentation/widgets/dialogs.dart'; +import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; -import 'package:appflowy_backend/protobuf/flowy-folder2/view.pb.dart'; import 'package:flowy_infra_ui/style_widget/hover.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; @@ -350,13 +350,22 @@ class _SingleInnerViewItemState extends State { createNewView, ) { if (createNewView) { - context.read().add( - ViewEvent.createView( - name ?? LocaleKeys.menuAppHeader_defaultNewPageName.tr(), - pluginBuilder.layoutType!, - openAfterCreated: openAfterCreated, - ), - ); + NavigatorTextFieldDialog( + title: _convertLayoutToHintText(pluginBuilder.layoutType!), + value: LocaleKeys.menuAppHeader_defaultNewPageName.tr(), + autoSelectAllText: true, + confirm: (value) { + if (value.isNotEmpty) { + context.read().add( + ViewEvent.createView( + value, + pluginBuilder.layoutType!, + openAfterCreated: openAfterCreated, + ), + ); + } + }, + ).show(context); } context.read().add( const ViewEvent.setIsExpanded(true), @@ -408,6 +417,20 @@ class _SingleInnerViewItemState extends State { ), ); } + + String _convertLayoutToHintText(ViewLayoutPB layout) { + switch (layout) { + case ViewLayoutPB.Document: + return LocaleKeys.newDocumentText.tr(); + case ViewLayoutPB.Grid: + return LocaleKeys.newGridText.tr(); + case ViewLayoutPB.Board: + return LocaleKeys.newBoardText.tr(); + case ViewLayoutPB.Calendar: + return LocaleKeys.newCalendarText.tr(); + } + return LocaleKeys.newPageText.tr(); + } } class _DotIconWidget extends StatelessWidget { diff --git a/frontend/resources/translations/en.json b/frontend/resources/translations/en.json index 969d3f395f..6d1ad2283e 100644 --- a/frontend/resources/translations/en.json +++ b/frontend/resources/translations/en.json @@ -86,6 +86,10 @@ }, "blankPageTitle": "Blank page", "newPageText": "New page", + "newDocumentText": "New document", + "newGridText": "New grid", + "newCalendarText": "New calendar", + "newBoardText": "New board", "trash": { "text": "Trash", "restoreAll": "Restore All",