voyager-ionic-core 7.7.2 → 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/helpers.js +2 -2
- package/components/ion-select.js +3 -3
- package/components/label.js +2 -2
- package/components/overlays.js +66 -20
- package/dist/cjs/{animation-fdab9de5.js → animation-c2840aea.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/{helpers-2e1028fa.js → helpers-da4c0ed1.js} +2 -2
- package/dist/cjs/{index-a43f7a0f.js → index-4c96691f.js} +2 -2
- package/dist/cjs/{index-10da82ce.js → index-62290fec.js} +1 -1
- package/dist/cjs/{index-c3580a90.js → index-9bfcb6e8.js} +3 -3
- package/dist/cjs/{index-53d162b2.js → index-bef98850.js} +1 -1
- package/dist/cjs/index.cjs.js +8 -8
- 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 +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +4 -4
- package/dist/cjs/ion-alert.cjs.entry.js +4 -4
- package/dist/cjs/ion-app_8.cjs.entry.js +8 -8
- package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-button_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-card_5.cjs.entry.js +1 -1
- package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-img.cjs.entry.js +1 -1
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +4 -4
- package/dist/cjs/ion-item-option_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
- package/dist/cjs/ion-loading.cjs.entry.js +4 -4
- package/dist/cjs/ion-menu_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-modal.cjs.entry.js +6 -6
- package/dist/cjs/ion-nav_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-picker-column-internal.cjs.entry.js +1 -1
- package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +5 -5
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
- package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-tab_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +4 -4
- package/dist/cjs/ion-toast.cjs.entry.js +4 -4
- package/dist/cjs/ion-toggle.cjs.entry.js +2 -2
- package/dist/cjs/{ios.transition-c3b11cc3.js → ios.transition-96679580.js} +3 -3
- package/dist/cjs/{md.transition-82a8c649.js → md.transition-d6c98822.js} +3 -3
- package/dist/cjs/{notch-controller-db0127c4.js → notch-controller-bfbcbb7a.js} +1 -1
- package/dist/cjs/{overlays-fb7ca451.js → overlays-db5d96f3.js} +67 -21
- package/dist/cjs/{status-tap-692f6d32.js → status-tap-7ad5f0fb.js} +2 -2
- package/dist/cjs/{swipe-back-7a848bb8.js → swipe-back-dcd0d4a9.js} +1 -1
- 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/select/select.js +3 -3
- package/dist/collection/utils/helpers.js +1 -1
- package/dist/collection/utils/overlays.js +66 -20
- package/dist/collection/utils/test/overlays/overlays.e2e.js +89 -0
- package/dist/docs.json +1 -1
- package/dist/esm/{animation-60dbdd13.js → animation-6a0c5338.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/{helpers-c0b9ca37.js → helpers-be245865.js} +2 -2
- package/dist/esm/{index-d64f34ea.js → index-020f5464.js} +1 -1
- package/dist/esm/{index-0b4beb69.js → index-348ed70a.js} +3 -3
- package/dist/esm/{index-47b2066d.js → index-e1b622e3.js} +2 -2
- package/dist/esm/{index-eb12ef92.js → index-f3946ac1.js} +1 -1
- package/dist/esm/index.js +8 -8
- 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 +1 -1
- package/dist/esm/ion-action-sheet.entry.js +4 -4
- package/dist/esm/ion-alert.entry.js +4 -4
- package/dist/esm/ion-app_8.entry.js +8 -8
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm/ion-button_2.entry.js +1 -1
- package/dist/esm/ion-card_5.entry.js +1 -1
- package/dist/esm/ion-checkbox.entry.js +2 -2
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +4 -4
- package/dist/esm/ion-fab_3.entry.js +1 -1
- package/dist/esm/ion-img.entry.js +1 -1
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +4 -4
- package/dist/esm/ion-item-option_3.entry.js +2 -2
- package/dist/esm/ion-item_8.entry.js +3 -3
- package/dist/esm/ion-loading.entry.js +4 -4
- package/dist/esm/ion-menu_3.entry.js +5 -5
- package/dist/esm/ion-modal.entry.js +6 -6
- package/dist/esm/ion-nav_2.entry.js +4 -4
- package/dist/esm/ion-picker-column-internal.entry.js +1 -1
- package/dist/esm/ion-picker-internal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +5 -5
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +3 -3
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-route_4.entry.js +1 -1
- package/dist/esm/ion-searchbar.entry.js +1 -1
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +7 -7
- package/dist/esm/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm/ion-tab_2.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +4 -4
- package/dist/esm/ion-toast.entry.js +4 -4
- package/dist/esm/ion-toggle.entry.js +2 -2
- package/dist/esm/{ios.transition-b76c7020.js → ios.transition-7459f819.js} +3 -3
- package/dist/esm/{md.transition-564937a7.js → md.transition-b8224313.js} +3 -3
- package/dist/esm/{notch-controller-15d281a4.js → notch-controller-6bd3e0f9.js} +1 -1
- package/dist/esm/{overlays-04a9a43f.js → overlays-19b26885.js} +67 -21
- package/dist/esm/{status-tap-5a95077d.js → status-tap-b41ece3c.js} +2 -2
- 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/{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/helpers-be245865.js +4 -0
- package/dist/esm-es5/index-020f5464.js +4 -0
- package/dist/esm-es5/{index-0b4beb69.js → index-348ed70a.js} +1 -1
- package/dist/esm-es5/{index-47b2066d.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-back-button.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-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-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-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-tab_2.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/{ios.transition-b76c7020.js → ios.transition-7459f819.js} +1 -1
- 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-5a95077d.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/{p-bd4787eb.entry.js → p-021f9d72.entry.js} +1 -1
- package/dist/ionic/{p-f53d074d.system.entry.js → p-02542247.system.entry.js} +1 -1
- package/dist/ionic/p-02ad4bbe.js +4 -0
- package/dist/ionic/{p-30cd5e7b.js → p-05253db9.js} +1 -1
- package/dist/ionic/{p-64db1331.entry.js → p-079da3df.entry.js} +1 -1
- package/dist/ionic/p-0b34d3a7.system.js +1 -1
- package/dist/ionic/{p-396083cc.entry.js → p-12527c4b.entry.js} +1 -1
- package/dist/ionic/{p-2e14c533.system.js → p-125f8cdd.system.js} +1 -1
- package/dist/ionic/{p-b253ad7f.js → p-12a8643e.js} +1 -1
- package/dist/ionic/{p-c39cc96d.system.entry.js → p-15a40a0b.system.entry.js} +1 -1
- package/dist/ionic/p-1846513c.js +4 -0
- package/dist/ionic/{p-afd6d696.system.entry.js → p-18918a24.system.entry.js} +1 -1
- package/dist/ionic/{p-027f3674.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-b0ff8075.entry.js → p-2178329b.entry.js} +1 -1
- package/dist/ionic/p-257046d2.system.js +4 -0
- package/dist/ionic/{p-5b40d967.entry.js → p-262024fd.entry.js} +1 -1
- package/dist/ionic/{p-5928fac9.system.entry.js → p-2765a571.system.entry.js} +1 -1
- package/dist/ionic/{p-f0194418.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-275705e5.entry.js → p-2c4bfe1c.entry.js} +1 -1
- package/dist/ionic/{p-74deb358.system.js → p-2c86025e.system.js} +1 -1
- package/dist/ionic/{p-1131946f.system.entry.js → p-2ea71956.system.entry.js} +1 -1
- package/dist/ionic/{p-05d560ec.entry.js → p-2fd3c3dd.entry.js} +1 -1
- package/dist/ionic/p-36be3332.js +4 -0
- package/dist/ionic/{p-3471a7c0.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-508a4c87.entry.js → p-4788693d.entry.js} +1 -1
- package/dist/ionic/{p-cd9a7017.system.entry.js → p-479f5926.system.entry.js} +1 -1
- package/dist/ionic/{p-2e1f014a.system.entry.js → p-482ea916.system.entry.js} +1 -1
- package/dist/ionic/{p-edcada2b.system.entry.js → p-49f481cc.system.entry.js} +1 -1
- package/dist/ionic/{p-8794fa00.system.entry.js → p-4b8a620f.system.entry.js} +1 -1
- package/dist/ionic/{p-2327064c.entry.js → p-521b3971.entry.js} +1 -1
- package/dist/ionic/{p-31c495c2.js → p-56ee6d9a.js} +1 -1
- package/dist/ionic/{p-a022b684.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-64856c3c.system.entry.js → p-644d03d7.system.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-3e9ad72a.system.entry.js → p-6b6ca3f5.system.entry.js} +1 -1
- package/dist/ionic/p-6c45c617.js +4 -0
- package/dist/ionic/{p-eb07b88f.entry.js → p-6e23d039.entry.js} +1 -1
- package/dist/ionic/{p-18beebdf.system.entry.js → p-6f59cdbc.system.entry.js} +1 -1
- package/dist/ionic/{p-0457213c.entry.js → p-70fbf4e2.entry.js} +1 -1
- package/dist/ionic/{p-fb9f8495.system.entry.js → p-741a0f0d.system.entry.js} +1 -1
- package/dist/ionic/{p-601e17b4.entry.js → p-7670acd8.entry.js} +1 -1
- package/dist/ionic/{p-e04b9647.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-3d961d93.entry.js → p-7a615a5a.entry.js} +1 -1
- package/dist/ionic/{p-d39ab63d.entry.js → p-7e16220b.entry.js} +1 -1
- package/dist/ionic/{p-7b1ed642.system.entry.js → p-7e838f43.system.entry.js} +1 -1
- package/dist/ionic/{p-bf05cbc7.entry.js → p-7f30ad48.entry.js} +1 -1
- package/dist/ionic/{p-42a9f663.system.entry.js → p-80aed9fb.system.entry.js} +1 -1
- package/dist/ionic/{p-5c580e89.entry.js → p-822730c4.entry.js} +1 -1
- package/dist/ionic/{p-c11bab7e.entry.js → p-84b85535.entry.js} +1 -1
- package/dist/ionic/{p-667e3e2d.entry.js → p-85f66c3c.entry.js} +1 -1
- package/dist/ionic/{p-6486e393.system.entry.js → p-860e2539.system.entry.js} +1 -1
- package/dist/ionic/{p-a6e465f5.entry.js → p-8cc34120.entry.js} +1 -1
- package/dist/ionic/{p-c747f89b.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-f460c7ae.entry.js → p-96084f36.entry.js} +1 -1
- package/dist/ionic/{p-5f169eba.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-5c6a04bd.entry.js → p-98aa0553.entry.js} +1 -1
- package/dist/ionic/{p-ea25b4c8.system.entry.js → p-9998cb62.system.entry.js} +1 -1
- package/dist/ionic/{p-aaaa615c.system.entry.js → p-9de75bac.system.entry.js} +1 -1
- package/dist/ionic/{p-502780e4.entry.js → p-a02ea777.entry.js} +1 -1
- package/dist/ionic/{p-c2289cd1.js → p-a1036ce7.js} +1 -1
- package/dist/ionic/{p-7ce40e7b.entry.js → p-a1222c24.entry.js} +1 -1
- package/dist/ionic/{p-e81bf09e.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-123b4809.js → p-a6c0a380.js} +1 -1
- package/dist/ionic/{p-4fda5c35.entry.js → p-a8459bfb.entry.js} +1 -1
- package/dist/ionic/{p-b2595011.system.entry.js → p-ae2b3a7a.system.entry.js} +1 -1
- package/dist/ionic/{p-0e23c289.system.entry.js → p-ae828bd9.system.entry.js} +1 -1
- package/dist/ionic/{p-cde3ac34.system.entry.js → p-b0aa3806.system.entry.js} +1 -1
- package/dist/ionic/{p-a0b28c69.system.entry.js → p-b27bba38.system.entry.js} +1 -1
- package/dist/ionic/p-b4d2f43c.system.js +4 -0
- package/dist/ionic/{p-91cb3f9a.entry.js → p-b58686e0.entry.js} +1 -1
- package/dist/ionic/{p-43a5edee.entry.js → p-b727af6a.entry.js} +1 -1
- package/dist/ionic/{p-cb9e71e0.entry.js → p-ba0fbecc.entry.js} +1 -1
- package/dist/ionic/{p-3481d54e.system.entry.js → p-baf8eeac.system.entry.js} +1 -1
- package/dist/ionic/{p-9cd7ba27.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-ae35294f.system.entry.js → p-c1a871ff.system.entry.js} +1 -1
- package/dist/ionic/{p-db30f71b.entry.js → p-c1c7309e.entry.js} +1 -1
- package/dist/ionic/{p-1924f2e0.system.entry.js → p-c7288e78.system.entry.js} +2 -2
- package/dist/ionic/{p-f840d817.entry.js → p-cb3065b8.entry.js} +1 -1
- package/dist/ionic/{p-23c73017.entry.js → p-cb9812f7.entry.js} +1 -1
- package/dist/ionic/{p-d4cadd34.system.js → p-cbcffe6e.system.js} +1 -1
- package/dist/ionic/{p-7173ba59.system.entry.js → p-ce1c0a0e.system.entry.js} +1 -1
- package/dist/ionic/p-cfb4d7e0.js +4 -0
- package/dist/ionic/{p-5e23bea8.system.entry.js → p-d143fefa.system.entry.js} +1 -1
- package/dist/ionic/{p-95d5a097.entry.js → p-d425b1de.entry.js} +1 -1
- package/dist/ionic/{p-c1797ec5.system.entry.js → p-d6c6541b.system.entry.js} +1 -1
- package/dist/ionic/{p-dcb5711d.entry.js → p-dff97cfa.entry.js} +1 -1
- package/dist/ionic/{p-c308f773.entry.js → p-e1c52dc6.entry.js} +1 -1
- package/dist/ionic/{p-f8c96502.system.entry.js → p-e4e74b5f.system.entry.js} +1 -1
- package/dist/ionic/{p-68ba8e77.system.entry.js → p-e626800f.system.entry.js} +1 -1
- package/dist/ionic/{p-64761c90.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-70e34286.system.entry.js → p-ebc86ce9.system.entry.js} +1 -1
- package/dist/ionic/{p-a8a56449.entry.js → p-ed4760ef.entry.js} +1 -1
- package/dist/ionic/{p-9ec7208d.system.js → p-f02c41af.system.js} +1 -1
- package/dist/ionic/{p-ba97a133.system.entry.js → p-f0e54781.system.entry.js} +1 -1
- package/dist/ionic/{p-3a7de59c.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/utils/helpers.d.ts +1 -1
- package/dist/types/utils/overlays.d.ts +5 -0
- package/hydrate/index.js +70 -24
- package/package.json +1 -1
- package/dist/esm-es5/helpers-c0b9ca37.js +0 -4
- package/dist/esm-es5/index-d64f34ea.js +0 -4
- package/dist/esm-es5/md.transition-564937a7.js +0 -4
- package/dist/esm-es5/overlays-04a9a43f.js +0 -4
- package/dist/ionic/p-21ca1f1c.js +0 -4
- package/dist/ionic/p-49aba878.js +0 -4
- package/dist/ionic/p-4f777b5e.js +0 -4
- package/dist/ionic/p-5c2ae448.js +0 -4
- package/dist/ionic/p-a5951821.system.js +0 -4
- package/dist/ionic/p-c80c7e90.system.js +0 -4
- package/dist/ionic/p-dbcba5a2.js +0 -4
- package/dist/ionic/p-e9f9388e.system.js +0 -4
- 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
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
const index = require('./index-c8d52405.js');
|
|
7
7
|
const hardwareBackButton = require('./hardware-back-button-2696acaf.js');
|
|
8
8
|
const ionicGlobal = require('./ionic-global-59a10130.js');
|
|
9
|
-
const frameworkDelegate = require('./framework-delegate-
|
|
10
|
-
const helpers = require('./helpers-
|
|
9
|
+
const frameworkDelegate = require('./framework-delegate-e0e13baa.js');
|
|
10
|
+
const helpers = require('./helpers-da4c0ed1.js');
|
|
11
11
|
const index$1 = require('./index-5915f9b3.js');
|
|
12
12
|
|
|
13
13
|
let lastOverlayIndex = 0;
|
|
@@ -100,32 +100,48 @@ const createOverlay = (tagName, opts) => {
|
|
|
100
100
|
* valid usage for the disabled property on ion-button.
|
|
101
101
|
*/
|
|
102
102
|
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])';
|
|
103
|
+
const isOverlayHidden = (overlay) => overlay.classList.contains('overlay-hidden');
|
|
104
|
+
/**
|
|
105
|
+
* Focuses the first descendant in an overlay
|
|
106
|
+
* that can receive focus. If none exists,
|
|
107
|
+
* the entire overlay will be focused.
|
|
108
|
+
*/
|
|
103
109
|
const focusFirstDescendant = (ref, overlay) => {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (shadowRoot) {
|
|
107
|
-
// If there are no inner focusable elements, just focus the host element.
|
|
108
|
-
firstInput = shadowRoot.querySelector(focusableQueryString) || firstInput;
|
|
109
|
-
}
|
|
110
|
-
if (firstInput) {
|
|
111
|
-
helpers.focusElement(firstInput);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
// Focus overlay instead of letting focus escape
|
|
115
|
-
overlay.focus();
|
|
116
|
-
}
|
|
110
|
+
const firstInput = ref.querySelector(focusableQueryString);
|
|
111
|
+
focusElementInOverlay(firstInput, overlay);
|
|
117
112
|
};
|
|
118
|
-
|
|
113
|
+
/**
|
|
114
|
+
* Focuses the last descendant in an overlay
|
|
115
|
+
* that can receive focus. If none exists,
|
|
116
|
+
* the entire overlay will be focused.
|
|
117
|
+
*/
|
|
119
118
|
const focusLastDescendant = (ref, overlay) => {
|
|
120
119
|
const inputs = Array.from(ref.querySelectorAll(focusableQueryString));
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
const lastInput = inputs.length > 0 ? inputs[inputs.length - 1] : null;
|
|
121
|
+
focusElementInOverlay(lastInput, overlay);
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Focuses a particular element in an overlay. If the element
|
|
125
|
+
* doesn't have anything focusable associated with it then
|
|
126
|
+
* the overlay itself will be focused.
|
|
127
|
+
* This should be used instead of the focus() method
|
|
128
|
+
* on most elements because the focusable element
|
|
129
|
+
* may not be the host element.
|
|
130
|
+
*
|
|
131
|
+
* For example, if an ion-button should be focused
|
|
132
|
+
* then we should actually focus the native <button>
|
|
133
|
+
* element inside of ion-button's shadow root, not
|
|
134
|
+
* the host element itself.
|
|
135
|
+
*/
|
|
136
|
+
const focusElementInOverlay = (hostToFocus, overlay) => {
|
|
137
|
+
let elementToFocus = hostToFocus;
|
|
138
|
+
const shadowRoot = hostToFocus === null || hostToFocus === void 0 ? void 0 : hostToFocus.shadowRoot;
|
|
123
139
|
if (shadowRoot) {
|
|
124
140
|
// If there are no inner focusable elements, just focus the host element.
|
|
125
|
-
|
|
141
|
+
elementToFocus = shadowRoot.querySelector(focusableQueryString) || hostToFocus;
|
|
126
142
|
}
|
|
127
|
-
if (
|
|
128
|
-
|
|
143
|
+
if (elementToFocus) {
|
|
144
|
+
helpers.focusVisibleElement(elementToFocus);
|
|
129
145
|
}
|
|
130
146
|
else {
|
|
131
147
|
// Focus overlay instead of letting focus escape
|
|
@@ -176,6 +192,21 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
176
192
|
*/
|
|
177
193
|
if (lastOverlay === target) {
|
|
178
194
|
lastOverlay.lastFocus = undefined;
|
|
195
|
+
/**
|
|
196
|
+
* Toasts can be presented from an overlay.
|
|
197
|
+
* However, focus should still be returned to
|
|
198
|
+
* the overlay when clicking a toast. Normally,
|
|
199
|
+
* focus would be returned to the last focusable
|
|
200
|
+
* descendant in the overlay which may not always be
|
|
201
|
+
* the button that the toast was presented from. In this case,
|
|
202
|
+
* the focus may be returned to an unexpected element.
|
|
203
|
+
* To account for this, we make sure to return focus to the
|
|
204
|
+
* last focused element in the overlay if focus is
|
|
205
|
+
* moved to the toast.
|
|
206
|
+
*/
|
|
207
|
+
}
|
|
208
|
+
else if (target.tagName === 'ION-TOAST') {
|
|
209
|
+
focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
|
|
179
210
|
/**
|
|
180
211
|
* Otherwise, we must be focusing an element
|
|
181
212
|
* inside of the overlay. The two possible options
|
|
@@ -247,6 +278,21 @@ const trapKeyboardFocus = (ev, doc) => {
|
|
|
247
278
|
*/
|
|
248
279
|
if (lastOverlay.contains(target)) {
|
|
249
280
|
lastOverlay.lastFocus = target;
|
|
281
|
+
/**
|
|
282
|
+
* Toasts can be presented from an overlay.
|
|
283
|
+
* However, focus should still be returned to
|
|
284
|
+
* the overlay when clicking a toast. Normally,
|
|
285
|
+
* focus would be returned to the last focusable
|
|
286
|
+
* descendant in the overlay which may not always be
|
|
287
|
+
* the button that the toast was presented from. In this case,
|
|
288
|
+
* the focus may be returned to an unexpected element.
|
|
289
|
+
* To account for this, we make sure to return focus to the
|
|
290
|
+
* last focused element in the overlay if focus is
|
|
291
|
+
* moved to the toast.
|
|
292
|
+
*/
|
|
293
|
+
}
|
|
294
|
+
else if (target.tagName === 'ION-TOAST') {
|
|
295
|
+
focusElementInOverlay(lastOverlay.lastFocus, lastOverlay);
|
|
250
296
|
}
|
|
251
297
|
else {
|
|
252
298
|
/**
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
const index = require('./index-0ffe376d.js');
|
|
7
|
-
const index$1 = require('./index-
|
|
8
|
-
const helpers = require('./helpers-
|
|
7
|
+
const index$1 = require('./index-bef98850.js');
|
|
8
|
+
const helpers = require('./helpers-da4c0ed1.js');
|
|
9
9
|
require('./index-5915f9b3.js');
|
|
10
10
|
|
|
11
11
|
const startStatusTap = () => {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { expect } from "@playwright/test";
|
|
5
|
+
import { configs, test } from "../../../../utils/test/playwright/index";
|
|
6
|
+
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
7
|
+
test.describe(title('label: in item'), () => {
|
|
8
|
+
test('should render correctly in an item', async ({ page }) => {
|
|
9
|
+
test.info().annotations.push({
|
|
10
|
+
type: 'issue',
|
|
11
|
+
description: 'https://github.com/ionic-team/ionic-framework/issues/29033',
|
|
12
|
+
});
|
|
13
|
+
await page.setContent(`
|
|
14
|
+
<ion-item>
|
|
15
|
+
<ion-label slot="start">Start</ion-label>
|
|
16
|
+
<ion-label>Default</ion-label>
|
|
17
|
+
<ion-label slot="end">End</ion-label>
|
|
18
|
+
</ion-item>
|
|
19
|
+
`, config);
|
|
20
|
+
const item = page.locator('ion-item');
|
|
21
|
+
await expect(item).toHaveScreenshot(screenshot(`label-item`));
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Host, h, forceUpdate } from "@stencil/core";
|
|
5
5
|
import { compareOptions, createLegacyFormController, createNotchController, isOptionSelected } from "../../utils/forms/index";
|
|
6
|
-
import { findItemLabel,
|
|
6
|
+
import { findItemLabel, focusVisibleElement, getAriaLabel, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
|
|
7
7
|
import { printIonWarning } from "../../utils/logging/index";
|
|
8
8
|
import { actionSheetController, alertController, popoverController } from "../../utils/overlays";
|
|
9
9
|
import { isRTL } from "../../utils/rtl/index";
|
|
@@ -158,7 +158,7 @@ export class Select {
|
|
|
158
158
|
if (indexOfSelected > -1) {
|
|
159
159
|
const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
|
|
160
160
|
if (selectedItem) {
|
|
161
|
-
|
|
161
|
+
focusVisibleElement(selectedItem);
|
|
162
162
|
/**
|
|
163
163
|
* Browsers such as Firefox do not
|
|
164
164
|
* correctly delegate focus when manually
|
|
@@ -182,7 +182,7 @@ export class Select {
|
|
|
182
182
|
*/
|
|
183
183
|
const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
|
|
184
184
|
if (firstEnabledOption) {
|
|
185
|
-
|
|
185
|
+
focusVisibleElement(firstEnabledOption.closest('ion-item'));
|
|
186
186
|
/**
|
|
187
187
|
* Focus the option for the same reason as we do above.
|
|
188
188
|
*/
|
|
@@ -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
|
/**
|
|
@@ -175,6 +175,95 @@ 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
|
+
});
|
|
178
267
|
test('should not return focus to another element if focus already manually returned', async ({ page, skip, }, testInfo) => {
|
|
179
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.');
|
|
180
269
|
testInfo.annotations.push({
|
package/dist/docs.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { h as findItemLabel } from './helpers-
|
|
4
|
+
import { h as findItemLabel } from './helpers-be245865.js';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Creates a controller that tracks whether a form control is using the legacy or modern syntax. This should be removed when the legacy form control syntax is removed.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { c as componentOnReady } from './helpers-
|
|
4
|
+
import { c as componentOnReady } from './helpers-be245865.js';
|
|
5
5
|
|
|
6
6
|
// TODO(FW-2832): types
|
|
7
7
|
const attachComponent = async (delegate, container, component, cssClasses, componentProps, inline) => {
|
|
@@ -237,7 +237,7 @@ const findItemLabel = (componentEl) => {
|
|
|
237
237
|
}
|
|
238
238
|
return null;
|
|
239
239
|
};
|
|
240
|
-
const
|
|
240
|
+
const focusVisibleElement = (el) => {
|
|
241
241
|
el.focus();
|
|
242
242
|
/**
|
|
243
243
|
* When programmatically focusing an element,
|
|
@@ -415,4 +415,4 @@ const shallowEqualStringMap = (map1, map2) => {
|
|
|
415
415
|
return true;
|
|
416
416
|
};
|
|
417
417
|
|
|
418
|
-
export { addEventListener as a, removeEventListener as b, componentOnReady as c, renderHiddenInput as d, getAriaLabel as e,
|
|
418
|
+
export { addEventListener as a, removeEventListener as b, componentOnReady as c, renderHiddenInput as d, getAriaLabel as e, focusVisibleElement as f, getElementRoot as g, findItemLabel as h, inheritAriaAttributes as i, debounceEvent as j, inheritAttributes as k, clamp as l, hasLazyBuild as m, hasShadowDom as n, assert as o, isEndSide as p, debounce as q, raf as r, shallowEqualStringMap as s, transitionEndAsync as t, now as u, pointerCoord as v };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { d as doc } from './index-a5d50daf.js';
|
|
5
|
-
import { u as now, v as pointerCoord } from './helpers-
|
|
5
|
+
import { u as now, v as pointerCoord } from './helpers-be245865.js';
|
|
6
6
|
|
|
7
7
|
const startTapClick = (config) => {
|
|
8
8
|
if (doc === undefined) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { w as writeTask, B as Build } from './index-4c30cddd.js';
|
|
5
|
-
import { r as raf } from './helpers-
|
|
5
|
+
import { r as raf } from './helpers-be245865.js';
|
|
6
6
|
|
|
7
7
|
const LIFECYCLE_WILL_ENTER = 'ionViewWillEnter';
|
|
8
8
|
const LIFECYCLE_DID_ENTER = 'ionViewDidEnter';
|
|
@@ -10,8 +10,8 @@ const LIFECYCLE_WILL_LEAVE = 'ionViewWillLeave';
|
|
|
10
10
|
const LIFECYCLE_DID_LEAVE = 'ionViewDidLeave';
|
|
11
11
|
const LIFECYCLE_WILL_UNLOAD = 'ionViewWillUnload';
|
|
12
12
|
|
|
13
|
-
const iosTransitionAnimation = () => import('./ios.transition-
|
|
14
|
-
const mdTransitionAnimation = () => import('./md.transition-
|
|
13
|
+
const iosTransitionAnimation = () => import('./ios.transition-7459f819.js');
|
|
14
|
+
const mdTransitionAnimation = () => import('./md.transition-b8224313.js');
|
|
15
15
|
// TODO(FW-2832): types
|
|
16
16
|
const transition = (opts) => {
|
|
17
17
|
return new Promise((resolve, reject) => {
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
import { d as doc } from './index-a5d50daf.js';
|
|
5
5
|
import { MENU_BACK_BUTTON_PRIORITY } from './hardware-back-button-b410a047.js';
|
|
6
6
|
import { p as printIonWarning } from './index-9b0d46f4.js';
|
|
7
|
-
import { c as componentOnReady } from './helpers-
|
|
7
|
+
import { c as componentOnReady } from './helpers-be245865.js';
|
|
8
8
|
import { b as getIonMode } from './ionic-global-ad9a1810.js';
|
|
9
|
-
import { c as createAnimation } from './animation-
|
|
9
|
+
import { c as createAnimation } from './animation-6a0c5338.js';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* baseAnimation
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { c as componentOnReady } from './helpers-
|
|
4
|
+
import { c as componentOnReady } from './helpers-be245865.js';
|
|
5
5
|
import { b as printRequiredElementError } from './index-9b0d46f4.js';
|
|
6
6
|
|
|
7
7
|
const ION_CONTENT_TAG_NAME = 'ION-CONTENT';
|
package/dist/esm/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
export { c as createAnimation } from './animation-
|
|
5
|
-
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-
|
|
6
|
-
export { iosTransitionAnimation } from './ios.transition-
|
|
7
|
-
export { mdTransitionAnimation } from './md.transition-
|
|
4
|
+
export { c as createAnimation } from './animation-6a0c5338.js';
|
|
5
|
+
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-348ed70a.js';
|
|
6
|
+
export { iosTransitionAnimation } from './ios.transition-7459f819.js';
|
|
7
|
+
export { mdTransitionAnimation } from './md.transition-b8224313.js';
|
|
8
8
|
export { g as getTimeGivenProgression } from './cubic-bezier-fe2083dc.js';
|
|
9
9
|
export { createGesture } from './index-2cf77112.js';
|
|
10
10
|
export { g as getPlatforms, i as initialize, a as isPlatform } from './ionic-global-ad9a1810.js';
|
|
11
|
-
export { c as componentOnReady } from './helpers-
|
|
11
|
+
export { c as componentOnReady } from './helpers-be245865.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
|
-
export { m as menuController } from './index-
|
|
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-
|
|
14
|
+
export { m as menuController } from './index-e1b622e3.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-19b26885.js';
|
|
16
16
|
import './index-a5d50daf.js';
|
|
17
17
|
import './index-4c30cddd.js';
|
|
18
18
|
import './gesture-controller-1bf57181.js';
|
|
19
19
|
import './hardware-back-button-b410a047.js';
|
|
20
20
|
import './index-9b0d46f4.js';
|
|
21
|
-
import './framework-delegate-
|
|
21
|
+
import './framework-delegate-ed4ba327.js';
|
|
22
22
|
|
|
23
23
|
const IonicSlides = (opts) => {
|
|
24
24
|
const { swiper, extendParams } = opts;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { w as win, d as doc } from './index-a5d50daf.js';
|
|
5
|
-
import { g as getScrollElement, c as scrollByPoint, f as findClosestIonContent } from './index-
|
|
6
|
-
import { a as addEventListener, b as removeEventListener, r as raf, c as componentOnReady } from './helpers-
|
|
5
|
+
import { g as getScrollElement, c as scrollByPoint, f as findClosestIonContent } from './index-f3946ac1.js';
|
|
6
|
+
import { a as addEventListener, b as removeEventListener, r as raf, c as componentOnReady } from './helpers-be245865.js';
|
|
7
7
|
import { a as KeyboardResize, K as Keyboard } from './keyboard-73175e24.js';
|
|
8
8
|
import './index-9b0d46f4.js';
|
|
9
9
|
import './capacitor-59395cbd.js';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { w as win } from './index-a5d50daf.js';
|
|
5
|
-
import { r as raf } from './helpers-
|
|
5
|
+
import { r as raf } from './helpers-be245865.js';
|
|
6
6
|
import { a as printIonError } from './index-9b0d46f4.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, h, H as Host, f as getElement, d as createEvent } from './index-4c30cddd.js';
|
|
5
|
-
import { r as raf, t as transitionEndAsync, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers-
|
|
5
|
+
import { r as raf, t as transitionEndAsync, a as addEventListener, b as removeEventListener, g as getElementRoot } from './helpers-be245865.js';
|
|
6
6
|
import { l as chevronDown } from './index-f7dc70ba.js';
|
|
7
7
|
import { c as config, b as getIonMode } from './ionic-global-ad9a1810.js';
|
|
8
8
|
import { p as printIonWarning } from './index-9b0d46f4.js';
|