@ionic/core 8.7.6-dev.11759345401.165fca78 → 8.7.6-dev.11759412372.1f332f62

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 (64) hide show
  1. package/components/ion-tab-bar.js +7 -20
  2. package/components/ion-tabs.js +22 -21
  3. package/components/modal.js +25 -11
  4. package/components/overlays.js +23 -10
  5. package/components/popover.js +3 -2
  6. package/dist/cjs/index.cjs.js +1 -1
  7. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  8. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  12. package/dist/cjs/ion-modal.cjs.entry.js +26 -12
  13. package/dist/cjs/ion-popover.cjs.entry.js +4 -3
  14. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  15. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +7 -20
  17. package/dist/cjs/ion-tab_2.cjs.entry.js +22 -21
  18. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  19. package/dist/cjs/{overlays-czPyT6xP.js → overlays-CnXxzdUE.js} +23 -10
  20. package/dist/collection/components/modal/gestures/sheet.js +20 -7
  21. package/dist/collection/components/modal/modal.js +5 -4
  22. package/dist/collection/components/popover/popover.js +3 -2
  23. package/dist/collection/components/tab-bar/tab-bar.js +7 -20
  24. package/dist/collection/components/tabs/tabs.js +22 -21
  25. package/dist/collection/utils/overlays.js +23 -10
  26. package/dist/docs.json +1 -1
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/ion-action-sheet.entry.js +1 -1
  29. package/dist/esm/ion-alert.entry.js +1 -1
  30. package/dist/esm/ion-datetime_3.entry.js +1 -1
  31. package/dist/esm/ion-loading.entry.js +1 -1
  32. package/dist/esm/ion-menu_3.entry.js +1 -1
  33. package/dist/esm/ion-modal.entry.js +26 -12
  34. package/dist/esm/ion-popover.entry.js +4 -3
  35. package/dist/esm/ion-select-modal.entry.js +1 -1
  36. package/dist/esm/ion-select_3.entry.js +1 -1
  37. package/dist/esm/ion-tab-bar_2.entry.js +7 -20
  38. package/dist/esm/ion-tab_2.entry.js +22 -21
  39. package/dist/esm/ion-toast.entry.js +1 -1
  40. package/dist/esm/{overlays-BYcYBCrx.js → overlays-C6lqoZ8M.js} +23 -10
  41. package/dist/ionic/index.esm.js +1 -1
  42. package/dist/ionic/ionic.esm.js +1 -1
  43. package/dist/ionic/{p-0793aea6.entry.js → p-24cfbd94.entry.js} +1 -1
  44. package/dist/ionic/{p-746cd400.entry.js → p-2d199573.entry.js} +1 -1
  45. package/dist/ionic/{p-117e7a3f.entry.js → p-37074de0.entry.js} +1 -1
  46. package/dist/ionic/{p-568efea2.entry.js → p-3ea6a927.entry.js} +1 -1
  47. package/dist/ionic/{p-90f4cc71.entry.js → p-4cc97550.entry.js} +1 -1
  48. package/dist/ionic/p-55ea7dfc.entry.js +4 -0
  49. package/dist/ionic/{p-25e5e5cc.entry.js → p-56a91276.entry.js} +1 -1
  50. package/dist/ionic/{p-1f68cb59.entry.js → p-5a1f919a.entry.js} +1 -1
  51. package/dist/ionic/p-BW3pge-V.js +4 -0
  52. package/dist/ionic/{p-63852736.entry.js → p-b21fce9d.entry.js} +1 -1
  53. package/dist/ionic/{p-0e1904a0.entry.js → p-b7c1a16e.entry.js} +1 -1
  54. package/dist/ionic/p-e6c3214c.entry.js +4 -0
  55. package/dist/ionic/p-ec76fec4.entry.js +4 -0
  56. package/dist/types/components/tab-bar/tab-bar.d.ts +2 -2
  57. package/dist/types/components/tabs/tabs.d.ts +1 -3
  58. package/hydrate/index.js +80 -64
  59. package/hydrate/index.mjs +80 -64
  60. package/package.json +1 -1
  61. package/dist/ionic/p-2135be78.entry.js +0 -4
  62. package/dist/ionic/p-6e43c86a.entry.js +0 -4
  63. package/dist/ionic/p-Cnh7O81W.js +0 -4
  64. package/dist/ionic/p-e3cacac2.entry.js +0 -4
@@ -103,27 +103,29 @@ const Tabs = class {
103
103
  }
104
104
  this.ionNavWillLoad.emit();
105
105
  }
106
- componentDidLoad() {
107
- this.updateTabBar();
108
- }
109
- componentDidUpdate() {
110
- this.updateTabBar();
111
- }
112
- updateTabBar() {
106
+ componentWillRender() {
113
107
  const tabBar = this.el.querySelector('ion-tab-bar');
114
- if (!tabBar) {
115
- return;
116
- }
117
- const tab = this.selectedTab ? this.selectedTab.tab : undefined;
118
- // If tabs has no selected tab but tab-bar already has a selected-tab set,
119
- // don't overwrite it. This handles cases where tab-bar is used without ion-tab elements.
120
- if (tab === undefined) {
121
- return;
122
- }
123
- if (tabBar.selectedTab === tab) {
124
- return;
108
+ if (tabBar) {
109
+ let tab = this.selectedTab ? this.selectedTab.tab : undefined;
110
+ // Fallback: if no selectedTab is set but we're using router mode,
111
+ // determine the active tab from the current URL. This works around
112
+ // timing issues in React Router integration where setRouteId may not
113
+ // be called in time for the initial render.
114
+ // TODO(FW-6724): Remove this with React Router upgrade
115
+ if (!tab && this.useRouter && typeof window !== 'undefined') {
116
+ const currentPath = window.location.pathname;
117
+ const tabButtons = this.el.querySelectorAll('ion-tab-button');
118
+ // Look for a tab button that matches the current path pattern
119
+ for (const tabButton of tabButtons) {
120
+ const tabId = tabButton.getAttribute('tab');
121
+ if (tabId && currentPath.includes(tabId)) {
122
+ tab = tabId;
123
+ break;
124
+ }
125
+ }
126
+ }
127
+ tabBar.selectedTab = tab;
125
128
  }
126
- tabBar.selectedTab = tab;
127
129
  }
128
130
  /**
129
131
  * Select a tab by the value of its `tab` property or an element reference. This method is only available for vanilla JavaScript projects. The Angular, React, and Vue implementations of tabs are coupled to each framework's router.
@@ -182,7 +184,6 @@ const Tabs = class {
182
184
  this.selectedTab = selectedTab;
183
185
  this.ionTabsWillChange.emit({ tab: selectedTab.tab });
184
186
  selectedTab.active = true;
185
- this.updateTabBar();
186
187
  return Promise.resolve();
187
188
  }
188
189
  tabSwitch() {
@@ -217,7 +218,7 @@ const Tabs = class {
217
218
  return Array.from(this.el.querySelectorAll('ion-tab'));
218
219
  }
219
220
  render() {
220
- return (index.h(index.Host, { key: '7b4b302f2942d8d131f6fc24e817989a8be08867', onIonTabButtonClick: this.onTabClicked }, index.h("slot", { key: '2c51cf14c0f17a8ddf2d879858c984cdf8fd3147', name: "top" }), index.h("div", { key: '7e9d6055092d41bd9bc80ae15965f77e216feb84', class: "tabs-inner" }, index.h("slot", { key: 'c308a787e37ff7f6653531d70deca597a7602d26' })), index.h("slot", { key: 'd5f5e693710c853570811602f859cf3e88272684', name: "bottom" })));
221
+ return (index.h(index.Host, { key: '6dd1d17cc5a7aff4b910303006b4478080ca97af', onIonTabButtonClick: this.onTabClicked }, index.h("slot", { key: 'db54a692d1a825498a116f090eb305f7cceceb5a', name: "top" }), index.h("div", { key: 'e1b7d49ba7032e9071de2029695254e2a8303be9', class: "tabs-inner" }, index.h("slot", { key: '4c3b58d5292c8c834e7532c51de0861068943d79' })), index.h("slot", { key: 'dd59c0b9b217dfbfb0fccdbc6896b593278549cc', name: "bottom" })));
221
222
  }
222
223
  get el() { return index.getElement(this); }
223
224
  };
@@ -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-czPyT6xP.js');
10
+ var overlays = require('./overlays-CnXxzdUE.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');
@@ -504,7 +504,7 @@ const setRootAriaHidden = (hidden = false) => {
504
504
  }
505
505
  };
506
506
  const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
507
- var _a, _b;
507
+ var _a, _b, _c, _d;
508
508
  if (overlay.presented) {
509
509
  return;
510
510
  }
@@ -537,10 +537,14 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
537
537
  * to avoid disabling the overlay.
538
538
  */
539
539
  const overlayEl = overlay.el;
540
- const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
540
+ const focusTrapAttr = (_a = overlayEl.getAttribute) === null || _a === void 0 ? void 0 : _a.call(overlayEl, 'focus-trap');
541
+ const showBackdropAttr = (_b = overlayEl.getAttribute) === null || _b === void 0 ? void 0 : _b.call(overlayEl, 'show-backdrop');
542
+ const focusTrapDisabled = overlayEl.focusTrap === false || focusTrapAttr === 'false';
543
+ const backdropDisabled = overlayEl.showBackdrop === false || showBackdropAttr === 'false';
544
+ const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && !focusTrapDisabled;
541
545
  // Only lock out root content when backdrop is active. Developers relying on showBackdrop=false
542
546
  // expect background interaction to remain enabled.
543
- const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
547
+ const shouldLockRoot = shouldTrapFocus && !backdropDisabled;
544
548
  overlay.presented = true;
545
549
  overlay.willPresent.emit();
546
550
  if (shouldLockRoot) {
@@ -552,7 +556,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
552
556
  }
553
557
  document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
554
558
  }
555
- (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
559
+ (_c = overlay.willPresentShorthand) === null || _c === void 0 ? void 0 : _c.emit();
556
560
  const mode = ionicGlobal.getIonMode(overlay);
557
561
  // get the user's animation fn if one was provided
558
562
  const animationBuilder = overlay.enterAnimation
@@ -561,7 +565,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
561
565
  const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
562
566
  if (completed) {
563
567
  overlay.didPresent.emit();
564
- (_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
568
+ (_d = overlay.didPresentShorthand) === null || _d === void 0 ? void 0 : _d.emit();
565
569
  }
566
570
  /**
567
571
  * If the focused element is already
@@ -639,7 +643,7 @@ const restoreElementFocus = async (overlayEl) => {
639
643
  }
640
644
  };
641
645
  const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
642
- var _a, _b;
646
+ var _a, _b, _c, _d;
643
647
  if (!overlay.presented) {
644
648
  return false;
645
649
  }
@@ -655,11 +659,20 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
655
659
  * is dismissed.
656
660
  */
657
661
  const overlaysLockingRoot = presentedOverlays.filter((o) => {
662
+ var _a, _b;
658
663
  const el = o;
659
- return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false;
664
+ const focusTrapAttr = (_a = el.getAttribute) === null || _a === void 0 ? void 0 : _a.call(el, 'focus-trap');
665
+ const showBackdropAttr = (_b = el.getAttribute) === null || _b === void 0 ? void 0 : _b.call(el, 'show-backdrop');
666
+ const focusTrapDisabled = el.focusTrap === false || focusTrapAttr === 'false';
667
+ const backdropDisabled = el.showBackdrop === false || showBackdropAttr === 'false';
668
+ return el.tagName !== 'ION-TOAST' && !focusTrapDisabled && !backdropDisabled;
660
669
  });
661
670
  const overlayEl = overlay.el;
662
- const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false;
671
+ const focusTrapAttr = (_a = overlayEl.getAttribute) === null || _a === void 0 ? void 0 : _a.call(overlayEl, 'focus-trap');
672
+ const showBackdropAttr = (_b = overlayEl.getAttribute) === null || _b === void 0 ? void 0 : _b.call(overlayEl, 'show-backdrop');
673
+ const focusTrapDisabled = overlayEl.focusTrap === false || focusTrapAttr === 'false';
674
+ const backdropDisabled = overlayEl.showBackdrop === false || showBackdropAttr === 'false';
675
+ const locksRoot = overlayEl.tagName !== 'ION-TOAST' && !focusTrapDisabled && !backdropDisabled;
663
676
  /**
664
677
  * If this is the last visible overlay that is trapping focus
665
678
  * then we want to re-add the root to the accessibility tree.
@@ -674,7 +687,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
674
687
  // Overlay contents should not be clickable during dismiss
675
688
  overlay.el.style.setProperty('pointer-events', 'none');
676
689
  overlay.willDismiss.emit({ data, role });
677
- (_a = overlay.willDismissShorthand) === null || _a === void 0 ? void 0 : _a.emit({ data, role });
690
+ (_c = overlay.willDismissShorthand) === null || _c === void 0 ? void 0 : _c.emit({ data, role });
678
691
  const mode = ionicGlobal.getIonMode(overlay);
679
692
  const animationBuilder = overlay.leaveAnimation
680
693
  ? overlay.leaveAnimation
@@ -684,7 +697,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
684
697
  await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
685
698
  }
686
699
  overlay.didDismiss.emit({ data, role });
687
- (_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
700
+ (_d = overlay.didDismissShorthand) === null || _d === void 0 ? void 0 : _d.emit({ data, role });
688
701
  // Get a reference to all animations currently assigned to this overlay
689
702
  // Then tear them down to return the overlay to its initial visual state
690
703
  const animations = activeAnimations.get(overlay) || [];
@@ -8,6 +8,7 @@ import { FOCUS_TRAP_DISABLE_CLASS } from "../../../utils/overlays";
8
8
  import { getBackdropValueForSheet } from "../utils";
9
9
  import { calculateSpringStep, handleCanDismiss } from "./utils";
10
10
  export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
11
+ var _a, _b;
11
12
  // Defaults for the sheet swipe animation
12
13
  const defaultBackdrop = [
13
14
  { offset: 0, opacity: 'var(--backdrop-opacity)' },
@@ -45,10 +46,15 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
45
46
  const backdropAnimation = animation.childAnimations.find((ani) => ani.id === 'backdropAnimation');
46
47
  const contentAnimation = animation.childAnimations.find((ani) => ani.id === 'contentAnimation');
47
48
  const enableBackdrop = () => {
49
+ var _a, _b;
48
50
  // Respect explicit opt-out of focus trapping/backdrop interactions
49
51
  // If focusTrap is false or showBackdrop is false, do not enable the backdrop or re-enable focus trap
50
52
  const el = baseEl;
51
- if (el.focusTrap === false || el.showBackdrop === false) {
53
+ const focusTrapAttr = (_a = el.getAttribute) === null || _a === void 0 ? void 0 : _a.call(el, 'focus-trap');
54
+ const showBackdropAttr = (_b = el.getAttribute) === null || _b === void 0 ? void 0 : _b.call(el, 'show-backdrop');
55
+ const focusTrapDisabled = el.focusTrap === false || focusTrapAttr === 'false';
56
+ const backdropDisabled = el.showBackdrop === false || showBackdropAttr === 'false';
57
+ if (focusTrapDisabled || backdropDisabled) {
52
58
  return;
53
59
  }
54
60
  baseEl.style.setProperty('pointer-events', 'auto');
@@ -175,9 +181,12 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
175
181
  * ion-backdrop and .modal-wrapper always have pointer-events: auto
176
182
  * applied, so the modal content can still be interacted with.
177
183
  */
178
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
179
- baseEl.focusTrap !== false &&
180
- baseEl.showBackdrop !== false;
184
+ const modalEl = baseEl;
185
+ const focusTrapAttr = (_a = modalEl.getAttribute) === null || _a === void 0 ? void 0 : _a.call(modalEl, 'focus-trap');
186
+ const showBackdropAttr = (_b = modalEl.getAttribute) === null || _b === void 0 ? void 0 : _b.call(modalEl, 'show-backdrop');
187
+ const focusTrapDisabled = modalEl.focusTrap === false || focusTrapAttr === 'false';
188
+ const backdropDisabled = modalEl.showBackdrop === false || showBackdropAttr === 'false';
189
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint && !focusTrapDisabled && !backdropDisabled;
181
190
  if (shouldEnableBackdrop) {
182
191
  enableBackdrop();
183
192
  }
@@ -475,6 +484,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
475
484
  */
476
485
  if (wrapperAnimation && backdropAnimation) {
477
486
  raf(() => {
487
+ var _a, _b;
478
488
  wrapperAnimation.keyframes([...SheetDefaults.WRAPPER_KEYFRAMES]);
479
489
  backdropAnimation.keyframes([...SheetDefaults.BACKDROP_KEYFRAMES]);
480
490
  contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.keyframes([...SheetDefaults.CONTENT_KEYFRAMES]);
@@ -485,9 +495,12 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
485
495
  * Backdrop should become enabled
486
496
  * after the backdropBreakpoint value
487
497
  */
488
- const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint &&
489
- baseEl.focusTrap !== false &&
490
- baseEl.showBackdrop !== false;
498
+ const modalEl = baseEl;
499
+ const focusTrapAttr = (_a = modalEl.getAttribute) === null || _a === void 0 ? void 0 : _a.call(modalEl, 'focus-trap');
500
+ const showBackdropAttr = (_b = modalEl.getAttribute) === null || _b === void 0 ? void 0 : _b.call(modalEl, 'show-backdrop');
501
+ const focusTrapDisabled = modalEl.focusTrap === false || focusTrapAttr === 'false';
502
+ const backdropDisabled = modalEl.showBackdrop === false || showBackdropAttr === 'false';
503
+ const shouldEnableBackdrop = currentBreakpoint > backdropBreakpoint && !focusTrapDisabled && !backdropDisabled;
491
504
  if (shouldEnableBackdrop) {
492
505
  enableBackdrop();
493
506
  }
@@ -879,20 +879,21 @@ export class Modal {
879
879
  const isCardModal = presentingElement !== undefined && mode === 'ios';
880
880
  const isHandleCycle = handleBehavior === 'cycle';
881
881
  const isSheetModalWithHandle = isSheetModal && showHandle;
882
- return (h(Host, Object.assign({ key: '9e9a7bd591eb17a225a00b4fa2e379e94601d17f', "no-router": true,
882
+ const focusTrapAttr = this.el.getAttribute('focus-trap');
883
+ return (h(Host, Object.assign({ key: '5cb4c73e060f5bc0fdc9728cb8029665a08b4187', "no-router": true,
883
884
  // Allow the modal to be navigable when the handle is focusable
884
885
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
885
886
  zIndex: `${20000 + this.overlayIndex}`,
886
- }, 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: 'e5eae2c14f830f75e308fcd7f4c10c86fac5b962', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: 'e268f9cd310c3cf4e051b5b92524ce4fb70d005e', class: "modal-shadow" }), h("div", Object.assign({ key: '9c380f36c18144c153077b15744d1c3346bce63e',
887
+ }, 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 || focusTrapAttr === '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: '7697171f861e148d3ef7e35460dd8d3df2d4f3ac', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: 'd71a7ca23e1aa2048af82959f902ea0fc92d6fba', class: "modal-shadow" }), h("div", Object.assign({ key: '9543fdf222f35bd22ded828f60a1345e3b3da65c',
887
888
  /*
888
889
  role and aria-modal must be used on the
889
890
  same element. They must also be set inside the
890
891
  shadow DOM otherwise ion-button will not be highlighted
891
892
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
892
893
  */
893
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '2d5ee6d5959d97309c306e8ce72eb0f2c19be144', class: "modal-handle",
894
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '411f1e52935485e2791afd9a97d6685c994bf44a', class: "modal-handle",
894
895
  // Prevents the handle from receiving keyboard focus when it does not cycle
895
- 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: '5590434c35ea04c42fc006498bc189038e15a298', onSlotchange: this.onSlotChange }))));
896
+ 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: '8dac500e345dfd66f3a3fa62cd94570682b1083e', onSlotchange: this.onSlotChange }))));
896
897
  }
897
898
  static get is() { return "ion-modal"; }
898
899
  static get encapsulation() { return "shadow"; }
@@ -433,9 +433,10 @@ export class Popover {
433
433
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
434
434
  const desktop = isPlatform('desktop');
435
435
  const enableArrow = arrow && !parentPopover;
436
- return (h(Host, Object.assign({ key: '16866c02534968c982cf4730d2936d03a5107c8b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
436
+ const focusTrapAttr = this.el.getAttribute('focus-trap');
437
+ return (h(Host, Object.assign({ key: 'fe80ce582ef39698a3c11e305df3e8e599e91bdb', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
437
438
  zIndex: `${20000 + this.overlayIndex}`,
438
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '0df258601a4d30df3c27aa8234a7d5e056c3ecbb', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: 'f94e80ed996b957b5cd09b826472b4f60e8fcc78', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '185ce22f6386e8444a9cc7b8818dbfc16c463c99', class: "popover-arrow", part: "arrow" }), h("div", { key: '206202b299404e110de5397b229678cca18568d3', class: "popover-content", part: "content" }, h("slot", { key: 'ee543a0b92d6e35a837c0a0e4617c7b0fc4ad0b0' })))));
439
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false || focusTrapAttr === 'false', 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: 'f37d7c8574fded2721311d4f12726e21d830cc54', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '1567893f935e1da1cb46b81ea14a76af7895eee5', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '456163df03d2b582e07b1f81fa6088125d3308ef', class: "popover-arrow", part: "arrow" }), h("div", { key: '470d257a44fb9532a392bf9f5a89a1531d02323c', class: "popover-content", part: "content" }, h("slot", { key: 'd434289bba55ad9ab169a5092d214f4031511a8f' })))));
439
440
  }
440
441
  static get is() { return "ion-popover"; }
441
442
  static get encapsulation() { return "shadow"; }
@@ -11,7 +11,6 @@ import { getIonMode } from "../../global/ionic-global";
11
11
  export class TabBar {
12
12
  constructor() {
13
13
  this.keyboardCtrl = null;
14
- this.didLoad = false;
15
14
  this.keyboardVisible = false;
16
15
  /**
17
16
  * If `true`, the tab bar will be translucent.
@@ -21,29 +20,14 @@ export class TabBar {
21
20
  this.translucent = false;
22
21
  }
23
22
  selectedTabChanged() {
24
- // Skip the initial watcher call that happens during component load
25
- // We handle that in componentDidLoad to ensure children are ready
26
- if (!this.didLoad) {
27
- return;
28
- }
29
23
  if (this.selectedTab !== undefined) {
30
24
  this.ionTabBarChanged.emit({
31
25
  tab: this.selectedTab,
32
26
  });
33
27
  }
34
28
  }
35
- componentDidLoad() {
36
- this.ionTabBarLoaded.emit();
37
- // Set the flag to indicate the component has loaded
38
- // This allows the watcher to emit changes from this point forward
39
- this.didLoad = true;
40
- // Emit the initial selected tab after the component is fully loaded
41
- // This ensures all child components (ion-tab-button) are ready
42
- if (this.selectedTab !== undefined) {
43
- this.ionTabBarChanged.emit({
44
- tab: this.selectedTab,
45
- });
46
- }
29
+ componentWillLoad() {
30
+ this.selectedTabChanged();
47
31
  }
48
32
  async connectedCallback() {
49
33
  this.keyboardCtrl = await createKeyboardController(async (keyboardOpen, waitForResize) => {
@@ -63,15 +47,18 @@ export class TabBar {
63
47
  this.keyboardCtrl.destroy();
64
48
  }
65
49
  }
50
+ componentDidLoad() {
51
+ this.ionTabBarLoaded.emit();
52
+ }
66
53
  render() {
67
54
  const { color, translucent, keyboardVisible } = this;
68
55
  const mode = getIonMode(this);
69
56
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
70
- return (h(Host, { key: '388ec37ce308035bab78d6c9a016bb616e9517a9', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
57
+ return (h(Host, { key: '275dc6c1b30f6928ce9039b2f445208bb3500ddc', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses(color, {
71
58
  [mode]: true,
72
59
  'tab-bar-translucent': translucent,
73
60
  'tab-bar-hidden': shouldHide,
74
- }) }, h("slot", { key: 'ce10ade2b86725e24f3254516483eeedd8ecb16a' })));
61
+ }) }, h("slot", { key: 'ceac20128d75c6a4a0f445f2df8deb8cc71fc4da' })));
75
62
  }
76
63
  static get is() { return "ion-tab-bar"; }
77
64
  static get encapsulation() { return "shadow"; }
@@ -48,27 +48,29 @@ export class Tabs {
48
48
  }
49
49
  this.ionNavWillLoad.emit();
50
50
  }
51
- componentDidLoad() {
52
- this.updateTabBar();
53
- }
54
- componentDidUpdate() {
55
- this.updateTabBar();
56
- }
57
- updateTabBar() {
51
+ componentWillRender() {
58
52
  const tabBar = this.el.querySelector('ion-tab-bar');
59
- if (!tabBar) {
60
- return;
61
- }
62
- const tab = this.selectedTab ? this.selectedTab.tab : undefined;
63
- // If tabs has no selected tab but tab-bar already has a selected-tab set,
64
- // don't overwrite it. This handles cases where tab-bar is used without ion-tab elements.
65
- if (tab === undefined) {
66
- return;
67
- }
68
- if (tabBar.selectedTab === tab) {
69
- return;
53
+ if (tabBar) {
54
+ let tab = this.selectedTab ? this.selectedTab.tab : undefined;
55
+ // Fallback: if no selectedTab is set but we're using router mode,
56
+ // determine the active tab from the current URL. This works around
57
+ // timing issues in React Router integration where setRouteId may not
58
+ // be called in time for the initial render.
59
+ // TODO(FW-6724): Remove this with React Router upgrade
60
+ if (!tab && this.useRouter && typeof window !== 'undefined') {
61
+ const currentPath = window.location.pathname;
62
+ const tabButtons = this.el.querySelectorAll('ion-tab-button');
63
+ // Look for a tab button that matches the current path pattern
64
+ for (const tabButton of tabButtons) {
65
+ const tabId = tabButton.getAttribute('tab');
66
+ if (tabId && currentPath.includes(tabId)) {
67
+ tab = tabId;
68
+ break;
69
+ }
70
+ }
71
+ }
72
+ tabBar.selectedTab = tab;
70
73
  }
71
- tabBar.selectedTab = tab;
72
74
  }
73
75
  /**
74
76
  * Select a tab by the value of its `tab` property or an element reference. This method is only available for vanilla JavaScript projects. The Angular, React, and Vue implementations of tabs are coupled to each framework's router.
@@ -127,7 +129,6 @@ export class Tabs {
127
129
  this.selectedTab = selectedTab;
128
130
  this.ionTabsWillChange.emit({ tab: selectedTab.tab });
129
131
  selectedTab.active = true;
130
- this.updateTabBar();
131
132
  return Promise.resolve();
132
133
  }
133
134
  tabSwitch() {
@@ -162,7 +163,7 @@ export class Tabs {
162
163
  return Array.from(this.el.querySelectorAll('ion-tab'));
163
164
  }
164
165
  render() {
165
- return (h(Host, { key: '7b4b302f2942d8d131f6fc24e817989a8be08867', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: '2c51cf14c0f17a8ddf2d879858c984cdf8fd3147', name: "top" }), h("div", { key: '7e9d6055092d41bd9bc80ae15965f77e216feb84', class: "tabs-inner" }, h("slot", { key: 'c308a787e37ff7f6653531d70deca597a7602d26' })), h("slot", { key: 'd5f5e693710c853570811602f859cf3e88272684', name: "bottom" })));
166
+ return (h(Host, { key: '6dd1d17cc5a7aff4b910303006b4478080ca97af', onIonTabButtonClick: this.onTabClicked }, h("slot", { key: 'db54a692d1a825498a116f090eb305f7cceceb5a', name: "top" }), h("div", { key: 'e1b7d49ba7032e9071de2029695254e2a8303be9', class: "tabs-inner" }, h("slot", { key: '4c3b58d5292c8c834e7532c51de0861068943d79' })), h("slot", { key: 'dd59c0b9b217dfbfb0fccdbc6896b593278549cc', name: "bottom" })));
166
167
  }
167
168
  static get is() { return "ion-tabs"; }
168
169
  static get encapsulation() { return "shadow"; }
@@ -423,7 +423,7 @@ export const setRootAriaHidden = (hidden = false) => {
423
423
  }
424
424
  };
425
425
  export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
426
- var _a, _b;
426
+ var _a, _b, _c, _d;
427
427
  if (overlay.presented) {
428
428
  return;
429
429
  }
@@ -456,10 +456,14 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
456
456
  * to avoid disabling the overlay.
457
457
  */
458
458
  const overlayEl = overlay.el;
459
- const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
459
+ const focusTrapAttr = (_a = overlayEl.getAttribute) === null || _a === void 0 ? void 0 : _a.call(overlayEl, 'focus-trap');
460
+ const showBackdropAttr = (_b = overlayEl.getAttribute) === null || _b === void 0 ? void 0 : _b.call(overlayEl, 'show-backdrop');
461
+ const focusTrapDisabled = overlayEl.focusTrap === false || focusTrapAttr === 'false';
462
+ const backdropDisabled = overlayEl.showBackdrop === false || showBackdropAttr === 'false';
463
+ const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && !focusTrapDisabled;
460
464
  // Only lock out root content when backdrop is active. Developers relying on showBackdrop=false
461
465
  // expect background interaction to remain enabled.
462
- const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
466
+ const shouldLockRoot = shouldTrapFocus && !backdropDisabled;
463
467
  overlay.presented = true;
464
468
  overlay.willPresent.emit();
465
469
  if (shouldLockRoot) {
@@ -471,7 +475,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
471
475
  }
472
476
  document.body.classList.add(BACKDROP_NO_SCROLL);
473
477
  }
474
- (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
478
+ (_c = overlay.willPresentShorthand) === null || _c === void 0 ? void 0 : _c.emit();
475
479
  const mode = getIonMode(overlay);
476
480
  // get the user's animation fn if one was provided
477
481
  const animationBuilder = overlay.enterAnimation
@@ -480,7 +484,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
480
484
  const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
481
485
  if (completed) {
482
486
  overlay.didPresent.emit();
483
- (_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
487
+ (_d = overlay.didPresentShorthand) === null || _d === void 0 ? void 0 : _d.emit();
484
488
  }
485
489
  /**
486
490
  * If the focused element is already
@@ -558,7 +562,7 @@ const restoreElementFocus = async (overlayEl) => {
558
562
  }
559
563
  };
560
564
  export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
561
- var _a, _b;
565
+ var _a, _b, _c, _d;
562
566
  if (!overlay.presented) {
563
567
  return false;
564
568
  }
@@ -574,11 +578,20 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
574
578
  * is dismissed.
575
579
  */
576
580
  const overlaysLockingRoot = presentedOverlays.filter((o) => {
581
+ var _a, _b;
577
582
  const el = o;
578
- return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false;
583
+ const focusTrapAttr = (_a = el.getAttribute) === null || _a === void 0 ? void 0 : _a.call(el, 'focus-trap');
584
+ const showBackdropAttr = (_b = el.getAttribute) === null || _b === void 0 ? void 0 : _b.call(el, 'show-backdrop');
585
+ const focusTrapDisabled = el.focusTrap === false || focusTrapAttr === 'false';
586
+ const backdropDisabled = el.showBackdrop === false || showBackdropAttr === 'false';
587
+ return el.tagName !== 'ION-TOAST' && !focusTrapDisabled && !backdropDisabled;
579
588
  });
580
589
  const overlayEl = overlay.el;
581
- const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false;
590
+ const focusTrapAttr = (_a = overlayEl.getAttribute) === null || _a === void 0 ? void 0 : _a.call(overlayEl, 'focus-trap');
591
+ const showBackdropAttr = (_b = overlayEl.getAttribute) === null || _b === void 0 ? void 0 : _b.call(overlayEl, 'show-backdrop');
592
+ const focusTrapDisabled = overlayEl.focusTrap === false || focusTrapAttr === 'false';
593
+ const backdropDisabled = overlayEl.showBackdrop === false || showBackdropAttr === 'false';
594
+ const locksRoot = overlayEl.tagName !== 'ION-TOAST' && !focusTrapDisabled && !backdropDisabled;
582
595
  /**
583
596
  * If this is the last visible overlay that is trapping focus
584
597
  * then we want to re-add the root to the accessibility tree.
@@ -593,7 +606,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
593
606
  // Overlay contents should not be clickable during dismiss
594
607
  overlay.el.style.setProperty('pointer-events', 'none');
595
608
  overlay.willDismiss.emit({ data, role });
596
- (_a = overlay.willDismissShorthand) === null || _a === void 0 ? void 0 : _a.emit({ data, role });
609
+ (_c = overlay.willDismissShorthand) === null || _c === void 0 ? void 0 : _c.emit({ data, role });
597
610
  const mode = getIonMode(overlay);
598
611
  const animationBuilder = overlay.leaveAnimation
599
612
  ? overlay.leaveAnimation
@@ -603,7 +616,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
603
616
  await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
604
617
  }
605
618
  overlay.didDismiss.emit({ data, role });
606
- (_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
619
+ (_d = overlay.didDismissShorthand) === null || _d === void 0 ? void 0 : _d.emit({ data, role });
607
620
  // Get a reference to all animations currently assigned to this overlay
608
621
  // Then tear them down to return the overlay to its initial visual state
609
622
  const animations = activeAnimations.get(overlay) || [];
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2025-10-01T19:05:13",
2
+ "timestamp": "2025-10-02T13:41:23",
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-BYcYBCrx.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-C6lqoZ8M.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-BYcYBCrx.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-C6lqoZ8M.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-BYcYBCrx.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-C6lqoZ8M.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-BYcYBCrx.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-C6lqoZ8M.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-BYcYBCrx.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-C6lqoZ8M.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-BYcYBCrx.js';
6
+ import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './overlays-C6lqoZ8M.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';