From cbfca01da6a20bcd659f91b79a3ba8ef27180447 Mon Sep 17 00:00:00 2001 From: MojtabaSoumi Date: Tue, 30 Jun 2026 18:08:00 +0330 Subject: [PATCH 1/2] 1405/04/09-fix bug iphone show --- src/App.vue | 2 + src/layouts/styles/mobile-page-common.less | 125 ++++++++++++++++- .../about/components/AboutSectionsContent.vue | 18 ++- .../about/components/AboutSupportActions.vue | 2 +- src/views/base/about/index.vue | 9 ++ .../base/about/mobile/MobileAboutView.vue | 22 ++- .../components/AboutUsContentPanel.vue | 60 ++++---- src/views/base/aboutUs/index.vue | 3 + .../base/aboutUs/mobile/MobileAboutUsView.vue | 20 +-- .../base/address/components/AddressForm.vue | 128 ++++++++++++++---- .../base/educate/mobile/MobileEducateView.vue | 4 +- .../fund/info/mobile/MobileFundInfoView.vue | 4 +- src/views/base/fund/mobile/MobileFundView.vue | 4 +- .../fund/newFund/mobile/MobileFundNewView.vue | 4 +- .../giftCard/mobile/MobileGiftCardView.vue | 2 +- src/views/base/home/components/AppHeader.vue | 5 +- src/views/base/home/index.vue | 4 + src/views/base/home/mobile/MobileHomeView.vue | 3 +- src/views/base/physicalReceive/index.vue | 24 +++- .../mobile/MobileNewRequestView.vue | 61 ++++++++- .../mobile/MobilePhysicalReceiveChrome.vue | 4 +- src/views/base/products/index.vue | 9 ++ .../products/mobile/MobileProductsView.vue | 122 ++++++++++++----- .../rules/components/RulesContentPanel.vue | 50 +++---- .../rules/components/RulesSupportActions.vue | 2 +- src/views/base/rules/index.vue | 9 ++ .../base/rules/mobile/MobileRulesView.vue | 28 ++-- .../transactions/DefaultTransactionsPage.vue | 2 +- .../base/user/components/UserPasswordForm.vue | 2 +- .../base/user/components/UserProfileForm.vue | 99 +++++++++----- src/views/base/user/index.vue | 30 ++-- src/views/base/user/mobile/MobileUserView.vue | 55 +++++--- .../base/wallet/mobile/MobileWalletView.vue | 2 +- 33 files changed, 664 insertions(+), 254 deletions(-) diff --git a/src/App.vue b/src/App.vue index f0090b6..a797761 100644 --- a/src/App.vue +++ b/src/App.vue @@ -257,7 +257,9 @@ watch(showSplash, (visible) => { /* ارتفاع نوار اعتبار + safe-area؛ منوی پایین با bottom: var(--app-credit-footer-offset) بالاتر از این نوار می‌نشیند */ :root { --app-credit-bar-inner: 28px; + --app-safe-top: env(safe-area-inset-top, 0px); --app-safe-bottom: env(safe-area-inset-bottom, 0px); + --app-home-header-offset: calc(4.25rem + var(--app-safe-top)); --app-credit-footer-offset: calc(var(--app-credit-bar-inner) + var(--app-safe-bottom)); --app-nav-height: 80px; --app-bottom-chrome-height: calc(var(--app-nav-height) + var(--app-credit-footer-offset)); diff --git a/src/layouts/styles/mobile-page-common.less b/src/layouts/styles/mobile-page-common.less index 417ab3e..9da0db3 100644 --- a/src/layouts/styles/mobile-page-common.less +++ b/src/layouts/styles/mobile-page-common.less @@ -1,10 +1,35 @@ -/* Shared mobile page chrome */ +/* Shared mobile page chrome (inner pages — not home .app-header) */ + +:root { + --mpage-header-bar: 2.75rem; + --mpage-header-offset: calc(4rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); + --mpage-subheader-offset: calc(var(--mpage-header-bar) + var(--app-safe-top, env(safe-area-inset-top, 0px))); + --mpage-content-with-subheader: calc(6.5rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); + --mpage-scroll-max-height: calc(100dvh - 50px - var(--app-safe-top, env(safe-area-inset-top, 0px))); + --mobile-info-support-block: calc(5rem + var(--app-safe-bottom, env(safe-area-inset-bottom, 0px))); +} + +/* Fixed top bar: background fills under status bar; content sits below safe area */ +.mobile-top-chrome { + top: 0; + box-sizing: border-box; + padding-top: calc(0.75rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); +} + +.mobile-top-chrome.h-12, +.mobile-top-chrome.min-h-12 { + height: auto; + min-height: calc(3rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); +} .mpage-header { display: flex; align-items: center; gap: 0.5rem; + top: 0; + box-sizing: border-box; padding: 0.75rem; + padding-top: calc(0.75rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); background: #fff; color: @App-primary-color; font-size: 1rem; @@ -38,7 +63,7 @@ } .mpage-subheader { - top: 2.75rem; + top: var(--mpage-subheader-offset); z-index: 1999; padding: 0.75rem; background: #fff; @@ -47,14 +72,104 @@ } .mpage-content { - padding-top: 4rem; + padding-top: var(--mpage-header-offset); } .mpage-content--with-subheader { - padding-top: 6.5rem; + padding-top: var(--mpage-content-with-subheader); } .mpage-scroll { overflow-y: auto; - max-height: calc(100vh - 50px); + max-height: var(--mpage-scroll-max-height); +} + +.mobile-page-body--pt10 { + padding-top: calc(2.5rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); +} + +.mobile-page-body--pt15 { + padding-top: calc(3.75rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); +} + +.mobile-page-body--pt20 { + padding-top: calc(5rem + var(--app-safe-top, env(safe-area-inset-top, 0px))); +} + +/* Info pages (about, educate): fixed shell, scroll inside content box only */ +.mobile-info-page { + position: relative; + display: flex; + flex-direction: column; + height: 100%; + min-height: 0; + max-height: 100%; + overflow: hidden; +} + +.mobile-info-page__bg { + pointer-events: none; + position: absolute; + inset: 0; + overflow: hidden; + z-index: 0; + + img { + position: absolute; + bottom: 0; + width: 100%; + } +} + +.mobile-info-page__main { + position: relative; + z-index: 1; + flex: 1 1 0; + min-height: 0; + display: flex; + flex-direction: column; + overflow: hidden; + padding-top: calc(var(--mpage-header-offset) + 1rem); + padding-right: 2.5rem; + padding-left: 2.5rem; + padding-bottom: calc( + var(--mobile-info-support-block, 5rem) + var(--app-credit-footer-offset, 28px) + 1.25rem + ); + pointer-events: none; + + > * { + pointer-events: auto; + } +} + +.mobile-info-page__support { + bottom: var(--app-credit-footer-offset, 28px); + box-sizing: border-box; + padding: 1rem 2.5rem; + padding-bottom: calc(1rem + var(--app-safe-bottom, env(safe-area-inset-bottom, 0px))); + background: #fff; + box-shadow: 0 -2px 8px rgba(15, 23, 42, 0.06); + z-index: 1998; +} + +.mobile-info-page__header { + z-index: 1999; +} + +.mobile-content-box { + display: flex; + flex-direction: column; + flex: 1 1 0; + min-height: 0; + overflow: hidden; + margin-bottom: 0.75rem; +} + +.mobile-content-box__scroll { + flex: 1 1 0; + min-height: 0; + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; + overscroll-behavior-y: contain; } diff --git a/src/views/base/about/components/AboutSectionsContent.vue b/src/views/base/about/components/AboutSectionsContent.vue index 92bdcea..5b45ac9 100644 --- a/src/views/base/about/components/AboutSectionsContent.vue +++ b/src/views/base/about/components/AboutSectionsContent.vue @@ -1,13 +1,16 @@