TF-4229 Implement search by label filter in mobile

This commit is contained in:
dab246
2026-01-05 11:25:29 +07:00
committed by Dat H. Pham
parent 96f03eaa40
commit a35b263dca
11 changed files with 362 additions and 71 deletions
@@ -45,6 +45,8 @@ mixin OptionalPopupSelectedIcon<T> {
Color get selectedIconColor => AppColor.primaryMain;
double get selectedIconSize => 16.0;
bool get isArrangeRTL => true;
}
mixin OptionalPopupHoverIcon {
@@ -19,6 +19,7 @@ class ContextMenuDialogItem extends StatelessWidget {
Widget? iconWidget;
Widget? selectedIconWidget;
bool isSelected = false;
bool isArrangeRTL = true;
if (menuAction is ContextMenuItemActionRequiredIcon) {
final specificMenuAction =
@@ -47,6 +48,7 @@ class ContextMenuDialogItem extends StatelessWidget {
),
);
isSelected = specificMenuAction.selectedAction == menuAction.action;
isArrangeRTL = specificMenuAction.isArrangeRTL;
} else if (menuAction is ContextMenuItemActionRequiredFull) {
final specificMenuAction =
menuAction as ContextMenuItemActionRequiredFull;
@@ -71,8 +73,12 @@ class ContextMenuDialogItem extends StatelessWidget {
),
);
isSelected = specificMenuAction.selectedAction == menuAction.action;
isArrangeRTL = specificMenuAction.isArrangeRTL;
}
final leadingWidget =
iconWidget ?? (isArrangeRTL ? const SizedBox(width: 24) : null);
return Material(
type: MaterialType.transparency,
child: InkWell(
@@ -81,7 +87,9 @@ class ContextMenuDialogItem extends StatelessWidget {
height: 48,
child: Row(
children: [
if (iconWidget != null) iconWidget else const SizedBox(width: 24),
if (leadingWidget != null) leadingWidget,
if (!isArrangeRTL && selectedIconWidget != null)
selectedIconWidget,
Expanded(
child: Text(
menuAction.actionName,
@@ -95,7 +103,7 @@ class ContextMenuDialogItem extends StatelessWidget {
overflow: TextOverflow.ellipsis,
),
),
if (isSelected && selectedIconWidget != null)
if (isArrangeRTL && isSelected && selectedIconWidget != null)
selectedIconWidget
else
const SizedBox(width: 24),
@@ -31,6 +31,8 @@ mixin OptionalSelectedIcon<T> {
String get selectedIcon;
Color get selectedIconColor => AppColor.primaryMain;
bool get isArrangeRTL => true;
}
abstract class ContextMenuItemActionRequiredIcon<T>