From 59851f46b78de58ae21b81ddf646bd3f0fb24b98 Mon Sep 17 00:00:00 2001 From: Ekaksh Janweja Date: Fri, 13 Oct 2023 21:17:49 +0530 Subject: [PATCH] feat: edit the field by clicking on the drag icon (#3656) * feat: edit the field by clicking on the drag icon * Added localization * Added .tr() function * fix: BlockActionButton only show when _isFieldHover is true. * fix: BlockActionButton only show when _isFieldHover is true. * fix: Worked on requested changes * fix: Fixed Location of Field Popover * fixed pubspec.lock * Updated pubspec.lock --------- Co-authored-by: Lucas.Xu --- .../widgets/row/row_property.dart | 22 ++++++++++++++++++- frontend/appflowy_flutter/pubspec.lock | 2 +- frontend/resources/translations/en.json | 1 + 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_property.dart b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_property.dart index ca3c2f15ed..20a274328a 100644 --- a/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_property.dart +++ b/frontend/appflowy_flutter/lib/plugins/database_view/widgets/row/row_property.dart @@ -9,6 +9,7 @@ import 'package:appflowy/plugins/database_view/grid/application/row/row_detail_b import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_cell.dart'; import 'package:appflowy/plugins/database_view/grid/presentation/widgets/header/field_editor.dart'; import 'package:appflowy/plugins/database_view/widgets/row/cells/cells.dart'; +import 'package:appflowy/plugins/document/presentation/editor_plugins/actions/block_action_button.dart'; import 'package:appflowy/workspace/presentation/widgets/dialogs.dart'; import 'package:appflowy_backend/log.dart'; import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pb.dart'; @@ -112,6 +113,7 @@ class RowPropertyList extends StatelessWidget { class _PropertyCell extends StatefulWidget { final DatabaseCellContext cellContext; final GridCellBuilder cellBuilder; + final int index; const _PropertyCell({ required this.cellContext, @@ -126,6 +128,8 @@ class _PropertyCell extends StatefulWidget { class _PropertyCellState extends State<_PropertyCell> { final PopoverController _popoverController = PopoverController(); + final PopoverController _fieldPopoverController = PopoverController(); + bool _isFieldHover = false; @override @@ -140,7 +144,23 @@ class _PropertyCellState extends State<_PropertyCell> { child: SizedBox( width: 16, height: 30, - child: _isFieldHover ? const FlowySvg(FlowySvgs.drag_element_s) : null, + child: AppFlowyPopover( + controller: _fieldPopoverController, + constraints: BoxConstraints.loose(const Size(240, 600)), + margin: EdgeInsets.zero, + triggerActions: PopoverTriggerFlags.none, + direction: PopoverDirection.bottomWithLeftAligned, + popupBuilder: (popoverContext) => buildFieldEditor(), + child: _isFieldHover + ? BlockActionButton( + onTap: () => _fieldPopoverController.show(), + svg: FlowySvgs.drag_element_s, + richMessage: TextSpan( + text: LocaleKeys.grid_rowPage_fieldDragEelementTooltip.tr(), + ), + ) + : const SizedBox.shrink(), + ), ), ); diff --git a/frontend/appflowy_flutter/pubspec.lock b/frontend/appflowy_flutter/pubspec.lock index 4ba8b3df96..09f2ae6acb 100644 --- a/frontend/appflowy_flutter/pubspec.lock +++ b/frontend/appflowy_flutter/pubspec.lock @@ -1890,4 +1890,4 @@ packages: version: "1.1.1" sdks: dart: ">=3.0.0 <4.0.0" - flutter: ">=3.10.1" + flutter: ">=3.10.1" \ No newline at end of file diff --git a/frontend/resources/translations/en.json b/frontend/resources/translations/en.json index 67e9e4d6ae..e261c509e1 100644 --- a/frontend/resources/translations/en.json +++ b/frontend/resources/translations/en.json @@ -476,6 +476,7 @@ }, "rowPage": { "newField": "Add a new field", + "fieldDragEelementTooltip": "Click to open menu", "showHiddenFields": { "one": "Show {} hidden field", "many": "Show {} hidden fields",