voyager-ionic-core 7.7.0 → 7.7.3
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/action-sheet.js +8 -4
- package/components/alert.js +6 -2
- package/components/helpers.js +2 -2
- package/components/ion-loading.js +6 -2
- package/components/ion-modal.js +8 -6
- package/components/ion-picker.js +6 -2
- package/components/ion-select.js +3 -3
- package/components/ion-toast.js +6 -2
- package/components/item.js +3 -12
- package/components/label.js +2 -2
- package/components/overlays.js +120 -29
- package/components/popover.js +7 -3
- package/components/select-popover.js +2 -2
- package/dist/cjs/{animation-fdab9de5.js → animation-c2840aea.js} +1 -1
- package/dist/cjs/{app-globals-5a17c5e1.js → app-globals-92ad1b3d.js} +1 -1
- package/dist/cjs/{button-active-b8c3f603.js → button-active-2d6520ec.js} +1 -1
- package/dist/cjs/{form-controller-7b90d7b7.js → form-controller-c83330c0.js} +1 -1
- package/dist/cjs/{framework-delegate-a3e6d060.js → framework-delegate-e0e13baa.js} +1 -1
- package/dist/cjs/{hardware-back-button-d23873bb.js → hardware-back-button-2696acaf.js} +2 -2
- package/dist/cjs/{helpers-2e1028fa.js → helpers-da4c0ed1.js} +2 -2
- package/dist/cjs/{index-5a471146.js → index-0ffe376d.js} +25 -22
- package/dist/cjs/{index-8c679cbf.js → index-4c96691f.js} +4 -4
- package/dist/cjs/{index-10da82ce.js → index-62290fec.js} +1 -1
- package/dist/cjs/{index-84351d21.js → index-9bfcb6e8.js} +4 -4
- package/dist/cjs/{index-53d162b2.js → index-bef98850.js} +1 -1
- package/dist/cjs/index.cjs.js +11 -11
- package/dist/cjs/{input-shims-6f804705.js → input-shims-a9a85bb9.js} +2 -2
- package/dist/cjs/{input.utils-d693d18a.js → input.utils-d7dca90f.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +16 -12
- package/dist/cjs/ion-alert.cjs.entry.js +14 -10
- package/dist/cjs/ion-app_8.cjs.entry.js +12 -12
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
- package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
- package/dist/cjs/ion-chip.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -3
- package/dist/cjs/ion-datetime_3.cjs.entry.js +13 -9
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +3 -3
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-input.cjs.entry.js +6 -6
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +7 -7
- package/dist/cjs/ion-loading.cjs.entry.js +13 -9
- package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-modal.cjs.entry.js +16 -14
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-internal.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-internal.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +15 -11
- package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-range.cjs.entry.js +5 -5
- package/dist/cjs/ion-refresher_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +3 -3
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-select_3.cjs.entry.js +12 -12
- package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +6 -6
- package/dist/cjs/ion-toast.cjs.entry.js +13 -9
- package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
- package/dist/cjs/{ionic-global-7358c23e.js → ionic-global-59a10130.js} +1 -1
- package/dist/cjs/ionic.cjs.js +6 -6
- package/dist/cjs/{ios.transition-8e40c54e.js → ios.transition-96679580.js} +4 -4
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/{md.transition-597a2479.js → md.transition-d6c98822.js} +4 -4
- package/dist/cjs/{notch-controller-db0127c4.js → notch-controller-bfbcbb7a.js} +1 -1
- package/dist/cjs/{overlays-eaf2075f.js → overlays-db5d96f3.js} +122 -32
- package/dist/cjs/{status-tap-b0bfea34.js → status-tap-7ad5f0fb.js} +3 -3
- package/dist/cjs/{swipe-back-7a848bb8.js → swipe-back-dcd0d4a9.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/action-sheet/action-sheet.ios.css +13 -1
- package/dist/collection/components/action-sheet/action-sheet.js +9 -5
- package/dist/collection/components/alert/alert.js +8 -4
- package/dist/collection/components/item/item.js +3 -12
- package/dist/collection/components/label/label.ios.css +0 -4
- package/dist/collection/components/label/label.md.css +0 -4
- package/dist/collection/components/label/test/item/item.e2e.js +24 -0
- package/dist/collection/components/loading/loading.js +8 -4
- package/dist/collection/components/modal/modal.js +10 -8
- package/dist/collection/components/modal/test/animations/modal.e2e.js +36 -0
- package/dist/collection/components/picker/picker.js +8 -4
- package/dist/collection/components/popover/popover.ios.css +7 -0
- package/dist/collection/components/popover/popover.js +8 -4
- package/dist/collection/components/select/select.js +3 -3
- package/dist/collection/components/select-popover/select-popover.ios.css +10 -0
- package/dist/collection/components/select-popover/select-popover.md.css +10 -0
- package/dist/collection/components/toast/test/toast.spec.js +12 -0
- package/dist/collection/components/toast/toast.js +8 -4
- package/dist/collection/utils/helpers.js +1 -1
- package/dist/collection/utils/overlays.js +119 -28
- package/dist/collection/utils/test/overlays/overlays.e2e.js +122 -0
- package/dist/collection/utils/test/overlays/overlays.spec.js +51 -0
- package/dist/docs.json +23 -23
- package/dist/esm/{animation-60dbdd13.js → animation-6a0c5338.js} +1 -1
- package/dist/esm/{app-globals-47226a12.js → app-globals-5cf6195b.js} +1 -1
- package/dist/esm/{button-active-4bee452c.js → button-active-47ac8092.js} +1 -1
- package/dist/esm/{form-controller-014aa89f.js → form-controller-21dd62b1.js} +1 -1
- package/dist/esm/{framework-delegate-fed7fe7c.js → framework-delegate-ed4ba327.js} +1 -1
- package/dist/esm/{hardware-back-button-f42b9c80.js → hardware-back-button-b410a047.js} +2 -2
- package/dist/esm/{helpers-c0b9ca37.js → helpers-be245865.js} +2 -2
- package/dist/esm/{index-d64f34ea.js → index-020f5464.js} +1 -1
- package/dist/esm/{index-4b98143d.js → index-348ed70a.js} +4 -4
- package/dist/esm/{index-73881b51.js → index-4c30cddd.js} +25 -22
- package/dist/esm/{index-48209844.js → index-e1b622e3.js} +4 -4
- package/dist/esm/{index-eb12ef92.js → index-f3946ac1.js} +1 -1
- package/dist/esm/index.js +11 -11
- package/dist/esm/{input-shims-b90ca55f.js → input-shims-5329bbe8.js} +2 -2
- package/dist/esm/{input.utils-6e9b0046.js → input.utils-a445f677.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +16 -12
- package/dist/esm/ion-alert.entry.js +14 -10
- package/dist/esm/ion-app_8.entry.js +12 -12
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-back-button.entry.js +3 -3
- package/dist/esm/ion-backdrop.entry.js +2 -2
- package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
- package/dist/esm/ion-button_2.entry.js +3 -3
- package/dist/esm/ion-card_5.entry.js +3 -3
- package/dist/esm/ion-checkbox.entry.js +4 -4
- package/dist/esm/ion-chip.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +3 -3
- package/dist/esm/ion-datetime_3.entry.js +13 -9
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +3 -3
- package/dist/esm/ion-infinite-scroll_2.entry.js +4 -4
- package/dist/esm/ion-input.entry.js +6 -6
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +7 -7
- package/dist/esm/ion-loading.entry.js +13 -9
- package/dist/esm/ion-menu_3.entry.js +8 -8
- package/dist/esm/ion-modal.entry.js +16 -14
- package/dist/esm/ion-nav_2.entry.js +6 -6
- package/dist/esm/ion-picker-column-internal.entry.js +3 -3
- package/dist/esm/ion-picker-internal.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +15 -11
- package/dist/esm/ion-progress-bar.entry.js +3 -3
- package/dist/esm/ion-radio_2.entry.js +4 -4
- package/dist/esm/ion-range.entry.js +5 -5
- package/dist/esm/ion-refresher_2.entry.js +5 -5
- package/dist/esm/ion-reorder_2.entry.js +4 -4
- package/dist/esm/ion-ripple-effect.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +3 -3
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment_2.entry.js +3 -3
- package/dist/esm/ion-select_3.entry.js +12 -12
- package/dist/esm/ion-spinner.entry.js +2 -2
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +3 -3
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +6 -6
- package/dist/esm/ion-toast.entry.js +13 -9
- package/dist/esm/ion-toggle.entry.js +4 -4
- package/dist/esm/{ionic-global-778b7863.js → ionic-global-ad9a1810.js} +1 -1
- package/dist/esm/ionic.js +7 -7
- package/dist/esm/{ios.transition-7ff7381d.js → ios.transition-7459f819.js} +4 -4
- package/dist/esm/loader.js +6 -6
- package/dist/esm/{md.transition-28a9a26b.js → md.transition-b8224313.js} +4 -4
- package/dist/esm/{notch-controller-15d281a4.js → notch-controller-6bd3e0f9.js} +1 -1
- package/dist/esm/{overlays-fad5fe01.js → overlays-19b26885.js} +123 -32
- package/dist/esm/{status-tap-2b335fb7.js → status-tap-b41ece3c.js} +3 -3
- package/dist/esm/{swipe-back-fa0ec5cd.js → swipe-back-c6d0e5d9.js} +1 -1
- package/dist/esm-es5/{animation-60dbdd13.js → animation-6a0c5338.js} +1 -1
- package/dist/esm-es5/app-globals-5cf6195b.js +4 -0
- package/dist/esm-es5/{button-active-4bee452c.js → button-active-47ac8092.js} +1 -1
- package/dist/esm-es5/{form-controller-014aa89f.js → form-controller-21dd62b1.js} +1 -1
- package/dist/esm-es5/{framework-delegate-fed7fe7c.js → framework-delegate-ed4ba327.js} +1 -1
- package/dist/esm-es5/{hardware-back-button-f42b9c80.js → hardware-back-button-b410a047.js} +1 -1
- package/dist/esm-es5/helpers-be245865.js +4 -0
- package/dist/esm-es5/index-020f5464.js +4 -0
- package/dist/esm-es5/{index-4b98143d.js → index-348ed70a.js} +1 -1
- package/dist/esm-es5/{index-73881b51.js → index-4c30cddd.js} +1 -1
- package/dist/esm-es5/{index-48209844.js → index-e1b622e3.js} +1 -1
- package/dist/esm-es5/{index-eb12ef92.js → index-f3946ac1.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{input-shims-b90ca55f.js → input-shims-5329bbe8.js} +1 -1
- package/dist/esm-es5/{input.utils-6e9b0046.js → input.utils-a445f677.js} +1 -1
- package/dist/esm-es5/ion-accordion_2.entry.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-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.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-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-internal.entry.js +1 -1
- package/dist/esm-es5/ion-picker-internal.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-spinner.entry.js +1 -1
- package/dist/esm-es5/ion-split-pane.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-text.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/{ionic-global-778b7863.js → ionic-global-ad9a1810.js} +1 -1
- package/dist/esm-es5/ionic.js +2 -2
- package/dist/esm-es5/{ios.transition-7ff7381d.js → ios.transition-7459f819.js} +1 -1
- package/dist/esm-es5/loader.js +2 -2
- package/dist/esm-es5/md.transition-b8224313.js +4 -0
- package/dist/esm-es5/{notch-controller-15d281a4.js → notch-controller-6bd3e0f9.js} +1 -1
- package/dist/esm-es5/overlays-19b26885.js +4 -0
- package/dist/esm-es5/{status-tap-2b335fb7.js → status-tap-b41ece3c.js} +1 -1
- package/dist/esm-es5/{swipe-back-fa0ec5cd.js → swipe-back-c6d0e5d9.js} +1 -1
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/{p-38a6fee7.entry.js → p-021f9d72.entry.js} +1 -1
- package/dist/ionic/{p-680f96e8.system.entry.js → p-02542247.system.entry.js} +1 -1
- package/dist/ionic/p-02ad4bbe.js +4 -0
- package/dist/ionic/{p-b4d8fe47.js → p-05253db9.js} +1 -1
- package/dist/ionic/{p-efe9180b.entry.js → p-079da3df.entry.js} +1 -1
- package/dist/ionic/p-0b34d3a7.system.js +4 -0
- package/dist/ionic/{p-51f08a9f.entry.js → p-12527c4b.entry.js} +1 -1
- package/dist/ionic/{p-c6fef62b.system.js → p-125f8cdd.system.js} +1 -1
- package/dist/ionic/{p-b253ad7f.js → p-12a8643e.js} +1 -1
- package/dist/ionic/{p-f7b43141.system.entry.js → p-15a40a0b.system.entry.js} +1 -1
- package/dist/ionic/{p-5eea8b4c.system.js → p-1636923f.system.js} +1 -1
- package/dist/ionic/{p-333f06ed.entry.js → p-16a61810.entry.js} +1 -1
- package/dist/ionic/p-1846513c.js +4 -0
- package/dist/ionic/{p-6f38d0c5.system.entry.js → p-18918a24.system.entry.js} +1 -1
- package/dist/ionic/{p-ce2eabd5.entry.js → p-1a680496.entry.js} +1 -1
- package/dist/ionic/{p-b8c685a7.system.js → p-1bc9b5f5.system.js} +1 -1
- package/dist/ionic/{p-396c1a55.entry.js → p-1f16d040.entry.js} +1 -1
- package/dist/ionic/{p-e6aaff14.system.entry.js → p-1f19958f.system.entry.js} +1 -1
- package/dist/ionic/{p-d7260b87.entry.js → p-2178329b.entry.js} +1 -1
- package/dist/ionic/p-257046d2.system.js +4 -0
- package/dist/ionic/p-262024fd.entry.js +4 -0
- package/dist/ionic/{p-9f5b40c0.system.entry.js → p-2765a571.system.entry.js} +1 -1
- package/dist/ionic/{p-7c32fb95.system.entry.js → p-288649db.system.entry.js} +1 -1
- package/dist/ionic/{p-94be3ad7.js → p-2c118b1e.js} +1 -1
- package/dist/ionic/{p-3a98f8db.entry.js → p-2c4bfe1c.entry.js} +1 -1
- package/dist/ionic/{p-25b08bc4.system.js → p-2c86025e.system.js} +1 -1
- package/dist/ionic/{p-8569d759.system.entry.js → p-2ea71956.system.entry.js} +1 -1
- package/dist/ionic/{p-9db1e4c5.entry.js → p-2fd3c3dd.entry.js} +1 -1
- package/dist/ionic/{p-aa7ae6aa.entry.js → p-3079950e.entry.js} +1 -1
- package/dist/ionic/{p-b8c4df21.entry.js → p-337ac0f5.entry.js} +1 -1
- package/dist/ionic/p-36be3332.js +4 -0
- package/dist/ionic/{p-9eb4ea47.system.entry.js → p-437f4d02.system.entry.js} +1 -1
- package/dist/ionic/{p-c858f685.js → p-46bcc2f5.js} +1 -1
- package/dist/ionic/{p-108f730a.entry.js → p-4788693d.entry.js} +1 -1
- package/dist/ionic/{p-5f456b3c.system.entry.js → p-479f5926.system.entry.js} +1 -1
- package/dist/ionic/{p-34947dff.system.entry.js → p-482ea916.system.entry.js} +1 -1
- package/dist/ionic/p-49f481cc.system.entry.js +4 -0
- package/dist/ionic/{p-0eef8b34.system.entry.js → p-4b8a620f.system.entry.js} +1 -1
- package/dist/ionic/{p-df468a8f.entry.js → p-521b3971.entry.js} +1 -1
- package/dist/ionic/{p-31c495c2.js → p-56ee6d9a.js} +1 -1
- package/dist/ionic/{p-30c9e049.system.entry.js → p-5cb5f63d.system.entry.js} +1 -1
- package/dist/ionic/{p-1aa7c019.js → p-5d7e32ce.js} +1 -1
- package/dist/ionic/{p-4fc40349.system.entry.js → p-5de920f4.system.entry.js} +1 -1
- package/dist/ionic/{p-6871553b.system.js → p-62b7320a.system.js} +1 -1
- package/dist/ionic/{p-bc2c03d7.system.entry.js → p-644d03d7.system.entry.js} +1 -1
- package/dist/ionic/{p-3f028207.system.js → p-6525a8cd.system.js} +1 -1
- package/dist/ionic/{p-d8607ede.entry.js → p-657ccdd6.entry.js} +1 -1
- package/dist/ionic/p-6812d37d.js +4 -0
- package/dist/ionic/{p-61ba2137.system.js → p-6afef6c1.system.js} +1 -1
- package/dist/ionic/p-6b6ca3f5.system.entry.js +4 -0
- package/dist/ionic/p-6c45c617.js +4 -0
- package/dist/ionic/{p-8a671f16.entry.js → p-6e23d039.entry.js} +1 -1
- package/dist/ionic/p-6f59cdbc.system.entry.js +4 -0
- package/dist/ionic/{p-dce9bc53.entry.js → p-70fbf4e2.entry.js} +1 -1
- package/dist/ionic/{p-20a6513f.system.entry.js → p-717e2526.system.entry.js} +1 -1
- package/dist/ionic/{p-76893257.system.js → p-72fa96bf.system.js} +1 -1
- package/dist/ionic/{p-0fd295ef.system.entry.js → p-741a0f0d.system.entry.js} +1 -1
- package/dist/ionic/{p-1c531ca2.entry.js → p-7670acd8.entry.js} +1 -1
- package/dist/ionic/{p-84879f61.system.entry.js → p-76b8bcb8.system.entry.js} +1 -1
- package/dist/ionic/{p-a3f572a7.js → p-779aede8.js} +1 -1
- package/dist/ionic/{p-9f6397ce.entry.js → p-7a615a5a.entry.js} +1 -1
- package/dist/ionic/{p-89b5aff2.entry.js → p-7e16220b.entry.js} +1 -1
- package/dist/ionic/{p-a1bfaa5c.system.entry.js → p-7e838f43.system.entry.js} +1 -1
- package/dist/ionic/{p-2da0a76c.entry.js → p-7f30ad48.entry.js} +1 -1
- package/dist/ionic/{p-70026e8f.system.entry.js → p-80aed9fb.system.entry.js} +1 -1
- package/dist/ionic/{p-a2ad515b.entry.js → p-822730c4.entry.js} +1 -1
- package/dist/ionic/{p-dbb4c012.entry.js → p-84b85535.entry.js} +1 -1
- package/dist/ionic/p-85f66c3c.entry.js +4 -0
- package/dist/ionic/{p-d181166c.system.entry.js → p-860e2539.system.entry.js} +1 -1
- package/dist/ionic/{p-58e3ae88.system.entry.js → p-86813176.system.entry.js} +1 -1
- package/dist/ionic/{p-a051c371.entry.js → p-88e9052d.entry.js} +1 -1
- package/dist/ionic/{p-b94882a9.system.js → p-89ca4c4b.system.js} +1 -1
- package/dist/ionic/{p-c569d1c8.entry.js → p-8cc34120.entry.js} +1 -1
- package/dist/ionic/{p-f46775e4.entry.js → p-8e651c29.entry.js} +1 -1
- package/dist/ionic/{p-f97b9cdd.system.entry.js → p-9056778e.system.entry.js} +1 -1
- package/dist/ionic/{p-92c2178e.system.entry.js → p-91f4e611.system.entry.js} +1 -1
- package/dist/ionic/{p-9393a49f.js → p-942a9358.js} +1 -1
- package/dist/ionic/{p-ef441122.entry.js → p-96084f36.entry.js} +1 -1
- package/dist/ionic/{p-a114530c.entry.js → p-973b4db3.entry.js} +1 -1
- package/dist/ionic/{p-3c6f02cf.system.js → p-97ca0cb9.system.js} +1 -1
- package/dist/ionic/{p-a02b2d75.entry.js → p-98aa0553.entry.js} +1 -1
- package/dist/ionic/{p-1f6cdf2c.system.entry.js → p-9998cb62.system.entry.js} +1 -1
- package/dist/ionic/{p-5615cf3f.system.entry.js → p-9de75bac.system.entry.js} +1 -1
- package/dist/ionic/{p-3cdbaa49.entry.js → p-a02ea777.entry.js} +1 -1
- package/dist/ionic/{p-c2289cd1.js → p-a1036ce7.js} +1 -1
- package/dist/ionic/{p-fd3f475f.entry.js → p-a1222c24.entry.js} +1 -1
- package/dist/ionic/{p-eda7a1db.system.entry.js → p-a3df16b9.system.entry.js} +1 -1
- package/dist/ionic/{p-dd60faa5.system.entry.js → p-a4aa6dd2.system.entry.js} +1 -1
- package/dist/ionic/{p-49543c9c.system.js → p-a667dd1f.system.js} +1 -1
- package/dist/ionic/{p-8ddc00f7.js → p-a6c0a380.js} +1 -1
- package/dist/ionic/{p-5e60dbc8.entry.js → p-a8459bfb.entry.js} +1 -1
- package/dist/ionic/{p-9a6ab80a.system.entry.js → p-a85d9047.system.entry.js} +1 -1
- package/dist/ionic/{p-ac20160b.system.entry.js → p-abcedc15.system.entry.js} +1 -1
- package/dist/ionic/{p-e68980ff.system.entry.js → p-ae2b3a7a.system.entry.js} +1 -1
- package/dist/ionic/{p-eb1fdf9f.system.entry.js → p-ae828bd9.system.entry.js} +1 -1
- package/dist/ionic/{p-20f7a91e.system.entry.js → p-b0aa3806.system.entry.js} +1 -1
- package/dist/ionic/{p-078fd095.system.entry.js → p-b27bba38.system.entry.js} +1 -1
- package/dist/ionic/p-b4d2f43c.system.js +4 -0
- package/dist/ionic/{p-594ead2f.entry.js → p-b58686e0.entry.js} +1 -1
- package/dist/ionic/{p-fe92da17.entry.js → p-b6279412.entry.js} +1 -1
- package/dist/ionic/{p-400574bf.entry.js → p-b727af6a.entry.js} +1 -1
- package/dist/ionic/{p-a19f5ae1.entry.js → p-ba0fbecc.entry.js} +1 -1
- package/dist/ionic/{p-0e29919c.system.entry.js → p-baf8eeac.system.entry.js} +1 -1
- package/dist/ionic/{p-95c44e02.system.js → p-bcd9cad8.system.js} +1 -1
- package/dist/ionic/{p-37c33319.system.js → p-bd313b73.system.js} +1 -1
- package/dist/ionic/p-bdca4784.js +4 -0
- package/dist/ionic/{p-0ae25399.system.entry.js → p-c1a871ff.system.entry.js} +1 -1
- package/dist/ionic/{p-c3d041af.entry.js → p-c1c7309e.entry.js} +1 -1
- package/dist/ionic/{p-e6cfaa07.system.entry.js → p-c7288e78.system.entry.js} +1 -1
- package/dist/ionic/{p-d74ca358.entry.js → p-cb3065b8.entry.js} +1 -1
- package/dist/ionic/{p-5a0c301f.entry.js → p-cb9812f7.entry.js} +1 -1
- package/dist/ionic/{p-55d5cd00.system.js → p-cbcffe6e.system.js} +1 -1
- package/dist/ionic/{p-df281664.system.entry.js → p-ce1c0a0e.system.entry.js} +1 -1
- package/dist/ionic/{p-4b2d5b9c.js → p-ceceac26.js} +1 -1
- package/dist/ionic/p-cfb4d7e0.js +4 -0
- package/dist/ionic/{p-3a54c070.system.entry.js → p-d143fefa.system.entry.js} +1 -1
- package/dist/ionic/{p-97eca294.entry.js → p-d425b1de.entry.js} +1 -1
- package/dist/ionic/{p-78edc0cd.system.entry.js → p-d6c6541b.system.entry.js} +1 -1
- package/dist/ionic/{p-341b4519.js → p-de55ec45.js} +1 -1
- package/dist/ionic/{p-001010b6.system.js → p-df504a37.system.js} +1 -1
- package/dist/ionic/{p-ea8fbf09.entry.js → p-dff97cfa.entry.js} +1 -1
- package/dist/ionic/{p-d95c8e90.entry.js → p-e1c52dc6.entry.js} +1 -1
- package/dist/ionic/{p-044ad008.system.entry.js → p-e4e74b5f.system.entry.js} +1 -1
- package/dist/ionic/{p-cd055d60.system.entry.js → p-e626800f.system.entry.js} +1 -1
- package/dist/ionic/{p-84f589e1.entry.js → p-e94c1402.entry.js} +1 -1
- package/dist/ionic/{p-30d77a91.system.js → p-ebc1ca90.system.js} +1 -1
- package/dist/ionic/{p-2f66e177.system.entry.js → p-ebc86ce9.system.entry.js} +1 -1
- package/dist/ionic/{p-88ca4854.entry.js → p-ed4760ef.entry.js} +1 -1
- package/dist/ionic/p-ed7a529f.js +5 -0
- package/dist/ionic/{p-fd36799d.system.js → p-f02c41af.system.js} +1 -1
- package/dist/ionic/{p-1d8c2cfc.system.entry.js → p-f0e54781.system.entry.js} +1 -1
- package/dist/ionic/{p-f88dd429.entry.js → p-fa8d3b01.entry.js} +1 -1
- package/dist/ionic/p-fbd01db3.system.js +4 -0
- package/dist/ionic/{p-e2bb92ed.system.js → p-fe320051.system.js} +1 -1
- package/dist/types/components/action-sheet/action-sheet.d.ts +4 -0
- package/dist/types/components/alert/alert.d.ts +4 -0
- package/dist/types/components/loading/loading.d.ts +4 -0
- package/dist/types/components/modal/modal.d.ts +4 -0
- package/dist/types/components/picker/picker.d.ts +4 -0
- package/dist/types/components/popover/popover.d.ts +4 -0
- package/dist/types/components/toast/toast.d.ts +4 -0
- package/dist/types/components.d.ts +7 -7
- package/dist/types/utils/helpers.d.ts +1 -1
- package/dist/types/utils/overlays.d.ts +5 -0
- package/hydrate/index.d.ts +1 -1
- package/hydrate/index.js +292 -68
- package/package.json +6 -6
- package/dist/esm-es5/app-globals-47226a12.js +0 -4
- package/dist/esm-es5/helpers-c0b9ca37.js +0 -4
- package/dist/esm-es5/index-d64f34ea.js +0 -4
- package/dist/esm-es5/md.transition-28a9a26b.js +0 -4
- package/dist/esm-es5/overlays-fad5fe01.js +0 -4
- package/dist/ionic/p-0b955124.system.js +0 -4
- package/dist/ionic/p-1375f21f.js +0 -4
- package/dist/ionic/p-3eb2da31.js +0 -4
- package/dist/ionic/p-41fde260.entry.js +0 -4
- package/dist/ionic/p-4f777b5e.js +0 -4
- package/dist/ionic/p-52e02877.entry.js +0 -4
- package/dist/ionic/p-62067818.system.entry.js +0 -4
- package/dist/ionic/p-62a3c609.system.js +0 -4
- package/dist/ionic/p-6b02edd6.js +0 -4
- package/dist/ionic/p-86670b91.system.js +0 -4
- package/dist/ionic/p-8f1ce253.js +0 -4
- package/dist/ionic/p-b1f0c48e.system.entry.js +0 -4
- package/dist/ionic/p-b4a95b80.system.entry.js +0 -4
- package/dist/ionic/p-c5c3710c.js +0 -4
- package/dist/ionic/p-c80c7e90.system.js +0 -4
- package/dist/ionic/p-e1271366.js +0 -5
- package/dist/ionic/p-fd2aa50c.js +0 -4
- /package/dist/ionic/{p-b5839dc2.js → p-1b3ffb2f.js} +0 -0
- /package/dist/ionic/{p-fd8ced99.system.js → p-5fc8d5ef.system.js} +0 -0
|
@@ -7,7 +7,7 @@ import { config } from "../global/config";
|
|
|
7
7
|
import { getIonMode } from "../global/ionic-global";
|
|
8
8
|
import { CoreDelegate } from "./framework-delegate";
|
|
9
9
|
import { OVERLAY_BACK_BUTTON_PRIORITY } from "./hardware-back-button";
|
|
10
|
-
import { addEventListener, componentOnReady,
|
|
10
|
+
import { addEventListener, componentOnReady, focusVisibleElement, getElementRoot, removeEventListener, } from "./helpers";
|
|
11
11
|
import { printIonWarning } from "./logging";
|
|
12
12
|
let lastOverlayIndex = 0;
|
|
13
13
|
let lastId = 0;
|
|
@@ -99,32 +99,48 @@ export const createOverlay = (tagName, opts) => {
|
|
|
99
99
|
* valid usage for the disabled property on ion-button.
|
|
100
100
|
*/
|
|
101
101
|
const focusableQueryString = '[tabindex]:not([tabindex^="-"]):not([hidden]):not([disabled]), input:not([type=hidden]):not([tabindex^="-"]):not([hidden]):not([disabled]), textarea:not([tabindex^="-"]):not([hidden]):not([disabled]), button:not([tabindex^="-"]):not([hidden]):not([disabled]), select:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable:not([tabindex^="-"]):not([hidden]):not([disabled]), .ion-focusable[disabled="false"]:not([tabindex^="-"]):not([hidden])';
|
|
102
|
+
const isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden');
|
|
103
|
+
/**
|
|
104
|
+
* Focuses the first descendant in an overlay
|
|
105
|
+
* that can receive focus. If none exists,
|
|
106
|
+
* the entire overlay will be focused.
|
|
107
|
+
*/
|
|
102
108
|
export const focusFirstDescendant = (ref, overlay) => {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (shadowRoot) {
|
|
106
|
-
// If there are no inner focusable elements, just focus the host element.
|
|
107
|
-
firstInput = shadowRoot.querySelector(focusableQueryString) || firstInput;
|
|
108
|
-
}
|
|
109
|
-
if (firstInput) {
|
|
110
|
-
focusElement(firstInput);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
// Focus overlay instead of letting focus escape
|
|
114
|
-
overlay.focus();
|
|
115
|
-
}
|
|
109
|
+
const firstInput = ref.querySelector(focusableQueryString);
|
|
110
|
+
focusElementInOverlay(firstInput, overlay);
|
|
116
111
|
};
|
|
117
|
-
|
|
112
|
+
/**
|
|
113
|
+
* Focuses the last descendant in an overlay
|
|
114
|
+
* that can receive focus. If none exists,
|
|
115
|
+
* the entire overlay will be focused.
|
|
116
|
+
*/
|
|
118
117
|
const focusLastDescendant = (ref, overlay) => {
|
|
119
118
|
const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
|
|
120
|
+
focusElementInOverlay(lastInput, overlay);
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Focuses a particular element in an overlay. If the element
|
|
124
|
+
* doesn't have anything focusable associated with it then
|
|
125
|
+
* the overlay itself will be focused.
|
|
126
|
+
* This should be used instead of the focus() method
|
|
127
|
+
* on most elements because the focusable element
|
|
128
|
+
* may not be the host element.
|
|
129
|
+
*
|
|
130
|
+
* For example, if an ion-button should be focused
|
|
131
|
+
* then we should actually focus the native <button>
|
|
132
|
+
* element inside of ion-button's shadow root, not
|
|
133
|
+
* the host element itself.
|
|
134
|
+
*/
|
|
135
|
+
const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
136
|
+
let elementToFocus = hostToFocus;
|
|
137
|
+
const shadowRoot = hostToFocus === null || hostToFocus === void 0 ? void 0 : hostToFocus.shadowRoot;
|
|
122
138
|
if (shadowRoot) {
|
|
123
139
|
// If there are no inner focusable elements, just focus the host element.
|
|
124
|
-
|
|
140
|
+
elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
|
|
125
141
|
}
|
|
126
|
-
if (
|
|
127
|
-
|
|
142
|
+
if (elementToFocus) {
|
|
143
|
+
focusVisibleElement(elementToFocus);
|
|
128
144
|
}
|
|
129
145
|
else {
|
|
130
146
|
// Focus overlay instead of letting focus escape
|
|
@@ -175,6 +191,21 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
175
191
|
*/
|
|
176
192
|
if (lastOverlay === target) {
|
|
177
193
|
lastOverlay.lastFocus = undefined;
|
|
194
|
+
/**
|
|
195
|
+
* Toasts can be presented from an overlay.
|
|
196
|
+
* However, focus should still be returned to
|
|
197
|
+
* the overlay when clicking a toast. Normally,
|
|
198
|
+
* focus would be returned to the last focusable
|
|
199
|
+
* descendant in the overlay which may not always be
|
|
200
|
+
* the button that the toast was presented from. In this case,
|
|
201
|
+
* the focus may be returned to an unexpected element.
|
|
202
|
+
* To account for this, we make sure to return focus to the
|
|
203
|
+
* last focused element in the overlay if focus is
|
|
204
|
+
* moved to the toast.
|
|
205
|
+
*/
|
|
206
|
+
}
|
|
207
|
+
else if (target.tagName === 'ION-TOAST') {
|
|
208
|
+
focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
|
|
178
209
|
/**
|
|
179
210
|
* Otherwise, we must be focusing an element
|
|
180
211
|
* inside of the overlay. The two possible options
|
|
@@ -246,6 +277,21 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
246
277
|
*/
|
|
247
278
|
if (lastOverlay.contains(target)) {
|
|
248
279
|
lastOverlay.lastFocus = target;
|
|
280
|
+
/**
|
|
281
|
+
* Toasts can be presented from an overlay.
|
|
282
|
+
* However, focus should still be returned to
|
|
283
|
+
* the overlay when clicking a toast. Normally,
|
|
284
|
+
* focus would be returned to the last focusable
|
|
285
|
+
* descendant in the overlay which may not always be
|
|
286
|
+
* the button that the toast was presented from. In this case,
|
|
287
|
+
* the focus may be returned to an unexpected element.
|
|
288
|
+
* To account for this, we make sure to return focus to the
|
|
289
|
+
* last focused element in the overlay if focus is
|
|
290
|
+
* moved to the toast.
|
|
291
|
+
*/
|
|
292
|
+
}
|
|
293
|
+
else if (target.tagName === 'ION-TOAST') {
|
|
294
|
+
focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
|
|
249
295
|
}
|
|
250
296
|
else {
|
|
251
297
|
/**
|
|
@@ -409,6 +455,15 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
409
455
|
return;
|
|
410
456
|
}
|
|
411
457
|
setRootAriaHidden(true);
|
|
458
|
+
/**
|
|
459
|
+
* Hide all other overlays from screen readers so only this one
|
|
460
|
+
* can be read. Note that presenting an overlay always makes
|
|
461
|
+
* it the topmost one.
|
|
462
|
+
*/
|
|
463
|
+
if (doc !== undefined) {
|
|
464
|
+
const presentedOverlays = getPresentedOverlays(doc);
|
|
465
|
+
presentedOverlays.forEach((o) => o.setAttribute('aria-hidden', 'true'));
|
|
466
|
+
}
|
|
412
467
|
overlay.presented = true;
|
|
413
468
|
overlay.willPresent.emit();
|
|
414
469
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
@@ -431,7 +486,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
431
486
|
* from returning focus as a result.
|
|
432
487
|
*/
|
|
433
488
|
if (overlay.el.tagName !== 'ION-TOAST') {
|
|
434
|
-
|
|
489
|
+
restoreElementFocus(overlay.el);
|
|
435
490
|
}
|
|
436
491
|
/**
|
|
437
492
|
* If the focused element is already
|
|
@@ -442,6 +497,14 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
442
497
|
if (overlay.keyboardClose && (document.activeElement === null || !overlay.el.contains(document.activeElement))) {
|
|
443
498
|
overlay.el.focus();
|
|
444
499
|
}
|
|
500
|
+
/**
|
|
501
|
+
* If this overlay was previously dismissed without being
|
|
502
|
+
* the topmost one (such as by manually calling dismiss()),
|
|
503
|
+
* it would still have aria-hidden on being presented again.
|
|
504
|
+
* Removing it here ensures the overlay is visible to screen
|
|
505
|
+
* readers.
|
|
506
|
+
*/
|
|
507
|
+
overlay.el.removeAttribute('aria-hidden');
|
|
445
508
|
};
|
|
446
509
|
/**
|
|
447
510
|
* When an overlay component is dismissed,
|
|
@@ -453,7 +516,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
453
516
|
* to where they were before they
|
|
454
517
|
* opened the overlay.
|
|
455
518
|
*/
|
|
456
|
-
const
|
|
519
|
+
const restoreElementFocus = async (overlayEl) => {
|
|
457
520
|
let previousElement = document.activeElement;
|
|
458
521
|
if (!previousElement) {
|
|
459
522
|
return;
|
|
@@ -465,18 +528,35 @@ const focusPreviousElementOnDismissIfNeeded = async (overlayEl) => {
|
|
|
465
528
|
}
|
|
466
529
|
await overlayEl.onDidDismiss();
|
|
467
530
|
/**
|
|
468
|
-
*
|
|
469
|
-
*
|
|
470
|
-
*
|
|
471
|
-
*
|
|
472
|
-
*
|
|
531
|
+
* After onDidDismiss, the overlay loses focus
|
|
532
|
+
* because it is removed from the document
|
|
533
|
+
*
|
|
534
|
+
* > An element will also lose focus [...]
|
|
535
|
+
* > if the element is removed from the document)
|
|
536
|
+
*
|
|
537
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Element/blur_event
|
|
538
|
+
*
|
|
539
|
+
* Additionally, `document.activeElement` returns:
|
|
540
|
+
*
|
|
541
|
+
* > The Element which currently has focus,
|
|
542
|
+
* > `<body>` or null if there is
|
|
543
|
+
* > no focused element.
|
|
544
|
+
*
|
|
545
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement#value
|
|
546
|
+
*
|
|
547
|
+
* However, if the user has already focused
|
|
548
|
+
* an element sometime between onWillDismiss
|
|
549
|
+
* and onDidDismiss (for example, focusing a
|
|
550
|
+
* text box after tapping a button in an
|
|
551
|
+
* action sheet) then don't restore focus to
|
|
552
|
+
* previous element
|
|
473
553
|
*/
|
|
474
554
|
if (document.activeElement === null || document.activeElement === document.body) {
|
|
475
555
|
previousElement.focus();
|
|
476
556
|
}
|
|
477
557
|
};
|
|
478
558
|
export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
479
|
-
var _a, _b;
|
|
559
|
+
var _a, _b, _c;
|
|
480
560
|
if (!overlay.presented) {
|
|
481
561
|
return false;
|
|
482
562
|
}
|
|
@@ -503,6 +583,10 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
503
583
|
}
|
|
504
584
|
overlay.didDismiss.emit({ data, role });
|
|
505
585
|
(_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
|
|
586
|
+
// Get a reference to all animations currently assigned to this overlay
|
|
587
|
+
// Then tear them down to return the overlay to its initial visual state
|
|
588
|
+
const animations = activeAnimations.get(overlay) || [];
|
|
589
|
+
animations.forEach((ani) => ani.destroy());
|
|
506
590
|
activeAnimations.delete(overlay);
|
|
507
591
|
/**
|
|
508
592
|
* Make overlay hidden again in case it is being reused.
|
|
@@ -523,6 +607,13 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
523
607
|
console.error(err);
|
|
524
608
|
}
|
|
525
609
|
overlay.el.remove();
|
|
610
|
+
/**
|
|
611
|
+
* If there are other overlays presented, unhide the new
|
|
612
|
+
* topmost one from screen readers.
|
|
613
|
+
*/
|
|
614
|
+
if (doc !== undefined) {
|
|
615
|
+
(_c = getPresentedOverlay(doc)) === null || _c === void 0 ? void 0 : _c.removeAttribute('aria-hidden');
|
|
616
|
+
}
|
|
526
617
|
return true;
|
|
527
618
|
};
|
|
528
619
|
const getAppRoot = (doc) => {
|
|
@@ -175,5 +175,127 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
175
175
|
await modalInputOne.click();
|
|
176
176
|
await expect(modalInputOne).toBeFocused();
|
|
177
177
|
});
|
|
178
|
+
test('focusing toast from a shadow overlay should return focus to the last focused element', async ({ page }) => {
|
|
179
|
+
test.info().annotations.push({
|
|
180
|
+
type: 'issue',
|
|
181
|
+
description: 'https://github.com/ionic-team/ionic-framework/issues/28261',
|
|
182
|
+
});
|
|
183
|
+
/**
|
|
184
|
+
* Triggers for an overlay are typically buttons. However in this case,
|
|
185
|
+
* buttons are not considered keyboard focusable by WebKit. Inputs are,
|
|
186
|
+
* so we use an input here so we can still test on WebKit.
|
|
187
|
+
*/
|
|
188
|
+
await page.setContent(`
|
|
189
|
+
<ion-modal>
|
|
190
|
+
<ion-content>
|
|
191
|
+
<input id="show-toast">Button A</input>
|
|
192
|
+
<button>Button B</button>
|
|
193
|
+
<ion-toast trigger="show-toast"></ion-toast>
|
|
194
|
+
</ion-content>
|
|
195
|
+
</ion-modal>
|
|
196
|
+
|
|
197
|
+
<script>
|
|
198
|
+
const toast = document.querySelector('ion-toast');
|
|
199
|
+
toast.buttons = ['Ok'];
|
|
200
|
+
</script>
|
|
201
|
+
`, config);
|
|
202
|
+
const modal = page.locator('ion-modal');
|
|
203
|
+
const showToastTrigger = page.locator('#show-toast');
|
|
204
|
+
const toast = page.locator('ion-toast');
|
|
205
|
+
const toastButton = toast.locator('button');
|
|
206
|
+
const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
|
|
207
|
+
// Show overlay
|
|
208
|
+
await modal.evaluate((el) => el.present());
|
|
209
|
+
// Click trigger to open toast
|
|
210
|
+
await showToastTrigger.click();
|
|
211
|
+
// Wait for toast to be presented
|
|
212
|
+
await ionToastDidPresent.next();
|
|
213
|
+
// Verify trigger in overlay is focused
|
|
214
|
+
await expect(showToastTrigger).toBeFocused();
|
|
215
|
+
// Click a button in the toast and therefore attempt to move focus
|
|
216
|
+
await toastButton.click();
|
|
217
|
+
// Verify trigger in overlay is still focused
|
|
218
|
+
await expect(showToastTrigger).toBeFocused();
|
|
219
|
+
});
|
|
220
|
+
test('focusing toast from a scoped overlay should return focus to the last focused element', async ({ page, skip, }) => {
|
|
221
|
+
test.info().annotations.push({
|
|
222
|
+
type: 'issue',
|
|
223
|
+
description: 'https://github.com/ionic-team/ionic-framework/issues/28261',
|
|
224
|
+
});
|
|
225
|
+
skip.browser('webkit', 'WebKit does not consider buttons to be focusable');
|
|
226
|
+
await page.setContent(`
|
|
227
|
+
<ion-action-sheet></ion-action-sheet>
|
|
228
|
+
<ion-toast></ion-toast>
|
|
229
|
+
|
|
230
|
+
<script>
|
|
231
|
+
const actionSheet = document.querySelector('ion-action-sheet');
|
|
232
|
+
actionSheet.buttons = [
|
|
233
|
+
'Other Button',
|
|
234
|
+
{
|
|
235
|
+
text: 'Button',
|
|
236
|
+
id: 'show-toast',
|
|
237
|
+
handler: () => {
|
|
238
|
+
document.querySelector('ion-toast').present();
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
];
|
|
243
|
+
|
|
244
|
+
const toast = document.querySelector('ion-toast');
|
|
245
|
+
toast.buttons = ['Ok'];
|
|
246
|
+
</script>
|
|
247
|
+
`, config);
|
|
248
|
+
const actionSheet = page.locator('ion-action-sheet');
|
|
249
|
+
const showToastButton = page.locator('#show-toast');
|
|
250
|
+
const toast = page.locator('ion-toast');
|
|
251
|
+
const toastButton = toast.locator('button');
|
|
252
|
+
const ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent');
|
|
253
|
+
// Show overlay
|
|
254
|
+
await actionSheet.evaluate((el) => el.present());
|
|
255
|
+
// Click button to open toast
|
|
256
|
+
await showToastButton.click();
|
|
257
|
+
// Wait for toast to be presented
|
|
258
|
+
await ionToastDidPresent.next();
|
|
259
|
+
// Verify button in overlay is focused
|
|
260
|
+
await expect(showToastButton).toBeFocused();
|
|
261
|
+
// Click a button in the toast and therefore attempt to move focus
|
|
262
|
+
await toastButton.click();
|
|
263
|
+
await page.pause();
|
|
264
|
+
// Verify button in overlay is still focused
|
|
265
|
+
await expect(showToastButton).toBeFocused();
|
|
266
|
+
});
|
|
267
|
+
test('should not return focus to another element if focus already manually returned', async ({ page, skip, }, testInfo) => {
|
|
268
|
+
skip.browser('webkit', 'WebKit does not consider buttons to be focusable, so this test always passes since the input is the only focusable element.');
|
|
269
|
+
testInfo.annotations.push({
|
|
270
|
+
type: 'issue',
|
|
271
|
+
description: 'https://github.com/ionic-team/ionic-framework/issues/28849',
|
|
272
|
+
});
|
|
273
|
+
await page.setContent(`
|
|
274
|
+
<button id="open-action-sheet">open</button>
|
|
275
|
+
<ion-action-sheet trigger="open-action-sheet"></ion-action-sheet>
|
|
276
|
+
<input id="test-input" />
|
|
277
|
+
|
|
278
|
+
<script>
|
|
279
|
+
const actionSheet = document.querySelector('ion-action-sheet');
|
|
280
|
+
|
|
281
|
+
actionSheet.addEventListener('ionActionSheetWillDismiss', () => {
|
|
282
|
+
requestAnimationFrame(() => {
|
|
283
|
+
document.querySelector('#test-input').focus();
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
</script>
|
|
287
|
+
`, config);
|
|
288
|
+
const ionActionSheetDidPresent = await page.spyOnEvent('ionActionSheetDidPresent');
|
|
289
|
+
const actionSheet = page.locator('ion-action-sheet');
|
|
290
|
+
const input = page.locator('#test-input');
|
|
291
|
+
const trigger = page.locator('#open-action-sheet');
|
|
292
|
+
// present action sheet
|
|
293
|
+
await trigger.click();
|
|
294
|
+
await ionActionSheetDidPresent.next();
|
|
295
|
+
// dismiss action sheet
|
|
296
|
+
await actionSheet.evaluate((el) => el.dismiss());
|
|
297
|
+
// verify focus is in correct location
|
|
298
|
+
await expect(input).toBeFocused();
|
|
299
|
+
});
|
|
178
300
|
});
|
|
179
301
|
});
|
|
@@ -100,3 +100,54 @@ describe('setRootAriaHidden()', () => {
|
|
|
100
100
|
expect(routerOutlet.hasAttribute('aria-hidden')).toEqual(false);
|
|
101
101
|
});
|
|
102
102
|
});
|
|
103
|
+
describe('aria-hidden on individual overlays', () => {
|
|
104
|
+
it('should hide non-topmost overlays from screen readers', async () => {
|
|
105
|
+
const page = await newSpecPage({
|
|
106
|
+
components: [Modal],
|
|
107
|
+
html: `
|
|
108
|
+
<ion-modal id="one"></ion-modal>
|
|
109
|
+
<ion-modal id="two"></ion-modal>
|
|
110
|
+
`,
|
|
111
|
+
});
|
|
112
|
+
const modalOne = page.body.querySelector('ion-modal#one');
|
|
113
|
+
const modalTwo = page.body.querySelector('ion-modal#two');
|
|
114
|
+
await modalOne.present();
|
|
115
|
+
await modalTwo.present();
|
|
116
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(true);
|
|
117
|
+
expect(modalTwo.hasAttribute('aria-hidden')).toEqual(false);
|
|
118
|
+
});
|
|
119
|
+
it('should unhide new topmost overlay from screen readers when topmost is dismissed', async () => {
|
|
120
|
+
const page = await newSpecPage({
|
|
121
|
+
components: [Modal],
|
|
122
|
+
html: `
|
|
123
|
+
<ion-modal id="one"></ion-modal>
|
|
124
|
+
<ion-modal id="two"></ion-modal>
|
|
125
|
+
`,
|
|
126
|
+
});
|
|
127
|
+
const modalOne = page.body.querySelector('ion-modal#one');
|
|
128
|
+
const modalTwo = page.body.querySelector('ion-modal#two');
|
|
129
|
+
await modalOne.present();
|
|
130
|
+
await modalTwo.present();
|
|
131
|
+
// dismiss modalTwo so that modalOne becomes the new topmost overlay
|
|
132
|
+
await modalTwo.dismiss();
|
|
133
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
134
|
+
});
|
|
135
|
+
it('should not keep overlays hidden from screen readers if presented after being dismissed while non-topmost', async () => {
|
|
136
|
+
const page = await newSpecPage({
|
|
137
|
+
components: [Modal],
|
|
138
|
+
html: `
|
|
139
|
+
<ion-modal id="one"></ion-modal>
|
|
140
|
+
<ion-modal id="two"></ion-modal>
|
|
141
|
+
`,
|
|
142
|
+
});
|
|
143
|
+
const modalOne = page.body.querySelector('ion-modal#one');
|
|
144
|
+
const modalTwo = page.body.querySelector('ion-modal#two');
|
|
145
|
+
await modalOne.present();
|
|
146
|
+
await modalTwo.present();
|
|
147
|
+
// modalOne is not the topmost overlay at this point and is hidden from screen readers
|
|
148
|
+
await modalOne.dismiss();
|
|
149
|
+
// modalOne will become the topmost overlay; ensure it isn't still hidden from screen readers
|
|
150
|
+
await modalOne.present();
|
|
151
|
+
expect(modalOne.hasAttribute('aria-hidden')).toEqual(false);
|
|
152
|
+
});
|
|
153
|
+
});
|
package/dist/docs.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2024-02-
|
|
2
|
+
"timestamp": "2024-02-24T20:38:59",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
|
-
"version": "4.12.
|
|
5
|
+
"version": "4.12.2",
|
|
6
6
|
"typescriptVersion": "5.3.3"
|
|
7
7
|
},
|
|
8
8
|
"components": [
|
|
@@ -806,7 +806,7 @@
|
|
|
806
806
|
{
|
|
807
807
|
"name": "role",
|
|
808
808
|
"type": "string | undefined",
|
|
809
|
-
"docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
809
|
+
"docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
810
810
|
}
|
|
811
811
|
],
|
|
812
812
|
"references": {
|
|
@@ -827,7 +827,7 @@
|
|
|
827
827
|
{
|
|
828
828
|
"name": "role",
|
|
829
829
|
"type": "string | undefined",
|
|
830
|
-
"docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
830
|
+
"docs": "The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
831
831
|
}
|
|
832
832
|
],
|
|
833
833
|
"docs": "Dismiss the action sheet overlay after it has been presented.",
|
|
@@ -838,7 +838,7 @@
|
|
|
838
838
|
},
|
|
839
839
|
{
|
|
840
840
|
"name": "param",
|
|
841
|
-
"text": "role The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
841
|
+
"text": "role The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
842
842
|
}
|
|
843
843
|
]
|
|
844
844
|
},
|
|
@@ -1637,7 +1637,7 @@
|
|
|
1637
1637
|
{
|
|
1638
1638
|
"name": "role",
|
|
1639
1639
|
"type": "string | undefined",
|
|
1640
|
-
"docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
1640
|
+
"docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
1641
1641
|
}
|
|
1642
1642
|
],
|
|
1643
1643
|
"references": {
|
|
@@ -1658,7 +1658,7 @@
|
|
|
1658
1658
|
{
|
|
1659
1659
|
"name": "role",
|
|
1660
1660
|
"type": "string | undefined",
|
|
1661
|
-
"docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
1661
|
+
"docs": "The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
1662
1662
|
}
|
|
1663
1663
|
],
|
|
1664
1664
|
"docs": "Dismiss the alert overlay after it has been presented.",
|
|
@@ -1669,7 +1669,7 @@
|
|
|
1669
1669
|
},
|
|
1670
1670
|
{
|
|
1671
1671
|
"name": "param",
|
|
1672
|
-
"text": "role The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
1672
|
+
"text": "role The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
1673
1673
|
}
|
|
1674
1674
|
]
|
|
1675
1675
|
},
|
|
@@ -13797,7 +13797,7 @@
|
|
|
13797
13797
|
{
|
|
13798
13798
|
"name": "role",
|
|
13799
13799
|
"type": "string | undefined",
|
|
13800
|
-
"docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
13800
|
+
"docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
13801
13801
|
}
|
|
13802
13802
|
],
|
|
13803
13803
|
"references": {
|
|
@@ -13818,7 +13818,7 @@
|
|
|
13818
13818
|
{
|
|
13819
13819
|
"name": "role",
|
|
13820
13820
|
"type": "string | undefined",
|
|
13821
|
-
"docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
13821
|
+
"docs": "The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
13822
13822
|
}
|
|
13823
13823
|
],
|
|
13824
13824
|
"docs": "Dismiss the loading overlay after it has been presented.",
|
|
@@ -13829,7 +13829,7 @@
|
|
|
13829
13829
|
},
|
|
13830
13830
|
{
|
|
13831
13831
|
"name": "param",
|
|
13832
|
-
"text": "role The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
13832
|
+
"text": "role The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
13833
13833
|
}
|
|
13834
13834
|
]
|
|
13835
13835
|
},
|
|
@@ -15526,7 +15526,7 @@
|
|
|
15526
15526
|
{
|
|
15527
15527
|
"name": "role",
|
|
15528
15528
|
"type": "string | undefined",
|
|
15529
|
-
"docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
|
|
15529
|
+
"docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
15530
15530
|
}
|
|
15531
15531
|
],
|
|
15532
15532
|
"references": {
|
|
@@ -15551,7 +15551,7 @@
|
|
|
15551
15551
|
{
|
|
15552
15552
|
"name": "role",
|
|
15553
15553
|
"type": "string | undefined",
|
|
15554
|
-
"docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
|
|
15554
|
+
"docs": "The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
15555
15555
|
}
|
|
15556
15556
|
],
|
|
15557
15557
|
"docs": "Dismiss the modal overlay after it has been presented.",
|
|
@@ -15562,7 +15562,7 @@
|
|
|
15562
15562
|
},
|
|
15563
15563
|
{
|
|
15564
15564
|
"name": "param",
|
|
15565
|
-
"text": "role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
|
|
15565
|
+
"text": "role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
15566
15566
|
}
|
|
15567
15567
|
]
|
|
15568
15568
|
},
|
|
@@ -17787,7 +17787,7 @@
|
|
|
17787
17787
|
{
|
|
17788
17788
|
"name": "role",
|
|
17789
17789
|
"type": "string | undefined",
|
|
17790
|
-
"docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
17790
|
+
"docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
17791
17791
|
}
|
|
17792
17792
|
],
|
|
17793
17793
|
"references": {
|
|
@@ -17808,7 +17808,7 @@
|
|
|
17808
17808
|
{
|
|
17809
17809
|
"name": "role",
|
|
17810
17810
|
"type": "string | undefined",
|
|
17811
|
-
"docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
17811
|
+
"docs": "The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
17812
17812
|
}
|
|
17813
17813
|
],
|
|
17814
17814
|
"docs": "Dismiss the picker overlay after it has been presented.",
|
|
@@ -17819,7 +17819,7 @@
|
|
|
17819
17819
|
},
|
|
17820
17820
|
{
|
|
17821
17821
|
"name": "param",
|
|
17822
|
-
"text": "role The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
17822
|
+
"text": "role The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
17823
17823
|
}
|
|
17824
17824
|
]
|
|
17825
17825
|
},
|
|
@@ -18829,7 +18829,7 @@
|
|
|
18829
18829
|
{
|
|
18830
18830
|
"name": "dismissParentPopover",
|
|
18831
18831
|
"type": "boolean",
|
|
18832
|
-
"docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true
|
|
18832
|
+
"docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
18833
18833
|
}
|
|
18834
18834
|
],
|
|
18835
18835
|
"references": {
|
|
@@ -18859,7 +18859,7 @@
|
|
|
18859
18859
|
{
|
|
18860
18860
|
"name": "dismissParentPopover",
|
|
18861
18861
|
"type": "boolean",
|
|
18862
|
-
"docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true
|
|
18862
|
+
"docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
18863
18863
|
}
|
|
18864
18864
|
],
|
|
18865
18865
|
"docs": "Dismiss the popover overlay after it has been presented.",
|
|
@@ -18874,7 +18874,7 @@
|
|
|
18874
18874
|
},
|
|
18875
18875
|
{
|
|
18876
18876
|
"name": "param",
|
|
18877
|
-
"text": "dismissParentPopover If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true
|
|
18877
|
+
"text": "dismissParentPopover If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
18878
18878
|
}
|
|
18879
18879
|
]
|
|
18880
18880
|
},
|
|
@@ -28180,7 +28180,7 @@
|
|
|
28180
28180
|
{
|
|
28181
28181
|
"name": "role",
|
|
28182
28182
|
"type": "string | undefined",
|
|
28183
|
-
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
28183
|
+
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
28184
28184
|
}
|
|
28185
28185
|
],
|
|
28186
28186
|
"references": {
|
|
@@ -28206,7 +28206,7 @@
|
|
|
28206
28206
|
{
|
|
28207
28207
|
"name": "role",
|
|
28208
28208
|
"type": "string | undefined",
|
|
28209
|
-
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
28209
|
+
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
28210
28210
|
}
|
|
28211
28211
|
],
|
|
28212
28212
|
"docs": "Dismiss the toast overlay after it has been presented.",
|
|
@@ -28217,7 +28217,7 @@
|
|
|
28217
28217
|
},
|
|
28218
28218
|
{
|
|
28219
28219
|
"name": "param",
|
|
28220
|
-
"text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"
|
|
28220
|
+
"text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`.\n\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method."
|
|
28221
28221
|
}
|
|
28222
28222
|
]
|
|
28223
28223
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { w as writeTask } from './index-
|
|
4
|
+
import { w as writeTask } from './index-4c30cddd.js';
|
|
5
5
|
import { h as hapticSelectionEnd, a as hapticSelectionStart, b as hapticSelectionChanged } from './haptic-554688a5.js';
|
|
6
6
|
import { createGesture } from './index-2cf77112.js';
|
|
7
7
|
|