Add contacts edit screen to quote/credits
This commit is contained in:
parent
294702a2c1
commit
8195a4729a
|
|
@ -1,5 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart';
|
||||||
|
|
@ -41,7 +43,7 @@ class _CreditEditState extends State<CreditEdit>
|
||||||
|
|
||||||
final index =
|
final index =
|
||||||
viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen;
|
viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen;
|
||||||
_controller = TabController(vsync: this, length: 3, initialIndex: index);
|
_controller = TabController(vsync: this, length: 4, initialIndex: index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -65,8 +67,11 @@ class _CreditEditState extends State<CreditEdit>
|
||||||
final viewModel = widget.viewModel;
|
final viewModel = widget.viewModel;
|
||||||
final invoice = viewModel.invoice;
|
final invoice = viewModel.invoice;
|
||||||
final state = viewModel.state;
|
final state = viewModel.state;
|
||||||
|
final prefState = state.prefState;
|
||||||
|
final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice);
|
||||||
|
|
||||||
return EditScaffold(
|
return EditScaffold(
|
||||||
|
isFullscreen: isFullscreen,
|
||||||
entity: invoice,
|
entity: invoice,
|
||||||
title: invoice.isNew ? localization.newCredit : localization.editCredit,
|
title: invoice.isNew ? localization.newCredit : localization.editCredit,
|
||||||
onCancelPressed: (context) => viewModel.onCancelPressed(context),
|
onCancelPressed: (context) => viewModel.onCancelPressed(context),
|
||||||
|
|
@ -85,7 +90,7 @@ class _CreditEditState extends State<CreditEdit>
|
||||||
|
|
||||||
viewModel.onSavePressed(context);
|
viewModel.onSavePressed(context);
|
||||||
},
|
},
|
||||||
appBarBottom: state.prefState.isDesktop
|
appBarBottom: isFullscreen
|
||||||
? null
|
? null
|
||||||
: TabBar(
|
: TabBar(
|
||||||
controller: _controller,
|
controller: _controller,
|
||||||
|
|
@ -94,6 +99,9 @@ class _CreditEditState extends State<CreditEdit>
|
||||||
Tab(
|
Tab(
|
||||||
text: localization.details,
|
text: localization.details,
|
||||||
),
|
),
|
||||||
|
Tab(
|
||||||
|
text: localization.contacts,
|
||||||
|
),
|
||||||
Tab(
|
Tab(
|
||||||
text: localization.items,
|
text: localization.items,
|
||||||
),
|
),
|
||||||
|
|
@ -104,7 +112,7 @@ class _CreditEditState extends State<CreditEdit>
|
||||||
),
|
),
|
||||||
body: Form(
|
body: Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: state.prefState.isDesktop
|
child: isFullscreen
|
||||||
? CreditEditDetailsScreen(
|
? CreditEditDetailsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
)
|
)
|
||||||
|
|
@ -115,6 +123,9 @@ class _CreditEditState extends State<CreditEdit>
|
||||||
CreditEditDetailsScreen(
|
CreditEditDetailsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
),
|
),
|
||||||
|
InvoiceEditContactsScreen(
|
||||||
|
entityType: invoice.entityType,
|
||||||
|
),
|
||||||
CreditEditItemsScreen(
|
CreditEditItemsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
),
|
),
|
||||||
|
|
@ -141,7 +152,9 @@ class _CreditEditState extends State<CreditEdit>
|
||||||
clientId: invoice.clientId,
|
clientId: invoice.clientId,
|
||||||
onItemsSelected: (items, [clientId]) {
|
onItemsSelected: (items, [clientId]) {
|
||||||
viewModel.onItemsAdded(items, clientId);
|
viewModel.onItemsAdded(items, clientId);
|
||||||
_controller.animateTo(kItemScreen);
|
if (!isFullscreen) {
|
||||||
|
_controller.animateTo(kItemScreen);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart';
|
||||||
|
|
@ -41,7 +43,7 @@ class _QuoteEditState extends State<QuoteEdit>
|
||||||
|
|
||||||
final index =
|
final index =
|
||||||
viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen;
|
viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen;
|
||||||
_controller = TabController(vsync: this, length: 3, initialIndex: index);
|
_controller = TabController(vsync: this, length: 4, initialIndex: index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -65,8 +67,11 @@ class _QuoteEditState extends State<QuoteEdit>
|
||||||
final viewModel = widget.viewModel;
|
final viewModel = widget.viewModel;
|
||||||
final invoice = viewModel.invoice;
|
final invoice = viewModel.invoice;
|
||||||
final state = viewModel.state;
|
final state = viewModel.state;
|
||||||
|
final prefState = state.prefState;
|
||||||
|
final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice);
|
||||||
|
|
||||||
return EditScaffold(
|
return EditScaffold(
|
||||||
|
isFullscreen: isFullscreen,
|
||||||
entity: invoice,
|
entity: invoice,
|
||||||
title: invoice.isNew ? localization.newQuote : localization.editQuote,
|
title: invoice.isNew ? localization.newQuote : localization.editQuote,
|
||||||
onCancelPressed: (context) => viewModel.onCancelPressed(context),
|
onCancelPressed: (context) => viewModel.onCancelPressed(context),
|
||||||
|
|
@ -85,7 +90,7 @@ class _QuoteEditState extends State<QuoteEdit>
|
||||||
|
|
||||||
viewModel.onSavePressed(context);
|
viewModel.onSavePressed(context);
|
||||||
},
|
},
|
||||||
appBarBottom: state.prefState.isDesktop
|
appBarBottom: isFullscreen
|
||||||
? null
|
? null
|
||||||
: TabBar(
|
: TabBar(
|
||||||
controller: _controller,
|
controller: _controller,
|
||||||
|
|
@ -94,6 +99,9 @@ class _QuoteEditState extends State<QuoteEdit>
|
||||||
Tab(
|
Tab(
|
||||||
text: localization.details,
|
text: localization.details,
|
||||||
),
|
),
|
||||||
|
Tab(
|
||||||
|
text: localization.contacts,
|
||||||
|
),
|
||||||
Tab(
|
Tab(
|
||||||
text: localization.items,
|
text: localization.items,
|
||||||
),
|
),
|
||||||
|
|
@ -104,7 +112,7 @@ class _QuoteEditState extends State<QuoteEdit>
|
||||||
),
|
),
|
||||||
body: Form(
|
body: Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: state.prefState.isDesktop
|
child: isFullscreen
|
||||||
? QuoteEditDetailsScreen(
|
? QuoteEditDetailsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
)
|
)
|
||||||
|
|
@ -115,6 +123,9 @@ class _QuoteEditState extends State<QuoteEdit>
|
||||||
QuoteEditDetailsScreen(
|
QuoteEditDetailsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
),
|
),
|
||||||
|
InvoiceEditContactsScreen(
|
||||||
|
entityType: invoice.entityType,
|
||||||
|
),
|
||||||
QuoteEditItemsScreen(
|
QuoteEditItemsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
),
|
),
|
||||||
|
|
@ -141,7 +152,9 @@ class _QuoteEditState extends State<QuoteEdit>
|
||||||
clientId: invoice.clientId,
|
clientId: invoice.clientId,
|
||||||
onItemsSelected: (items, [clientId]) {
|
onItemsSelected: (items, [clientId]) {
|
||||||
viewModel.onItemsAdded(items, clientId);
|
viewModel.onItemsAdded(items, clientId);
|
||||||
_controller.animateTo(kItemScreen);
|
if (!isFullscreen) {
|
||||||
|
_controller.animateTo(kItemScreen);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
import 'package:invoiceninja_flutter/ui/app/edit_scaffold.dart';
|
||||||
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_footer.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart';
|
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_item_selector.dart';
|
||||||
|
|
@ -40,7 +42,7 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
|
||||||
|
|
||||||
final index =
|
final index =
|
||||||
viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen;
|
viewModel.invoiceItemIndex != null ? kItemScreen : kDetailsScreen;
|
||||||
_controller = TabController(vsync: this, length: 3, initialIndex: index);
|
_controller = TabController(vsync: this, length: 4, initialIndex: index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -65,8 +67,11 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
|
||||||
final recurringInvoice = viewModel.invoice;
|
final recurringInvoice = viewModel.invoice;
|
||||||
final state = viewModel.state;
|
final state = viewModel.state;
|
||||||
final invoice = viewModel.invoice;
|
final invoice = viewModel.invoice;
|
||||||
|
final prefState = state.prefState;
|
||||||
|
final isFullscreen = prefState.isEditorFullScreen(EntityType.invoice);
|
||||||
|
|
||||||
return EditScaffold(
|
return EditScaffold(
|
||||||
|
isFullscreen: isFullscreen,
|
||||||
title: recurringInvoice.isNew
|
title: recurringInvoice.isNew
|
||||||
? localization.newRecurringInvoice
|
? localization.newRecurringInvoice
|
||||||
: localization.editRecurringInvoice,
|
: localization.editRecurringInvoice,
|
||||||
|
|
@ -86,7 +91,7 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
|
||||||
|
|
||||||
viewModel.onSavePressed(context);
|
viewModel.onSavePressed(context);
|
||||||
},
|
},
|
||||||
appBarBottom: state.prefState.isDesktop
|
appBarBottom: isFullscreen
|
||||||
? null
|
? null
|
||||||
: TabBar(
|
: TabBar(
|
||||||
controller: _controller,
|
controller: _controller,
|
||||||
|
|
@ -95,6 +100,9 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
|
||||||
Tab(
|
Tab(
|
||||||
text: localization.details,
|
text: localization.details,
|
||||||
),
|
),
|
||||||
|
Tab(
|
||||||
|
text: localization.contacts,
|
||||||
|
),
|
||||||
Tab(
|
Tab(
|
||||||
text: localization.items,
|
text: localization.items,
|
||||||
),
|
),
|
||||||
|
|
@ -105,7 +113,7 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
|
||||||
),
|
),
|
||||||
body: Form(
|
body: Form(
|
||||||
key: _formKey,
|
key: _formKey,
|
||||||
child: state.prefState.isDesktop
|
child: isFullscreen
|
||||||
? RecurringInvoiceEditDetailsScreen(
|
? RecurringInvoiceEditDetailsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
)
|
)
|
||||||
|
|
@ -116,6 +124,9 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
|
||||||
RecurringInvoiceEditDetailsScreen(
|
RecurringInvoiceEditDetailsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
),
|
),
|
||||||
|
InvoiceEditContactsScreen(
|
||||||
|
entityType: invoice.entityType,
|
||||||
|
),
|
||||||
RecurringInvoiceEditItemsScreen(
|
RecurringInvoiceEditItemsScreen(
|
||||||
viewModel: widget.viewModel,
|
viewModel: widget.viewModel,
|
||||||
),
|
),
|
||||||
|
|
@ -142,7 +153,9 @@ class _RecurringInvoiceEditState extends State<RecurringInvoiceEdit>
|
||||||
clientId: invoice.clientId,
|
clientId: invoice.clientId,
|
||||||
onItemsSelected: (items, [clientId]) {
|
onItemsSelected: (items, [clientId]) {
|
||||||
viewModel.onItemsAdded(items, clientId);
|
viewModel.onItemsAdded(items, clientId);
|
||||||
_controller.animateTo(kItemScreen);
|
if (!isFullscreen) {
|
||||||
|
_controller.animateTo(kItemScreen);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue