@ionic/core 7.4.4-dev.11699472805.157e2476 → 7.4.4-dev.11699475060.1eee2115
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/alert.js +0 -8
- package/components/checkbox.js +3 -0
- package/components/data.js +22 -96
- package/components/haptic.js +0 -1
- package/components/icon.js +5 -9
- package/components/index.js +0 -1
- package/components/index4.js +19 -26
- package/components/index7.js +1 -1
- package/components/ion-datetime-button.js +4 -4
- package/components/ion-datetime.js +3 -3
- package/components/ion-menu.js +12 -0
- package/components/ion-nav.js +0 -1
- package/components/ion-router.js +0 -3
- package/components/ion-select.js +32 -18
- package/components/ion-toast.js +13 -157
- package/components/ion-toggle.js +3 -0
- package/components/ios.transition.js +0 -1
- package/components/overlays.js +0 -1
- package/components/radio-group.js +1 -1
- package/components/radio.js +4 -1
- package/dist/cjs/{app-globals-84b6a756.js → app-globals-fe1ad535.js} +1 -1
- package/dist/cjs/{button-active-f2147e85.js → button-active-0932cee9.js} +2 -2
- package/dist/cjs/{data-c8d21093.js → data-db832785.js} +22 -96
- package/dist/cjs/{haptic-678abc9f.js → haptic-c5f6b4d5.js} +0 -1
- package/dist/cjs/{index-14a4821e.js → index-305a23dc.js} +95 -51
- package/dist/cjs/{index-33d2809c.js → index-d3568232.js} +3 -3
- package/dist/cjs/{index-d8f84c5a.js → index-d8d1fc0b.js} +1 -1
- package/dist/cjs/{index-2e612e35.js → index-f94cbab1.js} +20 -27
- package/dist/cjs/index.cjs.js +8 -10
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
- package/dist/cjs/ion-alert.cjs.entry.js +5 -13
- package/dist/cjs/ion-app_8.cjs.entry.js +4 -4
- 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 +7 -11
- package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +5 -2
- 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 +6 -6
- package/dist/cjs/ion-datetime_3.cjs.entry.js +8 -8
- package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +3 -3
- 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 +3 -3
- package/dist/cjs/ion-menu_3.cjs.entry.js +19 -8
- package/dist/cjs/ion-modal.cjs.entry.js +4 -4
- package/dist/cjs/ion-nav_2.cjs.entry.js +3 -4
- package/dist/cjs/ion-picker-column-internal.cjs.entry.js +3 -3
- package/dist/cjs/ion-picker-internal.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +4 -4
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +7 -4
- package/dist/cjs/ion-range.cjs.entry.js +2 -2
- package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
- 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 +2 -5
- package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
- package/dist/cjs/ion-segment_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-select_3.cjs.entry.js +36 -22
- 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 +2 -2
- package/dist/cjs/ion-tab_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +33 -175
- package/dist/cjs/ion-toggle.cjs.entry.js +7 -4
- package/dist/cjs/{ionic-global-a71608df.js → ionic-global-fb752503.js} +1 -1
- package/dist/cjs/ionic.cjs.js +5 -5
- package/dist/cjs/{ios.transition-8ddf91e6.js → ios.transition-7d688757.js} +2 -3
- package/dist/cjs/loader.cjs.js +4 -4
- package/dist/cjs/{md.transition-44ff8566.js → md.transition-d77d3c2e.js} +2 -2
- package/dist/cjs/{overlays-9cab437c.js → overlays-7e1a08fa.js} +1 -2
- package/dist/cjs/{status-tap-8c22e017.js → status-tap-778e8054.js} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/alert/alert.js +0 -8
- package/dist/collection/components/alert/test/a11y/alert.e2e.js +0 -11
- package/dist/collection/components/checkbox/checkbox.js +3 -0
- package/dist/collection/components/datetime/datetime.js +6 -12
- package/dist/collection/components/datetime/test/hour-cycle/datetime.e2e.js +0 -14
- package/dist/collection/components/datetime/utils/data.js +7 -33
- package/dist/collection/components/datetime/utils/format.js +10 -27
- package/dist/collection/components/datetime/utils/helpers.js +5 -37
- package/dist/collection/components/datetime-button/datetime-button.js +4 -4
- package/dist/collection/components/menu/menu.js +12 -0
- package/dist/collection/components/nav/nav.js +0 -1
- package/dist/collection/components/radio/radio.js +4 -1
- package/dist/collection/components/radio-group/radio-group.js +1 -1
- package/dist/collection/components/router/router.js +0 -2
- package/dist/collection/components/router/utils/path.js +0 -1
- package/dist/collection/components/select/select.js +32 -18
- package/dist/collection/components/select/test/disabled/select.e2e.js +30 -0
- package/dist/collection/components/toast/animations/ios.enter.js +3 -2
- package/dist/collection/components/toast/animations/ios.leave.js +3 -2
- package/dist/collection/components/toast/animations/md.enter.js +3 -2
- package/dist/collection/components/toast/toast.js +9 -98
- package/dist/collection/components/toggle/toggle.js +3 -0
- package/dist/collection/index.js +0 -1
- package/dist/collection/utils/menu-controller/index.js +19 -26
- package/dist/collection/utils/native/haptic.js +0 -1
- package/dist/collection/utils/overlays.js +0 -1
- package/dist/collection/utils/transition/ios.transition.js +0 -1
- package/dist/docs.json +11 -74
- package/dist/esm/{app-globals-df292a32.js → app-globals-ec816a70.js} +1 -1
- package/dist/esm/{button-active-3dd473a1.js → button-active-5136c12d.js} +2 -2
- package/dist/esm/{data-44d9e816.js → data-009dbf15.js} +22 -96
- package/dist/esm/{haptic-1243b917.js → haptic-6447af60.js} +0 -1
- package/dist/esm/{index-6e10cd02.js → index-641aeeed.js} +3 -3
- package/dist/esm/{index-cb894020.js → index-b49b173c.js} +95 -51
- package/dist/esm/{index-c3e624b7.js → index-d78b533e.js} +20 -27
- package/dist/esm/{index-504b03f0.js → index-ecfc2c9f.js} +1 -1
- package/dist/esm/index.js +8 -9
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +5 -5
- package/dist/esm/ion-alert.entry.js +5 -13
- package/dist/esm/ion-app_8.entry.js +4 -4
- 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 +7 -11
- package/dist/esm/ion-card_5.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +5 -2
- 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 +6 -6
- package/dist/esm/ion-datetime_3.entry.js +8 -8
- package/dist/esm/ion-fab_3.entry.js +3 -3
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +3 -3
- 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 +3 -3
- package/dist/esm/ion-menu_3.entry.js +18 -7
- package/dist/esm/ion-modal.entry.js +4 -4
- package/dist/esm/ion-nav_2.entry.js +3 -4
- package/dist/esm/ion-picker-column-internal.entry.js +3 -3
- package/dist/esm/ion-picker-internal.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +4 -4
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +7 -4
- package/dist/esm/ion-range.entry.js +2 -2
- package/dist/esm/ion-refresher_2.entry.js +4 -4
- 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 +2 -5
- package/dist/esm/ion-searchbar.entry.js +3 -3
- package/dist/esm/ion-segment_2.entry.js +2 -2
- package/dist/esm/ion-select_3.entry.js +36 -22
- 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 +2 -2
- package/dist/esm/ion-tab_2.entry.js +1 -1
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +17 -159
- package/dist/esm/ion-toggle.entry.js +7 -4
- package/dist/esm/{ionic-global-63a8d8c9.js → ionic-global-246ca78f.js} +1 -1
- package/dist/esm/ionic.js +6 -6
- package/dist/esm/{ios.transition-6707a3a1.js → ios.transition-04c9a97a.js} +2 -3
- package/dist/esm/loader.js +5 -5
- package/dist/esm/{md.transition-957964fd.js → md.transition-67a8aabd.js} +2 -2
- package/dist/esm/{overlays-753933fc.js → overlays-2fa52617.js} +1 -2
- package/dist/esm/{status-tap-73e982b6.js → status-tap-9aeeaca5.js} +1 -1
- package/dist/esm-es5/app-globals-ec816a70.js +4 -0
- package/dist/esm-es5/{button-active-3dd473a1.js → button-active-5136c12d.js} +1 -1
- package/dist/esm-es5/data-009dbf15.js +4 -0
- package/dist/esm-es5/{index-6e10cd02.js → index-641aeeed.js} +1 -1
- package/dist/esm-es5/index-b49b173c.js +5 -0
- package/dist/esm-es5/index-d78b533e.js +4 -0
- package/dist/esm-es5/index.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-63a8d8c9.js → ionic-global-246ca78f.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-6707a3a1.js → ios.transition-04c9a97a.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{md.transition-957964fd.js → md.transition-67a8aabd.js} +1 -1
- package/dist/esm-es5/{overlays-753933fc.js → overlays-2fa52617.js} +1 -1
- package/dist/esm-es5/{status-tap-73e982b6.js → status-tap-9aeeaca5.js} +1 -1
- package/dist/html.html-data.json +1 -11
- 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-9dbc208c.js → p-02a4e81a.js} +1 -1
- package/dist/ionic/{p-89e3d112.system.entry.js → p-03c381ec.system.entry.js} +1 -1
- package/dist/ionic/{p-44fa0a61.entry.js → p-048f1ebe.entry.js} +1 -1
- package/dist/ionic/{p-b7ac706d.entry.js → p-04e7c8fd.entry.js} +1 -1
- package/dist/ionic/p-05ae600a.system.js +4 -0
- package/dist/ionic/p-06ac429a.js +5 -0
- package/dist/ionic/p-0c37546b.system.entry.js +4 -0
- package/dist/ionic/{p-5b5311f6.system.entry.js → p-0d74acfb.system.entry.js} +1 -1
- package/dist/ionic/{p-7887ac7a.entry.js → p-108f9d49.entry.js} +1 -1
- package/dist/ionic/{p-ccdd595c.system.entry.js → p-117cd69f.system.entry.js} +1 -1
- package/dist/ionic/{p-e263255c.system.entry.js → p-1289b3b5.system.entry.js} +1 -1
- package/dist/ionic/p-13d6e57a.js +4 -0
- package/dist/ionic/{p-da024961.entry.js → p-164b0e76.entry.js} +1 -1
- package/dist/ionic/{p-8957b1de.system.entry.js → p-170e9de0.system.entry.js} +1 -1
- package/dist/ionic/{p-8a289322.js → p-181b7c2a.js} +1 -1
- package/dist/ionic/p-1c82e9ff.js +4 -0
- package/dist/ionic/{p-48159bfc.system.entry.js → p-1d0aa82f.system.entry.js} +1 -1
- package/dist/ionic/{p-9201a4d3.entry.js → p-1ecba429.entry.js} +1 -1
- package/dist/ionic/{p-3db27dec.entry.js → p-1f81b5be.entry.js} +1 -1
- package/dist/ionic/{p-db8b267a.system.entry.js → p-238f0ac5.system.entry.js} +1 -1
- package/dist/ionic/{p-0d3d44e7.entry.js → p-257cf0b7.entry.js} +1 -1
- package/dist/ionic/{p-37fc0d22.system.entry.js → p-2784263e.system.entry.js} +1 -1
- package/dist/ionic/{p-8f36cde3.system.entry.js → p-29073efe.system.entry.js} +1 -1
- package/dist/ionic/p-29e3a9bb.entry.js +4 -0
- package/dist/ionic/{p-3634b770.system.entry.js → p-32717950.system.entry.js} +1 -1
- package/dist/ionic/p-32d364f0.entry.js +4 -0
- package/dist/ionic/{p-c09e1da9.system.entry.js → p-33a8349a.system.entry.js} +1 -1
- package/dist/ionic/{p-4555335a.entry.js → p-35818410.entry.js} +1 -1
- package/dist/ionic/{p-b4f14d9e.entry.js → p-35eb1d95.entry.js} +1 -1
- package/dist/ionic/p-37448ac1.entry.js +4 -0
- package/dist/ionic/{p-3e6b0330.system.entry.js → p-38ccfd71.system.entry.js} +1 -1
- package/dist/ionic/{p-6f3099b6.system.entry.js → p-3a58e3a4.system.entry.js} +1 -1
- package/dist/ionic/{p-c0c794dd.entry.js → p-3c2c6fce.entry.js} +1 -1
- package/dist/ionic/{p-9a6f6789.system.entry.js → p-3f3da911.system.entry.js} +1 -1
- package/dist/ionic/p-44ef7224.system.js +4 -0
- package/dist/ionic/{p-efd574eb.system.entry.js → p-45f5c8ba.system.entry.js} +1 -1
- package/dist/ionic/{p-bc7420cc.entry.js → p-4b8db805.entry.js} +1 -1
- package/dist/ionic/{p-ec451ef7.system.entry.js → p-4bb26b01.system.entry.js} +1 -1
- package/dist/ionic/{p-6a92db9d.system.entry.js → p-4d6ac0fe.system.entry.js} +1 -1
- package/dist/ionic/p-4dd96c8d.entry.js +4 -0
- package/dist/ionic/{p-0793ebfd.entry.js → p-4e6e43c1.entry.js} +1 -1
- package/dist/ionic/{p-e0f66356.system.js → p-51269f3b.system.js} +1 -1
- package/dist/ionic/{p-14fd96a2.system.entry.js → p-5403baaa.system.entry.js} +1 -1
- package/dist/ionic/{p-abfd1f2e.system.entry.js → p-54f6cd27.system.entry.js} +1 -1
- package/dist/ionic/{p-b27772bf.entry.js → p-55d3a9b2.entry.js} +1 -1
- package/dist/ionic/{p-10fcb3a3.system.entry.js → p-576e6d0f.system.entry.js} +1 -1
- package/dist/ionic/{p-6a3c14d1.entry.js → p-5b32b053.entry.js} +1 -1
- package/dist/ionic/{p-b79eb3cd.entry.js → p-5b976d70.entry.js} +1 -1
- package/dist/ionic/p-5bc5008c.entry.js +4 -0
- package/dist/ionic/p-5c3e72a8.system.js +4 -0
- package/dist/ionic/p-5c651aab.system.entry.js +4 -0
- package/dist/ionic/{p-ae57449e.system.entry.js → p-5cd791b3.system.entry.js} +1 -1
- package/dist/ionic/p-5ece7025.system.js +4 -0
- package/dist/ionic/{p-70441a5b.entry.js → p-5efb899f.entry.js} +1 -1
- package/dist/ionic/{p-6c7d61b9.system.entry.js → p-6129af0a.system.entry.js} +1 -1
- package/dist/ionic/{p-26fbffd4.system.js → p-629aa3fd.system.js} +1 -1
- package/dist/ionic/{p-ee8881d0.js → p-63505fbb.js} +1 -1
- package/dist/ionic/{p-ef4408d6.entry.js → p-64e20cd9.entry.js} +1 -1
- package/dist/ionic/p-65a5761f.js +4 -0
- package/dist/ionic/{p-416d7f8d.system.entry.js → p-6ac3e877.system.entry.js} +1 -1
- package/dist/ionic/{p-82c72668.system.js → p-6ba7fad7.system.js} +1 -1
- package/dist/ionic/{p-92d72ad8.entry.js → p-6ea2e653.entry.js} +1 -1
- package/dist/ionic/{p-a9b13f18.system.entry.js → p-6f8a95a3.system.entry.js} +1 -1
- package/dist/ionic/{p-a60cff26.system.entry.js → p-6fb80ef3.system.entry.js} +1 -1
- package/dist/ionic/{p-b4c0e9ee.entry.js → p-706a0391.entry.js} +1 -1
- package/dist/ionic/{p-f48af9da.system.entry.js → p-72aea40e.system.entry.js} +1 -1
- package/dist/ionic/p-73ed9a91.js +4 -0
- package/dist/ionic/{p-7a590a28.js → p-76378400.js} +1 -1
- package/dist/ionic/p-7cfd253c.js +4 -0
- package/dist/ionic/{p-3dce88bf.entry.js → p-818b2e75.entry.js} +1 -1
- package/dist/ionic/p-8297652e.entry.js +4 -0
- package/dist/ionic/{p-b9e2aede.entry.js → p-839276d4.entry.js} +1 -1
- package/dist/ionic/{p-b4daca17.system.entry.js → p-8a2801f1.system.entry.js} +1 -1
- package/dist/ionic/{p-00cf2d6c.js → p-8e24ebbc.js} +1 -1
- package/dist/ionic/{p-037e2738.system.entry.js → p-8ee012cb.system.entry.js} +1 -1
- package/dist/ionic/{p-d8eeabae.system.entry.js → p-908720f3.system.entry.js} +1 -1
- package/dist/ionic/{p-03f7e3cc.entry.js → p-914ac0fc.entry.js} +1 -1
- package/dist/ionic/{p-88a1a4fe.system.entry.js → p-9173418c.system.entry.js} +1 -1
- package/dist/ionic/{p-9f9efb31.system.js → p-939e0fa1.system.js} +1 -1
- package/dist/ionic/{p-e6d2cca2.system.entry.js → p-95b14c73.system.entry.js} +1 -1
- package/dist/ionic/{p-ca655a7c.entry.js → p-96ba8eac.entry.js} +1 -1
- package/dist/ionic/{p-dcfea01f.system.entry.js → p-99dfa53f.system.entry.js} +1 -1
- package/dist/ionic/{p-9736406a.system.entry.js → p-9b4a77fc.system.entry.js} +1 -1
- package/dist/ionic/{p-50d83224.entry.js → p-a04bfada.entry.js} +1 -1
- package/dist/ionic/p-a18ec02b.entry.js +4 -0
- package/dist/ionic/{p-2acea831.entry.js → p-a7eec917.entry.js} +1 -1
- package/dist/ionic/{p-00f709ca.system.entry.js → p-b109a3d7.system.entry.js} +1 -1
- package/dist/ionic/{p-fbc7995a.system.entry.js → p-b3690814.system.entry.js} +1 -1
- package/dist/ionic/{p-534a1cbc.system.js → p-b3c68723.system.js} +1 -1
- package/dist/ionic/{p-4e76e29a.system.entry.js → p-b61a2fa0.system.entry.js} +1 -1
- package/dist/ionic/{p-f37d6823.system.entry.js → p-beb864e4.system.entry.js} +1 -1
- package/dist/ionic/{p-b25a96b7.system.js → p-c3efbcf5.system.js} +1 -1
- package/dist/ionic/{p-a157df46.system.entry.js → p-c48fc95d.system.entry.js} +1 -1
- package/dist/ionic/{p-5c24c115.system.js → p-c49672d8.system.js} +1 -1
- package/dist/ionic/{p-57743e20.entry.js → p-c4a5de01.entry.js} +1 -1
- package/dist/ionic/{p-7520e873.system.entry.js → p-c7428627.system.entry.js} +1 -1
- package/dist/ionic/{p-84549737.system.entry.js → p-cf0c93e3.system.entry.js} +1 -1
- package/dist/ionic/{p-7b15d413.entry.js → p-d35217be.entry.js} +1 -1
- package/dist/ionic/{p-5cafe439.system.entry.js → p-d55c9f92.system.entry.js} +1 -1
- package/dist/ionic/{p-06756f31.entry.js → p-d7b8d224.entry.js} +1 -1
- package/dist/ionic/{p-9b796813.entry.js → p-d89d0de0.entry.js} +1 -1
- package/dist/ionic/{p-fa06c407.entry.js → p-db1a1e00.entry.js} +1 -1
- package/dist/ionic/{p-0023e6eb.entry.js → p-deb6ddad.entry.js} +1 -1
- package/dist/ionic/{p-90012797.system.js → p-df5fe0be.system.js} +1 -1
- package/dist/ionic/{p-d90f0779.system.entry.js → p-e0f52215.system.entry.js} +1 -1
- package/dist/ionic/{p-a99e7e72.entry.js → p-e1ac688a.entry.js} +1 -1
- package/dist/ionic/{p-d2a278b1.entry.js → p-e2fd0895.entry.js} +1 -1
- package/dist/ionic/{p-9e91c83f.system.entry.js → p-eab10949.system.entry.js} +1 -1
- package/dist/ionic/{p-ac32f6ce.entry.js → p-eac263dd.entry.js} +1 -1
- package/dist/ionic/{p-0459db58.entry.js → p-ec9052a4.entry.js} +1 -1
- package/dist/ionic/{p-a7361c85.entry.js → p-f588e951.entry.js} +1 -1
- package/dist/ionic/{p-60dee335.entry.js → p-f623aa6d.entry.js} +1 -1
- package/dist/ionic/{p-ae8121f5.system.entry.js → p-f960fd84.system.entry.js} +1 -1
- package/dist/ionic/p-fbcb157b.system.js +4 -0
- package/dist/ionic/{p-4c20879c.entry.js → p-fccfe602.entry.js} +1 -1
- package/dist/ionic/{p-3bf7c0dc.entry.js → p-fcf47f80.entry.js} +1 -1
- package/dist/node_modules/ionicons/dist/collection/components/icon/icon.css +4 -46
- package/dist/types/components/datetime/datetime-interface.d.ts +0 -1
- package/dist/types/components/datetime/datetime.d.ts +2 -2
- package/dist/types/components/datetime/utils/data.d.ts +3 -3
- package/dist/types/components/datetime/utils/format.d.ts +3 -3
- package/dist/types/components/datetime/utils/helpers.d.ts +1 -15
- package/dist/types/components/menu/menu-interface.d.ts +1 -0
- package/dist/types/components/toast/animations/ios.enter.d.ts +1 -2
- package/dist/types/components/toast/animations/ios.leave.d.ts +2 -2
- package/dist/types/components/toast/animations/md.enter.d.ts +1 -2
- package/dist/types/components/toast/toast-interface.d.ts +0 -11
- package/dist/types/components/toast/toast.d.ts +1 -21
- package/dist/types/components.d.ts +8 -16
- package/dist/types/index.d.ts +0 -1
- package/dist/types/utils/menu-controller/index.d.ts +2 -1
- package/hydrate/index.js +158 -359
- package/package.json +7 -6
- package/dist/collection/components/menu/test/multiple/menu.e2e.js +0 -60
- package/dist/collection/components/toast/animations/utils.js +0 -85
- package/dist/collection/components/toast/test/position-anchor/toast.e2e.js +0 -45
- package/dist/esm-es5/app-globals-df292a32.js +0 -4
- package/dist/esm-es5/data-44d9e816.js +0 -4
- package/dist/esm-es5/index-c3e624b7.js +0 -4
- package/dist/esm-es5/index-cb894020.js +0 -5
- package/dist/ionic/p-0779a5c8.system.js +0 -4
- package/dist/ionic/p-0d198537.js +0 -4
- package/dist/ionic/p-100ea813.system.entry.js +0 -4
- package/dist/ionic/p-17240d90.js +0 -4
- package/dist/ionic/p-1d9b39f3.js +0 -4
- package/dist/ionic/p-2b47b2ce.entry.js +0 -4
- package/dist/ionic/p-32b5f10e.entry.js +0 -4
- package/dist/ionic/p-469d6a98.entry.js +0 -4
- package/dist/ionic/p-50125c8c.js +0 -4
- package/dist/ionic/p-520789c2.js +0 -4
- package/dist/ionic/p-68b405cc.entry.js +0 -4
- package/dist/ionic/p-6cfcb294.system.js +0 -4
- package/dist/ionic/p-73eba881.system.js +0 -4
- package/dist/ionic/p-903c36fe.js +0 -5
- package/dist/ionic/p-a4ce3b06.system.entry.js +0 -4
- package/dist/ionic/p-aae05032.entry.js +0 -4
- package/dist/ionic/p-b8c3f071.system.js +0 -4
- package/dist/ionic/p-d0d59328.entry.js +0 -4
- package/dist/ionic/p-d1df86ff.entry.js +0 -4
- package/dist/ionic/p-ec25d547.system.js +0 -4
- package/dist/types/components/toast/animations/utils.d.ts +0 -18
- /package/dist/esm-es5/{haptic-1243b917.js → haptic-6447af60.js} +0 -0
- /package/dist/esm-es5/{index-504b03f0.js → index-ecfc2c9f.js} +0 -0
- /package/dist/ionic/{p-15bae383.js → p-0a87858b.js} +0 -0
- /package/dist/ionic/{p-b4b4bb29.system.js → p-14d7b7e2.system.js} +0 -0
- /package/dist/ionic/{p-3f919368.system.js → p-8985b268.system.js} +0 -0
- /package/dist/ionic/{p-b923f3d7.js → p-bb6f38ed.js} +0 -0
|
@@ -672,7 +672,6 @@ export class Nav {
|
|
|
672
672
|
: undefined;
|
|
673
673
|
const mode = getIonMode(this);
|
|
674
674
|
const enteringEl = enteringView.element;
|
|
675
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
676
675
|
const leavingEl = leavingView && leavingView.element;
|
|
677
676
|
const animationOpts = Object.assign(Object.assign({ mode, showGoBack: this.canGoBackSync(enteringView), baseEl: this.el, progressCallback, animated: this.animated && config.getBoolean('animated', true), enteringEl,
|
|
678
677
|
leavingEl }, opts), { animationBuilder: opts.animationBuilder || this.animation || config.get('navAnimation') });
|
|
@@ -27,7 +27,10 @@ export class Radio {
|
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
this.onClick = () => {
|
|
30
|
-
const { radioGroup, checked } = this;
|
|
30
|
+
const { radioGroup, checked, disabled } = this;
|
|
31
|
+
if (disabled) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
31
34
|
/**
|
|
32
35
|
* The legacy control uses a native input inside
|
|
33
36
|
* of the radio host, so we can set this.checked
|
|
@@ -33,7 +33,7 @@ export class RadioGroup {
|
|
|
33
33
|
* using the `name` attribute.
|
|
34
34
|
*/
|
|
35
35
|
const selectedRadio = ev.target && ev.target.closest('ion-radio');
|
|
36
|
-
if (selectedRadio) {
|
|
36
|
+
if (selectedRadio && selectedRadio.disabled === false) {
|
|
37
37
|
const currentValue = this.value;
|
|
38
38
|
const newValue = selectedRadio.value;
|
|
39
39
|
if (newValue !== currentValue) {
|
|
@@ -215,14 +215,12 @@ export class Router {
|
|
|
215
215
|
}
|
|
216
216
|
const routes = readRoutes(this.el);
|
|
217
217
|
const fromChain = findChainForSegments(from, routes);
|
|
218
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
219
218
|
const beforeLeaveHook = fromChain && fromChain[fromChain.length - 1].beforeLeave;
|
|
220
219
|
const canLeave = beforeLeaveHook ? await beforeLeaveHook() : true;
|
|
221
220
|
if (canLeave === false || typeof canLeave === 'object') {
|
|
222
221
|
return canLeave;
|
|
223
222
|
}
|
|
224
223
|
const toChain = findChainForSegments(to, routes);
|
|
225
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
226
224
|
const beforeEnterHook = toChain && toChain[toChain.length - 1].beforeEnter;
|
|
227
225
|
return beforeEnterHook ? beforeEnterHook() : true;
|
|
228
226
|
}
|
|
@@ -38,7 +38,6 @@ export const chainToSegments = (chain) => {
|
|
|
38
38
|
for (const route of chain) {
|
|
39
39
|
for (const segment of route.segments) {
|
|
40
40
|
if (segment[0] === ':') {
|
|
41
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
42
41
|
const param = route.params && route.params[segment.slice(1)];
|
|
43
42
|
if (!param) {
|
|
44
43
|
return null;
|
|
@@ -119,25 +119,39 @@ export class Select {
|
|
|
119
119
|
await overlay.present();
|
|
120
120
|
// focus selected option for popovers
|
|
121
121
|
if (this.interface === 'popover') {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
122
|
+
const indexOfSelected = this.childOpts.map((o) => o.value).indexOf(this.value);
|
|
123
|
+
if (indexOfSelected > -1) {
|
|
124
|
+
const selectedItem = overlay.querySelector(`.select-interface-option:nth-child(${indexOfSelected + 1})`);
|
|
125
|
+
if (selectedItem) {
|
|
126
|
+
focusElement(selectedItem);
|
|
127
|
+
/**
|
|
128
|
+
* Browsers such as Firefox do not
|
|
129
|
+
* correctly delegate focus when manually
|
|
130
|
+
* focusing an element with delegatesFocus.
|
|
131
|
+
* We work around this by manually focusing
|
|
132
|
+
* the interactive element.
|
|
133
|
+
* ion-radio and ion-checkbox are the only
|
|
134
|
+
* elements that ion-select-popover uses, so
|
|
135
|
+
* we only need to worry about those two components
|
|
136
|
+
* when focusing.
|
|
137
|
+
*/
|
|
138
|
+
const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
|
|
139
|
+
if (interactiveEl) {
|
|
140
|
+
interactiveEl.focus();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
127
145
|
/**
|
|
128
|
-
*
|
|
129
|
-
* correctly delegate focus when manually
|
|
130
|
-
* focusing an element with delegatesFocus.
|
|
131
|
-
* We work around this by manually focusing
|
|
132
|
-
* the interactive element.
|
|
133
|
-
* ion-radio and ion-checkbox are the only
|
|
134
|
-
* elements that ion-select-popover uses, so
|
|
135
|
-
* we only need to worry about those two components
|
|
136
|
-
* when focusing.
|
|
146
|
+
* If no value is set then focus the first enabled option.
|
|
137
147
|
*/
|
|
138
|
-
const
|
|
139
|
-
if (
|
|
140
|
-
|
|
148
|
+
const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
|
|
149
|
+
if (firstEnabledOption) {
|
|
150
|
+
focusElement(firstEnabledOption.closest('ion-item'));
|
|
151
|
+
/**
|
|
152
|
+
* Focus the option for the same reason as we do above.
|
|
153
|
+
*/
|
|
154
|
+
firstEnabledOption.focus();
|
|
141
155
|
}
|
|
142
156
|
}
|
|
143
157
|
}
|
|
@@ -642,7 +656,7 @@ Developers can use the "legacy" property to continue using the legacy form marku
|
|
|
642
656
|
}
|
|
643
657
|
renderListbox() {
|
|
644
658
|
const { disabled, inputId, isExpanded } = this;
|
|
645
|
-
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "
|
|
659
|
+
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "listbox", "aria-expanded": `${isExpanded}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
|
|
646
660
|
}
|
|
647
661
|
render() {
|
|
648
662
|
const { legacyFormController } = this;
|
|
@@ -0,0 +1,30 @@
|
|
|
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({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
7
|
+
test.describe(title('select: disabled options'), () => {
|
|
8
|
+
test('should not focus a disabled option when no value is set', async ({ page, skip }) => {
|
|
9
|
+
// TODO (FW-2979)
|
|
10
|
+
skip.browser('webkit', 'Safari 16 only allows text fields and pop-up menus to be focused.');
|
|
11
|
+
test.info().annotations.push({
|
|
12
|
+
type: 'issue',
|
|
13
|
+
description: 'https://github.com/ionic-team/ionic-framework/issues/28284',
|
|
14
|
+
});
|
|
15
|
+
await page.setContent(`
|
|
16
|
+
<ion-select interface="popover">
|
|
17
|
+
<ion-select-option value="a" disabled="true">A</ion-select-option>
|
|
18
|
+
<ion-select-option value="b">B</ion-select-option>
|
|
19
|
+
</ion-select>
|
|
20
|
+
`, config);
|
|
21
|
+
const select = page.locator('ion-select');
|
|
22
|
+
const popover = page.locator('ion-popover');
|
|
23
|
+
const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent');
|
|
24
|
+
await select.click();
|
|
25
|
+
await ionPopoverDidPresent.next();
|
|
26
|
+
const popoverOption = popover.locator('.select-interface-option:nth-of-type(2) ion-radio');
|
|
27
|
+
await expect(popoverOption).toBeFocused();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -6,12 +6,13 @@ import { getElementRoot } from "../../../utils/helpers";
|
|
|
6
6
|
/**
|
|
7
7
|
* iOS Toast Enter Animation
|
|
8
8
|
*/
|
|
9
|
-
export const iosEnterAnimation = (baseEl,
|
|
9
|
+
export const iosEnterAnimation = (baseEl, position) => {
|
|
10
10
|
const baseAnimation = createAnimation();
|
|
11
11
|
const wrapperAnimation = createAnimation();
|
|
12
|
-
const { position, top, bottom } = opts;
|
|
13
12
|
const root = getElementRoot(baseEl);
|
|
14
13
|
const wrapperEl = root.querySelector('.toast-wrapper');
|
|
14
|
+
const bottom = `calc(-10px - var(--ion-safe-area-bottom, 0px))`;
|
|
15
|
+
const top = `calc(10px + var(--ion-safe-area-top, 0px))`;
|
|
15
16
|
wrapperAnimation.addElement(wrapperEl);
|
|
16
17
|
switch (position) {
|
|
17
18
|
case 'top':
|
|
@@ -6,12 +6,13 @@ import { getElementRoot } from "../../../utils/helpers";
|
|
|
6
6
|
/**
|
|
7
7
|
* iOS Toast Leave Animation
|
|
8
8
|
*/
|
|
9
|
-
export const iosLeaveAnimation = (baseEl,
|
|
9
|
+
export const iosLeaveAnimation = (baseEl, position) => {
|
|
10
10
|
const baseAnimation = createAnimation();
|
|
11
11
|
const wrapperAnimation = createAnimation();
|
|
12
|
-
const { position, top, bottom } = opts;
|
|
13
12
|
const root = getElementRoot(baseEl);
|
|
14
13
|
const wrapperEl = root.querySelector('.toast-wrapper');
|
|
14
|
+
const bottom = `calc(-10px - var(--ion-safe-area-bottom, 0px))`;
|
|
15
|
+
const top = `calc(10px + var(--ion-safe-area-top, 0px))`;
|
|
15
16
|
wrapperAnimation.addElement(wrapperEl);
|
|
16
17
|
switch (position) {
|
|
17
18
|
case 'top':
|
|
@@ -6,12 +6,13 @@ import { getElementRoot } from "../../../utils/helpers";
|
|
|
6
6
|
/**
|
|
7
7
|
* MD Toast Enter Animation
|
|
8
8
|
*/
|
|
9
|
-
export const mdEnterAnimation = (baseEl,
|
|
9
|
+
export const mdEnterAnimation = (baseEl, position) => {
|
|
10
10
|
const baseAnimation = createAnimation();
|
|
11
11
|
const wrapperAnimation = createAnimation();
|
|
12
|
-
const { position, top, bottom } = opts;
|
|
13
12
|
const root = getElementRoot(baseEl);
|
|
14
13
|
const wrapperEl = root.querySelector('.toast-wrapper');
|
|
14
|
+
const bottom = `calc(8px + var(--ion-safe-area-bottom, 0px))`;
|
|
15
|
+
const top = `calc(8px + var(--ion-safe-area-top, 0px))`;
|
|
15
16
|
wrapperAnimation.addElement(wrapperEl);
|
|
16
17
|
switch (position) {
|
|
17
18
|
case 'top':
|
|
@@ -15,7 +15,6 @@ import { iosEnterAnimation } from "./animations/ios.enter";
|
|
|
15
15
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
16
16
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
17
17
|
import { mdLeaveAnimation } from "./animations/md.leave";
|
|
18
|
-
import { getAnimationPosition } from "./animations/utils";
|
|
19
18
|
// TODO(FW-2832): types
|
|
20
19
|
/**
|
|
21
20
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
@@ -55,7 +54,6 @@ export class Toast {
|
|
|
55
54
|
this.message = undefined;
|
|
56
55
|
this.keyboardClose = false;
|
|
57
56
|
this.position = 'bottom';
|
|
58
|
-
this.positionAnchor = undefined;
|
|
59
57
|
this.buttons = undefined;
|
|
60
58
|
this.translucent = false;
|
|
61
59
|
this.animated = true;
|
|
@@ -103,19 +101,7 @@ export class Toast {
|
|
|
103
101
|
async present() {
|
|
104
102
|
const unlock = await this.lockController.lock();
|
|
105
103
|
await this.delegateController.attachViewToDom();
|
|
106
|
-
|
|
107
|
-
const anchor = this.getAnchorElement();
|
|
108
|
-
const animationPosition = getAnimationPosition(position, anchor, getIonMode(this), el);
|
|
109
|
-
/**
|
|
110
|
-
* Cache the calculated position of the toast, so we can re-use it
|
|
111
|
-
* in the dismiss animation.
|
|
112
|
-
*/
|
|
113
|
-
this.lastPresentedPosition = animationPosition;
|
|
114
|
-
await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, {
|
|
115
|
-
position,
|
|
116
|
-
top: animationPosition.top,
|
|
117
|
-
bottom: animationPosition.bottom,
|
|
118
|
-
});
|
|
104
|
+
await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, this.position);
|
|
119
105
|
/**
|
|
120
106
|
* Content is revealed to screen readers after
|
|
121
107
|
* the transition to avoid jank since this
|
|
@@ -137,28 +123,15 @@ export class Toast {
|
|
|
137
123
|
* Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
|
|
138
124
|
*/
|
|
139
125
|
async dismiss(data, role) {
|
|
140
|
-
var _a, _b;
|
|
141
126
|
const unlock = await this.lockController.lock();
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
clearTimeout(durationTimeout);
|
|
127
|
+
if (this.durationTimeout) {
|
|
128
|
+
clearTimeout(this.durationTimeout);
|
|
145
129
|
}
|
|
146
|
-
const dismissed = await dismiss(this, data, role, 'toastLeave', iosLeaveAnimation, mdLeaveAnimation,
|
|
147
|
-
/**
|
|
148
|
-
* Fetch the cached position that was calculated back in the present
|
|
149
|
-
* animation. We always want to animate the dismiss from the same
|
|
150
|
-
* position the present stopped at, so the animation looks continuous.
|
|
151
|
-
*/
|
|
152
|
-
{
|
|
153
|
-
position,
|
|
154
|
-
top: (_a = lastPresentedPosition === null || lastPresentedPosition === void 0 ? void 0 : lastPresentedPosition.top) !== null && _a !== void 0 ? _a : '',
|
|
155
|
-
bottom: (_b = lastPresentedPosition === null || lastPresentedPosition === void 0 ? void 0 : lastPresentedPosition.bottom) !== null && _b !== void 0 ? _b : '',
|
|
156
|
-
});
|
|
130
|
+
const dismissed = await dismiss(this, data, role, 'toastLeave', iosLeaveAnimation, mdLeaveAnimation, this.position);
|
|
157
131
|
if (dismissed) {
|
|
158
132
|
this.delegateController.removeViewFromDom();
|
|
159
133
|
this.revealContentToScreenReader = false;
|
|
160
134
|
}
|
|
161
|
-
this.lastPresentedPosition = undefined;
|
|
162
135
|
unlock();
|
|
163
136
|
return dismissed;
|
|
164
137
|
}
|
|
@@ -182,44 +155,6 @@ export class Toast {
|
|
|
182
155
|
: [];
|
|
183
156
|
return buttons;
|
|
184
157
|
}
|
|
185
|
-
/**
|
|
186
|
-
* Returns the element specified by the positionAnchor prop,
|
|
187
|
-
* or undefined if prop's value is an ID string and the element
|
|
188
|
-
* is not found in the DOM.
|
|
189
|
-
*/
|
|
190
|
-
getAnchorElement() {
|
|
191
|
-
const { position, positionAnchor, el } = this;
|
|
192
|
-
/**
|
|
193
|
-
* If positionAnchor is undefined then
|
|
194
|
-
* no anchor should be used when presenting the toast.
|
|
195
|
-
*/
|
|
196
|
-
if (positionAnchor === undefined) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
if (position === 'middle' && positionAnchor !== undefined) {
|
|
200
|
-
printIonWarning('The positionAnchor property is ignored when using position="middle".', this.el);
|
|
201
|
-
return undefined;
|
|
202
|
-
}
|
|
203
|
-
if (typeof positionAnchor === 'string') {
|
|
204
|
-
/**
|
|
205
|
-
* If the anchor is defined as an ID, find the element.
|
|
206
|
-
* We do this on every present so the toast doesn't need
|
|
207
|
-
* to account for the surrounding DOM changing since the
|
|
208
|
-
* last time it was presented.
|
|
209
|
-
*/
|
|
210
|
-
const foundEl = document.getElementById(positionAnchor);
|
|
211
|
-
if (foundEl === null) {
|
|
212
|
-
printIonWarning(`An anchor element with an ID of "${positionAnchor}" was not found in the DOM.`, el);
|
|
213
|
-
return undefined;
|
|
214
|
-
}
|
|
215
|
-
return foundEl;
|
|
216
|
-
}
|
|
217
|
-
if (positionAnchor instanceof HTMLElement) {
|
|
218
|
-
return positionAnchor;
|
|
219
|
-
}
|
|
220
|
-
printIonWarning('Invalid positionAnchor value:', positionAnchor, el);
|
|
221
|
-
return undefined;
|
|
222
|
-
}
|
|
223
158
|
async buttonClick(button) {
|
|
224
159
|
const role = button.role;
|
|
225
160
|
if (isCancel(role)) {
|
|
@@ -582,34 +517,12 @@ export class Toast {
|
|
|
582
517
|
"optional": false,
|
|
583
518
|
"docs": {
|
|
584
519
|
"tags": [],
|
|
585
|
-
"text": "The
|
|
520
|
+
"text": "The position of the toast on the screen."
|
|
586
521
|
},
|
|
587
522
|
"attribute": "position",
|
|
588
523
|
"reflect": false,
|
|
589
524
|
"defaultValue": "'bottom'"
|
|
590
525
|
},
|
|
591
|
-
"positionAnchor": {
|
|
592
|
-
"type": "string",
|
|
593
|
-
"mutable": false,
|
|
594
|
-
"complexType": {
|
|
595
|
-
"original": "HTMLElement | string",
|
|
596
|
-
"resolved": "HTMLElement | string | undefined",
|
|
597
|
-
"references": {
|
|
598
|
-
"HTMLElement": {
|
|
599
|
-
"location": "global",
|
|
600
|
-
"id": "global::HTMLElement"
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
},
|
|
604
|
-
"required": false,
|
|
605
|
-
"optional": true,
|
|
606
|
-
"docs": {
|
|
607
|
-
"tags": [],
|
|
608
|
-
"text": "The element to anchor the toast's position to. Can be set as a direct reference\nor the ID of the element. With `position=\"bottom\"`, the toast will sit above the\nchosen element. With `position=\"top\"`, the toast will sit below the chosen element.\nWith `position=\"middle\"`, the value of `positionAnchor` is ignored."
|
|
609
|
-
},
|
|
610
|
-
"attribute": "position-anchor",
|
|
611
|
-
"reflect": false
|
|
612
|
-
},
|
|
613
526
|
"buttons": {
|
|
614
527
|
"type": "unknown",
|
|
615
528
|
"mutable": false,
|
|
@@ -900,9 +813,8 @@ export class Toast {
|
|
|
900
813
|
"id": "global::Promise"
|
|
901
814
|
},
|
|
902
815
|
"ToastPresentOptions": {
|
|
903
|
-
"location": "
|
|
904
|
-
"
|
|
905
|
-
"id": "src/components/toast/toast-interface.ts::ToastPresentOptions"
|
|
816
|
+
"location": "global",
|
|
817
|
+
"id": "global::ToastPresentOptions"
|
|
906
818
|
}
|
|
907
819
|
},
|
|
908
820
|
"return": "Promise<void>"
|
|
@@ -934,9 +846,8 @@ export class Toast {
|
|
|
934
846
|
"id": "global::Promise"
|
|
935
847
|
},
|
|
936
848
|
"ToastDismissOptions": {
|
|
937
|
-
"location": "
|
|
938
|
-
"
|
|
939
|
-
"id": "src/components/toast/toast-interface.ts::ToastDismissOptions"
|
|
849
|
+
"location": "global",
|
|
850
|
+
"id": "global::ToastDismissOptions"
|
|
940
851
|
}
|
|
941
852
|
},
|
|
942
853
|
"return": "Promise<boolean>"
|
package/dist/collection/index.js
CHANGED
|
@@ -13,7 +13,6 @@ export { componentOnReady } from './utils/helpers';
|
|
|
13
13
|
export { isPlatform, getPlatforms } from './utils/platform';
|
|
14
14
|
export { IonicSafeString } from './utils/sanitization';
|
|
15
15
|
export { getMode, setupConfig } from './utils/config';
|
|
16
|
-
export { openURL } from './utils/theme';
|
|
17
16
|
export { LIFECYCLE_WILL_ENTER, LIFECYCLE_DID_ENTER, LIFECYCLE_WILL_LEAVE, LIFECYCLE_DID_LEAVE, LIFECYCLE_WILL_UNLOAD, } from './components/nav/constants';
|
|
18
17
|
export { menuController } from './utils/menu-controller';
|
|
19
18
|
export { alertController, actionSheetController, modalController, loadingController, pickerController, popoverController, toastController, } from './utils/overlays';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { printIonWarning } from "../logging/index";
|
|
5
4
|
import { MENU_BACK_BUTTON_PRIORITY } from "../hardware-back-button";
|
|
6
5
|
import { componentOnReady } from "../helpers";
|
|
7
6
|
import { menuOverlayAnimation } from "./animations/overlay";
|
|
@@ -11,21 +10,21 @@ const createMenuController = () => {
|
|
|
11
10
|
const menuAnimations = new Map();
|
|
12
11
|
const menus = [];
|
|
13
12
|
const open = async (menu) => {
|
|
14
|
-
const menuEl = await get(menu
|
|
13
|
+
const menuEl = await get(menu);
|
|
15
14
|
if (menuEl) {
|
|
16
15
|
return menuEl.open();
|
|
17
16
|
}
|
|
18
17
|
return false;
|
|
19
18
|
};
|
|
20
19
|
const close = async (menu) => {
|
|
21
|
-
const menuEl = await (menu !== undefined ? get(menu
|
|
20
|
+
const menuEl = await (menu !== undefined ? get(menu) : getOpen());
|
|
22
21
|
if (menuEl !== undefined) {
|
|
23
22
|
return menuEl.close();
|
|
24
23
|
}
|
|
25
24
|
return false;
|
|
26
25
|
};
|
|
27
26
|
const toggle = async (menu) => {
|
|
28
|
-
const menuEl = await get(menu
|
|
27
|
+
const menuEl = await get(menu);
|
|
29
28
|
if (menuEl) {
|
|
30
29
|
return menuEl.toggle();
|
|
31
30
|
}
|
|
@@ -63,35 +62,18 @@ const createMenuController = () => {
|
|
|
63
62
|
}
|
|
64
63
|
return false;
|
|
65
64
|
};
|
|
66
|
-
|
|
67
|
-
* Finds and returns the menu specified by "menu" if registered.
|
|
68
|
-
* @param menu - The side or ID of the desired menu
|
|
69
|
-
* @param logOnMultipleSideMenus - If true, this function will log a warning
|
|
70
|
-
* if "menu" is a side but multiple menus on the same side were found. Since this function
|
|
71
|
-
* is used in multiple places, we default this log to false so that the calling
|
|
72
|
-
* functions can choose whether or not it is appropriate to log this warning.
|
|
73
|
-
*/
|
|
74
|
-
const get = async (menu, logOnMultipleSideMenus = false) => {
|
|
65
|
+
const get = async (menu) => {
|
|
75
66
|
await waitUntilReady();
|
|
76
67
|
if (menu === 'start' || menu === 'end') {
|
|
77
68
|
// there could be more than one menu on the same side
|
|
78
69
|
// so first try to get the enabled one
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
printIonWarning(`menuController queried for a menu on the "${menu}" side, but ${menuRefs.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, menuRefs.map((m) => m.el));
|
|
83
|
-
}
|
|
84
|
-
return menuRefs[0].el;
|
|
70
|
+
const menuRef = find((m) => m.side === menu && !m.disabled);
|
|
71
|
+
if (menuRef) {
|
|
72
|
+
return menuRef;
|
|
85
73
|
}
|
|
86
74
|
// didn't find a menu side that is enabled
|
|
87
75
|
// so try to get the first menu side found
|
|
88
|
-
|
|
89
|
-
if (sideMenuRefs.length >= 1) {
|
|
90
|
-
if (sideMenuRefs.length > 1 && logOnMultipleSideMenus) {
|
|
91
|
-
printIonWarning(`menuController queried for a menu on the "${menu}" side, but ${sideMenuRefs.length} menus were found. The first menu reference will be used. If this is not the behavior you want then pass the ID of the menu instead of its side.`, sideMenuRefs.map((m) => m.el));
|
|
92
|
-
}
|
|
93
|
-
return sideMenuRefs[0].el;
|
|
94
|
-
}
|
|
76
|
+
return find((m) => m.side === menu);
|
|
95
77
|
}
|
|
96
78
|
else if (menu != null) {
|
|
97
79
|
// the menuId was not left or right
|
|
@@ -133,6 +115,9 @@ const createMenuController = () => {
|
|
|
133
115
|
};
|
|
134
116
|
const _register = (menu) => {
|
|
135
117
|
if (menus.indexOf(menu) < 0) {
|
|
118
|
+
if (!menu.disabled) {
|
|
119
|
+
_setActiveMenu(menu);
|
|
120
|
+
}
|
|
136
121
|
menus.push(menu);
|
|
137
122
|
}
|
|
138
123
|
};
|
|
@@ -142,6 +127,13 @@ const createMenuController = () => {
|
|
|
142
127
|
menus.splice(index, 1);
|
|
143
128
|
}
|
|
144
129
|
};
|
|
130
|
+
const _setActiveMenu = (menu) => {
|
|
131
|
+
// if this menu should be enabled
|
|
132
|
+
// then find all the other menus on this same side
|
|
133
|
+
// and automatically disable other same side menus
|
|
134
|
+
const side = menu.side;
|
|
135
|
+
menus.filter((m) => m.side === side && m !== menu).forEach((m) => (m.disabled = true));
|
|
136
|
+
};
|
|
145
137
|
const _setOpen = async (menu, shouldOpen, animated) => {
|
|
146
138
|
if (isAnimatingSync()) {
|
|
147
139
|
return false;
|
|
@@ -213,6 +205,7 @@ const createMenuController = () => {
|
|
|
213
205
|
_register,
|
|
214
206
|
_unregister,
|
|
215
207
|
_setOpen,
|
|
208
|
+
_setActiveMenu,
|
|
216
209
|
};
|
|
217
210
|
};
|
|
218
211
|
export const menuController = /*@__PURE__*/ createMenuController();
|
|
@@ -75,7 +75,6 @@ const HapticEngine = {
|
|
|
75
75
|
* if the browser does not support the Vibrate API.
|
|
76
76
|
*/
|
|
77
77
|
if ((capacitor === null || capacitor === void 0 ? void 0 : capacitor.getPlatform()) === 'web') {
|
|
78
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
79
78
|
return typeof navigator !== 'undefined' && navigator.vibrate !== undefined;
|
|
80
79
|
}
|
|
81
80
|
return true;
|
|
@@ -68,7 +68,6 @@ export const setOverlayId = (el) => {
|
|
|
68
68
|
return el.id;
|
|
69
69
|
};
|
|
70
70
|
export const createOverlay = (tagName, opts) => {
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
72
71
|
if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined') {
|
|
73
72
|
return window.customElements.whenDefined(tagName).then(() => {
|
|
74
73
|
const element = document.createElement(tagName);
|
|
@@ -202,7 +202,6 @@ export const iosTransitionAnimation = (navEl, opts) => {
|
|
|
202
202
|
.easing(opts.easing || EASING)
|
|
203
203
|
.fill('both')
|
|
204
204
|
.beforeRemoveClass('ion-page-invisible');
|
|
205
|
-
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
|
|
206
205
|
if (leavingEl && navEl !== null && navEl !== undefined) {
|
|
207
206
|
const navDecorAnimation = createAnimation();
|
|
208
207
|
navDecorAnimation.addElement(navEl);
|