@ionic/core 8.7.5-dev.11758642453.13b1da5d → 8.7.5-nightly.20250918

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.
Files changed (48) hide show
  1. package/components/modal.js +2 -9
  2. package/components/overlays.js +12 -17
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  5. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  6. package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
  7. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  8. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-modal.cjs.entry.js +3 -10
  10. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  12. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  13. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  14. package/dist/cjs/{overlays-CPUTc8An.js → overlays-v_jc1Hok.js} +12 -17
  15. package/dist/collection/components/modal/gestures/sheet.js +2 -9
  16. package/dist/collection/utils/overlays.js +12 -17
  17. package/dist/docs.json +1 -1
  18. package/dist/esm/index.js +1 -1
  19. package/dist/esm/ion-action-sheet.entry.js +1 -1
  20. package/dist/esm/ion-alert.entry.js +1 -1
  21. package/dist/esm/ion-datetime_3.entry.js +1 -1
  22. package/dist/esm/ion-loading.entry.js +1 -1
  23. package/dist/esm/ion-menu_3.entry.js +1 -1
  24. package/dist/esm/ion-modal.entry.js +3 -10
  25. package/dist/esm/ion-popover.entry.js +1 -1
  26. package/dist/esm/ion-select-modal.entry.js +1 -1
  27. package/dist/esm/ion-select_3.entry.js +1 -1
  28. package/dist/esm/ion-toast.entry.js +1 -1
  29. package/dist/esm/{overlays-BOalOTUe.js → overlays-BJaRj3Rj.js} +12 -17
  30. package/dist/ionic/index.esm.js +1 -1
  31. package/dist/ionic/ionic.esm.js +1 -1
  32. package/dist/ionic/{p-97f8294e.entry.js → p-095073c6.entry.js} +1 -1
  33. package/dist/ionic/{p-2e1782af.entry.js → p-1ab0fc21.entry.js} +1 -1
  34. package/dist/ionic/p-2060feb1.entry.js +4 -0
  35. package/dist/ionic/{p-1bd0a347.entry.js → p-22a0f820.entry.js} +1 -1
  36. package/dist/ionic/{p-12d04c28.entry.js → p-5a9be5a3.entry.js} +1 -1
  37. package/dist/ionic/{p-f4dfce09.entry.js → p-60ff6bf6.entry.js} +1 -1
  38. package/dist/ionic/{p-3f07313b.entry.js → p-89c2e0a3.entry.js} +1 -1
  39. package/dist/ionic/p-CoDfkBuk.js +4 -0
  40. package/dist/ionic/{p-de2bedb6.entry.js → p-b17f0554.entry.js} +1 -1
  41. package/dist/ionic/{p-4a95b96c.entry.js → p-cd93c119.entry.js} +1 -1
  42. package/dist/ionic/p-dc8d0bb9.entry.js +4 -0
  43. package/hydrate/index.js +14 -26
  44. package/hydrate/index.mjs +14 -26
  45. package/package.json +1 -1
  46. package/dist/ionic/p-JK8qe2uI.js +0 -4
  47. package/dist/ionic/p-f8900d24.entry.js +0 -4
  48. package/dist/ionic/p-fd46b48a.entry.js +0 -4
@@ -984,11 +984,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
984
984
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
985
985
  const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
986
986
  const enableBackdrop = () => {
987
- // Respect explicit opt-out of focus trapping/backdrop interactions
988
- // If focusTrap is false, do not enable the backdrop or re-enable focus trap
989
- if (baseEl.focusTrap === false) {
990
- return;
991
- }
992
987
  baseEl.style.setProperty('pointer-events', 'auto');
993
988
  backdropEl.style.setProperty('pointer-events', 'auto');
994
989
  /**
@@ -1113,8 +1108,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1113
1108
  * ion-backdrop and .modal-wrapper always have pointer-events: auto
1114
1109
  * applied, so the modal content can still be interacted with.
1115
1110
  */
1116
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
1117
- baseEl.focusTrap !== false;
1111
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1118
1112
  if (shouldEnableBackdrop) {
1119
1113
  enableBackdrop();
1120
1114
  }
@@ -1422,8 +1416,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1422
1416
  * Backdrop should become enabled
1423
1417
  * after the backdropBreakpoint value
1424
1418
  */
1425
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
1426
- baseEl.focusTrap !== false;
1419
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1427
1420
  if (shouldEnableBackdrop) {
1428
1421
  enableBackdrop();
1429
1422
  }
@@ -524,13 +524,9 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
524
524
  * focus traps.
525
525
  *
526
526
  * All other overlays should have focus traps to prevent
527
- * the keyboard focus from leaving the overlay unless
528
- * developers explicitly opt out (for example, sheet
529
- * modals that should permit background interaction).
527
+ * the keyboard focus from leaving the overlay.
530
528
  */
531
- const overlayEl = overlay.el;
532
- const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
533
- if (shouldTrapFocus) {
529
+ if (overlay.el.tagName !== 'ION-TOAST') {
534
530
  setRootAriaHidden(true);
535
531
  document.body.classList.add(BACKDROP_NO_SCROLL);
536
532
  }
@@ -632,21 +628,20 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
632
628
  * For accessibility, toasts lack focus traps and don't receive
633
629
  * `aria-hidden` on the root element when presented.
634
630
  *
635
- * Overlays that opt into focus trapping set `aria-hidden`
636
- * on the root element to keep keyboard focus and pointer
637
- * events inside the overlay. We must remove `aria-hidden`
638
- * from the root element when the last focus-trapping overlay
639
- * is dismissed.
631
+ * All other overlays use focus traps to keep keyboard focus
632
+ * within the overlay, setting `aria-hidden` on the root element
633
+ * to enhance accessibility.
634
+ *
635
+ * Therefore, we must remove `aria-hidden` from the root element
636
+ * when the last non-toast overlay is dismissed.
640
637
  */
641
- const overlaysTrappingFocus = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST' && o.focusTrap !== false);
642
- const overlayEl = overlay.el;
643
- const trapsFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
638
+ const overlaysNotToast = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST');
639
+ const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
644
640
  /**
645
- * If this is the last visible overlay that is trapping focus
641
+ * If this is the last visible overlay that is not a toast
646
642
  * then we want to re-add the root to the accessibility tree.
647
643
  */
648
- const lastOverlayTrappingFocus = trapsFocus && overlaysTrappingFocus.length === 1 && overlaysTrappingFocus[0].id === overlayEl.id;
649
- if (lastOverlayTrappingFocus) {
644
+ if (lastOverlayNotToast) {
650
645
  setRootAriaHidden(false);
651
646
  document.body.classList.remove(BACKDROP_NO_SCROLL);
652
647
  }
@@ -15,7 +15,7 @@ var index$2 = require('./index-DNh170BW.js');
15
15
  var config = require('./config-CKhELRRu.js');
16
16
  var theme = require('./theme-CeDs6Hcv.js');
17
17
  var index$3 = require('./index-D24wggHR.js');
18
- var overlays = require('./overlays-CPUTc8An.js');
18
+ var overlays = require('./overlays-v_jc1Hok.js');
19
19
  require('./index-DkNv4J_i.js');
20
20
  require('./gesture-controller-dtqlP_q4.js');
21
21
  require('./hardware-back-button-BxdNu76F.js');
@@ -7,7 +7,7 @@ var index = require('./index-DNh170BW.js');
7
7
  var buttonActive = require('./button-active-BzZenWWH.js');
8
8
  var helpers = require('./helpers-DgwmcYAu.js');
9
9
  var lockController = require('./lock-controller-aDB9wrEf.js');
10
- var overlays = require('./overlays-CPUTc8An.js');
10
+ var overlays = require('./overlays-v_jc1Hok.js');
11
11
  var theme = require('./theme-CeDs6Hcv.js');
12
12
  var ionicGlobal = require('./ionic-global-UI5YPSi-.js');
13
13
  var animation = require('./animation-ZJ1lAkZD.js');
@@ -8,7 +8,7 @@ var config = require('./config-CKhELRRu.js');
8
8
  var buttonActive = require('./button-active-BzZenWWH.js');
9
9
  var helpers = require('./helpers-DgwmcYAu.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
11
- var overlays = require('./overlays-CPUTc8An.js');
11
+ var overlays = require('./overlays-v_jc1Hok.js');
12
12
  var theme = require('./theme-CeDs6Hcv.js');
13
13
  var ionicGlobal = require('./ionic-global-UI5YPSi-.js');
14
14
  var animation = require('./animation-ZJ1lAkZD.js');
@@ -6,7 +6,7 @@
6
6
  var index = require('./index-DNh170BW.js');
7
7
  var focusVisible = require('./focus-visible-CCvKiLh3.js');
8
8
  var helpers = require('./helpers-DgwmcYAu.js');
9
- var overlays = require('./overlays-CPUTc8An.js');
9
+ var overlays = require('./overlays-v_jc1Hok.js');
10
10
  var dir = require('./dir-Cn0z1rJH.js');
11
11
  var theme = require('./theme-CeDs6Hcv.js');
12
12
  var index$1 = require('./index-DqmRDbxg.js');
@@ -7,7 +7,7 @@ var index = require('./index-DNh170BW.js');
7
7
  var config = require('./config-CKhELRRu.js');
8
8
  var helpers = require('./helpers-DgwmcYAu.js');
9
9
  var lockController = require('./lock-controller-aDB9wrEf.js');
10
- var overlays = require('./overlays-CPUTc8An.js');
10
+ var overlays = require('./overlays-v_jc1Hok.js');
11
11
  var theme = require('./theme-CeDs6Hcv.js');
12
12
  var ionicGlobal = require('./ionic-global-UI5YPSi-.js');
13
13
  var animation = require('./animation-ZJ1lAkZD.js');
@@ -5,7 +5,7 @@
5
5
 
6
6
  var index = require('./index-DNh170BW.js');
7
7
  var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
8
- var overlays = require('./overlays-CPUTc8An.js');
8
+ var overlays = require('./overlays-v_jc1Hok.js');
9
9
  var gestureController = require('./gesture-controller-dtqlP_q4.js');
10
10
  var hardwareBackButton = require('./hardware-back-button-BxdNu76F.js');
11
11
  var helpers = require('./helpers-DgwmcYAu.js');
@@ -9,7 +9,7 @@ var frameworkDelegate = require('./framework-delegate-WkyjrnCx.js');
9
9
  var helpers = require('./helpers-DgwmcYAu.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
11
11
  var capacitor = require('./capacitor-DmA66EwP.js');
12
- var overlays = require('./overlays-CPUTc8An.js');
12
+ var overlays = require('./overlays-v_jc1Hok.js');
13
13
  var theme = require('./theme-CeDs6Hcv.js');
14
14
  var index$4 = require('./index-BzEyuIww.js');
15
15
  var ionicGlobal = require('./ionic-global-UI5YPSi-.js');
@@ -987,11 +987,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
987
987
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
988
988
  const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
989
989
  const enableBackdrop = () => {
990
- // Respect explicit opt-out of focus trapping/backdrop interactions
991
- // If focusTrap is false, do not enable the backdrop or re-enable focus trap
992
- if (baseEl.focusTrap === false) {
993
- return;
994
- }
995
990
  baseEl.style.setProperty('pointer-events', 'auto');
996
991
  backdropEl.style.setProperty('pointer-events', 'auto');
997
992
  /**
@@ -1116,8 +1111,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1116
1111
  * ion-backdrop and .modal-wrapper always have pointer-events: auto
1117
1112
  * applied, so the modal content can still be interacted with.
1118
1113
  */
1119
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
1120
- baseEl.focusTrap !== false;
1114
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1121
1115
  if (shouldEnableBackdrop) {
1122
1116
  enableBackdrop();
1123
1117
  }
@@ -1425,8 +1419,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1425
1419
  * Backdrop should become enabled
1426
1420
  * after the backdropBreakpoint value
1427
1421
  */
1428
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
1429
- baseEl.focusTrap !== false;
1422
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1430
1423
  if (shouldEnableBackdrop) {
1431
1424
  enableBackdrop();
1432
1425
  }
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var index = require('./index-DNh170BW.js');
7
- var overlays = require('./overlays-CPUTc8An.js');
7
+ var overlays = require('./overlays-v_jc1Hok.js');
8
8
  var frameworkDelegate = require('./framework-delegate-WkyjrnCx.js');
9
9
  var helpers = require('./helpers-DgwmcYAu.js');
10
10
  var lockController = require('./lock-controller-aDB9wrEf.js');
@@ -5,7 +5,7 @@
5
5
 
6
6
  var index = require('./index-DNh170BW.js');
7
7
  var ionicGlobal = require('./ionic-global-UI5YPSi-.js');
8
- var overlays = require('./overlays-CPUTc8An.js');
8
+ var overlays = require('./overlays-v_jc1Hok.js');
9
9
  var theme = require('./theme-CeDs6Hcv.js');
10
10
  require('./index-DkNv4J_i.js');
11
11
  require('./helpers-DgwmcYAu.js');
@@ -7,7 +7,7 @@ var index = require('./index-DNh170BW.js');
7
7
  var notchController = require('./notch-controller-Bf5Rr4R5.js');
8
8
  var compareWithUtils = require('./compare-with-utils-DSicavqM.js');
9
9
  var helpers = require('./helpers-DgwmcYAu.js');
10
- var overlays = require('./overlays-CPUTc8An.js');
10
+ var overlays = require('./overlays-v_jc1Hok.js');
11
11
  var dir = require('./dir-Cn0z1rJH.js');
12
12
  var theme = require('./theme-CeDs6Hcv.js');
13
13
  var watchOptions = require('./watch-options-CviOsrTS.js');
@@ -7,7 +7,7 @@ var index$1 = require('./index-DNh170BW.js');
7
7
  var config = require('./config-CKhELRRu.js');
8
8
  var helpers = require('./helpers-DgwmcYAu.js');
9
9
  var lockController = require('./lock-controller-aDB9wrEf.js');
10
- var overlays = require('./overlays-CPUTc8An.js');
10
+ var overlays = require('./overlays-v_jc1Hok.js');
11
11
  var theme = require('./theme-CeDs6Hcv.js');
12
12
  var ionicGlobal = require('./ionic-global-UI5YPSi-.js');
13
13
  var animation = require('./animation-ZJ1lAkZD.js');
@@ -526,13 +526,9 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
526
526
  * focus traps.
527
527
  *
528
528
  * All other overlays should have focus traps to prevent
529
- * the keyboard focus from leaving the overlay unless
530
- * developers explicitly opt out (for example, sheet
531
- * modals that should permit background interaction).
529
+ * the keyboard focus from leaving the overlay.
532
530
  */
533
- const overlayEl = overlay.el;
534
- const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
535
- if (shouldTrapFocus) {
531
+ if (overlay.el.tagName !== 'ION-TOAST') {
536
532
  setRootAriaHidden(true);
537
533
  document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
538
534
  }
@@ -634,21 +630,20 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
634
630
  * For accessibility, toasts lack focus traps and don't receive
635
631
  * `aria-hidden` on the root element when presented.
636
632
  *
637
- * Overlays that opt into focus trapping set `aria-hidden`
638
- * on the root element to keep keyboard focus and pointer
639
- * events inside the overlay. We must remove `aria-hidden`
640
- * from the root element when the last focus-trapping overlay
641
- * is dismissed.
633
+ * All other overlays use focus traps to keep keyboard focus
634
+ * within the overlay, setting `aria-hidden` on the root element
635
+ * to enhance accessibility.
636
+ *
637
+ * Therefore, we must remove `aria-hidden` from the root element
638
+ * when the last non-toast overlay is dismissed.
642
639
  */
643
- const overlaysTrappingFocus = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST' && o.focusTrap !== false);
644
- const overlayEl = overlay.el;
645
- const trapsFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
640
+ const overlaysNotToast = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST');
641
+ const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
646
642
  /**
647
- * If this is the last visible overlay that is trapping focus
643
+ * If this is the last visible overlay that is not a toast
648
644
  * then we want to re-add the root to the accessibility tree.
649
645
  */
650
- const lastOverlayTrappingFocus = trapsFocus && overlaysTrappingFocus.length === 1 && overlaysTrappingFocus[0].id === overlayEl.id;
651
- if (lastOverlayTrappingFocus) {
646
+ if (lastOverlayNotToast) {
652
647
  setRootAriaHidden(false);
653
648
  document.body.classList.remove(gestureController.BACKDROP_NO_SCROLL);
654
649
  }
@@ -45,11 +45,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
45
45
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
46
46
  const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
47
47
  const enableBackdrop = () => {
48
- // Respect explicit opt-out of focus trapping/backdrop interactions
49
- // If focusTrap is false, do not enable the backdrop or re-enable focus trap
50
- if (baseEl.focusTrap === false) {
51
- return;
52
- }
53
48
  baseEl.style.setProperty('pointer-events', 'auto');
54
49
  backdropEl.style.setProperty('pointer-events', 'auto');
55
50
  /**
@@ -174,8 +169,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
174
169
  * ion-backdrop and .modal-wrapper always have pointer-events: auto
175
170
  * applied, so the modal content can still be interacted with.
176
171
  */
177
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
178
- baseEl.focusTrap !== false;
172
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
179
173
  if (shouldEnableBackdrop) {
180
174
  enableBackdrop();
181
175
  }
@@ -483,8 +477,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
483
477
  * Backdrop should become enabled
484
478
  * after the backdropBreakpoint value
485
479
  */
486
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
487
- baseEl.focusTrap !== false;
480
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
488
481
  if (shouldEnableBackdrop) {
489
482
  enableBackdrop();
490
483
  }
@@ -445,13 +445,9 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
445
445
  * focus traps.
446
446
  *
447
447
  * All other overlays should have focus traps to prevent
448
- * the keyboard focus from leaving the overlay unless
449
- * developers explicitly opt out (for example, sheet
450
- * modals that should permit background interaction).
448
+ * the keyboard focus from leaving the overlay.
451
449
  */
452
- const overlayEl = overlay.el;
453
- const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
454
- if (shouldTrapFocus) {
450
+ if (overlay.el.tagName !== 'ION-TOAST') {
455
451
  setRootAriaHidden(true);
456
452
  document.body.classList.add(BACKDROP_NO_SCROLL);
457
453
  }
@@ -553,21 +549,20 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
553
549
  * For accessibility, toasts lack focus traps and don't receive
554
550
  * `aria-hidden` on the root element when presented.
555
551
  *
556
- * Overlays that opt into focus trapping set `aria-hidden`
557
- * on the root element to keep keyboard focus and pointer
558
- * events inside the overlay. We must remove `aria-hidden`
559
- * from the root element when the last focus-trapping overlay
560
- * is dismissed.
552
+ * All other overlays use focus traps to keep keyboard focus
553
+ * within the overlay, setting `aria-hidden` on the root element
554
+ * to enhance accessibility.
555
+ *
556
+ * Therefore, we must remove `aria-hidden` from the root element
557
+ * when the last non-toast overlay is dismissed.
561
558
  */
562
- const overlaysTrappingFocus = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST' && o.focusTrap !== false);
563
- const overlayEl = overlay.el;
564
- const trapsFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
559
+ const overlaysNotToast = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST');
560
+ const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
565
561
  /**
566
- * If this is the last visible overlay that is trapping focus
562
+ * If this is the last visible overlay that is not a toast
567
563
  * then we want to re-add the root to the accessibility tree.
568
564
  */
569
- const lastOverlayTrappingFocus = trapsFocus && overlaysTrappingFocus.length === 1 && overlaysTrappingFocus[0].id === overlayEl.id;
570
- if (lastOverlayTrappingFocus) {
565
+ if (lastOverlayNotToast) {
571
566
  setRootAriaHidden(false);
572
567
  document.body.classList.remove(BACKDROP_NO_SCROLL);
573
568
  }
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-09-23T15:49:23",
2
+ "timestamp": "2025-09-18T06:10:16",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.36.2",
package/dist/esm/index.js CHANGED
@@ -13,7 +13,7 @@ export { L as LogLevel } from './index-4DxY6_gG.js';
13
13
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-Dx_6wPIJ.js';
14
14
  export { o as openURL } from './theme-DiVJyqlX.js';
15
15
  export { m as menuController } from './index-CXSTcaAW.js';
16
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-BOalOTUe.js';
16
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-BJaRj3Rj.js';
17
17
  import './index-ZjP4CjeZ.js';
18
18
  import './gesture-controller-BTEOs1at.js';
19
19
  import './hardware-back-button-Dhbd-23H.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, a as readTask, h, d as Host, g
5
5
  import { c as createButtonActiveGesture } from './button-active-DBUPuLNw.js';
6
6
  import { r as raf } from './helpers-8KSQQGQy.js';
7
7
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-BOalOTUe.js';
8
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-BJaRj3Rj.js';
9
9
  import { g as getClassMap } from './theme-DiVJyqlX.js';
10
10
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
11
11
  import { c as createAnimation } from './animation-BvhAtgca.js';
@@ -6,7 +6,7 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
6
6
  import { c as createButtonActiveGesture } from './button-active-DBUPuLNw.js';
7
7
  import { r as raf } from './helpers-8KSQQGQy.js';
8
8
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
9
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-BOalOTUe.js';
9
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-BJaRj3Rj.js';
10
10
  import { g as getClassMap } from './theme-DiVJyqlX.js';
11
11
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
12
12
  import { c as createAnimation } from './animation-BvhAtgca.js';
@@ -4,7 +4,7 @@
4
4
  import { j as printIonError, f as printIonWarning, r as registerInstance, c as createEvent, w as writeTask, h, d as Host, g as getElement } from './index-4DxY6_gG.js';
5
5
  import { startFocusVisible } from './focus-visible-BmVRXR1y.js';
6
6
  import { r as raf, g as getElementRoot, a as renderHiddenInput, e as clamp } from './helpers-8KSQQGQy.js';
7
- import { F as FOCUS_TRAP_DISABLE_CLASS, d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-BOalOTUe.js';
7
+ import { F as FOCUS_TRAP_DISABLE_CLASS, d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-BJaRj3Rj.js';
8
8
  import { i as isRTL } from './dir-C53feagD.js';
9
9
  import { c as createColorClasses, g as getClassMap } from './theme-DiVJyqlX.js';
10
10
  import { l as chevronDown, o as caretUpSharp, p as chevronForward, q as caretDownSharp, c as chevronBack } from './index-DV3sJJW8.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, e as config, h, d as Host, g a
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-Dx_6wPIJ.js';
6
6
  import { r as raf } from './helpers-8KSQQGQy.js';
7
7
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
8
- import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-BOalOTUe.js';
8
+ import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-BJaRj3Rj.js';
9
9
  import { g as getClassMap } from './theme-DiVJyqlX.js';
10
10
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
11
11
  import { c as createAnimation } from './animation-BvhAtgca.js';
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, e as config, j as printIonError, h, d as Host, g as getElement } from './index-4DxY6_gG.js';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
6
- import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './overlays-BOalOTUe.js';
6
+ import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './overlays-BJaRj3Rj.js';
7
7
  import { G as GESTURE_CONTROLLER } from './gesture-controller-BTEOs1at.js';
8
8
  import { shouldUseCloseWatcher } from './hardware-back-button-Dhbd-23H.js';
9
9
  import { o as isEndSide, i as inheritAriaAttributes, l as assert, e as clamp } from './helpers-8KSQQGQy.js';
@@ -7,7 +7,7 @@ import { C as CoreDelegate, a as attachComponent, d as detachComponent } from '.
7
7
  import { e as clamp, g as getElementRoot, r as raf, b as inheritAttributes, h as hasLazyBuild } from './helpers-8KSQQGQy.js';
8
8
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
9
9
  import { g as getCapacitor } from './capacitor-CFERIeaU.js';
10
- import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-BOalOTUe.js';
10
+ import { G as GESTURE, O as OVERLAY_GESTURE_PRIORITY, F as FOCUS_TRAP_DISABLE_CLASS, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-BJaRj3Rj.js';
11
11
  import { g as getClassMap } from './theme-DiVJyqlX.js';
12
12
  import { e as deepReady, w as waitForMount } from './index-Dp7GXH1z.js';
13
13
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
@@ -985,11 +985,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
985
985
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
986
986
  const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
987
987
  const enableBackdrop = () => {
988
- // Respect explicit opt-out of focus trapping/backdrop interactions
989
- // If focusTrap is false, do not enable the backdrop or re-enable focus trap
990
- if (baseEl.focusTrap === false) {
991
- return;
992
- }
993
988
  baseEl.style.setProperty('pointer-events', 'auto');
994
989
  backdropEl.style.setProperty('pointer-events', 'auto');
995
990
  /**
@@ -1114,8 +1109,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1114
1109
  * ion-backdrop and .modal-wrapper always have pointer-events: auto
1115
1110
  * applied, so the modal content can still be interacted with.
1116
1111
  */
1117
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
1118
- baseEl.focusTrap !== false;
1112
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1119
1113
  if (shouldEnableBackdrop) {
1120
1114
  enableBackdrop();
1121
1115
  }
@@ -1423,8 +1417,7 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
1423
1417
  * Backdrop should become enabled
1424
1418
  * after the backdropBreakpoint value
1425
1419
  */
1426
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
1427
- baseEl.focusTrap !== false;
1420
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint;
1428
1421
  if (shouldEnableBackdrop) {
1429
1422
  enableBackdrop();
1430
1423
  }
@@ -2,7 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, f as printIonWarning, h, d as Host, g as getElement } from './index-4DxY6_gG.js';
5
- import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod, F as FOCUS_TRAP_DISABLE_CLASS } from './overlays-BOalOTUe.js';
5
+ import { B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, n as focusFirstDescendant, g as dismiss, h as eventMethod, F as FOCUS_TRAP_DISABLE_CLASS } from './overlays-BJaRj3Rj.js';
6
6
  import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-BLEBgH06.js';
7
7
  import { g as getElementRoot, r as raf, f as addEventListener, h as hasLazyBuild } from './helpers-8KSQQGQy.js';
8
8
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { r as registerInstance, h, i as forceUpdate, d as Host, g as getElement } from './index-4DxY6_gG.js';
5
5
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
6
- import { s as safeCall } from './overlays-BOalOTUe.js';
6
+ import { s as safeCall } from './overlays-BJaRj3Rj.js';
7
7
  import { g as getClassMap } from './theme-DiVJyqlX.js';
8
8
  import './index-ZjP4CjeZ.js';
9
9
  import './helpers-8KSQQGQy.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, f as printIonWarning, h, d as
5
5
  import { c as createNotchController } from './notch-controller-lb417-kU.js';
6
6
  import { i as isOptionSelected, c as compareOptions } from './compare-with-utils-sObYyvOy.js';
7
7
  import { b as inheritAttributes, a as renderHiddenInput, n as focusVisibleElement } from './helpers-8KSQQGQy.js';
8
- import { c as popoverController, b as actionSheetController, a as alertController, m as modalController, s as safeCall } from './overlays-BOalOTUe.js';
8
+ import { c as popoverController, b as actionSheetController, a as alertController, m as modalController, s as safeCall } from './overlays-BJaRj3Rj.js';
9
9
  import { i as isRTL } from './dir-C53feagD.js';
10
10
  import { h as hostContext, c as createColorClasses, g as getClassMap } from './theme-DiVJyqlX.js';
11
11
  import { w as watchForOptions } from './watch-options-Dtdm8lKC.js';
@@ -5,7 +5,7 @@ import { f as printIonWarning, r as registerInstance, c as createEvent, e as con
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-Dx_6wPIJ.js';
6
6
  import { g as getElementRoot, r as raf } from './helpers-8KSQQGQy.js';
7
7
  import { c as createLockController } from './lock-controller-B-hirT0v.js';
8
- import { O as OVERLAY_GESTURE_PRIORITY, d as createDelegateController, e as createTriggerController, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall, G as GESTURE } from './overlays-BOalOTUe.js';
8
+ import { O as OVERLAY_GESTURE_PRIORITY, d as createDelegateController, e as createTriggerController, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall, G as GESTURE } from './overlays-BJaRj3Rj.js';
9
9
  import { c as createColorClasses, g as getClassMap } from './theme-DiVJyqlX.js';
10
10
  import { b as getIonMode } from './ionic-global-CTSyufhF.js';
11
11
  import { c as createAnimation } from './animation-BvhAtgca.js';
@@ -524,13 +524,9 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
524
524
  * focus traps.
525
525
  *
526
526
  * All other overlays should have focus traps to prevent
527
- * the keyboard focus from leaving the overlay unless
528
- * developers explicitly opt out (for example, sheet
529
- * modals that should permit background interaction).
527
+ * the keyboard focus from leaving the overlay.
530
528
  */
531
- const overlayEl = overlay.el;
532
- const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
533
- if (shouldTrapFocus) {
529
+ if (overlay.el.tagName !== 'ION-TOAST') {
534
530
  setRootAriaHidden(true);
535
531
  document.body.classList.add(BACKDROP_NO_SCROLL);
536
532
  }
@@ -632,21 +628,20 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
632
628
  * For accessibility, toasts lack focus traps and don't receive
633
629
  * `aria-hidden` on the root element when presented.
634
630
  *
635
- * Overlays that opt into focus trapping set `aria-hidden`
636
- * on the root element to keep keyboard focus and pointer
637
- * events inside the overlay. We must remove `aria-hidden`
638
- * from the root element when the last focus-trapping overlay
639
- * is dismissed.
631
+ * All other overlays use focus traps to keep keyboard focus
632
+ * within the overlay, setting `aria-hidden` on the root element
633
+ * to enhance accessibility.
634
+ *
635
+ * Therefore, we must remove `aria-hidden` from the root element
636
+ * when the last non-toast overlay is dismissed.
640
637
  */
641
- const overlaysTrappingFocus = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST' && o.focusTrap !== false);
642
- const overlayEl = overlay.el;
643
- const trapsFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
638
+ const overlaysNotToast = presentedOverlays.filter((o) => o.tagName !== 'ION-TOAST');
639
+ const lastOverlayNotToast = overlaysNotToast.length === 1 && overlaysNotToast[0].id === overlay.el.id;
644
640
  /**
645
- * If this is the last visible overlay that is trapping focus
641
+ * If this is the last visible overlay that is not a toast
646
642
  * then we want to re-add the root to the accessibility tree.
647
643
  */
648
- const lastOverlayTrappingFocus = trapsFocus && overlaysTrappingFocus.length === 1 && overlaysTrappingFocus[0].id === overlayEl.id;
649
- if (lastOverlayTrappingFocus) {
644
+ if (lastOverlayNotToast) {
650
645
  setRootAriaHidden(false);
651
646
  document.body.classList.remove(BACKDROP_NO_SCROLL);
652
647
  }
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- export{c as createAnimation}from"./p-C87oPMMF.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-DCuOL88l.js";export{iosTransitionAnimation}from"./p-BB-JoKGB.js";export{mdTransitionAnimation}from"./p-LaGjiAVo.js";export{g as getTimeGivenProgression}from"./p-hHmYLOfE.js";export{createGesture}from"./p-Cl0B-RWe.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./p-Br3vSlYh.js";export{c as componentOnReady}from"./p-C-Cct-6D.js";export{L as LogLevel}from"./p-4DxY6_gG.js";export{I as IonicSafeString,g as getMode,s as setupConfig}from"./p-EnaLTYYj.js";export{o as openURL}from"./p-DiVJyqlX.js";export{m as menuController}from"./p-C8d2ebIg.js";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as pickerController,c as popoverController,t as toastController}from"./p-JK8qe2uI.js";import"./p-ZjP4CjeZ.js";import"./p-BTEOs1at.js";import"./p-CvaZMP6T.js";import"./p-DAfH9Iif.js";const e=e=>{const{swiper:o,extendParams:t}=e,s={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&&(s.pagination={type:"bullets",clickable:!1,hideOnClick:!1}),o.scrollbar&&(s.scrollbar={hide:!0}),t(s)};export{e as IonicSlides}
4
+ export{c as createAnimation}from"./p-C87oPMMF.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-DCuOL88l.js";export{iosTransitionAnimation}from"./p-BB-JoKGB.js";export{mdTransitionAnimation}from"./p-LaGjiAVo.js";export{g as getTimeGivenProgression}from"./p-hHmYLOfE.js";export{createGesture}from"./p-Cl0B-RWe.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./p-Br3vSlYh.js";export{c as componentOnReady}from"./p-C-Cct-6D.js";export{L as LogLevel}from"./p-4DxY6_gG.js";export{I as IonicSafeString,g as getMode,s as setupConfig}from"./p-EnaLTYYj.js";export{o as openURL}from"./p-DiVJyqlX.js";export{m as menuController}from"./p-C8d2ebIg.js";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as pickerController,c as popoverController,t as toastController}from"./p-CoDfkBuk.js";import"./p-ZjP4CjeZ.js";import"./p-BTEOs1at.js";import"./p-CvaZMP6T.js";import"./p-DAfH9Iif.js";const e=e=>{const{swiper:o,extendParams:t}=e,s={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&&(s.pagination={type:"bullets",clickable:!1,hideOnClick:!1}),o.scrollbar&&(s.scrollbar={hide:!0}),t(s)};export{e as IonicSlides}