Navigation...

This commit is contained in:
Hillel Coren 2020-05-20 14:57:49 +03:00
parent 8541a585ce
commit eee5fe965f
6 changed files with 18 additions and 9 deletions

View File

@ -71,6 +71,7 @@ class EntitiesListTile extends StatelessWidget {
this.onLongPress, this.onLongPress,
this.title, this.title,
this.subtitle, this.subtitle,
@required this.isFilter,
}); });
final Function onTap; final Function onTap;
@ -78,16 +79,15 @@ class EntitiesListTile extends StatelessWidget {
final EntityType entityType; final EntityType entityType;
final String title; final String title;
final String subtitle; final String subtitle;
final bool isFilter;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final store = StoreProvider.of<AppState>(context); final store = StoreProvider.of<AppState>(context);
final state = store.state; final state = store.state;
final mainRoute = state.uiState.mainRoute; final mainRoute = state.uiState.mainRoute;
final isFiltered = final isFilterMatch =
isNotMobile(context) && state.uiState.filterEntityType != null; isFilter && entityType.toString() == mainRoute.replaceFirst('/', '');
final isFIlterMatch =
isFiltered && entityType.toString() == mainRoute.replaceFirst('/', '');
return Column( return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -95,7 +95,7 @@ class EntitiesListTile extends StatelessWidget {
Material( Material(
color: Theme.of(context).cardColor, color: Theme.of(context).cardColor,
child: SelectedIndicator( child: SelectedIndicator(
isSelected: isFIlterMatch, isSelected: isFilterMatch,
isMenu: true, isMenu: true,
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10), padding: const EdgeInsets.symmetric(horizontal: 10),
@ -103,7 +103,7 @@ class EntitiesListTile extends StatelessWidget {
title: Text(title), title: Text(title),
subtitle: Text(subtitle ?? ''), subtitle: Text(subtitle ?? ''),
leading: Icon(getEntityIcon(entityType), size: 18.0), leading: Icon(getEntityIcon(entityType), size: 18.0),
trailing: isFiltered ? null : Icon(Icons.navigate_next), trailing: isFilter ? null : Icon(Icons.navigate_next),
onTap: onTap, onTap: onTap,
onLongPress: onLongPress, onLongPress: onLongPress,
), ),

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:invoiceninja_flutter/ui/app/buttons/action_flat_button.dart'; import 'package:invoiceninja_flutter/ui/app/buttons/action_flat_button.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
class SaveCancelButtons extends StatelessWidget { class SaveCancelButtons extends StatelessWidget {
const SaveCancelButtons({ const SaveCancelButtons({

View File

@ -12,13 +12,11 @@ import 'package:invoiceninja_flutter/redux/quote/quote_selectors.dart';
import 'package:invoiceninja_flutter/redux/task/task_selectors.dart'; import 'package:invoiceninja_flutter/redux/task/task_selectors.dart';
import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart'; import 'package:invoiceninja_flutter/ui/app/FieldGrid.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart'; import 'package:invoiceninja_flutter/ui/app/entities/entity_list_tile.dart';
import 'package:invoiceninja_flutter/ui/app/entities/entity_state_title.dart';
import 'package:invoiceninja_flutter/ui/app/entity_header.dart'; import 'package:invoiceninja_flutter/ui/app/entity_header.dart';
import 'package:invoiceninja_flutter/ui/app/icon_message.dart'; import 'package:invoiceninja_flutter/ui/app/icon_message.dart';
import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart'; import 'package:invoiceninja_flutter/ui/app/lists/list_divider.dart';
import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart'; import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart'; import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/icons.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
class ClientOverview extends StatelessWidget { class ClientOverview extends StatelessWidget {
@ -105,6 +103,7 @@ class ClientOverview extends StatelessWidget {
FieldGrid(fields), FieldGrid(fields),
ListDivider(), ListDivider(),
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.invoice, entityType: EntityType.invoice,
title: localization.invoices, title: localization.invoices,
onTap: () => viewModel.onEntityPressed(context, EntityType.invoice), onTap: () => viewModel.onEntityPressed(context, EntityType.invoice),
@ -115,6 +114,7 @@ class ClientOverview extends StatelessWidget {
.present(localization.active, localization.archived), .present(localization.active, localization.archived),
), ),
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.payment, entityType: EntityType.payment,
title: localization.payments, title: localization.payments,
onTap: () => viewModel.onEntityPressed(context, EntityType.payment), onTap: () => viewModel.onEntityPressed(context, EntityType.payment),
@ -126,6 +126,7 @@ class ClientOverview extends StatelessWidget {
), ),
if (company.isModuleEnabled(EntityType.quote)) if (company.isModuleEnabled(EntityType.quote))
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.quote, entityType: EntityType.quote,
title: localization.quotes, title: localization.quotes,
onTap: () => viewModel.onEntityPressed(context, EntityType.quote), onTap: () => viewModel.onEntityPressed(context, EntityType.quote),
@ -137,6 +138,7 @@ class ClientOverview extends StatelessWidget {
), ),
if (company.isModuleEnabled(EntityType.credit)) if (company.isModuleEnabled(EntityType.credit))
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.credit, entityType: EntityType.credit,
title: localization.credits, title: localization.credits,
onTap: () => viewModel.onEntityPressed(context, EntityType.credit), onTap: () => viewModel.onEntityPressed(context, EntityType.credit),
@ -148,6 +150,7 @@ class ClientOverview extends StatelessWidget {
), ),
if (company.isModuleEnabled(EntityType.project)) if (company.isModuleEnabled(EntityType.project))
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.project, entityType: EntityType.project,
title: localization.projects, title: localization.projects,
onTap: () => viewModel.onEntityPressed(context, EntityType.project), onTap: () => viewModel.onEntityPressed(context, EntityType.project),
@ -159,6 +162,7 @@ class ClientOverview extends StatelessWidget {
), ),
if (company.isModuleEnabled(EntityType.task)) if (company.isModuleEnabled(EntityType.task))
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.task, entityType: EntityType.task,
title: localization.tasks, title: localization.tasks,
onTap: () => viewModel.onEntityPressed(context, EntityType.task), onTap: () => viewModel.onEntityPressed(context, EntityType.task),
@ -169,6 +173,7 @@ class ClientOverview extends StatelessWidget {
), ),
if (company.isModuleEnabled(EntityType.expense)) if (company.isModuleEnabled(EntityType.expense))
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.expense, entityType: EntityType.expense,
title: localization.expenses, title: localization.expenses,
onTap: () => viewModel.onEntityPressed(context, EntityType.expense), onTap: () => viewModel.onEntityPressed(context, EntityType.expense),

View File

@ -55,6 +55,7 @@ class _GroupViewState extends State<GroupView> {
), ),
ListDivider(), ListDivider(),
EntitiesListTile( EntitiesListTile(
isFilter: widget.isFilter,
entityType: EntityType.client, entityType: EntityType.client,
title: localization.clients, title: localization.clients,
onTap: () => viewModel.onClientsPressed(context), onTap: () => viewModel.onClientsPressed(context),

View File

@ -109,6 +109,7 @@ class _ProjectViewState extends State<ProjectView> {
height: 12.0, height: 12.0,
), ),
EntitiesListTile( EntitiesListTile(
isFilter: widget.isFilter,
entityType: EntityType.task, entityType: EntityType.task,
title: localization.tasks, title: localization.tasks,
onTap: () => viewModel.onTasksPressed(context), onTap: () => viewModel.onTasksPressed(context),

View File

@ -44,6 +44,7 @@ class UserView extends StatelessWidget {
height: 1.0, height: 1.0,
), ),
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
title: localization.invoices, title: localization.invoices,
onTap: () => viewModel.onEntityPressed(context, EntityType.invoice), onTap: () => viewModel.onEntityPressed(context, EntityType.invoice),
onLongPress: () => onLongPress: () =>
@ -53,6 +54,7 @@ class UserView extends StatelessWidget {
.present(localization.active, localization.archived), .present(localization.active, localization.archived),
), ),
EntitiesListTile( EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.payment, entityType: EntityType.payment,
title: localization.payments, title: localization.payments,
onTap: () => viewModel.onEntityPressed(context, EntityType.payment), onTap: () => viewModel.onEntityPressed(context, EntityType.payment),
@ -64,6 +66,7 @@ class UserView extends StatelessWidget {
), ),
company.isModuleEnabled(EntityType.quote) company.isModuleEnabled(EntityType.quote)
? EntitiesListTile( ? EntitiesListTile(
isFilter: isFilter,
entityType: EntityType.quote, entityType: EntityType.quote,
title: localization.quotes, title: localization.quotes,
onTap: () => onTap: () =>