|
1 | | -import { getIonTheme } from '@global/ionic-global'; |
2 | 1 | import { isIonContent, findClosestIonContent } from '@utils/content'; |
3 | 2 | import { createGesture } from '@utils/gesture'; |
4 | 3 | import { clamp, raf, getElementRoot } from '@utils/helpers'; |
5 | 4 | import { FOCUS_TRAP_DISABLE_CLASS } from '@utils/overlays'; |
6 | 5 |
|
7 | 6 | import type { Animation } from '../../../interface'; |
8 | 7 | import type { GestureDetail } from '../../../utils/gesture'; |
9 | | -import { getBackdropValueForSheet, staticBackdropOpacity } from '../utils'; |
| 8 | +import { getBackdropValueForSheet } from '../utils'; |
10 | 9 |
|
11 | 10 | import { calculateSpringStep, handleCanDismiss } from './utils'; |
12 | 11 |
|
@@ -52,39 +51,27 @@ export const createSheetGesture = ( |
52 | 51 | breakpoints: number[] = [], |
53 | 52 | getCurrentBreakpoint: () => number, |
54 | 53 | onDismiss: () => void, |
55 | | - onBreakpointChange: (breakpoint: number) => void |
| 54 | + onBreakpointChange: (breakpoint: number) => void, |
| 55 | + staticBackdropOpacity: boolean |
56 | 56 | ) => { |
57 | | - const theme = getIonTheme(baseEl); |
58 | 57 | // Defaults for the sheet swipe animation |
59 | 58 | const defaultBackdrop = [ |
60 | 59 | { offset: 0, opacity: 'var(--backdrop-opacity)' }, |
61 | | - { offset: 1, opacity: 0.01 }, |
| 60 | + { offset: 1, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0.01 }, |
62 | 61 | ]; |
63 | 62 |
|
64 | 63 | const customBackdrop = [ |
65 | 64 | { offset: 0, opacity: 'var(--backdrop-opacity)' }, |
66 | | - { offset: 1 - backdropBreakpoint, opacity: 0 }, |
67 | | - { offset: 1, opacity: 0 }, |
| 65 | + { offset: 1 - backdropBreakpoint, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0 }, |
| 66 | + { offset: 1, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0 }, |
68 | 67 | ]; |
69 | 68 |
|
70 | | - const ionicThemeBackdrop = [ |
71 | | - { offset: 0, opacity: staticBackdropOpacity }, |
72 | | - { offset: 1, opacity: staticBackdropOpacity }, |
73 | | - ]; |
74 | | - |
75 | | - let backdropKeyframes = defaultBackdrop; |
76 | | - if (theme === 'ionic') { |
77 | | - backdropKeyframes = ionicThemeBackdrop; |
78 | | - } else if (backdropBreakpoint !== 0) { |
79 | | - backdropKeyframes = customBackdrop; |
80 | | - } |
81 | | - |
82 | 69 | const SheetDefaults = { |
83 | 70 | WRAPPER_KEYFRAMES: [ |
84 | 71 | { offset: 0, transform: 'translateY(0%)' }, |
85 | 72 | { offset: 1, transform: 'translateY(100%)' }, |
86 | 73 | ], |
87 | | - BACKDROP_KEYFRAMES: backdropKeyframes, |
| 74 | + BACKDROP_KEYFRAMES: backdropBreakpoint !== 0 ? customBackdrop : defaultBackdrop, |
88 | 75 | }; |
89 | 76 |
|
90 | 77 | const contentEl = baseEl.querySelector('ion-content'); |
@@ -323,35 +310,20 @@ export const createSheetGesture = ( |
323 | 310 | { offset: 1, transform: `translateY(${(1 - snapToBreakpoint) * 100}%)` }, |
324 | 311 | ]); |
325 | 312 |
|
326 | | - backdropAnimation.keyframes( |
327 | | - theme === 'ionic' |
328 | | - ? [ |
329 | | - { |
330 | | - offset: 0, |
331 | | - opacity: staticBackdropOpacity, |
332 | | - }, |
333 | | - { |
334 | | - offset: 1, |
335 | | - opacity: staticBackdropOpacity, |
336 | | - }, |
337 | | - ] |
338 | | - : [ |
339 | | - { |
340 | | - offset: 0, |
341 | | - opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet( |
342 | | - 1 - breakpointOffset, |
343 | | - backdropBreakpoint |
344 | | - )})`, |
345 | | - }, |
346 | | - { |
347 | | - offset: 1, |
348 | | - opacity: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet( |
349 | | - snapToBreakpoint, |
350 | | - backdropBreakpoint |
351 | | - )})`, |
352 | | - }, |
353 | | - ] |
354 | | - ); |
| 313 | + backdropAnimation.keyframes([ |
| 314 | + { |
| 315 | + offset: 0, |
| 316 | + opacity: staticBackdropOpacity |
| 317 | + ? 'var(--backdrop-opacity)' |
| 318 | + : `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`, |
| 319 | + }, |
| 320 | + { |
| 321 | + offset: 1, |
| 322 | + opacity: staticBackdropOpacity |
| 323 | + ? 'var(--backdrop-opacity)' |
| 324 | + : `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`, |
| 325 | + }, |
| 326 | + ]); |
355 | 327 |
|
356 | 328 | animation.progressStep(0); |
357 | 329 | } |
|
0 commit comments