From b03faea55e056c13df26fccc7953dbe7bdb25a32 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Fri, 12 Jul 2024 14:11:30 +0300 Subject: [PATCH] Fix portal links on invoice sidebar --- lib/ui/app/portal_links.dart | 77 ++++++++++++++----- lib/ui/client/view/client_view_fullwidth.dart | 1 + lib/ui/vendor/view/vendor_view_fullwidth.dart | 1 + 3 files changed, 58 insertions(+), 21 deletions(-) diff --git a/lib/ui/app/portal_links.dart b/lib/ui/app/portal_links.dart index caeb1d4ee9..0cdd302815 100644 --- a/lib/ui/app/portal_links.dart +++ b/lib/ui/app/portal_links.dart @@ -6,17 +6,24 @@ import 'package:invoiceninja_flutter/ui/app/icon_text.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:url_launcher/url_launcher.dart'; +enum PortalLinkStyle { + buttons, + dropdown, +} + class PortalLinks extends StatelessWidget { const PortalLinks({ Key? key, required this.viewLink, required this.copyLink, required this.client, + this.style, }) : super(key: key); final String viewLink; final String copyLink; final ClientEntity? client; + final PortalLinkStyle? style; @override Widget build(BuildContext context) { @@ -39,25 +46,53 @@ class PortalLinks extends StatelessWidget { showToast(localization!.copiedToClipboard.replaceFirst(':value ', '')); }; - return PopupMenuButton( - itemBuilder: (BuildContext context) => [ - PopupMenuItem( - child: - IconText(text: localization!.viewPortal, icon: Icons.open_in_new), - value: localization.viewPortal, - ), - PopupMenuItem( - child: IconText(text: localization.copyLink, icon: Icons.copy), - value: localization.copyLink, - ), - ], - onSelected: (value) { - if (value == localization!.viewPortal) { - viewLinkPressed(); - } else { - copyLinkPressed(); - } - }, - ); + if (style == PortalLinkStyle.dropdown) { + return PopupMenuButton( + itemBuilder: (BuildContext context) => [ + PopupMenuItem( + child: IconText( + text: localization!.viewPortal, icon: Icons.open_in_new), + value: localization.viewPortal, + ), + PopupMenuItem( + child: IconText(text: localization.copyLink, icon: Icons.copy), + value: localization.copyLink, + ), + ], + onSelected: (value) { + if (value == localization!.viewPortal) { + viewLinkPressed(); + } else { + copyLinkPressed(); + } + }, + ); + } else { + return Row( + children: [ + Expanded( + child: OutlinedButton( + onPressed: viewLinkPressed, + child: Text( + localization!.viewPortal, + maxLines: 2, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.center, + )), + ), + SizedBox(width: 8), + Expanded( + child: OutlinedButton( + onPressed: copyLinkPressed, + child: Text( + localization.copyLink, + maxLines: 2, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.center, + )), + ), + ], + ); + } } -} +} \ No newline at end of file diff --git a/lib/ui/client/view/client_view_fullwidth.dart b/lib/ui/client/view/client_view_fullwidth.dart index fefa903ee3..81b875143d 100644 --- a/lib/ui/client/view/client_view_fullwidth.dart +++ b/lib/ui/client/view/client_view_fullwidth.dart @@ -394,6 +394,7 @@ class _ClientViewFullwidthState extends State client: client, viewLink: contact.silentLink, copyLink: contact.link, + style: PortalLinkStyle.dropdown, ) ], ); diff --git a/lib/ui/vendor/view/vendor_view_fullwidth.dart b/lib/ui/vendor/view/vendor_view_fullwidth.dart index d8b9e15350..126764b74c 100644 --- a/lib/ui/vendor/view/vendor_view_fullwidth.dart +++ b/lib/ui/vendor/view/vendor_view_fullwidth.dart @@ -302,6 +302,7 @@ class _VendorViewFullwidthState extends State client: null, viewLink: contact.silentLink, copyLink: contact.link, + style: PortalLinkStyle.dropdown, ) ], );