@ionic/core 9.0.7-dev.11790870774.174de601 → 9.0.7-dev.11790887756.13f9320e
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/index.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-app.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/{p-BinR4_P7.js → p-4QPSgC9s.js} +1 -1
- package/components/{p-CiXOsJF2.js → p-BHFF2Rku.js} +1 -1
- package/components/{p-DPyjiKOq.js → p-BRCkmCrc.js} +1 -1
- package/components/p-BsOZAFNI.js +4 -0
- package/components/p-CArDvZQz.js +4 -0
- package/components/{p-PPagT42x.js → p-CB2RQcuo.js} +1 -1
- package/components/p-CKtw0kcb.js +4 -0
- package/components/{p-CvzE7FFp.js → p-CZlKzXag.js} +1 -1
- package/components/p-CgwJ4NuD.js +4 -0
- package/components/{p-CQjNc-Pz.js → p-DjbwrsJd.js} +1 -1
- package/components/p-vg8joG77.js +4 -0
- package/css/core.css.map +1 -1
- package/css/display.css.map +1 -1
- package/css/flex-utils.css.map +1 -1
- package/css/float-elements.css +1 -1
- package/css/float-elements.css.map +1 -1
- package/css/global.bundle.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/css/padding.css.map +1 -1
- package/css/structure.css.map +1 -1
- package/css/text-alignment.css.map +1 -1
- package/css/text-transformation.css.map +1 -1
- package/css/typography.css.map +1 -1
- package/css/utils.bundle.css +1 -1
- package/css/utils.bundle.css.map +1 -1
- package/dist/cjs/{index-CElfU-dK.js → index-fm08amr6.js} +2 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/ion-alert.cjs.entry.js +1 -1
- package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +5 -4
- package/dist/cjs/ion-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/{overlays-C68wNDWY.js → overlays-CEt1Pxnd.js} +75 -16
- package/dist/collection/components/menu/menu.js +4 -3
- package/dist/collection/utils/hardware-back-button.js +41 -12
- package/dist/collection/utils/menu-controller/index.js +2 -1
- package/dist/collection/utils/overlays.js +30 -4
- package/dist/docs.json +1 -1
- package/dist/esm/{index-B9jhwvmO.js → index-CzPyKjAQ.js} +2 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/ion-action-sheet.entry.js +1 -1
- package/dist/esm/ion-alert.entry.js +1 -1
- package/dist/esm/ion-app_8.entry.js +2 -2
- package/dist/esm/ion-datetime.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +5 -4
- package/dist/esm/ion-modal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-select-modal.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +1 -1
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/{overlays-BQnV0HAU.js → overlays-D5W_ly69.js} +74 -17
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-3a5faaa8.entry.js → p-0111c108.entry.js} +1 -1
- package/dist/ionic/{p-636349e2.entry.js → p-22160ced.entry.js} +1 -1
- package/dist/ionic/{p-24b0a961.entry.js → p-5112a8ba.entry.js} +1 -1
- package/dist/ionic/{p-f9057f70.entry.js → p-5edc856b.entry.js} +1 -1
- package/dist/ionic/{p-3bd7e5df.entry.js → p-8a00d904.entry.js} +1 -1
- package/dist/ionic/p-C036rEeA.js +4 -0
- package/dist/ionic/p-OJpZr8fg.js +4 -0
- package/dist/ionic/p-b3346b86.entry.js +4 -0
- package/dist/ionic/{p-efa00ce5.entry.js → p-b798b4ec.entry.js} +1 -1
- package/dist/ionic/{p-30dcf43b.entry.js → p-d0451c11.entry.js} +1 -1
- package/dist/ionic/{p-76309bab.entry.js → p-e063a7bf.entry.js} +1 -1
- package/dist/ionic/{p-b1164028.entry.js → p-ff664022.entry.js} +1 -1
- package/dist/ionic/{p-7441ed2b.entry.js → p-ffd45970.entry.js} +1 -1
- package/dist/types/utils/config.d.ts +4 -1
- package/dist/types/utils/hardware-back-button.d.ts +11 -0
- package/dist/types/utils/overlays.d.ts +5 -2
- package/hydrate/index.js +13 -5
- package/hydrate/index.mjs +13 -5
- package/package.json +1 -1
- package/components/p-BNnmwjuy.js +0 -4
- package/components/p-BsLM9eQu.js +0 -4
- package/components/p-DGLuPe1e.js +0 -4
- package/components/p-WMQuK_Tj.js +0 -4
- package/components/p-q2WJ5Igc.js +0 -4
- package/dist/ionic/p-83448626.entry.js +0 -4
- package/dist/ionic/p-Ba6ZV-qU.js +0 -4
- package/dist/ionic/p-DZUqAr_6.js +0 -4
|
@@ -30,6 +30,23 @@ export const shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher'
|
|
|
30
30
|
export const blockHardwareBackButton = () => {
|
|
31
31
|
document.addEventListener('backbutton', () => { });
|
|
32
32
|
};
|
|
33
|
+
const closeWatcherConditions = [];
|
|
34
|
+
let syncCloseWatcher;
|
|
35
|
+
/**
|
|
36
|
+
* Registers a check for whether the back button
|
|
37
|
+
* has something to close. The CloseWatcher is only
|
|
38
|
+
* active while one of these checks passes.
|
|
39
|
+
*/
|
|
40
|
+
export const addCloseWatcherCondition = (condition) => {
|
|
41
|
+
closeWatcherConditions.push(condition);
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Call this whenever something the back button
|
|
45
|
+
* can close opens or closes.
|
|
46
|
+
*/
|
|
47
|
+
export const updateCloseWatcher = () => {
|
|
48
|
+
syncCloseWatcher?.();
|
|
49
|
+
};
|
|
33
50
|
export const startHardwareBackButton = () => {
|
|
34
51
|
const doc = document;
|
|
35
52
|
let busy = false;
|
|
@@ -81,32 +98,44 @@ export const startHardwareBackButton = () => {
|
|
|
81
98
|
processHandlers();
|
|
82
99
|
};
|
|
83
100
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
* events firing.
|
|
101
|
+
* Android WebView never sends the hardware back
|
|
102
|
+
* button to a CloseWatcher, so hybrid apps still
|
|
103
|
+
* need this. Browsers never fire backbutton.
|
|
88
104
|
*/
|
|
105
|
+
doc.addEventListener('backbutton', backButtonCallback);
|
|
89
106
|
if (shouldUseCloseWatcher()) {
|
|
90
107
|
let watcher;
|
|
91
|
-
|
|
92
|
-
|
|
108
|
+
/**
|
|
109
|
+
* An active CloseWatcher stops the back button from
|
|
110
|
+
* navigating, so only keep one while there's something to close.
|
|
111
|
+
*/
|
|
112
|
+
syncCloseWatcher = () => {
|
|
113
|
+
const canClose = closeWatcherConditions.some((condition) => condition());
|
|
114
|
+
if (!canClose) {
|
|
115
|
+
watcher?.destroy();
|
|
116
|
+
watcher = undefined;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (watcher !== undefined) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
93
122
|
watcher = new win.CloseWatcher();
|
|
94
123
|
/**
|
|
95
124
|
* Once a close request happens
|
|
96
125
|
* the watcher gets destroyed.
|
|
97
126
|
* As a result, we need to re-configure
|
|
98
127
|
* the watcher so we can respond to other
|
|
99
|
-
* close requests
|
|
128
|
+
* close requests, including after one that
|
|
129
|
+
* closed nothing, like a modal whose canDismiss
|
|
130
|
+
* returned false.
|
|
100
131
|
*/
|
|
101
132
|
watcher.onclose = () => {
|
|
133
|
+
watcher = undefined;
|
|
102
134
|
backButtonCallback();
|
|
103
|
-
|
|
135
|
+
syncCloseWatcher?.();
|
|
104
136
|
};
|
|
105
137
|
};
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
doc.addEventListener('backbutton', backButtonCallback);
|
|
138
|
+
syncCloseWatcher();
|
|
110
139
|
}
|
|
111
140
|
};
|
|
112
141
|
export const OVERLAY_BACK_BUTTON_PRIORITY = 100;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { doc } from "../browser/index";
|
|
5
|
-
import { MENU_BACK_BUTTON_PRIORITY } from "../hardware-back-button";
|
|
5
|
+
import { MENU_BACK_BUTTON_PRIORITY, addCloseWatcherCondition } from "../hardware-back-button";
|
|
6
6
|
import { printIonWarning } from "../logging/index";
|
|
7
7
|
import { componentOnReady } from "../helpers";
|
|
8
8
|
import { menuOverlayAnimation } from "./animations/overlay";
|
|
@@ -184,6 +184,7 @@ const createMenuController = () => {
|
|
|
184
184
|
registerAnimation('reveal', menuRevealAnimation);
|
|
185
185
|
registerAnimation('push', menuPushAnimation);
|
|
186
186
|
registerAnimation('overlay', menuOverlayAnimation);
|
|
187
|
+
addCloseWatcherCondition(() => _getOpenSync() !== undefined);
|
|
187
188
|
doc?.addEventListener('ionBackButton', (ev) => {
|
|
188
189
|
const openMenu = _getOpenSync();
|
|
189
190
|
if (openMenu) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { doc } from "./browser/index";
|
|
5
5
|
import { focusFirstDescendant, focusLastDescendant, focusableQueryString } from "./focus-trap";
|
|
6
|
-
import { shouldUseCloseWatcher } from "./hardware-back-button";
|
|
6
|
+
import { addCloseWatcherCondition, shouldUseCloseWatcher, updateCloseWatcher } from "./hardware-back-button";
|
|
7
7
|
import { printIonError, printIonWarning } from "./logging/index";
|
|
8
8
|
import { config } from "../global/config";
|
|
9
9
|
import { getIonMode } from "../global/ionic-global";
|
|
@@ -13,6 +13,11 @@ import { OVERLAY_BACK_BUTTON_PRIORITY } from "./hardware-back-button";
|
|
|
13
13
|
import { addEventListener, componentOnReady, focusVisibleElement, getElementRoot, removeEventListener, } from "./helpers";
|
|
14
14
|
let lastOverlayIndex = 0;
|
|
15
15
|
let lastId = 0;
|
|
16
|
+
/**
|
|
17
|
+
* Every overlay except toast, which doesn't trap
|
|
18
|
+
* focus or close on back.
|
|
19
|
+
*/
|
|
20
|
+
const NON_TOAST_OVERLAYS = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover';
|
|
16
21
|
export const activeAnimations = new WeakMap();
|
|
17
22
|
/**
|
|
18
23
|
* Determines if the overlay's backdrop is always blocking (no background interaction).
|
|
@@ -139,7 +144,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
|
139
144
|
* Should NOT include: Toast
|
|
140
145
|
*/
|
|
141
146
|
const trapKeyboardFocus = (ev, doc) => {
|
|
142
|
-
const lastOverlay = getPresentedOverlay(doc,
|
|
147
|
+
const lastOverlay = getPresentedOverlay(doc, NON_TOAST_OVERLAYS);
|
|
143
148
|
const target = ev.target;
|
|
144
149
|
/**
|
|
145
150
|
* If no active overlay, ignore this event.
|
|
@@ -322,6 +327,11 @@ const connectListeners = (doc) => {
|
|
|
322
327
|
doc.addEventListener('focus', (ev) => {
|
|
323
328
|
trapKeyboardFocus(ev, doc);
|
|
324
329
|
}, true);
|
|
330
|
+
/**
|
|
331
|
+
* Whether the overlay actually dismisses is checked at press time,
|
|
332
|
+
* since `backdropDismiss` can change while it's open.
|
|
333
|
+
*/
|
|
334
|
+
addCloseWatcherCondition(() => getPresentedOverlay(doc, NON_TOAST_OVERLAYS) !== undefined);
|
|
325
335
|
// handle back-button click
|
|
326
336
|
doc.addEventListener('ionBackButton', (ev) => {
|
|
327
337
|
const lastOverlay = getPresentedOverlay(doc);
|
|
@@ -445,7 +455,8 @@ export const setRootAriaHidden = (hidden = false) => {
|
|
|
445
455
|
* Cleans up root `aria-hidden` and `backdrop-no-scroll` when
|
|
446
456
|
* an overlay is removed from the DOM without going through
|
|
447
457
|
* the `dismiss()` flow (e.g., when a framework unmounts the
|
|
448
|
-
* overlay during a route change).
|
|
458
|
+
* overlay during a route change). Also releases the
|
|
459
|
+
* CloseWatcher if nothing is left to close.
|
|
449
460
|
*
|
|
450
461
|
* Should be called from an overlay's `disconnectedCallback`
|
|
451
462
|
* when the overlay was still presented at the time of removal.
|
|
@@ -454,6 +465,7 @@ export const cleanupRootFocusTrapAccessibility = () => {
|
|
|
454
465
|
if (typeof document === 'undefined') {
|
|
455
466
|
return;
|
|
456
467
|
}
|
|
468
|
+
updateCloseWatcher();
|
|
457
469
|
const remainingOverlays = getPresentedOverlays(document);
|
|
458
470
|
const hasRemainingLocking = remainingOverlays.some((o) => locksAppRoot(o));
|
|
459
471
|
if (!hasRemainingLocking) {
|
|
@@ -475,7 +487,9 @@ const applyRootLock = (el) => {
|
|
|
475
487
|
};
|
|
476
488
|
/**
|
|
477
489
|
* Re-applies the root lock that `cleanupRootFocusTrapAccessibility()` released.
|
|
478
|
-
* Call from `connectedCallback` when the overlay is still presented.
|
|
490
|
+
* Call from `connectedCallback` when the overlay is still presented. Also
|
|
491
|
+
* re-arms the CloseWatcher, which every overlay needs, so that happens
|
|
492
|
+
* before the `locksAppRoot` check.
|
|
479
493
|
*
|
|
480
494
|
* A synchronous move keeps the overlay connected, so the lock survives. A
|
|
481
495
|
* detach with a re-insert in a later task releases it, which is the shape a
|
|
@@ -485,6 +499,7 @@ export const restoreRootFocusTrapAccessibility = (overlayEl) => {
|
|
|
485
499
|
if (typeof document === 'undefined') {
|
|
486
500
|
return;
|
|
487
501
|
}
|
|
502
|
+
updateCloseWatcher();
|
|
488
503
|
const el = overlayEl;
|
|
489
504
|
if (!locksAppRoot(el)) {
|
|
490
505
|
return;
|
|
@@ -698,6 +713,11 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
698
713
|
printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
|
|
699
714
|
}
|
|
700
715
|
overlay.el.remove();
|
|
716
|
+
/**
|
|
717
|
+
* Release the back button if nothing
|
|
718
|
+
* else is left to close.
|
|
719
|
+
*/
|
|
720
|
+
updateCloseWatcher();
|
|
701
721
|
return true;
|
|
702
722
|
};
|
|
703
723
|
const getAppRoot = (doc) => {
|
|
@@ -706,6 +726,12 @@ const getAppRoot = (doc) => {
|
|
|
706
726
|
const overlayAnimation = async (overlay, animationBuilder, baseEl, opts) => {
|
|
707
727
|
// Make overlay visible in case it's hidden
|
|
708
728
|
baseEl.classList.remove('overlay-hidden');
|
|
729
|
+
/**
|
|
730
|
+
* Removing `overlay-hidden` makes the overlay count
|
|
731
|
+
* as presented, so back can dismiss it while it
|
|
732
|
+
* animates in.
|
|
733
|
+
*/
|
|
734
|
+
updateCloseWatcher();
|
|
709
735
|
const aniRoot = overlay.el;
|
|
710
736
|
const animation = animationBuilder(aniRoot, opts);
|
|
711
737
|
if (!overlay.animated || !config.getBoolean('animated', true)) {
|
package/dist/docs.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { n as doc, c as componentOnReady } from './helpers-B54ynME_.js';
|
|
5
|
-
import { M as MENU_BACK_BUTTON_PRIORITY } from './overlays-
|
|
5
|
+
import { M as MENU_BACK_BUTTON_PRIORITY, q as addCloseWatcherCondition } from './overlays-D5W_ly69.js';
|
|
6
6
|
import { a as printIonWarning } from './index-D9OR05yj.js';
|
|
7
7
|
import { b as getIonMode } from './ionic-global-B-G43ddm.js';
|
|
8
8
|
import { c as createAnimation } from './animation-CFd8Olt3.js';
|
|
@@ -271,6 +271,7 @@ const createMenuController = () => {
|
|
|
271
271
|
registerAnimation('reveal', menuRevealAnimation);
|
|
272
272
|
registerAnimation('push', menuPushAnimation);
|
|
273
273
|
registerAnimation('overlay', menuOverlayAnimation);
|
|
274
|
+
addCloseWatcherCondition(() => _getOpenSync() !== undefined);
|
|
274
275
|
doc?.addEventListener('ionBackButton', (ev) => {
|
|
275
276
|
const openMenu = _getOpenSync();
|
|
276
277
|
if (openMenu) {
|
package/dist/esm/index.js
CHANGED
|
@@ -13,8 +13,8 @@ export { L as LogLevel, c as printIonError, a as printIonWarning } from './index
|
|
|
13
13
|
export { I as IonicSafeString } from './index-D4ZMZz_3.js';
|
|
14
14
|
export { g as getMode, s as setupConfig } from './config-DWCzVL3Y.js';
|
|
15
15
|
export { o as openURL } from './theme-byZM6qHV.js';
|
|
16
|
-
export { m as menuController } from './index-
|
|
17
|
-
export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as popoverController, t as toastController } from './overlays-
|
|
16
|
+
export { m as menuController } from './index-CzPyKjAQ.js';
|
|
17
|
+
export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as popoverController, t as toastController } from './overlays-D5W_ly69.js';
|
|
18
18
|
import './gesture-controller-B_gJaBk0.js';
|
|
19
19
|
import './dir-Dojwmvde.js';
|
|
20
20
|
import './framework-delegate-DeT5pmPB.js';
|
|
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, e as readTask, h, f as Host, g
|
|
|
5
5
|
import { c as createButtonActiveGesture } from './button-active-DMuYeDQN.js';
|
|
6
6
|
import { r as raf } from './helpers-B54ynME_.js';
|
|
7
7
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
8
|
-
import { c as createDelegateController, d as createTriggerController, B as BACKDROP, i as isCancel, e as present, f as dismiss, g as eventMethod, s as safeCall, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId } from './overlays-
|
|
8
|
+
import { c as createDelegateController, d as createTriggerController, B as BACKDROP, i as isCancel, e as present, f as dismiss, g as eventMethod, s as safeCall, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId } from './overlays-D5W_ly69.js';
|
|
9
9
|
import { r as renderOptionLabel } from './select-option-render-CGxPejmz.js';
|
|
10
10
|
import { g as getClassMap } from './theme-byZM6qHV.js';
|
|
11
11
|
import { b as getIonMode } from './ionic-global-B-G43ddm.js';
|
|
@@ -7,7 +7,7 @@ import { c as createButtonActiveGesture } from './button-active-DMuYeDQN.js';
|
|
|
7
7
|
import { r as raf } from './helpers-B54ynME_.js';
|
|
8
8
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
9
9
|
import { g as getOverlayLabelJustify, a as getOverlayLabelPlacement } from './overlay-control-label-BSQPZ79H.js';
|
|
10
|
-
import { c as createDelegateController, d as createTriggerController, B as BACKDROP, i as isCancel, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, k as setOverlayId, j as cleanupRootFocusTrapAccessibility, e as present, f as dismiss, g as eventMethod, s as safeCall } from './overlays-
|
|
10
|
+
import { c as createDelegateController, d as createTriggerController, B as BACKDROP, i as isCancel, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, k as setOverlayId, j as cleanupRootFocusTrapAccessibility, e as present, f as dismiss, g as eventMethod, s as safeCall } from './overlays-D5W_ly69.js';
|
|
11
11
|
import { s as sanitizeDOMString } from './index-D4ZMZz_3.js';
|
|
12
12
|
import { r as renderOptionLabel } from './select-option-render-CGxPejmz.js';
|
|
13
13
|
import { g as getClassMap } from './theme-byZM6qHV.js';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, i as config, a as printIonWarning, h, f as Host, g as getElement, d as createEvent, e as readTask, j as forceUpdate, w as writeTask, c as printIonError } from './index-D9OR05yj.js';
|
|
5
|
-
import {
|
|
5
|
+
import { w as shouldUseCloseWatcher, n as getOverlaySizeType } from './overlays-D5W_ly69.js';
|
|
6
6
|
import { a as isPlatform, b as getIonMode } from './ionic-global-B-G43ddm.js';
|
|
7
7
|
import { i as inheritAriaAttributes, h as hasLazyBuild, c as componentOnReady, e as clamp, v as shallowEqualStringMap } from './helpers-B54ynME_.js';
|
|
8
8
|
import { i as isRTL } from './dir-Dojwmvde.js';
|
|
@@ -41,7 +41,7 @@ const App = class {
|
|
|
41
41
|
const platform = isPlatform(window, 'ios') ? 'ios' : 'android';
|
|
42
42
|
import('./input-shims-MCrhq67U.js').then((module) => module.startInputShims(config, platform));
|
|
43
43
|
}
|
|
44
|
-
const hardwareBackButtonModule = await import('./overlays-
|
|
44
|
+
const hardwareBackButtonModule = await import('./overlays-D5W_ly69.js').then(function (n) { return n.y; });
|
|
45
45
|
const supportsHardwareBackButtonEvents = isHybrid || shouldUseCloseWatcher();
|
|
46
46
|
if (config.getBoolean('hardwareBackButton', supportsHardwareBackButtonEvents)) {
|
|
47
47
|
hardwareBackButtonModule.startHardwareBackButton();
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { c as printIonError, a as printIonWarning, r as registerInstance, d as createEvent, w as writeTask, i as config, h, f as Host, g as getElement } from './index-D9OR05yj.js';
|
|
5
5
|
import { startFocusVisible } from './focus-visible-BmVRXR1y.js';
|
|
6
6
|
import { r as raf, g as getElementRoot, a as renderHiddenInput } from './helpers-B54ynME_.js';
|
|
7
|
-
import { F as FOCUS_TRAP_DISABLE_CLASS } from './overlays-
|
|
7
|
+
import { F as FOCUS_TRAP_DISABLE_CLASS } from './overlays-D5W_ly69.js';
|
|
8
8
|
import { i as isRTL } from './dir-Dojwmvde.js';
|
|
9
9
|
import { c as createColorClasses } from './theme-byZM6qHV.js';
|
|
10
10
|
import { b as chevronDown, d as caretUpSharp, e as chevronForward, f as caretDownSharp, c as chevronBack } from './index-BvabGprD.js';
|
|
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, i as config, h, f as Host, g a
|
|
|
5
5
|
import { E as ENABLE_HTML_CONTENT_DEFAULT } from './config-DWCzVL3Y.js';
|
|
6
6
|
import { r as raf } from './helpers-B54ynME_.js';
|
|
7
7
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
8
|
-
import { c as createDelegateController, d as createTriggerController, B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, k as setOverlayId, j as cleanupRootFocusTrapAccessibility, e as present, f as dismiss, g as eventMethod } from './overlays-
|
|
8
|
+
import { c as createDelegateController, d as createTriggerController, B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, k as setOverlayId, j as cleanupRootFocusTrapAccessibility, e as present, f as dismiss, g as eventMethod } from './overlays-D5W_ly69.js';
|
|
9
9
|
import { s as sanitizeDOMString } from './index-D4ZMZz_3.js';
|
|
10
10
|
import { g as getClassMap } from './theme-byZM6qHV.js';
|
|
11
11
|
import { b as getIonMode } from './ionic-global-B-G43ddm.js';
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, d as createEvent, i as config, c as printIonError, h, f as Host, g as getElement } from './index-D9OR05yj.js';
|
|
5
5
|
import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
|
|
6
|
-
import {
|
|
6
|
+
import { u as getPresentedOverlay, B as BACKDROP, o as focusFirstDescendant, v as focusLastDescendant, G as GESTURE, w as shouldUseCloseWatcher, x as updateCloseWatcher } from './overlays-D5W_ly69.js';
|
|
7
7
|
import { G as GESTURE_CONTROLLER } from './gesture-controller-B_gJaBk0.js';
|
|
8
8
|
import { s as isEndSide, i as inheritAriaAttributes, l as assert, e as clamp } from './helpers-B54ynME_.js';
|
|
9
|
-
import { m as menuController } from './index-
|
|
9
|
+
import { m as menuController } from './index-CzPyKjAQ.js';
|
|
10
10
|
import { b as getIonMode, a as isPlatform } from './ionic-global-B-G43ddm.js';
|
|
11
11
|
import { h as hostContext, c as createColorClasses } from './theme-byZM6qHV.js';
|
|
12
12
|
import { u as menuOutline, v as menuSharp } from './index-BvabGprD.js';
|
|
@@ -563,6 +563,7 @@ const Menu = class {
|
|
|
563
563
|
// emit opened/closed events
|
|
564
564
|
this._isOpen = isOpen;
|
|
565
565
|
this.isAnimating = false;
|
|
566
|
+
updateCloseWatcher();
|
|
566
567
|
if (!this._isOpen) {
|
|
567
568
|
this.blocker.unblock();
|
|
568
569
|
}
|
|
@@ -659,14 +660,14 @@ const Menu = class {
|
|
|
659
660
|
* the ionBackButton listener in the menu controller
|
|
660
661
|
* will handle closing the menu when Escape is pressed.
|
|
661
662
|
*/
|
|
662
|
-
return (h(Host, { key: '
|
|
663
|
+
return (h(Host, { key: '5cf26df26d4e539860cbeaea98ec621b98c3fcfc', onKeyDown: shouldUseCloseWatcher() ? null : this.onKeydown, role: "navigation", "aria-label": inheritedAttributes['aria-label'] || 'menu', class: {
|
|
663
664
|
[mode]: true,
|
|
664
665
|
[`menu-type-${type}`]: true,
|
|
665
666
|
'menu-enabled': !disabled,
|
|
666
667
|
[`menu-side-${side}`]: true,
|
|
667
668
|
'menu-pane-visible': isPaneVisible,
|
|
668
669
|
'split-pane-side': hostContext('ion-split-pane', el),
|
|
669
|
-
} }, h("div", { key: '
|
|
670
|
+
} }, h("div", { key: 'f337016e293bb8665c99762e0c389dd6c372bb33', class: "menu-inner", part: "container", ref: (el) => (this.menuInnerEl = el) }, h("slot", { key: '4c3fe331aa42cd57d7ad9bd1f5910f8eeb62d7da' })), h("ion-backdrop", { key: '61af7ea876d81574841e1dd3e81e2352e555d096', ref: (el) => (this.backdropEl = el), class: "menu-backdrop", tappable: false, stopPropagation: false, part: "backdrop" })));
|
|
670
671
|
}
|
|
671
672
|
get el() { return getElement(this); }
|
|
672
673
|
static get watchers() { return {
|
|
@@ -7,7 +7,7 @@ import { C as CoreDelegate, a as attachComponent, d as detachComponent } from '.
|
|
|
7
7
|
import { w as win, o as onCustomPropertyChange, g as getElementRoot, e as clamp, r as raf, b as inheritAttributes, h as hasLazyBuild } from './helpers-B54ynME_.js';
|
|
8
8
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
9
9
|
import { g as getCapacitor } from './capacitor-CoEgIpR9.js';
|
|
10
|
-
import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, n as getOverlaySizeType, d as createTriggerController, B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId, e as present, f as dismiss, g as eventMethod } from './overlays-
|
|
10
|
+
import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, n as getOverlaySizeType, d as createTriggerController, B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId, e as present, f as dismiss, g as eventMethod } from './overlays-D5W_ly69.js';
|
|
11
11
|
import { g as getClassMap } from './theme-byZM6qHV.js';
|
|
12
12
|
import { e as deepReady, w as waitForMount } from './index-B8iieOdw.js';
|
|
13
13
|
import { b as getIonMode } from './ionic-global-B-G43ddm.js';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, d as createEvent, a as printIonWarning, h, f as Host, g as getElement } from './index-D9OR05yj.js';
|
|
5
|
-
import { B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId, e as present, o as focusFirstDescendant, f as dismiss, g as eventMethod, F as FOCUS_TRAP_DISABLE_CLASS } from './overlays-
|
|
5
|
+
import { B as BACKDROP, h as prepareOverlay, r as restoreRootFocusTrapAccessibility, j as cleanupRootFocusTrapAccessibility, k as setOverlayId, e as present, o as focusFirstDescendant, f as dismiss, g as eventMethod, F as FOCUS_TRAP_DISABLE_CLASS } from './overlays-D5W_ly69.js';
|
|
6
6
|
import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-DeT5pmPB.js';
|
|
7
7
|
import { g as getElementRoot, r as raf, f as addEventListener, h as hasLazyBuild } from './helpers-B54ynME_.js';
|
|
8
8
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { r as registerInstance, h, j as forceUpdate, f as Host, g as getElement } from './index-D9OR05yj.js';
|
|
5
5
|
import { b as getIonMode } from './ionic-global-B-G43ddm.js';
|
|
6
6
|
import { a as getOverlayLabelPlacement, g as getOverlayLabelJustify } from './overlay-control-label-BSQPZ79H.js';
|
|
7
|
-
import { s as safeCall } from './overlays-
|
|
7
|
+
import { s as safeCall } from './overlays-D5W_ly69.js';
|
|
8
8
|
import { r as renderOptionLabel } from './select-option-render-CGxPejmz.js';
|
|
9
9
|
import { g as getClassMap } from './theme-byZM6qHV.js';
|
|
10
10
|
import './helpers-B54ynME_.js';
|
|
@@ -7,7 +7,7 @@ import { g as getSlottedClickContent, c as createSlotMutationController, a as cr
|
|
|
7
7
|
import { c as compareOptions, i as isOptionSelected } from './compare-with-utils-sObYyvOy.js';
|
|
8
8
|
import { c as checkInvalidState } from './validity-DJztqcrH.js';
|
|
9
9
|
import { b as inheritAttributes, a as renderHiddenInput, p as focusVisibleElement } from './helpers-B54ynME_.js';
|
|
10
|
-
import { p as popoverController, b as actionSheetController, a as alertController, m as modalController, s as safeCall } from './overlays-
|
|
10
|
+
import { p as popoverController, b as actionSheetController, a as alertController, m as modalController, s as safeCall } from './overlays-D5W_ly69.js';
|
|
11
11
|
import { i as isRTL } from './dir-Dojwmvde.js';
|
|
12
12
|
import { r as reflectPropertiesToAttributes, a as sanitizeDOMTree, b as blockedTags } from './index-D4ZMZz_3.js';
|
|
13
13
|
import { h as hostContext, c as createColorClasses, g as getClassMap } from './theme-byZM6qHV.js';
|
|
@@ -5,7 +5,7 @@ import { a as printIonWarning, r as registerInstance, d as createEvent, i as con
|
|
|
5
5
|
import { E as ENABLE_HTML_CONTENT_DEFAULT } from './config-DWCzVL3Y.js';
|
|
6
6
|
import { w as win, g as getElementRoot, r as raf } from './helpers-B54ynME_.js';
|
|
7
7
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
8
|
-
import { O as OVERLAY_GESTURE_PRIORITY, c as createDelegateController, d as createTriggerController, i as isCancel, h as prepareOverlay, k as setOverlayId, e as present, f as dismiss, g as eventMethod, s as safeCall, G as GESTURE } from './overlays-
|
|
8
|
+
import { O as OVERLAY_GESTURE_PRIORITY, c as createDelegateController, d as createTriggerController, i as isCancel, h as prepareOverlay, k as setOverlayId, e as present, f as dismiss, g as eventMethod, s as safeCall, G as GESTURE } from './overlays-D5W_ly69.js';
|
|
9
9
|
import { s as sanitizeDOMString } from './index-D4ZMZz_3.js';
|
|
10
10
|
import { c as createColorClasses, g as getClassMap } from './theme-byZM6qHV.js';
|
|
11
11
|
import { b as getIonMode } from './ionic-global-B-G43ddm.js';
|
|
@@ -33,6 +33,23 @@ const shouldUseCloseWatcher = () => config.get('experimentalCloseWatcher', false
|
|
|
33
33
|
const blockHardwareBackButton = () => {
|
|
34
34
|
document.addEventListener('backbutton', () => { });
|
|
35
35
|
};
|
|
36
|
+
const closeWatcherConditions = [];
|
|
37
|
+
let syncCloseWatcher;
|
|
38
|
+
/**
|
|
39
|
+
* Registers a check for whether the back button
|
|
40
|
+
* has something to close. The CloseWatcher is only
|
|
41
|
+
* active while one of these checks passes.
|
|
42
|
+
*/
|
|
43
|
+
const addCloseWatcherCondition = (condition) => {
|
|
44
|
+
closeWatcherConditions.push(condition);
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Call this whenever something the back button
|
|
48
|
+
* can close opens or closes.
|
|
49
|
+
*/
|
|
50
|
+
const updateCloseWatcher = () => {
|
|
51
|
+
syncCloseWatcher?.();
|
|
52
|
+
};
|
|
36
53
|
const startHardwareBackButton = () => {
|
|
37
54
|
const doc = document;
|
|
38
55
|
let busy = false;
|
|
@@ -84,32 +101,44 @@ const startHardwareBackButton = () => {
|
|
|
84
101
|
processHandlers();
|
|
85
102
|
};
|
|
86
103
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* events firing.
|
|
104
|
+
* Android WebView never sends the hardware back
|
|
105
|
+
* button to a CloseWatcher, so hybrid apps still
|
|
106
|
+
* need this. Browsers never fire backbutton.
|
|
91
107
|
*/
|
|
108
|
+
doc.addEventListener('backbutton', backButtonCallback);
|
|
92
109
|
if (shouldUseCloseWatcher()) {
|
|
93
110
|
let watcher;
|
|
94
|
-
|
|
95
|
-
|
|
111
|
+
/**
|
|
112
|
+
* An active CloseWatcher stops the back button from
|
|
113
|
+
* navigating, so only keep one while there's something to close.
|
|
114
|
+
*/
|
|
115
|
+
syncCloseWatcher = () => {
|
|
116
|
+
const canClose = closeWatcherConditions.some((condition) => condition());
|
|
117
|
+
if (!canClose) {
|
|
118
|
+
watcher?.destroy();
|
|
119
|
+
watcher = undefined;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (watcher !== undefined) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
96
125
|
watcher = new win.CloseWatcher();
|
|
97
126
|
/**
|
|
98
127
|
* Once a close request happens
|
|
99
128
|
* the watcher gets destroyed.
|
|
100
129
|
* As a result, we need to re-configure
|
|
101
130
|
* the watcher so we can respond to other
|
|
102
|
-
* close requests
|
|
131
|
+
* close requests, including after one that
|
|
132
|
+
* closed nothing, like a modal whose canDismiss
|
|
133
|
+
* returned false.
|
|
103
134
|
*/
|
|
104
135
|
watcher.onclose = () => {
|
|
136
|
+
watcher = undefined;
|
|
105
137
|
backButtonCallback();
|
|
106
|
-
|
|
138
|
+
syncCloseWatcher?.();
|
|
107
139
|
};
|
|
108
140
|
};
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
doc.addEventListener('backbutton', backButtonCallback);
|
|
141
|
+
syncCloseWatcher();
|
|
113
142
|
}
|
|
114
143
|
};
|
|
115
144
|
const OVERLAY_BACK_BUTTON_PRIORITY = 100;
|
|
@@ -119,9 +148,11 @@ var hardwareBackButton = /*#__PURE__*/Object.freeze({
|
|
|
119
148
|
__proto__: null,
|
|
120
149
|
MENU_BACK_BUTTON_PRIORITY: MENU_BACK_BUTTON_PRIORITY,
|
|
121
150
|
OVERLAY_BACK_BUTTON_PRIORITY: OVERLAY_BACK_BUTTON_PRIORITY,
|
|
151
|
+
addCloseWatcherCondition: addCloseWatcherCondition,
|
|
122
152
|
blockHardwareBackButton: blockHardwareBackButton,
|
|
123
153
|
shouldUseCloseWatcher: shouldUseCloseWatcher,
|
|
124
|
-
startHardwareBackButton: startHardwareBackButton
|
|
154
|
+
startHardwareBackButton: startHardwareBackButton,
|
|
155
|
+
updateCloseWatcher: updateCloseWatcher
|
|
125
156
|
});
|
|
126
157
|
|
|
127
158
|
/**
|
|
@@ -207,6 +238,11 @@ const focusElementInContext = (hostToFocus, fallbackElement) => {
|
|
|
207
238
|
|
|
208
239
|
let lastOverlayIndex = 0;
|
|
209
240
|
let lastId = 0;
|
|
241
|
+
/**
|
|
242
|
+
* Every overlay except toast, which doesn't trap
|
|
243
|
+
* focus or close on back.
|
|
244
|
+
*/
|
|
245
|
+
const NON_TOAST_OVERLAYS = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover';
|
|
210
246
|
const activeAnimations = new WeakMap();
|
|
211
247
|
/**
|
|
212
248
|
* Determines if the overlay's backdrop is always blocking (no background interaction).
|
|
@@ -333,7 +369,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
|
333
369
|
* Should NOT include: Toast
|
|
334
370
|
*/
|
|
335
371
|
const trapKeyboardFocus = (ev, doc) => {
|
|
336
|
-
const lastOverlay = getPresentedOverlay(doc,
|
|
372
|
+
const lastOverlay = getPresentedOverlay(doc, NON_TOAST_OVERLAYS);
|
|
337
373
|
const target = ev.target;
|
|
338
374
|
/**
|
|
339
375
|
* If no active overlay, ignore this event.
|
|
@@ -516,6 +552,11 @@ const connectListeners = (doc) => {
|
|
|
516
552
|
doc.addEventListener('focus', (ev) => {
|
|
517
553
|
trapKeyboardFocus(ev, doc);
|
|
518
554
|
}, true);
|
|
555
|
+
/**
|
|
556
|
+
* Whether the overlay actually dismisses is checked at press time,
|
|
557
|
+
* since `backdropDismiss` can change while it's open.
|
|
558
|
+
*/
|
|
559
|
+
addCloseWatcherCondition(() => getPresentedOverlay(doc, NON_TOAST_OVERLAYS) !== undefined);
|
|
519
560
|
// handle back-button click
|
|
520
561
|
doc.addEventListener('ionBackButton', (ev) => {
|
|
521
562
|
const lastOverlay = getPresentedOverlay(doc);
|
|
@@ -639,7 +680,8 @@ const setRootAriaHidden = (hidden = false) => {
|
|
|
639
680
|
* Cleans up root `aria-hidden` and `backdrop-no-scroll` when
|
|
640
681
|
* an overlay is removed from the DOM without going through
|
|
641
682
|
* the `dismiss()` flow (e.g., when a framework unmounts the
|
|
642
|
-
* overlay during a route change).
|
|
683
|
+
* overlay during a route change). Also releases the
|
|
684
|
+
* CloseWatcher if nothing is left to close.
|
|
643
685
|
*
|
|
644
686
|
* Should be called from an overlay's `disconnectedCallback`
|
|
645
687
|
* when the overlay was still presented at the time of removal.
|
|
@@ -648,6 +690,7 @@ const cleanupRootFocusTrapAccessibility = () => {
|
|
|
648
690
|
if (typeof document === 'undefined') {
|
|
649
691
|
return;
|
|
650
692
|
}
|
|
693
|
+
updateCloseWatcher();
|
|
651
694
|
const remainingOverlays = getPresentedOverlays(document);
|
|
652
695
|
const hasRemainingLocking = remainingOverlays.some((o) => locksAppRoot(o));
|
|
653
696
|
if (!hasRemainingLocking) {
|
|
@@ -669,7 +712,9 @@ const applyRootLock = (el) => {
|
|
|
669
712
|
};
|
|
670
713
|
/**
|
|
671
714
|
* Re-applies the root lock that `cleanupRootFocusTrapAccessibility()` released.
|
|
672
|
-
* Call from `connectedCallback` when the overlay is still presented.
|
|
715
|
+
* Call from `connectedCallback` when the overlay is still presented. Also
|
|
716
|
+
* re-arms the CloseWatcher, which every overlay needs, so that happens
|
|
717
|
+
* before the `locksAppRoot` check.
|
|
673
718
|
*
|
|
674
719
|
* A synchronous move keeps the overlay connected, so the lock survives. A
|
|
675
720
|
* detach with a re-insert in a later task releases it, which is the shape a
|
|
@@ -679,6 +724,7 @@ const restoreRootFocusTrapAccessibility = (overlayEl) => {
|
|
|
679
724
|
if (typeof document === 'undefined') {
|
|
680
725
|
return;
|
|
681
726
|
}
|
|
727
|
+
updateCloseWatcher();
|
|
682
728
|
const el = overlayEl;
|
|
683
729
|
if (!locksAppRoot(el)) {
|
|
684
730
|
return;
|
|
@@ -892,6 +938,11 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
892
938
|
printIonError(`[${overlay.el.tagName.toLowerCase()}] - `, err);
|
|
893
939
|
}
|
|
894
940
|
overlay.el.remove();
|
|
941
|
+
/**
|
|
942
|
+
* Release the back button if nothing
|
|
943
|
+
* else is left to close.
|
|
944
|
+
*/
|
|
945
|
+
updateCloseWatcher();
|
|
895
946
|
return true;
|
|
896
947
|
};
|
|
897
948
|
const getAppRoot = (doc) => {
|
|
@@ -900,6 +951,12 @@ const getAppRoot = (doc) => {
|
|
|
900
951
|
const overlayAnimation = async (overlay, animationBuilder, baseEl, opts) => {
|
|
901
952
|
// Make overlay visible in case it's hidden
|
|
902
953
|
baseEl.classList.remove('overlay-hidden');
|
|
954
|
+
/**
|
|
955
|
+
* Removing `overlay-hidden` makes the overlay count
|
|
956
|
+
* as presented, so back can dismiss it while it
|
|
957
|
+
* animates in.
|
|
958
|
+
*/
|
|
959
|
+
updateCloseWatcher();
|
|
903
960
|
const aniRoot = overlay.el;
|
|
904
961
|
const animation = animationBuilder(aniRoot, opts);
|
|
905
962
|
if (!overlay.animated || !config.getBoolean('animated', true)) {
|
|
@@ -1123,4 +1180,4 @@ const createTriggerController = () => {
|
|
|
1123
1180
|
};
|
|
1124
1181
|
const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
|
|
1125
1182
|
|
|
1126
|
-
export { BACKDROP as B, FOCUS_TRAP_DISABLE_CLASS as F, GESTURE as G, MENU_BACK_BUTTON_PRIORITY as M, OVERLAY_GESTURE_PRIORITY as O, alertController as a, actionSheetController as b, createDelegateController as c, createTriggerController as d, present as e, dismiss as f, eventMethod as g, prepareOverlay as h, isCancel as i, cleanupRootFocusTrapAccessibility as j, setOverlayId as k, loadingController as l, modalController as m, getOverlaySizeType as n, focusFirstDescendant as o, popoverController as p,
|
|
1183
|
+
export { BACKDROP as B, FOCUS_TRAP_DISABLE_CLASS as F, GESTURE as G, MENU_BACK_BUTTON_PRIORITY as M, OVERLAY_GESTURE_PRIORITY as O, alertController as a, actionSheetController as b, createDelegateController as c, createTriggerController as d, present as e, dismiss as f, eventMethod as g, prepareOverlay as h, isCancel as i, cleanupRootFocusTrapAccessibility as j, setOverlayId as k, loadingController as l, modalController as m, getOverlaySizeType as n, focusFirstDescendant as o, popoverController as p, addCloseWatcherCondition as q, restoreRootFocusTrapAccessibility as r, safeCall as s, toastController as t, getPresentedOverlay as u, focusLastDescendant as v, shouldUseCloseWatcher as w, updateCloseWatcher as x, hardwareBackButton as y };
|
package/dist/ionic/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
export{c as createAnimation}from"./p-B4wzg4z4.js";export{a as LIFECYCLE_DID_ENTER,c as LIFECYCLE_DID_LEAVE,L as LIFECYCLE_WILL_ENTER,b as LIFECYCLE_WILL_LEAVE,d as LIFECYCLE_WILL_UNLOAD,g as getIonPageElement}from"./p-PkaVMJga.js";export{iosTransitionAnimation}from"./p-kKvGoaEe.js";export{mdTransitionAnimation}from"./p-BVEsh7-M.js";export{g as getTimeGivenProgression}from"./p-hHmYLOfE.js";export{createGesture}from"./p-D0YpjgON.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./p-CrAPHbJ3.js";export{c as componentOnReady}from"./p-B4xjg_Qu.js";export{L as LogLevel,c as printIonError,a as printIonWarning}from"./p-D9OR05yj.js";export{I as IonicSafeString}from"./p-BhMQahM6.js";export{g as getMode,s as setupConfig}from"./p-DWCzVL3Y.js";export{o as openURL}from"./p-byZM6qHV.js";export{m as menuController}from"./p-
|
|
4
|
+
export{c as createAnimation}from"./p-B4wzg4z4.js";export{a as LIFECYCLE_DID_ENTER,c as LIFECYCLE_DID_LEAVE,L as LIFECYCLE_WILL_ENTER,b as LIFECYCLE_WILL_LEAVE,d as LIFECYCLE_WILL_UNLOAD,g as getIonPageElement}from"./p-PkaVMJga.js";export{iosTransitionAnimation}from"./p-kKvGoaEe.js";export{mdTransitionAnimation}from"./p-BVEsh7-M.js";export{g as getTimeGivenProgression}from"./p-hHmYLOfE.js";export{createGesture}from"./p-D0YpjgON.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./p-CrAPHbJ3.js";export{c as componentOnReady}from"./p-B4xjg_Qu.js";export{L as LogLevel,c as printIonError,a as printIonWarning}from"./p-D9OR05yj.js";export{I as IonicSafeString}from"./p-BhMQahM6.js";export{g as getMode,s as setupConfig}from"./p-DWCzVL3Y.js";export{o as openURL}from"./p-byZM6qHV.js";export{m as menuController}from"./p-OJpZr8fg.js";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as popoverController,t as toastController}from"./p-C036rEeA.js";import"./p-B_gJaBk0.js";import"./p-Dojwmvde.js";import"./p-B4ELlbJE.js";const e=e=>{const{swiper:o,extendParams:s}=e,t={effect:void 0,direction:"horizontal",initialSlide:0,loop:!1,parallax:!1,slidesPerView:1,spaceBetween:0,speed:300,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,touchEventsTarget:"container",freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,zoom:{maxRatio:3,minRatio:1,toggle:!1},touchRatio:1,touchAngle:45,simulateTouch:!0,touchStartPreventDefault:!1,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,threshold:0,touchMoveStopPropagation:!0,touchReleaseOnEdges:!1,iOSEdgeSwipeDetection:!1,iOSEdgeSwipeThreshold:20,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loopAdditionalSlides:0,noSwiping:!0,runCallbacksOnInit:!0,coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:!0},flipEffect:{slideShadows:!0,limitRotation:!0},cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94},fadeEffect:{crossFade:!1},a11y:{prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide"}};o.pagination&&(t.pagination={type:"bullets",clickable:!1,hideOnClick:!1}),o.scrollbar&&(t.scrollbar={hide:!0}),s(t)};export{e as IonicSlides}
|