Skip to content

Commit

Permalink
feat: add same delete design in database (AppFlowy-IO#6620)
Browse files Browse the repository at this point in the history
* add same delete design in database

* fix: remove padding when widget is null or function is null
  • Loading branch information
Ahad-patel authored and LucasXu0 committed Dec 9, 2024
1 parent 3fdd19f commit c35a4be
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -199,22 +199,30 @@ class FieldActionCell extends StatelessWidget {
(action == FieldAction.duplicate || action == FieldAction.delete)) {
enable = false;
}

return FlowyButton(
return FlowyIconTextButton(
resetHoverOnRebuild: false,
disable: !enable,
text: FlowyText(
onHover: (_) => popoverMutex?.close(),
onTap: () => action.run(context, viewId, fieldInfo),
// show the error color when delete is hovered
textBuilder: (onHover) => FlowyText(
action.title(fieldInfo),
lineHeight: 1.0,
color: enable ? null : Theme.of(context).disabledColor,
color: enable
? action == FieldAction.delete && onHover
? Theme.of(context).colorScheme.error
: null
: Theme.of(context).disabledColor,
),
onHover: (_) => popoverMutex?.close(),
onTap: () => action.run(context, viewId, fieldInfo),
leftIcon: action.leading(
leftIconBuilder: (onHover) => action.leading(
fieldInfo,
enable ? null : Theme.of(context).disabledColor,
enable
? action == FieldAction.delete && onHover
? Theme.of(context).colorScheme.error
: null
: Theme.of(context).disabledColor,
),
rightIcon: action.trailing(context, fieldInfo),
rightIconBuilder: (_) => action.trailing(context, fieldInfo),
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ class FlowyIconTextButton extends StatelessWidget {
final VoidCallback? onSecondaryTap;
final void Function(bool)? onHover;
final EdgeInsets? margin;
final Widget Function(bool onHover)? leftIconBuilder;
final Widget Function(bool onHover)? rightIconBuilder;
final Widget? Function(bool onHover)? leftIconBuilder;
final Widget? Function(bool onHover)? rightIconBuilder;
final Color? hoverColor;
final bool isSelected;
final BorderRadius? radius;
Expand All @@ -29,6 +29,7 @@ class FlowyIconTextButton extends StatelessWidget {
final double iconPadding;
final bool expand;
final Color? borderColor;
final bool resetHoverOnRebuild;

const FlowyIconTextButton({
super.key,
Expand All @@ -53,6 +54,7 @@ class FlowyIconTextButton extends StatelessWidget {
this.iconPadding = 6,
this.expand = false,
this.borderColor,
this.resetHoverOnRebuild = true,
});

@override
Expand All @@ -64,6 +66,7 @@ class FlowyIconTextButton extends StatelessWidget {
onTap: disable ? null : onTap,
onSecondaryTap: disable ? null : onSecondaryTap,
child: FlowyHover(
resetHoverOnRebuild: resetHoverOnRebuild,
cursor:
disable ? SystemMouseCursors.forbidden : SystemMouseCursors.click,
style: HoverStyle(
Expand All @@ -81,11 +84,12 @@ class FlowyIconTextButton extends StatelessWidget {
Widget _render(BuildContext context, bool onHover) {
final List<Widget> children = [];

if (leftIconBuilder != null) {
final Widget? leftIcon = leftIconBuilder?.call(onHover);
if (leftIcon != null) {
children.add(
SizedBox.fromSize(
size: leftIconSize,
child: leftIconBuilder!(onHover),
child: leftIcon,
),
);
children.add(HSpace(iconPadding));
Expand All @@ -97,10 +101,11 @@ class FlowyIconTextButton extends StatelessWidget {
children.add(textBuilder(onHover));
}

if (rightIconBuilder != null) {
final Widget? rightIcon = rightIconBuilder?.call(onHover);
if (rightIcon != null) {
children.add(HSpace(iconPadding));
// No need to define the size of rightIcon. Just use its intrinsic width
children.add(rightIconBuilder!(onHover));
children.add(rightIcon);
}

Widget child = Row(
Expand Down

0 comments on commit c35a4be

Please sign in to comment.