diff --git a/modules/shared/auth/ui/home.php b/modules/shared/auth/ui/home.php
index 5462c32..3dece56 100644
--- a/modules/shared/auth/ui/home.php
+++ b/modules/shared/auth/ui/home.php
@@ -553,7 +553,7 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $best
echo " };";
echo " const isMobileDetailMode = () => window.matchMedia('(max-width: 767px)').matches;";
echo " const escapeHtml = (value) => String(value ?? '').replace(/[&<>\"']/g, (character) => ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' }[character] || character));";
- echo " let bestellungenListSnapshot = '';";
+ echo " let bestellungenMobileDetailHost = null;";
echo " let bestellungenDetailOpen = false;";
echo " const syncSearchState = () => {";
echo " const input = getSearchInput();";
@@ -575,7 +575,7 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $best
echo " const streetLine = [street, houseNumber].filter((part) => part && part.length > 0).join(' ').trim();";
echo " const cityLine = [zip, city].filter((part) => part && part.length > 0).join(' ').trim();";
echo " return [";
- echo " '
',";
+ echo " '
',";
echo " '
',";
echo " '
',";
echo " '
',";
@@ -656,15 +656,23 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $best
echo " });";
echo " };";
echo " const restoreBestellungenList = () => {";
- echo " if (bestellungenListSnapshot === '') { return; }";
- echo " contentRoot.innerHTML = bestellungenListSnapshot;";
- echo " bestellungenListSnapshot = '';";
+ echo " if (bestellungenMobileDetailHost && bestellungenMobileDetailHost.parentNode) {";
+ echo " bestellungenMobileDetailHost.parentNode.removeChild(bestellungenMobileDetailHost);";
+ echo " }";
+ echo " bestellungenMobileDetailHost = null;";
+ echo " document.body.classList.remove('sg-bestellungen-mobile-detail-open');";
echo " bestellungenDetailOpen = false;";
echo " bindTable();";
echo " };";
echo " const openMobileDetail = (trigger) => {";
- echo " bestellungenListSnapshot = contentRoot.innerHTML;";
- echo " contentRoot.innerHTML = renderMobileDetail(trigger);";
+ echo " restoreBestellungenList();";
+ echo " const host = document.createElement('div');";
+ echo " host.innerHTML = renderMobileDetail(trigger);";
+ echo " bestellungenMobileDetailHost = host.firstElementChild;";
+ echo " if (bestellungenMobileDetailHost) {";
+ echo " document.body.appendChild(bestellungenMobileDetailHost);";
+ echo " document.body.classList.add('sg-bestellungen-mobile-detail-open');";
+ echo " }";
echo " bestellungenDetailOpen = true;";
echo " window.history.pushState({ bestellungenView: 'detail', orderId: trigger.dataset.orderId || '' }, '', window.location.href);";
echo " };";
@@ -699,7 +707,11 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $best
echo " return false;";
echo " }";
echo " contentRoot.innerHTML = fragment.innerHTML;";
- echo " bestellungenListSnapshot = '';";
+ echo " if (bestellungenMobileDetailHost && bestellungenMobileDetailHost.parentNode) {";
+ echo " bestellungenMobileDetailHost.parentNode.removeChild(bestellungenMobileDetailHost);";
+ echo " }";
+ echo " bestellungenMobileDetailHost = null;";
+ echo " document.body.classList.remove('sg-bestellungen-mobile-detail-open');";
echo " bestellungenDetailOpen = false;";
echo " table = getTable();";
echo " return !!table;";
diff --git a/public/assets/styles.portal.css b/public/assets/styles.portal.css
index 68d8d91..62371d6 100644
--- a/public/assets/styles.portal.css
+++ b/public/assets/styles.portal.css
@@ -31,6 +31,31 @@ body.sg-otc-order-overlay-open {
overflow: hidden;
}
+body.sg-bestellungen-mobile-detail-open {
+ overflow: hidden;
+}
+
+body.sg-bestellungen-mobile-detail-open > :not([data-bestellungen-mobile-detail-host]) {
+ display: none !important;
+}
+
+.sg-bestellungen-mobile-detail-host {
+ position: fixed;
+ inset: 0;
+ z-index: 1500;
+ display: flex;
+ flex-direction: column;
+ gap: var(--spacing-large);
+ padding: var(--spacing-large);
+ box-sizing: border-box;
+ overflow: auto;
+ background: var(--color-white);
+}
+
+.sg-bestellungen-mobile-detail-host .sg-vsf-drawer-card {
+ width: 100%;
+}
+
.sg-otc-order-overlay {
position: fixed;
inset: 0;