diff --git a/modules/shared/auth/ui/home.php b/modules/shared/auth/ui/home.php index eadbece..102e95f 100644 --- a/modules/shared/auth/ui/home.php +++ b/modules/shared/auth/ui/home.php @@ -870,7 +870,7 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $best echo " const isMobileDetailMode = () => window.matchMedia('(max-width: 767px)').matches;"; echo " const escapeHtml = (value) => String(value ?? '').replace(/[&<>\"']/g, (character) => ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' }[character] || character));"; echo " let bestellungenMobileDetailHost = null;"; - echo " let bestellungenDetailOpen = false;"; + echo " let bestellungenDetailOpen = false; let bestellungenOpeningMobileDetail = false;"; echo " const syncSearchState = () => {"; echo " const input = getSearchInput();"; echo " const wrap = getSearchWrap();"; @@ -879,47 +879,10 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $best echo " wrap.setAttribute('data-has-value', String(hasValue));"; echo " wrap.dataset.componentState = hasValue ? 'active' : 'inactive-selectable';"; echo " };"; - echo " const renderMobileDetail = (trigger) => {"; - echo " const orderNumber = trigger.dataset.orderNumber || '';"; - echo " const orderDate = trigger.dataset.orderDate || '';"; - echo " const total = trigger.dataset.orderTotal || '';"; - echo " const street = trigger.dataset.orderStreet || '';"; - echo " const houseNumber = trigger.dataset.orderHouseNumber || '';"; - echo " const zip = trigger.dataset.orderZip || '';"; - echo " const city = trigger.dataset.orderCity || '';"; - echo " const country = trigger.dataset.orderCountry || '';"; - echo " const formatDate = (value) => value ? new Date(value).toLocaleString('de-CH', { dateStyle: 'short', timeStyle: 'short' }) : 'Nicht vorhanden';"; - 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 " '
Bestellnummer: ' + escapeHtml(orderNumber) + '
',"; - echo " 'Bestelldatum: ' + escapeHtml(orderDate) + '
',"; - echo " 'Lieferadresse:
',"; - echo " '' + escapeHtml(streetLine) + '
',"; - echo " '' + escapeHtml(cityLine) + '
',"; - echo " '' + escapeHtml(country) + '
',"; - echo " 'Gesamtsumme: ' + escapeHtml(total) + '
',"; - echo " 'Detailinhalt wird noch definiert.
',"; - echo " '' + escapeHtml(line.item_name) + ' · ' + escapeHtml(line.item_code) + ' · Menge: ' + escapeHtml(String(line.qty)) + ' · Status: ' + escapeHtml(line.line_status) + '
').join(''); const allocations = (order.lines || []).flatMap((line) => (line.product_allocations || []).map((item) => '' + escapeHtml(item.product_name) + ': ' + escapeHtml(item.lot_number || 'Nicht zugeordnet') + ' · ' + escapeHtml(item.allocation_status || 'Nicht vorhanden') + '
')).join(''); if (cards) { cards.innerHTML = 'Bestellnummer: ' + escapeHtml(order.external_ref) + '
Bestelldatum: ' + escapeHtml(formatDate(order.order_date)) + '
Verkaufskanal: ' + escapeHtml(order.order_source) + '
Status: ' + escapeHtml(order.order_status) + '
Keine Artikel vorhanden.
') + 'Keine Chargenzuordnung vorhanden.
') + '' + escapeHtml(error.message) + '
'; } });"; + echo " if (bestellungenMobileDetailHost) { const mobileDrawer = sourceDrawer; mobileDrawer.dataset.bestellungenMobileDrawer = 'true'; mobileDrawer.dataset.open = 'true'; mobileDrawer.setAttribute('aria-hidden', 'false'); bestellungenMobileDetailHost.appendChild(mobileDrawer); document.body.appendChild(bestellungenMobileDetailHost); document.body.classList.add('sg-bestellungen-mobile-detail-open'); }"; + echo " bestellungenOpeningMobileDetail = true; openDrawer(trigger); bestellungenOpeningMobileDetail = false;"; echo " bestellungenDetailOpen = true;"; echo " window.history.pushState({ bestellungenView: 'detail', orderId: trigger.dataset.orderId || '' }, '', window.location.href);"; echo " };"; @@ -1136,7 +1098,7 @@ function render_auth_home_page(array $user, array $otcProducts = [], array $best echo " closeMobileDetail();"; echo " }"; echo " });"; - echo " contentRoot.addEventListener('click', (event) => {"; + echo " document.addEventListener('click', (event) => {"; echo " const openTrigger = event.target.closest('[data-order-drawer-open]');"; echo " if (openTrigger) {"; echo " event.preventDefault();"; diff --git a/public/assets/styles.portal.css b/public/assets/styles.portal.css index 6d03b3f..9ae7644 100644 --- a/public/assets/styles.portal.css +++ b/public/assets/styles.portal.css @@ -106,6 +106,16 @@ body.sg-lager-mobile-detail-open > :not([data-lager-mobile-detail-host]) { overflow: visible; } +.sg-bestellungen-mobile-detail-host .sg-card-list-page-drawer { + position: static; + display: flex; + width: 100%; + max-width: none; + transform: none; + box-shadow: none; + overflow: visible; +} + .sg-mobile-detail-back-card, .sg-mobile-detail-back-card * { cursor: pointer;