diff --git a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart index 8afdb15051..ed15c9703c 100644 --- a/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/board_bloc.dart @@ -138,14 +138,6 @@ class BoardBloc extends Bloc { List _buildRows(List rows) { final items = rows.map((row) { - // final rowInfo = RowInfo( - // gridId: _dataController.gridId, - // blockId: row.blockId, - // id: row.id, - // fields: _dataController.fieldCache.unmodifiableFields, - // height: row.height.toDouble(), - // rawRow: row, - // ); return BoardColumnItem(row: row); }).toList(); diff --git a/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart b/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart index 1f66ebe335..fe66825cef 100644 --- a/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart +++ b/frontend/app_flowy/lib/plugins/board/application/card/card_bloc.dart @@ -58,6 +58,17 @@ class BoardCardBloc extends Bloc { return super.close(); } + RowInfo rowInfo() { + return RowInfo( + gridId: _rowService.gridId, + blockId: _rowService.blockId, + fields: UnmodifiableListView( + state.cells.map((cell) => cell._field).toList(), + ), + rowPB: state.rowPB, + ); + } + Future _startListening() async { _dataController.addListener( onRowChanged: (cells, reason) { diff --git a/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart b/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart index 2a4006e68c..48c3f6e5d9 100644 --- a/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart +++ b/frontend/app_flowy/lib/plugins/board/presentation/card/card.dart @@ -1,9 +1,10 @@ import 'package:app_flowy/plugins/board/application/card/card_bloc.dart'; import 'package:app_flowy/plugins/board/application/card/card_data_controller.dart'; import 'package:app_flowy/plugins/grid/application/cell/cell_service/cell_service.dart'; +import 'package:app_flowy/plugins/grid/presentation/widgets/row/row_action_sheet.dart'; import 'package:flowy_infra/image.dart'; import 'package:flowy_infra/theme.dart'; -import 'package:flowy_sdk/log.dart'; +import 'package:flowy_infra_ui/flowy_infra_ui_web.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'card_cell_builder.dart'; @@ -85,6 +86,8 @@ class _CardMoreOption extends StatelessWidget with CardAccessory { @override void onTap(BuildContext context) { - Log.debug('show options'); + GridRowActionSheet( + rowData: context.read().rowInfo(), + ).show(context, direction: AnchorDirection.bottomWithCenterAligned); } } diff --git a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_action_sheet.dart b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_action_sheet.dart index 8296add94e..b4390d098f 100644 --- a/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_action_sheet.dart +++ b/frontend/app_flowy/lib/plugins/grid/presentation/widgets/row/row_action_sheet.dart @@ -53,7 +53,10 @@ class GridRowActionSheet extends StatelessWidget { ); } - void show(BuildContext overlayContext) { + void show( + BuildContext overlayContext, { + AnchorDirection direction = AnchorDirection.leftWithCenterAligned, + }) { FlowyOverlay.of(overlayContext).insertWithAnchor( widget: OverlayContainer( child: this, @@ -61,7 +64,7 @@ class GridRowActionSheet extends StatelessWidget { ), identifier: GridRowActionSheet.identifier(), anchorContext: overlayContext, - anchorDirection: AnchorDirection.leftWithCenterAligned, + anchorDirection: direction, ); } diff --git a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column_data.dart b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column_data.dart index 847f07c86e..4a04f4b662 100644 --- a/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column_data.dart +++ b/frontend/app_flowy/packages/appflowy_board/lib/src/widgets/board_column/board_column_data.dart @@ -51,8 +51,11 @@ class AFBoardColumnDataController extends ChangeNotifier with EquatableMixin { return item; } - int removeWhere(bool Function(AFColumnItem) condition) { - return items.indexWhere(condition); + void removeWhere(bool Function(AFColumnItem) condition) { + final index = items.indexWhere(condition); + if (index != -1) { + removeAt(index); + } } /// Move the item from [fromIndex] to [toIndex]. It will do nothing if the diff --git a/frontend/rust-lib/flowy-grid/src/services/block_manager.rs b/frontend/rust-lib/flowy-grid/src/services/block_manager.rs index e6ada307db..253ce65e8b 100644 --- a/frontend/rust-lib/flowy-grid/src/services/block_manager.rs +++ b/frontend/rust-lib/flowy-grid/src/services/block_manager.rs @@ -122,6 +122,7 @@ impl GridBlockManager { Ok(()) } + #[tracing::instrument(level = "trace", skip_all, err)] pub async fn delete_row(&self, row_id: &str) -> FlowyResult<()> { let row_id = row_id.to_owned(); let block_id = self.persistence.get_block_id(&row_id)?;