Skip to content

Commit 7182fee

Browse files
committed
fix(modal): improve card modal background transition from portrait to landscape
1 parent 850338c commit 7182fee

File tree

2 files changed

+9
-19
lines changed

2 files changed

+9
-19
lines changed

core/src/components/modal/animations/ios.transition.ts

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,22 @@ export const portraitToLandscapeTransition = (
7272
// need to care about layering and modal-specific styles.
7373
const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
7474
const fromTransform = `translateY(-10px) scale(${toPresentingScale})`;
75-
const toTransform = `translateY(-10px) scale(${toPresentingScale})`;
75+
const toTransform = `translateY(0px) scale(1)`;
7676

7777
presentingAnimation
78-
.addElement(presentingElRoot.querySelector('.modal-wrapper')!)
78+
.addElement(presentingEl)
7979
.afterStyles({
8080
transform: toTransform,
8181
})
8282
.fromTo('transform', fromTransform, toTransform)
83-
.fromTo('filter', 'contrast(0.85)', 'contrast(0.85)'); // Keep same contrast for card
83+
.fromTo('filter', 'contrast(0.85)', 'contrast(1)');
8484

8585
const shadowAnimation = createAnimation()
8686
.addElement(presentingElRoot.querySelector('.modal-shadow')!)
8787
.afterStyles({
8888
transform: toTransform,
89+
opacity: '0',
8990
})
90-
.fromTo('opacity', '0', '0') // Shadow stays hidden in landscape for card modals
9191
.fromTo('transform', fromTransform, toTransform);
9292

9393
baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
@@ -148,17 +148,8 @@ export const landscapeToPortraitTransition = (
148148

149149
presentingAnimation
150150
.addElement(presentingEl)
151-
.beforeStyles({
152-
transform: 'translateY(0px) scale(1)',
153-
'transform-origin': 'top center',
154-
overflow: 'hidden',
155-
})
156151
.afterStyles({
157152
transform: toTransform,
158-
'border-radius': '10px 10px 0 0',
159-
filter: 'contrast(0.85)',
160-
overflow: 'hidden',
161-
'transform-origin': 'top center',
162153
})
163154
.beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))
164155
.keyframes([
@@ -173,22 +164,21 @@ export const landscapeToPortraitTransition = (
173164
// to handle layering and modal-specific styles.
174165
const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
175166
const fromTransform = `translateY(-10px) scale(${toPresentingScale})`;
176-
const toTransform = `translateY(-10px) scale(${toPresentingScale})`;
167+
const toTransform = `translateY(0) scale(1)`;
177168

178169
presentingAnimation
179-
.addElement(presentingElRoot.querySelector('.modal-wrapper')!)
170+
.addElement(presentingEl)
180171
.afterStyles({
181172
transform: toTransform,
182173
})
183-
.fromTo('transform', fromTransform, toTransform)
184-
.fromTo('filter', 'contrast(0.85)', 'contrast(0.85)'); // Keep same contrast for card
174+
.fromTo('transform', fromTransform, toTransform);
185175

186176
const shadowAnimation = createAnimation()
187177
.addElement(presentingElRoot.querySelector('.modal-shadow')!)
188178
.afterStyles({
189179
transform: toTransform,
180+
opacity: '0',
190181
})
191-
.fromTo('opacity', '0', '0') // Shadow stays hidden
192182
.fromTo('transform', fromTransform, toTransform);
193183

194184
baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);

core/src/components/modal/modal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,7 @@ export class Modal implements ComponentInterface, OverlayInterface {
11221122
wrapperEl.style.opacity = '1';
11231123
}
11241124

1125-
if (presentingElement) {
1125+
if (presentingElement?.tagName === 'ION-MODAL') {
11261126
const isPortrait = window.innerWidth < 768;
11271127

11281128
if (isPortrait) {

0 commit comments

Comments
 (0)