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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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,35 +65,41 @@ 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(
child: Align(
alignment: alignment,
child: Padding(
padding: GridSize.cellContentInsets,
child: FlowyText.medium(
state.dateStr,
overflow: TextOverflow.ellipsis,
),
Widget dateTextWidget = SizedBox.expand(
child: Align(
alignment: alignment,
child: Padding(
padding: GridSize.cellContentInsets,
child: FlowyText.medium(
state.dateStr,
overflow: TextOverflow.ellipsis,
),
),
),
popupBuilder: (BuildContext popoverContent) {
return DateCellEditor(
cellController:
widget.cellControllerBuilder.build() as DateCellController,
onDismissed: () => widget.onCellEditing.value = false,
);
},
onClose: () {
widget.onCellEditing.value = false;
},
);
// 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,
onDismissed: () => widget.onCellEditing.value = false,
);
},
onClose: () {
widget.onCellEditing.value = false;
},
);
}
return dateTextWidget;
},
),
);
@ -106,7 +114,10 @@ class _DateCellState extends GridCellState<GridDateCell> {
@override
void requestBeginFocus() {
_popover.show();
widget.onCellEditing.value = true;
if (widget.editable) {
widget.onCellEditing.value = true;
}
}
@override

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"