discourse/app/assets/stylesheets/common/components/footer-nav.scss
Joffrey JAFFEUX 4c25266cf7
FIX: better supports ipad and hub footer nav (#25518)
Since https://github.com/discourse/discourse/pull/25501 this behavior was broken. This PR attempts to fix it by being more fine grain.

Also note that this PR is moving `footer-nav-ipad` and `footer-nav-visible` to the `html` element and not the `body`. It makes more sense as we are already adding most of other global state class like `keyboard-visible` to the `html` element.

Tested on:
- chrome desktop
- safari ios - iphone
- PWA ios - iphone
- PWA ios - ipad
- DiscourseHub iphone
2024-02-01 10:24:44 +01:00

98 lines
2.1 KiB
SCSS

// --------------------------------------------------
// Footer nav bar (displayed in DiscourseHub app and PWAs)
// --------------------------------------------------
$footer-nav-height: 49px;
:root {
--footer-nav-height: #{$footer-nav-height};
}
html.footer-nav-visible {
#main-outlet {
padding-bottom: calc(var(--footer-nav-height) + 15px);
}
#reply-control.draft {
bottom: var(--footer-nav-height);
margin-bottom: env(safe-area-inset-bottom);
padding-bottom: 0px;
}
#topic-progress-wrapper:not(.docked) {
margin-bottom: calc(var(--footer-nav-height) + env(safe-area-inset-bottom));
}
.posts-filtered-notice {
transition: all linear 0.1s;
bottom: calc(var(--footer-nav-height) + env(safe-area-inset-bottom));
}
}
.footer-nav {
background-color: rgba(var(--header_background-rgb), 0.9);
box-shadow: var(--shadow-footer-nav);
height: var(--footer-nav-height);
position: fixed;
bottom: calc(var(--footer-nav-height) * -1);
left: 0;
width: 100%;
z-index: z("footer-nav");
transition: all linear 0.1s;
.d-icon {
color: var(--header_primary-medium);
}
&.visible {
bottom: 0px;
}
.footer-nav-widget {
display: flex;
justify-content: "space-evenly";
@include unselectable;
button {
flex: 1;
margin: 4px;
border-radius: 2px;
padding: 14px 18px;
&:disabled {
opacity: 0.6;
}
}
}
}
@supports (padding: max(0px)) {
.footer-nav.visible {
padding-bottom: unquote("max(5px, env(safe-area-inset-bottom))");
}
}
@supports (-webkit-backdrop-filter: blur(10px)) {
html:not(.footer-nav-ipad) .footer-nav {
background-color: rgba(var(--header_background-rgb), 0.7);
-webkit-backdrop-filter: blur(20px);
}
}
html.footer-nav-ipad {
padding-top: var(--footer-nav-height);
.footer-nav {
bottom: auto;
top: 0px;
background-color: var(--header_background);
z-index: z("ipad-header-nav");
padding-bottom: 0; // resets safe-area-inset-bottom
}
#reply-control,
#reply-control.fullscreen {
z-index: z("ipad-header-nav") + 1;
}
&.docked .d-header-wrap {
top: var(--footer-nav-height);
}
}