@ionic/core 8.7.16-dev.11766785951.14b7f2fa → 8.7.16-dev.11767018329.15d3ae73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/modal.js +50 -5
- package/dist/cjs/ion-modal.cjs.entry.js +50 -5
- package/dist/collection/components/modal/modal.js +50 -5
- package/dist/docs.json +1 -1
- package/dist/esm/ion-modal.entry.js +50 -5
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-bf396166.entry.js +4 -0
- package/hydrate/index.js +50 -5
- package/hydrate/index.mjs +50 -5
- package/package.json +1 -1
- package/dist/ionic/p-88b087a9.entry.js +0 -4
package/components/modal.js
CHANGED
|
@@ -1695,6 +1695,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1695
1695
|
}
|
|
1696
1696
|
onWindowResize() {
|
|
1697
1697
|
// Update safe-area overrides for all modal types on resize
|
|
1698
|
+
console.log('[onWindowResize] calling updateSafeAreaOverrides');
|
|
1698
1699
|
this.updateSafeAreaOverrides();
|
|
1699
1700
|
// Only handle view transition for iOS card modals when no custom animations are provided
|
|
1700
1701
|
if (getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
|
|
@@ -1942,6 +1943,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
1942
1943
|
this.initSwipeToClose();
|
|
1943
1944
|
}
|
|
1944
1945
|
// Now that animation is complete, update safe-area based on actual position
|
|
1946
|
+
console.log('[present animation complete] calling updateSafeAreaOverrides');
|
|
1945
1947
|
this.updateSafeAreaOverrides();
|
|
1946
1948
|
// Initialize view transition listener for iOS card modals
|
|
1947
1949
|
this.initViewTransitionListener();
|
|
@@ -2104,8 +2106,18 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
2104
2106
|
const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
2105
2107
|
const isCardModal = presentingElement !== undefined;
|
|
2106
2108
|
const isTablet = window.innerWidth >= 768;
|
|
2109
|
+
console.log('[setInitialSafeAreaOverrides] called', {
|
|
2110
|
+
isSheetModal,
|
|
2111
|
+
isCardModal,
|
|
2112
|
+
isTablet,
|
|
2113
|
+
breakpoints: this.breakpoints,
|
|
2114
|
+
initialBreakpoint: this.initialBreakpoint,
|
|
2115
|
+
presentingElement: !!presentingElement,
|
|
2116
|
+
innerWidth: window.innerWidth,
|
|
2117
|
+
});
|
|
2107
2118
|
// Sheet modals: always touch bottom, top depends on breakpoint
|
|
2108
2119
|
if (isSheetModal) {
|
|
2120
|
+
console.log('[setInitialSafeAreaOverrides] Sheet modal path - setting top/left/right to 0, leaving bottom alone');
|
|
2109
2121
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2110
2122
|
// Don't override bottom - sheet always touches bottom
|
|
2111
2123
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2114,6 +2126,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
2114
2126
|
}
|
|
2115
2127
|
// Card modals are inset from edges (rounded corners), no safe areas needed
|
|
2116
2128
|
if (isCardModal) {
|
|
2129
|
+
console.log('[setInitialSafeAreaOverrides] Card modal path - setting all to 0');
|
|
2117
2130
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2118
2131
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2119
2132
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2122,6 +2135,7 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
2122
2135
|
}
|
|
2123
2136
|
// Phone modals are fullscreen, need all safe areas
|
|
2124
2137
|
if (!isTablet) {
|
|
2138
|
+
console.log('[setInitialSafeAreaOverrides] Phone modal path - not setting any overrides');
|
|
2125
2139
|
// Don't set any overrides - inherit from :root
|
|
2126
2140
|
return;
|
|
2127
2141
|
}
|
|
@@ -2130,11 +2144,14 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
2130
2144
|
const computedStyle = getComputedStyle(this.el);
|
|
2131
2145
|
const width = computedStyle.getPropertyValue('--width').trim();
|
|
2132
2146
|
const height = computedStyle.getPropertyValue('--height').trim();
|
|
2147
|
+
console.log('[setInitialSafeAreaOverrides] Tablet modal path', { width, height });
|
|
2133
2148
|
if (width === '100%' && height === '100%') {
|
|
2149
|
+
console.log('[setInitialSafeAreaOverrides] Fullscreen tablet modal - not setting overrides');
|
|
2134
2150
|
// Fullscreen modal - need safe areas, don't override
|
|
2135
2151
|
return;
|
|
2136
2152
|
}
|
|
2137
2153
|
// Centered dialog - zero out all safe areas
|
|
2154
|
+
console.log('[setInitialSafeAreaOverrides] Centered tablet dialog - setting all to 0');
|
|
2138
2155
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2139
2156
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2140
2157
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2147,22 +2164,50 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
2147
2164
|
*/
|
|
2148
2165
|
updateSafeAreaOverrides() {
|
|
2149
2166
|
const wrapper = this.wrapperEl;
|
|
2150
|
-
if (!wrapper)
|
|
2167
|
+
if (!wrapper) {
|
|
2168
|
+
console.log('[updateSafeAreaOverrides] No wrapper element, returning early');
|
|
2151
2169
|
return;
|
|
2170
|
+
}
|
|
2152
2171
|
const rect = wrapper.getBoundingClientRect();
|
|
2153
2172
|
const threshold = 2; // Account for subpixel rendering
|
|
2154
2173
|
const touchingTop = rect.top <= threshold;
|
|
2155
2174
|
const touchingBottom = rect.bottom >= window.innerHeight - threshold;
|
|
2156
2175
|
const touchingLeft = rect.left <= threshold;
|
|
2157
2176
|
const touchingRight = rect.right >= window.innerWidth - threshold;
|
|
2177
|
+
console.log('[updateSafeAreaOverrides] called', {
|
|
2178
|
+
isSheetModal: this.isSheetModal,
|
|
2179
|
+
rect: { top: rect.top, bottom: rect.bottom, left: rect.left, right: rect.right },
|
|
2180
|
+
innerHeight: window.innerHeight,
|
|
2181
|
+
innerWidth: window.innerWidth,
|
|
2182
|
+
threshold,
|
|
2183
|
+
touchingTop,
|
|
2184
|
+
touchingBottom,
|
|
2185
|
+
touchingLeft,
|
|
2186
|
+
touchingRight,
|
|
2187
|
+
bottomCalc: `${rect.bottom} >= ${window.innerHeight - threshold} = ${touchingBottom}`,
|
|
2188
|
+
});
|
|
2158
2189
|
// Remove override when touching edge (allow inheritance), set to 0 when not touching
|
|
2159
2190
|
const style = this.el.style;
|
|
2191
|
+
const actions = {
|
|
2192
|
+
top: touchingTop ? 'removeProperty' : 'setProperty 0px',
|
|
2193
|
+
bottom: touchingBottom ? 'removeProperty' : 'setProperty 0px',
|
|
2194
|
+
left: touchingLeft ? 'removeProperty' : 'setProperty 0px',
|
|
2195
|
+
right: touchingRight ? 'removeProperty' : 'setProperty 0px',
|
|
2196
|
+
};
|
|
2197
|
+
console.log('[updateSafeAreaOverrides] actions:', actions);
|
|
2160
2198
|
touchingTop ? style.removeProperty('--ion-safe-area-top') : style.setProperty('--ion-safe-area-top', '0px');
|
|
2161
2199
|
touchingBottom
|
|
2162
2200
|
? style.removeProperty('--ion-safe-area-bottom')
|
|
2163
2201
|
: style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2164
2202
|
touchingLeft ? style.removeProperty('--ion-safe-area-left') : style.setProperty('--ion-safe-area-left', '0px');
|
|
2165
2203
|
touchingRight ? style.removeProperty('--ion-safe-area-right') : style.setProperty('--ion-safe-area-right', '0px');
|
|
2204
|
+
// Log the actual style values after setting
|
|
2205
|
+
console.log('[updateSafeAreaOverrides] after setting, inline styles:', {
|
|
2206
|
+
top: style.getPropertyValue('--ion-safe-area-top'),
|
|
2207
|
+
bottom: style.getPropertyValue('--ion-safe-area-bottom'),
|
|
2208
|
+
left: style.getPropertyValue('--ion-safe-area-left'),
|
|
2209
|
+
right: style.getPropertyValue('--ion-safe-area-right'),
|
|
2210
|
+
});
|
|
2166
2211
|
}
|
|
2167
2212
|
sheetOnDismiss() {
|
|
2168
2213
|
/**
|
|
@@ -2501,20 +2546,20 @@ const Modal = /*@__PURE__*/ proxyCustomElement(class Modal extends HTMLElement {
|
|
|
2501
2546
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
2502
2547
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
2503
2548
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
2504
|
-
return (h(Host, Object.assign({ key: '
|
|
2549
|
+
return (h(Host, Object.assign({ key: '8659056ce9de06c66d65946fe4af939e298d133c', "no-router": true,
|
|
2505
2550
|
// Allow the modal to be navigable when the handle is focusable
|
|
2506
2551
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
2507
2552
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
2508
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
2553
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'e4f287871798d7aa660c8aea3a81deeeb540812d', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '6f3d8d504e080093ba9e5089e5de76feaa13cf38', class: "modal-shadow" }), h("div", Object.assign({ key: '6ad0b4d97e0c0bad56689e457f08819ad857a0b4',
|
|
2509
2554
|
/*
|
|
2510
2555
|
role and aria-modal must be used on the
|
|
2511
2556
|
same element. They must also be set inside the
|
|
2512
2557
|
shadow DOM otherwise ion-button will not be highlighted
|
|
2513
2558
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
2514
2559
|
*/
|
|
2515
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
2560
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'e5a9d74a112e315240b307042ad16d8e6ff2c714', class: "modal-handle",
|
|
2516
2561
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
2517
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
2562
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '66f342587b6eaa5801397d7385ec3dc783bf8f55', onSlotchange: this.onSlotChange }))));
|
|
2518
2563
|
}
|
|
2519
2564
|
get el() { return this; }
|
|
2520
2565
|
static get watchers() { return {
|
|
@@ -1694,6 +1694,7 @@ const Modal = class {
|
|
|
1694
1694
|
}
|
|
1695
1695
|
onWindowResize() {
|
|
1696
1696
|
// Update safe-area overrides for all modal types on resize
|
|
1697
|
+
console.log('[onWindowResize] calling updateSafeAreaOverrides');
|
|
1697
1698
|
this.updateSafeAreaOverrides();
|
|
1698
1699
|
// Only handle view transition for iOS card modals when no custom animations are provided
|
|
1699
1700
|
if (ionicGlobal.getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
|
|
@@ -1941,6 +1942,7 @@ const Modal = class {
|
|
|
1941
1942
|
this.initSwipeToClose();
|
|
1942
1943
|
}
|
|
1943
1944
|
// Now that animation is complete, update safe-area based on actual position
|
|
1945
|
+
console.log('[present animation complete] calling updateSafeAreaOverrides');
|
|
1944
1946
|
this.updateSafeAreaOverrides();
|
|
1945
1947
|
// Initialize view transition listener for iOS card modals
|
|
1946
1948
|
this.initViewTransitionListener();
|
|
@@ -2103,8 +2105,18 @@ const Modal = class {
|
|
|
2103
2105
|
const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
2104
2106
|
const isCardModal = presentingElement !== undefined;
|
|
2105
2107
|
const isTablet = window.innerWidth >= 768;
|
|
2108
|
+
console.log('[setInitialSafeAreaOverrides] called', {
|
|
2109
|
+
isSheetModal,
|
|
2110
|
+
isCardModal,
|
|
2111
|
+
isTablet,
|
|
2112
|
+
breakpoints: this.breakpoints,
|
|
2113
|
+
initialBreakpoint: this.initialBreakpoint,
|
|
2114
|
+
presentingElement: !!presentingElement,
|
|
2115
|
+
innerWidth: window.innerWidth,
|
|
2116
|
+
});
|
|
2106
2117
|
// Sheet modals: always touch bottom, top depends on breakpoint
|
|
2107
2118
|
if (isSheetModal) {
|
|
2119
|
+
console.log('[setInitialSafeAreaOverrides] Sheet modal path - setting top/left/right to 0, leaving bottom alone');
|
|
2108
2120
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2109
2121
|
// Don't override bottom - sheet always touches bottom
|
|
2110
2122
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2113,6 +2125,7 @@ const Modal = class {
|
|
|
2113
2125
|
}
|
|
2114
2126
|
// Card modals are inset from edges (rounded corners), no safe areas needed
|
|
2115
2127
|
if (isCardModal) {
|
|
2128
|
+
console.log('[setInitialSafeAreaOverrides] Card modal path - setting all to 0');
|
|
2116
2129
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2117
2130
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2118
2131
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2121,6 +2134,7 @@ const Modal = class {
|
|
|
2121
2134
|
}
|
|
2122
2135
|
// Phone modals are fullscreen, need all safe areas
|
|
2123
2136
|
if (!isTablet) {
|
|
2137
|
+
console.log('[setInitialSafeAreaOverrides] Phone modal path - not setting any overrides');
|
|
2124
2138
|
// Don't set any overrides - inherit from :root
|
|
2125
2139
|
return;
|
|
2126
2140
|
}
|
|
@@ -2129,11 +2143,14 @@ const Modal = class {
|
|
|
2129
2143
|
const computedStyle = getComputedStyle(this.el);
|
|
2130
2144
|
const width = computedStyle.getPropertyValue('--width').trim();
|
|
2131
2145
|
const height = computedStyle.getPropertyValue('--height').trim();
|
|
2146
|
+
console.log('[setInitialSafeAreaOverrides] Tablet modal path', { width, height });
|
|
2132
2147
|
if (width === '100%' && height === '100%') {
|
|
2148
|
+
console.log('[setInitialSafeAreaOverrides] Fullscreen tablet modal - not setting overrides');
|
|
2133
2149
|
// Fullscreen modal - need safe areas, don't override
|
|
2134
2150
|
return;
|
|
2135
2151
|
}
|
|
2136
2152
|
// Centered dialog - zero out all safe areas
|
|
2153
|
+
console.log('[setInitialSafeAreaOverrides] Centered tablet dialog - setting all to 0');
|
|
2137
2154
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2138
2155
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2139
2156
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2146,22 +2163,50 @@ const Modal = class {
|
|
|
2146
2163
|
*/
|
|
2147
2164
|
updateSafeAreaOverrides() {
|
|
2148
2165
|
const wrapper = this.wrapperEl;
|
|
2149
|
-
if (!wrapper)
|
|
2166
|
+
if (!wrapper) {
|
|
2167
|
+
console.log('[updateSafeAreaOverrides] No wrapper element, returning early');
|
|
2150
2168
|
return;
|
|
2169
|
+
}
|
|
2151
2170
|
const rect = wrapper.getBoundingClientRect();
|
|
2152
2171
|
const threshold = 2; // Account for subpixel rendering
|
|
2153
2172
|
const touchingTop = rect.top <= threshold;
|
|
2154
2173
|
const touchingBottom = rect.bottom >= window.innerHeight - threshold;
|
|
2155
2174
|
const touchingLeft = rect.left <= threshold;
|
|
2156
2175
|
const touchingRight = rect.right >= window.innerWidth - threshold;
|
|
2176
|
+
console.log('[updateSafeAreaOverrides] called', {
|
|
2177
|
+
isSheetModal: this.isSheetModal,
|
|
2178
|
+
rect: { top: rect.top, bottom: rect.bottom, left: rect.left, right: rect.right },
|
|
2179
|
+
innerHeight: window.innerHeight,
|
|
2180
|
+
innerWidth: window.innerWidth,
|
|
2181
|
+
threshold,
|
|
2182
|
+
touchingTop,
|
|
2183
|
+
touchingBottom,
|
|
2184
|
+
touchingLeft,
|
|
2185
|
+
touchingRight,
|
|
2186
|
+
bottomCalc: `${rect.bottom} >= ${window.innerHeight - threshold} = ${touchingBottom}`,
|
|
2187
|
+
});
|
|
2157
2188
|
// Remove override when touching edge (allow inheritance), set to 0 when not touching
|
|
2158
2189
|
const style = this.el.style;
|
|
2190
|
+
const actions = {
|
|
2191
|
+
top: touchingTop ? 'removeProperty' : 'setProperty 0px',
|
|
2192
|
+
bottom: touchingBottom ? 'removeProperty' : 'setProperty 0px',
|
|
2193
|
+
left: touchingLeft ? 'removeProperty' : 'setProperty 0px',
|
|
2194
|
+
right: touchingRight ? 'removeProperty' : 'setProperty 0px',
|
|
2195
|
+
};
|
|
2196
|
+
console.log('[updateSafeAreaOverrides] actions:', actions);
|
|
2159
2197
|
touchingTop ? style.removeProperty('--ion-safe-area-top') : style.setProperty('--ion-safe-area-top', '0px');
|
|
2160
2198
|
touchingBottom
|
|
2161
2199
|
? style.removeProperty('--ion-safe-area-bottom')
|
|
2162
2200
|
: style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2163
2201
|
touchingLeft ? style.removeProperty('--ion-safe-area-left') : style.setProperty('--ion-safe-area-left', '0px');
|
|
2164
2202
|
touchingRight ? style.removeProperty('--ion-safe-area-right') : style.setProperty('--ion-safe-area-right', '0px');
|
|
2203
|
+
// Log the actual style values after setting
|
|
2204
|
+
console.log('[updateSafeAreaOverrides] after setting, inline styles:', {
|
|
2205
|
+
top: style.getPropertyValue('--ion-safe-area-top'),
|
|
2206
|
+
bottom: style.getPropertyValue('--ion-safe-area-bottom'),
|
|
2207
|
+
left: style.getPropertyValue('--ion-safe-area-left'),
|
|
2208
|
+
right: style.getPropertyValue('--ion-safe-area-right'),
|
|
2209
|
+
});
|
|
2165
2210
|
}
|
|
2166
2211
|
sheetOnDismiss() {
|
|
2167
2212
|
/**
|
|
@@ -2500,20 +2545,20 @@ const Modal = class {
|
|
|
2500
2545
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
2501
2546
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
2502
2547
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
2503
|
-
return (index$3.h(index$3.Host, Object.assign({ key: '
|
|
2548
|
+
return (index$3.h(index$3.Host, Object.assign({ key: '8659056ce9de06c66d65946fe4af939e298d133c', "no-router": true,
|
|
2504
2549
|
// Allow the modal to be navigable when the handle is focusable
|
|
2505
2550
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
2506
2551
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
2507
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), index$3.h("ion-backdrop", { key: '
|
|
2552
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), index$3.h("ion-backdrop", { key: 'e4f287871798d7aa660c8aea3a81deeeb540812d', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '6f3d8d504e080093ba9e5089e5de76feaa13cf38', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '6ad0b4d97e0c0bad56689e457f08819ad857a0b4',
|
|
2508
2553
|
/*
|
|
2509
2554
|
role and aria-modal must be used on the
|
|
2510
2555
|
same element. They must also be set inside the
|
|
2511
2556
|
shadow DOM otherwise ion-button will not be highlighted
|
|
2512
2557
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
2513
2558
|
*/
|
|
2514
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: '
|
|
2559
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: 'e5a9d74a112e315240b307042ad16d8e6ff2c714', class: "modal-handle",
|
|
2515
2560
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
2516
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), index$3.h("slot", { key: '
|
|
2561
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), index$3.h("slot", { key: '66f342587b6eaa5801397d7385ec3dc783bf8f55', onSlotchange: this.onSlotChange }))));
|
|
2517
2562
|
}
|
|
2518
2563
|
get el() { return index$3.getElement(this); }
|
|
2519
2564
|
static get watchers() { return {
|
|
@@ -233,6 +233,7 @@ export class Modal {
|
|
|
233
233
|
}
|
|
234
234
|
onWindowResize() {
|
|
235
235
|
// Update safe-area overrides for all modal types on resize
|
|
236
|
+
console.log('[onWindowResize] calling updateSafeAreaOverrides');
|
|
236
237
|
this.updateSafeAreaOverrides();
|
|
237
238
|
// Only handle view transition for iOS card modals when no custom animations are provided
|
|
238
239
|
if (getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
|
|
@@ -480,6 +481,7 @@ export class Modal {
|
|
|
480
481
|
this.initSwipeToClose();
|
|
481
482
|
}
|
|
482
483
|
// Now that animation is complete, update safe-area based on actual position
|
|
484
|
+
console.log('[present animation complete] calling updateSafeAreaOverrides');
|
|
483
485
|
this.updateSafeAreaOverrides();
|
|
484
486
|
// Initialize view transition listener for iOS card modals
|
|
485
487
|
this.initViewTransitionListener();
|
|
@@ -642,8 +644,18 @@ export class Modal {
|
|
|
642
644
|
const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
643
645
|
const isCardModal = presentingElement !== undefined;
|
|
644
646
|
const isTablet = window.innerWidth >= 768;
|
|
647
|
+
console.log('[setInitialSafeAreaOverrides] called', {
|
|
648
|
+
isSheetModal,
|
|
649
|
+
isCardModal,
|
|
650
|
+
isTablet,
|
|
651
|
+
breakpoints: this.breakpoints,
|
|
652
|
+
initialBreakpoint: this.initialBreakpoint,
|
|
653
|
+
presentingElement: !!presentingElement,
|
|
654
|
+
innerWidth: window.innerWidth,
|
|
655
|
+
});
|
|
645
656
|
// Sheet modals: always touch bottom, top depends on breakpoint
|
|
646
657
|
if (isSheetModal) {
|
|
658
|
+
console.log('[setInitialSafeAreaOverrides] Sheet modal path - setting top/left/right to 0, leaving bottom alone');
|
|
647
659
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
648
660
|
// Don't override bottom - sheet always touches bottom
|
|
649
661
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -652,6 +664,7 @@ export class Modal {
|
|
|
652
664
|
}
|
|
653
665
|
// Card modals are inset from edges (rounded corners), no safe areas needed
|
|
654
666
|
if (isCardModal) {
|
|
667
|
+
console.log('[setInitialSafeAreaOverrides] Card modal path - setting all to 0');
|
|
655
668
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
656
669
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
657
670
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -660,6 +673,7 @@ export class Modal {
|
|
|
660
673
|
}
|
|
661
674
|
// Phone modals are fullscreen, need all safe areas
|
|
662
675
|
if (!isTablet) {
|
|
676
|
+
console.log('[setInitialSafeAreaOverrides] Phone modal path - not setting any overrides');
|
|
663
677
|
// Don't set any overrides - inherit from :root
|
|
664
678
|
return;
|
|
665
679
|
}
|
|
@@ -668,11 +682,14 @@ export class Modal {
|
|
|
668
682
|
const computedStyle = getComputedStyle(this.el);
|
|
669
683
|
const width = computedStyle.getPropertyValue('--width').trim();
|
|
670
684
|
const height = computedStyle.getPropertyValue('--height').trim();
|
|
685
|
+
console.log('[setInitialSafeAreaOverrides] Tablet modal path', { width, height });
|
|
671
686
|
if (width === '100%' && height === '100%') {
|
|
687
|
+
console.log('[setInitialSafeAreaOverrides] Fullscreen tablet modal - not setting overrides');
|
|
672
688
|
// Fullscreen modal - need safe areas, don't override
|
|
673
689
|
return;
|
|
674
690
|
}
|
|
675
691
|
// Centered dialog - zero out all safe areas
|
|
692
|
+
console.log('[setInitialSafeAreaOverrides] Centered tablet dialog - setting all to 0');
|
|
676
693
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
677
694
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
678
695
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -685,22 +702,50 @@ export class Modal {
|
|
|
685
702
|
*/
|
|
686
703
|
updateSafeAreaOverrides() {
|
|
687
704
|
const wrapper = this.wrapperEl;
|
|
688
|
-
if (!wrapper)
|
|
705
|
+
if (!wrapper) {
|
|
706
|
+
console.log('[updateSafeAreaOverrides] No wrapper element, returning early');
|
|
689
707
|
return;
|
|
708
|
+
}
|
|
690
709
|
const rect = wrapper.getBoundingClientRect();
|
|
691
710
|
const threshold = 2; // Account for subpixel rendering
|
|
692
711
|
const touchingTop = rect.top <= threshold;
|
|
693
712
|
const touchingBottom = rect.bottom >= window.innerHeight - threshold;
|
|
694
713
|
const touchingLeft = rect.left <= threshold;
|
|
695
714
|
const touchingRight = rect.right >= window.innerWidth - threshold;
|
|
715
|
+
console.log('[updateSafeAreaOverrides] called', {
|
|
716
|
+
isSheetModal: this.isSheetModal,
|
|
717
|
+
rect: { top: rect.top, bottom: rect.bottom, left: rect.left, right: rect.right },
|
|
718
|
+
innerHeight: window.innerHeight,
|
|
719
|
+
innerWidth: window.innerWidth,
|
|
720
|
+
threshold,
|
|
721
|
+
touchingTop,
|
|
722
|
+
touchingBottom,
|
|
723
|
+
touchingLeft,
|
|
724
|
+
touchingRight,
|
|
725
|
+
bottomCalc: `${rect.bottom} >= ${window.innerHeight - threshold} = ${touchingBottom}`,
|
|
726
|
+
});
|
|
696
727
|
// Remove override when touching edge (allow inheritance), set to 0 when not touching
|
|
697
728
|
const style = this.el.style;
|
|
729
|
+
const actions = {
|
|
730
|
+
top: touchingTop ? 'removeProperty' : 'setProperty 0px',
|
|
731
|
+
bottom: touchingBottom ? 'removeProperty' : 'setProperty 0px',
|
|
732
|
+
left: touchingLeft ? 'removeProperty' : 'setProperty 0px',
|
|
733
|
+
right: touchingRight ? 'removeProperty' : 'setProperty 0px',
|
|
734
|
+
};
|
|
735
|
+
console.log('[updateSafeAreaOverrides] actions:', actions);
|
|
698
736
|
touchingTop ? style.removeProperty('--ion-safe-area-top') : style.setProperty('--ion-safe-area-top', '0px');
|
|
699
737
|
touchingBottom
|
|
700
738
|
? style.removeProperty('--ion-safe-area-bottom')
|
|
701
739
|
: style.setProperty('--ion-safe-area-bottom', '0px');
|
|
702
740
|
touchingLeft ? style.removeProperty('--ion-safe-area-left') : style.setProperty('--ion-safe-area-left', '0px');
|
|
703
741
|
touchingRight ? style.removeProperty('--ion-safe-area-right') : style.setProperty('--ion-safe-area-right', '0px');
|
|
742
|
+
// Log the actual style values after setting
|
|
743
|
+
console.log('[updateSafeAreaOverrides] after setting, inline styles:', {
|
|
744
|
+
top: style.getPropertyValue('--ion-safe-area-top'),
|
|
745
|
+
bottom: style.getPropertyValue('--ion-safe-area-bottom'),
|
|
746
|
+
left: style.getPropertyValue('--ion-safe-area-left'),
|
|
747
|
+
right: style.getPropertyValue('--ion-safe-area-right'),
|
|
748
|
+
});
|
|
704
749
|
}
|
|
705
750
|
sheetOnDismiss() {
|
|
706
751
|
/**
|
|
@@ -1047,20 +1092,20 @@ export class Modal {
|
|
|
1047
1092
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
1048
1093
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1049
1094
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
1050
|
-
return (h(Host, Object.assign({ key: '
|
|
1095
|
+
return (h(Host, Object.assign({ key: '8659056ce9de06c66d65946fe4af939e298d133c', "no-router": true,
|
|
1051
1096
|
// Allow the modal to be navigable when the handle is focusable
|
|
1052
1097
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
1053
1098
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1054
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
1099
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'e4f287871798d7aa660c8aea3a81deeeb540812d', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '6f3d8d504e080093ba9e5089e5de76feaa13cf38', class: "modal-shadow" }), h("div", Object.assign({ key: '6ad0b4d97e0c0bad56689e457f08819ad857a0b4',
|
|
1055
1100
|
/*
|
|
1056
1101
|
role and aria-modal must be used on the
|
|
1057
1102
|
same element. They must also be set inside the
|
|
1058
1103
|
shadow DOM otherwise ion-button will not be highlighted
|
|
1059
1104
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
1060
1105
|
*/
|
|
1061
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
1106
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'e5a9d74a112e315240b307042ad16d8e6ff2c714', class: "modal-handle",
|
|
1062
1107
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1063
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
1108
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '66f342587b6eaa5801397d7385ec3dc783bf8f55', onSlotchange: this.onSlotChange }))));
|
|
1064
1109
|
}
|
|
1065
1110
|
static get is() { return "ion-modal"; }
|
|
1066
1111
|
static get encapsulation() { return "shadow"; }
|
package/dist/docs.json
CHANGED
|
@@ -1692,6 +1692,7 @@ const Modal = class {
|
|
|
1692
1692
|
}
|
|
1693
1693
|
onWindowResize() {
|
|
1694
1694
|
// Update safe-area overrides for all modal types on resize
|
|
1695
|
+
console.log('[onWindowResize] calling updateSafeAreaOverrides');
|
|
1695
1696
|
this.updateSafeAreaOverrides();
|
|
1696
1697
|
// Only handle view transition for iOS card modals when no custom animations are provided
|
|
1697
1698
|
if (getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
|
|
@@ -1939,6 +1940,7 @@ const Modal = class {
|
|
|
1939
1940
|
this.initSwipeToClose();
|
|
1940
1941
|
}
|
|
1941
1942
|
// Now that animation is complete, update safe-area based on actual position
|
|
1943
|
+
console.log('[present animation complete] calling updateSafeAreaOverrides');
|
|
1942
1944
|
this.updateSafeAreaOverrides();
|
|
1943
1945
|
// Initialize view transition listener for iOS card modals
|
|
1944
1946
|
this.initViewTransitionListener();
|
|
@@ -2101,8 +2103,18 @@ const Modal = class {
|
|
|
2101
2103
|
const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
2102
2104
|
const isCardModal = presentingElement !== undefined;
|
|
2103
2105
|
const isTablet = window.innerWidth >= 768;
|
|
2106
|
+
console.log('[setInitialSafeAreaOverrides] called', {
|
|
2107
|
+
isSheetModal,
|
|
2108
|
+
isCardModal,
|
|
2109
|
+
isTablet,
|
|
2110
|
+
breakpoints: this.breakpoints,
|
|
2111
|
+
initialBreakpoint: this.initialBreakpoint,
|
|
2112
|
+
presentingElement: !!presentingElement,
|
|
2113
|
+
innerWidth: window.innerWidth,
|
|
2114
|
+
});
|
|
2104
2115
|
// Sheet modals: always touch bottom, top depends on breakpoint
|
|
2105
2116
|
if (isSheetModal) {
|
|
2117
|
+
console.log('[setInitialSafeAreaOverrides] Sheet modal path - setting top/left/right to 0, leaving bottom alone');
|
|
2106
2118
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2107
2119
|
// Don't override bottom - sheet always touches bottom
|
|
2108
2120
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2111,6 +2123,7 @@ const Modal = class {
|
|
|
2111
2123
|
}
|
|
2112
2124
|
// Card modals are inset from edges (rounded corners), no safe areas needed
|
|
2113
2125
|
if (isCardModal) {
|
|
2126
|
+
console.log('[setInitialSafeAreaOverrides] Card modal path - setting all to 0');
|
|
2114
2127
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2115
2128
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2116
2129
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2119,6 +2132,7 @@ const Modal = class {
|
|
|
2119
2132
|
}
|
|
2120
2133
|
// Phone modals are fullscreen, need all safe areas
|
|
2121
2134
|
if (!isTablet) {
|
|
2135
|
+
console.log('[setInitialSafeAreaOverrides] Phone modal path - not setting any overrides');
|
|
2122
2136
|
// Don't set any overrides - inherit from :root
|
|
2123
2137
|
return;
|
|
2124
2138
|
}
|
|
@@ -2127,11 +2141,14 @@ const Modal = class {
|
|
|
2127
2141
|
const computedStyle = getComputedStyle(this.el);
|
|
2128
2142
|
const width = computedStyle.getPropertyValue('--width').trim();
|
|
2129
2143
|
const height = computedStyle.getPropertyValue('--height').trim();
|
|
2144
|
+
console.log('[setInitialSafeAreaOverrides] Tablet modal path', { width, height });
|
|
2130
2145
|
if (width === '100%' && height === '100%') {
|
|
2146
|
+
console.log('[setInitialSafeAreaOverrides] Fullscreen tablet modal - not setting overrides');
|
|
2131
2147
|
// Fullscreen modal - need safe areas, don't override
|
|
2132
2148
|
return;
|
|
2133
2149
|
}
|
|
2134
2150
|
// Centered dialog - zero out all safe areas
|
|
2151
|
+
console.log('[setInitialSafeAreaOverrides] Centered tablet dialog - setting all to 0');
|
|
2135
2152
|
style.setProperty('--ion-safe-area-top', '0px');
|
|
2136
2153
|
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2137
2154
|
style.setProperty('--ion-safe-area-left', '0px');
|
|
@@ -2144,22 +2161,50 @@ const Modal = class {
|
|
|
2144
2161
|
*/
|
|
2145
2162
|
updateSafeAreaOverrides() {
|
|
2146
2163
|
const wrapper = this.wrapperEl;
|
|
2147
|
-
if (!wrapper)
|
|
2164
|
+
if (!wrapper) {
|
|
2165
|
+
console.log('[updateSafeAreaOverrides] No wrapper element, returning early');
|
|
2148
2166
|
return;
|
|
2167
|
+
}
|
|
2149
2168
|
const rect = wrapper.getBoundingClientRect();
|
|
2150
2169
|
const threshold = 2; // Account for subpixel rendering
|
|
2151
2170
|
const touchingTop = rect.top <= threshold;
|
|
2152
2171
|
const touchingBottom = rect.bottom >= window.innerHeight - threshold;
|
|
2153
2172
|
const touchingLeft = rect.left <= threshold;
|
|
2154
2173
|
const touchingRight = rect.right >= window.innerWidth - threshold;
|
|
2174
|
+
console.log('[updateSafeAreaOverrides] called', {
|
|
2175
|
+
isSheetModal: this.isSheetModal,
|
|
2176
|
+
rect: { top: rect.top, bottom: rect.bottom, left: rect.left, right: rect.right },
|
|
2177
|
+
innerHeight: window.innerHeight,
|
|
2178
|
+
innerWidth: window.innerWidth,
|
|
2179
|
+
threshold,
|
|
2180
|
+
touchingTop,
|
|
2181
|
+
touchingBottom,
|
|
2182
|
+
touchingLeft,
|
|
2183
|
+
touchingRight,
|
|
2184
|
+
bottomCalc: `${rect.bottom} >= ${window.innerHeight - threshold} = ${touchingBottom}`,
|
|
2185
|
+
});
|
|
2155
2186
|
// Remove override when touching edge (allow inheritance), set to 0 when not touching
|
|
2156
2187
|
const style = this.el.style;
|
|
2188
|
+
const actions = {
|
|
2189
|
+
top: touchingTop ? 'removeProperty' : 'setProperty 0px',
|
|
2190
|
+
bottom: touchingBottom ? 'removeProperty' : 'setProperty 0px',
|
|
2191
|
+
left: touchingLeft ? 'removeProperty' : 'setProperty 0px',
|
|
2192
|
+
right: touchingRight ? 'removeProperty' : 'setProperty 0px',
|
|
2193
|
+
};
|
|
2194
|
+
console.log('[updateSafeAreaOverrides] actions:', actions);
|
|
2157
2195
|
touchingTop ? style.removeProperty('--ion-safe-area-top') : style.setProperty('--ion-safe-area-top', '0px');
|
|
2158
2196
|
touchingBottom
|
|
2159
2197
|
? style.removeProperty('--ion-safe-area-bottom')
|
|
2160
2198
|
: style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2161
2199
|
touchingLeft ? style.removeProperty('--ion-safe-area-left') : style.setProperty('--ion-safe-area-left', '0px');
|
|
2162
2200
|
touchingRight ? style.removeProperty('--ion-safe-area-right') : style.setProperty('--ion-safe-area-right', '0px');
|
|
2201
|
+
// Log the actual style values after setting
|
|
2202
|
+
console.log('[updateSafeAreaOverrides] after setting, inline styles:', {
|
|
2203
|
+
top: style.getPropertyValue('--ion-safe-area-top'),
|
|
2204
|
+
bottom: style.getPropertyValue('--ion-safe-area-bottom'),
|
|
2205
|
+
left: style.getPropertyValue('--ion-safe-area-left'),
|
|
2206
|
+
right: style.getPropertyValue('--ion-safe-area-right'),
|
|
2207
|
+
});
|
|
2163
2208
|
}
|
|
2164
2209
|
sheetOnDismiss() {
|
|
2165
2210
|
/**
|
|
@@ -2498,20 +2543,20 @@ const Modal = class {
|
|
|
2498
2543
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
2499
2544
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
2500
2545
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
2501
|
-
return (h(Host, Object.assign({ key: '
|
|
2546
|
+
return (h(Host, Object.assign({ key: '8659056ce9de06c66d65946fe4af939e298d133c', "no-router": true,
|
|
2502
2547
|
// Allow the modal to be navigable when the handle is focusable
|
|
2503
2548
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
2504
2549
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
2505
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
2550
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'e4f287871798d7aa660c8aea3a81deeeb540812d', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '6f3d8d504e080093ba9e5089e5de76feaa13cf38', class: "modal-shadow" }), h("div", Object.assign({ key: '6ad0b4d97e0c0bad56689e457f08819ad857a0b4',
|
|
2506
2551
|
/*
|
|
2507
2552
|
role and aria-modal must be used on the
|
|
2508
2553
|
same element. They must also be set inside the
|
|
2509
2554
|
shadow DOM otherwise ion-button will not be highlighted
|
|
2510
2555
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
2511
2556
|
*/
|
|
2512
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
2557
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'e5a9d74a112e315240b307042ad16d8e6ff2c714', class: "modal-handle",
|
|
2513
2558
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
2514
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
2559
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '66f342587b6eaa5801397d7385ec3dc783bf8f55', onSlotchange: this.onSlotChange }))));
|
|
2515
2560
|
}
|
|
2516
2561
|
get el() { return getElement(this); }
|
|
2517
2562
|
static get watchers() { return {
|