fix(ios): translucent toolbar blur no longer obscures entering page title (#20314)

fixes #19158
This commit is contained in:
Liam DeBeasi
2020-01-29 15:12:00 -05:00
committed by GitHub
parent 1e2946e0f9
commit e580b88477
5 changed files with 33 additions and 13 deletions

View File

@ -9,13 +9,15 @@
} }
@supports (backdrop-filter: blur(0)) { @supports (backdrop-filter: blur(0)) {
.footer-translucent-ios { .footer-background {
@include position(0, 0, 0, 0);
position: absolute;
backdrop-filter: $footer-ios-translucent-filter; backdrop-filter: $footer-ios-translucent-filter;
} }
.footer-translucent-ios ion-toolbar { .footer-translucent-ios ion-toolbar {
--opacity: .8; --opacity: .8;
--backdrop-filter: #{$footer-ios-translucent-filter};
} }
} }

View File

@ -40,6 +40,10 @@ export class Footer implements ComponentInterface {
[`footer-translucent-${mode}`]: translucent, [`footer-translucent-${mode}`]: translucent,
}} }}
> >
{ mode === 'ios' && translucent &&
<div class="footer-background"></div>
}
<slot></slot>
</Host> </Host>
); );
} }

View File

@ -9,13 +9,15 @@
} }
@supports (backdrop-filter: blur(0)) { @supports (backdrop-filter: blur(0)) {
.header-translucent-ios { .header-background {
@include position(0, 0, 0, 0);
position: absolute;
backdrop-filter: $header-ios-translucent-filter; backdrop-filter: $header-ios-translucent-filter;
} }
.header-translucent-ios ion-toolbar { .header-translucent-ios ion-toolbar {
--opacity: .8; --opacity: .8;
--backdrop-filter: #{$header-ios-translucent-filter};
} }
} }

View File

@ -141,6 +141,7 @@ export class Header implements ComponentInterface {
} }
render() { render() {
const { translucent } = this;
const mode = getIonMode(this); const mode = getIonMode(this);
const collapse = this.collapse || 'none'; const collapse = this.collapse || 'none';
return ( return (
@ -157,6 +158,10 @@ export class Header implements ComponentInterface {
[`header-translucent-${mode}`]: this.translucent, [`header-translucent-${mode}`]: this.translucent,
}} }}
> >
{ mode === 'ios' && translucent &&
<div class="header-background"></div>
}
<slot></slot>
</Host> </Host>
); );
} }

View File

@ -342,10 +342,14 @@ export const iosTransitionAnimation = (navEl: HTMLElement, opts: TransitionOptio
} }
enteringToolBarItems.fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`); enteringToolBarItems.fromTo('transform', `translateX(${OFF_RIGHT})`, `translateX(${CENTER})`);
enteringToolBarBg.beforeClearStyles([OPACITY, 'transform']);
enteringToolBarBg const translucentHeader = parentHeader?.translucent;
.beforeClearStyles([OPACITY]) if (!translucentHeader) {
.fromTo(OPACITY, 0.01, 1); enteringToolBarBg.fromTo(OPACITY, 0.01, 1);
} else {
enteringToolBarBg.fromTo('transform', (isRTL ? 'translateX(-100%)' : 'translateX(100%)'), 'translateX(0px)');
}
// forward direction, entering page has a back button // forward direction, entering page has a back button
if (!forward) { if (!forward) {
@ -479,12 +483,15 @@ export const iosTransitionAnimation = (navEl: HTMLElement, opts: TransitionOptio
} }
leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, (isRTL ? 'translateX(-100%)' : 'translateX(100%)')); leavingToolBarItems.fromTo('transform', `translateX(${CENTER})`, (isRTL ? 'translateX(-100%)' : 'translateX(100%)'));
leavingToolBarBg.beforeClearStyles([OPACITY, 'transform']);
// leaving toolbar, back direction, and there's no entering toolbar // leaving toolbar, back direction, and there's no entering toolbar
// should just slide out, no fading out // should just slide out, no fading out
leavingToolBarBg const translucentHeader = parentHeader?.translucent;
.beforeClearStyles([OPACITY]) if (!translucentHeader) {
.fromTo(OPACITY, 1, 0.01); leavingToolBarBg.fromTo(OPACITY, 0.99, 0);
} else {
leavingToolBarBg.fromTo('transform', 'translateX(0px)', (isRTL ? 'translateX(-100%)' : 'translateX(100%)'));
}
if (backButtonEl && !backward) { if (backButtonEl && !backward) {
const leavingBackBtnText = createAnimation(); const leavingBackBtnText = createAnimation();