@ionic/core 8.3.4-nightly.20241024 → 8.3.4-nightly.20241025
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/overlays.js +36 -2
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
- package/dist/cjs/ion-alert.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/{overlays-0123d7d4.js → overlays-99f0578e.js} +36 -2
- package/dist/collection/utils/overlays.js +36 -2
- package/dist/docs.json +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +1 -1
- package/dist/esm/ion-alert.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +1 -1
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/{overlays-9c75ec54.js → overlays-d597fdaf.js} +36 -2
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/overlays-d597fdaf.js +4 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-a4d51b8d.system.js → p-038ea840.system.js} +1 -1
- package/dist/ionic/{p-ecb57d24.system.entry.js → p-09b2a941.system.entry.js} +1 -1
- package/dist/ionic/{p-22c020db.system.entry.js → p-17c10d59.system.entry.js} +1 -1
- package/dist/ionic/{p-f50ae0d5.system.entry.js → p-27c6b6b7.system.entry.js} +1 -1
- package/dist/ionic/{p-2b7c93b4.entry.js → p-2e7be929.entry.js} +1 -1
- package/dist/ionic/p-322c5fb4.system.js +1 -1
- package/dist/ionic/{p-b0568945.system.entry.js → p-3f2d6260.system.entry.js} +1 -1
- package/dist/ionic/{p-9c23044d.entry.js → p-41bce8cd.entry.js} +1 -1
- package/dist/ionic/{p-a72fb8a1.system.entry.js → p-49c0907c.system.entry.js} +1 -1
- package/dist/ionic/p-61c3ffe5.system.js +4 -0
- package/dist/ionic/p-7d1ef246.js +4 -0
- package/dist/ionic/{p-100b83fd.system.entry.js → p-c7283303.system.entry.js} +1 -1
- package/dist/ionic/{p-8ed31163.system.entry.js → p-cdbced33.system.entry.js} +1 -1
- package/dist/ionic/{p-a41699db.entry.js → p-d2637ca0.entry.js} +1 -1
- package/dist/ionic/{p-cff5585e.system.entry.js → p-d4995eda.system.entry.js} +1 -1
- package/dist/ionic/{p-9cc3bcc5.system.entry.js → p-df4085d5.system.entry.js} +1 -1
- package/dist/ionic/{p-7c50965e.entry.js → p-dfac744b.entry.js} +1 -1
- package/dist/ionic/{p-d77e12ca.entry.js → p-e2dca49f.entry.js} +1 -1
- package/dist/ionic/{p-0fa0c92b.entry.js → p-ecadbe91.entry.js} +1 -1
- package/dist/ionic/{p-5e66bcf2.entry.js → p-efce3337.entry.js} +1 -1
- package/dist/ionic/{p-9fef1364.entry.js → p-f01b6d5d.entry.js} +1 -1
- package/dist/ionic/{p-b4c950f8.entry.js → p-fcf0c818.entry.js} +1 -1
- package/hydrate/index.js +36 -2
- package/hydrate/index.mjs +36 -2
- package/package.json +1 -1
- package/dist/esm-es5/overlays-9c75ec54.js +0 -4
- package/dist/ionic/p-98871496.system.js +0 -4
- package/dist/ionic/p-a440397c.js +0 -4
package/components/overlays.js
CHANGED
|
@@ -502,7 +502,8 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
502
502
|
}
|
|
503
503
|
setRootAriaHidden(true);
|
|
504
504
|
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
505
|
-
|
|
505
|
+
hideUnderlyingOverlaysFromScreenReaders(overlay.el);
|
|
506
|
+
hideAnimatingOverlayFromScreenReaders(overlay.el);
|
|
506
507
|
overlay.presented = true;
|
|
507
508
|
overlay.willPresent.emit();
|
|
508
509
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -542,6 +543,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
542
543
|
* it would still have aria-hidden on being presented again.
|
|
543
544
|
* Removing it here ensures the overlay is visible to screen
|
|
544
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.
|
|
545
551
|
*/
|
|
546
552
|
overlay.el.removeAttribute('aria-hidden');
|
|
547
553
|
};
|
|
@@ -610,6 +616,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
610
616
|
}
|
|
611
617
|
overlay.presented = false;
|
|
612
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);
|
|
613
625
|
// Overlay contents should not be clickable during dismiss
|
|
614
626
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
615
627
|
overlay.willDismiss.emit({ data, role });
|
|
@@ -844,6 +856,28 @@ const createTriggerController = () => {
|
|
|
844
856
|
removeClickListener,
|
|
845
857
|
};
|
|
846
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
|
+
/**
|
|
876
|
+
* Once the animation is complete, this attribute will be removed.
|
|
877
|
+
* This is done at the end of the `present` method.
|
|
878
|
+
*/
|
|
879
|
+
overlay.setAttribute('aria-hidden', 'true');
|
|
880
|
+
};
|
|
847
881
|
/**
|
|
848
882
|
* Ensure that underlying overlays have aria-hidden if necessary so that screen readers
|
|
849
883
|
* cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
|
|
@@ -854,7 +888,7 @@ const createTriggerController = () => {
|
|
|
854
888
|
* @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
|
|
855
889
|
* fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
|
|
856
890
|
*/
|
|
857
|
-
const
|
|
891
|
+
const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
|
|
858
892
|
var _a;
|
|
859
893
|
if (doc === undefined)
|
|
860
894
|
return;
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -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-
|
|
19
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
12
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
13
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
18
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
12
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
10
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
15
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
9
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
12
|
+
const overlays = require('./overlays-99f0578e.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-
|
|
13
|
+
const overlays = require('./overlays-99f0578e.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');
|
|
@@ -504,7 +504,8 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
504
504
|
}
|
|
505
505
|
setRootAriaHidden(true);
|
|
506
506
|
document.body.classList.add(gestureController.BACKDROP_NO_SCROLL);
|
|
507
|
-
|
|
507
|
+
hideUnderlyingOverlaysFromScreenReaders(overlay.el);
|
|
508
|
+
hideAnimatingOverlayFromScreenReaders(overlay.el);
|
|
508
509
|
overlay.presented = true;
|
|
509
510
|
overlay.willPresent.emit();
|
|
510
511
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -544,6 +545,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
544
545
|
* it would still have aria-hidden on being presented again.
|
|
545
546
|
* Removing it here ensures the overlay is visible to screen
|
|
546
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.
|
|
547
553
|
*/
|
|
548
554
|
overlay.el.removeAttribute('aria-hidden');
|
|
549
555
|
};
|
|
@@ -612,6 +618,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
612
618
|
}
|
|
613
619
|
overlay.presented = false;
|
|
614
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);
|
|
615
627
|
// Overlay contents should not be clickable during dismiss
|
|
616
628
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
617
629
|
overlay.willDismiss.emit({ data, role });
|
|
@@ -846,6 +858,28 @@ const createTriggerController = () => {
|
|
|
846
858
|
removeClickListener,
|
|
847
859
|
};
|
|
848
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
|
+
/**
|
|
878
|
+
* Once the animation is complete, this attribute will be removed.
|
|
879
|
+
* This is done at the end of the `present` method.
|
|
880
|
+
*/
|
|
881
|
+
overlay.setAttribute('aria-hidden', 'true');
|
|
882
|
+
};
|
|
849
883
|
/**
|
|
850
884
|
* Ensure that underlying overlays have aria-hidden if necessary so that screen readers
|
|
851
885
|
* cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
|
|
@@ -856,7 +890,7 @@ const createTriggerController = () => {
|
|
|
856
890
|
* @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
|
|
857
891
|
* fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
|
|
858
892
|
*/
|
|
859
|
-
const
|
|
893
|
+
const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
|
|
860
894
|
var _a;
|
|
861
895
|
if (index.doc === undefined)
|
|
862
896
|
return;
|
|
@@ -429,7 +429,8 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
429
429
|
}
|
|
430
430
|
setRootAriaHidden(true);
|
|
431
431
|
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
432
|
-
|
|
432
|
+
hideUnderlyingOverlaysFromScreenReaders(overlay.el);
|
|
433
|
+
hideAnimatingOverlayFromScreenReaders(overlay.el);
|
|
433
434
|
overlay.presented = true;
|
|
434
435
|
overlay.willPresent.emit();
|
|
435
436
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -469,6 +470,11 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
469
470
|
* it would still have aria-hidden on being presented again.
|
|
470
471
|
* Removing it here ensures the overlay is visible to screen
|
|
471
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.
|
|
472
478
|
*/
|
|
473
479
|
overlay.el.removeAttribute('aria-hidden');
|
|
474
480
|
};
|
|
@@ -537,6 +543,12 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
537
543
|
}
|
|
538
544
|
overlay.presented = false;
|
|
539
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);
|
|
540
552
|
// Overlay contents should not be clickable during dismiss
|
|
541
553
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
542
554
|
overlay.willDismiss.emit({ data, role });
|
|
@@ -771,6 +783,28 @@ export const createTriggerController = () => {
|
|
|
771
783
|
removeClickListener,
|
|
772
784
|
};
|
|
773
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
|
+
/**
|
|
803
|
+
* Once the animation is complete, this attribute will be removed.
|
|
804
|
+
* This is done at the end of the `present` method.
|
|
805
|
+
*/
|
|
806
|
+
overlay.setAttribute('aria-hidden', 'true');
|
|
807
|
+
};
|
|
774
808
|
/**
|
|
775
809
|
* Ensure that underlying overlays have aria-hidden if necessary so that screen readers
|
|
776
810
|
* cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
|
|
@@ -781,7 +815,7 @@ export const createTriggerController = () => {
|
|
|
781
815
|
* @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
|
|
782
816
|
* fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
|
|
783
817
|
*/
|
|
784
|
-
const
|
|
818
|
+
const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
|
|
785
819
|
var _a;
|
|
786
820
|
if (doc === undefined)
|
|
787
821
|
return;
|
package/dist/docs.json
CHANGED
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-
|
|
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-d597fdaf.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-
|
|
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-d597fdaf.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-
|
|
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-d597fdaf.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-
|
|
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-d597fdaf.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-
|
|
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-d597fdaf.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-
|
|
6
|
+
import { o as getPresentedOverlay, n as focusFirstDescendant, q as focusLastDescendant } from './overlays-d597fdaf.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-
|
|
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-d597fdaf.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-
|
|
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-d597fdaf.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-
|
|
8
|
+
import { c as popoverController, b as actionSheetController, a as alertController, s as safeCall } from './overlays-d597fdaf.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-
|
|
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-d597fdaf.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';
|
|
@@ -502,7 +502,8 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
502
502
|
}
|
|
503
503
|
setRootAriaHidden(true);
|
|
504
504
|
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
505
|
-
|
|
505
|
+
hideUnderlyingOverlaysFromScreenReaders(overlay.el);
|
|
506
|
+
hideAnimatingOverlayFromScreenReaders(overlay.el);
|
|
506
507
|
overlay.presented = true;
|
|
507
508
|
overlay.willPresent.emit();
|
|
508
509
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -542,6 +543,11 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
|
|
|
542
543
|
* it would still have aria-hidden on being presented again.
|
|
543
544
|
* Removing it here ensures the overlay is visible to screen
|
|
544
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.
|
|
545
551
|
*/
|
|
546
552
|
overlay.el.removeAttribute('aria-hidden');
|
|
547
553
|
};
|
|
@@ -610,6 +616,12 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
|
|
|
610
616
|
}
|
|
611
617
|
overlay.presented = false;
|
|
612
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);
|
|
613
625
|
// Overlay contents should not be clickable during dismiss
|
|
614
626
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
615
627
|
overlay.willDismiss.emit({ data, role });
|
|
@@ -844,6 +856,28 @@ const createTriggerController = () => {
|
|
|
844
856
|
removeClickListener,
|
|
845
857
|
};
|
|
846
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
|
+
/**
|
|
876
|
+
* Once the animation is complete, this attribute will be removed.
|
|
877
|
+
* This is done at the end of the `present` method.
|
|
878
|
+
*/
|
|
879
|
+
overlay.setAttribute('aria-hidden', 'true');
|
|
880
|
+
};
|
|
847
881
|
/**
|
|
848
882
|
* Ensure that underlying overlays have aria-hidden if necessary so that screen readers
|
|
849
883
|
* cannot move focus to these elements. Note that we cannot rely on focus/focusin/focusout
|
|
@@ -854,7 +888,7 @@ const createTriggerController = () => {
|
|
|
854
888
|
* @param newTopMostOverlay - The overlay that is being presented. Since the overlay has not been
|
|
855
889
|
* fully presented yet at the time this function is called it will not be included in the getPresentedOverlays result.
|
|
856
890
|
*/
|
|
857
|
-
const
|
|
891
|
+
const hideUnderlyingOverlaysFromScreenReaders = (newTopMostOverlay) => {
|
|
858
892
|
var _a;
|
|
859
893
|
if (doc === undefined)
|
|
860
894
|
return;
|
package/dist/esm-es5/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
export{c as createAnimation}from"./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-
|
|
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-d597fdaf.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};
|