@ionic/core 8.3.3-dev.11729273172.1491efca → 8.3.3-dev.11729276019.194c165c

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 (66) hide show
  1. package/components/overlays.js +30 -12
  2. package/dist/cjs/index.cjs.js +1 -1
  3. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  4. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  5. package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
  6. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  7. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  8. package/dist/cjs/ion-modal.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  12. package/dist/cjs/{overlays-09efe8cf.js → overlays-0967e6f7.js} +30 -12
  13. package/dist/collection/utils/overlays.js +30 -12
  14. package/dist/docs.json +1 -1
  15. package/dist/esm/index.js +1 -1
  16. package/dist/esm/ion-action-sheet.entry.js +1 -1
  17. package/dist/esm/ion-alert.entry.js +1 -1
  18. package/dist/esm/ion-datetime_3.entry.js +1 -1
  19. package/dist/esm/ion-loading.entry.js +1 -1
  20. package/dist/esm/ion-menu_3.entry.js +1 -1
  21. package/dist/esm/ion-modal.entry.js +1 -1
  22. package/dist/esm/ion-popover.entry.js +1 -1
  23. package/dist/esm/ion-select_3.entry.js +1 -1
  24. package/dist/esm/ion-toast.entry.js +1 -1
  25. package/dist/esm/{overlays-09e99518.js → overlays-b03e05f3.js} +30 -12
  26. package/dist/esm-es5/index.js +1 -1
  27. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  28. package/dist/esm-es5/ion-alert.entry.js +1 -1
  29. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  30. package/dist/esm-es5/ion-loading.entry.js +1 -1
  31. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  32. package/dist/esm-es5/ion-modal.entry.js +1 -1
  33. package/dist/esm-es5/ion-popover.entry.js +1 -1
  34. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  35. package/dist/esm-es5/ion-toast.entry.js +1 -1
  36. package/dist/esm-es5/overlays-b03e05f3.js +4 -0
  37. package/dist/ionic/index.esm.js +1 -1
  38. package/dist/ionic/ionic.esm.js +1 -1
  39. package/dist/ionic/{p-0f4ccfac.entry.js → p-0850e9e8.entry.js} +1 -1
  40. package/dist/ionic/{p-8308852a.entry.js → p-1661b2a8.entry.js} +1 -1
  41. package/dist/ionic/{p-29aed099.system.entry.js → p-1dd61d52.system.entry.js} +1 -1
  42. package/dist/ionic/p-27831b77.system.js +4 -0
  43. package/dist/ionic/p-322c5fb4.system.js +1 -1
  44. package/dist/ionic/{p-5223e02c.system.entry.js → p-387844ba.system.entry.js} +1 -1
  45. package/dist/ionic/p-3900b510.js +4 -0
  46. package/dist/ionic/{p-405ebc77.system.entry.js → p-4a1e94c5.system.entry.js} +1 -1
  47. package/dist/ionic/{p-de24771e.system.entry.js → p-511d20b7.system.entry.js} +1 -1
  48. package/dist/ionic/{p-dff3bb02.entry.js → p-5b488563.entry.js} +1 -1
  49. package/dist/ionic/{p-a602efff.system.entry.js → p-635751c3.system.entry.js} +1 -1
  50. package/dist/ionic/{p-7a4f349d.entry.js → p-6632f5fe.entry.js} +1 -1
  51. package/dist/ionic/{p-a11d0b0e.system.entry.js → p-7c6dc1d4.system.entry.js} +1 -1
  52. package/dist/ionic/{p-35efc652.entry.js → p-7cb373ca.entry.js} +1 -1
  53. package/dist/ionic/{p-3e87d5e0.entry.js → p-9c2ce2a3.entry.js} +1 -1
  54. package/dist/ionic/{p-71c4ed49.entry.js → p-9dd5e2f7.entry.js} +1 -1
  55. package/dist/ionic/{p-af5df052.system.entry.js → p-acb09788.system.entry.js} +1 -1
  56. package/dist/ionic/{p-e724ca6f.system.entry.js → p-b3b00780.system.entry.js} +1 -1
  57. package/dist/ionic/{p-581f0672.system.js → p-bc76a6c7.system.js} +1 -1
  58. package/dist/ionic/{p-96ab1fd9.entry.js → p-cd10a213.entry.js} +1 -1
  59. package/dist/ionic/{p-74a58898.system.entry.js → p-d0d9e48e.system.entry.js} +1 -1
  60. package/dist/ionic/{p-c62ac566.entry.js → p-f88938a4.entry.js} +1 -1
  61. package/hydrate/index.js +30 -12
  62. package/hydrate/index.mjs +30 -12
  63. package/package.json +1 -1
  64. package/dist/esm-es5/overlays-09e99518.js +0 -4
  65. package/dist/ionic/p-8b324420.system.js +0 -4
  66. package/dist/ionic/p-8cbeee8d.js +0 -4
@@ -503,18 +503,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
503
503
  setRootAriaHidden(true);
504
504
  document.body.classList.add(BACKDROP_NO_SCROLL);
505
505
  hideUnderlyingOverlaysFromScreenReaders(overlay.el);
506
- /**
507
- * Set aria-hidden="true" to hide the overlay from screen readers
508
- * during the animation. This ensures that assistive technologies
509
- * like TalkBack do not announce or interact with the content until
510
- * the animation is complete, avoiding confusion for users.
511
- *
512
- * Additionally, it prevents focus rings from appearing in incorrect
513
- * positions due to the transition (specifically `transform` styles),
514
- * ensuring that when aria-hidden is removed, the focus rings are
515
- * correctly displayed in the final location of the elements.
516
- */
517
- overlay.el.setAttribute('aria-hidden', 'true');
506
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
518
507
  overlay.presented = true;
519
508
  overlay.willPresent.emit();
520
509
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -554,6 +543,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
554
543
  * it would still have aria-hidden on being presented again.
555
544
  * Removing it here ensures the overlay is visible to screen
556
545
  * readers.
546
+ *
547
+ * If this overlay was being presented, then it was hidden
548
+ * from screen readers during the animation. Now that the
549
+ * animation is complete, we can reveal the overlay to
550
+ * screen readers.
557
551
  */
558
552
  overlay.el.removeAttribute('aria-hidden');
559
553
  };
@@ -622,6 +616,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
622
616
  }
623
617
  overlay.presented = false;
624
618
  try {
619
+ /**
620
+ * There is no need to show the overlay to screen readers during
621
+ * the dismiss animation. This is because the overlay will be removed
622
+ * from the DOM after the animation is complete.
623
+ */
624
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
625
625
  // Overlay contents should not be clickable during dismiss
626
626
  overlay.el.style.setProperty('pointer-events', 'none');
627
627
  overlay.willDismiss.emit({ data, role });
@@ -856,6 +856,24 @@ const createTriggerController = () => {
856
856
  removeClickListener,
857
857
  };
858
858
  };
859
+ /**
860
+ * The overlay that is being animated also needs to hide from screen
861
+ * readers during its animation. This ensures that assistive technologies
862
+ * like TalkBack do not announce or interact with the content until the
863
+ * animation is complete, avoiding confusion for users.
864
+ *
865
+ * If the overlay is being presented, it prevents focus rings from appearing
866
+ * in incorrect positions due to the transition (specifically `transform`
867
+ * styles), ensuring that when aria-hidden is removed, the focus rings are
868
+ * correctly displayed in the final location of the elements.
869
+ *
870
+ * @param overlay - The overlay that is being animated.
871
+ */
872
+ const hideAnimatingOverlayFromScreenReaders = (overlay) => {
873
+ if (doc === undefined)
874
+ return;
875
+ overlay.setAttribute('aria-hidden', 'true');
876
+ };
859
877
  /**
860
878
  * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
861
879
  * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
@@ -16,7 +16,7 @@ const helpers = require('./helpers-afaa9001.js');
16
16
  const config = require('./config-4f60b98a.js');
17
17
  const theme = require('./theme-d1c573d2.js');
18
18
  const index$2 = require('./index-9cd00dc3.js');
19
- const overlays = require('./overlays-09efe8cf.js');
19
+ const overlays = require('./overlays-0967e6f7.js');
20
20
  require('./index-c8d52405.js');
21
21
  require('./index-73f75efb.js');
22
22
  require('./index-5915f9b3.js');
@@ -9,7 +9,7 @@ const index = require('./index-73f75efb.js');
9
9
  const buttonActive = require('./button-active-3f2f60b4.js');
10
10
  const helpers = require('./helpers-afaa9001.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
- const overlays = require('./overlays-09efe8cf.js');
12
+ const overlays = require('./overlays-0967e6f7.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
15
15
  const animation = require('./animation-b4fdf128.js');
@@ -10,7 +10,7 @@ const config = require('./config-4f60b98a.js');
10
10
  const buttonActive = require('./button-active-3f2f60b4.js');
11
11
  const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
- const overlays = require('./overlays-09efe8cf.js');
13
+ const overlays = require('./overlays-0967e6f7.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
15
  const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
16
16
  const animation = require('./animation-b4fdf128.js');
@@ -15,7 +15,7 @@ const index$2 = require('./index-073c7cdc.js');
15
15
  const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
16
16
  const data = require('./data-21dc0f81.js');
17
17
  const lockController = require('./lock-controller-6585a42a.js');
18
- const overlays = require('./overlays-09efe8cf.js');
18
+ const overlays = require('./overlays-0967e6f7.js');
19
19
  const animation = require('./animation-b4fdf128.js');
20
20
  const haptic = require('./haptic-f6b37aa3.js');
21
21
  require('./index-c8d52405.js');
@@ -9,7 +9,7 @@ const index = require('./index-73f75efb.js');
9
9
  const config = require('./config-4f60b98a.js');
10
10
  const helpers = require('./helpers-afaa9001.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
- const overlays = require('./overlays-09efe8cf.js');
12
+ const overlays = require('./overlays-0967e6f7.js');
13
13
  const theme = require('./theme-d1c573d2.js');
14
14
  const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
15
15
  const animation = require('./animation-b4fdf128.js');
@@ -7,7 +7,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-73f75efb.js');
9
9
  const cubicBezier = require('./cubic-bezier-f2dccc53.js');
10
- const overlays = require('./overlays-09efe8cf.js');
10
+ const overlays = require('./overlays-0967e6f7.js');
11
11
  const gestureController = require('./gesture-controller-9436f482.js');
12
12
  const hardwareBackButton = require('./hardware-back-button-9e8a2c4f.js');
13
13
  const helpers = require('./helpers-afaa9001.js');
@@ -12,7 +12,7 @@ const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
13
13
  const index$4 = require('./index-5915f9b3.js');
14
14
  const capacitor = require('./capacitor-c04564bf.js');
15
- const overlays = require('./overlays-09efe8cf.js');
15
+ const overlays = require('./overlays-0967e6f7.js');
16
16
  const theme = require('./theme-d1c573d2.js');
17
17
  const index$5 = require('./index-f05acd21.js');
18
18
  const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
@@ -6,7 +6,7 @@
6
6
  Object.defineProperty(exports, '__esModule', { value: true });
7
7
 
8
8
  const index = require('./index-73f75efb.js');
9
- const overlays = require('./overlays-09efe8cf.js');
9
+ const overlays = require('./overlays-0967e6f7.js');
10
10
  const frameworkDelegate = require('./framework-delegate-55f5683a.js');
11
11
  const helpers = require('./helpers-afaa9001.js');
12
12
  const lockController = require('./lock-controller-6585a42a.js');
@@ -9,7 +9,7 @@ const index = require('./index-73f75efb.js');
9
9
  const notchController = require('./notch-controller-d69150f5.js');
10
10
  const compareWithUtils = require('./compare-with-utils-df1001d7.js');
11
11
  const helpers = require('./helpers-afaa9001.js');
12
- const overlays = require('./overlays-09efe8cf.js');
12
+ const overlays = require('./overlays-0967e6f7.js');
13
13
  const dir = require('./dir-94c21456.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
15
  const watchOptions = require('./watch-options-f5f3e158.js');
@@ -10,7 +10,7 @@ const config = require('./config-4f60b98a.js');
10
10
  const helpers = require('./helpers-afaa9001.js');
11
11
  const lockController = require('./lock-controller-6585a42a.js');
12
12
  const index$1 = require('./index-5915f9b3.js');
13
- const overlays = require('./overlays-09efe8cf.js');
13
+ const overlays = require('./overlays-0967e6f7.js');
14
14
  const theme = require('./theme-d1c573d2.js');
15
15
  const ionicGlobal = require('./ionic-global-d9a8bb5b.js');
16
16
  const animation = require('./animation-b4fdf128.js');
@@ -505,18 +505,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
505
505
  setRootAriaHidden(true);
506
506
  document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
507
507
  hideUnderlyingOverlaysFromScreenReaders(overlay.el);
508
- /**
509
- * Set aria-hidden="true" to hide the overlay from screen readers
510
- * during the animation. This ensures that assistive technologies
511
- * like TalkBack do not announce or interact with the content until
512
- * the animation is complete, avoiding confusion for users.
513
- *
514
- * Additionally, it prevents focus rings from appearing in incorrect
515
- * positions due to the transition (specifically `transform` styles),
516
- * ensuring that when aria-hidden is removed, the focus rings are
517
- * correctly displayed in the final location of the elements.
518
- */
519
- overlay.el.setAttribute('aria-hidden', 'true');
508
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
520
509
  overlay.presented = true;
521
510
  overlay.willPresent.emit();
522
511
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -556,6 +545,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
556
545
  * it would still have aria-hidden on being presented again.
557
546
  * Removing it here ensures the overlay is visible to screen
558
547
  * readers.
548
+ *
549
+ * If this overlay was being presented, then it was hidden
550
+ * from screen readers during the animation. Now that the
551
+ * animation is complete, we can reveal the overlay to
552
+ * screen readers.
559
553
  */
560
554
  overlay.el.removeAttribute('aria-hidden');
561
555
  };
@@ -624,6 +618,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
624
618
  }
625
619
  overlay.presented = false;
626
620
  try {
621
+ /**
622
+ * There is no need to show the overlay to screen readers during
623
+ * the dismiss animation. This is because the overlay will be removed
624
+ * from the DOM after the animation is complete.
625
+ */
626
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
627
627
  // Overlay contents should not be clickable during dismiss
628
628
  overlay.el.style.setProperty('pointer-events', 'none');
629
629
  overlay.willDismiss.emit({ data, role });
@@ -858,6 +858,24 @@ const createTriggerController = () => {
858
858
  removeClickListener,
859
859
  };
860
860
  };
861
+ /**
862
+ * The overlay that is being animated also needs to hide from screen
863
+ * readers during its animation. This ensures that assistive technologies
864
+ * like TalkBack do not announce or interact with the content until the
865
+ * animation is complete, avoiding confusion for users.
866
+ *
867
+ * If the overlay is being presented, it prevents focus rings from appearing
868
+ * in incorrect positions due to the transition (specifically `transform`
869
+ * styles), ensuring that when aria-hidden is removed, the focus rings are
870
+ * correctly displayed in the final location of the elements.
871
+ *
872
+ * @param overlay - The overlay that is being animated.
873
+ */
874
+ const hideAnimatingOverlayFromScreenReaders = (overlay) => {
875
+ if (index.doc === undefined)
876
+ return;
877
+ overlay.setAttribute('aria-hidden', 'true');
878
+ };
861
879
  /**
862
880
  * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
863
881
  * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
@@ -430,18 +430,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
430
430
  setRootAriaHidden(true);
431
431
  document.body.classList.add(BACKDROP_NO_SCROLL);
432
432
  hideUnderlyingOverlaysFromScreenReaders(overlay.el);
433
- /**
434
- * Set aria-hidden="true" to hide the overlay from screen readers
435
- * during the animation. This ensures that assistive technologies
436
- * like TalkBack do not announce or interact with the content until
437
- * the animation is complete, avoiding confusion for users.
438
- *
439
- * Additionally, it prevents focus rings from appearing in incorrect
440
- * positions due to the transition (specifically `transform` styles),
441
- * ensuring that when aria-hidden is removed, the focus rings are
442
- * correctly displayed in the final location of the elements.
443
- */
444
- overlay.el.setAttribute('aria-hidden', 'true');
433
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
445
434
  overlay.presented = true;
446
435
  overlay.willPresent.emit();
447
436
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -481,6 +470,11 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
481
470
  * it would still have aria-hidden on being presented again.
482
471
  * Removing it here ensures the overlay is visible to screen
483
472
  * readers.
473
+ *
474
+ * If this overlay was being presented, then it was hidden
475
+ * from screen readers during the animation. Now that the
476
+ * animation is complete, we can reveal the overlay to
477
+ * screen readers.
484
478
  */
485
479
  overlay.el.removeAttribute('aria-hidden');
486
480
  };
@@ -549,6 +543,12 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
549
543
  }
550
544
  overlay.presented = false;
551
545
  try {
546
+ /**
547
+ * There is no need to show the overlay to screen readers during
548
+ * the dismiss animation. This is because the overlay will be removed
549
+ * from the DOM after the animation is complete.
550
+ */
551
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
552
552
  // Overlay contents should not be clickable during dismiss
553
553
  overlay.el.style.setProperty('pointer-events', 'none');
554
554
  overlay.willDismiss.emit({ data, role });
@@ -783,6 +783,24 @@ export const createTriggerController = () => {
783
783
  removeClickListener,
784
784
  };
785
785
  };
786
+ /**
787
+ * The overlay that is being animated also needs to hide from screen
788
+ * readers during its animation. This ensures that assistive technologies
789
+ * like TalkBack do not announce or interact with the content until the
790
+ * animation is complete, avoiding confusion for users.
791
+ *
792
+ * If the overlay is being presented, it prevents focus rings from appearing
793
+ * in incorrect positions due to the transition (specifically `transform`
794
+ * styles), ensuring that when aria-hidden is removed, the focus rings are
795
+ * correctly displayed in the final location of the elements.
796
+ *
797
+ * @param overlay - The overlay that is being animated.
798
+ */
799
+ const hideAnimatingOverlayFromScreenReaders = (overlay) => {
800
+ if (doc === undefined)
801
+ return;
802
+ overlay.setAttribute('aria-hidden', 'true');
803
+ };
786
804
  /**
787
805
  * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
788
806
  * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2024-10-18T17:41:40",
2
+ "timestamp": "2024-10-18T18:29:05",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.20.0",
package/dist/esm/index.js CHANGED
@@ -12,7 +12,7 @@ export { c as componentOnReady } from './helpers-da915de8.js';
12
12
  export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-49c88215.js';
13
13
  export { o as openURL } from './theme-01f3f29c.js';
14
14
  export { m as menuController } from './index-fe1782b1.js';
15
- export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-09e99518.js';
15
+ export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-b03e05f3.js';
16
16
  import './index-a5d50daf.js';
17
17
  import './index-28849c61.js';
18
18
  import './index-9b0d46f4.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, e as readTask, h, f as Host, i
5
5
  import { c as createButtonActiveGesture } from './button-active-f6503382.js';
6
6
  import { r as raf } from './helpers-da915de8.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.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-09e99518.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-b03e05f3.js';
9
9
  import { g as getClassMap } from './theme-01f3f29c.js';
10
10
  import { b as getIonMode } from './ionic-global-c81d82ab.js';
11
11
  import { c as createAnimation } from './animation-eab5a4ca.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-f6503382.js';
7
7
  import { r as raf } from './helpers-da915de8.js';
8
8
  import { c as createLockController } from './lock-controller-316928be.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-09e99518.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-b03e05f3.js';
10
10
  import { g as getClassMap } from './theme-01f3f29c.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-c81d82ab.js';
12
12
  import { c as createAnimation } from './animation-eab5a4ca.js';
@@ -11,7 +11,7 @@ import { c as chevronBack, o as chevronForward, l as chevronDown, p as caretUpSh
11
11
  import { b as getIonMode } from './ionic-global-c81d82ab.js';
12
12
  import { g as generateDayAriaLabel, a as getDay, i as isBefore, b as isAfter, c as isSameDay, d as getPreviousMonth, e as getNextMonth, v as validateParts, f as getPartsFromCalendarDay, h as getNextYear, j as getPreviousYear, k as getEndOfWeek, l as getStartOfWeek, m as getPreviousDay, n as getNextDay, o as getPreviousWeek, p as getNextWeek, q as parseMinParts, r as parseMaxParts, s as parseDate, w as warnIfValueOutOfBounds, t as convertToArrayOfNumbers, u as convertDataToISO, x as getToday, y as getClosestValidDate, z as generateMonths, A as getNumDaysInMonth, B as getCombinedDateColumnData, C as getMonthColumnData, D as getDayColumnData, E as getYearColumnData, F as isMonthFirstLocale, G as getTimeColumnsData, H as isLocaleDayPeriodRTL, I as getDaysOfWeek, J as getMonthAndYear, K as getDaysOfMonth, L as getHourCycle, M as getLocalizedTime, N as getLocalizedDateTime, O as formatValue, P as clampDate, Q as parseAmPm, R as calculateHourFromAMPM } from './data-ae11fd43.js';
13
13
  import { c as createLockController } from './lock-controller-316928be.js';
14
- 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-09e99518.js';
14
+ 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-b03e05f3.js';
15
15
  import { c as createAnimation } from './animation-eab5a4ca.js';
16
16
  import { b as hapticSelectionChanged, h as hapticSelectionEnd, a as hapticSelectionStart } from './haptic-ac164e4c.js';
17
17
  import './index-a5d50daf.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, h, f as Host, i as getElement
5
5
  import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-49c88215.js';
6
6
  import { r as raf } from './helpers-da915de8.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.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-09e99518.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-b03e05f3.js';
9
9
  import { g as getClassMap } from './theme-01f3f29c.js';
10
10
  import { c as config, b as getIonMode } from './ionic-global-c81d82ab.js';
11
11
  import { c as createAnimation } from './animation-eab5a4ca.js';
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { r as registerInstance, d as createEvent, h, f as Host, i as getElement } from './index-28849c61.js';
5
5
  import { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
6
- import { o as getPresentedOverlay, n as focusFirstDescendant, q as focusLastDescendant } from './overlays-09e99518.js';
6
+ import { o as getPresentedOverlay, n as focusFirstDescendant, q as focusLastDescendant } from './overlays-b03e05f3.js';
7
7
  import { G as GESTURE_CONTROLLER } from './gesture-controller-314a54f6.js';
8
8
  import { shouldUseCloseWatcher } from './hardware-back-button-06ef3c3e.js';
9
9
  import { n as isEndSide, i as inheritAriaAttributes, m as assert, j as clamp } from './helpers-da915de8.js';
@@ -8,7 +8,7 @@ import { g as getElementRoot, j as clamp, r as raf, h as inheritAttributes, k as
8
8
  import { c as createLockController } from './lock-controller-316928be.js';
9
9
  import { p as printIonWarning } from './index-9b0d46f4.js';
10
10
  import { g as getCapacitor } from './capacitor-59395cbd.js';
11
- 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-09e99518.js';
11
+ 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-b03e05f3.js';
12
12
  import { g as getClassMap } from './theme-01f3f29c.js';
13
13
  import { e as deepReady, w as waitForMount } from './index-3ad7f18b.js';
14
14
  import { b as getIonMode, c as config } from './ionic-global-c81d82ab.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, h, f as Host, i as getElement } from './index-28849c61.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-09e99518.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-b03e05f3.js';
6
6
  import { C as CoreDelegate, a as attachComponent, d as detachComponent } from './framework-delegate-63d1a679.js';
7
7
  import { r as raf, g as getElementRoot, a as addEventListener, k as hasLazyBuild } from './helpers-da915de8.js';
8
8
  import { c as createLockController } from './lock-controller-316928be.js';
@@ -5,7 +5,7 @@ import { r as registerInstance, d as createEvent, h, f as Host, i as getElement,
5
5
  import { c as createNotchController } from './notch-controller-55b09e11.js';
6
6
  import { i as isOptionSelected, c as compareOptions } from './compare-with-utils-a96ff2ea.js';
7
7
  import { h as inheritAttributes, f as focusVisibleElement, d as renderHiddenInput } from './helpers-da915de8.js';
8
- import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-09e99518.js';
8
+ import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-b03e05f3.js';
9
9
  import { i as isRTL } from './dir-babeabeb.js';
10
10
  import { h as hostContext, c as createColorClasses, g as getClassMap } from './theme-01f3f29c.js';
11
11
  import { w as watchForOptions } from './watch-options-c2911ace.js';
@@ -6,7 +6,7 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
6
6
  import { g as getElementRoot, r as raf } from './helpers-da915de8.js';
7
7
  import { c as createLockController } from './lock-controller-316928be.js';
8
8
  import { p as printIonWarning } from './index-9b0d46f4.js';
9
- 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-09e99518.js';
9
+ 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-b03e05f3.js';
10
10
  import { c as createColorClasses, g as getClassMap } from './theme-01f3f29c.js';
11
11
  import { c as config, b as getIonMode } from './ionic-global-c81d82ab.js';
12
12
  import { c as createAnimation } from './animation-eab5a4ca.js';
@@ -503,18 +503,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
503
503
  setRootAriaHidden(true);
504
504
  document.body.classList.add(BACKDROP_NO_SCROLL);
505
505
  hideUnderlyingOverlaysFromScreenReaders(overlay.el);
506
- /**
507
- * Set aria-hidden="true" to hide the overlay from screen readers
508
- * during the animation. This ensures that assistive technologies
509
- * like TalkBack do not announce or interact with the content until
510
- * the animation is complete, avoiding confusion for users.
511
- *
512
- * Additionally, it prevents focus rings from appearing in incorrect
513
- * positions due to the transition (specifically `transform` styles),
514
- * ensuring that when aria-hidden is removed, the focus rings are
515
- * correctly displayed in the final location of the elements.
516
- */
517
- overlay.el.setAttribute('aria-hidden', 'true');
506
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
518
507
  overlay.presented = true;
519
508
  overlay.willPresent.emit();
520
509
  (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
@@ -554,6 +543,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
554
543
  * it would still have aria-hidden on being presented again.
555
544
  * Removing it here ensures the overlay is visible to screen
556
545
  * readers.
546
+ *
547
+ * If this overlay was being presented, then it was hidden
548
+ * from screen readers during the animation. Now that the
549
+ * animation is complete, we can reveal the overlay to
550
+ * screen readers.
557
551
  */
558
552
  overlay.el.removeAttribute('aria-hidden');
559
553
  };
@@ -622,6 +616,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
622
616
  }
623
617
  overlay.presented = false;
624
618
  try {
619
+ /**
620
+ * There is no need to show the overlay to screen readers during
621
+ * the dismiss animation. This is because the overlay will be removed
622
+ * from the DOM after the animation is complete.
623
+ */
624
+ hideAnimatingOverlayFromScreenReaders(overlay.el);
625
625
  // Overlay contents should not be clickable during dismiss
626
626
  overlay.el.style.setProperty('pointer-events', 'none');
627
627
  overlay.willDismiss.emit({ data, role });
@@ -856,6 +856,24 @@ const createTriggerController = () => {
856
856
  removeClickListener,
857
857
  };
858
858
  };
859
+ /**
860
+ * The overlay that is being animated also needs to hide from screen
861
+ * readers during its animation. This ensures that assistive technologies
862
+ * like TalkBack do not announce or interact with the content until the
863
+ * animation is complete, avoiding confusion for users.
864
+ *
865
+ * If the overlay is being presented, it prevents focus rings from appearing
866
+ * in incorrect positions due to the transition (specifically `transform`
867
+ * styles), ensuring that when aria-hidden is removed, the focus rings are
868
+ * correctly displayed in the final location of the elements.
869
+ *
870
+ * @param overlay - The overlay that is being animated.
871
+ */
872
+ const hideAnimatingOverlayFromScreenReaders = (overlay) => {
873
+ if (doc === undefined)
874
+ return;
875
+ overlay.setAttribute('aria-hidden', 'true');
876
+ };
859
877
  /**
860
878
  * Ensure that underlying overlays have aria-hidden if necessary so that screen readers
861
879
  * cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- export{c as createAnimation}from"./animation-eab5a4ca.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"./index-3ad7f18b.js";export{iosTransitionAnimation}from"./ios.transition-4ee1a3af.js";export{mdTransitionAnimation}from"./md.transition-5106a0d2.js";export{g as getTimeGivenProgression}from"./cubic-bezier-fe2083dc.js";export{createGesture}from"./index-39782642.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./ionic-global-c81d82ab.js";export{c as componentOnReady}from"./helpers-da915de8.js";export{I as IonicSafeString,g as getMode,s as setupConfig}from"./config-49c88215.js";export{o as openURL}from"./theme-01f3f29c.js";export{m as menuController}from"./index-fe1782b1.js";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as pickerController,c as popoverController,t as toastController}from"./overlays-09e99518.js";import"./index-a5d50daf.js";import"./index-28849c61.js";import"./index-9b0d46f4.js";import"./gesture-controller-314a54f6.js";import"./hardware-back-button-06ef3c3e.js";import"./framework-delegate-63d1a679.js";var IonicSlides=function(e){var o=e.swiper,t=e.extendParams;var s={effect:undefined,direction:"horizontal",initialSlide:0,loop:false,parallax:false,slidesPerView:1,spaceBetween:0,speed:300,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:false,slidesOffsetBefore:0,slidesOffsetAfter:0,touchEventsTarget:"container",freeMode:false,freeModeMomentum:true,freeModeMomentumRatio:1,freeModeMomentumBounce:true,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:false,freeModeMinimumVelocity:.02,autoHeight:false,setWrapperSize:false,zoom:{maxRatio:3,minRatio:1,toggle:false},touchRatio:1,touchAngle:45,simulateTouch:true,touchStartPreventDefault:false,shortSwipes:true,longSwipes:true,longSwipesRatio:.5,longSwipesMs:300,followFinger:true,threshold:0,touchMoveStopPropagation:true,touchReleaseOnEdges:false,iOSEdgeSwipeDetection:false,iOSEdgeSwipeThreshold:20,resistance:true,resistanceRatio:.85,watchSlidesProgress:false,watchSlidesVisibility:false,preventClicks:true,preventClicksPropagation:true,slideToClickedSlide:false,loopAdditionalSlides:0,noSwiping:true,runCallbacksOnInit:true,coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:true},flipEffect:{slideShadows:true,limitRotation:true},cubeEffect:{slideShadows:true,shadow:true,shadowOffset:20,shadowScale:.94},fadeEffect:{crossFade:false},a11y:{prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide"}};if(o.pagination){s.pagination={type:"bullets",clickable:false,hideOnClick:false}}if(o.scrollbar){s.scrollbar={hide:true}}t(s)};export{IonicSlides};
4
+ export{c as createAnimation}from"./animation-eab5a4ca.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"./index-3ad7f18b.js";export{iosTransitionAnimation}from"./ios.transition-4ee1a3af.js";export{mdTransitionAnimation}from"./md.transition-5106a0d2.js";export{g as getTimeGivenProgression}from"./cubic-bezier-fe2083dc.js";export{createGesture}from"./index-39782642.js";export{g as getPlatforms,i as initialize,a as isPlatform}from"./ionic-global-c81d82ab.js";export{c as componentOnReady}from"./helpers-da915de8.js";export{I as IonicSafeString,g as getMode,s as setupConfig}from"./config-49c88215.js";export{o as openURL}from"./theme-01f3f29c.js";export{m as menuController}from"./index-fe1782b1.js";export{b as actionSheetController,a as alertController,l as loadingController,m as modalController,p as pickerController,c as popoverController,t as toastController}from"./overlays-b03e05f3.js";import"./index-a5d50daf.js";import"./index-28849c61.js";import"./index-9b0d46f4.js";import"./gesture-controller-314a54f6.js";import"./hardware-back-button-06ef3c3e.js";import"./framework-delegate-63d1a679.js";var IonicSlides=function(e){var o=e.swiper,t=e.extendParams;var s={effect:undefined,direction:"horizontal",initialSlide:0,loop:false,parallax:false,slidesPerView:1,spaceBetween:0,speed:300,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,centeredSlides:false,slidesOffsetBefore:0,slidesOffsetAfter:0,touchEventsTarget:"container",freeMode:false,freeModeMomentum:true,freeModeMomentumRatio:1,freeModeMomentumBounce:true,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:false,freeModeMinimumVelocity:.02,autoHeight:false,setWrapperSize:false,zoom:{maxRatio:3,minRatio:1,toggle:false},touchRatio:1,touchAngle:45,simulateTouch:true,touchStartPreventDefault:false,shortSwipes:true,longSwipes:true,longSwipesRatio:.5,longSwipesMs:300,followFinger:true,threshold:0,touchMoveStopPropagation:true,touchReleaseOnEdges:false,iOSEdgeSwipeDetection:false,iOSEdgeSwipeThreshold:20,resistance:true,resistanceRatio:.85,watchSlidesProgress:false,watchSlidesVisibility:false,preventClicks:true,preventClicksPropagation:true,slideToClickedSlide:false,loopAdditionalSlides:0,noSwiping:true,runCallbacksOnInit:true,coverflowEffect:{rotate:50,stretch:0,depth:100,modifier:1,slideShadows:true},flipEffect:{slideShadows:true,limitRotation:true},cubeEffect:{slideShadows:true,shadow:true,shadowOffset:20,shadowScale:.94},fadeEffect:{crossFade:false},a11y:{prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide"}};if(o.pagination){s.pagination={type:"bullets",clickable:false,hideOnClick:false}}if(o.scrollbar){s.scrollbar={hide:true}}t(s)};export{IonicSlides};