Second tap to edit

This commit is contained in:
Hillel Coren 2020-06-24 11:00:05 +03:00
parent 272478ba3b
commit 3931a39966
16 changed files with 84 additions and 10 deletions

View File

@ -91,8 +91,7 @@ class ClientListItem extends StatelessWidget {
)
: ActionMenuButton(
entityActions: client.getActions(
userCompany: state.userCompany,
includeEdit: true),
userCompany: state.userCompany),
isSaving: false,
entity: client,
onSelected: (context, action) =>

View File

@ -98,7 +98,6 @@ class CreditListItem extends StatelessWidget {
: ActionMenuButton(
entityActions: credit.getActions(
userCompany: state.userCompany,
includeEdit: true,
client: client),
isSaving: false,
entity: credit,

View File

@ -16,6 +16,7 @@ import 'package:invoiceninja_flutter/ui/credit/credit_presenter.dart';
import 'package:invoiceninja_flutter/ui/invoice/invoice_list_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
@ -152,7 +153,18 @@ class CreditListVM extends EntityListVM {
isLoaded: state.creditState.isLoaded && state.clientState.isLoaded,
filter: state.creditListState.filter,
onInvoiceTap: (context, credit) {
if (store.state.invoiceListState.isInMultiselect()) {
handleInvoiceAction(
context, [credit], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.creditUIState.editing.id == credit.id) {
viewEntity(context: context, entity: credit);
} else if (isDesktop(context) &&
state.creditUIState.selectedId == credit.id) {
editEntity(context: context, entity: credit);
} else {
viewEntity(context: context, entity: credit);
}
},
onRefreshed: (context) => _handleRefresh(context),
onClearEntityFilterPressed: () => store.dispatch(ClearEntityFilter()),

View File

@ -16,6 +16,7 @@ import 'package:invoiceninja_flutter/ui/expense/expense_list_item.dart';
import 'package:invoiceninja_flutter/ui/expense/expense_presenter.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
class ExpenseListBuilder extends StatelessWidget {
@ -140,6 +141,12 @@ class ExpenseListVM {
if (store.state.expenseListState.isInMultiselect()) {
handleExpenseAction(
context, [expense], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.expenseUIState.editing.id == expense.id) {
viewEntity(context: context, entity: expense);
} else if (isDesktop(context) &&
state.expenseUIState.selectedId == expense.id) {
editEntity(context: context, entity: expense);
} else {
viewEntity(context: context, entity: expense);
}

View File

@ -110,7 +110,6 @@ class InvoiceListItem extends StatelessWidget {
: ActionMenuButton(
entityActions: invoice.getActions(
userCompany: state.userCompany,
includeEdit: true,
client: client),
isSaving: false,
entity: invoice,

View File

@ -16,6 +16,7 @@ import 'package:invoiceninja_flutter/ui/invoice/invoice_list_item.dart';
import 'package:invoiceninja_flutter/ui/invoice/invoice_presenter.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
class InvoiceListBuilder extends StatelessWidget {
@ -196,6 +197,12 @@ class InvoiceListVM extends EntityListVM {
if (store.state.invoiceListState.isInMultiselect()) {
handleInvoiceAction(
context, [invoice], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.invoiceUIState.editing.id == invoice.id) {
viewEntity(context: context, entity: invoice);
} else if (isDesktop(context) &&
state.invoiceUIState.selectedId == invoice.id) {
editEntity(context: context, entity: invoice);
} else {
viewEntity(context: context, entity: invoice);
}

View File

@ -106,7 +106,6 @@ class PaymentListItem extends StatelessWidget {
: ActionMenuButton(
entityActions: payment.getActions(
userCompany: state.userCompany,
includeEdit: true,
client: client),
isSaving: false,
entity: payment,

View File

@ -17,6 +17,7 @@ import 'package:invoiceninja_flutter/ui/payment/payment_list_item.dart';
import 'package:invoiceninja_flutter/ui/payment/payment_presenter.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
class PaymentListBuilder extends StatelessWidget {
@ -135,6 +136,12 @@ class PaymentListVM {
if (store.state.paymentListState.isInMultiselect()) {
handlePaymentAction(
context, [payment], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.paymentUIState.editing.id == payment.id) {
viewEntity(context: context, entity: payment);
} else if (isDesktop(context) &&
state.paymentUIState.selectedId == payment.id) {
editEntity(context: context, entity: payment);
} else {
viewEntity(context: context, entity: payment);
}

View File

@ -91,8 +91,7 @@ class ProductListItem extends StatelessWidget {
)
: ActionMenuButton(
entityActions: product.getActions(
userCompany: state.userCompany,
includeEdit: true),
userCompany: state.userCompany),
isSaving: false,
entity: product,
onSelected: (context, action) =>

View File

@ -16,6 +16,7 @@ import 'package:invoiceninja_flutter/ui/product/product_list_item.dart';
import 'package:invoiceninja_flutter/ui/product/product_presenter.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
class ProductListBuilder extends StatelessWidget {
@ -118,6 +119,12 @@ class ProductListVM {
if (store.state.productListState.isInMultiselect()) {
handleProductAction(
context, [product], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.productUIState.editing.id == product.id) {
viewEntity(context: context, entity: product);
} else if (isDesktop(context) &&
state.productUIState.selectedId == product.id) {
editEntity(context: context, entity: product);
} else {
viewEntity(context: context, entity: product);
}

View File

@ -17,6 +17,7 @@ import 'package:invoiceninja_flutter/ui/project/project_list_item.dart';
import 'package:invoiceninja_flutter/ui/project/project_presenter.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
class ProjectListBuilder extends StatelessWidget {
@ -138,6 +139,12 @@ class ProjectListVM {
if (store.state.projectListState.isInMultiselect()) {
handleProjectAction(
context, [project], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.projectUIState.editing.id == project.id) {
viewEntity(context: context, entity: project);
} else if (isDesktop(context) &&
state.projectUIState.selectedId == project.id) {
editEntity(context: context, entity: project);
} else {
viewEntity(context: context, entity: project);
}

View File

@ -105,7 +105,6 @@ class QuoteListItem extends StatelessWidget {
: ActionMenuButton(
entityActions: quote.getActions(
userCompany: state.userCompany,
includeEdit: true,
client: client),
isSaving: false,
entity: quote,

View File

@ -16,6 +16,7 @@ import 'package:invoiceninja_flutter/ui/quote/quote_presenter.dart';
import 'package:invoiceninja_flutter/ui/invoice/invoice_list_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
@ -151,7 +152,18 @@ class QuoteListVM extends EntityListVM {
isLoaded: state.quoteState.isLoaded && state.clientState.isLoaded,
filter: state.quoteListState.filter,
onInvoiceTap: (context, quote) {
if (store.state.invoiceListState.isInMultiselect()) {
handleInvoiceAction(
context, [quote], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.quoteUIState.editing.id == quote.id) {
viewEntity(context: context, entity: quote);
} else if (isDesktop(context) &&
state.quoteUIState.selectedId == quote.id) {
editEntity(context: context, entity: quote);
} else {
viewEntity(context: context, entity: quote);
}
},
onRefreshed: (context) => _handleRefresh(context),
onClearEntityFilterPressed: () => store.dispatch(ClearEntityFilter()),

View File

@ -17,6 +17,7 @@ import 'package:invoiceninja_flutter/ui/task/task_list_item.dart';
import 'package:invoiceninja_flutter/ui/task/task_presenter.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
class TaskListBuilder extends StatelessWidget {
@ -143,6 +144,12 @@ class TaskListVM {
onTaskTap: (context, task) {
if (store.state.taskListState.isInMultiselect()) {
handleTaskAction(context, [task], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.taskUIState.editing.id == task.id) {
viewEntity(context: context, entity: task);
} else if (isDesktop(context) &&
state.taskUIState.selectedId == task.id) {
editEntity(context: context, entity: task);
} else {
viewEntity(context: context, entity: task);
}

View File

@ -16,6 +16,7 @@ import 'package:invoiceninja_flutter/ui/vendor/vendor_list_item.dart';
import 'package:invoiceninja_flutter/ui/vendor/vendor_presenter.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:redux/redux.dart';
class VendorListBuilder extends StatelessWidget {
@ -128,6 +129,12 @@ class VendorListVM {
onVendorTap: (context, vendor) {
if (store.state.vendorListState.isInMultiselect()) {
handleVendorAction(context, [vendor], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.vendorUIState.editing.id == vendor.id) {
viewEntity(context: context, entity: vendor);
} else if (isDesktop(context) &&
state.vendorUIState.selectedId == vendor.id) {
editEntity(context: context, entity: vendor);
} else {
viewEntity(context: context, entity: vendor);
}

View File

@ -15,6 +15,7 @@ import 'package:invoiceninja_flutter/redux/stub/stub_selectors.dart';
import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
import 'package:invoiceninja_flutter/redux/stub/stub_actions.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
class StubListBuilder extends StatelessWidget {
const StubListBuilder({Key key}) : super(key: key);
@ -131,6 +132,12 @@ class StubListVM {
if (store.state.stubListState.isInMultiselect()) {
handleStubAction(
context, [stub], EntityAction.toggleMultiselect);
} else if (isDesktop(context) &&
state.stubUIState.editing.id == stub.id) {
viewEntity(context: context, entity: stub);
} else if (isDesktop(context) &&
state.stubUIState.selectedId == stub.id) {
editEntity(context: context, entity: stub);
} else {
viewEntity(context: context, entity: stub);
}