mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-04-25 07:07:32 -04:00
refactor: moving grid widgets used by other database view to upper level folder
* refactor: export UIs in flowy_infra_ui * refactor: move cells to upper level folder * refactor: move cell blocs
This commit is contained in:
parent
7106195d8a
commit
d3823eb076
81 changed files with 224 additions and 300 deletions
|
@ -4,7 +4,7 @@ import 'row_cache.dart';
|
||||||
|
|
||||||
typedef OnRowChanged = void Function(CellByFieldId, RowsChangedReason);
|
typedef OnRowChanged = void Function(CellByFieldId, RowsChangedReason);
|
||||||
|
|
||||||
class RowDataController {
|
class RowController {
|
||||||
final String rowId;
|
final String rowId;
|
||||||
final String viewId;
|
final String viewId;
|
||||||
final List<VoidCallback> _onRowChangedListeners = [];
|
final List<VoidCallback> _onRowChangedListeners = [];
|
||||||
|
@ -12,7 +12,7 @@ class RowDataController {
|
||||||
|
|
||||||
get cellCache => _rowCache.cellCache;
|
get cellCache => _rowCache.cellCache;
|
||||||
|
|
||||||
RowDataController({
|
RowController({
|
||||||
required this.rowId,
|
required this.rowId,
|
||||||
required this.viewId,
|
required this.viewId,
|
||||||
required RowCache rowCache,
|
required RowCache rowCache,
|
||||||
|
|
|
@ -6,8 +6,7 @@ import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
|
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
|
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
|
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/cell_builder.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/row_detail.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/row/row_detail.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart';
|
||||||
|
@ -22,6 +21,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../widgets/card/cells/card_cell.dart';
|
import '../../widgets/card/cells/card_cell.dart';
|
||||||
import '../../widgets/card/card_cell_builder.dart';
|
import '../../widgets/card/card_cell_builder.dart';
|
||||||
|
import '../../widgets/row/cell_builder.dart';
|
||||||
import '../application/board_bloc.dart';
|
import '../application/board_bloc.dart';
|
||||||
import '../../widgets/card/card.dart';
|
import '../../widgets/card/card.dart';
|
||||||
import 'toolbar/board_toolbar.dart';
|
import 'toolbar/board_toolbar.dart';
|
||||||
|
@ -312,7 +312,7 @@ class _BoardContentState extends State<BoardContent> {
|
||||||
rowPB: rowPB,
|
rowPB: rowPB,
|
||||||
);
|
);
|
||||||
|
|
||||||
final dataController = RowDataController(
|
final dataController = RowController(
|
||||||
rowId: rowInfo.rowPB.id,
|
rowId: rowInfo.rowPB.id,
|
||||||
viewId: rowInfo.viewId,
|
viewId: rowInfo.viewId,
|
||||||
rowCache: rowCache,
|
rowCache: rowCache,
|
||||||
|
|
|
@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'board_setting.dart';
|
import 'board_setting.dart';
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
|
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
|
||||||
import 'package:appflowy/plugins/database_view/calendar/application/calendar_bloc.dart';
|
import 'package:appflowy/plugins/database_view/calendar/application/calendar_bloc.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/cell_builder.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/widgets/card/card_cell_builder.dart';
|
import 'package:appflowy/plugins/database_view/widgets/card/card_cell_builder.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||||
import 'package:calendar_view/calendar_view.dart';
|
import 'package:calendar_view/calendar_view.dart';
|
||||||
|
@ -10,15 +9,14 @@ import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra/size.dart';
|
import 'package:flowy_infra/size.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/hover.dart';
|
import 'package:flowy_infra_ui/style_widget/hover.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
import '../../grid/presentation/layout/sizes.dart';
|
import '../../grid/presentation/layout/sizes.dart';
|
||||||
import '../../grid/presentation/widgets/row/row_detail.dart';
|
import '../../widgets/row/cell_builder.dart';
|
||||||
|
import '../../widgets/row/row_detail.dart';
|
||||||
import 'layout/sizes.dart';
|
import 'layout/sizes.dart';
|
||||||
import 'toolbar/calendar_toolbar.dart';
|
import 'toolbar/calendar_toolbar.dart';
|
||||||
|
|
||||||
|
@ -167,7 +165,7 @@ class _CalendarPageState extends State<CalendarPage> {
|
||||||
return FlowyHover(
|
return FlowyHover(
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
final dataController = RowDataController(
|
final dataController = RowController(
|
||||||
rowId: event.cellId.rowId,
|
rowId: event.cellId.rowId,
|
||||||
viewId: widget.view.id,
|
viewId: widget.view.id,
|
||||||
rowCache: _calendarBloc.rowCache,
|
rowCache: _calendarBloc.rowCache,
|
||||||
|
|
|
@ -14,11 +14,11 @@ part 'row_bloc.freezed.dart';
|
||||||
|
|
||||||
class RowBloc extends Bloc<RowEvent, RowState> {
|
class RowBloc extends Bloc<RowEvent, RowState> {
|
||||||
final RowBackendService _rowBackendSvc;
|
final RowBackendService _rowBackendSvc;
|
||||||
final RowDataController _dataController;
|
final RowController _dataController;
|
||||||
|
|
||||||
RowBloc({
|
RowBloc({
|
||||||
required RowInfo rowInfo,
|
required RowInfo rowInfo,
|
||||||
required RowDataController dataController,
|
required RowController dataController,
|
||||||
}) : _rowBackendSvc = RowBackendService(viewId: rowInfo.viewId),
|
}) : _rowBackendSvc = RowBackendService(viewId: rowInfo.viewId),
|
||||||
_dataController = dataController,
|
_dataController = dataController,
|
||||||
super(RowState.initial(rowInfo, dataController.loadData())) {
|
super(RowState.initial(rowInfo, dataController.loadData())) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import '../../../application/row/row_data_controller.dart';
|
||||||
part 'row_detail_bloc.freezed.dart';
|
part 'row_detail_bloc.freezed.dart';
|
||||||
|
|
||||||
class RowDetailBloc extends Bloc<RowDetailEvent, RowDetailState> {
|
class RowDetailBloc extends Bloc<RowDetailEvent, RowDetailState> {
|
||||||
final RowDataController dataController;
|
final RowController dataController;
|
||||||
|
|
||||||
RowDetailBloc({
|
RowDetailBloc({
|
||||||
required this.dataController,
|
required this.dataController,
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
|
import 'package:appflowy/plugins/database_view/widgets/row/cell_builder.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pbenum.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/setting_entities.pbenum.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui_web.dart';
|
||||||
|
@ -23,11 +24,10 @@ import 'grid_scroll.dart';
|
||||||
import 'layout/layout.dart';
|
import 'layout/layout.dart';
|
||||||
import 'layout/sizes.dart';
|
import 'layout/sizes.dart';
|
||||||
import 'widgets/accessory_menu.dart';
|
import 'widgets/accessory_menu.dart';
|
||||||
import 'widgets/cell/cell_builder.dart';
|
import 'widgets/row/row.dart';
|
||||||
import 'widgets/row/grid_row.dart';
|
|
||||||
import 'widgets/footer/grid_footer.dart';
|
import 'widgets/footer/grid_footer.dart';
|
||||||
import 'widgets/header/grid_header.dart';
|
import 'widgets/header/grid_header.dart';
|
||||||
import 'widgets/row/row_detail.dart';
|
import '../../widgets/row/row_detail.dart';
|
||||||
import 'widgets/shortcuts.dart';
|
import 'widgets/shortcuts.dart';
|
||||||
import 'widgets/toolbar/grid_toolbar.dart';
|
import 'widgets/toolbar/grid_toolbar.dart';
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ class _GridRowsState extends State<_GridRows> {
|
||||||
|
|
||||||
final fieldController =
|
final fieldController =
|
||||||
context.read<GridBloc>().databaseController.fieldController;
|
context.read<GridBloc>().databaseController.fieldController;
|
||||||
final dataController = RowDataController(
|
final dataController = RowController(
|
||||||
rowId: rowInfo.rowPB.id,
|
rowId: rowInfo.rowPB.id,
|
||||||
viewId: rowInfo.viewId,
|
viewId: rowInfo.viewId,
|
||||||
rowCache: rowCache,
|
rowCache: rowCache,
|
||||||
|
@ -287,7 +287,7 @@ class _GridRowsState extends State<_GridRows> {
|
||||||
|
|
||||||
return SizeTransition(
|
return SizeTransition(
|
||||||
sizeFactor: animation,
|
sizeFactor: animation,
|
||||||
child: GridRowWidget(
|
child: GridRow(
|
||||||
rowInfo: rowInfo,
|
rowInfo: rowInfo,
|
||||||
dataController: dataController,
|
dataController: dataController,
|
||||||
cellBuilder: GridCellBuilder(cellCache: dataController.cellCache),
|
cellBuilder: GridCellBuilder(cellCache: dataController.cellCache),
|
||||||
|
@ -312,7 +312,7 @@ class _GridRowsState extends State<_GridRows> {
|
||||||
RowCache rowCache,
|
RowCache rowCache,
|
||||||
GridCellBuilder cellBuilder,
|
GridCellBuilder cellBuilder,
|
||||||
) {
|
) {
|
||||||
final dataController = RowDataController(
|
final dataController = RowController(
|
||||||
viewId: rowInfo.viewId,
|
viewId: rowInfo.viewId,
|
||||||
rowId: rowInfo.rowPB.id,
|
rowId: rowInfo.rowPB.id,
|
||||||
rowCache: rowCache,
|
rowCache: rowCache,
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
export 'cell_builder.dart';
|
|
||||||
export 'text_cell.dart';
|
|
||||||
export 'number_cell.dart';
|
|
||||||
export 'date_cell/date_cell.dart';
|
|
||||||
export 'checkbox_cell.dart';
|
|
||||||
export 'select_option_cell/select_option_cell.dart';
|
|
||||||
export 'url_cell/url_cell.dart';
|
|
|
@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbenum.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/checkbox_filter.pbenum.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
|
@ -4,7 +4,6 @@ import 'package:appflowy/workspace/presentation/widgets/pop_up_action.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pbenum.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/checklist_filter.pbenum.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
|
@ -8,7 +8,7 @@ import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.d
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../../cell/select_option_cell/extension.dart';
|
import '../../../../../../widgets/row/cells/select_option_cell/extension.dart';
|
||||||
import '../../filter_info.dart';
|
import '../../filter_info.dart';
|
||||||
import 'select_option_loader.dart';
|
import 'select_option_loader.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/filter/select_option_filter_bloc.dart';
|
import 'package:appflowy/plugins/database_view/grid/application/filter/select_option_filter_bloc.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/select_option_filter.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
|
@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/text_filter.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
|
@ -5,7 +5,6 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/hover.dart';
|
import 'package:flowy_infra_ui/style_widget/hover.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
|
@ -1,9 +1,6 @@
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../../layout/sizes.dart';
|
import '../../layout/sizes.dart';
|
||||||
|
|
|
@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:dartz/dartz.dart' show Either;
|
import 'package:dartz/dartz.dart' show Either;
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-error/errors.pb.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
|
@ -9,7 +9,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
|
@ -6,8 +6,6 @@ import 'package:easy_localization/easy_localization.dart' hide DateFormat;
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/date_type_option_entities.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
|
@ -4,8 +4,6 @@ import 'package:appflowy/plugins/database_view/application/field/type_option/typ
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/format.pbenum.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/format.pbenum.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
|
@ -2,8 +2,6 @@ import 'package:appflowy/plugins/database_view/application/field/type_option/sel
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
@ -11,7 +9,7 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
|
|
||||||
import '../../../layout/sizes.dart';
|
import '../../../layout/sizes.dart';
|
||||||
import '../../cell/select_option_cell/extension.dart';
|
import '../../../../../widgets/row/cells/select_option_cell/extension.dart';
|
||||||
import '../../common/type_option_separator.dart';
|
import '../../common/type_option_separator.dart';
|
||||||
import 'select_option_editor.dart';
|
import 'select_option_editor.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/field/type_option/edit_select_option_bloc.dart';
|
import 'package:appflowy/plugins/database_view/application/field/type_option/edit_select_option_bloc.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/extension.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
import 'package:flowy_infra_ui/style_widget/button.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
|
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
|
||||||
|
|
|
@ -12,9 +12,9 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../layout/sizes.dart';
|
import '../../layout/sizes.dart';
|
||||||
|
|
||||||
class GridRowActionSheet extends StatelessWidget {
|
class RowActions extends StatelessWidget {
|
||||||
final RowInfo rowData;
|
final RowInfo rowData;
|
||||||
const GridRowActionSheet({required this.rowData, Key? key}) : super(key: key);
|
const RowActions({required this.rowData, Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
@ -24,9 +24,7 @@ class GridRowActionSheet extends StatelessWidget {
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
final cells = _RowAction.values
|
final cells = _RowAction.values
|
||||||
.where((value) => value.enable())
|
.where((value) => value.enable())
|
||||||
.map(
|
.map((action) => _ActionCell(action: action))
|
||||||
(action) => _RowActionCell(action: action),
|
|
||||||
)
|
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -49,9 +47,9 @@ class GridRowActionSheet extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RowActionCell extends StatelessWidget {
|
class _ActionCell extends StatelessWidget {
|
||||||
final _RowAction action;
|
final _RowAction action;
|
||||||
const _RowActionCell({required this.action, Key? key}) : super(key: key);
|
const _ActionCell({required this.action, Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
|
@ -2,30 +2,29 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_service.dar
|
||||||
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
|
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
|
import 'package:appflowy/plugins/database_view/application/row/row_data_controller.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/row/row_bloc.dart';
|
import 'package:appflowy/plugins/database_view/grid/application/row/row_bloc.dart';
|
||||||
|
import 'package:appflowy/plugins/database_view/widgets/row/cell_builder.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
import '../../../../widgets/row/accessory/cell_accessory.dart';
|
||||||
import '../../layout/sizes.dart';
|
import '../../layout/sizes.dart';
|
||||||
import '../cell/cell_accessory.dart';
|
import '../../../../widgets/row/cells/cell_container.dart';
|
||||||
import '../cell/cell_container.dart';
|
import 'action.dart';
|
||||||
import '../cell/prelude.dart';
|
|
||||||
import 'row_action_sheet.dart';
|
|
||||||
import "package:appflowy/generated/locale_keys.g.dart";
|
import "package:appflowy/generated/locale_keys.g.dart";
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
|
||||||
class GridRowWidget extends StatefulWidget {
|
class GridRow extends StatefulWidget {
|
||||||
final RowInfo rowInfo;
|
final RowInfo rowInfo;
|
||||||
final RowDataController dataController;
|
final RowController dataController;
|
||||||
final GridCellBuilder cellBuilder;
|
final GridCellBuilder cellBuilder;
|
||||||
final void Function(BuildContext, GridCellBuilder) openDetailPage;
|
final void Function(BuildContext, GridCellBuilder) openDetailPage;
|
||||||
|
|
||||||
const GridRowWidget({
|
const GridRow({
|
||||||
required this.rowInfo,
|
required this.rowInfo,
|
||||||
required this.dataController,
|
required this.dataController,
|
||||||
required this.cellBuilder,
|
required this.cellBuilder,
|
||||||
|
@ -34,10 +33,10 @@ class GridRowWidget extends StatefulWidget {
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<GridRowWidget> createState() => _GridRowWidgetState();
|
State<GridRow> createState() => _GridRowState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _GridRowWidgetState extends State<GridRowWidget> {
|
class _GridRowState extends State<GridRow> {
|
||||||
late RowBloc _rowBloc;
|
late RowBloc _rowBloc;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -111,8 +110,7 @@ class _RowLeadingState extends State<_RowLeading> {
|
||||||
direction: PopoverDirection.rightWithCenterAligned,
|
direction: PopoverDirection.rightWithCenterAligned,
|
||||||
margin: const EdgeInsets.all(6),
|
margin: const EdgeInsets.all(6),
|
||||||
popupBuilder: (BuildContext popoverContext) {
|
popupBuilder: (BuildContext popoverContext) {
|
||||||
return GridRowActionSheet(
|
return RowActions(rowData: context.read<RowBloc>().state.rowInfo);
|
||||||
rowData: context.read<RowBloc>().state.rowInfo);
|
|
||||||
},
|
},
|
||||||
child: Consumer<RegionStateNotifier>(
|
child: Consumer<RegionStateNotifier>(
|
||||||
builder: (context, state, _) {
|
builder: (context, state, _) {
|
|
@ -9,9 +9,6 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'dart:math' as math;
|
import 'dart:math' as math;
|
||||||
|
|
|
@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,6 @@ import 'package:appflowy/startup/startup.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:styled_widget/styled_widget.dart';
|
import 'package:styled_widget/styled_widget.dart';
|
||||||
|
|
|
@ -5,7 +5,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:styled_widget/styled_widget.dart';
|
import 'package:styled_widget/styled_widget.dart';
|
||||||
|
|
|
@ -4,7 +4,6 @@ import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
|
import 'package:appflowy/plugins/database_view/application/row/row_cache.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/row/row_action_sheet.dart';
|
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/row/action.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/row_entities.pb.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
|
@ -149,7 +149,7 @@ class _CardState<T> extends State<Card<T>> {
|
||||||
case AccessoryType.edit:
|
case AccessoryType.edit:
|
||||||
throw UnimplementedError();
|
throw UnimplementedError();
|
||||||
case AccessoryType.more:
|
case AccessoryType.more:
|
||||||
return GridRowActionSheet(
|
return RowActions(
|
||||||
rowData: context.read<CardBloc>().rowInfo(),
|
rowData: context.read<CardBloc>().rowInfo(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/checklist_cell/checklist_progress_bar.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/checklist_cell/checklist_progress_bar.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../../grid/application/cell/checklist_cell_bloc.dart';
|
import '../../row/cells/checklist_cell/checklist_cell_bloc.dart';
|
||||||
import 'card_cell.dart';
|
import 'card_cell.dart';
|
||||||
|
|
||||||
class ChecklistCardCell extends CardCell {
|
class ChecklistCardCell extends CardCell {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/extension.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/extension.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/select_option_editor.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/cell_builder.dart';
|
|
||||||
import 'package:flowy_infra/size.dart';
|
import 'package:flowy_infra/size.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/text.dart';
|
import 'package:flowy_infra_ui/style_widget/text.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:textstyle_extensions/textstyle_extensions.dart';
|
import 'package:textstyle_extensions/textstyle_extensions.dart';
|
||||||
|
import '../../row/cell_builder.dart';
|
||||||
import '../bloc/text_card_cell_bloc.dart';
|
import '../bloc/text_card_cell_bloc.dart';
|
||||||
import '../define.dart';
|
import '../define.dart';
|
||||||
import 'card_cell.dart';
|
import 'card_cell.dart';
|
||||||
|
|
|
@ -9,7 +9,7 @@ import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:textstyle_extensions/textstyle_extensions.dart';
|
import 'package:textstyle_extensions/textstyle_extensions.dart';
|
||||||
|
|
||||||
import 'cell_builder.dart';
|
import '../cell_builder.dart';
|
||||||
|
|
||||||
class GridCellAccessoryBuildContext {
|
class GridCellAccessoryBuildContext {
|
||||||
final BuildContext anchorContext;
|
final BuildContext anchorContext;
|
|
@ -3,16 +3,16 @@ import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart'
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../../../../application/cell/cell_service.dart';
|
import '../../application/cell/cell_service.dart';
|
||||||
import 'cell_accessory.dart';
|
import 'accessory/cell_accessory.dart';
|
||||||
import 'cell_shortcuts.dart';
|
import 'accessory/cell_shortcuts.dart';
|
||||||
import 'checkbox_cell.dart';
|
import 'cells/checkbox_cell/checkbox_cell.dart';
|
||||||
import 'checklist_cell/checklist_cell.dart';
|
import 'cells/checklist_cell/checklist_cell.dart';
|
||||||
import 'date_cell/date_cell.dart';
|
import 'cells/date_cell/date_cell.dart';
|
||||||
import 'number_cell.dart';
|
import 'cells/number_cell/number_cell.dart';
|
||||||
import 'select_option_cell/select_option_cell.dart';
|
import 'cells/select_option_cell/select_option_cell.dart';
|
||||||
import 'text_cell.dart';
|
import 'cells/text_cell/text_cell.dart';
|
||||||
import 'url_cell/url_cell.dart';
|
import 'cells/url_cell/url_cell.dart';
|
||||||
|
|
||||||
class GridCellBuilder {
|
class GridCellBuilder {
|
||||||
final CellCache cellCache;
|
final CellCache cellCache;
|
|
@ -2,11 +2,11 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:styled_widget/styled_widget.dart';
|
import 'package:styled_widget/styled_widget.dart';
|
||||||
|
|
||||||
import '../../layout/sizes.dart';
|
import '../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../row/grid_row.dart';
|
import '../../../grid/presentation/widgets/row/row.dart';
|
||||||
import 'cell_accessory.dart';
|
import '../accessory/cell_accessory.dart';
|
||||||
import 'cell_builder.dart';
|
import '../accessory/cell_shortcuts.dart';
|
||||||
import 'cell_shortcuts.dart';
|
import '../cell_builder.dart';
|
||||||
|
|
||||||
class CellContainer extends StatelessWidget {
|
class CellContainer extends StatelessWidget {
|
||||||
final GridCellWidget child;
|
final GridCellWidget child;
|
|
@ -1,12 +1,12 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import '../../../application/cell/checkbox_cell_bloc.dart';
|
import 'checkbox_cell_bloc.dart';
|
||||||
import '../../layout/sizes.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import 'cell_builder.dart';
|
import '../../cell_builder.dart';
|
||||||
|
|
||||||
class GridCheckboxCell extends GridCellWidget {
|
class GridCheckboxCell extends GridCellWidget {
|
||||||
final CellControllerBuilder cellControllerBuilder;
|
final CellControllerBuilder cellControllerBuilder;
|
||||||
|
@ -26,7 +26,8 @@ class _CheckboxCellState extends GridCellState<GridCheckboxCell> {
|
||||||
void initState() {
|
void initState() {
|
||||||
final cellController =
|
final cellController =
|
||||||
widget.cellControllerBuilder.build() as CheckboxCellController;
|
widget.cellControllerBuilder.build() as CheckboxCellController;
|
||||||
_cellBloc = getIt<CheckboxCellBloc>(param1: cellController)
|
_cellBloc = CheckboxCellBloc(
|
||||||
|
service: CellBackendService(), cellController: cellController)
|
||||||
..add(const CheckboxCellEvent.initial());
|
..add(const CheckboxCellEvent.initial());
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
|
@ -1,12 +1,12 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/checklist_cell_bloc.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
|
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../cell_builder.dart';
|
import '../../cell_builder.dart';
|
||||||
|
import 'checklist_cell_bloc.dart';
|
||||||
import 'checklist_cell_editor.dart';
|
import 'checklist_cell_editor.dart';
|
||||||
import 'checklist_progress_bar.dart';
|
import 'checklist_progress_bar.dart';
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_service.dart';
|
||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'checklist_cell_editor_bloc.dart';
|
import 'checklist_cell_editor_bloc.dart';
|
||||||
import 'select_option_service.dart';
|
|
||||||
part 'checklist_cell_bloc.freezed.dart';
|
part 'checklist_cell_bloc.freezed.dart';
|
||||||
|
|
||||||
class ChecklistCardCellBloc
|
class ChecklistCardCellBloc
|
|
@ -2,16 +2,12 @@ import 'package:appflowy/plugins/database_view/application/cell/cell_controller_
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../../../application/cell/checklist_cell_editor_bloc.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../../../layout/sizes.dart';
|
import '../../../../grid/presentation/widgets/header/type_option/select_option_editor.dart';
|
||||||
import '../../header/type_option/select_option_editor.dart';
|
import 'checklist_cell_editor_bloc.dart';
|
||||||
import 'checklist_progress_bar.dart';
|
import 'checklist_progress_bar.dart';
|
||||||
|
|
||||||
class GridChecklistCellEditor extends StatefulWidget {
|
class GridChecklistCellEditor extends StatefulWidget {
|
|
@ -1,12 +1,12 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_service.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||||
import 'select_option_service.dart';
|
|
||||||
|
|
||||||
part 'checklist_cell_editor_bloc.freezed.dart';
|
part 'checklist_cell_editor_bloc.freezed.dart';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/checklist_cell_editor_bloc.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
|
import 'package:appflowy/plugins/database_view/grid/presentation/layout/sizes.dart';
|
||||||
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/checklist_cell/checklist_cell_editor_bloc.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
|
@ -18,16 +18,17 @@ import 'package:protobuf/protobuf.dart';
|
||||||
import 'package:fixnum/fixnum.dart' as $fixnum;
|
import 'package:fixnum/fixnum.dart' as $fixnum;
|
||||||
part 'date_cal_bloc.freezed.dart';
|
part 'date_cal_bloc.freezed.dart';
|
||||||
|
|
||||||
class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
|
class DateCellCalendarBloc
|
||||||
|
extends Bloc<DateCellCalendarEvent, DateCellCalendarState> {
|
||||||
final DateCellController cellController;
|
final DateCellController cellController;
|
||||||
void Function()? _onCellChangedFn;
|
void Function()? _onCellChangedFn;
|
||||||
|
|
||||||
DateCalBloc({
|
DateCellCalendarBloc({
|
||||||
required DateTypeOptionPB dateTypeOptionPB,
|
required DateTypeOptionPB dateTypeOptionPB,
|
||||||
required DateCellDataPB? cellData,
|
required DateCellDataPB? cellData,
|
||||||
required this.cellController,
|
required this.cellController,
|
||||||
}) : super(DateCalState.initial(dateTypeOptionPB, cellData)) {
|
}) : super(DateCellCalendarState.initial(dateTypeOptionPB, cellData)) {
|
||||||
on<DateCalEvent>(
|
on<DateCellCalendarEvent>(
|
||||||
(event, emit) async {
|
(event, emit) async {
|
||||||
await event.when(
|
await event.when(
|
||||||
initial: () async => _startListening(),
|
initial: () async => _startListening(),
|
||||||
|
@ -70,7 +71,7 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _updateDateData(Emitter<DateCalState> emit,
|
Future<void> _updateDateData(Emitter<DateCellCalendarState> emit,
|
||||||
{DateTime? date, String? time}) {
|
{DateTime? date, String? time}) {
|
||||||
final CalendarData newDateData = state.calData.fold(
|
final CalendarData newDateData = state.calData.fold(
|
||||||
() => CalendarData(date: date ?? DateTime.now(), time: time),
|
() => CalendarData(date: date ?? DateTime.now(), time: time),
|
||||||
|
@ -91,7 +92,7 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _saveDateData(
|
Future<void> _saveDateData(
|
||||||
Emitter<DateCalState> emit, CalendarData newCalData) async {
|
Emitter<DateCellCalendarState> emit, CalendarData newCalData) async {
|
||||||
if (state.calData == Some(newCalData)) {
|
if (state.calData == Some(newCalData)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -99,7 +100,7 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
|
||||||
updateCalData(
|
updateCalData(
|
||||||
Option<CalendarData> calData, Option<String> timeFormatError) {
|
Option<CalendarData> calData, Option<String> timeFormatError) {
|
||||||
if (!isClosed) {
|
if (!isClosed) {
|
||||||
add(DateCalEvent.didUpdateCalData(calData, timeFormatError));
|
add(DateCellCalendarEvent.didUpdateCalData(calData, timeFormatError));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,14 +149,14 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
|
||||||
_onCellChangedFn = cellController.startListening(
|
_onCellChangedFn = cellController.startListening(
|
||||||
onCellChanged: ((cell) {
|
onCellChanged: ((cell) {
|
||||||
if (!isClosed) {
|
if (!isClosed) {
|
||||||
add(DateCalEvent.didReceiveCellUpdate(cell));
|
add(DateCellCalendarEvent.didReceiveCellUpdate(cell));
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void>? _updateTypeOption(
|
Future<void>? _updateTypeOption(
|
||||||
Emitter<DateCalState> emit, {
|
Emitter<DateCellCalendarState> emit, {
|
||||||
DateFormat? dateFormat,
|
DateFormat? dateFormat,
|
||||||
TimeFormat? timeFormat,
|
TimeFormat? timeFormat,
|
||||||
bool? includeTime,
|
bool? includeTime,
|
||||||
|
@ -191,26 +192,29 @@ class DateCalBloc extends Bloc<DateCalEvent, DateCalState> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@freezed
|
@freezed
|
||||||
class DateCalEvent with _$DateCalEvent {
|
class DateCellCalendarEvent with _$DateCellCalendarEvent {
|
||||||
const factory DateCalEvent.initial() = _Initial;
|
const factory DateCellCalendarEvent.initial() = _Initial;
|
||||||
const factory DateCalEvent.selectDay(DateTime day) = _SelectDay;
|
const factory DateCellCalendarEvent.selectDay(DateTime day) = _SelectDay;
|
||||||
const factory DateCalEvent.setCalFormat(CalendarFormat format) =
|
const factory DateCellCalendarEvent.setCalFormat(CalendarFormat format) =
|
||||||
_CalendarFormat;
|
_CalendarFormat;
|
||||||
const factory DateCalEvent.setFocusedDay(DateTime day) = _FocusedDay;
|
const factory DateCellCalendarEvent.setFocusedDay(DateTime day) = _FocusedDay;
|
||||||
const factory DateCalEvent.setTimeFormat(TimeFormat timeFormat) = _TimeFormat;
|
const factory DateCellCalendarEvent.setTimeFormat(TimeFormat timeFormat) =
|
||||||
const factory DateCalEvent.setDateFormat(DateFormat dateFormat) = _DateFormat;
|
_TimeFormat;
|
||||||
const factory DateCalEvent.setIncludeTime(bool includeTime) = _IncludeTime;
|
const factory DateCellCalendarEvent.setDateFormat(DateFormat dateFormat) =
|
||||||
const factory DateCalEvent.setTime(String time) = _Time;
|
_DateFormat;
|
||||||
const factory DateCalEvent.didReceiveCellUpdate(DateCellDataPB? data) =
|
const factory DateCellCalendarEvent.setIncludeTime(bool includeTime) =
|
||||||
_DidReceiveCellUpdate;
|
_IncludeTime;
|
||||||
const factory DateCalEvent.didUpdateCalData(
|
const factory DateCellCalendarEvent.setTime(String time) = _Time;
|
||||||
|
const factory DateCellCalendarEvent.didReceiveCellUpdate(
|
||||||
|
DateCellDataPB? data) = _DidReceiveCellUpdate;
|
||||||
|
const factory DateCellCalendarEvent.didUpdateCalData(
|
||||||
Option<CalendarData> data, Option<String> timeFormatError) =
|
Option<CalendarData> data, Option<String> timeFormatError) =
|
||||||
_DidUpdateCalData;
|
_DidUpdateCalData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@freezed
|
@freezed
|
||||||
class DateCalState with _$DateCalState {
|
class DateCellCalendarState with _$DateCellCalendarState {
|
||||||
const factory DateCalState({
|
const factory DateCellCalendarState({
|
||||||
required DateTypeOptionPB dateTypeOptionPB,
|
required DateTypeOptionPB dateTypeOptionPB,
|
||||||
required CalendarFormat format,
|
required CalendarFormat format,
|
||||||
required DateTime focusedDay,
|
required DateTime focusedDay,
|
||||||
|
@ -218,16 +222,16 @@ class DateCalState with _$DateCalState {
|
||||||
required Option<CalendarData> calData,
|
required Option<CalendarData> calData,
|
||||||
required String? time,
|
required String? time,
|
||||||
required String timeHintText,
|
required String timeHintText,
|
||||||
}) = _DateCalState;
|
}) = _DateCellCalendarState;
|
||||||
|
|
||||||
factory DateCalState.initial(
|
factory DateCellCalendarState.initial(
|
||||||
DateTypeOptionPB dateTypeOptionPB,
|
DateTypeOptionPB dateTypeOptionPB,
|
||||||
DateCellDataPB? cellData,
|
DateCellDataPB? cellData,
|
||||||
) {
|
) {
|
||||||
Option<CalendarData> calData = calDataFromCellData(cellData);
|
Option<CalendarData> calData = calDataFromCellData(cellData);
|
||||||
final time =
|
final time =
|
||||||
calData.foldRight("", (dateData, previous) => dateData.time ?? '');
|
calData.foldRight("", (dateData, previous) => dateData.time ?? '');
|
||||||
return DateCalState(
|
return DateCellCalendarState(
|
||||||
dateTypeOptionPB: dateTypeOptionPB,
|
dateTypeOptionPB: dateTypeOptionPB,
|
||||||
format: CalendarFormat.month,
|
format: CalendarFormat.month,
|
||||||
focusedDay: DateTime.now(),
|
focusedDay: DateTime.now(),
|
|
@ -1,13 +1,12 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/date_cell_bloc.dart';
|
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
|
|
||||||
import '../../../layout/sizes.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../cell_builder.dart';
|
import '../../cell_builder.dart';
|
||||||
|
import 'date_cell_bloc.dart';
|
||||||
import 'date_editor.dart';
|
import 'date_editor.dart';
|
||||||
|
|
||||||
class DateCellStyle extends GridCellStyle {
|
class DateCellStyle extends GridCellStyle {
|
||||||
|
@ -50,7 +49,7 @@ class _DateCellState extends GridCellState<GridDateCell> {
|
||||||
_popover = PopoverController();
|
_popover = PopoverController();
|
||||||
final cellController =
|
final cellController =
|
||||||
widget.cellControllerBuilder.build() as DateCellController;
|
widget.cellControllerBuilder.build() as DateCellController;
|
||||||
_cellBloc = getIt<DateCellBloc>(param1: cellController)
|
_cellBloc = DateCellBloc(cellController: cellController)
|
||||||
..add(const DateCellEvent.initial());
|
..add(const DateCellEvent.initial());
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
|
import 'package:appflowy/plugins/database_view/application/field/type_option/type_option_context.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/date_cal_bloc.dart';
|
|
||||||
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle.dart';
|
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle.dart';
|
||||||
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle_style.dart';
|
import 'package:appflowy/workspace/presentation/widgets/toggle/toggle_style.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
|
@ -11,9 +10,7 @@ import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra/size.dart';
|
import 'package:flowy_infra/size.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/rounded_input_field.dart';
|
import 'package:flowy_infra_ui/widget/rounded_input_field.dart';
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/log.dart';
|
import 'package:appflowy_backend/log.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
|
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/date_type_option.pb.dart';
|
||||||
|
@ -21,9 +18,10 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:table_calendar/table_calendar.dart';
|
import 'package:table_calendar/table_calendar.dart';
|
||||||
import 'package:textstyle_extensions/textstyle_extensions.dart';
|
import 'package:textstyle_extensions/textstyle_extensions.dart';
|
||||||
import '../../../layout/sizes.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../../common/type_option_separator.dart';
|
import '../../../../grid/presentation/widgets/common/type_option_separator.dart';
|
||||||
import '../../header/type_option/date.dart';
|
import '../../../../grid/presentation/widgets/header/type_option/date.dart';
|
||||||
|
import 'date_cal_bloc.dart';
|
||||||
|
|
||||||
final kToday = DateTime.now();
|
final kToday = DateTime.now();
|
||||||
final kFirstDay = DateTime(kToday.year, kToday.month - 3, kToday.day);
|
final kFirstDay = DateTime(kToday.year, kToday.month - 3, kToday.day);
|
||||||
|
@ -92,17 +90,17 @@ class _CellCalendarWidget extends StatefulWidget {
|
||||||
|
|
||||||
class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
|
class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
|
||||||
late PopoverMutex popoverMutex;
|
late PopoverMutex popoverMutex;
|
||||||
late DateCalBloc bloc;
|
late DateCellCalendarBloc bloc;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
popoverMutex = PopoverMutex();
|
popoverMutex = PopoverMutex();
|
||||||
|
|
||||||
bloc = DateCalBloc(
|
bloc = DateCellCalendarBloc(
|
||||||
dateTypeOptionPB: widget.dateTypeOptionPB,
|
dateTypeOptionPB: widget.dateTypeOptionPB,
|
||||||
cellData: widget.cellContext.getCellData(),
|
cellData: widget.cellContext.getCellData(),
|
||||||
cellController: widget.cellContext,
|
cellController: widget.cellContext,
|
||||||
)..add(const DateCalEvent.initial());
|
)..add(const DateCellCalendarEvent.initial());
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +108,7 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BlocProvider.value(
|
return BlocProvider.value(
|
||||||
value: bloc,
|
value: bloc,
|
||||||
child: BlocBuilder<DateCalBloc, DateCalState>(
|
child: BlocBuilder<DateCellCalendarBloc, DateCellCalendarState>(
|
||||||
buildWhen: (p, c) => p != c,
|
buildWhen: (p, c) => p != c,
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
List<Widget> children = [
|
List<Widget> children = [
|
||||||
|
@ -121,7 +119,7 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
|
||||||
if (state.dateTypeOptionPB.includeTime) ...[
|
if (state.dateTypeOptionPB.includeTime) ...[
|
||||||
const VSpace(12.0),
|
const VSpace(12.0),
|
||||||
_TimeTextField(
|
_TimeTextField(
|
||||||
bloc: context.read<DateCalBloc>(),
|
bloc: context.read<DateCellCalendarBloc>(),
|
||||||
popoverMutex: popoverMutex,
|
popoverMutex: popoverMutex,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -151,7 +149,7 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildCalendar(BuildContext context) {
|
Widget _buildCalendar(BuildContext context) {
|
||||||
return BlocBuilder<DateCalBloc, DateCalState>(
|
return BlocBuilder<DateCellCalendarBloc, DateCellCalendarState>(
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
final textStyle = Theme.of(context).textTheme.bodyMedium!;
|
final textStyle = Theme.of(context).textTheme.bodyMedium!;
|
||||||
final boxDecoration = BoxDecoration(
|
final boxDecoration = BoxDecoration(
|
||||||
|
@ -215,16 +213,18 @@ class _CellCalendarWidgetState extends State<_CellCalendarWidget> {
|
||||||
},
|
},
|
||||||
onDaySelected: (selectedDay, focusedDay) {
|
onDaySelected: (selectedDay, focusedDay) {
|
||||||
context
|
context
|
||||||
.read<DateCalBloc>()
|
.read<DateCellCalendarBloc>()
|
||||||
.add(DateCalEvent.selectDay(selectedDay));
|
.add(DateCellCalendarEvent.selectDay(selectedDay));
|
||||||
},
|
},
|
||||||
onFormatChanged: (format) {
|
onFormatChanged: (format) {
|
||||||
context.read<DateCalBloc>().add(DateCalEvent.setCalFormat(format));
|
context
|
||||||
|
.read<DateCellCalendarBloc>()
|
||||||
|
.add(DateCellCalendarEvent.setCalFormat(format));
|
||||||
},
|
},
|
||||||
onPageChanged: (focusedDay) {
|
onPageChanged: (focusedDay) {
|
||||||
context
|
context
|
||||||
.read<DateCalBloc>()
|
.read<DateCellCalendarBloc>()
|
||||||
.add(DateCalEvent.setFocusedDay(focusedDay));
|
.add(DateCellCalendarEvent.setFocusedDay(focusedDay));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -237,7 +237,7 @@ class _IncludeTimeButton extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return BlocSelector<DateCalBloc, DateCalState, bool>(
|
return BlocSelector<DateCellCalendarBloc, DateCellCalendarState, bool>(
|
||||||
selector: (state) => state.dateTypeOptionPB.includeTime,
|
selector: (state) => state.dateTypeOptionPB.includeTime,
|
||||||
builder: (context, includeTime) {
|
builder: (context, includeTime) {
|
||||||
return Padding(
|
return Padding(
|
||||||
|
@ -258,8 +258,8 @@ class _IncludeTimeButton extends StatelessWidget {
|
||||||
Toggle(
|
Toggle(
|
||||||
value: includeTime,
|
value: includeTime,
|
||||||
onChanged: (value) => context
|
onChanged: (value) => context
|
||||||
.read<DateCalBloc>()
|
.read<DateCellCalendarBloc>()
|
||||||
.add(DateCalEvent.setIncludeTime(!value)),
|
.add(DateCellCalendarEvent.setIncludeTime(!value)),
|
||||||
style: ToggleStyle.big,
|
style: ToggleStyle.big,
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
),
|
),
|
||||||
|
@ -274,7 +274,7 @@ class _IncludeTimeButton extends StatelessWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _TimeTextField extends StatefulWidget {
|
class _TimeTextField extends StatefulWidget {
|
||||||
final DateCalBloc bloc;
|
final DateCellCalendarBloc bloc;
|
||||||
final PopoverMutex popoverMutex;
|
final PopoverMutex popoverMutex;
|
||||||
|
|
||||||
const _TimeTextField({
|
const _TimeTextField({
|
||||||
|
@ -298,7 +298,7 @@ class _TimeTextFieldState extends State<_TimeTextField> {
|
||||||
|
|
||||||
_focusNode.addListener(() {
|
_focusNode.addListener(() {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
widget.bloc.add(DateCalEvent.setTime(_controller.text));
|
widget.bloc.add(DateCellCalendarEvent.setTime(_controller.text));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -340,7 +340,7 @@ class _TimeTextFieldState extends State<_TimeTextField> {
|
||||||
errorText: widget.bloc.state.timeFormatError
|
errorText: widget.bloc.state.timeFormatError
|
||||||
.fold(() => "", (error) => error),
|
.fold(() => "", (error) => error),
|
||||||
onEditingComplete: (value) =>
|
onEditingComplete: (value) =>
|
||||||
widget.bloc.add(DateCalEvent.setTime(value)),
|
widget.bloc.add(DateCellCalendarEvent.setTime(value)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -364,7 +364,8 @@ class _DateTypeOptionButton extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final title =
|
final title =
|
||||||
"${LocaleKeys.grid_field_dateFormat.tr()} & ${LocaleKeys.grid_field_timeFormat.tr()}";
|
"${LocaleKeys.grid_field_dateFormat.tr()} & ${LocaleKeys.grid_field_timeFormat.tr()}";
|
||||||
return BlocSelector<DateCalBloc, DateCalState, DateTypeOptionPB>(
|
return BlocSelector<DateCellCalendarBloc, DateCellCalendarState,
|
||||||
|
DateTypeOptionPB>(
|
||||||
selector: (state) => state.dateTypeOptionPB,
|
selector: (state) => state.dateTypeOptionPB,
|
||||||
builder: (context, dateTypeOptionPB) {
|
builder: (context, dateTypeOptionPB) {
|
||||||
return AppFlowyPopover(
|
return AppFlowyPopover(
|
||||||
|
@ -391,7 +392,7 @@ class _DateTypeOptionButton extends StatelessWidget {
|
||||||
return _CalDateTimeSetting(
|
return _CalDateTimeSetting(
|
||||||
dateTypeOptionPB: dateTypeOptionPB,
|
dateTypeOptionPB: dateTypeOptionPB,
|
||||||
onEvent: (event) {
|
onEvent: (event) {
|
||||||
context.read<DateCalBloc>().add(event);
|
context.read<DateCellCalendarBloc>().add(event);
|
||||||
popoverMutex.close();
|
popoverMutex.close();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -404,7 +405,7 @@ class _DateTypeOptionButton extends StatelessWidget {
|
||||||
|
|
||||||
class _CalDateTimeSetting extends StatefulWidget {
|
class _CalDateTimeSetting extends StatefulWidget {
|
||||||
final DateTypeOptionPB dateTypeOptionPB;
|
final DateTypeOptionPB dateTypeOptionPB;
|
||||||
final Function(DateCalEvent) onEvent;
|
final Function(DateCellCalendarEvent) onEvent;
|
||||||
const _CalDateTimeSetting({
|
const _CalDateTimeSetting({
|
||||||
required this.dateTypeOptionPB,
|
required this.dateTypeOptionPB,
|
||||||
required this.onEvent,
|
required this.onEvent,
|
||||||
|
@ -430,7 +431,7 @@ class _CalDateTimeSettingState extends State<_CalDateTimeSetting> {
|
||||||
return DateFormatList(
|
return DateFormatList(
|
||||||
selectedFormat: widget.dateTypeOptionPB.dateFormat,
|
selectedFormat: widget.dateTypeOptionPB.dateFormat,
|
||||||
onSelected: (format) {
|
onSelected: (format) {
|
||||||
widget.onEvent(DateCalEvent.setDateFormat(format));
|
widget.onEvent(DateCellCalendarEvent.setDateFormat(format));
|
||||||
timeSettingPopoverMutex.close();
|
timeSettingPopoverMutex.close();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -448,7 +449,7 @@ class _CalDateTimeSettingState extends State<_CalDateTimeSetting> {
|
||||||
return TimeFormatList(
|
return TimeFormatList(
|
||||||
selectedFormat: widget.dateTypeOptionPB.timeFormat,
|
selectedFormat: widget.dateTypeOptionPB.timeFormat,
|
||||||
onSelected: (format) {
|
onSelected: (format) {
|
||||||
widget.onEvent(DateCalEvent.setTimeFormat(format));
|
widget.onEvent(DateCellCalendarEvent.setTimeFormat(format));
|
||||||
timeSettingPopoverMutex.close();
|
timeSettingPopoverMutex.close();
|
||||||
});
|
});
|
||||||
},
|
},
|
|
@ -1,12 +1,11 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../../application/cell/number_cell_bloc.dart';
|
import 'number_cell_bloc.dart';
|
||||||
import '../../layout/sizes.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import 'cell_builder.dart';
|
import '../../cell_builder.dart';
|
||||||
|
|
||||||
class GridNumberCell extends GridCellWidget {
|
class GridNumberCell extends GridCellWidget {
|
||||||
final CellControllerBuilder cellControllerBuilder;
|
final CellControllerBuilder cellControllerBuilder;
|
||||||
|
@ -26,8 +25,9 @@ class _NumberCellState extends GridFocusNodeCellState<GridNumberCell> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
final cellController = widget.cellControllerBuilder.build();
|
final cellController =
|
||||||
_cellBloc = getIt<NumberCellBloc>(param1: cellController)
|
widget.cellControllerBuilder.build() as NumberCellController;
|
||||||
|
_cellBloc = NumberCellBloc(cellController: cellController)
|
||||||
..add(const NumberCellEvent.initial());
|
..add(const NumberCellEvent.initial());
|
||||||
_controller = TextEditingController(text: _cellBloc.state.cellContent);
|
_controller = TextEditingController(text: _cellBloc.state.cellContent);
|
||||||
super.initState();
|
super.initState();
|
|
@ -6,10 +6,10 @@ import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.d
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../../../application/cell/select_option_cell_bloc.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../../../layout/sizes.dart';
|
import '../../cell_builder.dart';
|
||||||
import '../cell_builder.dart';
|
|
||||||
import 'extension.dart';
|
import 'extension.dart';
|
||||||
|
import 'select_option_cell_bloc.dart';
|
||||||
import 'select_option_editor.dart';
|
import 'select_option_editor.dart';
|
||||||
|
|
||||||
class SelectOptionCellStyle extends GridCellStyle {
|
class SelectOptionCellStyle extends GridCellStyle {
|
||||||
|
@ -48,7 +48,7 @@ class _SingleSelectCellState extends GridCellState<GridSingleSelectCell> {
|
||||||
void initState() {
|
void initState() {
|
||||||
final cellController =
|
final cellController =
|
||||||
widget.cellControllerBuilder.build() as SelectOptionCellController;
|
widget.cellControllerBuilder.build() as SelectOptionCellController;
|
||||||
_cellBloc = getIt<SelectOptionCellBloc>(param1: cellController)
|
_cellBloc = SelectOptionCellBloc(cellController: cellController)
|
||||||
..add(const SelectOptionCellEvent.initial());
|
..add(const SelectOptionCellEvent.initial());
|
||||||
_popover = PopoverController();
|
_popover = PopoverController();
|
||||||
super.initState();
|
super.initState();
|
|
@ -1,14 +1,10 @@
|
||||||
import 'dart:collection';
|
import 'dart:collection';
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_editor_bloc.dart';
|
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
|
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
@ -16,10 +12,11 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:textfield_tags/textfield_tags.dart';
|
import 'package:textfield_tags/textfield_tags.dart';
|
||||||
|
|
||||||
import '../../../layout/sizes.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../../common/type_option_separator.dart';
|
import '../../../../grid/presentation/widgets/common/type_option_separator.dart';
|
||||||
import '../../header/type_option/select_option_editor.dart';
|
import '../../../../grid/presentation/widgets/header/type_option/select_option_editor.dart';
|
||||||
import 'extension.dart';
|
import 'extension.dart';
|
||||||
|
import 'select_option_editor_bloc.dart';
|
||||||
import 'text_field.dart';
|
import 'text_field.dart';
|
||||||
|
|
||||||
const double _editorPanelWidth = 300;
|
const double _editorPanelWidth = 300;
|
|
@ -1,11 +1,10 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/text_cell_bloc.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/text_cell/text_cell_bloc.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:appflowy/startup/startup.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../../layout/sizes.dart';
|
import '../../cell_builder.dart';
|
||||||
import 'cell_builder.dart';
|
|
||||||
|
|
||||||
class GridTextCellStyle extends GridCellStyle {
|
class GridTextCellStyle extends GridCellStyle {
|
||||||
String? placeholder;
|
String? placeholder;
|
||||||
|
@ -40,8 +39,9 @@ class _GridTextCellState extends GridFocusNodeCellState<GridTextCell> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
final cellController = widget.cellControllerBuilder.build();
|
final cellController =
|
||||||
_cellBloc = getIt<TextCellBloc>(param1: cellController);
|
widget.cellControllerBuilder.build() as TextCellController;
|
||||||
|
_cellBloc = TextCellBloc(cellController: cellController);
|
||||||
_cellBloc.add(const TextCellEvent.initial());
|
_cellBloc.add(const TextCellEvent.initial());
|
||||||
_controller = TextEditingController(text: _cellBloc.state.content);
|
_controller = TextEditingController(text: _cellBloc.state.content);
|
||||||
super.initState();
|
super.initState();
|
|
@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
import '../../../../application/cell/url_cell_editor_bloc.dart';
|
import 'url_cell_editor_bloc.dart';
|
||||||
|
|
||||||
class URLCellEditor extends StatefulWidget {
|
class URLCellEditor extends StatefulWidget {
|
||||||
final VoidCallback onExit;
|
final VoidCallback onExit;
|
|
@ -10,11 +10,11 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import '../../../../application/cell/url_cell_bloc.dart';
|
import '../../../../grid/presentation/layout/sizes.dart';
|
||||||
import '../../../layout/sizes.dart';
|
import '../../accessory/cell_accessory.dart';
|
||||||
import '../cell_accessory.dart';
|
import '../../cell_builder.dart';
|
||||||
import '../cell_builder.dart';
|
|
||||||
import 'cell_editor.dart';
|
import 'cell_editor.dart';
|
||||||
|
import 'url_cell_bloc.dart';
|
||||||
|
|
||||||
class GridURLCellStyle extends GridCellStyle {
|
class GridURLCellStyle extends GridCellStyle {
|
||||||
String? placeholder;
|
String? placeholder;
|
|
@ -6,10 +6,7 @@ import 'package:appflowy/workspace/presentation/widgets/dialogs.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/scrolling/styled_scroll_bar.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
|
@ -17,14 +14,18 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
|
|
||||||
import '../../layout/sizes.dart';
|
import '../../grid/presentation/layout/sizes.dart';
|
||||||
import '../cell/cell_accessory.dart';
|
import 'accessory/cell_accessory.dart';
|
||||||
import '../cell/prelude.dart';
|
import 'cell_builder.dart';
|
||||||
import '../header/field_cell.dart';
|
import 'cells/date_cell/date_cell.dart';
|
||||||
import '../header/field_editor.dart';
|
import 'cells/select_option_cell/select_option_cell.dart';
|
||||||
|
import 'cells/text_cell/text_cell.dart';
|
||||||
|
import 'cells/url_cell/url_cell.dart';
|
||||||
|
import '../../grid/presentation/widgets/header/field_cell.dart';
|
||||||
|
import '../../grid/presentation/widgets/header/field_editor.dart';
|
||||||
|
|
||||||
class RowDetailPage extends StatefulWidget with FlowyOverlayDelegate {
|
class RowDetailPage extends StatefulWidget with FlowyOverlayDelegate {
|
||||||
final RowDataController dataController;
|
final RowController dataController;
|
||||||
final GridCellBuilder cellBuilder;
|
final GridCellBuilder cellBuilder;
|
||||||
|
|
||||||
const RowDetailPage({
|
const RowDetailPage({
|
||||||
|
@ -42,6 +43,11 @@ class RowDetailPage extends StatefulWidget with FlowyOverlayDelegate {
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RowDetailPageState extends State<RowDetailPage> {
|
class _RowDetailPageState extends State<RowDetailPage> {
|
||||||
|
final padding = const EdgeInsets.symmetric(
|
||||||
|
horizontal: 40,
|
||||||
|
vertical: 20,
|
||||||
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return FlowyDialog(
|
return FlowyDialog(
|
||||||
|
@ -54,17 +60,12 @@ class _RowDetailPageState extends State<RowDetailPage> {
|
||||||
return bloc;
|
return bloc;
|
||||||
},
|
},
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 40, vertical: 20),
|
padding: padding,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
SizedBox(
|
const _Header(),
|
||||||
height: 30,
|
|
||||||
child: Row(
|
|
||||||
children: const [Spacer(), _CloseButton()],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
Expanded(
|
||||||
child: _PropertyList(
|
child: _PropertyColumn(
|
||||||
cellBuilder: widget.cellBuilder,
|
cellBuilder: widget.cellBuilder,
|
||||||
viewId: widget.dataController.viewId,
|
viewId: widget.dataController.viewId,
|
||||||
),
|
),
|
||||||
|
@ -77,6 +78,20 @@ class _RowDetailPageState extends State<RowDetailPage> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _Header extends StatelessWidget {
|
||||||
|
const _Header({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SizedBox(
|
||||||
|
height: 30,
|
||||||
|
child: Row(
|
||||||
|
children: const [Spacer(), _CloseButton()],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class _CloseButton extends StatelessWidget {
|
class _CloseButton extends StatelessWidget {
|
||||||
const _CloseButton({Key? key}) : super(key: key);
|
const _CloseButton({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@ -84,9 +99,7 @@ class _CloseButton extends StatelessWidget {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return FlowyIconButton(
|
return FlowyIconButton(
|
||||||
width: 24,
|
width: 24,
|
||||||
onPressed: () {
|
onPressed: () => FlowyOverlay.pop(context),
|
||||||
FlowyOverlay.pop(context);
|
|
||||||
},
|
|
||||||
iconPadding: const EdgeInsets.fromLTRB(2, 2, 2, 2),
|
iconPadding: const EdgeInsets.fromLTRB(2, 2, 2, 2),
|
||||||
icon: svgWidget(
|
icon: svgWidget(
|
||||||
"home/close",
|
"home/close",
|
||||||
|
@ -96,11 +109,11 @@ class _CloseButton extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _PropertyList extends StatelessWidget {
|
class _PropertyColumn extends StatelessWidget {
|
||||||
final String viewId;
|
final String viewId;
|
||||||
final GridCellBuilder cellBuilder;
|
final GridCellBuilder cellBuilder;
|
||||||
final ScrollController _scrollController;
|
final ScrollController _scrollController;
|
||||||
_PropertyList({
|
_PropertyColumn({
|
||||||
required this.viewId,
|
required this.viewId,
|
||||||
required this.cellBuilder,
|
required this.cellBuilder,
|
||||||
Key? key,
|
Key? key,
|
||||||
|
@ -114,11 +127,11 @@ class _PropertyList extends StatelessWidget {
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
Expanded(child: _wrapScrollbar(buildRowCells(state))),
|
Expanded(child: _wrapScrollbar(buildPropertyCells(state))),
|
||||||
const VSpace(10),
|
const VSpace(10),
|
||||||
_CreateFieldButton(
|
_CreatePropertyButton(
|
||||||
viewId: viewId,
|
viewId: viewId,
|
||||||
onClosed: _handleDidCreateField,
|
onClosed: _scrollToNewProperty,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
@ -126,12 +139,12 @@ class _PropertyList extends StatelessWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget buildRowCells(RowDetailState state) {
|
Widget buildPropertyCells(RowDetailState state) {
|
||||||
return ListView.separated(
|
return ListView.separated(
|
||||||
controller: _scrollController,
|
controller: _scrollController,
|
||||||
itemCount: state.gridCells.length,
|
itemCount: state.gridCells.length,
|
||||||
itemBuilder: (BuildContext context, int index) {
|
itemBuilder: (BuildContext context, int index) {
|
||||||
return _RowDetailCell(
|
return _PropertyCell(
|
||||||
cellId: state.gridCells[index],
|
cellId: state.gridCells[index],
|
||||||
cellBuilder: cellBuilder,
|
cellBuilder: cellBuilder,
|
||||||
);
|
);
|
||||||
|
@ -152,7 +165,7 @@ class _PropertyList extends StatelessWidget {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _handleDidCreateField() {
|
void _scrollToNewProperty() {
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
_scrollController.animateTo(
|
_scrollController.animateTo(
|
||||||
_scrollController.position.maxScrollExtent,
|
_scrollController.position.maxScrollExtent,
|
||||||
|
@ -163,21 +176,21 @@ class _PropertyList extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _CreateFieldButton extends StatefulWidget {
|
class _CreatePropertyButton extends StatefulWidget {
|
||||||
final String viewId;
|
final String viewId;
|
||||||
final VoidCallback onClosed;
|
final VoidCallback onClosed;
|
||||||
|
|
||||||
const _CreateFieldButton({
|
const _CreatePropertyButton({
|
||||||
required this.viewId,
|
required this.viewId,
|
||||||
required this.onClosed,
|
required this.onClosed,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<_CreateFieldButton> createState() => _CreateFieldButtonState();
|
State<_CreatePropertyButton> createState() => _CreatePropertyButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _CreateFieldButtonState extends State<_CreateFieldButton> {
|
class _CreatePropertyButtonState extends State<_CreatePropertyButton> {
|
||||||
late PopoverController popoverController;
|
late PopoverController popoverController;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -234,20 +247,20 @@ class _CreateFieldButtonState extends State<_CreateFieldButton> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RowDetailCell extends StatefulWidget {
|
class _PropertyCell extends StatefulWidget {
|
||||||
final CellIdentifier cellId;
|
final CellIdentifier cellId;
|
||||||
final GridCellBuilder cellBuilder;
|
final GridCellBuilder cellBuilder;
|
||||||
const _RowDetailCell({
|
const _PropertyCell({
|
||||||
required this.cellId,
|
required this.cellId,
|
||||||
required this.cellBuilder,
|
required this.cellBuilder,
|
||||||
Key? key,
|
Key? key,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() => _RowDetailCellState();
|
State<StatefulWidget> createState() => _PropertyCellState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RowDetailCellState extends State<_RowDetailCell> {
|
class _PropertyCellState extends State<_PropertyCell> {
|
||||||
final PopoverController popover = PopoverController();
|
final PopoverController popover = PopoverController();
|
||||||
|
|
||||||
@override
|
@override
|
|
@ -8,8 +8,6 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra/size.dart';
|
import 'package:flowy_infra/size.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/rounded_button.dart';
|
import 'package:flowy_infra_ui/widget/rounded_button.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,8 @@
|
||||||
import 'package:appflowy/core/network_monitor.dart';
|
import 'package:appflowy/core/network_monitor.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_service.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/application/field/field_action_sheet_bloc.dart';
|
import 'package:appflowy/plugins/database_view/application/field/field_action_sheet_bloc.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
|
import 'package:appflowy/plugins/database_view/application/field/field_controller.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
|
import 'package:appflowy/plugins/database_view/application/field/field_service.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/setting/property_bloc.dart';
|
import 'package:appflowy/plugins/database_view/application/setting/property_bloc.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/checkbox_cell_bloc.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/date_cell_bloc.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/number_cell_bloc.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_cell_bloc.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/text_cell_bloc.dart';
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/grid_header_bloc.dart';
|
import 'package:appflowy/plugins/database_view/grid/application/grid_header_bloc.dart';
|
||||||
import 'package:appflowy/user/application/user_listener.dart';
|
import 'package:appflowy/user/application/user_listener.dart';
|
||||||
import 'package:appflowy/user/application/user_service.dart';
|
import 'package:appflowy/user/application/user_service.dart';
|
||||||
|
@ -161,38 +154,6 @@ void _resolveGridDeps(GetIt getIt) {
|
||||||
(data, _) => FieldActionSheetBloc(fieldCellContext: data),
|
(data, _) => FieldActionSheetBloc(fieldCellContext: data),
|
||||||
);
|
);
|
||||||
|
|
||||||
getIt.registerFactoryParam<TextCellBloc, TextCellController, void>(
|
|
||||||
(context, _) => TextCellBloc(
|
|
||||||
cellController: context,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
getIt.registerFactoryParam<SelectOptionCellBloc, SelectOptionCellController,
|
|
||||||
void>(
|
|
||||||
(context, _) => SelectOptionCellBloc(
|
|
||||||
cellController: context,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
getIt.registerFactoryParam<NumberCellBloc, TextCellController, void>(
|
|
||||||
(context, _) => NumberCellBloc(
|
|
||||||
cellController: context,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
getIt.registerFactoryParam<DateCellBloc, DateCellController, void>(
|
|
||||||
(context, _) => DateCellBloc(
|
|
||||||
cellController: context,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
getIt.registerFactoryParam<CheckboxCellBloc, TextCellController, void>(
|
|
||||||
(cellData, _) => CheckboxCellBloc(
|
|
||||||
service: CellBackendService(),
|
|
||||||
cellController: cellData,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
getIt.registerFactoryParam<DatabasePropertyBloc, String, FieldController>(
|
getIt.registerFactoryParam<DatabasePropertyBloc, String, FieldController>(
|
||||||
(viewId, cache) =>
|
(viewId, cache) =>
|
||||||
DatabasePropertyBloc(viewId: viewId, fieldController: cache),
|
DatabasePropertyBloc(viewId: viewId, fieldController: cache),
|
||||||
|
|
|
@ -6,7 +6,6 @@ import 'package:appflowy_editor/appflowy_editor.dart';
|
||||||
import 'package:file_picker/file_picker.dart';
|
import 'package:file_picker/file_picker.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/container.dart';
|
import 'package:flowy_infra_ui/style_widget/container.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
|
|
|
@ -5,7 +5,6 @@ import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra/theme.dart';
|
import 'package:flowy_infra/theme.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
import 'package:appflowy/util/file_picker/file_picker_service.dart';
|
import 'package:appflowy/util/file_picker/file_picker_service.dart';
|
||||||
import 'package:appflowy/workspace/application/settings/settings_location_cubit.dart';
|
import 'package:appflowy/workspace/application/settings/settings_location_cubit.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/text.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
import '../../../../generated/locale_keys.g.dart';
|
import '../../../../generated/locale_keys.g.dart';
|
||||||
|
|
|
@ -4,9 +4,6 @@ import 'package:appflowy/workspace/application/settings/settings_file_exporter_c
|
||||||
import 'package:dartz/dartz.dart' as dartz;
|
import 'package:dartz/dartz.dart' as dartz;
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/text.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:appflowy_backend/dispatch/dispatch.dart';
|
import 'package:appflowy_backend/dispatch/dispatch.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
|
import 'package:appflowy_backend/protobuf/flowy-error/errors.pbserver.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-folder/workspace.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-folder/workspace.pb.dart';
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/hover.dart';
|
import 'package:flowy_infra_ui/style_widget/hover.dart';
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:styled_widget/styled_widget.dart';
|
import 'package:styled_widget/styled_widget.dart';
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,6 @@ import 'package:appflowy_editor_plugins/src/extensions/theme_extension.dart';
|
||||||
import 'package:appflowy_popover/appflowy_popover.dart';
|
import 'package:appflowy_popover/appflowy_popover.dart';
|
||||||
import 'package:flowy_infra/theme_extension.dart';
|
import 'package:flowy_infra/theme_extension.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/color_picker.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
|
|
@ -12,3 +12,11 @@ export 'src/flowy_overlay/flowy_dialog.dart';
|
||||||
export 'src/flowy_overlay/appflowy_popover.dart';
|
export 'src/flowy_overlay/appflowy_popover.dart';
|
||||||
export 'style_widget/text.dart';
|
export 'style_widget/text.dart';
|
||||||
export 'style_widget/text_field.dart';
|
export 'style_widget/text_field.dart';
|
||||||
|
|
||||||
|
export 'style_widget/button.dart';
|
||||||
|
export 'style_widget/icon_button.dart';
|
||||||
|
export 'style_widget/scrolling/styled_scroll_bar.dart';
|
||||||
|
export '/widget/spacing.dart';
|
||||||
|
export 'style_widget/scrolling/styled_list.dart';
|
||||||
|
export 'style_widget/button.dart';
|
||||||
|
export 'style_widget/color_picker.dart';
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
import 'package:flowy_infra/image.dart';
|
import 'package:flowy_infra/image.dart';
|
||||||
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/button.dart';
|
|
||||||
import 'package:flowy_infra_ui/style_widget/scrolling/styled_list.dart';
|
|
||||||
import 'package:flowy_infra_ui/widget/spacing.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class ColorOption {
|
class ColorOption {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
import 'package:appflowy/plugins/database_view/application/cell/cell_controller_builder.dart';
|
||||||
import 'package:appflowy/plugins/database_view/application/setting/group_bloc.dart';
|
import 'package:appflowy/plugins/database_view/application/setting/group_bloc.dart';
|
||||||
import 'package:appflowy/plugins/database_view/board/application/board_bloc.dart';
|
import 'package:appflowy/plugins/database_view/board/application/board_bloc.dart';
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_editor_bloc.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor_bloc.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,7 @@ class BoardTestContext {
|
||||||
final RowInfo rowInfo = rowInfos.last;
|
final RowInfo rowInfo = rowInfos.last;
|
||||||
final rowCache = _boardDataController.rowCache;
|
final rowCache = _boardDataController.rowCache;
|
||||||
|
|
||||||
final rowDataController = RowDataController(
|
final rowDataController = RowController(
|
||||||
viewId: rowInfo.viewId,
|
viewId: rowInfo.viewId,
|
||||||
rowId: rowInfo.rowPB.id,
|
rowId: rowInfo.rowPB.id,
|
||||||
rowCache: rowCache,
|
rowCache: rowCache,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:appflowy/plugins/database_view/grid/application/cell/select_option_editor_bloc.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/select_option_editor_bloc.dart';
|
||||||
import 'package:dartz/dartz.dart';
|
import 'package:dartz/dartz.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/field_entities.pb.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/select_type_option.pb.dart';
|
||||||
|
|
|
@ -72,7 +72,7 @@ class GridTestContext {
|
||||||
final RowInfo rowInfo = rowInfos[rowIndex];
|
final RowInfo rowInfo = rowInfos[rowIndex];
|
||||||
final rowCache = gridController.rowCache;
|
final rowCache = gridController.rowCache;
|
||||||
|
|
||||||
final rowDataController = RowDataController(
|
final rowDataController = RowController(
|
||||||
rowId: rowInfo.rowPB.id,
|
rowId: rowInfo.rowPB.id,
|
||||||
viewId: rowInfo.viewId,
|
viewId: rowInfo.viewId,
|
||||||
rowCache: rowCache,
|
rowCache: rowCache,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/text_field.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/text_field.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'dart:collection';
|
import 'dart:collection';
|
||||||
|
|
||||||
import 'package:appflowy/plugins/database_view/grid/presentation/widgets/cell/select_option_cell/text_field.dart';
|
import 'package:appflowy/plugins/database_view/widgets/row/cells/select_option_cell/text_field.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart';
|
import 'package:appflowy_backend/protobuf/flowy-database/protobuf.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue