fix: disable edit update or create field (#2657)

* feat: enable hide the grid property in row detail page

* feat: disable update the updatedAt or createdAt cell
This commit is contained in:
Nathan.fooo
2023-05-30 10:43:19 +08:00
committed by GitHub
parent f0c440dcad
commit 65a910291b
3 changed files with 45 additions and 28 deletions

View File

@ -34,11 +34,17 @@ class GridCellBuilder {
key: key,
);
case FieldType.DateTime:
return GridDateCell(
cellControllerBuilder: cellControllerBuilder,
key: key,
style: style,
);
case FieldType.UpdatedAt:
case FieldType.CreatedAt:
return GridDateCell(
cellControllerBuilder: cellControllerBuilder,
key: key,
editable: false,
style: style,
);
case FieldType.SingleSelect:

View File

@ -21,12 +21,14 @@ abstract class GridCellDelegate {
}
class GridDateCell extends GridCellWidget {
final bool editable;
final CellControllerBuilder cellControllerBuilder;
late final DateCellStyle? cellStyle;
GridDateCell({
GridCellStyle? style,
required this.cellControllerBuilder,
this.editable = true,
Key? key,
}) : super(key: key) {
if (style != null) {
@ -63,13 +65,7 @@ class _DateCellState extends GridCellState<GridDateCell> {
value: _cellBloc,
child: BlocBuilder<DateCellBloc, DateCellState>(
builder: (context, state) {
return AppFlowyPopover(
controller: _popover,
triggerActions: PopoverTriggerFlags.none,
direction: PopoverDirection.bottomWithLeftAligned,
constraints: BoxConstraints.loose(const Size(260, 500)),
margin: EdgeInsets.zero,
child: SizedBox.expand(
Widget dateTextWidget = SizedBox.expand(
child: Align(
alignment: alignment,
child: Padding(
@ -80,11 +76,21 @@ class _DateCellState extends GridCellState<GridDateCell> {
),
),
),
),
);
// If the cell is editable, wrap it in a popover.
if (widget.editable) {
dateTextWidget = AppFlowyPopover(
controller: _popover,
triggerActions: PopoverTriggerFlags.none,
direction: PopoverDirection.bottomWithLeftAligned,
constraints: BoxConstraints.loose(const Size(260, 500)),
margin: EdgeInsets.zero,
child: dateTextWidget,
popupBuilder: (BuildContext popoverContent) {
return DateCellEditor(
cellController:
widget.cellControllerBuilder.build() as DateCellController,
cellController: widget.cellControllerBuilder.build()
as DateCellController,
onDismissed: () => widget.onCellEditing.value = false,
);
},
@ -92,6 +98,8 @@ class _DateCellState extends GridCellState<GridDateCell> {
widget.onCellEditing.value = false;
},
);
}
return dateTextWidget;
},
),
);
@ -106,8 +114,11 @@ class _DateCellState extends GridCellState<GridDateCell> {
@override
void requestBeginFocus() {
_popover.show();
if (widget.editable) {
widget.onCellEditing.value = true;
}
}
@override
String? onCopy() => _cellBloc.state.dateStr;

View File

@ -53,8 +53,8 @@ packages:
dependency: "direct main"
description:
path: "."
ref: "29ee7a3"
resolved-ref: "29ee7a343f4ded8a15bc74ea0df6a458e70cb231"
ref: "9732d30"
resolved-ref: "9732d30e852ccb832785d6fff3923966452ffcf4"
url: "https://github.com/AppFlowy-IO/appflowy-editor.git"
source: git
version: "0.1.12"