Don’t allow sliding items in invoice item selector
This commit is contained in:
parent
f5a9cda3d1
commit
f4ece89579
|
|
@ -15,6 +15,7 @@ class DismissibleEntity extends StatelessWidget {
|
|||
@required this.child,
|
||||
@required this.isSelected,
|
||||
this.showCheckbox = true,
|
||||
this.isDismissible = true,
|
||||
});
|
||||
|
||||
final UserCompanyEntity userCompany;
|
||||
|
|
@ -22,6 +23,7 @@ class DismissibleEntity extends StatelessWidget {
|
|||
final Widget child;
|
||||
final bool isSelected;
|
||||
final bool showCheckbox;
|
||||
final bool isDismissible;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -34,6 +36,23 @@ class DismissibleEntity extends StatelessWidget {
|
|||
final isMultiselect =
|
||||
store.state.getListState(entity.entityType).isInMultiselect();
|
||||
|
||||
final widget = SelectedIndicator(
|
||||
isSelected: isSelected &&
|
||||
showCheckbox &&
|
||||
!isMultiselect &&
|
||||
!entity.entityType.isSetting,
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
minHeight: 60,
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
|
||||
if (!isDismissible) {
|
||||
return widget;
|
||||
}
|
||||
|
||||
return Slidable(
|
||||
actionPane: SlidableDrawerActionPane(),
|
||||
key: Key('__${entity.entityKey}_${entity.entityState}__'),
|
||||
|
|
@ -91,18 +110,7 @@ class DismissibleEntity extends StatelessWidget {
|
|||
handleEntityAction(context, entity, EntityAction.delete),
|
||||
),
|
||||
],
|
||||
child: SelectedIndicator(
|
||||
isSelected: isSelected &&
|
||||
showCheckbox &&
|
||||
!isMultiselect &&
|
||||
!entity.entityType.isSetting,
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(
|
||||
minHeight: 60,
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
),
|
||||
child: widget,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ class ExpenseListItem extends StatelessWidget {
|
|||
this.onLongPress,
|
||||
this.onCheckboxChanged,
|
||||
this.isChecked = false,
|
||||
this.isDismissible = true,
|
||||
});
|
||||
|
||||
final UserEntity user;
|
||||
|
|
@ -30,6 +31,7 @@ class ExpenseListItem extends StatelessWidget {
|
|||
final String filter;
|
||||
final Function(bool) onCheckboxChanged;
|
||||
final bool isChecked;
|
||||
final bool isDismissible;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -74,6 +76,7 @@ class ExpenseListItem extends StatelessWidget {
|
|||
}
|
||||
|
||||
return DismissibleEntity(
|
||||
isDismissible: isDismissible,
|
||||
isSelected: isDesktop(context) &&
|
||||
expense.id ==
|
||||
(uiState.isEditing
|
||||
|
|
|
|||
|
|
@ -204,6 +204,7 @@ class _InvoiceItemSelectorState extends State<InvoiceItemSelector>
|
|||
final String entityId = matches[index];
|
||||
final product = state.productState.map[entityId];
|
||||
return ProductListItem(
|
||||
isDismissible: false,
|
||||
onCheckboxChanged: (checked) => _toggleEntity(product),
|
||||
isChecked: _selected.contains(product),
|
||||
product: product,
|
||||
|
|
@ -244,6 +245,7 @@ class _InvoiceItemSelectorState extends State<InvoiceItemSelector>
|
|||
final String entityId = matches[index];
|
||||
final task = state.taskState.map[entityId];
|
||||
return TaskListItem(
|
||||
isDismissible: false,
|
||||
user: state.user,
|
||||
onCheckboxChanged: (checked) => _toggleEntity(task),
|
||||
isChecked: _selected.contains(task),
|
||||
|
|
@ -280,6 +282,7 @@ class _InvoiceItemSelectorState extends State<InvoiceItemSelector>
|
|||
final String entityId = matches[index];
|
||||
final expense = state.expenseState.map[entityId] ?? ExpenseEntity();
|
||||
return ExpenseListItem(
|
||||
isDismissible: false,
|
||||
user: state.user,
|
||||
onCheckboxChanged: (checked) => _toggleEntity(expense),
|
||||
isChecked: _selected.contains(expense),
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ class ProductListItem extends StatelessWidget {
|
|||
this.onLongPress,
|
||||
this.onCheckboxChanged,
|
||||
this.isChecked = false,
|
||||
this.isDismissible = true,
|
||||
});
|
||||
|
||||
final UserCompanyEntity userCompany;
|
||||
|
|
@ -27,6 +28,7 @@ class ProductListItem extends StatelessWidget {
|
|||
final GestureTapCallback onLongPress;
|
||||
final Function(bool) onCheckboxChanged;
|
||||
final bool isChecked;
|
||||
final bool isDismissible;
|
||||
|
||||
//final ValueChanged<bool> onCheckboxChanged;
|
||||
final ProductEntity product;
|
||||
|
|
@ -48,6 +50,7 @@ class ProductListItem extends StatelessWidget {
|
|||
final textStyle = TextStyle(fontSize: 16);
|
||||
|
||||
return DismissibleEntity(
|
||||
isDismissible: isDismissible,
|
||||
isSelected: isDesktop(context) &&
|
||||
product.id ==
|
||||
(uiState.isEditing
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ class TaskListItem extends StatelessWidget {
|
|||
this.onLongPress,
|
||||
this.onCheckboxChanged,
|
||||
this.isChecked = false,
|
||||
this.isDismissible = true,
|
||||
});
|
||||
|
||||
final UserEntity user;
|
||||
|
|
@ -33,6 +34,7 @@ class TaskListItem extends StatelessWidget {
|
|||
final String filter;
|
||||
final Function(bool) onCheckboxChanged;
|
||||
final bool isChecked;
|
||||
final bool isDismissible;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -57,22 +59,26 @@ class TaskListItem extends StatelessWidget {
|
|||
formatNumberType: FormatNumberType.duration);
|
||||
}, style: textStyle);
|
||||
|
||||
final startStopButton = IconButton(
|
||||
icon: task.isInvoiced
|
||||
? SizedBox()
|
||||
: Icon(
|
||||
getEntityActionIcon(
|
||||
task.isRunning ? EntityAction.stop : EntityAction.start),
|
||||
color: task.isRunning ? state.accentColor : null,
|
||||
),
|
||||
onPressed: task.isInvoiced
|
||||
? null
|
||||
: () => handleEntityAction(context, task,
|
||||
task.isRunning ? EntityAction.stop : EntityAction.start),
|
||||
visualDensity: VisualDensity.compact,
|
||||
);
|
||||
final startStopButton = !isDismissible
|
||||
? SizedBox()
|
||||
: IconButton(
|
||||
icon: task.isInvoiced
|
||||
? SizedBox()
|
||||
: Icon(
|
||||
getEntityActionIcon(task.isRunning
|
||||
? EntityAction.stop
|
||||
: EntityAction.start),
|
||||
color: task.isRunning ? state.accentColor : null,
|
||||
),
|
||||
onPressed: task.isInvoiced
|
||||
? null
|
||||
: () => handleEntityAction(context, task,
|
||||
task.isRunning ? EntityAction.stop : EntityAction.start),
|
||||
visualDensity: VisualDensity.compact,
|
||||
);
|
||||
|
||||
return DismissibleEntity(
|
||||
isDismissible: isDismissible,
|
||||
isSelected: isDesktop(context) &&
|
||||
task.id ==
|
||||
(uiState.isEditing
|
||||
|
|
|
|||
Loading…
Reference in New Issue