3e4ff52cd3
Signed-off-by: dab246 <tdvu@linagora.com>
33 lines
847 B
Dart
33 lines
847 B
Dart
import 'package:core/presentation/extensions/color_extension.dart';
|
|
import 'package:equatable/equatable.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
typedef OnPopupMenuActionClick = void Function(PopupMenuItemAction action);
|
|
|
|
abstract class PopupMenuItemAction<T> with EquatableMixin {
|
|
final T action;
|
|
|
|
PopupMenuItemAction(this.action);
|
|
|
|
@override
|
|
List<Object?> get props => [action];
|
|
|
|
String get actionName;
|
|
|
|
Color get actionNameColor => Colors.black;
|
|
|
|
void onClick(OnPopupMenuActionClick callback) => callback(this);
|
|
}
|
|
|
|
mixin OptionalPopupIcon {
|
|
String get actionIcon;
|
|
|
|
Color get actionIconColor => AppColor.steelGrayA540;
|
|
|
|
double get actionIconSize => 20.0;
|
|
}
|
|
|
|
abstract class PopupMenuItemActionRequiredIcon<T>
|
|
extends PopupMenuItemAction<T> with OptionalPopupIcon {
|
|
PopupMenuItemActionRequiredIcon(super.action);
|
|
} |